תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – b-trees...

22
ללללל4 21/3/2007 לללל לללללל07 b ללללל ללללל

Post on 22-Dec-2015

252 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

4תרגול

21/3/2007

07מבני נתונים b

ליאור שפירא

Page 2: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

B-treesתזכורת – לכל צומתxיש השדות הבאים

n[x]-מס' מפתחות ב xהמפתחות עצמם בסדר לא יורד כל צומת פנימי מכיל גםn[x]+1מצביעים לילדי הצומת המפתחות בצומת מפרידים את ערכי ילדי הצומת

כל העלים בעץ הינם באותו עומקיש חסם עליון ותחתון למס' מפתחות שצומת מכיל נבטא חסם זה ע"יt≥2 ,הדרגה המינימלית של העץ

לכל צומת חוץ מהשורש יש לפחותt-1מפתחות לפיכך, לכל צומת פנימית )חוץ מהשורש( יש לפחותtילדים 2בכל צומת יש לכל היותרt-1 2 מפתחות, ז"א מקסימוםtילדים 2 אם מכילה בדיוק מלאהצומת תיקראt-1מפתחות

Page 3: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

B-treeהכנסה ל-'אופציה א

מצא את הצומת בו אמור להיכנס הערךאם הצומת מלאה פצל אותה וחזור רקורסיבית

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

צומת מלאה שניתקל בה יתרון: לא נצטרך לגשת פעמיים לצמתים )ייתכן שיושבות בזיכרון

יקר לגישה( 2חסרון: דורש שמס' בנים מקסימלי יהיהt אינם 2-3 )עצי B-Trees

לפי הגדרה זו(

Page 4: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

)אופציה ב'(B-tree הכנסה ל- B-Tree-Insert(T,k)

rroot[T] If n[r]=2t-1

Create new root s and split r under it B-Tree-Insert-Nonfull(s,k)

Else B-Tree-Insert-Nonfull(r,k)

Page 5: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

)אופציה ב'(B-treeהכנסה ל- B-Tree-Insert-Nonfull(x,k)

in[x] If leaf[x]

Find correct place and insert value k Else

Find ci[x] - child of x into which recursion continues If n[ci[x]]=2t-1

Split ci[x]

B-Tree-Insert-Nonfull(ci[x],k)

Page 6: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

t=3דוגמה – עץ בו t=3 3-6 ז"א זהו עץ

Page 7: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

(b-trees )2-4עצי ריק ונבצע 2-4תרגיל: אם נתחיל מעץ m פעולות

insert ,כאשר בכל פעולה נקבל את מיקום ההכנסה , זמןO(m)אזי העלות הכללית של הסדרה היא

אינטואיציהפעולות זולות – כשיש הרבה "חופש" בעץפעולות יקרות – כשאין "חופש" בעץ 2-3מה מסמל "חופש" בעץ? צמתים בדרגה

יקר

Page 8: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

הוכחה – נקרא לרמת ה"חופש" בעץslack נגדיר פונקצית פוטנציאל על פיslack

אם איןslackהפוטנציאל גבוה – אם איןslack ילדים4 בצומת – יש

:פונקצית הפוטנציאלΦ(D)=#vertices of degree 4

Φ=1

Page 9: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

הוכחהנצטרך להוכיח שני דברים

בהתחלה ואי-שלילית בכל שלב0פ' הפוטנציאל 1.

cost(op)+ΔΦ≤O(1) מתקיים: opלכל פעולה 2.1ברור נוכיח כי כל פעולה עולה 2עבור O(1)+k כאשר k

שמתבצעות.splitמס' פעולות ה-

Page 10: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

