יחידה 5

רדוקציות ושלמות

רדוקציות many-one פולינומיאליות והלוגיקה של הוכחות קושי ושלמות.

מטרות

  • לבנות רדוקציות many-one פולינומיאליות, כולל כיוון, כוליות וניתוח קידוד.
  • להשתמש בטרנזיטיביות ובסגירות כדי להעביר אלגוריתמים ושייכות למחלקות.
  • להבדיל בין NP-קושי ל-NP-שלמות ולהסיק נכון את תוצאת P=NP.
  • להבין את Cook–Levin כבניית טבלת חישוב פולינומיאלית מפורשת.
  • להוכיח את שני כיווני הרדוקציה 3SAT≤mpIS\mathrm{3SAT}\le_m^p\mathrm{IS}.

1. רדוקציה כמהדר מופעים

A≤mpBA\le_m^pB אם קיימת פונקציה כוללת ff, הניתנת לחישוב בזמן פולינומיאלי, כך שלכל מחרוזת

x∈A  ⟺  f(x)∈B.x\in A\iff f(x)\in B.

אם DBD_B מכריע את BB, אז DB(f(x))D_B(f(x)) מכריע את AA. לכן להוכחת קושי החץ הוא

מקור קשה ידוע A⟶יעד חדש B.\text{מקור קשה ידוע }A\longrightarrow\text{יעד חדש }B.

הפחתת היעד אל המקור אינה מוכיחה שהיעד קשה. השקילות משמרת גם מופעי כן וגם מופעי לא.

בנייה מודרכת

שרשרת רדוקציות לבעיות NP-שלמות

שלב 1 מתוך 5
הבעיה הקשה הידועה Aמופע המקור x
f(x)מהדר פולינומי כולל
פותר לבעיית היעד Bאלגוריתם מהיר היפותטי
תשובת כן/לא של הפותר מכריעה את A

ההגדרה חלה על כל המחרוזות. בקלט פגום אפשר להחזיר מופע לא קבוע וחוקי של היעד. יש לציין גם גודל פלט: מכונה פולינומיאלית אינה יכולה להדפיס יותר ממספר פולינומיאלי של תווים.

2. טרנזיטיביות וסגירות

אם A≤mpBA\le_m^pB באמצעות ff ו-B≤mpCB\le_m^pC באמצעות gg, אז h=g∘fh=g\circ f מקיימת

x∈A  ⟺  f(x)∈B  ⟺  g(f(x))∈C.x\in A\iff f(x)\in B\iff g(f(x))\in C.

אם זמני הריצה הם p(n),q(m)p(n),q(m), אז ∣f(x)∣≤p(∣x∣)|f(x)|\le p(|x|) עד כדי קבוע, ולכן

Th(n)≤p(n)+q(p(n)),T_h(n)\le p(n)+q(p(n)),

שהוא פולינומי.

סגירות כלפי מטה. אם A≤mpBA\le_m^pB ו-B∈PB\in\mathrm P, אז A∈PA\in\mathrm P. כך גם עבור NP ו-coNP.

עבור NP מחשבים f(x)f(x) ומפעילים את המוודא של BB. אורך התעודה נשאר פולינומיאלי כי ∣f(x)∣|f(x)| פולינומיאלי. עבור coNP משתמשים באותה פונקציה, שכן

x∈A‾  ⟺  f(x)∈B‾.x\in\overline A\iff f(x)\in\overline B.

3. קושי, שלמות ותוצאת P=NP

BB היא NP-קשה אם לכל A∈NPA\in\mathrm{NP} מתקיים A≤mpBA\le_m^pB. היא NP-שלמה אם בנוסף B∈NPB\in\mathrm{NP}. הוכחת השייכות היא בדרך כלל מוודא; הקושי מתקבל מרדוקציה מבעיה NP-שלמה ידועה. שפה NP-קשה אינה חייבת להיות ב-NP ואף אינה חייבת להיות כריעה.

משפט. אם שפה NP-שלמה BB נמצאת ב-P, אז P=NP\mathrm P=\mathrm{NP}.

