בעיות פערGap Problems
אנחנו לא יודעים להכריע )בזמן פולינומיאלי( האם קיים פתרון מדויק לבעית אופטימיזציה
)למשל - בבעית הקליקה,
?(α האם קיימת קליקה בגודל
בין המקרים בהם קיים פתרון להפרידאנחנו כן יודעים מדויק, לבין המקרים בהם לא קיים אפילו פתרון מקורב
)למשל, להפריד בין:
αא. קיימת קליקה בגודל
...()α)1-εב. לא קיימת קליקה בגודל
בעיות פערGap Problems
:Gap[a,b]מכונה שפותרת בעיית
bתחזיר 'כן' אם הפתרון המקסימלי ≤ •
aתחזיר 'לא' אם הפתרון המקסימלי > •
?b ל-aומה אם הפתרון המקסימלי בין •
בעיות פערGap Problems
:Gap[a,b]מכונה שפותרת בעיית
bתחזיר 'כן' אם הפתרון המקסימלי ≤ •
aתחזיר 'לא' אם הפתרון המקסימלי > •
...b ל-aומה אם הפתרון המקסימלי בין •
aכל פלט של המכונה הוא חוקי עבור פתרון מקסימלי בין bל-
a bM)x( = Reject M)x( = Accept
M)x( = ? f)x(
חתך מקסימליMaximum Cut
G
α = 11/13
-שלמה...NP היא MAXCUTבעית
:gap-MAXCUT[α/2,α]נראה אלגוריתם לפתרון של
מפריד בין:
αא. קיים חתך בגודל
α/2ב. לא קיים חתך בגודל
gap-MAXCUT[α/2,α]
ניתוח:
-צביעה של הגרף...2אם היינו מגרילים
:e=)u,v(ϵEלכל קשת
Pr[eϵCUT] = Pr[Color)u(≠Color)v(] = 1/2
לכן אנחנו מצפים לקבל לפחות חצי מהקשתות בגרף...
G
gap-MAXCUT[α/2,α]
ניתוח:
-צביעה של הגרף...2אם היינו מגרילים
:e=)u,v(ϵEלכל קשת
Pr[eϵCUT] = Pr[Color)u(≠Color)v(] = 1/2
ז"א:
E[|CUT|] = eE Pr[eϵCUT] / |E| = 1/2
ולכן:
|MAXCUT| ≥ E[|CUT|] = 1/2
G
gap-MAXCUT[α/2,α]
אלגוריתם להכרעת
gap-MAXCUT[α/2,α]:
α ≥ 1קבל אמ"ם
נאותות – אם קבלנו, אז:
α/2 ≥ 1/2 ≥ |MAXCUT|
שלמות – אם דחינו, אז:
|MAXCUT| ≥ 1 < α
G
צביעת צמתיםVertex Coloring
)Chromatic Number(
Gקלט: גרף בלתי מכוון
מינימליk עם Vפלט: צביעה של כך שאין צמתים שכנים עם אותו צבע
Gk=2
קירוב לצביעת צמתיםgap-kCOL
-קשה, ולכן היינו NPבעיית צביעת הצמתים היא רוצים לקרב אותה...
gap-kCOL[3,4]נתבונן בבעית הפער:
קירוב לצביעת צמתיםgap-kCOL
-שלמה, ולכן היינו רוצים NPבעיית צביעת הצמתים היא לקרב אותה, אבל...
-קירוב לבעיית צביעת (3/4)מסקנה: חישוב -שלמהNPצמתים היא בעיה
-NP)למעשה, גם קירובים הרבה יותר חלשים הם קשים...(
קירוב לצביעת צמתיםgap-kCOL[3,3√|V|]
בזמן פולינומיאלי.gap-kCOL[3,3√|V|]המטרה: לפתור את |V√|3-צביע בעזרת 3האמצעי: נראה אלגוריתם לצביעה של גרף
צבעים.
√|3, האלגוריתם יצליח לצבוע אותו ב--צביע3אם הגרף שלמות: V|.צבעים, ולכן נקבל
√|3, לא נצליח לצבוע אותו ב--צביע|V√|3אם הגרף אינו נאותות: V|.צבעים, ולכן נדחה
...)O)|V|0.2111הערה: קיים אלגוריתם הצובע ב-
קירוב לצביעת צמתיםgap-kCOL[3,3√|V|]
היא דרגת המקסימום של גרף d: אם 1אלגוריתם עזר G נצבע את G-ב d+1:צבעים בזמן פולינומיאלי
נעבור על כל הצמתים ובכל פעם שנגיע לצמת נצבע אותו בצבע ששונה מהשכנים הצבועים שלו.
d צבעים, ולכל היותר d+1תמיד קיים צבע כזה כי יש שכנים.
קירוב לצביעת צמתיםgap-kCOL[3,3√|V|]
-צביע נצבע את כל 3 בגרף v: עבור צמת 2אלגוריתם עזר צבעים בזמן פולינומיאלי:2 ב-vהשכנים של
.vנתבונן בגרף המושרה ע"י קבוצת השכנים של
(.v-צביע )כי אף אחד מהם לא צבוע בצבע של 2זהו גרף
.u מאחד הצמתים BFSבכל רכיב קשירות נבצע
נצבע את השכבות הזוגיות בכחול, ואת האי-זוגיות בירוק.
קירוב לצביעת צמתיםgap-kCOL[3,3√|V|]
.u מאחד הצמתים BFSבכל רכיב קשירות נבצע
נצבע את השכבות הזוגיות בכחול, ואת האי-זוגיות בירוק.
uuv
קירוב לצביעת צמתיםgap-kCOL[3,3√|V|]
צבעים:|V√|3 בעזרת G-צביע 3אלגוריתם לצביעת גרף
לולאה:
.1 בעזרת אלג' עזר G צבע את |degmax)G(<√|Vאם 1.
.|deg )v(≥√|V המקיים: vאחרת, קיים צמת 2.
צבעים )חדשים( בעזרת אלג' 2נצבע את כל שכניו ב- ונסיר אותם מהגרף.2עזר
קירוב לצביעת צמתיםgap-kCOL[3,3√|V|]
לולאה:
.1 בעזרת אלג' עזר G צבע את |degmax)G(<√|Vאם 1.
.|deg )v(≥√|V המקיים: vאחרת, קיים צמת 2.
2 צבעים )חדשים( בעזרת אלג' עזר 2נצבע את כל שכניו ב-ונסיר אותם מהגרף.
ניתוח:
צבעים|V√| – מתבצע לכל היותר פעם אחת - 1שלב
צבעים|V√|2 פעמים - |V√| – מתבצע לכל היותר 2שלב
צבעים|V√|3סה"כ -
SUBSET-SUM
Instance: A multi-set of numbers denoted S and a target number t.
Problem: To decide if there exists a subset YS, s.t yYy=t.
SUBSET-SUM
דוגמא:•
S = {3,4,8,8,11}, t = 19:
Y = {3,8,8}… 3+8+8 = 19
:2דוגמא •
S = {3,4,8,8,11}, t = 13:
SUBSET-SUM
דוגמא:•S = {3,4,8,8,11}, t = 19:Y = {3,8,8}… 3+8+8 = 19
:2דוגמא •S = {3,4,8,8,11}, t = 13:
לא בשפה(>S,t>אין פתרון )
gap-Subset Sum[)1-ε(,1]
-שלמהNP היא Subset Sumבעיית ה-•
נרצה למצוא פתרון מקורב•yYy = t במקום:–
t ≥ yYy ≥ t(ε-1) נדרוש:–
gap-Subset Sum[)1-ε(,1]
yYy = t במקום:–
t ≥ yYy ≥ t(ε-1) נדרוש:–
:1דוגמא
S = {3,4,8,8,11}, t = 19, ε = 0.1
)0.9(19 ≥ )11+3+4( ≥ 19
gap-Subset Sum[)1-ε(,1]
yYy = t במקום:–t ≥ yYy ≥ t(ε-1) נדרוש:–
:1דוגמא S = {3,4,8,8,11}, t = 19, ε = 0.1)0.9(19 ≥ )11+3+4( ≥ 19
:2דוגמא S = {3,4,8,8,11}, t = 13, ε = 0.1)0.9(13 ≥ )8+4( ≥ 13
gap-Subset Sum[)1-ε(,1]
yYy = t במקום:–t ≥ yYy ≥ t(ε-1) נדרוש:–
:1דוגמא S = {3,4,8,8,11}, t = 19, ε = 0.1)0.9(19 ≥ )11+3+4( ≥ 19
:2דוגמא S = {3,4,8,8,11}, t = 13, ε = 0.1)0.9(13 ≥ )8+4( ≥ 13
:3דוגמא S = {3,4,8,8,11}, t = 10, ε = 0.1...אין פתרון
gap-Subset Sum[)1-ε(,1]
yYy = t במקום:–
t ≥ yYy ≥ t(ε-1) נדרוש:–
רעיון: במקום להסתכל על כל תתי-הסכומים, נתעלם -קרובים...|εt/|Sמתתי סכומים שהם
gap-Subset Sum[)1-ε(,1]
R}→0{אתחול: :S ב-xלולאה - לכל
.1x+R union R→R
Rמיין את 2.
.3min)R(→y
:R ב-zלולאה - לכל 4.:y+εt/|S| < z ≥ tאם –
z→yאחרת:
R\{z} → R)max)Rהחזר את
רעיון: במקום להסתכל על כל תתי-הסכומים, נתעלם
-|εt/|Sמתתי סכומים שהם קרובים...
R קבוצת תתי סכומים של – S
לולאה חיצונית – בכל איטרציה נאפשר הוספת
משתנה אחד לכל תת-סכום
לולאה פנימית – ננפה את תתי-סכומים קרובים מדי כדי לשמור על מספר קטן
של אפשרויות
gap-Subset Sum[)1-ε(,1]
R}→0{אתחול: :S ב-xלולאה - לכל
.1x+R union R→R
Rמיין את 2.
.3min)R(→y
:R ב-zלולאה - לכל 4.:y+εt/|S| < z ≥ tאם –
z→yאחרת:
R\{z} → R)max)Rהחזר את
דוגמת הרצה:S = {3,4,8,8,11}, t = 19, ε = 0.3
εt/|S| = )0.3(*)19(/5 = 1.14 < 1
gap-Subset Sum[)1-ε(,1]
R}→0{אתחול: :S ב-xלולאה - לכל
.1x+R union R→R
Rמיין את 2.
.3min)R(→y
:R ב-zלולאה - לכל 4.:y+εt/|S| < z ≥ tאם –
z→yאחרת:
R\{z} → R)max)Rהחזר את
דוגמת הרצה:S = {3,4,8,8,11}, t = 19, ε = 0.3
R = {0}
gap-Subset Sum[)1-ε(,1]
R}→0{אתחול: :S ב-xלולאה - לכל
.1x+R union R→R
Rמיין את 2.
.3min)R(→y
:R ב-zלולאה - לכל 4.:y+εt/|S| < z ≥ tאם –
z→yאחרת:
R\{z} → R)max)Rהחזר את
דוגמת הרצה:S = {3,4,8,8,11}, t = 19, ε = 0.3
R = {0}
R = {0,3}
gap-Subset Sum[)1-ε(,1]
R}→0{אתחול: :S ב-xלולאה - לכל
.1x+R union R→R
Rמיין את 2.
.3min)R(→y
:R ב-zלולאה - לכל 4.:y+εt/|S| < z ≥ tאם –
z→yאחרת:
R\{z} → R)max)Rהחזר את
דוגמת הרצה:S = {3,4,8,8,11}, t = 19, ε = 0.3
R = {0}
R = {0,3}
R = {0,3,4,7}
gap-Subset Sum[)1-ε(,1]
R}→0{אתחול: :S ב-xלולאה - לכל
.1x+R union R→R
Rמיין את 2.
.3min)R(→y
:R ב-zלולאה - לכל 4.:y+εt/|S| < z ≥ tאם –
z→yאחרת:
R\{z} → R)max)Rהחזר את
דוגמת הרצה:S = {3,4,8,8,11}, t = 19, ε = 0.3
R = {0}
R = {0,3}
R = {0,3,4,7}
R = {0,3,7,8,11,15}
gap-Subset Sum[)1-ε(,1]
R}→0{אתחול: :S ב-xלולאה - לכל
.1x+R union R→R
Rמיין את 2.
.3min)R(→y
:R ב-zלולאה - לכל 4.:y+εt/|S| < z ≥ tאם –
z→yאחרת:
R\{z} → R)max)Rהחזר את
דוגמת הרצה:S = {3,4,8,8,11}, t = 19, ε = 0.3
R = {0}
R = {0,3}
R = {0,3,4,7}
R = {0,3,7,8,11,15}
R = {0,3,7,8,11,11,15,15,19,23}
gap-Subset Sum[)1-ε(,1]
R}→0{אתחול: :S ב-xלולאה - לכל
.1x+R union R→R
Rמיין את 2.
.3min)R(→y
:R ב-zלולאה - לכל 4.:y+εt/|S| < z ≥ tאם –
z→yאחרת:
R\{z} → R)max)Rהחזר את
דוגמת הרצה:S = {3,4,8,8,11}, t = 19, ε = 0.3
R = {0}
R = {0,3}
R = {0,3,4,7}
R = {0,3,7,8,11,15}
R = {0,3,7,8,11,11,15,15,19,23}
R = {0,3,7,11,11,14,15,18,19,22,… 26,30}
)0.7(19 ≥ 18 = 3 + 4 + 11 ≥ 19
gap-Subset Sum[)1-ε(,1]
R}→0{אתחול: :S ב-xלולאה - לכל
.1x+R union R→R
Rמיין את 2.
.3min)R(→y
:R ב-zלולאה - לכל 4.:y+εt/|S| < z ≥ tאם –
z→yאחרת:
R\{z} → R)max)Rהחזר את
סיבוכיות:
gap-Subset Sum[)1-ε(,1]
R}→0{אתחול: :S ב-xלולאה - לכל
.1x+R union R→R
Rמיין את 2.
.3min)R(→y
:R ב-zלולאה - לכל 4.:y+εt/|S| < z ≥ tאם –
z→yאחרת:
R\{z} → R)max)Rהחזר את
סיבוכיות: )מיזוג...()|R – O)|Rמיון של
)|O)|Rלולאה פנימית –
)R – O)|S|/εגודל מקסימלי של
gap-Subset Sum[)1-ε(,1]
R}→0{אתחול: :S ב-xלולאה - לכל
.1x+R union R→R
Rמיין את 2.
.3min)R(→y
:R ב-zלולאה - לכל 4.:y+εt/|S| < z ≥ tאם –
z→yאחרת:
R\{z} → R)max)Rהחזר את
סיבוכיות: )מיזוג...()|R – O)|Rמיון של
)|O)|Rלולאה פנימית –
)R – O)|S|/εגודל מקסימלי של
| איטרציותSלולאה חיצונית – |
)O)|S|2/εסה"כ –
gap-Subset Sum[)1-ε(,1]
(yYy = t המקיימת Yשלמות: )אם קיימת קבוצה
i עליהם עברנו ב-Y את קבוצת האיברים מ-)Y)iנסמן ב-האיטרציות הראשונות של הלולאה החיצונית
המקיים:R ב-z קיים iטענת האינדוקציה – באיטרציה ה- yY)i(y-iεt/|S| ≥ z ≥ yY)i(y
gap-Subset Sum[)1-ε(,1]
(yYy = t המקיימת Yשלמות: )אם קיימת קבוצה
המקיים:R ב-z קיים iטענת האינדוקציה – באיטרציה ה- yY)i(y-iεt/|S| ≥ z ≥ yY)i(y
בסיס – טריוויאלי
gap-Subset Sum[)1-ε(,1]
(yYy = t המקיימת Yשלמות: )אם קיימת קבוצה
המקיים:R ב-z קיים iטענת האינדוקציה – באיטרציה ה- yY)i(y-iεt/|S| ≥ z ≥ yY)i(y
צעד – ,Y שייך ל-xא. אם המשתנה הנוכחי
R נמצא ב-z=zi-1+xלפני הניפוי yY)i(y-)i-1(εt/|S| ≥ z ≥ yY)i(yומאינדוקציה מתקיים ש-
, אז מתקיים:’z הוצא בניפוי בגלל קרבה ל-zאם yY)i(y-)i-1(εt/|S| ≥ z ≥ z’+εt/|S| ≥ yY)i(y+εt/|S|
yY)i(y-iεt/|S| ≥ z-εt/|S| ≥ z’ ≥ yY)i(y
gap-Subset Sum[)1-ε(,1]
(yYy = t המקיימת Yשלמות: )אם קיימת קבוצה
המקיים:R ב-z קיים iטענת האינדוקציה – באיטרציה ה- yY)i(y-iεt/|S| ≥ z ≥ yY)i(y
צעד – ,Y לא שייך ל-xב. אם המשתנה הנוכחי
R נמצא ב-z=zi-1לפני הניפוי yY)i(y-)i-1(εt/|S| ≥ z ≥ yY)i(yומאינדוקציה מתקיים ש-
, אז מתקיים:’z הוצא בניפוי בגלל קרבה ל-zאם yY)i(y-)i-1(εt/|S| ≥ z ≥ z’+εt/|S| ≥ yY)i(y+εt/|S|
yY)i(y-iεt/|S| ≥ z-εt/|S| ≥ z’ ≥ yY)i(y
Top Related