הוכחה כלsplit 3 וצומת דרגה 2 לצומת דרגה 4 מפצל צומת לכן, כל פעולתsplit כמעט( מורידה את הפוטנציאל(

1ב--הsplit לשני צמתים 0 הראשון, על עלה, מפצל צומת

0מדרגה -הsplit האחרון מפצל צומת v 2 לשני צמתים )4 מדרגה

– אין שינוי פוטנציאל4( אך אביו עלול להשתנות לדרגה 3ו-

:לכןΔΦ≤-(k-2)cost(op)+ΔΦ=O(1)

Page 11: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

?2-3האם זה נכון לעצי עבור כל סדרת פעולות 2-4ניתן להראות כי בעצי

insert-ו delete עלות ,amortized נשארת O(1) לפעולה

2-3האם הדבר נכון לעצי ? מלא, אם נבצע סדרת פעולות 2-3הדבר לא נכון, בעץ

insert-ו delete של אותו אבר, כל הפעולות יהיו יקרות לפעולה!O(logn)ולכן

Page 12: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

?2-3האם זה נכון לעצי

Page 13: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

תרגיל ,)הראו כי בשינויים קלים למבנה עץ בינארי )מאוזן

O(logk) בגודלו, בזמן kניתן למצוא את האבר ה-

50

30

20 40

2510 35 45

5 15 3932

1 6 1912

22 29

31 32 37 39

4941

בגודלו(4 )האבר ה-19מצא את

Page 14: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

תרגיל ,)הראו כי בשינויים קלים למבנה עץ בינארי )מאוזן

O(logk) בגודלו, בזמן kניתן למצוא את האבר ה-

50

30

20 40

2510 35 45

5 15 3932

1 6 1912

22 29

31 32 37 39

4941

בגודלו(4 )האבר ה-19מצא את

Page 15: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

תרגיל ,)הראו כי בשינויים קלים למבנה עץ בינארי )מאוזן

O(logk) בגודלו, בזמן kניתן למצוא את האבר ה-

50

30

20 40

2510 35 45

5 15 3932

1 6 1912

22 29

31 32 37 39

4941

בגודלו(4 )האבר ה-19מצא את

Page 16: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

תרגיל ,)הראו כי בשינויים קלים למבנה עץ בינארי )מאוזן

O(logk) בגודלו, בזמן kניתן למצוא את האבר ה-

50

30

20 40

2510 35 45

5 15 3932

1 6 1912

22 29

31 32 37 39

4941

בגודלו(4 )האבר ה-19מצא את

Page 17: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

תרגיל ,)הראו כי בשינויים קלים למבנה עץ בינארי )מאוזן

O(logk) בגודלו, בזמן kניתן למצוא את האבר ה- פתרון: נניח עץAVL בעל nצמתים

p )מצביע לעלה השמאלי ביותר )קטן While (p!=root) do

pp.parent If (p.key>x) then

x is found in left sub-tree so search there

End while We got to the root so perform regular find

Max. O(logk) iterations

O(k) elements in sub-tree O(logk) search

Page 18: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

)שיעורי בית(4תרגיל Suppose that we start from an empty Red-Black tree, and that

we perform n insert operations, where n > 1. Prove that we necessarily end up with a Red-Black tree which has at least one red vertex.

Assume that we are dealing with a Red-Black tree that stores its elements at the leaves.

(Hint: One way to prove this is: (1) prove that the second insert operation creates a red node; (2) then prove that for any insert operation, if there is a red node before applying it, then there is also a red node after applying it. Note that there may be other ways to prove the claim.)

Page 19: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

פתרון

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

בנים שחורים2הופכים עלה לצומת פנימי אדום עם אם אין הפרה של החוקים, אזי בוודאות יש צומת אדום אם יש הפרה, זו הפרה של החוק האדום ונפתור ע"י אחד מחמשת

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

Page 20: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

z

y

x

A B

C D E

z

y

x

A B

C D E

z

y

x

B C

A D E

===>

(1)

(2)

y

x

B C

A D E

===>

, אך בשביל מקרה זה חייבים 1 – מספר צמתים אדומים קטן ב-1,2מקרים לאחר הפעולה2 צמתים אדומים ולכן יישארו לפחות 3להיות לפחות

פתרון

Page 21: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

z

y

x

A B

C D E

y

zx

A B C

z

y

x

B C

A D E

===>

(3)

(4)

x

B

x

B===>

w

D E

w

(5)===>

w zy

A B C

D E

w

x

z

y

x

A BC D E

w

- יש שינוי צבע סימטרי ולא 4,5מקרים משתנה מס' הצמתים האדומים

1 – מספר צמתים אדומים קטן ב-3מקרה בתחילת 2חייבים להיות לפחות

הפעולה

פתרון

Page 22: תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות

שלום וביי ביי