dictionary n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
מילון (Dictionary) PowerPoint Presentation
Download Presentation
מילון (Dictionary)

Loading in 2 Seconds...

play fullscreen
1 / 35

מילון (Dictionary) - PowerPoint PPT Presentation


  • 163 Views
  • Uploaded on

מילון (Dictionary). מילון מאחסן אוסף של רְשׁוּמוֹת מהטיפוס (מפתח, אינפורמציה). המפתח שונה (בד"כ) מרשומה לרשומה. אוסף המפתחות האפשריים מסומן ב- U . לדוגמא: מספרים שלמים. פעולות: אתחול: יצירת מילון ריק. create(D) חיפוש: החזר מצביע לרשומה ב- D שמפתחה x או NULL . find(D,x)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'מילון (Dictionary)' - thais


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
dictionary
מילון (Dictionary)

מילון מאחסן אוסף של רְשׁוּמוֹת מהטיפוס (מפתח, אינפורמציה).

המפתח שונה (בד"כ) מרשומה לרשומה.

אוסף המפתחות האפשריים מסומן ב-U. לדוגמא: מספרים שלמים.

  • פעולות:
  • אתחול: יצירת מילון ריק. create(D)
  • חיפוש: החזר מצביע לרשומהב- D שמפתחהx או NULL.find(D,x)
  • הוספה: הוסף ל- D רשומה שמפתחה x.insert(D,x,info)
  • הוצאה: סלק מ- D רשומה שמפתחה x.delete(D,x)
  • כללים:
  • x שייך לקבוצת המפתחות U.
  • כל x מופיע לכל היותר פעם אחת במילון (בדר"כ).

cs,Technion

slide2
מילון, מבנה חיפוש ועצי חיפוש

פעולות נוספות כאשר מוגדר סדר על U (למשל כאשר מפתח הוא מספר):

מינימום: החזר את המפתח המינימלי ב-D .

עוקב:החזר מצביע לאיבר במילון D בעל המפתח הקטן

ביותר שגדול מ- x.

min(D)

next(D,x)

מילון + מינימום + עוקב נקרא = מבנה חיפוש

מטרה: לבצע את כל הפעולות בזמן O(log n) (במקרה הגרוע ביותר) כאשר n הוא מספר המפתחות הנמצאים במילון בזמן ביצוע הפעולה.

עצי חיפוש: היא משפחה של מימושים למבנה חיפוש.

cs,Technion

slide4

Lecture 4 of Geiger & Itai’s slide brochure

www.cs.technion.ac.il/~dang/courseDS

סיבוכיות הפעולות:

cs,Technion

slide5

h(NULL) = -1

דוגמאות לעציAVL

slide6

h(NULL) = -1

דוגמאות לעצים שהם לאAVL

slide8

טענה 1:

T

#

# =

+1

הוכחת טענה 1:

באינדוקציה

N(T) =

#

n(T) =

#

N(T) = N(Tleft) + N(Tright)

= n(Tleft)+1 + n(Tright)+1

= n(T)+1

slide9

משפט:

טענה 1:

#

# =

+1

הגדרה: נסמן ב- Nh מספר

מינימאלי של בעץ AVLבגובה≥ h

Nh-2<Nh-1

טענה 2:

slide10

הגדרה: נסמן ב- Nh מספר

מינימאלי של בעץ AVLבגובה ≥ h

Nh=Nh-1+Nh-2

טענה 3:

שלשה מקרים

הוכחת טענה 3:

Nh-1 Nh-1

Nh-2Nh-1

Nh-1Nh-2

Nh=min(Nh-1+Nh-2 , Nh-1 +Nh-1) = Nh-1+Nh-2

slide11

משפט:

טענה 1:

#

# =

+1

הגדרה: נסמן ב- Nh מספר

מינימאלי של בעץ AVLבגובה h

Nh-2<Nh-1

טענה 2:

Nh=Nh-1+Nh-2

טענה 3:

Nh> 2h/2

טענה 4:

slide12

טענה 4:

הוכחת טענה 4:

באינדוקציה

טענה 3

slide13

משפט:

טענה 1:

#

# =

+1

טענה 4:

slide14

משפט:

הוכחנו

יהי T עץ AVLבן n צמתים וגובה h, אזי h=2 log (n+1) .

מספרי פיבונצ'י

slide17

לדוגמא:

F0 F1 F2 F3

הוכחה: באינדוקציה על i

בסיס האינדוקציה: ראינו בתרשים

הנחת האינדוקציה:נניח נכונות לכל ij ≤

צעד האינדוקציה: מטענה 2, הנחת האינדוקציה והגדרת מספרי פיבונצ'י,

n3=2,n4=3, n5=5, n6=8

ניתוח מספר צמתים בעץ פיבונצ'י

טענה: לעץ פיבונאצ'י Fi יש |Fi| = ni+3 - 1 צמתים כאשר ni הוא מספר פיבונצ'י ה-i.

slide18

הוכחת הטענה : נתונה המשוואה הבאה.

נניח פתרון מהצורה:

משוואת ההפרשים ליניארית ולכן כל צרוף ליניארי של פתרונות מהווה פתרון:

שימוש בתנאי השפה מוביל למציאת הקבועים:

לפיכך פתרון המשוואה (כולל תנאי ההתחלה) הוא:

מספרי פיבונצ'י (המשך)

נציב במשוואה ונקבל:

cs,Technion

slide19

18

לאחר הוספת האיבר 18 נתקבל עץ שאינו עץ AVL. אבל נתן לשנות את תת העץ שבו הופר האיזון בצורה הבאה:

תיקון כזה נקרא גלגול.

19

20

19

18

20

18

בזמן הוצאה קיימת הפרת איזון דומה. למשל בהוצאת 29.

איזון בעץ AVL

נובע שזמן החיפוש בעץ AVL הוא O(log n). נצטרך לדאוג שלאחר הכנסה או הוצאה, העץ הנותר יהיה עץ AVL.

12

8

15

24

10

6

14

11

29

20

4

13

19

cs,Technion

slide20

בעץ AVL תקין: 1≤|BF(v)|

-1

12

2-

-1

-1

8

15

2-

0

-1

6

10

24

+1

+1

14

0

2+

0

+1

0

11

20

29

13

2+

0

19

1+

18

אחרי ההכנסה של 18 גורם האיזון מופר על מסלול ההכנסה.

איזון בעץ AVL (המשך)

עבור צומת v בעץ בינרי נסמן:

hL(v) גובה תת העץ השמאלי של v.

hR(v) גובה תת העץ הימני של v.

גורם האיזון (Balance Factor) מחושב כהפרש הגבהים:BF(v) = hL(v) – hR(v)

לדוגמא:

מצד שמאל של כל צומת מסומן גורם האיזון.

cs,Technion

slide21

-1

12

-1

-1

8

15

-1

0

10

+1

+1

6

24

14

0

0

11

0

+1

29

20

13

0

19

אבחנות
  • הצמתים היחידים שאולי הופר בהם האיזון הם הצמתים לאורך מסלול הכנסה/הוצאה.
  • אם עבור צומת v במסלול הנ"ל גובה העץ ששורשו v לא השתנה אזי גורמי האיזון בצמתים שמעליו במסלול לא השתנו.
  • אם גורם האיזון הופך ל-2 או ל 2-, אזי יש לבצע גלגול על מנת שהעץ יחזור להיות עץ AVL.
  • גורם האיזון לא יכול להיות גדול מ-2 בערכו המוחלט כי בכל הכנסה/הוצאה הוא משתנה ב-1 לכל היותר.
  • גלגול– פעולה המתבצעת על צומת שהופר בו האיזון על מנת להחזירו לתחום המותר [1 … 1-].

cs,Technion

slide22

הצמת האחרון שהופר בו האיזון

-2

BF(v) = hL(v) – hR(v)

טענה גורם האיזון החדש b

לא יכול להיות 0

אם גורם האיזון החדש הוא 0

ונניח האבר נכנס לתת עץ הימני

b

אזי גורם האיזון הישן היה +1

אזי גובה תת העץ של- b לא השתנה

TR

TL

סתירה

h-1

h

לכן b=+1 או b=-1

cs,Technion

slide23

גלגול LL

גלגול LR

גלגול RL

גלגול RR

+2

+2

2-

2-

1-

1+

1-

+1

הגלגול המתאים

בבן הימני vR

בבן השמאלי vL

בשורש v

LL

BF(v)=2

BF(vL) =1

BF(v)=2

LR

BF(vL) = -1

RR

BF(vR) = -1

BF(v)= -2

RL

BF(vR) = 1

BF(v)= -2

סוגי הגלגולים

סוג הגלגול, כלומר הדרך לתקן חוסר איזון בצומת, תלוי בצורה בה האיזון מוּפָר. נתן לסווג חוסר איזון בארבע קטגוריות שונות המכסות את כל המקרים.

cs,Technion

slide24

0

A

אחרי הגלגול:

גובה העץ לאחר הגלגול הוא 2+ h, כמו לפני ההכנסה. השורש מאוזן. שינינו (1)O מצביעים ולכן זמן הגלגול (1)O.

0

B

h

AL

AR

BR

v

גלגול LL

+2

+1

B

לפני הכנסת v : גובה העץ הוא 2+ h.

הוכנס צומת v שהגדיל את גובה AL ל-1+h .

+1

0

A

מצד ימין של הצמתים מסומנים גורמי האיזון שהשתנו.

גלגול LL : יעביר את A לשורש

h

BR

h

AL

AR

v

h

slide25

גלגול LR

+1

+2

C

-1

0

A

+1

0

B

h

CR

h-1

BL

BR

AL

v

0

B

גובה העץ אחרי הגלגול הוא 2+h , כמו לפני ההכנסה.

שינינו (1)O מצביעים ולכן זמן הגלגול (1)O.

A

C

0

-1

h-1

BL

BR

h

h

AL

CR

v

לפני הכנסת איבר v :

הוכנס איבר ל-BL שגרם לו להעלות את גובהו ל-h.

גלגול LR:

x avl

12

8

15

10

6

24

14

11

4

20

29

13

+1

19

12

18

8

15

10

6

24

14

0

11

4

19

29

13

לאחר גלגול LL:

20

18

דוגמא להכנסת ערך x לעץ AVL

הוסף 18:

+2

cs,Technion

x avl1

+2

15

-1

20

10

24

17

6

13

14

4

7

12

11

13

10

15

לאחר גלגול LR:

6

12

14

20

4

7

11

24

17

דוגמא להכנסת ערך x לעץ AVL

הוסף 11 :

x avl2

-2

11

1

8

19

6

10

25

13

29

12

23

17

15

-1

13

11

0

8

19

12

10

25

6

17

29

23

15

דוגמא להכנסת ערך x לעץ AVL

הוסף 15 (נחוץ גלגול RL)

לאחר גלגול RL:

x avl3
אלגוריתם להכנסת ערך x לעץ AVL
  • הכנס את x כמו לעץ חיפוש בינרי. יהי v העלה שהוסף.
  • h(v) = 0
  • כל עוד v  rootבצע:

4.p = parent(v)

5. אם h(p)  h(v) +1 סיים.

6 . h(p) = h(v) +1

7. אם ב- p הופר האיזון, בצע גלגול וסיים.

8. אחרת v = p

איך נחשב את parent(v) ?

למשל, נוציא אותו ממחסנית בה נמצאים כל הצמתים על המסלול מהשורש ועד v.

cs,Technion

slide30

מציאת המקום הדרוש להכנסה (h)O

הוספת הצומת (1)O

מציאת המקום בו מופר האיזון

(אם מופר) (h)O

תיקון האיזון (1)O

סה"כ O(h) = O(log n)

זמן ההכנסה לעץ AVL

כיוון שהצומת בו עושים גלגול לא משנה את גובהו, מבצעים רק גלגול אחד.

cs,Technion

slide31
אלגוריתם הוצאה
  • הוצא צומת v כפי שהפעולה מתבצעת בעץ חיפוש בינרי.
  • תקן את גורמי האיזון בצורה הבאה. לכל צומת v לאורך המסלול
    • החל מלמטה ועד לשורש בצע:
      • עדכן אתBF(v)
      • אם |BF(v)| = 2 , בצע גלגול והמשך כלפי מעלה.
      • אם גובה תת העץ ששורשו v לא השתנה, סיים.
      • אם גובה תת העץ השתנה ו-BF(v) תקין, המשך כלפי מעלה.

בהוצאה יתכן יותר מגלגול אחד.

cs,Technion

slide32

-2

5

0

גלגול RL

-1

3

8

2

4

6

10

7

9

12

11

0

8

0

גלגול RR

5

10

0

3

6

9

12

2

4

7

11

דוגמא להוצאה מעץ AVL

5

-2

2

8

1

*

4

6

10

3

7

9

12

11

cs,Technion

slide33
דוגמא: הוצאה מעץ פיבונצ'י

בהוצאה יתכן גלגול בכל צומת על המסלול בין הצומת המוצא ובין השורש.

לדוגמא כאשר מוציאים עלה ראשון מעץ פיבונצ'י - Fi.

A

C

*

B

תרגיל לבית: מהי סדרת הגלגולים המתבצעת כאשר מוציאים עלה ראשון מעץ פיבונצ'י - Fi.

cs,Technion

slide34
זמן ההוצאה מעץ AVL

מציאת המקום הדרוש להוצאה (h)O

מציאת המקום בו מופר האיזון

(אם מופר) (h)O

תיקון האיזון (h)O

(לכל היותר פעם בכל רמה)

סה"כ O(h) = O(log n)

עצי AVL מאפשרים חיפוש, הכנסה, הוצאה בזמן O(log n)

cs,Technion