עמודת משתנה ועמודת פסוקית, עם ספרות ריפוד

3SAT ≤p SUBSET-SUM

3SAT≤pSUBSET-SUM\mathrm{3SAT}\le_p\mathrm{SUBSET\text{-}SUM} — הגרסה הקלאסית של הרדוקציה, שבה בחירת ההשמה וסיפוק הפסוקיות מקודדים בעמודות ספרות ללא נשאות.

הבנייה

על נוסחת 3CNF φ\varphi עם משתנים x1,…,xnx_1,\dots,x_n ופסוקיות C1,…,CmC_1,\dots,C_m. כל המספרים נכתבים בבסיס 1010 ובעלי n+mn+m ספרות: nn עמודות משתנה ואחריהן mm עמודות פסוקית.

  1. שני מספרים לכל משתנה. לכל ii נגדיר yiy_i (עבור xi=Truex_i=\mathrm{True}) ו-ziz_i (עבור xi=Falsex_i=\mathrm{False}):
    • בעמודת המשתנה ii — הספרה 11 בשניהם; בכל עמודת משתנה אחרת — 00.
    • בעמודת הפסוקית jj — ב-yiy_i הספרה 11 אם הליטרל xix_i מופיע ב-CjC_j, אחרת 00; ב-ziz_i הספרה 11 אם xi‾\overline{x_i} מופיע ב-CjC_j, אחרת 00.
  2. שני מספרי ריפוד לכל פסוקית. לכל jj נגדיר gjg_j ו-hjh_j, שבשניהם הספרה 11 בעמודת הפסוקית jj ו-00 בכל מקום אחר.
  3. סכום היעד SS: הספרה 11 בכל עמודת משתנה, והספרה 33 בכל עמודת פסוקית.
  4. החזר את כל המספרים ואת SS.

מה כל עמודה אוכפת. עמודת משתנה דורשת בדיוק 11, וכיוון שרק yiy_i ו-ziz_i נושאים שם 11 — נבחר בדיוק אחד מהם, כלומר ההשמה מוגדרת היטב. עמודת פסוקית דורשת 33, ושני מספרי הריפוד יכולים לתרום לכל היותר 22; לכן חייב להיבחר לפחות מספר משתנה אחד התורם לעמודה הזאת — כלומר הפסוקית מסופקת.

המחשה

בנייה מודרכת

3SAT → Subset Sum

שלב 1 מתוך 6
φ = (x₁ ∨ ¬x₂) ∧ (¬x₁ ∨ x₂)
מספר
x₁
x₂
C₁
C₂

נכונות — שני הכיוונים

3SAT ∈ ⟹ SUBSET-SUM ∈

נניח ש-vv מספקת את φ\varphi. נבחר את המספרים:

  • לכל ii: אם v(xi)=1v(x_i)=1 נבחר את yiy_i, אחרת את ziz_i.
  • לכל jj: נסמן ב-sj∈{1,2,3}s_j\in\{1,2,3\} את מספר הליטרלים של CjC_j שההשמה מספקת (לפחות 11, כי vv מספקת את CjC_j, ולכל היותר 33). נבחר 3−sj3-s_j ממספרי הריפוד של CjC_j — כלומר 2,12,1 או 00 מהם. זה אפשרי כי 3−sj∈{0,1,2}3-s_j\in\{0,1,2\} ויש שני מספרי ריפוד.

עמודות משתנה. בעמודה ii תרם בדיוק מספר אחד (yiy_i או ziz_i) את הספרה 11; מספרי הריפוד תורמים 00 שם, ומספרי משתנים אחרים תורמים 00 בעמודה ii. הסכום הוא 11 — כנדרש.

עמודות פסוקית. בעמודה jj תורמים מספרי המשתנים הנבחרים בדיוק sjs_j (מספר הליטרלים המסופקים של CjC_j), ומספרי הריפוד הנבחרים תורמים 3−sj3-s_j. הסכום הוא sj+(3−sj)=3s_j+(3-s_j)=3 — כנדרש.

הספרות המרביות בכל עמודה חסומות: בעמודת משתנה לכל היותר 22, ובעמודת פסוקית לכל היותר 3+2=53+2=5, ולכן אין נשאות ואפשר לקרוא ספרה-ספרה. הסכום הכולל הוא בדיוק SS.

SUBSET-SUM ∈ ⟹ 3SAT ∈

נניח שקיימת תת-קבוצה II שסכומה SS. מכיוון שבכל עמודה סכום הספרות חסום ב-5<105<10 (בעמודת משתנה לכל היותר 22; בעמודת פסוקית לכל היותר 33 ממספרי משתנים ועוד 22 מהריפוד), אין נשאות, ולכן שוויון הסכומים גורר שוויון בכל עמודה בנפרד.

