Presentation is loading. Please wait.

Presentation is loading. Please wait.

Amirrub@cs - אמיר רובינשטיין Union-Find 1. הגדרה: מבנה נתונים, אשר בהינתן אוסף איברים המחולקים לקבוצות זרות, מאפשר ביצוע הפעולות הבאות: Find(i) – החזר.

Similar presentations


Presentation on theme: "Amirrub@cs - אמיר רובינשטיין Union-Find 1. הגדרה: מבנה נתונים, אשר בהינתן אוסף איברים המחולקים לקבוצות זרות, מאפשר ביצוע הפעולות הבאות: Find(i) – החזר."— Presentation transcript:

1 amirrub@cs - אמיר רובינשטיין
Union-Find 1. הגדרה: מבנה נתונים, אשר בהינתן אוסף איברים המחולקים לקבוצות זרות, מאפשר ביצוע הפעולות הבאות: Find(i) – החזר את שם הקבוצה אליה שייך i. Union(p,q) – בצע איחוד של הקבוצות p ו- q, החזר את שם הקבוצה החדשה (p ו- q נהרסות). בהתחלה כל איבר מהווה קבוצה בפני עצמו. 2. מימושים: א. מערך ב. רשימות מקושרות ג. עצים הפוכים - אמיר רובינשטיין

2 amirrub@cs - אמיר רובינשטיין
א. מערך נקצה מערך בגודל N (מספר האיברים הכולל). בכניסה ה- i נחזיק את שם הקבוצה של האיבר ה- i. מימוש הפעולות סיבוכיות Find(i) – Union(p,q) - A O(1) החזר A[i]. O(N) נניח שמאחדים תחת השם p אז נעבור על כל המערך ובכל מקום שרשום q נרשום p. - אמיר רובינשטיין

3 amirrub@cs - אמיר רובינשטיין
ב. רשימות מקושרות מימוש הפעולות סיבוכיות Find(i) – Union(p,q) - O(1) ממערך האיברים גש לרשומת האיבר ברשימה המקושרת המתאימה. ממנה קיים מצביע לקבוצה אליה שייך האיבר. ממערך הקבוצות גש לכותרות של הקבוצות. עבור על איברי הקבוצה הקטנה יותר והפנה את מצביעיהם לכותרת של הקבוצה הגדולה. אחד את 2 הרשימות המקושרות, עדכן את גודל הקבוצה הגדולה, וסלק את כותרת הקבוצה הקטנה והמצביע אליה ממערך הקבוצות. O(N) סיבוכיות m פעולות הינה O(mlogN) (בהרצאות) לכן סיבוכיות ממוצעת (amortized) של פעולה בודדת הינה O(logN) - אמיר רובינשטיין

4 amirrub@cs - אמיר רובינשטיין
ג. עצים הפוכים לכל קבוצה ניצור עץ הפוך (בנים מצביעים לאבא) מכל האיברים שלה. שורש כל עץ הפוך יצביע על רשומה עם שם הקבוצה ומספר איבריה (כותרת). בנוסף נחזיק מערכי מיפוי לקבוצות ולאיברים כמו מקודם. - אמיר רובינשטיין

5 amirrub@cs - אמיר רובינשטיין
מימוש הפעולות סיבוכיות Find(i) – Union(p,q) - O(logN) ממערך האיברים גש לרשומת האיבר בעץ, וטפס לשורש. חזור שוב על הטיפוס, ובדרך העבר את כל הצמתים במסלול העלייה להיות בנים של השורש. כווץ מסלולים ממערך הקבוצות גש לשורשי העצים. הפנה את שורש הקבוצה הקטנה להצביע על שורשה של הגדולה עדכן את גודל הקבוצה המתקבלת, וסלק את כותרת הקבוצה הקטנה והמצביע אליה ממערך הקבוצות. O(1) איחוד לפי דרגה סיבוכיות m פעולות הינה O(mlog*N) (בהרצאות) לכן סיבוכיות ממוצעת (amortized) של פעולה בודדת הינה O(log*N) - אמיר רובינשטיין

