ייצוג קבוצות מתוחכם

Preview:

DESCRIPTION

ייצוג קבוצות מתוחכם. מתוחכם רק לקבוצות גדולות (תקורה בפעולות ובתכנות !!! ). תחום סדור (> < =). תחום איברים גדול (איברי הקבוצה לא יכולים להיות אינדקסים לתוך מערך) דוגמה : השמות בתוכנית פסקל. עץ חיפוש בינארי יתמוך ב :. נבצע ב- O(logn) בממוצע. - PowerPoint PPT Presentation

Citation preview

1

באמצעות עצים שוניםייצוג •

רק לקבוצות גדולות )תקורה בפעולות ובתכנות!!!(מתוחכם •

BINARY SEARCH TREES עצי חיפוש בינאריים

=( < > תחום סדור )

)איברי הקבוצה לא יכולים להיות אינדקסים לתוך גדול איברים תחוםמערך( : השמות בתוכנית פסקלדוגמה

INSERTעץ חיפוש בינארי יתמוך ב:

DELETE

MEMBER

MIN

DEL+MIN :Heapהבדל מ -

בממוצע )O)logn נבצע ב-

Data Structures, CS, TAU - 5.1

ייצוג קבוצות מתוחכם

2

הגדרה:

- הצמתים מסומנים בערכים

- העץ בינארי לא בהכרח מאוזן :x שערכו v לכל צומת- לא בהכרח מלא

x < תת העץ הימני x > תת העץ השמאלי

abcדוגמה:

aba abf

abd acc

acbabe

abfabc

aba

acc

acbabd

abe

- זהות בקבוצות- שונות בייצוג

MEMBER ביצוע

רוץ על פני העץ )ימינה ושמאלה ע”פ הגדלים( עד שתמצא

Data Structures, CS, TAU - 5.2

3

Type nodetype = redord element: elementtype; leftchild, rightchild: nodetype;end;

function MEMBER)x: elementtype; A:SET(: boolean {return TRUE if x A} begin if A=nil then return)false( else if x=A .element then return)true( else if x>A .element then return)MEMBER)x, A .leftchild(( else {x<A .element} return)MEMBER)x, A .rightchild(( end; {MEMBER}

Data Structures, CS, TAU - 5.3

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

4

MEMBER חפש כמו ב- x נצביע על צומת חדשה שמכילה את NIL על ועם המצביע שמצביע

DELETE(x, A) יישום

תלוש את העלהעלה: x אם-

:בן יחיד x אם ל- x תלה את הבן במקום

:שני בנים x אם ל- )שמאלי ביותר( קח את הקטן ביותר

בתת x העץ הימני, השמיטו ושים במקום

x

x

Data Structures, CS, TAU - 5.4

)INSERT )x,Aיישום

5

FINDMIN יישום רוץ שמאלה ככל האפשר

FINDMAX יישום

רוץ ימינה ככל האפשר

DELETEMIN יישום DELETE ואת FINDMIN שלב את

ישירות ותוך כדי שימוש בו ליישם את DELMIN )ניתן גם לישםDELETE–

(AHU [158-159] ראה

)לך שמאלה ככל האפשר והשמט, תוך כדי תליית הבן הימני(

Data Structures, CS, TAU - 5.5

6

1 )O)n( : Worst Case

?אקראייםאיברים n להכניסבממוצעכמה זמן לוקח ( 2

:עץ מושלם

:עץ קווי

log n על איבר לוקח לכל היותר

n

i

nni1

2)1(

O)n( לצומת

צריך להניח הנחות:ממוצע

INSERT רק -

אלמנטים( n )סדרים בין כל הסדרים שווי הסתברות-

Data Structures, CS, TAU - 5.6

אנליזת זמן של עץ חיפוש בינארי

7

- רוצים לחשב אורך מסלול ממוצע:(a את האיבר הראשון )קח

nאיברים קטנים ממנו היא I ההסתברות ש1

a

i N-i-1

i אורך ממוצע של מסלול בעץ בגודל )P)i יהי)אורך מסלול כאן = מס’ צמתים במסלול(

:, האורך הממוצע הואaאיברים קטנים מ- i , אםאזי

ninPniniPn

iinP 1)1)1()(1()1)(()(

שמאל ימין מרכז

)()(1 jPnjiPn

i (j=n-i-1)

Data Structures, CS, TAU - 5.7

8

:iנוריד את ההתניה על )(

1

0

1)( inP

n

innP

1

0)(

1

02

1)(211

n

iiiP

n

i niiP

nהצב:

1

0)(2

21n

iiiP

n

nnPנראה באינדוקציה: log41)(

הוכחה:

1

0)log4(2

21)(n

iiii

nnP

1

01log2

81n

iii

n

Data Structures, CS, TAU - 5.8

9

12/

0

1

2/]log)2/log([2

82n

i

n

ninini

n

)2log(82 nn )log(8

23 nn

)1(log82

nn

nlog41

Data Structures, CS, TAU - 5.9

1

01log2

81n

iii

n

10

- גמישות בבינאריות גמישות בעומק

)O)log n ממוצע - עץ חיפוש בינארי:

n(Oגרוע ביותר )

- היינו רוצים לשמור את העץ מאוזן תמיד

Data Structures, CS, TAU - 5.10

יישום קבוצות באמצעות עצים מאוזנים

- קשיחות בבינאריות קשיחות בעומק

11

ילדים3 או 2( לכל צומת פנימי 1:הגדרה

( כל מסלול משורש לעלה - באותו אורך2

ייצוג קבוצה מסודרת:

מימין לשמאל.עולה , מסודרים בסדר בעלים- האלמנטים נשמרים

.משמאל לימין( 1 ,2 ,3- הילדים ממוספרים )

- בכל צומת פנימי שומרים את המפתח ו)אם צריך(אמצעי ביותר בתת העץ הנמוך הימני ביותר בתת העץ הנמוך ה

:דוגמה6 13

17 -1195 -

52 96 11 13 17

חציצים )בין כל זוג איברים(Data Structures, CS, TAU - 5.11

(B-trees )2-3שימוש בעצי

12

,INSERT:תכונות DELETE, FIND,FINDMIN.MEMBER,

O)logN( Worst Case

:MEMBER)לך על פי הערכים )כמו עץ חיפוש בינארי

:INSERT

v - צומת חדש

p - צריך להיות אבא של v

g - אבא של p סבא של( v)

pכבן נוסף של v הכנס-

.שלושה ילדים - גמרת p אם כעת ל-

:יש ארבעה ילדים p אם ל-

g כבן של p ‘מימין ושתול את p ‘ שמאל ו-p ל- p פצל

Data Structures, CS, TAU - 5.12

13