עמודות משתנה. בעמודה ii נדרש סכום 11. רק yiy_i ו-ziz_i נושאים שם ספרה שאינה 00, ושניהם נושאים 11. לכן בדיוק אחד מהם ב-II. נגדיר השמה: v(xi)=1v(x_i)=1 אם yi∈Iy_i\in I, ו-v(xi)=0v(x_i)=0 אם zi∈Iz_i\in I. ההגדרה מוגדרת היטב ומלאה.

עמודות פסוקית. בעמודה jj נדרש סכום 33. התורמים הם מספרי הריפוד gj,hjg_j,h_j — לכל היותר 22 יחד — ומספרי משתנים שנבחרו והליטרל שלהם מופיע ב-CjC_j. לכן מספרי המשתנים תורמים לפחות 3−2=13-2=1, כלומר קיים מספר משתנה נבחר התורם 11 לעמודה jj.

יהי כזה מספר. אם הוא yiy_i, אז לפי הבנייה הליטרל xix_i מופיע ב-CjC_j, ולפי ההגדרה v(xi)=1v(x_i)=1 — הליטרל מסופק. אם הוא ziz_i, אז xi‾\overline{x_i} מופיע ב-CjC_j ו-v(xi)=0v(x_i)=0 — שוב הליטרל מסופק. בשני המקרים CjC_j מסופקת.

מכיוון ש-jj שרירותי, vv מספקת את φ\varphi, כלומר φ∈3SAT\varphi\in\mathrm{3SAT}.

סיבוכיות הרדוקציה

זמןO((n+m)²)
מקוםO((n+m)²)
גודל הפלט(2n + 2m + 1) numbers of n+m digits each

מספר המספרים בפלט הוא 2n2n (שניים לכל משתנה) ועוד 2m2m (שניים לכל פסוקית), ולכל אחד n+mn+m ספרות. סך הספרות בפלט הוא אפוא (2n+2m)(n+m)+(n+m)=O((n+m)2)(2n+2m)(n+m)+(n+m)=O((n+m)^2) — זו בדיוק הספירה שהבחינות שאלו עליה. הזמן פרופורציוני לגודל הפלט.

כמו ב-VC≤pSUBSET-SUM\mathrm{VC}\le_p\mathrm{SUBSET\text{-}SUM}: הערך של כל מספר מעריכי בגודל הקלט, ואילו אורך הכתיבה שלו פולינומי — וזה מה שהופך את הרדוקציה לחוקית.

מה זה קונה

SUBSET-SUM\mathrm{SUBSET\text{-}SUM} היא NP-קשה, בדרך שאינה עוברת דרך VC\mathrm{VC}.

מלכודות

  • צריך שני מספרי ריפוד לפסוקית, לא אחד. פסוקית יכולה להיות מסופקת על ידי 11, 22 או 33 ליטרלים, ולכן הפער עד 33 הוא 2,12,1 או 00 — ושני מספרי ריפוד הם בדיוק מה שמכסה את שלוש האפשרויות. עם מספר ריפוד אחד, פסוקית שמסופקת על ידי ליטרל יחיד לא הייתה מגיעה ל-33.

  • הסף בעמודת פסוקית הוא 33 ולא 11. לו היה 11, מספר הריפוד לבדו היה מספק את העמודה ללא שום מספר משתנה — והכיוון השני היה קורס.

השרשרת

נשענת על

מאיפה זה נקרא

  • 2025 '1 מועד 1"מה מספר הספרות הכולל בכל המספרים בפלט הרדוקציה על נוסחת 3CNF עם nn משתנים ו-mm פסוקיות?"
  • 2024 '1 מועד 1"ראינו בכיתה רדוקציה מ-3-SAT ל-Subset Sum" — מעקב אחרי ההתאמה בין השמה מספקת לתת-קבוצה.
  • 2024 '1 מועד 2אותה בנייה, על נוסחה קונקרטית.
  • 2023 '2 מועד 2תיאור פונקציית הרדוקציה ל-Subset-Sum והאם היא חוקית.
  • מיפוי חשוב: שיעורי 2026ב׳ אינם מלמדים את הרדוקציה הזאת — שיעור 11 מוכיח את קשיות SUBSET-SUM\mathrm{SUBSET\text{-}SUM} דרך VC\mathrm{VC}, בבנייה אחרת לגמרי (עמודה לכל קשת). הרדוקציה מ-3SAT היא זו שהבחינות של 2023–2025 מתייחסות אליה כ"ראינו בהרצאה", כלומר היא נלמדה בשנים קודמות. שתי הבניות נכונות ושתיהן בקורפוס, ואין לערבב ביניהן: הן נבדלות בקלט, בעמודות ובסף.

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