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

Post on 22-Dec-2015

252 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

4תרגול

21/3/2007

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

ליאור שפירא

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

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

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

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

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

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

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

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

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

לפי הגדרה זו(

)אופציה ב'(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)

)אופציה ב'(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)

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

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

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

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

יקר

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

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

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

Φ=1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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מצא את

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

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מצא את

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

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מצא את

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

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מצא את

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

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

)שיעורי בית(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.)

פתרון

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

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

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

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להיות לפחות

פתרון

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חייבים להיות לפחות

הפעולה

פתרון

שלום וביי ביי

top related