אלגוריתמים חמדניים Flashcards
מהו הסכימה הכללית להוכחת אופטימליות של אלגוריתם חמדן?
What is the first thing that Prim’s algorithm does?
“Prim = Pick a node”
Prim’s algorithm randomely picks a starting node.
How does Prim’s algorithm for finding an MST decide what edge to add to the final tree?
Prim’s algorithm is gready. Therefore it will choose the smallest edge that connects the curently existing tree to an unvisited node.
Assuming that Prim’s algorithm randomely picked the starting node to be node “A”.
What will be the next edge added to the MST?
הגדירו עץ.
הגדירו:
עץ פורש.
הגדירו:
עץ פורש מינימלי - MST.
מהו זמן הריצה של אלגוריתם פרים?
(בעזרת שימוש במבנה הנתונים: ערימת פיבונצ’י - שלא נלמד בקורס, ניתן להגיע לזמן ריצה יעיל של):
(O(E + VlogV.
מה עושה אלגוריתם קרוסקל?
אלגוריתם קורסקל מוצא עץ פורש מינימלי.
איך עובד אלגוריתם קרוסקל?
אלגוריתם קרוסקל מוצא עץ פורש מינימלי.
האלגוריתם בוחר בכל שלב את הצלע בעלת המשקל הנמוך ביותר שמחברת בין קודקודים שאינם שניהם כבר בעץ.
מהו זמן הריצה של אלגוריתם קרוסקל?
זמן הריצה של קרוסקל הוא:
(O(E log V.
הגדירו:
חתך בגרף.
בנוגע לעצים פורשים,
מה אפשר לדעת על צלע בעל משקל מינימלי בחתך כלשהו בגרף?
הצלע המינימלי בחתך מוכל בעפ”מ.
מה מקיימת כל קשת בעפ”מ?
כל קשת בעפ”מ היא בעלת משקל מינימלי בחתך שהיא מגדירה.
מהו האלגוריתם הגנרי למציאת עפ”מ?
מה היה הפתרון של בעיית התאמת הסטודנטים לקרואסונים?
אלו 3 אלגוריתמים חמדניים ראינו למצאית עפ”מ:
אלגוריתמים למציאת עפ”מ:
- האלגוריתם הגנרי (אדום-כחול).
- קרוסקל.
- פרים.
הגדירו:
מטרואיד.
מהו המטרואיד הגרפי?
מה הקלט והפלט של האלגוריתם החמדן של המטרואיד?
איך עובד האלגוריתם החמדן הגנרי של המטרואיד?
נניח שלפנינו בעיית אופטימיזציה. מתי נוכל להשתמש באלגוריתם הגנרי החמדן (בלי להוכיח את נכונותו)?
נוכל להשתמש באלגוריתם הגנרי החמדן במידה ו:
הצלחנו להוכיח שיש בבעיית האופטימיזיציה מטרואיד.
נניח שיש לנו מטרואיד <m></m>
<p>איך נוכל למצוא תת קבוצה מקסימלית של I?</p>
</m>
נשתמש באלגוריתם הגנרי החמדן של המטרואיד.
יהי מטרואיד
נניח שהאלגוריתם החמדן הגנרי מחזיר קבוצה A.
האם ייתכן שב I קיימת קבוצה שמכילה יותר איברים מאשר בA?
לא.
איך נשתמש באלגוריתם החמדן כדי למצוא קבוצה בגודל מקסימלי עם משקל מינימלי?
מה צריך לעשות כשאנו רוצים להשתמש באלגוריתם החמדן הגנרי על בעיה מסויימת?
הגדירו:
התאמה בגרף דו צדדי
התאמה בגרף דו צדדי היא תת קבוצה של צלעות שאין בה 2 צלעות שנוגעות באותו קודקוד.
בהינתן גרף דו צדדי, איך נמצא התאמה מקסימלית = התאמה של מספר רב ככל האפשר של קודקודים?
נגדיר את מטרואיד השידוכים.
האלגוריתם החמדן (=אלגוריתם המטרואיד) ייתן את התוצאה הרצויה כי:
אנו ניתן לכל קודקוד את בL את המשקל 1.
כל הקבוצות ב I הן קבוצות של התאמות, ואלגוריתם המטרואיד מחזיר תמיד קבוצה בגודל מקסימלי.
נניח שיש לנו קבוצה של איברים עם משקלים, ואנו רוצים למצוא את תת קבוצה מגודל k של איברים בעל משקל מקסימלי.
מה נעשה?

נגדיר מטרואיד <m> כך ש:</m>
S היא קבוצת כל האיברים.
I היא קבוצת תתי הקבוצות עד גודל k.
נמיין את אברי S לפי משקלם מהגדול לקטן, ונריץ את אלגוריתם המטרואיד.
נכון או לא נכון:
כל עץ פורש מינימלי הוא גם עץ פורש שבו משקל הקשת המקסימלית בו הוא מינימלי (= “עץ ממזער קשת מקסימלית”)
נכון.
איך נוכיח שגרף הוא עץ פורש מינימלי?
נשים לב שצריך להוכיח שהגרף הוא:
- עץ, כלומר קשיר וחסר מעלים.
- פורש.
- מינימלי.