( ) מסלולים קלים ביותר SP 7 תרגול ( ) אלגוריתם ממקור יחיד
Transcription
( ) מסלולים קלים ביותר SP 7 תרגול ( ) אלגוריתם ממקור יחיד
מסלולים קלים ביותר )(SP נתון גרף ) ,מכוון או לא מכוון( ונתונה פונקציית משקל על הקשתות → .: נסמן ב ௨או ,את משקל המסלול הקל ביותר מ ל . תרגול 7 משקל מסלול סכום משקלי הקשתות במסלול. תכונות מסלולים קלים ביותר .1מבנה אופטימלי :תת מסלול של מסלול קל ביותר הוא מסלול קל ביותר. מסלולים קלים ביותר )(Shortest Paths אחרת ,ניתן היה לשפר את ע"י החלפת תת המסלול. x v u y .2אי שוויון המשולש :לכל ∈ :, , , , , w v 1 אלגוריתמים - 1טכניון © 2 יונתן יניב מסלולים קלים ביותר ממקור יחיד )(SSSP מטרה :בהינתן ∈ ,לחשב את משקל המסלול הקל ביותר ௦מהצומת לכל ∈ . עבור צומת ∈ שאינו ישיג מ ,נסמן ∞ = .௦ .3 אתחל ௦ ← ∞ , ௦ ← 0 :לכל ≠ . .1 אם קיים מעגל במשקל שלילי אשר ישיג מ ,יהיו צמתים עבורם ∞.௦ = − מקרה פרטי :אם פונקציה קבועה וחיובית ,משקל מסלול פרופורציונלי לאורכו. אלגוריתמים - 1טכניון © אלגוריתם Dijkstra .2 הבחנה :אם אין מעגלים במשקל שלילי ,תמיד קיים מסלול קל ביותר שהוא פשוט. הכנס את כל צמתי הגרף לתור עדיפויות המסודר לפי . ௦ כל עוד )∅ ≠ ( .3.1הוצא את הצומת ∈ בעל ௦מינימלי. .3.2לכל ∈ ,בצע צעד רלקסציה: לכן ניתן לפתור מקרה זה ע"י הרצת .BFS . ௦ ← min ௦ , ௦ + , 18 נכונות :כאשר מוציאים צומת מ ,מובטח כי ௦ אלגוריתמים למציאת מסלולים קלים ביותר ממקור יחיד: .1אלגוריתם :Dijkstraרץ בסיבוכיות זמן . + log .2אלגוריתם :Bellman-Fordרץ בסיבוכיות זמן . כל מסלול אחר חייב לעבור דרך ∈ המקיים .௦ ≤ ௦ הנחת יסוד :כל המשקלים אי-שליליים. 15 10 1 s 9 15 4 28 אלגוריתמים - 1טכניון © 7 5 במידה וקיים מעגל במשקל שלילי אשר ישיג מהצומת ,האלגוריתם מוצא ומחזיר אותו. 4 12 3 סיבוכיות. + log : עובד גם כאשר יש קשתות במשקל שלילי. 7 11 הוא משקל המסלול הקל ביותר מ ל . מניח שפונקציית המשקל אי שלילית ,כלומר. ∀ ∈ , ≥ 0 : 3 u 24 9 אלגוריתמים - 1טכניון © 0 אלגוריתם Bellman-Ford תרגיל 1 נתון גרף מכוון = ,עם משקלים אי-שליליים על הקשתות ,פרט לקשת יחידה = , אתחל ௦ ← ∞ , ௦ ← 0 :לכל ≠ . .1 שמשקלה שלילי .נתון כי אין מעגלים בעלי משקל שלילי בגרף. נתון צומת ∈ .הציעו אלגוריתם המחשב את ௦לכל ∈ בזמן . + log בצע פעמים, .2 .2.1עבור על הקשתות בסדר כלשהו .לכל קשת ∈ ,בצע צעד רלקסציה: ௦ ← min ௦ , ௦ + , פתרון יהא ∈ .למסלול הקל ביותר מצומת לצומת יש שתי אפשרויות: .1המסלול לא עובר דרך הקשת . = , .2המסלול עובר דרך הקשת = ,פעם אחת בלבד. נקודה מרכזית :לאחר איטרציה אחת של שלב ) 2דוגמא משמאל( 4 הערך ௦נכון עבור כל הצמתים עבורם קיים מסלול קל 11 ביותר מ אליהם באורך .1 3 אם לא קיים מעגל שלילי ,לאחר − 1איטרציות של שלב 2 12 5 1 ∞ 0 s . ᇱ = , − לפי המבנה האופטימלי של מסלולים קלים ביותר )תת מסלול הוא מסלול קל ביותר(: ௦ = min ௦ᇱ , ௦ᇱ + + ᇱ 9 15 4 סיבוכיות. : נסמן ב ௦ᇱאת משקל המסלול הקל ביותר מצומת לצומת בגרף 10 אם קיים מעגל שלילי ,נבצע צעד רלקסציה באיטרציה ה . היות ואין מעגלים שליליים ,תמיד קיים מסלול קל ביותר שמשתמש ב פעם אחת לכל היותר. -7 -6 כל הערכים ௦יהיו נכונים. −7 9 24 5 אלגוריתמים - 1טכניון © 6 אלגוריתמים - 1טכניון © אלגוריתם תרגיל – 2בעיית ה Arbitrage קלט :גרף מכוון = ,בעל משקלים אי שליליים ,למעט קשת = ,שמשקלה שלילי. צומת ∈ . נתונים סוגי מטבעות .שערי החליפין בין כל זוג מטבעות נתונים ע"י מטריצה מסדר × , פלט :משקל מסלול קל ביותר ௦לכל ∈ . תארו אלגוריתם המכריע האם קיימת סדרה של החלפות מטבע ,המתחילה ומסתיימת באותו אחת עבור ,אחת עבור . המטבע ,כך שסדרת ההחלפות תגדיל את כמות הכסף בידכם מאותו מטבע. .3חשב לכל צומת ∈ : ௦ = min ௦ᇱ , ௦ᇱ + + ᇱ נכונות :מסלול קל ביותר מצומת לצומת יכול: .1לא להשתמש ב ,ואז משקלו . ௦ᇱ .2להגיע ל ,לעבור דרך = ,ולהמשיך ל ,במשקל המסלול הקל ביותר ב הוא הטוב מבין שתי האפשרויות. פתרון סדרת החלפות כנ"ל היא סדרה ଵ , ଶ , … , של מטבעות ,עבורה מתקיים: భ,మ ⋅ మ,య ⋅ … ⋅ ೖషభ ,ೖ ⋅ ೖ ,భ > 1 + ᇱ + . ௦ᇱ רעיון :נרצה לבצע רדוקציה לבעיית מציאת מעגל בעל משקל שלילי בגרף. סיבוכיות. + log : 7 כלומר ,תמורת יחידה אחת של מטבע ניתן לקנות ,יחידות של מטבע . .1בנה את הגרף . ᇱ = , − .2בצע שתי הרצות של אלגוריתם Dijkstraעל הגרף . ᇱ כך ש ,הוא שער החליפין בין המטבעות ., אלגוריתמים - 1טכניון © 8 נוכל להכריע האם קיים מעגל בעל משקל שלילי באמצעות אלגוריתם .Bellman-Ford אלגוריתמים - 1טכניון © פתרון אלגוריתם מטרה :לבדוק האם קיימת סדרה ଵ , ଶ , … , של מטבעות ,עבורה מתקיים: קלט :מטריצה מסדר × המייצגת שערי חליפין. פלט :האם קיימת סדרת החלפות מטבע אשר מייצרת רווח. భ,మ ⋅ మ,య ⋅ … ⋅ ೖషభ ,ೖ ⋅ ೖ ,భ > 1 נסמן לצורך נוחיות .ାଵ = ଵ ⇕ .1בנה את הגרף .2הרץ Bellman-Fordהחל מצומת שרירותי * ,אשר יסומן ב . log ೕ,ೕశభ > 0 .3במידה ו Bellman-Fordמצא מעגל שלילי ,החזר אותו. ୀଵ רדוקציה :נבנה גרף × , * הערה חשובה Bellman-Ford :מוצא האם קיים מעגל בעל משקל שלילי אשר ישיג מ . = ,בו משקל קשת , ᇱיוגדר להיות: = − log , ᇲ , ᇱ × , = עם פונקציית משקל . , ᇱ = − log , ᇲ בגרף זה ,משקל מעגל :ଵ − ଶ − ⋯ − − ଵהוא: כדי למצוא מעגל במשקל שלילי בגרף כללי ,לא מספיק להריץ Bellman-Fordמצומת כלשהו. נכונות :נובעת מהדיון בשקף הקודם. בשאלה זו ,כל קשתות הגרף קיימות ולכן כל מעגל במשקל שלילי ישיג מכל צומת. סיבוכיות :שלב ) 1בניית הגרף( לוקח ଶזמן. , ାଵ = − log ೕ ,ೕశభ שלב 2לוקח . = ⋅ ଶ = ଷ ୀଵ ୀଵ סה"כ. ଷ : 9 אלגוריתמים - 1טכניון © 10 אלגוריתמים - 1טכניון © תרגיל 3 תרגיל 3 נתונים גרף קשיר ולא מכוון = ,ופונקציית משקל .: → ℝ נתונים גרף קשיר ולא מכוון = ,ופונקציית משקל .: → ℝ .1נגדיר פונקציית משקל חדשה : → ℝבאופן הבא: = + ) מספר אי שלילי כלשהו( .2נגדיר פונקציית משקל חדשה : → ℝבאופן הבא: ∙= הוכח/הפרך :אם מסלול קל ביותר מ ל תחת ,אז הוא מסלול קל ביותר תחת . הוכח/הפרך :אם מסלול קל ביותר מ ל תחת ,אז הוא מסלול קל ביותר תחת . פתרון פתרון הטענה לא נכונה .דוגמא נגדית: הטענה נכונה .יהא מסלול קל ביותר מ ל תחת . ≤ ⋅ = ⋅ = ⋅ = = 2 2 5 ∈ 4 2 ∈ ∈ = = ⋅ = ⋅ = ⋅ ≤ ∈ொ 11 נניח בשלילה שקיים מסלול מ ל עבורו < . ) מספר אי שלילי כלשהו( ∈ொ ∈ொ אי השוויון נובע מכך ש ≤ . אלגוריתמים - 1טכניון © זו סתירה ,היות והנחנו כי < . 12 אלגוריתמים - 1טכניון ©