לכל A∈NPA\in\mathrm{NP} יש רדוקציה אל BB. אלגוריתם פולינומיאלי ל-BB יחד עם הרדוקציה מכריע את AA בזמן פולינומיאלי. לכן NP⊆P\mathrm{NP}\subseteq\mathrm P, וההכלה ההפוכה ידועה.

4. Cook–Levin: מחישוב לנוסחה

SAT ב-NP כי השמה היא תעודה. לקושי, יהי L∈NPL\in\mathrm{NP} ו-NN מכונה המכריעה אותו כך שכל ענף נמשך לכל היותר T=p(∣x∣)T=p(|x|) צעדים. הראש מבקר רק ב-S=O(T)S=O(T) תאים. מרפדים ענף מקבל קצר בלולאת קבלה, ומציגים את החישוב כטבלה בגודל T×ST\times S: כל שורה היא קונפיגורציה מלאה.

בנייה מודרכת

טבלת קוק–לוין

שלב 1 מתוך 7
קלט x = 10 · חסם זמן T = 3 · רוחב הטבלה S = 5
t=0
⊢
[q0,1]
0
□
□

משתני הטבלה

נשתמש באלפבית סופי

Γ′=Γ∪(Q×Γ),\Gamma'=\Gamma\cup(Q\times\Gamma),

כאשר (q,a)(q,a) מסמן שהראש נמצא בתא, מצב המכונה qq והסימן הנקרא aa. המשתנה

Xt,i,sX_{t,i,s}

אומר שבתא ii בזמן tt מופיע s∈Γ′s\in\Gamma'. למכונה קבועה יש O(TS)=O(T2)O(TS)=O(T^2) משתנים.

יחידות והתחלה

לכל מיקום דורשים לפחות סימן אחד,