6 amirrub@cs - אמיר רובינשטיין
לאחר ביצוע find(0): דוגמא: - אמיר רובינשטיין

7 amirrub@cs - אמיר רובינשטיין
סיכום סיבוכיות Find(x) Union(p,q) amortized מערך O(1) O(N) רשימות מקושרות O(logN) עצים הפוכים O(log*N) - אמיר רובינשטיין

8 amirrub@cs - אמיר רובינשטיין
תרגילים ! נתון אילן יוחסין (קבוע) הממומש כעץ הפוך מכוון. בהתחלה כל הצמתים "חיים". יש לממש ביעילות את הפעולות הבאות: Kill(x) – בהינתן מצביע x לצומת בעץ, יש "להרוג" את הצומת אסור "להרוג" את השורש. Master(x) – יש להחזיר את האב הקדמון הצעיר ביותר של x שעדיין חי אם x חי, אז Master(x) = x. פתרון: מבנה נתונים: נשתמש במבנה נתונים Union-Find הקבוצה y תכיל את כל הצמתים עבורם Master(x) = y. אתחול: כל איבר יהווה קבוצה בפני עצמו (כולם חיים). פעולות: Master(x) – הפעולה שקולה לביצוע Find(x). Kill(x) – בצע: - zMaster(y) (y הוא אביו של x). - Union(z, x) תחת השם z. - אמיר רובינשטיין

9 amirrub@cs - אמיר רובינשטיין
דוגמא: פתרון: מבנה נתונים: נשתמש במבנה נתונים Union-Find. הקבוצה y תכיל את כל הצמתים עבורם Master(x) = y. אתחול: כל איבר יהווה קבוצה בפני עצמו (כולם חיים). פעולות: Master(x) – הפעולה שקולה לביצוע Find(x). Kill(x) – בצע: - zMaster(y) (y הוא אביו של x). - Union(z, x) תחת השם z. סיבוכיות הפתרון: עבור m פעולות Master-Kill מתבצעות O(m) פעולות Union-Find. לכן במימוש ע"י עצים הפוכים סיבוכיות של m פעולות היא O(mlog*n). סיבוכיות משוערכת של פעולה בודדת היא O(log*n). - אמיר רובינשטיין

10 amirrub@cs - אמיר רובינשטיין
2) דרוש מבנה נתונים המאפשר לתחזק קבוצת n איברים שונים ולבצע עליה את הפעולות הבאות בסיבוכיות מינימלית: Make_EQ(x,y) – קובעת שקילות האיברים x,y. Is_EQ(x,y) – בודקת האם x,y שקולים. בהתחלה אין אף זוג איברים x,y המקיימים x~y. תזכורת: יחס שקילות (נסמנו ~) מוגדר כיחס המקיים את התכונות הבאות: רפלקסיביות: סימטריות: טרנזיטיביות: קבוצת שקילות מוגדרת באופן הבא: יחס שקילות על קבוצה A מחלק אותה לקבוצות שקילות זרות שאיחודן = A. - אמיר רובינשטיין

11 amirrub@cs - אמיר רובינשטיין
פתרון: נשתמש במבנה UF כאשר בהתחלה כל איבר יהווה קבוצה בפני עצמו. Make_EQ(x,y) – If (Find(x) != Find(y) ) Union (Find(x), Find(y)) Is_EQ(x,y) – // x~y ↔ Find(x)=Find(y) Return (Find(x) == Find(y)) סיבוכיות: Make_EQ ו- Is_EQ דורשות מספר קבוע של פעולות Union/Find, לכן הסיבוכיות שלהן היא O(log*n) בממוצע. - אמיר רובינשטיין


Download ppt "Amirrub@cs - אמיר רובינשטיין Union-Find 1. הגדרה: מבנה נתונים, אשר בהינתן אוסף איברים המחולקים לקבוצות זרות, מאפשר ביצוע הפעולות הבאות: Find(i) – החזר."

Similar presentations


Ads by Google