:צריך לדעת p ב v לצורך שתילה של v מצביע ל- (1

v ערך הנמוך ביותר בתת העץ של ( 2

:שים לב

פרט למקרה יחידי )שמאלי ביותר והכי למטה(, כל השתילות הן של

לא השמאלי ביותר!!!צומת ש

כלומר, תמיד מוסיפים בן שהוא אח ימני לבן הראשון

l1 l2

t1 t2 t3

l1 l2

t1 t2 t3t’1

-

t1 t’1

l’1 -

t2 t3

l2l1

Data Structures, CS, TAU - 5.13

14

7 15

18 -1296 -

63 97 12 15 18

8הכנסת

9 -

15 -

-12

63 87 9 12 18

17 -

8 -

15

Data Structures, CS, TAU - 5.14

INSERTדוגמה ל-

15

xשל מצא מקומו (1:אפשרות א

מלמטה למעלה באביו במעבר x ( שתול את2

( מעבר מעלה מטה - מעבר מטה מעלה1מצריך:

( התייחסות להורים2

node בתת העץ של x שתילה רקורסיבית של:אפשרות ב

.ערך לשתילה xפרמטרים:

node תת העץ שבו תבוצע ההשתלה .

ערכים מוחזרים:

Pnew - מצביע לתת עץ חדש לימינו של node

low - הערך הקטן ביותר בתת העץ של Pnew

לוודא שפרמטרים וערכים מוחזרים מדוייקים.חשוב:

Data Structures, CS, TAU - 5.15

)INSERT)xביצוע של

16

- שימוש ברקורסיה כמו קודם.

- בדיקות לגבי השורש

( בדיקה האם העץ ריק או בעל איבר בודד וטיפול מתאים.1

( במקרה של עץ רגיל, רקורסיה עשוייה לחזור עם צומת חדש 2שמועמד להיות אח לשורש הקודם.

צריך ליצור שורש חדש !!!

Data Structures, CS, TAU - 5.16

טיפול במקרי קצה

17

v - צומת p - אב u - דוד p מ v השמט- . השמט וסייםשני אחים: v אם ל (1

:אח בודד v אם ל ( 2

יאמץ אחד מבני הדוד p : שלושה בנים u אם לא(

עריריp ועכשיו v יאמץ את האח של u: שני בנים u אם לב(

צריך רקורסיבית להשמיטו

p

v

1

v d

p

a

u

cb

p

ba

u

dc

א2

p

av

u

cb

c

u

ba

p

ב2

Data Structures, CS, TAU - 5.17 DELETE

18

:DELETE1 פונקציה

node מתת העץ של xומשמיטה את node לוקחת מצביע ל

- היישום לא כולל עדכון ערכים נמוכים.

- לשם עדכון: צריך להחזיר את הערך הנמוך ביותר בתת העץ!- עדכון כלפי מעלה חייב להמשך גם אם לא משמיטים הצומת

הספציפי.

3

3 4 5

4

:DELETE פונקציה

:עם השורש ובודקת מקרי קצה DELETE1 קוראת ל

א( אם בעץ יש צומת אחד או אם ריק.ב( אם התוצאה היא צומת בודד.

Data Structures, CS, TAU - 5.18

AHUיישום ב-

19

.2-3- רעיון דומה לעץ

.לצמתים פנימיים( k ) מעלה )דרגה( יותר גבוהה-

- עקרון גמישות רוחבית:(/k+1)2ל k בין

)t 2t-1(

.הינו גודל הדף k שימוש בדיסקים - הפקטור שמכתיב את-

, - ניתן ליישם ווריאציה שבה הערכים רק בעלים או ווריאציה שבה יש ערכים בצמתים פנימיים.

. כנ”ל לגבי עצי חיפוש בינאריים-

Data Structures, CS, TAU - 5.19

B-TREES

20

- מטפל בדרגה כללית.

- מטפל בוורסיה שבה המפתחות שוכנים בכל העץ )לא רק בעלים(

2k-1 ל k-1 מס’ המפתחות נעים בין -

דוגמה:

nih,f,ba, m,l,

kd

InsertSPLITפעולה בסיסית ב אם מס’ המפתחות

=2k-1

.והעבר ערך אחד לאבא )החציון( k-1 פצל לשני צמתים, כ”א עם

)Insert)j : דוגמה

nfba, m,l,

kd h

i, jData Structures, CS, TAU - 5.20

CLRיישום

21

- קבוצות של קבוצות.

- מאחדים קבוצות זרות ורוצים לדעת היכן כל עצם.

-FIND ו MERGE פעולות-

: דוגמהמקיים: (EQUIVALENCE)יחס האקוויולנטיות/שקילות

רפלקסיבי:

סימטרי:

טרנזיטיבי:

a a

a b b a

a b, b c a c

נתון: רצף של פעולות שקילות

1 2, 3 4, 5 6, 2 3

רוצים: לייצר קבוצות שקילות.

לאיחוד הקבוצות MERGE: משתמשים ב- FIND לחפש למי שקול :

Data Structures, CS, TAU - 5.21

FIND ו- MERGEקבוצות עם

22

MERGE)A, B( בצע אחוד והכנס תוצאה ל - A אוB

FIND)x( - מצא באיזו קבוצה נמצא x

INITIAL)A, x( - הכנס x ל A

:יישום פשוט

- מערך שבו כל איבר מכיל את שם הקבוצה לה האיבר שייך

A={1, 3, 5}, B={2, 4}, C={6, 7, 8}

A B A B A C C C

1 2 3 4 5 6 7 8

O)1( : FIND, INITיעילות:

O)N( : MERGE)צריך לעבור על כל אברי המערך(

FIND ו- MERGE פעולות Nמדד יעילות:

Data Structures, CS, TAU - 5.22

פעולות

23

לחוד )רשימה מקושרת( B לחוד ושל A לקשר את האיברים של-

- לא צריך לרוץ על כל אברי התחום אלא רק על אברי הקבוצה.

O)n (2 מיזוגים יכולים לעלות: nעדיין -

הקבוצה שנוצרה לאיבר מיזוגים שבו ממזגים את n-1 כי: רצף של:בודד

)2(1

12

)1( nOn

i

nni

:פתרון

- לשמור את גודל הקבוצות

- למזג קבוצות קטנות לגדולות

Data Structures, CS, TAU - 5.23

יישום מהיר יותר

24

:סיבוכיות

( מתחשבנים עם כל איבר בנפרד )לא עם הקבוצה(1

( כשאיבר עובר קבוצה גודל קבוצת האם לפחות מוכפל.2

1( גודל קבוצה ראשונית - 3

2גודל קבוצה שנייה

4גודל קבוצה שלישית

8גודל קבוצה רביעית i-1

i2 גודל קבוצה

N אבל גודל הקבוצה האחרונה

2#steps גודל

קבוצה אחרונה

N

Nsteps 2log# N2logכל איבר עובר לכל היותר פעמים

)2log(סבוכיות כוללת NNO

Data Structures, CS, TAU - 5.24

סיבוכיות

25

א( גודלה( צריך לכל קבוצה:1ב( האיבר הראשון בה

א( קבוצת השייכות( צריך לכל איבר:2ב( האיבר הבא בקבוצה

)הנחה: כל האיברים הם השלמים(:ישום

type nametype = 1,…,n elementype = 1, 300, n MFSET = record setheaders: array[1…n] of record count: 0,…,n; firstelement: 0,…,n; end; names: array[1…n] of record setname: nametype nextelement: 0,…,n

לכל קבוצהגודלה והאיבר

הראשון

לכל איברשם הקבוצה

והבא.

Data Structures, CS, TAU - 5.25

מבנה נתונים

26

(A בודקים מי הקבוצה הקטנה )נניח -

B רצים לאורך הקבוצה ומשנים שמה ל- -

B ל- A באיבר האחרון עושים את השרשור-

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

:סבוכיות

גודל הבעלים גדל פי שניים ,- כל איבר שעובר לבעלים חדשים)לפחות(

.פעמים log n לכן כל איבר עובר לכל היותר-

)O)n log n :סבוכיות

Data Structures, CS, TAU - 5.26

MERGEביצוע

27

-B כשמעבירים ל A נסיון למנוע ריצה על כל אברי-

בעץ מייצגים איברים. -

כל צומת מצביע לאביו. -

בשורש יושב שם הקבוצה. -

A

1

73

5

B

8

6

C

17

:ביצוע הפעולות

MERGE)A, B( - תלה את השורש של A על זה שלB

FIND)x(.רוץ כלפי מעלה -

Data Structures, CS, TAU - 5.27

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

28

O)1( = MERGE

O)n( = FIND)יתכן(

N שידוכים וחיפושים O)n( 2

)אם תולים גדול על קטן נוצרת רשימה(

תלה עץ קטן על גדול:שיפור

.1- בכל תליה עומק גדל ב-

. בכל תליה מס’ הצמתים בעץ לפחות מוכפל-

N2log- צומת משתתף בתליה

N2logעומק כל צומת

NNסבוכיות: log

Data Structures, CS, TAU - 5.28

סיבוכיות

29

השורש לקפל את המסלול אל FIND כשמבצעים•) )כל צמתי המסלול יהפכו לבני השורש

ביצוע קל: בשני מעברים )ראשון לזיהוי השורש, שני לקיפול ותליה(•

1

7

A

3

2

8

1 7

A

3

2

8

FIND )7(

:ניתוח סיבוכיות

.n(O ) עדיין יתכן -פעולה בודדת

- מסובך לניתוח.ממוצע

קשה ( FINDS N לבצוע )O)NlogN קטן על גדול, יקחאם לא תולים )לאנליזה

Data Structures, CS, TAU - 5.29

קיפול מחסומים

30

:פעולות N קטן על גדול, סבוכיות לאם כן תוליםO)N( = )N(

: )N(קרובה לקבועאינה קבוע

N אבל גודלת לאט מאוד עם )A)X, Y:פונקצית אקרמן

A)0, y( = 1

A)1, 0( = 2

A)x, 0( = x+2 for x 2

A)x, y( = A)A)x-1, y(, y-1(, x,y 1

A)x, 0( = x+2

A)x, 1( = A)A)x-1(, 1(, 0( = A)x-1, 1(+2 = 2x

A)x, 2( = A)A)x-1(, 2(, 1( = 2A)x-1, 2( = 2x

A)x, 3( = A)A)x-1(, 3(, 2( = 2 = 2A)x-1, 3( 22

2 xפעמים

A)x, 4( = אין צורה מתמטית

הגדרה

Data Structures, CS, TAU - 5.30

31

)A)x :הפונקציה

וריאציה של אקרמן:

A)x( = A)x, x(A)1( = 2A)2( = 4A)3( = 16

A)4( = 22

2.. . 65536 פעם

: )N(הפונקציה

)A)x :הופכית שלn A)x( הקטן ביותר כך ש x ה

1)2()1( 2)4()3(

3)16(...)6()5( 4(...)

מונוטונית עולה )לא יורדת(פונקציה 4פרקטית חסומה ע”י

Data Structures, CS, TAU - 5.31

Recommended