⋁s∈Γ′Xt,i,s,\bigvee_{s\in\Gamma'}X_{t,i,s},

ולכל s≠rs\ne r דורשים לכל היותר אחד,

(¬Xt,i,s∨¬Xt,i,r).(\neg X_{t,i,s}\lor\neg X_{t,i,r}).

פסוקיות יחידה מקבעות את שורה 0: q0q_0, ביטי xx, וריקים בשאר התאים. אפשר לדרוש ראש/מצב מסומן יחיד בכל שורה במפורש.

קבלה ומעברים

דורשים הופעת qaccq_{\mathrm{acc}}, או דורשים אותו בשורה האחרונה לאחר ריפוד:

⋁t,i,aXt,i,(qacc,a).\bigvee_{t,i,a}X_{t,i,(q_{\mathrm{acc}},a)}.

צעד TM משנה רק שכונה קבועה סביב הראש. לכן חוקיות בין שתי שורות נקבעת בחלונות קבועי גודל, למשל 2×32\times3. לכל תבנית מקומית אסורה π\pi מוסיפים פסוקית

⋁(u,j,s)∈π¬Xt+u,i+j,s.\bigvee_{(u,j,s)\in\pi}\neg X_{t+u,i+j,s}.

יש מספר קבוע של סוגי תבניות לכל (t,i)(t,i), כי המכונה והאלפבית קבועים. סמני קצה מטפלים בגבולות. הפסוקיות כופות גם העתקת תאים רחוקים וגם מעבר חוקי של הראש והמצב.

נכונות וגודל

אם NN מקבלת את xx, כותבים ענף מקבל בטבלה ומקבלים השמה מספקת. אם הנוסחה מספקת, יחידות מפענחת סימן יחיד בכל תא; ההתחלה נכונה; כל שורה עוקבת חוקית; ומופיע מצב קבלה. לכן הטבלה מפענחת ענף מקבל:

x∈L  ⟺  ΦN,x∈SAT.x\in L\iff\Phi_{N,x}\in\mathrm{SAT}.

יש O(T2)O(T^2) תאי מרחב־זמן ומספר קבוע של פסוקיות לכל תא וחלון. לכן הגודל וזמן הבנייה פולינומיאליים. לאחר מכן ממירים ל-CNF ול-3CNF בעזרת משתני עזר תוך שמירת סיפוקיות וגודל פולינומיאלי.

מה בודק חלון מקומי

נניח שבשורה העליונה מופיעה השכונה

⋯ , b, (q,a), c, ⋯\cdots,\ b,\ (q,a),\ c,\ \cdots

והמעבר δ(q,a)\delta(q,a) מרשה ״כתוב dd, זוז ימינה ועבור למצב q′q'״. השכונה המתאימה בשורה הבאה חייבת להיות

⋯ , b, d, (q′,c), ⋯ .\cdots,\ b,\ d,\ (q',c),\ \cdots.

במעבר שמאלה סימון המצב עובר אל הסימן השמאלי. אם הראש אינו בחלון, הסימן האמצעי בשורה התחתונה חייב להיות העתק של הסימן שמעליו. רשימת החלונות החוקיים הסופית כוללת את כל המעברים בטבלת δ\delta ואת חלונות ההעתקה הרגילים.

כדי לכתוב CNF, מונים כל הצבה אסורה למספר הקבוע של המקומות בחלון. אם ההצבה האסורה הופכת את L1,…,LrL_1,\ldots,L_r לאמיתיים, הפסוקית

(¬L1∨⋯∨¬Lr)(\neg L_1\lor\cdots\lor\neg L_r)

שוללת בדיוק אותה. rr קבוע התלוי במכונה. החפיפה בין חלונות חיונית: הם מסכימים על התאים המשותפים וכך מחברים חוקיות מקומית לשורת יורש גלובלית אחת. בלי חפיפה היה אפשר לצרף קטעים חוקיים בנפרד לשורה שאינה קונפיגורציה עוקבת אפשרית.

חשבון גודל מפורש

נסמן g=∣Γ′∣g=|\Gamma'|. אילוצי מיקום משתמשים ב-TSTS פסוקיות ברוחב gg עבור ״לפחות אחד״ וב-

TS(g2)TS\binom g2

פסוקיות בינריות עבור ״לכל היותר אחד״. להתחלה יש SS פסוקיות יחידה. דרישת קבלה בשורה האחרונה היא ברוחב לכל היותר S∣Γ∣S|\Gamma|. אם FF הוא מספר תבניות החלון האסורות, אילוצי המעבר משתמשים לכל היותר ב-

F(T−1)(S−2)F(T-1)(S-2)

פסוקיות ברוחב קבוע. g,Fg,F תלויים ב-NN הקבועה ולא ב-xx. לכן מספר הפסוקיות ומספר הסמלים הכולל הם O(TS)=O(T2)O(TS)=O(T^2), פרט לפסוקית קבלה שרוחבה עדיין פולינומיאלי. פיצול פסוקית ברוחב rr ל-3CNF מוסיף רק O(r)O(r) משתנים ופסוקיות.

5. הוכחה מלאה: 3SAT אל קבוצה בלתי־תלויה

יהי

φ=C1∧⋯∧Cm.\varphi=C_1\land\cdots\land C_m.

יוצרים קודקוד לכל הופעת ליטרל. מחברים כל זוג קודקודים מאותה פסוקית, ומחברים בין פסוקיות הופעות משלימות x,¬xx,\neg x. מחזירים (Gφ,k=m)(G_\varphi,k=m). יש 3m3m קודקודים ו-O(m2)O(m^2) צלעות.

בנייה מודרכת

3SAT → קבוצה בלתי תלויה

שלב 1 מתוך 7
φ =(x ∨ y ∨ z)∧(¬x ∨ y ∨ w)∧(¬y ∨ z ∨ w)
בנייה מ־3SAT לקבוצה בלתי תלויהשלוש פסוקיות הופכות לגאדג׳טים משולשים. קשתות רציפות מחברות ליטרלים באותה פסוקית, קשתות מקווקוות מחברות ליטרלים משלימים, ובשלב האחרון נבחרים x, y ו־z כקבוצה בלתי תלויה בגודל שלוש.C1x ∨ y ∨ zפסוקית מקורC2¬x ∨ y ∨ wפסוקית מקורC3¬y ∨ z ∨ wפסוקית מקור
קשת באותה פסוקיתסתירה בין משלימים

כיוון קדימה. מהשמה מספקת בוחרים בכל פסוקית הופעה אמיתית אחת. התקבלו mm קודקודים. אין ביניהם צלע פסוקית, כי נבחר אחד מכל פסוקית; ואין צלע סתירה, כי השמה אחת אינה הופכת גם xx וגם ¬x\neg x לאמיתיים. זו קבוצה בלתי־תלויה.

כיוון אחורה. תהי SS קבוצה בלתי־תלויה בגודל mm. כל גאדג׳ט פסוקית הוא קליקה, ולכן SS מכילה לכל היותר קודקוד אחד מכל פסוקית. מכיוון שיש mm פסוקיות ו-mm בחירות, יש בדיוק אחת מכל פסוקית. אין צלעות סתירה, ולכן הליטרלים הנבחרים עקביים. מציבים אותם כאמיתיים ומשלימים משתנים אחרים שרירותית. בכל פסוקית הליטרל הנבחר אמיתי, ולכן φ\varphi מספקת.

מכאן

φ∈3SAT  ⟺  (Gφ,m)∈IS.\varphi\in\mathrm{3SAT}\iff(G_\varphi,m)\in\mathrm{IS}.

IS ב-NP: מפרטים kk קודקודים ובודקים שונות ואי־שכנות. לכן היא NP-שלמה.

דוגמה מלאה בת שלוש פסוקיות

עבור

(x∨y∨z)∧(¬x∨y∨w)∧(¬y∨z∨w)(x\lor y\lor z)\land(\neg x\lor y\lor w)\land(\neg y\lor z\lor w)

בונים שלושה משולשים ומציבים k=3k=3. מוסיפים קשת סתירה בין xx במשולש הראשון ל-¬x\neg x בשני, בין כל הופעה של yy לבין ¬y\neg y בשלישי, ובין כל זוג משלים אחר. שתי הופעות חיוביות של zz אינן סותרות זו את זו.

ההשמה x=1,y=1,z=1,w=0x=1,y=1,z=1,w=0 מספקת. אפשר לבחור xx מ-C1C_1, את yy מ-C2C_2 ואת zz מ-C3C_3. הקודקודים במשולשים שונים ואין ביניהם זוג ליטרלים משלימים.

בכיוון ההפוך, כל קבוצה בלתי־תלויה בגודל 3 בוחרת לכל היותר קודקוד אחד מכל משולש. מאחר שיש שלושה משולשים, היא בוחרת בדיוק אחד מכל פסוקית. היא אינה יכולה לבחור, למשל, yy מן הראשונה ו-¬y\neg y מן השלישית, כי ביניהם קשת סתירה. שלושת הליטרלים מגדירים השמה חלקית עקבית המספקת את כל שלוש הפסוקיות.

הדוגמה מראה גם מדוע סף 2 אינו מתאים: שני קודקודים יכולים לייצג שתי פסוקיות ולהשאיר את השלישית בלתי־מסופקת. k=mk=m הוא חלק מהאינווריאנט.

6. כיצד כותבים הוכחת רדוקציה

יש לבדוק חמש חובות נפרדות:

  1. קלט ופלט: להגדיר את שפות ההכרעה ואת כל הפרמטרים.
  2. בנייה: לתאר את f(x)f(x) גם לקלט חוקי וגם לקלט פגום.
  3. כיוון קדימה: להפוך פתרון מקור לפתרון יעד.
  4. כיוון אחורה: לפענח כל פתרון יעד העומד בסף לפתרון מקור.
  5. משאבים: לחסום את מספר העצמים, אורכי המספרים וזמן הבנייה באורך הקלט המקודד.

ב-3SAT→IS מתקבלים 3m3m קודקודי הופעות, קשתות פסוקית וסתירה, בחירת הופעה אמיתית מכל פסוקית קדימה, בחירה עקבית מכל פסוקית אחורה, וגודל O(m2)O(m^2). הפרדת החובות מונעת מציור משכנע של גאדג׳ט להחליף הוכחה.

כיוון החץ דרך פותר היפותטי

דרך בטוחה לבדוק כיוון היא לדמיין קופסה שמכריעה את היעד BB. אם ברצוננו לפתור מקור AA, עלינו לחשב f(x)f(x), להזין אותו לקופסת BB ולהחזיר את תשובתה. לכן נדרש A≤mpBA\le_m^pB. אם התהליך שכתבנו מתחיל במופע של BB ומשתמש בפותר של AA, הוכחנו את החץ ההפוך.

הבחנה זו חשובה במיוחד בבעיות דומות. למשל, העובדה שקל לפתור מקרה פרטי של בעיה אינה מוכיחה שהבעיה הכללית קלה, ורדוקציה מן הבעיה הכללית אל המקרה הפרטי תדרוש קידוד שאכן משמר את כל המופעים.

רשת רדוקציות במקום הוכחה מחדש

לאחר שהוכחנו

SAT≤mp3SATוגם3SAT≤mpIS,\mathrm{SAT}\le_m^p\mathrm{3SAT} \quad\text{וגם}\quad \mathrm{3SAT}\le_m^p\mathrm{IS},

טרנזיטיביות נותנת SAT≤mpIS\mathrm{SAT}\le_m^p\mathrm{IS}. אין צורך להטמיע מחדש את טבלת Cook–Levin בתוך גאדג׳ט הגרף. זו התועלת המעשית בשלמות: אחרי בעיית המקור האוניברסלית, אפשר להתחיל כל הוכחה מבעיה שלמה שמבנה הפתרון שלה דומה ליעד.

רדוקציה גם אינה מוכיחה שהיעד קשה ממש מן המקור במובן של חסם זמן חד. היא אומרת שאלגוריתם מהיר ליעד היה נותן אלגוריתם מהיר למקור בתוספת תקורה פולינומיאלית. אלגוריתם מהיר למקור אינו אומר דבר בכיוון ההפוך, ואין מכאן לבדה הפרדה בין סיבוכויות.

טעויות נפוצות

  1. להפוך את חץ הקושי.
  2. להוכיח רק כיוון אחד.
  3. להתעלם מקלט פגום או מגודל פלט.
  4. להכריז שלמות בלי שייכות ל-NP.
  5. לתאר את Cook–Levin כ״טבלה״ בלי אילוצים וניתוח גודל.
  6. לשכוח קשתות פסוקית או קשתות סתירה.
  7. לא להסביר מדוע גודל mm כופה בחירה מכל פסוקית.

תרגילים

תרגיל 1 — כיוון הקושי

תהי A≤pBA\le_p B. הוכיחו: אם B∈PB\in\mathrm P אז A∈PA\in\mathrm P. הסבירו מה ״עובר אחורה״ ומה ״הולך קדימה״ בחץ הרדוקציה.

פתרון

אם x∈A  ⟺  f(x)∈Bx\in A\iff f(x)\in B ו-ff בזמן פולינומיאלי, מכריע ל-BB נותן מכריע ל-AA בהרכבה. אלגוריתם/שייכות למחלקה סגורה כלפי מטה עוברים מ-BB ל-AA (אחורה בקושי). קושי עובר מ-AA ל-BB (קדימה): אם AA קשה ו-A≤pBA\le_p B אז BB קשה לפחות כמו AA.

תרגיל 2 — שתי חובות לשלמות

הגדירו NP-שלמות. הוכיחו מדוע שייכות ל-NP\mathrm{NP} לבדה או קושי לבדו אינם מספיקים.

פתרון

AA NP-שלמה אם (1) A∈NPA\in\mathrm{NP} ו-(2) לכל L∈NPL\in\mathrm{NP}, L≤pAL\le_p A. בלי (1) ייתכן ש-AA קשה מחוץ ל-NP\mathrm{NP}. בלי (2) שייכות ל-NP\mathrm{NP} אינה משווה אותה לכל המחלקה.

תרגיל 3 — חלונות מקומיים ב-Cook–Levin

הסבירו מדוע די באילוצים על חלונות מקומיים בטבלת החישוב כדי לאכוף חישוב חוקי של TM.

פתרון

צעד דטרמיניסטי משנה שכונה קבועה בגודל O(1)O(1) סביב הראש. עקביות כל החלונות החופפים לכל הזמן כופה מעברים חוקיים מהקלט עד תצורת קבלה. מספר המשתנים/הפסוקיות פולינומיאלי בגודל הטבלה.

תרגיל 4 — k=mk=m ברדוקציית 3SAT→IS

ברדוקציה הסטנדרטית מ-3SAT לקבוצה בלתי־תלויה עם פרמטר k=mk=m (מספר פסוקיות), הוכיחו מדוע בחירת k<mk<m שוברת את השקילות.

פתרון

הבנייה שמה קליקה/קבוצה לכל פסוקית עם קשתות סתירה בין ליטרלים מנוגדים. k=mk=m כופה בחירת קודקוד מכל פסוקית — התאמה להשמה מספקת. אם k<mk<m אפשר לבחור קודקודים מפחות פסוקיות ולהתעלם מפסוקית לא־מסופקת, ולשבור את הכיוון.

תרגיל 5 — טרנזיטיביות וגודל פלט

הוכיחו ש-≤p\le_p טרנזיטיבית, והדגישו מדוע נדרש ש-∣f(x)∣|f(x)| יהיה פולינומיאלי.

פתרון

אם ff מ־AA ל-BB ו-gg מ־BB ל-CC בזמן פולינומיאלי, אז g∘fg\circ f בזמן פולינומיאלי כי ∣f(x)∣=poly(∣x∣)|f(x)|=\mathrm{poly}(|x|) ולכן g(f(x))g(f(x)) רץ בזמן poly(poly(∣x∣))\mathrm{poly}(\mathrm{poly}(|x|)). בלי חסם פלט, הרכבה עלולה לצאת מפולינום.

סיכום

רדוקציה היא מהדר מופעים עם כיוון. שלמות דורשת שייכות וקושי; טעויות כיוון וגודל הן מלכודות בחינה.

תרגול מודרך

משימה 1 — הפרכת כיוון שגוי

סטודנט ״מוכיח״ BB קשה על ידי רדוקציה B≤pAB\le_p A כאשר AA קלה. מה שגוי?

פתרון

B≤pAB\le_p A ו-A∈PA\in\mathrm P גוררים B∈PB\in\mathrm P — כלומר BB קלה, לא קשה. כדי להעביר קושי מ-AA ל-BB צריך A≤pBA\le_p B.

משימה 2 — רדוקציה חלקית

ברדוקציה לגרף: הוכח רק ״אם נוסחה סבירה אז יש קבוצה בלתי־תלויה״. אילו סעיפים חסרים?

פתרון

חסרים: כיוון ההחזרה (IS ⇒\Rightarrow נוסחה סבירה), טיפול בקלט פגום, חסם זמן/גודל של ff, ושייכות היעד ל-NP\mathrm{NP} אם מצהירים שלמות.

משימה 3 — מ-Cook–Levin לשלמות 3SAT

סכמו כיצד עוברים מ-SAT ל-3SAT תוך שמירת NP-שלמות (רעיון הגאדג׳ט, לא הוכחה מלאה).

פתרון

כל פסוקית ארוכה מפורקת לפסוקיות תלת־ליטרליות עם משתני עזר כך שיש השמה מספקת אמ״ם המקורית סבירה. הרדוקציה פולינומיאלית; עם SAT∈NP\mathrm{SAT}\in\mathrm{NP} וקושי של SAT מתקבלת שלמות 3SAT.

מקורות

עדויות הקורס

  • תמליל 9 של סמסטר א׳ הנוכחי: רדוקציות many-one פולינומיאליות, כיוון, טרנזיטיביות וסגירות.
  • תמליל 10: NP-קושי, NP-שלמות ותוצאותיו של אלגוריתם פולינומיאלי לבעיה שלמה.
  • תמלילים 12–13: טבלת החישוב של Cook–Levin, עקביות מקומית, קבלה וחשבון גודל פולינומיאלי.
  • תמליל 14: גאדג׳טי גרפים מ-SAT/3SAT, ובכללם הבנייה לקבוצה בלתי־תלויה.
  • הסיכום הממוזג, עמ׳ 43–49: רדוקציות פולינומיאליות ושלמות; עמ׳ 50–54: Cook–Levin בלבד; עמ׳ 55–57, 64–66 ו-72–75: משפחת בעיות הגרף והרדוקציות ביניהן. אין לייחס לטווחים אלה כיסוי רחב יותר.

אימות מספרי לימוד

  • Sipser, מהדורה שלישית, §§7.4–7.5, עמ׳ 300–325.
  • Arora–Barak (טיוטה), §2.3, עמ׳ 45–58.
  • Papadimitriou, פרקים 8–9. המשפטים אומתו בספרים; הסימון וסדר ההצגה תואמים לקורס.