View
224
Download
5
Embed Size (px)
Citation preview
2-3 trees
דרגות 3-2עצי ועצי
Chapter 19: B trees (381 – 397)
Chapter 15: Augmenting data structures (281 – 290)
חומר קריאה לשיעור זה
Lecture5 of Geiger & Itai’s slide brochure
www.cs.technion.ac.il/~dang/courseDS
Geiger & Itai, 2001
cs,Technion
22-3 trees
32-3 trees
עצים מאוזנים
מהווים דוגמא נוספת לעצים מאוזנים. 3-2 הם עצים מאוזנים. עצי AVLעצי
h(T) = O(log n) .אםמאוזנת : משפחת עצים נקראת תזכורת
הוא עץ בו כל העלים נמצאים באותה רמה ולכל 3-2: עץ הגדרה בנים.3 או 2צומת פנימי
דוגמאות:
cs,Technion
42-3 trees
3-2גובה עצי
מקיים הגובה log3L h log2Lלפיכך
h = (log L)כלומר:
: עבור חסם תחתון נבחן את העץ הבינרי השלם הנוצר ע"י סילוק כל נימוק. 3-2ילד שלישי מעץ
עבור חסם עליון נבחן את העץ הטרינרי השלם הנוצר ע"י הוספת ילד שלישי בכל מקום בו חסר ילד. 3-2לעץ
סולק נתון 3-2עץ שלישי ילד כל בו עץ הוסף חסר ילד כל בו עץ
הוא גובה העץ.h כאשר 2h L 3h מקיים3-2 בעץ Lמספר העלים
52-3 trees
כמבני נתונים3-2עצי
מהמפתח הגדול ממש רשום אינדקס בודד בצומת פנימי בעל שני בנים• למפתח המינימלי קטן או שווההמקסימלי בתת העץ ששורשו הוא הבן הראשון וכן
בתת העץ ששורשו הוא הבן השני.
רשומים שני אינדקסים. אינדקס ראשון גדול בצומת פנימי בעל שלושה בנים•ממש מהמפתחות בעץ הראשון וקטן שווה מהמפתחות בעץ בשני ואינדקס שני
גדול ממש מהמפתחות בעץ השני וקטן שווה מהמפתחות בעץ השלישי.
כל עלה מכיל מפתח ורשומה (רק המפתחות נראים בציור).
אינדקסים המשמשים לחיפוש d-1 בנים ויש בו d 3 2לכל צמת פנימי הרשומה הנחוצה.
7 16
5… 8 11 17…
2 5 7 8 12 16 19
cs,Technion
62-3 trees
3-2 בעץ kחיפוש מפתח
:v קטן מהמפתח השני של kאו ש- רק שני בניםvאם ל-אחרת, •
.vהמשך את החיפוש בבן השני של •
.vאחרת, המשך את החיפוש בבן השלישי של •
השורש של העץvיהי •
.v נמצא בצומת k, בדוק אם עלהvאם •
.v האינדקס המינימלי בצומת k1יהי •
:k < k1אם •
.vהמשך את החיפוש בבן הראשון של •
1 2 3 10 14 22 25 27
2 ,3 14 25 ,27
10 ,20:14חפש
cs,Technion
72-3 trees
3-2 לעץ kהכנסת מפתח
לעץ איבר :3-2בהכנסת הבאות הפעולות מבוצעות
החדש 1. המפתח של מקומו .kחיפוש
ערכו 2. וקביעת החדש למקום עלה .kהכנסת
יהיו 3. צומת שלכל כך העץ . 3או 2תיקון החיפוש במסלול נעשה התיקון בנים. kשל נבצע רמה בכל השורש ועד שנוסף . O(1)מהעלה פעולות
" דוגמאות י ע תחילה זאת .נמחיש
82-3 trees
3-2דוגמא להכנסה לעץ
1 2 3 10 14 22 25 27
2 ,3 14 25 ,27
10 ,227הכנס
1 2 3 10 14 22 25 27
2 ,3 ,7 14 25 ,27
10 ,22
7
: ראשון צעד
1 2 3 10 14 22 25 27
2 14 25 ,27
3 ,10 ,22
7
7
: שני צעד
1 2 3 10 14 22 25 27
2 14 25 ,27
7
7
3 22
10: שלישי צעד
92-3 trees
)חלק א( kאלגוריתם להכנסת מפתח
נמצא, סיימו.k. אם T בעץ kחפשו את 1.
k הצומת האחרון, שאינו עלה, במסלול החיפוש. (לו f, יהי T אינו ב-kאם 2. נמצא).k היה אבי העלה שבו f אזי T היה ב-
תוך שמירת הסדר בין f, והוסיפו אותו כבן ל-kצרו עלה חדש בעל מפתח 3. ארבעה בנים). f. (יתכן וכעת יש ל-fהבנים של
. (יתכן וכעת יש שלושה 2-3 אינדקס נוסף בהתאם לכללי עץ fהוסיפו ל-4.אינדקסים).
1 2 3 10 14 22 25 27
2 ,3 14 25 ,27
10 ,227הכנס
1 2 3 10 14 22 25 27
2 ,3 ,7 14 25 ,27
10 ,22
7
102-3 trees
v f .5
, וחבר אותם כבנים v1,v2 לשני צמתים v ארבעה בנים, פצל את v. אם ל-6
. 5 תוך שמירה על סדר האינדקסים הנכון. חזרו לצעד v של צומת fלאב וסיימו. אם v1,v2 אשר בניו הם הצמתים f הוא שורש צרו צומת vאם
שלושה בנים סיימו.vל-
1 2 3 10 14 22 25 27
2 14 25 ,27
3 ,10 ,22
7
7
1 2 3 10 14 22 25 27
2 14 25 ,27
7
7
3 22
10
)חלק ב( kאלגוריתם להכנסת מפתח
112-3 trees
)במלואו(kאלגוריתם להכנסת מפתח
נמצא, סיימו.k. אם T בעץ kחפשו את 1.
k הצומת האחרון, שאינו עלה, במסלול החיפוש. (לו f, יהי T אינו ב-kאם 2. נמצא).k היה אבי העלה שבו f אזי Tהיה ב-
תוך שמירת הסדר בין f, והוסיפו אותו כבן ל-kצרו עלה חדש בעל מפתח 3. ארבעה בנים). f. (יתכן וכעת יש ל-fהבנים של
. (יתכן וכעת יש שלושה 2-3 אינדקס נוסף בהתאם לכללי עץ fהוסיפו ל-4.אינדקסים).
v f .5
, וחבר אותם כבנים v1,v2 לשני צמתים v ארבעה בנים, פצל את v. אם ל-6
. 5 תוך שמירה על סדר האינדקסים הנכון. חזרו לצעד v של צומת fלאב v וסיימו. אם ל-v1,v2 אשר בניו הם הצמתים f הוא שורש צרו צומת vאם
שלושה בנים סיימו.
122-3 trees
פרוט לפיצול צומת
root
T1
k1 k2 k3v
T2
T3
T4
k1 k3
k2
T1T2
T3T4
k2
k1 k2 k3
v2 v3v4
v1 v2
v3 v4v1
k1 k3
v v1 v2
cs,Technion
132-3 trees
תכונות תהליך ההוספה
שינויים מתבצעים רק על המסלול מהשורש לעלה שהוסף.•
בזמן פיצול של צומת, הצמתים החדשים הם בעומק שווה לצומת שפוצל.•
.כל הצמתים את העומק של 1בפיצול השורש נוצר צומת חדש שמגדיל ב-•
: לאחר הוספה, כל העלים באותו עומק מסקנה. בנים3-2ולכל צומת פנימי
cs,Technion
142-3 trees
3-2 מעץ kהוצאת מפתח
מבוצעות הפעולות הבאות:3-2בהוצאת איבר לעץ
.kחיפוש מקומו של המפתח 1.
.kהוצאת העלה שערכו 2.
בנים. התיקון נעשה במסלול 3 או 2תיקון העץ כך שלכל צומת יהיו 3. O(1) מהעלה שהוצא ועד השורש. בכל רמה נבצע kהחיפוש של
פעולות.
.נמחיש זאת תחילה ע"י דוגמאות
152-3 trees
)השאלה בלבד(3-2דוגמא להוצאה מעץ
1 2 3 10 14 15 16 19
2 14 16 ,19
7
7
3 15
10:14הוצא
1 2 3 10 15 16 19
2 14 16 ,19
7
7
3 15
10: צומת סלק
1 2 3 10 15 16 19
2 14 16 ,19
7
7
3 15
10: מהאח השאל
1 2 3 10 15 16 19
2 14 19
7
7
3 16
10: ההורים ערכי תקן
162-3 trees
)שני איחודים(3-2דוגמא להוצאה מעץ
1 2 3 10 14 15 16 19
2 14 16 ,19
7
7
3 15
10:3הוצא
1 2 10 14 16 19
14 16 ,19
7
2 ,7
3 15
10אחד הורים:
15
1 2 10 14
14
7
2 ,7
10אחד הורים:
10 ,15
16 19
16 ,19
15 1 2 10 14
14
7
2 ,7
10 ,15
16 19
16 ,19
15
סלק שורש מיותר:
172-3 trees
3-2 מעץ kאלגוריתם להוצאת מפתח לא נמצא בעץ, סיים.k בעץ. אם kחפש את 1.
אביו. f ויהי k העלה שערכו lיהי 2.
מהעץ. lסלק את 3.
.4v f
וסיים. v הוא שורש ולו בן בודד, סלק את v אם 5.
נותר רק בן בודד). v בנים, סיים. (המשך אם ל-2 נותרו vאם ל-6.
יש אח ולו שלושה בנים, שאל בן מהאח וסיים. v אם ל-מקרה א:7.
v עם אח קרוב ל- v אם לכל אח רק שני בנים, אחד את מקרה ב: .vההורה של f ועדכן את המפתחות בצומת שנוצר. יהי
.4. חזור לצעד 8
182-3 trees
פרוט פעולת האיחוד בזמן הוצאה
מקרה א:
v v1 v2 v3 v4
k1 k3, k4
k2
v1 v2 v3 v4
k2 k4
k3
ff f1f1
מקרה ב:
v1 v2 v3
k2, k3
k4
v1
k1
k2, k4
v2 v3
k3
v4vv4
ff f1
cs,Technion
192-3 trees
ניתוח פעולת ההוצאה
צעדי O(h) דורשת 3-2כל פעולת חיפוש, הכנסה, והוצאה מעץ הוא גובה העץ.hחישוב כאשר
פעולות.O(1) בכל רמה מבוצעות :נימוק
הוא מספר המפתחות.L כאשר O(log L)נזכור שגובה העץ הוא
צעדי חישוב. O(log L)כלומר כל פעולה לוקחת
העומק של שום צומת אינו משתנה בזמן ההוצאה מלבד בסוף התהליך, :נכונות הצמתים קטן באחד. לפיכך כל כלבמידה ומתבטל השורש, ואז העומק של
בנים ונשמר 3-2העלים נותרים בעומק שווה. כמו כן לכל צומת פנימי נותרים יחס הסדר בין האינדקסים כנדרש.
202-3 trees
AVL ועצי 3-2השוואה בין עצי
.O(log n)שני סוגי העצים תומכים בפעולות המילון בזמן
.רק בעלים רשומות נשמרות 3-2בעץ
.גם בצמתים פנימיים וגם בעלים רשומות נשמרות AVLבעץ
ולהפך. הבחירה AVL ישנה כנראה אנלוגיה גם בעץ 3-2לכל שימוש בעץ בין השניים אינה עקרונית.
cs,Technion
212-3 trees
(mמדרגה ) +Bעצי הוא עץ המקיים את התכונות הבאות:m מדרגה +B: עץ הגדרה
כל הערכים נמצאים בעלים, כל העלים באותה רמה.1.
. m/2 c m בנים כאשר cלכל צומת פנימי, פרט אולי לשורש, יש 2.
. c m 2לשורש מספר הבנים הוא
אינדקסים ממוינים לפי גודלם. c-1 בנים יש cלצומת פנימי בעל .3
וגדולים או שווים לאינדקס ה- i קטנים מהאינדקס ה-iכל המפתחות הנמצאים בתת העץ ה- i-1 .כל המפתחות הנמצאים בתת העץ הימני ביותר גדולים או שווים לאינדקס האחרון .
. 3-2חיפוש/הכנסה/הוצאה כמו בעץ
, הכנסה או הוצאה של העלה המבוקש, ותיקון העץ m בדרגה +Bכלומר, חיפוש לפי הגדרת עץ +Bמהעלה ועד השורש במסלול החיפוש כך שמספר הבנים בכל רמה יעמוד בדרישות עץ
. mבדרגה
.3-2דוגמא: עץ
1 2 3 10 14 22 25 27
2 ,3 14 25 ,27
10 ,22
2 ,3
7
.4-3-2דוגמא: עץ ,7
cs,Technion
222-3 trees
לעץ להכנסה 4מדרגה +Bדוגמא
הכנס: 5דוגמא
51 2 3 10 14 22 25 27
2 ,3 ,7 14 25 ,27
10 ,22
7
10 14 22 25 27
14 25 ,27
5 ,10 ,22
5 7
7
1 2 3
2 ,3
. בודד פיצול נדרש זה במקרה
) מעלה ) כלפי מעוגל הצמתים מחציתבענף
) מטה ) כלפי מעוגל ומחצית השמאליבימני.
. בתרגול נוספות דוגמאות
232-3 trees
לעץ עיקרי +Bשימוש
הזיכרון ברוב המחשבים מורכב משני חלקים:
) , מהיר, ללא חלקים נעים, שבב סיליקון בודד.RAMזיכרון ראשי (
), גדול, איטי יחסית לזיכרון הראשי, בעל חלקים מכניים.DISKזיכרון משני (
כאשר לא ניתן להכניס את כל מבנה הנתונים לזיכרון הראשי יש לפנות מדי פעם לזיכרון המשני לקבלת אינפורמציה נוספת. זמן הגישה לזיכרון המשני גבוה מאד יחסית לזמן
הקריאה של הנתונים והקריאה נעשית בבלוקים.1…1000
1…1000 1…1000
מדרגה גבוהה מספקים פתרון: Bעצי +
בכל צומת פנימי נשמור כמספר הבלוקים של מפתחות שניתן לשמור בזיכרון הראשי.
מספר הגישות לזיכרון המשני תלוי במספר הרמות (וזהו מספר נמוך) הנקבע ע"י גודל הבלוק.
המחיר יהיה בסקירה ליניארית של המפתחות על מנת לקבוע את המשך החיפוש בעץ (תוך שימוש בזיכרון המהיר).
242-3 trees
בע נוסף חיפוש צימידע
: לממש עץ חיפוש התומך, בנוסף לפעולות הכנסה/הוצאה/חיפוש, גם I בעיה הוא גובה העץ.height כאשר O(height) בעץ בזמןxבמציאת האינדקס של
בשימושים רבים של עצי חיפוש כדאי לשמור אינפורמציה נוספת בכל צומת. אינפורמציה זו משמשת להאצת פעולות נוספות הנדרשות מעצי חיפוש. למשל:
הוא מקומו בסדרה ממוינת של S בקבוצה xשל מספר )rank (: האינדקס הגדרה.2 הוא { 8,2,7,5} בקבוצה 5. האינדקס של Sאיברי
: לממש עץ חיפוש התומך במציאת סכום האיברים בעץ הקטנים מ – IIבעיה x בזמן O(height).
בבעיות אלה יש לשמור מידע נוסף בעץ החיפוש כדי שנוכל לממש את הפעולות הנוספות ביעילות הנדרשת. אנו ניראה מהו המידע שיש לשמור וכיצד להשתמש
בו. אח"כ ניראה כיצד לעדכן את המידע הנוסף כך שהעץ יישאר מאוזן.
252-3 trees
( Rank Tree)עץ דרגות
עץ דרגות הוא דוגמא למבנה נתונים בו בכל צומת נשמר מידע על תת-העץ שמתחתיו. סוג המידע השמור תלוי בבעיה אותה יש לפתור.
נשמרים מספר v הוא עץ בו בכל צומת)rank tree( עץ דרגות הגדרה: .vהצמתים בתת-העץ ששורשו
O(height). דורשת זמן rank בעץ דרגות מציאת ה-מסקנה:
.x: לממש עץ חיפוש התומך במציאת האינדקס של איבר Iבעיה
rank(x) = 2 + 1+ 1 + |{z, y}| = 6
rank(x) = w n(w) + | {v path | v < x}|
נספור את מספר הצמתים על מסלול בתוספת x הקטנים מ- xהחיפוש ל-
הערכים השמורים בבניהם השמאליים.
)w בן שמאלי של צומת במסלול path (
(מלבד המפתח) v: נשמר בכל צומתפתרון. v בתת-העץ ששורשו מספר הצמתים את
. n(v)נסמן מספר זה ב-
1 1
z
y
x1
2
1 3
5
8
1 1 1
3 26
15
cs,Technion
262-3 trees
נוסף למידע דוגמא: לממש עץ חיפוש התומך במציאת סכום האיברים בעץ הקטנים II בעיה.O(height) בזמן xמ –
נסכם את הערכים על מסלול x הקטנים מ- xהחיפוש ל-
בתוספת הערכים השמורים בבניהם השמאליים.
מחושב 17: סכום הקטן מ- דוגמא 55) = 0 +15) + (10+9) + (8+13(ע"י
את סכום ערכי הצמתים v: נשמר בכל צומתפתרון S(v).נסמן מספר זה ב- .vבתת-העץ ששורשו
5
2 6
8
10
9 20
15 252 6
13
15 25
9 60
79
100
.O(height) זמן הריצה הוא מסקנה:
? O(log n)כיצד נבטיח זמן ריצה
272-3 trees
(Rank tree)עץ דרגות מאוזן
x של איבר ) rank( התומך במציאת האינדקס מאוזן: לממש עץ חיפוש בעיה בעץ).x (כמה צמתים נמצאים לפני O(log n)בזמן
(מלבד v. נשמור בכל צומתAVL: לדוגמא באמצעות עץ פתרון.vהמפתח) את מספר הצמתים בתת-העץ ששורשו
. n(v) זיכרו שסימנו מספר זה ב-
בזמן גלגול. n(v) נעדכן את
cs,Technion
282-3 trees
עדכון השדה הנוסף
? n(v)כיצד נעדכן את
באחד לאורך המסלול מהשורש לעלה שהוכנס. n(v)בזמן הכנסה נגדיל את נעדכן כך:LLבזמן גלגול נעדכן את השדה כנדרש. למשל בגלגול
AL
BR
AR
h
B
A
v
AR
AL
BRv
B
An(B)
n(A)
n(1) n(2)n(3)
n(A)+n(3)+1
n(1)
n(2) n(3)
n(B)-n(A)+n(2)
cs,Technion
292-3 trees
דוגמא נוספת
? AVL המפתחות בכל תת-עץ של עץ סכוםכיצד נעדכן את
בזמן הכנסה נגדיל את הסכום לאורך המסלול מהשורש לעלה שהוכנס. נעדכן כך:LLבזמן גלגול נעדכן את השדה כנדרש. למשל בגלגול
AL
BR
AR
h
B
A
v
AR
AL
BRv
B
AS(B)
S(A)
S(1) S(2)S(3)
S(A)+S(3)+B
S(1)
S(2) S(3)
S(B)-S(A)+S(2)
: מהו העדכון בגלגולים האחרים ? כיצד מבצעים זאת תרגיל בית ? 3-2עם עץ