Transcript 2SAT is NL

2SAT is NL-Complete
‫‪2SAT ∈ NL‬‬
‫• הבחנה‪ :‬כל פסוקית )‪ (a ∨ b‬שקולה לפסוקיות גרירה‬
‫)‪(¬a→b), (¬b→a‬‬
‫‪¬b‬‬
‫• נגדיר גרף גרירות‪:‬‬
‫– צמת לכל ליטרל‬
‫– ‪ 2‬קשתות לכל פסוקית‪:‬‬
‫)‪(a ∨ b‬‬
‫)‪(¬a→b), (¬b→a‬‬
‫‪a‬‬
‫‪c‬‬
‫‪¬c‬‬
‫‪¬a‬‬
‫‪b‬‬
‫‪2SAT ∈ NL‬‬
‫– צמת לכל ליטרל‬
‫– ‪ 2‬קשתות לכל פסוקית‪(¬a→b), (¬b→a) :‬‬
‫• הבחנה‪ :1‬קשת מ‪ a-‬ל‪ ⇔ b-‬קשת מ‪ ¬b-‬ל‪¬a-‬‬
‫ולכן‪ ,‬מסלול מ‪ a-‬ל‪ ⇔ b-‬מסלול מ‪ ¬b-‬ל‪¬a-‬‬
‫‪¬b‬‬
‫• הבחנה‪ :2‬אם קיים מסלול מ‪ a-‬ל‪b-‬‬
‫אז ‪ a‬גורר את ‪b‬‬
‫‪a‬‬
‫‪c‬‬
‫‪¬c‬‬
‫‪¬a‬‬
‫‪b‬‬
‫‪¬b‬‬
‫‪2SAT ∈ NL‬‬
‫‪a‬‬
‫‪c‬‬
‫‪¬c‬‬
‫• משפט‪ ϕ :‬לא ספיקה אמ"ם‬
‫קיים ‪ x‬כך שיש מסלול מ‪ x-‬ל‪ ¬x-‬ומ‪ ¬x-‬ל‪x-‬‬
‫‪¬a‬‬
‫• הוכחה בנפנוף ידיים‪:‬‬
‫– אם קיים מסלול מ‪ x-‬ל‪ ¬x-‬ומ‪ ¬x-‬ל‪ ,x-‬אז ‪ x‬גורר את ‪¬x‬‬
‫ולהיפך – סתירה!‬
‫– אם קיים מסלול רק מ‪ x-‬ל‪ ¬x-‬נציב ‪x=F‬‬
‫(ולהיפך אם קיים מסלול מ‪ ¬x-‬ל‪)x-‬‬
‫– נציב ‪ T‬לכל הליטרלים ש‪ ¬x-‬גורר‬
‫‪b‬‬
‫‪¬b‬‬
‫‪2SAT ∈ NL‬‬
‫‪a‬‬
‫‪c‬‬
‫‪¬c‬‬
‫‪¬a‬‬
‫• הוכחה בנפנוף ידיים‪:‬‬
‫‪b‬‬
‫– אם קיים מסלול רק מ‪ x-‬ל‪ ¬x-‬נציב ‪x=F‬‬
‫(ולהיפך אם קיים מסלול מ‪ ¬x-‬ל‪)x-‬‬
‫– נציב ‪ T‬לכל הליטרלים ש‪ ¬x-‬גורר‬
‫– אם הגענו לסתירה‪:‬‬
‫‪y → ¬y → x‬‬
‫‪z → ¬z → ¬x‬‬
‫אזי‬
‫‪y → ¬y → x → z → ¬z → ¬x‬‬
‫סתירה!‬
‫‪¬b‬‬
‫‪2SAT ∈ NL‬‬
‫‪a‬‬
‫‪c‬‬
‫‪¬c‬‬
‫‪¬a‬‬
‫– משפט‪ ϕ :‬לא ספיקה אמ"ם‬
‫קיים ‪ x‬כך שיש מסלול מ‪ x-‬ל‪ ¬x-‬ומ‪ ¬x-‬ל‪x-‬‬
‫– עד ל‪-2SAT-‬משלים‪:‬‬
‫‪ x‬ועדים למסלולים מ‪ x-‬ל‪ ¬x-‬ומ‪ ¬x-‬ל‪x-‬‬
‫– מוודא מריץ פעמיים את ‪ Mst-CONN‬ומקבל אמ"ם‬
‫‪ Mst-CONN‬קבל את ‪ 2‬המסלולים‬
‫– ‪2SAT ∈ NL ⇐ 2SAT ∈ coNL‬‬
‫‪b‬‬
‫‪st-non-CONN ≤L 2SAT‬‬
‫הרדוקציה חייבת‬
‫לעבוד לכל גרף‬
‫‪¬b‬‬
‫• נסיון ‪:1‬‬
‫‪a‬‬
‫– נקח גרף גרירות‬
‫– נחשב את הפסוק המתאים‬
‫– הפסוק שקבלנו ספיק‬
‫אמ"ם אין מסלול מ‪ x-‬ל‪¬x-‬‬
‫ומ‪ ¬x-‬ל‪x-‬‬
‫בבעיה‬
‫המקורית‬
‫מותר מסלול‬
‫מ‪ t-‬ל‪s-‬‬
‫‪c‬‬
‫לכל ‪ ,x‬אבל‬
‫אנחנו רוצים‬
‫מ‪ s-‬ל‪t-‬‬
‫‪¬c‬‬
‫‪¬a‬‬
‫‪b‬‬
‫‪st-non-CONN ≤L 2SAT‬‬
‫הבחנה‪ :‬אין מסלול ⇔ קיים חתך‬
‫‪t‬‬
‫• היינו רוצים פסוק ‪ 2SAT‬שיגיד‪:‬‬
‫"אין קשתות מאדום לירוק"‬
‫• רדוקציה‪:‬‬
‫– לכל קשת )‪ (a→b‬נתאים פסוקית )‪(a ∨ ¬b‬‬
‫– כדי לוודא ש‪ s-‬אדום ו‪ t-‬ירוק‪ ,‬נוסיף פסוקיות‬
‫)‪ (¬s ∨ ¬s‬ו‪(t ∨ t)-‬‬
‫‪s‬‬
‫‪st-non-CONN ≤L 2SAT‬‬
‫‪t‬‬
‫– לכל קשת )‪ (a→b‬נתאים פסוקית )‪(a ∨ ¬b‬‬
‫– נוסיף פסוקיות )‪ (¬s ∨ ¬s‬ו‪(t ∨ t)-‬‬
‫• שלמות‪:‬‬
‫– אם לא קיים מסלול מ‪ s-‬ל‪t-‬‬
‫⇐ קיים חתך כך שאין אף קשת מאף אדום לירוק‬
‫⇐ ההשמה ‪ F‬לכל האדומים ו‪ T-‬לכל הירוקים מספקת את‬
‫הפסוק‬
‫‪s‬‬
‫‪st-non-CONN ≤L 2SAT‬‬
‫‪t‬‬
‫– לכל קשת )‪ (a→b‬נתאים פסוקית )‪(a ∨ ¬b‬‬
‫– נוסיף פסוקיות )‪ (¬s ∨ ¬s‬ו‪(t ∨ t)-‬‬
‫• נאותות‪:‬‬
‫)‪(s=v0, v1, …, vl=t‬‬
‫– אם קיים מסלול מ‪ s-‬ל‪:t-‬‬
‫– לכל השמה מספקת קיים ‪ i>0‬מינימלי כך ש‪vi=T-‬‬
‫• אם לא קיים ‪ ,i‬אז )‪ (t ∨ t‬לא מסתפקת‬
‫• אם ‪ i=0‬אז )‪ (¬s ∨ ¬s‬לא מסתפקת‬
‫⇐ קבלנו סתירה ל‪(vi-1 ∨ ¬vi)-‬‬
‫⇐ לא קיימת השמה שמספקת את הפסוק‬
‫‪s‬‬
‫‪st-non-CONN ≤L 2SAT‬‬
‫‪t‬‬
‫– לכל קשת )‪ (a→b‬נתאים פסוקית )‪(a ∨ ¬b‬‬
‫– נוסיף פסוקיות )‪ (¬s ∨ ¬s‬ו‪(t ∨ t)-‬‬
‫• סיבוכיות‪:‬‬
‫– מעבר על כל הקשתות בגרף – זכרון עבודה לוגריתמי‬
‫‪s‬‬