06 שיעור – שיטות אלגוריתמיות

‫‪Kiril Solovey‬‬
‫שיטות אלגוריתמיות – שיעור ‪06‬‬
‫הערה‪ :‬קיים קודקוד שמקיים ‪. ∈ 0,1⁄2 , 1‬‬
‫‪ – Weighted Vertex Cover‬המשך‬
‫טענה‪-2 :‬קירוב הוא חסם הדוק‪.‬‬
‫הוכחה‪ .‬נבחר מעגל עם ‪ 2
− 1‬קודקודים‪ .‬הפתרון האופטימלי הוא ‪ ,n‬אבל ה ‪ LP‬עלול לתת משקל‬
‫‪ 1⁄2‬עבור כל הקודקודים‪ ,‬ולכן נבחר את כל הקודקודים‪ .‬כלומר יחס הקרוב כאן הוא ‪.2‬‬
‫‪Max-SAT‬‬
‫נתונה נוסחת ‪ ,CNF‬מורכבת מאוסף הסגרים‪ .‬כל הסגר ‪ OR‬של תוים‪ .‬כל תו‪ ,‬משתנה או שלילתו‪.‬‬
‫בעיית ההחלטה‪ :‬רוצים לבדוק אם קיימת השמה מספקת‪ ,‬כך שכל ההסגרים מתקיימים‪ .‬בעיה זו היא‬
‫‪ .NPComplete‬אם בכל הסגר יש לכל היותר ‪ 2‬תווים בעיה זו שייכת ל ‪.P‬‬
‫בעיית אופטימיזציה‪ :‬לכל הסגר יש משקל ‪ .‬רוצים למצוא השמה שמספקת מקסימום משקל‪ .‬בעייה‬
‫זו יותר קשה מבעיית ההחלטה‪ .‬כמו כן ‪ Max-2SAT‬היא גם ‪.NPHard‬‬
‫נתן השמה מקרית לכל המשתנים‪ .‬באופן בלתי תלוי כל משתנה יהיה ‪ T‬בהסתברות ‪ 1⁄2‬ו ‪F‬‬
‫בהסתברות ‪.1⁄2‬‬
‫אלגוריתם קירוב רנדומי‬
‫נסמן נוסחה ב ‪ ,c‬ההסגר ה ‪ j‬יקרא ‪ ,‬השמה ‪.‬‬
‫נרצה לחשב את משקל ההשמה‪:‬‬
‫ ‪, = ,‬‬
‫‬
‫כאשר ‪ ,‬הוא אינדיקטור‪ ,‬האם ההסגר ‪ j‬מסופק ע"י ‪ .‬נקח את התוחלת של הביטוי‪.‬‬
‫ ‪ , = , = ,‬‬
‫‬
‫‬
‫נשים לב ש ‪ ,‬ספיק בהסתברות ‪ 1 − 1⁄2‬כאשר מספר המשתנים ב ‪ .‬נשים לב‬
‫שערך זה מקבל ערך מינימום עבור ‪ , = 1‬כלומר ‪ .1⁄2‬לכן נקבל‪:‬‬
‫‪1‬‬
‫‪1‬‬
‫ ≥ ‪ , = 1 − ℓ #‬‬
‫‪2‬‬
‫"‪2‬‬
‫‬
‫מכיוון ש ∑ ≤ '&‪ %‬אזי קבלנו קירוב ‪.1⁄2‬‬
‫‬
‫‬
‫*‬
‫אם כל הסגר מכיל לפחות ‪ k‬תווים )שונים( אזי השמה מקרית תתן קירוב ‪.1 − +,‬‬
‫דה‪-‬רנדומיזציה‬
‫נעזר בהסתברות מותנית )בתוחלת מותנית(‪.‬‬
‫‪1‬‬
‫‪1‬‬
‫*‪- , . = -/0 |* = 0, .2* + -/0 |* = 1, .2‬‬
‫‪2‬‬
‫‪2‬‬
‫אם נדע לחשב את התוחלות המותנות אזי נוכל לבחור השמה עבור * כך שהתוחלת המותנת רק‬
‫תגדל‪.‬‬
‫אם נדע לחשב תוחלת אזי נציב משתנה משתנה‪ .‬נרצה לחשב את כאשר חלק מהמשתנים‬
‫‪ * , … , 5‬קיבלו ערכים ו ‪ 56* , … , .‬מקריים‪ .‬מספיק לחשב את התוחלת של משתנה אינדיקטור לכל‬
‫הסגר‪.‬‬
‫מתקיים‬
‫‪Kiril Solovey‬‬
‫דוגמא‪:‬‬
‫‪* = 0, … , 5 = 1,‬‬
‫‪56* , … , . ∈ 0,1‬‬
‫‪1,‬‬
‫‪89 ;
< ;9 =ℎ< ?@A8@BC<D 8D D@98D98<E‬‬
‫‪G.‬‬
‫‪1‬‬
‫‪=7‬‬
‫=<‪A ?@A8@BC<D @A< ;= D‬‬
‫‪1− F,‬‬
‫‪2‬‬
‫‪* ∨ + ∨ ̅K ̅* ∨ ̅+ ∨ ̅K * ∨ + ∨ K‬‬
‫כל המשקלים הם ‪ .1‬בתוחלת מובטח שנקבל‪:‬‬
‫‪1 3 7 7 7‬‬
‫‪7‬‬
‫‪+ + + + =3‬‬
‫‪2 4 8 8 8‬‬
‫‪8‬‬
‫נקבע ‪:* = 0‬‬
‫‪1 3‬‬
‫‪3‬‬
‫‪1+ + +1+ =4‬‬
‫‪2 4‬‬
‫‪4‬‬
‫עבור ‪:* = 1‬‬
‫‪3‬‬
‫‪3‬‬
‫‪0+1+1+ +1=3‬‬
‫‪4‬‬
‫‪4‬‬
‫לכן נבחר את ‪ .* = 0‬אם ‪ + = 0‬אז‪:‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1+1+ +1+ =4‬‬
‫‪2‬‬
‫‪2‬‬
‫אם ‪ + = 1‬אז‪:‬‬
‫בגלל שיוויון‪ ,‬לא משנה מה נבחר‪.‬‬
‫‪ ,‬‬
‫‪̅* * ∨ ̅+‬‬
‫‪1+0+1+1+1=4‬‬
‫נחזור לאלגוריתם‪ ,‬נקח נוסחה ‪ .c‬נוכל לצמצם מספר הסגרים בני משתנה אחד‪ .‬אפשר לרכז תווים‬
‫זהים לתו בודד‪ .‬תווים נגדיים נחסר ‪) P‬הקטן מבין השניים(‪.‬‬
‫* ⟹ *̅ * *̅ *‬
‫*‪K‬‬
‫‪*Q *+ R+ *S‬‬
‫‪W‬‬
‫במקרה הכללי‪ , → ′ :‬אז ‪ , , = , − P‬כלומר ‪ , = , + P‬ויש הזזה‬
‫‪X6Z‬‬
‫‪X‬‬
‫בקבוע‪ .‬במילים אחרות‪ ,‬אם ‪ Y ≤ A‬אז ‪) Y6Z ≥ A‬עבור ‪ ,(P ≥ 0‬כאשר ‪ x‬תוצאת האלגוריתם‪ ,‬ו ‪y‬‬
‫האופטימלי‪.‬‬
‫‪W‬‬
‫*‬
‫‪+‬‬
‫נגריל כל משתנה באופן בלתי תלוי‪ :‬בהסתברות ‪ < ℎ‬נגריל ‪ 5‬לכיוון שהתו שלו מופיע )אם מופיע(‪.‬‬
‫לכן ‪ , , = ℎ‬כאשר הוא משתנה בודד‪ .‬אם באורך גדול מ ‪ 2‬אז‬
‫לפיכך‪:‬‬
‫אז יחס הקירוב יהיה ‪≈ 0.618‬‬
‫‪ , ≥ 1 − ℎ ≥ 1 − ℎ+‬‬
‫ ‪ , ≥ \8
ℎ, 1 − ℎ+‬‬
‫*‪√^2‬‬
‫‪+‬‬
‫= ‪.ℎ‬‬
‫תזכורת‪ :‬אם אין הסגרים בגודל ‪ ,1‬השמה מקרית נותנת יחס קרוב ‪.3/4‬‬
‫‪ 5 ∈ 0,1‬אינדיקטור משתנה ‪ b ∈ 0,1 .i‬אינדיקטור להסגר ‪ .j‬פונ' המטרה ‪ .\@ ∑ b‬כיצד‬
‫נגדיר את האילוצים? עבור המקרה של ‪ * ∨ ̅+ ∨ K‬נבקש ‪ .b ≤ * + 1 − + + K‬במקרה‬
‫הכללי‪:‬‬
‫פתרון בעזרת תכנות לינארי‬
‫ ‪b ≤ 5 + 1 − 5‬‬
‫‪5∈c"/‬‬
‫‪5∈c"d‬‬
‫זוהי בעיה ‪-NP‬קשה‪ .‬לכן נבצע רלקסציה ונגדיר ‪ .0 ≤ 5 ≤ 1, 0 ≤ b ≤ 1‬נפתור ונקבל ‪.5 = e5‬‬
‫‪Kiril Solovey‬‬
‫נבצע עיגול‪ :‬לכל משתנה‪ ,‬באופן בלתי תלוי נגריל ‪ 5 = 1‬בהסתברות ‪ 5 = 0 ,e5‬בהסתברות ‪1 −‬‬
‫‪ .e5‬נחשב את ההסתברות הבאה‪:‬‬
‫‬
‫ ‪∑5∈c d1 − e5 + ∑5∈c"/ e5‬‬
‫‪ − b‬‬
‫"‬
‫‪j ≤k‬‬
‫‪&Af = 0g = h1 − e5 h e5 ≤ i‬‬
‫‪l‬‬
‫‬
‫‬
‫‪/‬‬
‫‪d‬‬
‫"‪5∈c‬‬
‫לכן‬
‫ ‪b‬‬
‫ ‪= 1 −‬‬
‫‬
‫‪b‬‬
‫ ‪&Af = 1g ≥ 1 − 1 −‬‬
‫‬
‫‬
‫וכמו כן‬
‫‪ , = .‬‬
‫‬
‫אם נטען ש‬
‫נקבל ש‬
‫"‪5∈c‬‬
‫ ‪b‬‬
‫‪1 − 1 − ≥ P ⋅ b‬‬
‫‬
‫'&‪ = b∗ P ≥ P b∗ = P ⋅ %&'FopqXor ≥ P ⋅ %‬‬
‫טענה‪ :‬לכל ‪ 0 ≤ b ≤ 1‬מתקיים‪:‬‬
‫ ‪b‬‬
‫‪1‬‬
‫‪1 − 1 − ≥ s1 − 1 − # t b‬‬
‫‬
‫‪uvvvvwvv‬‬
‫‪vvx‬‬
‫‬
‫‪Z,‬‬
‫הוכחה‪ :‬ב ‪ b = 0,1‬מקבלים שיוויון‪.‬‬
‫בהסתברות ‪ 1⁄2‬נפתור בעזרת ‪ LP‬ועיגול‪ .‬בהסתברות ‪ 1⁄2‬נפתור בעזרת השמה מקרית‪.‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪ = * + + = b∗ P + 1 − #‬‬
‫‪2‬‬
‫‪2‬‬
‫‪2‬‬
‫‪2‬‬
‫‪2‬‬
‫אלגוריתם משולב‬
‫‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪3‬‬
‫≥ ‪P + 1 − #‬‬
‫‪2‬‬
‫‪2‬‬
‫‪4‬‬
‫‪2‬‬
‫אם נראה ש‬
‫נקבל‬
‫צריך להראות ש‬
‫‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪3‬‬
‫‪3‬‬
‫‪ b∗ k P + 1 − #l ≥ b∗ ≥ %&'.‬‬
‫‪2‬‬
‫‪2‬‬
‫‪2‬‬
‫‪4‬‬
‫‪4‬‬
‫‬
‫‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪3‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫≤ ‪k1 − 1 − # l + 1 − # ≥ ⟺ 1 − # +‬‬
‫‪2‬‬
‫‬
‫‪2‬‬
‫‪2‬‬
‫‪4‬‬
‫‬
‫‪2‬‬
‫‪2‬‬
‫עבור ‪ = 1‬מתקיים‬
‫עבור ‪: = 2‬‬
‫‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪≥ b∗ k P + 1 − #l‬‬
‫‪2‬‬
‫‪2‬‬
‫‪2‬‬
‫‬
‫‬
‫‪1 1‬‬
‫≤‬
‫‪2 2‬‬
‫‪0+‬‬
‫‪Kiril Solovey‬‬
‫‪1 1 1‬‬
‫= ‪+‬‬
‫‪4 4 2‬‬
‫עבור גדול‪:‬‬
‫‪1 1 1‬‬
‫≤ ‪+‬‬
‫‪< 8 2‬‬
‫נתון גרף ‪ z = {,‬עם קיבולות על הקשתות ‪ .: → ℝ6‬הבקשות ‪ ,E = 1 ,D5 , =5‬נקבל ערך ‪?5‬‬
‫אם נעביר מסלול בעובי ‪ 1‬מ ‪ D5‬ל ‪.=5‬‬
‫‪Integer Multi-commodity Flow‬‬
‫פתרון פיזיבילי לכל ‪ e5 – i‬מסלול מ ‪ D5‬ל ‪ =5‬או ∅ = ‪) e5‬לא משרתים את הבקשה(‪.‬‬
‫נגדיר‬
‫| ‪ℓo = |8|< ∈ e5‬‬
‫ונדרוש ‪ .o ≥ ℓo‬ערך הפתרון הוא ‪.∑5│€ ‚∅ ?5‬‬
‫‬
‫נעשה כמה הנחות מקלות‪:‬‬
‫‪ .1‬אפשר להחליף את המסלול בזרימה מ ‪ D5‬ל ‪.=5‬‬
‫‪ .2‬אפשר להעביר שבר מהצורך ונקבל ערך בשבר המתאים‪.‬‬
‫הפכנו את הבעיה ל ‪ - o5 :LP‬כמות הזרימה מסוג ‪ i‬על קשת ‪ – 5 .e‬סה"כ זרימה מסוג ‪ .i‬פונ'‬
‫המטרה ‪ .\@ ∑5 ?5 5‬האילוצים הם‪:‬‬
‫‪o5 = 0‬‬
‫‬
‫‪ o5 ≤ o‬‬
‫ˆ‪†│o‡†,‬‬
‫‪o5 −‬‬
‫‪5‬‬
‫‬
‫ ∈ <∀‬
‫†‪†│o‡ˆ,‬‬
‫ ‪∀8∀„ ∈ { ∖ D5 , =5‬‬
‫‪ o5 − o5 = 5‬‬
‫ Š‪o‡†,‬‬
‫כמו כן ‪ .0 ≤ 5 ≤ 1 ,0 ≤ o5 ≤ 1‬נפתור מערכת זו‪.‬‬
‫†‪o‡‰ ,‬‬
‫‪∀8‬‬
‫עתה‪ ,‬את הפתרון לכל ‪ i‬נפרק את הזרימה מ ‪ D5‬ל ‪ =5‬למסלולים )לכל היותר ≥ || מסלולים(‪ .‬גרף‬
‫הזרימה הוא א‪-‬ציקלי‪.‹ = {, Œ ,‬‬
‫נקח מסלול כלשהו‪ ,‬ונוריד אותו בגרף הזרימה )כמובן עם הפחתה של הזרימה(‪ .‬לפחות אחת‬
‫מהקשתות יורדת‪.‬‬