27
trees שששש שששש שששששChapter 5.5– Trees (91 – 97) Chapter 13– Binary Search Trees (244 – 262) שששש ששששש שששששש ששGeiger & Itai, 2001

עצים ועצי חיפוש

  • Upload
    anson

  • View
    51

  • Download
    7

Embed Size (px)

DESCRIPTION

עצים ועצי חיפוש. חומר קריאה לשיעור זה. Chapter 5.5– Trees (91 – 97) Chapter 13– Binary Search Trees (244 – 262).  Geiger & Itai, 2001. אברהם. יצחק. ישמאל. עשו. יעקב. 12 בנים. עוד 11בנים ובת. יוסף. מנשה. אפריים. *. +. +. 5. 3. -. /. 8. 6. 20. 10. עצים. דוגמאות - PowerPoint PPT Presentation

Citation preview

Page 1: עצים ועצי חיפוש

trees

חיפוש ועצי עצים

Chapter 5.5– Trees (91 – 97)

Chapter 13– Binary Search Trees (244 – 262)

זה לשיעור קריאה חומר

Geiger & Itai, 2001

Page 2: עצים ועצי חיפוש

cs,Technion

2trees

עצים

דוגמאות

. אילן יוחסין1

. ביטויים אריתמטיים2

אברהם

יצחקישמאל

עשויעקב

יוסף

מנשהאפריים

בנים 12

ובת 11עוד בנים

20 10

/

8 6

-

+

*

5 3

+

(5+3((*)20/10( + )8-6))

Page 3: עצים ועצי חיפוש

cs,Technion

3trees

עצים

