בקצרה
- מגדירים את : בהינתן גרף ומספר , האם הגודל המקסימלי של קבוצה בלתי תלויה ב- הוא . זו איננה בעיית הרגילה — היא מחביאה בתוכה טענת קיום וטענת לכל גם יחד.
- מוכיחים ולכן היא NP-קשה. זו אותה רדוקציה מוכרת של ל- (קודקוד לכל ליטרל, קליקה בתוך פסוקית, קשת בין ליטרל לשלילתו), אבל הפעם צריך להוכיח גם את חסם המקסימליות .
- מוכיחים ולכן היא גם coNP-קשה. הרדוקציה: מוסיפים קודקודים חדשים ומחברים כל אחד מהם לכל קודקוד ישן, ומחזירים .
- המסקנה החריפה: אם ורק אם . כלומר עצם ההוכחה ש- בעלת אימות קצר (או שמשלימתה כזו) תפתור בעיה פתוחה. בפרט אסור לקרוא ל- "NP-שלמה" — אין לנו מושג אם היא ב-.
- לעומת זאת בקלות (סריקה על ), כך שהקושי כאן הוא קושי של מבנה הטענה, לא של כמות החישוב.
- לאורך כל השיעור המרצה מלמד סגנון: טענת "לכל" מתחילה תמיד ב"תהא/יהי"; להוכחה יש גישה להשמה ולקבוצה — לאלגוריתם אין; והוכחת קיום אינה חייבת להיות אלגוריתמית.
רקע ותלויות
השיעור הזה כמעט ולא מוסיף מכניזם חדש — הוא מרכיב יחד ארבעה דברים שכבר ראינו. כדי שלא תצטרכו לקפוץ, הנה כולם במלואם.
משיעור 7 — קבוצה בלתי תלויה, , ורדוקציות. בגרף , קבוצה נקראת בלתי תלויה (independent set) אם לכל מתקיים . השפה מכילה את כל הזוגות שבהם גרף, , וקיימת ב- קבוצה בלתי תלויה בגודל לפחות . נסמן את הגודל המקסימלי של קבוצה בלתי תלויה ב- (הסימון לא הופיע בסיכום; הוא מקוצר כאן לנוחות). כלומר .
רדוקציית זמן פולינומי: אם קיימת הניתנת לחישוב בזמן פולינומי כך שלכל מתקיים . כיוון החץ במילים: אומר ש- היא הקשה יותר — כל מי שיודע לפתור את יודע לפתור את . בהקלטות ובעל פה הכיוון הזה מתהפך כל הזמן, ולכן בכל פעם שנכתוב רדוקציה נאמר במפורש ממי למי.
היא NP-קשה אם לכל מתקיים , והיא NP-שלמה אם בנוסף . באופן סימטרי, היא coNP-קשה אם לכל מתקיים .
סגירות: אם ו- אז ; אותו דבר עבור . וכן טרנזיטיבית: . משתי אלה נובע הכלל שנשתמש בו שוב ושוב: כדי להראות ש- היא NP-קשה מספיק להראות עבור אחת שכבר ידועה כ-NP-קשה.
משיעור 9 — קוק–לוין. היא NP-שלמה. בפרט היא NP-קשה, ולכן רדוקציה מ- אל בעיה כלשהי מוכיחה שהבעיה ההיא NP-קשה. כמו כן ראינו את השרשרת , ולכן היא NP-שלמה.
משיעור 10 — "לפחות " מול "בדיוק ". קבוצה בלתי תלויה היא תכונה תורשתית: כל תת-קבוצה של קבוצה בלתי תלויה היא בלתי תלויה. לכן אם יש ב- קבוצה בלתי תלויה בגודל , אפשר להוריד ממנה קודקודים עד לגודל בדיוק. מכאן:
קיימת ב- קבוצה בלתי תלויה בגודל לפחות אם ורק אם קיימת ב- קבוצה בלתי תלויה בגודל בדיוק .
בשיעור הזה נשתמש בשוויון הזה בלי הודעה מוקדמת, בשני הכיוונים.
משיעור 21 — מחלקות משלימות. . שלוש עובדות משם, שכולן ישוחזרו כאן במלואן במקום שבו הן משמשות:
- למת המשלימים: היא רדוקציה מ- ל- אם ורק אם אותה עצמה היא רדוקציה מ- ל- (הוכחה בלמה 3.1 להלן).
- סגורה תחת : אם ו- אז .
- אם קיימת שפה שהיא גם NP-קשה וגם שייכת ל- (או סימטרית: גם coNP-קשה וגם ב-), אז .
הערת רקע על ההקלטה. ההקלטה הרלוונטית ([27], video_id AGUI69L7aDA) נפתחת מיד בחומר של השיעור הזה — אין בה קטע חזרה. בסוף ההקלטה הקודמת המרצה אף מודיע במפורש: "השיעור הבא יעסוק ב-MaxIS, נראה שהיא coNP-קשה גם".
הגדרות
הגדרה 1: הבעיה
קלט: גרף ומספר .
שאלה: האם הגודל המקסימלי של קבוצה בלתי תלויה ב- הוא ?
כשפה:
הפירוק שבסיכום (שתי ההערות המודגשות בעמוד 1). הדרישה "" נראית תמימה, אבל היא מחביאה בתוכה שתי טענות מסוגים שונים, והסיכום מסמן אותן בשני חצים:
- טענת קיום: קיימת ב- קבוצה בלתי תלויה בגודל ;
- וגם טענת "לכל": כל קבוצה בלתי תלויה ב- היא בגודל לכל היותר .
זו הנקודה שכל השיעור נשען עליה. המרצה מתעכב עליה [00:01:36]–[00:03:43]: "מקסימום זה לא משהו שאני רוצה לעבוד איתו — אני רוצה לפרק את זה לפרימיטיבים". שימו לב גם לסדר: קודם אומרים שהקבוצה קיימת, ורק אחר כך מדברים עליה. סטודנט התחיל את הניסוח ב"קבוצה אחרת קטנה ממנה", והמרצה עצר: "מי זה 'ממנה'? אין פה קבוצה עדיין" [00:01:36].
דוגמה. (משולש על ). כל שני קודקודים מחוברים, ולכן קבוצה בלתי תלויה מכילה קודקוד אחד לכל היותר, ו- אכן בלתי תלויה. לכן , כלומר .
אי-דוגמה (וזה בדיוק ההבדל מ-). כי , וגם כי . לעומת זאת (הקבוצה הריקה בלתי תלויה) וגם . כלומר "סובלנית כלפי מטה" ו- לא — ולכן, שלא כמו ב-, הטיעון התורשתי משיעור 10 אינו מאפשר להחליף כאן "" ב-"".
הגדרה 2: הפירוק של לחיתוך שתי שפות
הפירוק שלמעלה הוא בדיוק חיתוך של שתי שפות (עמוד 5 בסיכום):
כאשר היא אוסף הזוגות שבהם קיימת ב- קבוצה בלתי תלויה בגודל , ו- היא אוסף הזוגות שבהם כל קבוצה בלתי תלויה ב- היא בגודל .
השוויון של הגורם השמאלי ל- הוא בדיוק הלמה התורשתית משיעור 10 ("בגודל " "בגודל לפחות "). הגורם הימני, , הוא "כמעט ": המרצה מנסח זאת [01:26:30] כ"עד כדי קוסמטיקה", כי וזו בדיוק עם במקום . בפרט — ראו את הוכחת משפט 4.
למה זה חשוב. היא חיתוך של שפה ב- עם שפה ב-. חיתוך כזה, במצב הידע הנוכחי, אינו יושב באף אחת מהמחלקות. כל השיעור הוא בעצם פירוט של ההערה הזאת.
הגדרה 3: הגרף — הבנייה של הרדוקציה מ-
תהא נוסחה בצורת CNF עם פסוקיות. נגדיר גרף :
- קודקודים. לכל פסוקית ב-, ולכל ליטרל בפסוקית, ניצור קודקוד. נסמן ב- את קבוצת הקודקודים. שימו לב [00:08:58]: ליטרל שמופיע בכמה פסוקיות מקבל כמה קודקודים, אחד לכל מופע. הקודקוד מייצג מופע, לא משתנה.
- קשתות אדומות (בתוך פסוקית). לכל פסוקית ב-, נחבר בקשת כל שני קודקודים שנוצרו מאותה פסוקית. כלומר כל פסוקית הופכת לקליקה.
- קשתות שחורות (בין ליטרל לשלילתו). לכל ליטרל ב-, נחבר בקשת את הקודקודים המתאימים לו עם הקודקודים המתאימים לשלילתו.
הפלט של הרדוקציה הוא .
האינטואיציה מאחורי כל צבע [00:13:53]:
- הקשתות האדומות מבטיחות שקבוצה בלתי תלויה תיקח לכל היותר קודקוד אחד מכל פסוקית. זה מה שיחסום את המקסימום מלמעלה ב-.
- הקשתות השחורות מבטיחות שקבוצה בלתי תלויה לא תיקח בו-זמנית ליטרל ואת שלילתו — כלומר שהבחירה שלה עקבית ומתורגמת להשמה חוקית.
הערה: בסיכום, הקשתות "בין ליטרל לשלילתו" מצוירות בעיפרון כחול בציור שבעמוד 1, אך בטקסט ההוכחה (עמודים 2–3) הן נקראות "קשתות שחורות" — כמו בהרצאה. כאן שימרנו את המינוח אדומות/שחורות לכל אורך הקובץ.
משפטים והוכחות
משפט 1: אם אז
זו לא טענה עמוקה, והמרצה פותח בה [00:04:14] כדי לנקות את השאלה "האם קשה יותר בגלל שיש בה יותר חישוב". התשובה: לא, ההבדל הוא במבנה הלוגי בלבד.
טענה. אם קיים אלגוריתם דטרמיניסטי המכריע את בזמן , אז קיים אלגוריתם המכריע את בזמן . בפרט אם פולינומי אז גם זמן הריצה של השני פולינומי.
הוכחה. בהינתן עם :
- לכל נריץ את על .
- נסמן ב- את ה- הגדול ביותר שעבורו ענתה "כן".
- נחזיר "כן" אם ורק אם .
נאותות. לפי ההגדרה עונה "כן" על אם ורק אם . לכן קבוצת ה--ים שעבורם התשובה "כן" היא בדיוק — קטע רצוף שמתחיל ב- (הקבוצה הריקה תמיד בלתי תלויה) ונגמר ב-. מכאן ש- מוגדר היטב ו-. לכן האלגוריתם עונה "כן" אם ורק אם , כלומר אם ורק אם .
זמן ריצה. קריאות ל-, כל אחת על קלט שאורכו , ועוד עבודה לינארית לניהול הלולאה. סך הכול .
הערה: בהרצאה הניסוח היה "אני עובר על כל ה- מאחד עד ורואה מתי הפעם הראשונה שאני מקבל 'לא'" [00:04:48]. זו בדיוק אותה סריקה, רק מלמטה למעלה. הפירוט של המונוטוניות — שקבוצת התשובות "כן" היא קטע רצוף — נאמר בהרצאה במשפט אחד, וכאן הוא כתוב מפורשות, כי בלעדיו אין הצדקה ל"הפעם הראשונה שקיבלתי 'לא'".
משפט 2: , ולכן היא NP-קשה
הכיוון במילים. מבצעים רדוקציה מ- (הבעיה שכבר ידוע שהיא NP-קשה, משיעור 9) אל . התוצאה: קשה לפחות כמו .
הרדוקציה. בהינתן נוסחה בצורת CNF עם פסוקיות, נחזיר את כפי שהוגדר בהגדרה 3.
שימו לב שהקלט הוא CNF כללי — לא . פסוקית יכולה להיות מכל גודל, והמרצה בחר בכוונה דוגמה שבה פסוקית אחת היא בגודל 2 "כדי שלא יבלבל אתכם שזה חייב להיות שלוש" [00:12:16].
2א. ניתוח זמן ריצה
- שלב 1 (יצירת הקודקודים) דורש צעדים: עוברים פעם אחת על הנוסחה ומייצרים קודקוד לכל מופע ליטרל. בפרט מתקיים — מספר הקודקודים חסום באורך הנוסחה, כי כל קודקוד נולד ממופע ליטרל אחד.
- שלבים 2 ו-3 (הקשתות) דורשים צעדים: עוברים על כל הזוגות של קודקודים ומחליטים לכל זוג אם להוסיף קשת (אדומה אם באו מאותה פסוקית, שחורה אם הם ליטרל ושלילתו). לכל זוג ההחלטה היא בדיקה מקומית בזמן קבוע. ומכיוון ש-, ובפרט , זה .
- סך הכול: , כלומר הרדוקציה פולינומית באורך הקלט.
הערה: בהרצאה נשאלה שאלה [00:17:40] "למה הופך ל- בריבוע?" והתשובה: . באופן כללי , ולכל קבוע זה פולינומי.
2ב. ניתוח נאותות — כיוון
תהא נוסחה בצורת CNF, ונסמן ב- את פלט הרדוקציה. נניח .
אזי קיימת השמה המספקת את . לפי ההגדרה של סיפוק CNF:
לכל פסוקית ב- קיים לפחות ליטרל אחד ש- נותנת לו את הערך .
הערה — סדר הכמתים [00:19:52]. המרצה עצר כאן במפורש: הניסוח הוא "לכל פסוקית קיים ליטרל", ולא "קיים ליטרל לכל פסוקית". ההיפוך היה טענה חזקה בהרבה (ליטרל אחד שמספק את כל הנוסחה) ופשוט לא נכונה.
נסמן ב- קבוצה המורכבת מקודקוד אחד כזה מכל פסוקית: מכל פסוקית בוחרים ליטרל אחד שהשמתו , ולוקחים את הקודקוד המתאים לו. מכיוון שיש פסוקיות ובחרנו קודקוד אחד מכל אחת, ומכיוון שקודקודים של פסוקיות שונות שונים זה מזה (כל קודקוד נוצר ממופע יחיד),
טענה: בלתי תלויה. יהיו שונים. צריך להראות שאין ביניהם קשת. יש שני סוגי קשתות בלבד:
- קשת אדומה? ב- יש בדיוק קודקוד אחד המשויך לכל פסוקית, ולכן ו- נוצרו מפסוקיות שונות. קשת אדומה מחברת רק קודקודים מאותה פסוקית, ולכן אין ביניהם קשת אדומה.
- קשת שחורה? לפי בחירת , ההשמה נותנת לשני הליטרלים המתאימים ל- ול- את הערך . אבל ליטרל ושלילתו לעולם לא מקבלים שניהם תחת אותה השמה. לכן לא ייתכן ש- ו- הם ליטרל ושלילתו, ולכן אין ביניהם קשת שחורה.
מכאן ש- בלתי תלויה, וקיבלנו קבוצה בלתי תלויה בגודל ב-.
עדיין לא סיימנו [00:25:12]. עד כאן הוכחנו רק את חצי הטענה — את חלק ה"קיים". זה בדיוק הנקודה שבה תרגיל הבית על מסתיים; כאן צריך גם את חלק ה"לכל".
טענה 2.1 (חסם המקסימליות): כל קבוצה בלתי תלויה ב- היא בגודל לכל היותר .
הוכחה (הגרסה הישירה, [00:29:26]). תהא קבוצה בלתי תלויה ב-. כל שני קודקודים המשויכים לאותה פסוקית מחוברים בקשת אדומה, ומכיוון ש- בלתי תלויה, אין ב- שני קודקודים מאותה פסוקית. לכן מכילה לכל היותר קודקוד אחד מכל פסוקית, ויש פסוקיות, ולכן .
הוכחה (הגרסה בשלילה, כפי שנרשמה בסיכום). נניח בשלילה . לפי עקרון שובך היונים, מכיוון שיש פסוקיות ו- קודקודים, קיימת פסוקית שעבורה קיימים שני ליטרלים ממנה שהקודקודים המתאימים להם שייכים ל-. אבל שניהם מאותה פסוקית, ולכן יש ביניהם קשת אדומה — בסתירה לכך ש- בלתי תלויה.
הערה מתודית חשובה [00:26:14]–[00:29:56]. סטודנטית הציעה לפתוח את ההוכחה ב"נניח בשלילה שיש קבוצה גדולה יותר", והמרצה עצר: הטענה שרוצים להוכיח היא טענת "לכל" ("לכל קבוצה בלתי תלויה..."), ולכן ההוכחה חייבת להתחיל ב"תהא קבוצה בלתי תלויה". רק אחרי שהמשתנה הוצג אפשר להניח בשלילה. "אם הטענה מתחילה ב'לכל', לעולם ההוכחה תתחיל ב'יהי/תהא'... זה מה שמציג לי את המשתנה שאני אעבוד איתו אחר כך."
שילוב שתי הטענות: קיימת קבוצה בלתי תלויה בגודל , וכל קבוצה בלתי תלויה היא בגודל . לכן , כלומר
הערה: שימו לב שטענה 2.1 נכונה לכל , גם לא ספיקה. היא תלויה אך ורק בקשתות האדומות. נשתמש בה שוב בכיוון ההפוך.
2ג. ניתוח נאותות — כיוון
נניח , כלומר . אזי קיימת בלתי תלויה ב- כך ש-.
- בלתי תלויה, ולכן בין כל שני קודקודים ב- אין קשת אדומה. מכאן ש- מכילה לכל היותר קודקוד אחד מכל פסוקית.
- מכיוון ש- ויש בדיוק פסוקיות, ולכל פסוקית לכל היותר קודקוד אחד — לפי שובך יונים (הפעם בכיוון הצפוף) מכילה בדיוק קודקוד אחד מכל פסוקית.
הערה [00:31:51]–[00:32:54]. אלה שני טיעונים נפרדים, לא אחד: הראשון (אין שניים) מגיע מאי-התלות, השני (יש בדיוק אחד) מגיע מספירה. המרצה עמד על ההפרדה: "כמה שאני יותר אפרק את הטיעון שלי, אני פחות פרון לעשות טעויות".
- בלתי תלויה, ולכן לכל אין ביניהם קשת שחורה. לכן אין ב- שני קודקודים המתאימים לליטרל ולשלילתו.
- אוסף הליטרלים המתאימים לקודקודי הוא אפוא אוסף עקבי: אין בו משתנה שמופיע גם חיובי וגם שלילי. לכן קיימת השמה המספקת את כל הליטרלים המתאימים לקודקודים ב- (למשל: לכל משתנה שמופיע באוסף נותנים את הערך שמספק את המופע שלו; לשאר המשתנים נותנים ערך שרירותי, נניח ).
- לפי סעיף 2, ב- יש קודקוד מכל פסוקית, ולכן מספקת לפחות ליטרל אחד בכל פסוקית של , כלומר מספקת את .
מכאן .
הערה — "קיימת" ולא "ניתן לקבוע" [00:34:31]–[00:35:37]. סטודנט הציע לומר "אפשר לקבוע את ההשמה", והמרצה סירב: הניסוח הזה רומז ליחידות, ואין כאן יחידות. בדוגמה הקונקרטית שלמטה יש שתי השמות שמספקות את הליטרלים של , כי המשתנה אינו מופיע ב- כלל וערכו חופשי. הניסוח הנכון הוא "קיימת השמה".
הערה — הוכחת קיום מול הוכחה אלגוריתמית [00:36:38]–[00:37:39]. בסעיף 4 ההוכחה מפסיקה להיות אלגוריתמית: לא הראינו איך בוחרים את , רק שהיא קיימת. וזה מספיק — הרדוקציה מחייבת אותנו להוכיח קיום גורר קיום, וטיעון אלגוריתמי הוא רק דרך אחת להוכיח קיום. המרצה הביא בהשוואה את המשפט "בכל עץ יש עלה", שההוכחה שלו (סכימת דרגות) אינה אלגוריתמית כלל.
2ד. סיכום המשפט
הראינו: הרדוקציה מוגדרת היטב, פולינומית, ולכל מתקיים . לכן . מכיוון ש- היא NP-קשה ו- טרנזיטיבית — לכל מתקיים ולכן — מכאן ש- היא NP-קשה.
הערה טכנית (השלמה שלנו, לא במקורות). אם ב- יש פסוקית ריקה, אין לה קודקודים כלל, ואז ולכן — וזה נכון, כי נוסחה עם פסוקית ריקה איננה ספיקה. אם פסוקית מכילה ליטרל ואת שלילתו, הזוג המתאים מחובר גם בקשת אדומה וגם בקשת שחורה; זו אותה קשת בגרף פשוט וההוכחה אינה משתנה.
משפט 3: , ולכן היא coNP-קשה
3א. למת המשלימים, ולמה בכלל מתחילים מ-
למה 3.1 (הקופסה הכחולה בעמוד 3; משיעור 21). תהא פונקציה הניתנת לחישוב בזמן פולינומי. אז
היא רדוקציה מ- ל- אם ורק אם היא רדוקציה מ- ל-.
הוכחה. רדוקציה מ- ל- פירושו: לכל , מתקיים . שקילות לוגית שקולה לשקילות של שני השלילות: , כלומר — וזה בדיוק " רדוקציה מ- ל-". החישוביות בזמן פולינומי היא תכונה של בלבד ואינה מושפעת.
בניסוח של ההרצאה [00:46:13]: "כל מה שב- הולך ל-, וכל מה שלא ב- הולך ללא-. עכשיו תסתכל על זה מהזווית ההפוכה — זו אותה רדוקציה בדיוק."
מסקנה 3.2. מכיוון ש- היא NP-שלמה, היא coNP-שלמה. אכן, יהא . אז , ולכן קיימת רדוקציה מ- ל-. לפי למה 3.1 אותה היא רדוקציה מ- ל-. לכן לכל מתקיים .
מסקנה 3.3. לכן, אם נוכיח , נקבל מטרנזיטיביות שלכל מתקיים , ומכאן ש- היא coNP-קשה.
למה דווקא ולא ? [00:46:44]–[00:49:22]. לפי למה 3.1 אלה אותה רדוקציה בדיוק, אז זו שאלה של נוחות כתיבה — והמרצה מסביר את הבחירה, וזה אחד הרגעים הכי מלמדים בשיעור. שייכות ל- היא טענת "וגם" ("קיים... וגם לכל..."). השלילה של טענת "וגם" היא טענת "או", ואת אלה לא נעים להוכיח. אם נכתוב , אז בכיוון אחד נצטרך להוכיח שייכות ל- (טענת "וגם" — מוכיחים שני חלקים, כל אחד לחוד), ובכיוון השני להשתמש בשייכות ל- (שוב "וגם" — מקבלים שני דברים). לעומת זאת היה מחייב אותנו להתעסק עם טענות "או". האנלוגיה של המרצה: טענת "וגם" היא כמו תרגיל כפל שכל אחד מהכופלים בו הוא תרגיל חיבור — שני חלקים מוכרים; טענת "או" היא חיה אחרת.
3ב. הרדוקציה
קלט: גרף ומספר .
- נוסיף ל- עוד קודקודים חדשים. נסמן ב- את קבוצת הקודקודים החדשה (כלומר הוא יחד עם הקודקודים החדשים, ו- הם החדשים בלבד, ).
- נוסיף קשתות מכל קודקוד חדש אל כל אחד מהקודקודים ב-. נסמן ב- את קבוצת הקשתות המתקבלת. שימו לב: בין הקודקודים החדשים לבין עצמם אין קשתות, ובין קודקודי לבין עצמם לא הוספנו ולא הסרנו כלום.
- נחזיר את כאשר .
האינטואיציה [00:51:47]–[00:53:21]. אנחנו רוצים ש- (כלומר: אין ב- קבוצה בלתי תלויה בגודל ) יתורגם לשאלת מקסימום. אם אין ב- קבוצה בלתי תלויה בגודל , אז המקסימום ב- הוא לכל היותר — אבל אין לנו ערובה שהוא בדיוק . לכן "שותלים" קבוצה בלתי תלויה בגודל בדיוק. סטודנט הציע להוסיף קודקודים מבודדים, והמרצה: "זה כמעט נכון" — קודקודים מבודדים היו מצטרפים לקבוצות הישנות ומגדילים את המקסימום. לכן מחברים כל קודקוד חדש לכל הקודקודים הישנים: כך הקבוצה החדשה קיימת אך אינה מתערבבת.
טיפול ב- (השלמה שלנו — אינו מופיע באף אחד מהמקורות). לכל גרף מתקיים (הקבוצה הריקה בלתי תלויה ו-), ולכן . נגדיר אפוא שעל קלט עם הרדוקציה מחזירה מחרוזת קבועה שאיננה ב-, למשל (גרף בעל קודקוד יחיד, ו-). מכאן ואילך נניח , ואז והבנייה חוקית.
3ג. ניתוח זמן ריצה
- הוספת הקודקודים: . כאן נדרשת הבחנה עדינה [00:59:54]–[01:00:24]: בגודל הייצוג של הקלט, המספר תופס רק ביטים, ולכן אסור לחסום שום דבר "באמצעות ". אבל מותר להניח בלי הגבלת הכלליות : אם אז בוודאי אין ב- קבוצה בלתי תלויה בגודל , כי אין בו בכלל קודקודים, והרדוקציה יכולה להחזיר במקרה זה מחרוזת קבועה ששייכת ל- (למשל ). לכן והוספת הקודקודים היא .
- הוספת הקשתות: לכל אחד מ- הקודקודים החדשים מוסיפים קשתות (אחת לכל קודקוד ישן), כלומר קשתות. זה גם מסדר גודל צעדים.
- סך הכול: , כלומר פולינומי בגודל הקלט.
הערה [00:56:09]. סטודנט חשב שכל קודקוד חדש מקבל קשתות; המרצה הבהיר: כל קודקוד חדש מקבל קשת לכל קודקוד ישן, כלומר קשתות, ובסך הכול .
3ד. ניתוח נאותות — כיוון
יהי ו-, ונניח — כלומר אין ב- קבוצה בלתי תלויה בגודל . צריך להוכיח , כלומר את שני חלקי ה"וגם".
(א) חלק הקיום. הקבוצה (הקודקודים החדשים) היא קבוצה בלתי תלויה ב-: הרדוקציה לא הוסיפה שום קשת בין שני קודקודים חדשים. גודלה בדיוק . לכן קיימת ב- קבוצה בלתי תלויה בגודל .
(ב) חלק ה"לכל". תהא קבוצה בלתי תלויה ב-.
ב- יש קשת בין כל קודקוד ב- ובין כל קודקוד ב- — כך בנינו. לכן אינה יכולה להכיל בו-זמנית קודקוד חדש וקודקוד ישן, ומכאן שמתקיים אחד משניים:
או
- אם : אז .
- אחרת : מכיוון שהרדוקציה לא הסירה ולא הוסיפה קשתות בין קודקודי , קבוצה שהיא בלתי תלויה ב- ומוכלת ב- היא בלתי תלויה גם ב-. ומכיוון ש-, אין ב- קבוצה בלתי תלויה בגודל , ולפי הלמה התורשתית משיעור 10 גם אין בו קבוצה בלתי תלויה בגודל גדול מ- (אם הייתה, היינו מורידים ממנה קודקודים ומקבלים אחת בגודל בדיוק). לכן .
בשני המקרים .
משני החלקים: המקסימום ב- הוא בדיוק , כלומר .
הערה — שאלת סטודנט (עומר), [01:09:51]–[01:11:54]. למה מ"אין קבוצה בגודל " נובע "אין קבוצה בגודל "? התשובה: הרדוקציה בכלל לא נוגעת בקבוצות הבלתי תלויות — היא מטפלת בגרף בלבד. הטיעון על התורשתיות הוא טיעון של ההוכחה, לא של האלגוריתם: ברמת ההוכחה אני לוקח קבוצה בלתי תלויה בגודל , מוריד ממנה קודקוד אחד, ומקבל קבוצה בלתי תלויה בגודל . המרצה חזר על ההבחנה הזו פעמיים: "האלגוריתם לא נוגע בפתרון לבעיה, הוא רק מטפל בגרף".
3ה. ניתוח נאותות — כיוון
נניח . צריך להוכיח , כלומר: לכל קבוצה בלתי תלויה ב- מתקיים . זו טענת "לכל", ולכן — כמו שהמרצה עמד על כך שוב [01:04:54] — נתחיל ב"תהא".
תהא קבוצה בלתי תלויה ב-.
- הרדוקציה לא הוסיפה שום קשת בין קודקודי (הקשתות היחידות שהוספנו יוצאות מהקודקודים החדשים). לכן , כתת-קבוצה של , היא גם קבוצה בלתי תלויה ב-.
- מהנחתנו , ולכן כל קבוצה בלתי תלויה ב- היא בגודל . בפרט .
- מכאן בפרט .
מכיוון שזה נכון לכל בלתי תלויה ב-, אין ב- קבוצה בלתי תלויה בגודל , כלומר .
3ו. סיכום המשפט
הרדוקציה מוגדרת היטב, פולינומית, ולכל קלט מתקיים . לכן , ולפי מסקנות 3.2–3.3 — היא coNP-קשה.
מסקנה מיידית. היא גם NP-קשה וגם coNP-קשה. שתי התכונות האלה יחד הן שיוצרות את המצב המוזר של המשפט הבא.
משפט 4: אם ורק אם
זהו התרגיל שהמרצה נתן בכיתה [01:12:44] וגם פתר. שימו לב לצורת השאלה: מבקשים להראות שטענה על מחלקות סיבוכיות שקולה לבעיה פתוחה. המרצה מדגיש [01:13:17]: הצעד הראשון בתרגיל כזה הוא לבחור את הבעיה הפתוחה הנכונה. כאן המועמדת הטבעית היא ולא , "כי לא מוזכרת פה בכלל".
4א. כיוון : אם אז
נשתמש פעמיים בלמת עזר:
למה 4.1. סגורה תחת : אם ו- אז . הוכחה. תהא הרדוקציה מ- ל-. לפי למה 3.1, היא גם רדוקציה מ- ל-. מכיוון ש-, מתקיים , ומכיוון ש- סגורה תחת (שיעור 7) נקבל , כלומר .
למה 4.2. אם אז , וכן להפך. הוכחה. נניח , ותהא . אז , ולכן , ולכן לפי ההגדרה . קיבלנו , ויחד עם ההנחה — שוויון. הכיוון השני סימטרי לחלוטין.
כעת נניח , ונחלק לשני מקרים.
מקרה 1: . לפי משפט 3, היא coNP-קשה, כלומר לכל מתקיים . מכיוון ש- סגורה תחת ו-, נקבל לכל , כלומר . לפי למה 4.2, .
מקרה 2: . לפי משפט 2, היא NP-קשה, כלומר לכל מתקיים . לפי למה 4.1, . לכן , ולפי למה 4.2 שוב .
בשני המקרים .
הערה [01:19:33]–[01:22:15]. סטודנט שאל למה מקרה 2 עובד. התשובה של המרצה: זה "משחק משלימים" — אם אז , והיא coNP-קשה, וחוזרים למקרה 1. שתי הדרכים נכונות; כאן הובאה הגרסה הישירה עם למה 4.1.
4ב. כיוון : אם אז
תחילה הבחנה [01:22:49]: אם אז , ולכן די להוכיח .
נשתמש בפירוק מהגדרה 2:
כאשר היא אוסף הזוגות שבהם כל קבוצה בלתי תלויה ב- היא בגודל .
(א) — משיעור 7 (העד הוא קבוצת הקודקודים; האימות בודק שגודלה ושאין בין אבריה קשת, בזמן פולינומי).
(ב) . נראה ש-. לפי ההגדרה, היא אוסף הזוגות שבהם קיימת ב- קבוצה בלתי תלויה בגודל לפחות . זו בדיוק עם במקום . אפשר לומר זאת בשתי דרכים, ושתיהן הוזכרו בהרצאה [01:28:04]:
- באמצעות רדוקציה: הפונקציה ניתנת לחישוב בזמן פולינומי (הוספת למספר בייצוג בינארי), והיא רדוקציה מ- ל-. מכיוון ש- ו- סגורה תחת , נקבל .
- באמצעות מאמת ישיר: העד הוא קבוצת קודקודים ; המאמת בודק ש- ושלכל מתקיים . אורך העד פולינומי, וזמן האימות פולינומי.
לכן .
(ג) הפעלת ההנחה. מההנחה נובע .
(ד) סגירות לחיתוך. סגורה תחת חיתוך. בפירוט: אם עם מאמתים ואורכי עדים , נגדיר מאמת ל- שמקבל עד באורך , מפצל אותו, ומריץ את על ואת על , ומקבל אם ורק אם שניהם קיבלו. הזמן והאורך פולינומיים, ו- אם ורק אם קיימים שני עדים כאלה.
לכן .
4ג. מה זה אומר בפועל
מסקנה 4.3. אילו ידענו ש-, היינו מקבלים מיד — בעיה פתוחה. לכן:
- אסור לומר ש- היא NP-שלמה. NP-שלמות דורשת שייכות ל-, וזו בדיוק הנקודה שאנחנו לא יודעים. המרצה נשאל על כך ישירות [00:42:27] וענה "אני באמת לא יודע — זו שאלה פתוחה".
- מסקנה 4.4. אם אז . אכן, סגורה תחת , ו- היא NP-קשה, ולכן כל מקיימת ולכן . (יחד עם משפט 1 זה נותן: אם אז ואז — עקבי עם NP-שלמותה של .)
התמונה הכללית של הבעיות הפתוחות [01:14:19]–[01:15:52]. המרצה שרטט את מה שידוע ומה שלא: שלוש שאלות פתוחות בו-זמנית: האם ? האם ? והאם ? "תיאורטית יכול להיות שיש בעיה שהיא גם ב- וגם ב- והיא לא ב-. המצב פה הרבה יותר מורכב ממה שהיה בחישוביות, שם בדיוק."
דוגמאות ותרגילים מהשיעור
דוגמה 1: הרצת הרדוקציה מקצה לקצה
זו הדוגמה שעל הלוח ובעמוד 1 בסיכום. הנוסחה: כאן . הפסוקית הרביעית היא בגודל בכוונה, כדי להזכיר שהרדוקציה עובדת ל-CNF כללי.
שלב 1 — קודקודים. מופע ליטרל קודקוד. קודקודים, מסודרים בשורות לפי פסוקית:
| פסוקית | קודקודים |
|---|---|
| , , | |
| , , | |
| , , | |
| , |
שלב 2 — קשתות אדומות (קליקה בכל שורה), קשתות:
שלב 3 — קשתות שחורות (ליטרל שלילתו), קשתות:
| משתנה | מופעים חיוביים | מופעים שליליים | קשתות |
|---|---|---|---|
| — | אין |
סך הכול , . הפלט: .
כיוון (מהשמה לקבוצה). ההשמה שנבחרה בכיתה [00:22:31]: נבדוק שהיא מספקת: — ; — ; — ; — .
נבחר מכל פסוקית ליטרל מסופק אחד:
כאשר הוא ב-, הוא ב-, הוא ב-, ו- הוא ב-.
נבדוק ידנית שכל ששת הזוגות אינם קשתות:
| זוג | אותה פסוקית? | ליטרל ושלילתו? | קשת? |
|---|---|---|---|
| לא () | מול — לא | אין | |
| לא () | מול — לא | אין | |
| לא () | מול — לא | אין | |
| לא () | מול — לא | אין | |
| לא () | מול — אותו ליטרל, לא שלילתו | אין | |
| לא () | מול — לא | אין |
השורה החמישית היא הנקודה הכי חשובה בטבלה: קשת שחורה מחברת ליטרל לשלילתו, ולא שני מופעים של אותו ליטרל. אחרת הרדוקציה לא הייתה עובדת כלל.
לפי טענה 2.1 כל קבוצה בלתי תלויה כאן היא בגודל , ומצאנו אחת בגודל ; לכן ו-.
כיוון (מהקבוצה להשמה). נניח שקיבלנו את הזו כ"קופסה שחורה". הליטרלים המתאימים הם — אין בהם משתנה שמופיע גם חיובי וגם שלילי. לכן קיימת השמה שמספקת את כולם: . המשתנה נשאר חופשי, ולכן יש כאן שתי השמות מספקות — זו עם וזו עם [00:35:02]. וזו בדיוק הסיבה שבניסוח ההוכחה כותבים "קיימת השמה" ולא "ניתן לקבוע את ההשמה". ומכיוון שב- יש קודקוד מכל פסוקית, כל פסוקית מסופקת, כלומר .
בחירה חלופית. בפסוקית יכולנו לבחור את במקום [00:23:04]; נקבל , שגם היא בלתי תלויה בגודל . אין יחידות — ולא נדרשת.
דוגמה 2: מופע לא ספיק, מקצה לקצה
- קודקודים: (מ-), (מ-). .
- קשתות אדומות: אין — כל פסוקית מכילה ליטרל אחד בלבד, ואין בה זוגות.
- קשתות שחורות: (ליטרל ושלילתו).
- הפלט: .
(הגרף הוא קשת אחת), ולכן ו-. ואכן . שימו לב שכאן דווקא הקשת השחורה היא זו שמונעת את הקבוצה בגודל — בדיוק כפי שצריך, כי חוסר הסיפוק נובע מהתנגשות בין ליטרל לשלילתו.
דוגמה 3: הרצת הרדוקציה
מופע "כן". על , . מתקיים , ולכן . הרדוקציה מוסיפה קודקוד חדש ומחברת אותו ל-. מתקבל , ו- הוא הפלט. אכן , ולכן .
מופע "כן" שבו הגרף המקורי הוא זה שקובע. (מסלול ), . מתקיים (הקבוצה ), ולכן אין קבוצה בגודל ו-. מוסיפים קודקודים , כל אחד מחובר ל- אך לא זה לזה. עכשיו:
- בלתי תלויה בגודל ;
- בלתי תלויה בגודל ;
- אין קבוצה בגודל : קבוצה בלתי תלויה חייבת להיות כולה בצד החדש (ואז ) או כולה בצד הישן (ואז ).
לכן ו-. שימו לב ששני המקרים בהוכחה נתנו כאן בדיוק את אותו החסם — זה מותר לגמרי, ההוכחה דורשת רק .
מופע "לא". , . מתקיים , ולכן . הרדוקציה מוסיפה קודקוד המחובר ל-, ומחזירה . אבל נשארה בלתי תלויה ב- (לא הסרנו קשתות ולא הוספנו בין ל-), ולכן ו-. שני הצדדים ענו "לא" — כנדרש.
תרגיל 1 (מהשיעור): הראו כי אם ורק אם
זהו בדיוק משפט 4, והפתרון המלא בסעיף המשפטים. הדגשים שהמרצה נתן לתרגילים מהסוג הזה [01:13:17]:
- קודם כול — לזהות את הבעיה הפתוחה שאליה שואפים. כאן: , כי אינה מופיעה בטענה.
- בכיוון "אם השפה במחלקה" — לחלק למקרים לפי איזה איבר של האיחוד מתקיים, ובכל מקרה להשתמש בקשיוּת מהצד השני.
- בכיוון "אם המחלקות שוות" — לפרק את השפה לחיתוך של רכיב ב- ורכיב ב-, ואז ההנחה מאחדת אותם.
תרגיל 2 (השלמה מתבקשת): מדוע לא הראינו ?
פתרון. אפשר, וזו למעשה אותה רדוקציה — לפי למה 3.1, כל רדוקציה מ- ל- היא רדוקציה מ- ל- ולהפך. הסיבה שבחרנו את הניסוח שכן בחרנו היא נוחות הוכחה: שייכות ל- היא טענת "וגם", ולכן נוח גם להוכיח אותה (מוכיחים שני חלקים) וגם להשתמש בה (מקבלים שני חלקים). שייכות ל- היא טענת "או", ואיתה פחות נעים לעבוד — צריך לפצל למקרים בלי לדעת מראש איזה מהם מתקיים [00:47:16].
הערות מהשיעור
- [00:00:34]–[00:03:43] — "פרקו את המקסימום לפרימיטיבים". ההערה המרכזית של השיעור. "מקסימום זה לא משהו שאני רוצה לעבוד איתו." הפירוק ל"קיים וגם לכל" הוא מה שמייצר את כל התוצאות הבאות.
- [00:01:36] — אל תדברו על אובייקט לפני שהצהרתם על קיומו. תיקון לניסוח של סטודנט. "אתה מדבר על אובייקט שמבחינתי עוד אין לו משמעות."
- [00:07:55] — הרדוקציה לא פותרת כלום. לשאלה "מה הרדוקציה מחזירה?" סטודנט ענה "קבוצת קודקודים". המרצה: "הוא לא יכול להחזיר קבוצת קודקודים. הרדוקציה לא פותרת שום דבר." הפלט הוא מופע של הבעיה השנייה — כאן גרף ומספר.
- [00:08:58] — קודקוד למופע, לא למשתנה. ליטרל שחוזר בכמה פסוקיות מקבל כמה קודקודים.
- [00:15:28] — "תריצו לעצמכם, תלושו את זה בידיים." ההמלצה החוזרת של המרצה לפני ניתוח נאותות.
- [00:19:52] — סדר הכמתים. "לכל פסוקית קיים ליטרל", לא "קיים ליטרל לכל פסוקית".
- [00:20:55]–[00:21:59] — להוכחה יש גישה, לאלגוריתם אין. נקודה שהמרצה הדגיש כ"תמיד ככה, בכל הרדוקציות שעשינו": בהוכחת הנאותות מותר לנו להשתמש בהשמה המספקת ובקבוצה הבלתי תלויה, למרות שהאלגוריתם עצמו אינו רואה אותן. ההוכחה חיה מעל האלגוריתם.
- [00:26:14]–[00:29:56] — טענת "לכל" מתחילה ב"תהא". גם אם בסוף רוצים להניח בשלילה. "זה מה שמציג לי את המשתנה." המרצה חזר על התיקון הזה שוב בכיוון השני של הרדוקציה השנייה [01:04:54].
- [00:32:54] — לפרק את הטיעון. "כמה שאני יותר אפרק את הטיעון שלי, אני פחות פרון לעשות טעויות." גם כשהתשובה נכונה, דרך הגעה מקוצרת היא הרגל שיפיל אתכם במקום אחר.
- [00:34:31]–[00:35:37] — "קיימת" ולא "ניתן לקבוע". "ניתן לקבוע" מרמז על יחידות שאיננה קיימת. בדוגמה יש שתי השמות.
- [00:36:38]–[00:37:39] — הוכחת קיום אינה חייבת להיות אלגוריתמית. "במדעי המחשב הרבה פעמים נוח לי לעשות הוכחת קיום אלגוריתמית כי זו השפה שאני מדבר, אבל היא לא חייבת." הדוגמה הנגדית: "בכל עץ יש עלה" — הוכחה בסכימת דרגות, לא אלגוריתמית.
- [00:40:49]–[00:41:51] — עד כמה לנמק במבחן? שאלת סטודנט. התשובה הכנה: "אין לי תשובה נוסחתית. צריך לנמק מספיק כדי שאני אדע שאתה יודע על מה אתה מדבר. ברגע שהשתכנעתי — you can get away with a lot." אבל המבנה חייב להיות מבנה — זה מה שמשדר שאתם יודעים מה הסדר הטבעי של הדברים.
- [00:41:51] — הקשר לתרגיל הבית. הרדוקציה מ- הופיעה כבר בתרגיל בית 2, שם עבור ; ההבדל היחיד כאן הוא הוספת חלק המקסימליות.
- [00:42:27]–[00:44:32] — "אני באמת לא יודע." לשאלה אם המרצה ענה שזו שאלה פתוחה, ובמפורש: אילו ידענו זאת, היינו מקבלים .
- [00:46:44]–[00:49:22] — למה בוחרים לנסח רדוקציה בכיוון מסוים. "הבחירות שאני עושה לא שרירותיות. לפעמים הן שרירותיות ואז אני אומר שזה שרירותי לגמרי — אבל תבינו שיש חשיבה מאחורי הבחירה." והאנלוגיה: טענת "וגם" היא תרגיל כפל שכל כופל בו הוא תרגיל חיבור.
- [00:52:50] — "קודקודים מבודדים? כמעט נכון." ההצעה של סטודנט הייתה כמעט הבנייה הנכונה; החיבור לכל הקודקודים הישנים הוא מה שמונע מהקבוצה החדשה להתערבב בישנה.
- [00:59:54]–[01:00:24] — היזהרו מגודל ייצוג של מספר. "הגודל של בייצוג הוא , אז אני לא יכול באמת לחסום דרכו שום דבר." הפתרון: להניח בלי הגבלת הכלליות , כי אחרת התשובה טריוויאלית.
- [01:09:51]–[01:11:54] — שאלת סטודנט (עומר). "האלגוריתם לא נוגע בקבוצות הבלתי תלויות, הוא רק מטפל בגרף." הטיעון "מורידים קודקוד מקבוצה בלתי תלויה ומקבלים קבוצה בלתי תלויה קטנה יותר" הוא טיעון של ההוכחה, ברמת ההגדרה — לא פעולה שהאלגוריתם מבצע. המרצה סימן זאת כ"ממש ממש חשוב".
- [01:14:19]–[01:15:52] — מפת הבעיות הפתוחות. מוכלת ב-, אבל לא ידוע אם בשוויון; לא ידוע אם ; ולא ידוע אם קיימת שפה ב- שאינה ב-. "בחישוביות היה , , והחיתוך היה בדיוק — פה זה לא המצב."
- [01:29:07] — אנקדוטה לסיום. המרצה סיפר על נואם ידוע שבשולי הנאום שלו נמצאה הערה לעצמו ליד טיעון חלש. המסר בהקשר של המבחן: תדעו על מה אתם מדברים ותכתבו בביטחון — אבל שהביטחון יהיה מכוסה בתוכן. (התמלול האוטומטי משבש את הנוסח המדויק של ההערה.)
פערים בין הסיכום להקלטה
- מקור: ההקלטה [00:04:14]–[00:05:51]. הפער: הטיעון "אם אז " (סריקה על עם פקטור נוסף) נאמר בהרצאה ואינו מופיע בסיכום כלל. ההכרעה: נכלל כמשפט 1, כי בלעדיו לא ברור מה בדיוק המקור לקושי של .
- מקור: ההקלטה [00:12:16] מול הסיכום, עמוד 1. הפער: בתמלול הפסוקית הרביעית נשמעת כ-, אך בסיכום — ובכוונה המפורשת שהמרצה הצהיר עליה שנייה קודם ("בואו נעשה אחד שהוא בגודל שתיים") — היא . ההכרעה: נלקחה גרסת הסיכום. באופן דומה, התמלול [00:14:56] מזכיר קשת בין ל-, אך ב- אין מופע של ואין קשת כזו.
- מקור: הסיכום, עמוד 1 מול עמודים 2–3. הפער: הקשתות "ליטרל–שלילתו" מצוירות בציור בעיפרון כחול אך נקראות "קשתות שחורות" בטקסט ההוכחה ובהרצאה. ההכרעה: אומץ המינוח אדומות/שחורות בכל הקובץ, כדי שהטקסט וההוכחות יהיו עקביים.
- מקור: הסיכום, עמוד 1 מול ההקלטה. הפער: הסיכום משתמש באות פעמיים — גם לקבוצת הקודקודים וגם להשמה המספקת (""). ההכרעה: ההשמה סומנה כאן ; קבוצת הקודקודים נשארה , כדרישת הסימון של הסיכום.
- מקור: הסיכום, עמוד 2. הפער: חסם המקסימליות מובא שם בשלילה בלבד (שובך יונים). בהרצאה [00:29:26] המרצה הוסיף מפורשות את הגרסה הישירה ואמר שהיא עדיפה מבחינת מבנה. ההכרעה: שתי הגרסאות מובאות, הישירה ראשונה.
- מקור: הסיכום, עמוד 3 (הקופסה הכחולה). הפער: למת המשלימים רשומה שם ללא הוכחה וללא הצמדה למקום השימוש. ההכרעה: הוכחה במלואה (למה 3.1) והוצמדה לשתי הנקודות שבהן היא משמשת — מסקנה 3.2 ולמה 4.1.
- מקור: שני המקורות. הפער: המקרה ברדוקציה השנייה יוצר פלט שאינו מופע חוקי. ההכרעה: הושלם בגוף השיעור — עבור הרדוקציה מחזירה מחרוזת קבועה שאיננה ב-. באופן דומה, ההנחה (שנאמרה בהרצאה [01:00:24] רק לצורך זמן הריצה) נוסחה כאן כטיפול מפורש במקרה .
- מקור: תוספת שלנו. הפער: אף אחד מהמקורות אינו דן בפסוקית ריקה או בפסוקית המכילה ליטרל ואת שלילתו. ההכרעה: נוספה הערה טכנית קצרה אחרי משפט 2 — שני המקרים אינם פוגמים בנאותות.
- מקור: ההקלטה [01:28:04]. הפער: המרצה השאיר את ההצדקה ש- ברמת "בשלוש מילים אתה מסביר למה זה ב-". ההכרעה: נכתבו שתי ההצדקות במלואן (רדוקציה , ומאמת ישיר), וכן פורטה הוכחת הסגירות של לחיתוך, שנאמרה בהרצאה במילה אחת.
- מקור: הנחיית הרכז מול המקורות. הפער: הרכז צפה שיעור על קירוב ל-Max Independent Set (חסם מסוג Turán, שיטה הסתברותית) והנחה
prereq_lessons: [7, 10, 13, 18]. ההכרעה: בשיעור אין קירוב, אין הסתברות ואין אקראיות; הוא כולו רדוקציות ומחלקות משלימות. נרשמו[7, 9, 10, 21], והפער נרשם גם ב-open_questions.
סיכום ונקודות למבחן
הדברים שכדאי לזכור בעל פה
- , ומיד לפרק: קיימת קבוצה בלתי תלויה בגודל , וגם כל קבוצה בלתי תלויה היא בגודל .
- : קודקוד לכל מופע ליטרל, קליקה אדומה בכל פסוקית, קשת שחורה בין ליטרל לשלילתו, והמספר הוא = מספר הפסוקיות.
- : מוסיפים קודקודים, מחברים כל אחד מהם לכל הקודקודים הישנים ולא זה לזה, ומחזירים .
- היא NP-קשה וגם coNP-קשה, ולכן .
- אין לומר " NP-שלמה" — שייכותה ל- שקולה לבעיה פתוחה.
המלכודות הסטנדרטיות
- לשכוח את חצי המקסימליות. ההוכחה ש- מסתיימת אחרי בניית בגודל ; ההוכחה ש- לא — חייבים גם את .
- לפתוח טענת "לכל" בהנחה בשלילה. תמיד קודם "תהא קבוצה בלתי תלויה", ורק אחר כך, אם רוצים, "נניח בשלילה".
- לכתוב "ניתן לקבוע את ההשמה". הניסוח הנכון הוא "קיימת השמה"; אין יחידות.
- להפוך את כיוון הרדוקציה. פירושו ש- קשה יותר. כדי להוכיח קושי של מפחיתים אל .
- לחשוב שקשת שחורה מחברת שני מופעים של אותו ליטרל. לא — רק ליטרל ושלילתו. בלי זה הקבוצה בדוגמה לא הייתה חוקית.
- לחסום זמן ריצה באמצעות . בייצוג הקלט תופס ביטים. חוסמים באמצעות .
- לשכוח שהרדוקציה השנייה לא מחברת את הקודקודים החדשים זה לזה. אם נחבר גם ביניהם, הקבוצה החדשה לא תהיה בלתי תלויה וההוכחה תיפול.
צ'ק-ליסט: מה סטודנט צריך לדעת לעשות אחרי השיעור
- לפרק בעיית "מקסימום/מינימום" לטענת קיום וטענת "לכל", ולזהות שזו טענת "וגם".
- לבנות את עבור CNF נתון, לספור קודקודים וקשתות, ולהריץ את שני כיווני הנאותות על מופע קונקרטי.
- להוכיח את שני חלקי השייכות ל-, כל אחד בנפרד.
- להשתמש בלמת המשלימים כדי להפוך רדוקציה בין שפות לרדוקציה בין משלימותיהן, ולהסיק coNP-קשיות מ-NP-שלמות של .
- להוכיח טענות מהצורה " אם ורק אם [בעיה פתוחה]": לבחור את הבעיה הפתוחה, לחלק למקרים לפי איבר האיחוד, ולפרק את לחיתוך של רכיב ב- ורכיב ב-.
- לנמק זמן ריצה של רדוקציה במונחי ולא במונחי .
