אלגוריתמים - Algorithms

‫סמסטר ב' תשע"ג‬
‫אלגוריתמים‬
‫תרגיל בית ‪ – 3‬להגשה עד ‪ 21‬למאי‬
‫הנחיה כללית‪ :‬בכל שאלה בה אתם מציגים אלגוריתם‪ ,‬יש להוכיח נכונות ולנתח את זמן הריצה‪ .‬ניתן להסתמך על‬
‫טענות שהוכחו בכיתה‪.‬‬
‫‪ .1‬הוכיחו או הפריכו‪ :‬עפ"מ המתקבל ע"י הרצת ‪ Prim‬על גרף קשיר ולא מכוון ‪ G‬מצומת ‪ s‬הוא עץ מסלולים‬
‫קצרים ביותר מ‪ s -‬ב‪. G -‬‬
‫‪ .2‬נתונים גרף קשיר ולא מכוון ) ‪ G  (V , E‬ועץ פורש מינימאלי ‪ T‬של ‪ . G‬מוסיפים ל‪ G -‬צומת חדש‬
‫‪, v‬קשתות מ‪ v -‬לחלק מצמתי ‪ V‬ומשקלים עבור קשתות אלה‪ .‬תארו אלגוריתם למציאת עץ פורש מינימאלי של‬
‫הגרף החדש‪ ,‬שרץ בזמן )| ‪. O(| V | log | V‬‬
‫‪ .3‬נתון גרף קשיר ולא מכוון ) ‪. G  (V , E‬‬
‫א‪ .‬תארו אלגוריתם יעיל אשר בודק האם ל‪ G -‬יש לפחות שני עצים פורשים מינימאליים שונים‪.‬‬
‫ב‪ .‬תארו אלגוריתם יעיל אשר בודק האם ל‪ G -‬יש לפחות שלושה עצים פורשים מינימאליים שונים‪.‬‬
‫‪ .4‬נתונים גרף מכוון ) ‪, G  (V , E‬זוג צמתים ‪ , s, t  V‬וצמד פונקציות משקל ‪ . w1 , w2 : E  R‬ידוע שאין‬
‫בגרף מעגלים שליליים‪ ,‬הן ביחס ל‪ w1 -‬והן ביחס ל‪ . w2 -‬תארו אלגוריתם יעיל אשר מוצא‪ ,‬מבין המסלולים‬
‫הקלים ביותר מ‪ s -‬ל‪ t -‬ביחס ל‪ w1 -‬מסלול קל ביותר מ‪ s -‬ל‪ t -‬ביחס ל‪. w2 -‬‬
‫‪ .5‬נתונים גרף מכוון ) ‪ , G  (V , E‬צומת ‪ , s V‬ופונקציות משקל ‪ . w : E  R‬ידוע שאין מעגלים שליליים‬
‫בגרף‪ .‬פרופסור ג' רוצה לחשב את המסלולים הקלים ביותר מ‪ , s -‬ועולה במוחו רעיון‪ :‬אם משקל הקשת הקלה‬
‫ביותר שלילי‪ ,‬והוא ‪ ,  a‬נוסיף ‪ a‬למשקלי כל הקשתות ונריץ את האלגוריתם של ‪ .Dijkstra‬הוכיחו או הפריכו‬
‫את נכונות הרעיון של פרופסור ג'‪.‬‬
‫‪ .6‬נתון גרף מכוון עם משקלים אי‪-‬שליליים על הקשתות‪ ,‬זוג קודקודים ‪ s, t  V‬וקשת ‪. e  E‬‬
‫א‪ .‬תארו אלג' יעיל הבודק האם כל מסלול קל ביותר מ‪ s -‬ל‪ t -‬עובר דרך ‪. e‬‬
‫ב‪ .‬תארו אלג' יעיל הבודק האם קיים מסלול קל ביותר מ‪ s -‬ל‪ t -‬שעובר דרך ‪. e‬‬
‫‪ .7‬נתונים גרף מכוון ) ‪, G  (V , E‬זוג צמתים ‪ , s, t  V‬ופונקצית משקל טבעית (ז"א שהטווח שלה הוא המספרים‬
‫‪‬‬
‫הטבעיים) ואי‪-‬שלילית ‪ . w : E  Z‬תארו אלגוריתם אשר מוצא את ההילוך הקל ביותר מ‪ s -‬ל‪ t -‬מבין‬
‫המסלולים שמשקלם מתחלק ‪( .3‬ההילוך עשוי לחזור על צמתים ו‪/‬או קשתות)‪.‬‬
‫‪ .8‬נתונים גרף מכוון ) ‪ , G  (V , E‬פונקצית משקל אי‪-‬שלילית )‪ w : E  [0, ‬וצומת ‪ . s V‬תארו אלגוריתם‬
‫יעיל אשר מוצא לכל צומת ‪ v V‬את המעגל הקל ביותר אשר מכיל גם את ‪ v‬וגם את ‪ , s‬כאשר קשת עשויה‬
‫להשתתף באותו מעגל מספר פעמים‪.‬‬
‫‪.9‬‬
‫א‪ .‬נתונים גרף מכוון ) ‪ G  (V , E‬עם משקל חיובי )‪ w(e‬עבור כל קשת ‪ , e  E‬חוץ מקשת אחת‬
‫‪ , e '  E‬שמשקלה שלילי‪ ,‬ומקור ‪ . s V‬ידוע שאין מעגלים שליליים בגרף‪ .‬תארו אלגוריתם‬
‫שימצא‪ ,‬בזמן )| ‪ , O (| E |  | V | log | V‬לכל צומת ‪ , v V‬את משקל המסילה המכוונת הקלה‬
‫ביותר מ‪ s -‬ל‪. v -‬‬
‫ב‪ .‬נתונים גרף מכוון ) ‪ G  (V , E‬עם משקל חיובי )‪ w(e‬עבור כל קשת ‪ , e  E‬חוץ מ‪ 7 -‬קשתות‪,‬‬
‫שמשקלן שלילי‪ ,‬ומקור ‪ . s V‬ידוע שאין מעגלים שליליים בגרף‪ .‬תארו אלגוריתם שימצא‪ ,‬בזמן‬
‫)| ‪ , O(| E |  | V | log | V‬לכל צומת ‪ , v V‬את משקל המסילה המכוונת הקלה ביותר מ‪s -‬‬
‫ל‪. v -‬‬