. עץ מנצחים )גביע(3

צה"לחיל הים

חיל האווירחיל היבשה

שריוןתותחנים

...חי"ר

חטיבת צנחניםחטיבת הנח"ל

856גדוד ...

934גדוד 1 מחלקה 2 מחלקה

1 כיתה 2 כיתה

אלון אבוטבול

. מבנה היררכי4

הפועל חיפהמכבי חיפה

מכבי חיפה

מכבי חיפה מכבי ת"א

Page 4: עצים ועצי חיפוש

cs,Technion

4trees

- מכוונים לא (Undirected Graphs)גרפים

וקבוצת V המורכב מקבוצת צמתים ( V,E)גרף לא-מכוון הוא זוג . קשת V היא קבוצה בת שני איברים מתוך Eקשת ב- . Eקשתות

(.{i,j} )במקום הסימון המדויק יותר (i,j)מסומנת ע"י

V = a,b,c,d,e

E = (a,b), (a,d), (a,d) ,(b,c),(b,e),(c,c),(d,c),(d,e),(e,c)

קשת עצמית

., n = 5 m = 9. בדוגמא: | m = |E וכן|n = |Vנסמן

a b

d e

c

Page 5: עצים ועצי חיפוש

5trees

מכוונים (Directed Graphs)גרפים וקבוצת V המורכב מקבוצת צמתים ( V,E) הוא זוג גרף מכוון

E V X V.קשתות

V = a,b,c,d,e

E = (a,b),(a,d),(b,c),(b,e),(c,c),(d,c),(d,e),(e,a),(e,c)

., n = 5 m = 9. בדוגמא: | m = |E וכן|n = |Vנסמן

כך שלכל זוג (v1,v2,..,vk) הוא סדרת צמתים (V,E)בגרף )מכוון( )מכוון( מסלול )מכוון( מעגל. המסלול נקרא E היא קשת ב-(vi,vi+1)צמתים עוקבים בסדרה,

(.(a,d,e,a) )לדוגמא, v1=vkאם

a b

d e

c

Page 6: עצים ועצי חיפוש

cs,Technion

6trees

מכוונים עצים

הגדרות

v של בן u אם קיימת קשת מצומת u לצומת v .

u של אב v אם v בן של u .

דוגמאות

f בן של b

bשל אבe

הוא גרף מכוון ללא מעגלים )בגרף התשתית שלו( ואשר לו מקור עץ מכוון.שורשאחד בלבד הנקרא

b c

a

h i

d f

j k

ge

הוא צומת שאף קשת אינה מצביעה אליו.מקור

Page 7: עצים ועצי חיפוש

cs,Technion

7trees

מכוונים עציםהגדרות

v של צאצא u אם קיים מסלול מכוון מצומת uל - v .

u של אב-קדמון v אם v צאצא של u.

v הוא עץ מכוון שצמתיו הם v ששורשו Gתת-עץ של , והקשתות שלו הן הקשתות vעצמו וכל הצאצאים של

.Gהמחברות צמתים אלו ב-

.v היא מספר הבנים של vדרגת צומת

הוא צמת ללא בנים.עלה

דוגמאות

g צאצא של a

b אב-קדמון של h

gתת העץ ששורשו צמתים ושתי 3מכיל

קשתות.

.2 היא aדרגת

h .הוא עלה

הוא צומת צומת פנימישאינו עלה.

b c

a

h i

d f

j k

ge

Page 8: עצים ועצי חיפוש

cs,Technion

8trees

מכוונים עצים

הוא מספר vעומק של צומת vהקשתות משורש העץ אל

)המרחק מהשורש(.

הוא מספר vגובה של צומת לצאצא הרחוק ביותר vהקשתות מ-

)עלה(. vשל

הוא הגובה של שורשו.גובה העץ

2עומק

2גובה

b c

a

h i

d f

j k

ge

לעיתים נשמיט את הערה: החצים מתוך הבנה שכוון

הקשתות כלפי מטה. כמו כן לרוב נאמר עץ במקום עץ

מכוון.

b c

a

h i

d f

j k

ge

Page 9: עצים ועצי חיפוש

cs,Technion

10trees

בינריים עצים: עץ שבו לכל צומת שאינו עלה יש עץ בינרי

בן שמאלי ו/או בן ימני.

הוא מבנהעץ בינרי הגדרה רקורסיבית:

. ריק )ללא צמתים(, או 1

. מורכב משלושה חלקים: צומת הנקרא 2שורש, עץ בינרי הנקרא תת-עץ שמאלי, ועץ

בינרי הנקרא תת-עץ ימני.

Page 10: עצים ועצי חיפוש

cs,Technion

11trees בינריים מלאים ושלמיםעצים

: עץ שבו לכל צומת (full)עץ בינרי מלא בנים.2פנימי

: עץ בינרי מלא שבו (complete)עץ בינרי שלםכל העלים באותו עומק.

: עץ בינרי שלם עץ בינרי כמעט שלםשהוצאו ממנו עלים )"מצד ימין"(.

Page 11: עצים ועצי חיפוש

cs,Technion

12trees

שלמים בינריים עצים תכונות

:h עלים, וגובה L צמתים, nבעץ בינרי שלם בעל

i:ni = 2iמספר הצמתים בעומק 1.

L= nh= 2h מספר העלים:2.

122 :מספר הצמתים3. 1

00

hh

i

ih

i inn

:h = log2)n+1( - 1. הגובה4

:n - L = 2h - 1 = L - 1. מספר הצמתים הפנימיים5

0

1

2

3

Page 12: עצים ועצי חיפוש

cs,Technion

13trees לעצים מימוש "מערכי"בינריים

iבן שמאלי של צומת 2iנמצא ב-

iבן ימני של צומת 2i+1נמצא ב-

iאבא של של צומת i/2 נמצא ב-

a

1

b

2

c

3

d

4

e

5

f

6

g

7

h

8

i

9

j

10

k

11

l

12

m n o

0 1413 15

158 109 11 12 13 14

b c

a

h i j k

d e

l m n o

f g4 5 6 7

3

1

2

יעיל רק עבור עצים שלמים !

Page 13: עצים ועצי חיפוש

cs,Technion

14trees

באמצעות מצביעיםמימוש

class node{ DATA_Type value ;

struct node *left, *right;;}

valueleft right

מבנה צומת:

b

h i k

d e

b

e

k

d

ih

b

1

d

2

e

3

h

4

i

5

f

6

k

70

Page 14: עצים ועצי חיפוש

cs,Technion

15trees

בינרייםבעצים יםסיורpreorder

בקר בשורש

סייר בתת העץ השמאלי

סייר בתת העץ הימני

a b d e c f h g i

postorder

סייר בתת העץ השמאלי

סייר בתת העץ הימני

)חשוב ביטויים בקר בשורשאריתמטיים(

d e b h f i g c a

inorder

סייר בתת העץ השמאלי

בקר בשורש

סייר בתת העץ הימני

d b e a f h c i g

b c

a

d e

h i

f g

b c

a

d e

h i

f g

b c

a

d e

h i

f g

b c

a

d e

h i

f g

b c

a

d e

h i

f g

b c

a

d e

h i

f g

Page 15: עצים ועצי חיפוש

cs,Technion

16trees

חישוב והמרה של ביטויים אריתמטיים

postorder

סייר בתת העץ השמאלי

סייר בתת העץ הימני

)חשב את ערך הביטוי או הדפס(. בקר בשורש

5 3 + 20 10 / 8 6* + - postfix

inorder

סייר בתת העץ השמאלי

בקר בשורש )הדפס(

סייר בתת העץ הימני

(5+3((*)20/10(+)8-6))

+ +

*

5 3

10 8

/ -

620

infixכתיב פולנינקראים postfixביטויי

Łukasievicz ע"ש שם הלוגיקאי הפולני

אין צורך בסוגריים: לכל ביטויpostfixבביטוי

postfix!יש לכל היותר פרוק יחיד

Page 16: עצים ועצי חיפוש

cs,Technion

17trees

ביטוי ח באמצעות מחסניתpostfixישוב

5 5

3

8 8

2

8

20

postfixאלגוריתם לחישוב ביטוי

התחל עם מחסנית ריקה.1.

עבור על כל ביטוי משמאל לימין:2.

אם האיבר הבא הוא אופרנד- הכנס אותו למחסנית.3.

אם הוא פעולה – הפעל את הפעולה על שני האיברים4.

שבראש המחסנית והכנס את התוצאה למחסנית.

5 3 + 20 10 / 8 6 * + - :postfix8

2

8

6

8

2

2

8

4

328

20

10

8

2

8

Page 17: עצים ועצי חיפוש

cs,Technion

18trees

פרוצדורת postorderמימוש

void postorder (NODE *T)

{

if (T = = NULL) return;

else{

postorder( T left); /* 1/*

postorder( T right); /* 2/*

“ visit”; /* 3/*

return};

}

valueleft right

מבנה צומת:

נשתמש במימוש "מצביעי"

Page 18: עצים ועצי חיפוש

19trees

דוגמא לשימוש חביב

int height (NODE *T) {int L,R;

if (T = = NULL) return –1 else{

L = height(T left); R = height(T right); return 1 + max(L,R) ;

} }

פונקציה רקורסיבית לחישוב גובה העץ )דוגמא לסיור

postorder:)

Page 19: עצים ועצי חיפוש

cs,Technion

22trees

(Dictionary)מילון

פעולות:

)create)D יצירת מילון ריק. אתחול:•

)NULL. find)D,x או x שמפתחהD ב- החזר מצביע לרשומהחיפוש:•

)x.insert)D,x,info רשומה שמפתחה D הוסף ל- הוספה:•

)x.delete)D,x רשומה שמפתחה D סלק מ- הוצאה:•

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

.Uשונה )בד"כ( מרשומה לרשומה. אוסף המפתחות האפשריים מסומן ב-

מפתחות אפשריים לדוגמא: מספרים שלמים.

כללים:

• x שייך לקבוצת המפתחות U.

מופיע לכל היותר פעם אחת במילון )בדר"כ(.x כל •

Page 20: עצים ועצי חיפוש

cs,Technion

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

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

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

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

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

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

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

next)D,x(

min)D(

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

Page 21: עצים ועצי חיפוש

cs,Technion

24trees

חיפוש כעץ בינרי עץ

x

zy

zxy

נשתמש בעץ בינרי מכוון.

בכל צומת נאחסן רשומה אחת מתוך המילון )או מפתח לאינפורמציה של הרשומה(.מצביעו

, כל xנשמור על הכלל הבא: עבור צומת כלשהו בעל מפתח וכל המפתחות בתת xהמפתחות בתת העץ השמאלי קטנים מ-

. xהעץ הימני גדולים מ-

Page 22: עצים ועצי חיפוש

cs,Technion

25trees

חיפוש כעץ בינרי עץ

לא בעץ.x ריק, דווח ש-Tאם 1.

הערך שבשורש.yיהי 2.

.x, החזר מצביע לצומת המחזיק את y=x אם 3.

.T, המשך את החיפוש בתת העץ השמאלי של y > xאם 4.

.T (, המשך את החיפוש בתת העץ הימני של y < x אחרת )כאשר 5.

3 20

8

1 7 11

רק: הערה מופיעים בציור. במלואן הרשומות ולא המפתחות

:)find)T,xאלגוריתם החיפוש

Page 23: עצים ועצי חיפוש

cs,Technion

26trees

חיפוש בעץ הכנסה

insert(T,4)

3 20

8

1 7 11

4

:)insert)T,xאלגוריתם הכנסה

.T בעץ החיפוש x חפש את1.

, עצור ודווח.T נמצא ב-xאם 2.

.v המפתח שנמצא ב-y ויהי x הצומת האחרון במסלול החיפוש של vיהי 3.

v

w

.v כבן שמאלי של x עם מפתח w הוסף צומת y>,x. אם 4

.v כבן ימני שלx עם מפתח w הוסף צומת , ( y < xכאשר . אחרת )5

Page 24: עצים ועצי חיפוש

27trees חיפוש מעץ – המקרים הוצאההקלים צומת בעץ המיועד להוצאה.v יהי :אלגוריתם הוצאה

עלה, סלק אותו.vאם 1.

להצביע על הבן.v בן יחיד, תן לאבא של vאם ל-2.

2

1 4

5

8

7 9

63

2

4

5

8

7 9

63

delete 1

2

4

5

8

7 9

63

2

3

5

8

7 9

6

delete 4

Page 25: עצים ועצי חיפוש

cs,Technion

28trees

חיפוש מעץ הוצאה צומת בעץ המיועד להוצאה.v. יהי אלגוריתם הוצאה

עלה, סלק אותו.vאם 1.

להצביע על הבן.v בן יחיד, תן לאבא של vאם ל-2.

)זהו הצומת המכיל את הערך הבא . inorder בסדר v הצומת העוקב ל-wאחרת: יהי 3. כלומר הצומת המתקבל ע"י פניה אחת ימינה ואח"כ כל הדרך שמאלה. vאחרי הערך שב-

בן אחד לכל היותר(.wשימו לב שלצומת

.w וצומת v. החלף בין צומת 4

כנדרש. 2 או 1 לכל היותר בן אחד. המשך בצעד v. כעת יש ל-5

2

3

5

8

7 9

6

2

3

6

8

7 9

delete 5v

w

w

v(.5 )צעד vנותר להוציא את

Page 26: עצים ועצי חיפוש

cs,Technion

29trees

נוספתדוגמא

2

3

5

8

7 9

7.5

2

3

7

8

9

delete 5v

w

w

7.5

v

2

3

7

8

9

w

7.5

vdelete “v”

Page 27: עצים ועצי חיפוש

cs,Technion

30trees

זמנים נתוח

זמן חיפוש/הכנסה/הוצאה הוא לינארי בגובה העץ.

מהו גובה העץ?

h= log n עץ שלם. מקרה טוב.

- h = n עץ הנראה כרשימה ליניארית. מקרה גרוע.1

ומהו הגובה הממוצע ?