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

31
1 גגגגג גגגגגגג גגגג גגגגג גגגגגגגגגגג( גג גגגגגגג גגגגגג)!!! גגגגגגג גגגגגגג גגג גגגגג גגגגגגגגBINARY SEARCH TREES ( גגגג גגגג< > )= גגגג גגגגגג גגגגגגגגג גגגגגג גג גגגגגג גגגגג( ) גגגגגגגג גגגג גגגג גגגגג : גגגגג גגגגגגג גגגג גג גגגגג גגגגגג גגגגג ג:INSERT DELETE MEMBER MIN - גגגג גDEL+MIN :Heap - ג גגגגO)logn( גגגגגגData Structures, CS, TAU - 5.1 גגגגג גגגגגג גגגגגג

Upload: leigh-pratt

Post on 02-Jan-2016

28 views

Category:

Documents


4 download

DESCRIPTION

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

TRANSCRIPT

Page 1: ייצוג קבוצות מתוחכם

1

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

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

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

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

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

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

DELETE

MEMBER

MIN

DEL+MIN :Heapהבדל מ -

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

Data Structures, CS, TAU - 5.1

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

Page 2: ייצוג קבוצות מתוחכם

2

הגדרה:

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

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

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

abcדוגמה:

aba abf

abd acc

acbabe

abfabc

aba

acc

acbabd

abe

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

MEMBER ביצוע

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

Data Structures, CS, TAU - 5.2

Page 3: ייצוג קבוצות מתוחכם

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

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

Page 4: ייצוג קבוצות מתוחכם

4

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

DELETE(x, A) יישום

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

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

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

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

x

x

Data Structures, CS, TAU - 5.4

)INSERT )x,Aיישום

Page 5: ייצוג קבוצות מתוחכם

5

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

FINDMAX יישום

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

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

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

(AHU [158-159] ראה

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

Data Structures, CS, TAU - 5.5

Page 6: ייצוג קבוצות מתוחכם

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

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

Page 7: ייצוג קבוצות מתוחכם

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

Page 8: ייצוג קבוצות מתוחכם

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

Page 9: ייצוג קבוצות מתוחכם

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

Page 10: ייצוג קבוצות מתוחכם

10

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

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

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

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

Data Structures, CS, TAU - 5.10

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

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

Page 11: ייצוג קבוצות מתוחכם

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שימוש בעצי

Page 12: ייצוג קבוצות מתוחכם

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

Page 13: ייצוג קבוצות מתוחכם

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

Page 14: ייצוג קבוצות מתוחכם

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דוגמה ל-

Page 15: ייצוג קבוצות מתוחכם

15

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

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

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

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

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

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

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

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

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

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

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

Data Structures, CS, TAU - 5.15

)INSERT)xביצוע של

Page 16: ייצוג קבוצות מתוחכם

16

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

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

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

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

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

Data Structures, CS, TAU - 5.16

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

Page 17: ייצוג קבוצות מתוחכם

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

Page 18: ייצוג קבוצות מתוחכם

18

:DELETE1 פונקציה

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

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

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

הספציפי.

3

3 4 5

4

:DELETE פונקציה

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

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

Data Structures, CS, TAU - 5.18

AHUיישום ב-

Page 19: ייצוג קבוצות מתוחכם

19

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

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

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

)t 2t-1(

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

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

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

Data Structures, CS, TAU - 5.19

B-TREES

Page 20: ייצוג קבוצות מתוחכם

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יישום

Page 21: ייצוג קבוצות מתוחכם

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קבוצות עם

Page 22: ייצוג קבוצות מתוחכם

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

פעולות

Page 23: ייצוג קבוצות מתוחכם

23

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

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

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

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

)2(1

12

)1( nOn

i

nni

:פתרון

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

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

Data Structures, CS, TAU - 5.23

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

Page 24: ייצוג קבוצות מתוחכם

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

סיבוכיות

Page 25: ייצוג קבוצות מתוחכם

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

מבנה נתונים

Page 26: ייצוג קבוצות מתוחכם

26

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

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

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

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

:סבוכיות

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

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

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

Data Structures, CS, TAU - 5.26

MERGEביצוע

Page 27: ייצוג קבוצות מתוחכם

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

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

Page 28: ייצוג קבוצות מתוחכם

28

O)1( = MERGE

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

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

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

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

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

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

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

N2logעומק כל צומת

NNסבוכיות: log

Data Structures, CS, TAU - 5.28

סיבוכיות

Page 29: ייצוג קבוצות מתוחכם

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

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

Page 30: ייצוג קבוצות מתוחכם

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

Page 31: ייצוג קבוצות מתוחכם

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