שאלת P לעומת NP

‫פרק ‪15‬‬
‫שאלת ‪ P‬לעומת ‪NP‬‬
‫כפי שהזכרנו בתחילת הקורס )וכפי שאולי שמעתם בהקשרים אחרים(‪ ,‬אחת השאלות הפתוחות המרכזיות בתיאוריה‬
‫של מדעי המחשב )ויש שיאמרו – השאלה החשובה ביותר(‪ ,‬היא השאלה לגבי היחס בין המחלקות ‪ P‬ו־‪ ,NP‬שהגדרנו‬
‫לעיל‪ .‬בהתבוננות פשוטה‪ ,‬קל לראות שמתקיימת ההכלה ‪ ,P ⊆ NP‬כיוון שכל מ"ט דטרמיניסטית היא בעצמה גם‬
‫מ"ט ל"ד‪ .‬מכאן‪ ,‬שאין יתרון )מבחינת זמן החישוב( למודל הדטרמיניסטי על פני המודל הל"ד; השאלה המעניינת‬
‫היא‪ ,‬אם כן‪ ,‬האם היחס בין המחלקות הוא הכלה ממש או שוויון‪ .‬למעשה‪ ,‬אנו רוצים לדעת‬
‫האם יש למ"ט ל"ד יש יתרון משמעותי בזמן החישוב יחסית למ"ט דטר'? בפרט‪ ,‬האם ישנן שפות שניתן‬
‫להכריע באופן ל"ד בזמן פולינומי‪ ,‬אך לא ניתן להכריע אותן בזמן פולינומי בצורה דטרמיניסטית?‬
‫ראשית‪ ,‬נבהיר שלשאלה זו יש משמעות מעשית רבה‪ :‬מצד אחד‪ ,‬ישנן בעיות חשובות רבות )אנו נראה כמה מהן‬
‫בחלק זה של הקורס( שידועים עבורם אלגוריתם ל"ד יעילים‪ ,‬אך לא ידועים אלגוריתמים דטרמיניסטיים יעילים‬
‫הפותרים אותן; מצד שני‪ ,‬אין בידינו היום מכונות שמסוגלות לבצע בפועל חישובים ל"ד‪ 1 .‬בהנתן מצב זה‪ ,‬שוויון בין‬
‫המחלקות יבטיח לנו שניתן לפתור בעיות חשובות רבות בזמן יעיל; מצד שני‪ ,‬משמעותו של אי־שוויון בין המחלקות‬
‫היא שללא פריצת דרך קונספטואלית שתאפשר חישוב ל"ד מעשי‪ ,‬ישנן בעיות חשובות רבות שלא נוכל לפתור‬
‫בצורה יעילה‪2 .‬‬
‫בנוסף‪ ,‬נעיר שבניגוד להבדל בין מודל עם סרט אחד למודל עם כמה סרטים‪ ,‬למשל‪ ,‬שם יכולנו להראות שהבדל‬
‫זמן הריצה הוא פולינומי לכל היותר‪ ,‬החסם שמתקבל מהוכחת השקילות )בכוח החישוב( בין מ"ט דטר' למ"ט ל"ד‬
‫הוא אקספוננציאלי‪ .‬המשמעות היא ששאלת היעילות אינה עניין "קטנוני" של "חוסר סבלנות לחכות שהמחשב‬
‫יסיים"‪ :‬כדי להדגים זאת‪ ,‬נניח שיש לנו קלט באורך ‪ 400‬ביטים‪ .‬אלגוריתם הרץ בזמן ‪ n3‬יסיים בתוך ‪64,000,000‬‬
‫צעדים )כלומר‪ ,‬על מחשב מודרני יסיים את הריצה בזמן שאינו עולה על מספר דקות(; לעומת זאת‪ ,‬אם האלגוריתם‬
‫דורש זמן של ‪ ,2n‬מספר הצעדים הנדרשים הוא מספר בן כ־‪ 120‬ספרות עשרוניות‪ ,‬מה שאומר שגם על המחשב‬
‫המהיר ביותר היום‪ ,‬אלגוריתם כזה ידרוש מספר שנים בן למעלה מ־‪ 100‬ספרות‪ .‬נעיר שקלט בן ‪ 400‬ביטים אינו‬
‫נחשב לקלט ארוך במיוחד; זהו גודל של קובץ בן ‪ 50‬בתים בסך הכל‪.‬‬
‫‪15.1‬‬
‫איפיון נוסף של המחלקה ‪NP‬‬
‫בנוסף לניסוח של שאלת ‪ P‬לעומת ‪ NP‬כשאלה העוסקת בהבדל בין מודלים חישוביים‪ ,‬ניתן להציג את השאלה גם‬
‫באופן שונה‪ .‬לשם כך‪ ,‬אנו נציג איפיון נוסף של המחלקה ‪ ;NP‬נתחיל בלהגדיר מחלקה חדשה‪ ,‬אותה נסמן ב־ ‪,NP0‬‬
‫‪1‬בשנים האחרונות ישנה התעניינות במודל חישוב קוונטי‪ ,‬הפועל בצורה הנראית דומה למודל הל"ד‪ .‬עם זאת‪ ,‬לא ברור האם כל‬
‫אלגוריתם ל"ד ניתן למימוש ע"י מחשב קוונטי‪ ,‬ובנוסף‪ ,‬נראה שמבחינה פיזיקלית ישנם קשיים משמעותיים בפיתוח של מחשב כזה בעל יותר‬
‫מכמה ביטים של זכרון‪ .‬לכן נראה שגם אם פיתוח מחשב קוונטי שיוכל לשמש לצרכים מעשיים הוא אפשרי‪ ,‬זהו אינו פתרון שצפוי להיות‬
‫בר־ישום בעתיד הקרוב‪.‬‬
‫‪2‬עם זאת‪ ,‬אין להסיק מכך שהמצב בו ‪ P = NP‬הוא "טוב" והמצב בו ‪ P 6= NP‬הוא "רע"‪ ,‬שכן ליחס בין המחלקות ישנן גם השלכות‬
‫אחרות‪ .‬למשל‪ ,‬במצב בו ‪ P = NP‬לא תיתכן הצפנה בטוחה )לפחות מבחינה תיאורטית(!‬
‫ולאחר מכן נראה שמחלקה זו זהה‪ ,‬למעשה‪ ,‬למחלקה ‪.NP‬‬
‫הגדרה ‪ .15.1‬נגדיר את המחלקה ‪ NP0‬באופן הבא‪ .‬שפה ‪ L‬תהיה שייכת ל־ ‪ N P 0‬אם קיים אלגוריתם דטרמיניסטי‬
‫‪ A‬ושלושה קבועים ‪ b, c, d ∈ N‬כך שמתקיים‪:‬‬
‫‬
‫‪ .1‬עבור כל זוג מחרוזות ‪ ,x, y‬הרצת )‪ A(x, y‬מסתיימת בתוך ‪ O |(x, y)|d‬צעדים ומחזירה תשובה )‪ 0‬או ‪.(1‬‬
‫‪ .2‬לכל ‪ x ∈ L‬קיימת מחרוזת ‪ y‬כך ש־‪ |y| ≤ |x|c + b‬וכן ‪.A(x, y) = 1‬‬
‫∈ ‪ x‬ולכל מחרוזת ‪.A(x, y) = 0 ,y‬‬
‫‪ .3‬לכל ‪/ L‬‬
‫כלומר‪ ,‬עבור ‪ L‬קיים יחס בינארי חסום פולינומית ‪ RL‬שניתן להכרעה בזמן פולינומי‪ ,‬ומקיים‪:‬‬
‫‪x ∈ L ⇔ ∃y : (x, y) ∈ RL‬‬
‫‪∀x :‬‬
‫דרך אחדת להציג את ההגדרה היא לומר ש־ ‪ L ∈ NP0‬אם יש לה את התכונה הבאה‪ :‬ישנו "אלגוריתם בדיקה"‪,‬‬
‫שבהנתן קלט ו"עדות" )או "הוכחה"( קצרה לגבי שייכותו לשפה‪ ,‬מאפשר לבדוק בזמן יעיל האם הקלט באמת שייך‬
‫לשפה או לא‪ .‬עבור כל קלט בשפה יש עדות )קצרה – באורך פולינומי יחסית לקלט( שתגרום לאלגוריתם להשתכנע‬
‫שהקלט אכן בשפה‪ ,‬ואילו עבור קלטים שאינם בשפה‪ ,‬שום עדות אינה משכנעת את האלגוריתם‪.‬‬
‫נוכיח כעת‪ ,‬כי המחלקה ‪ NP0‬שהגדרנו זהה‪ ,‬למעשה‪ ,‬למחלקה ‪ NP‬שהגדרתה מבוססת על חישוב ל"ד‪.‬‬
‫משפט ‪.NP0 = NP .15.2‬‬
‫הוכחה‪ .‬אנו נדרשים להראות שוויון בין קבוצות; לכן נראה הכלה דו כיוונית‪.‬‬
‫)⊆( תהי ‪ ,L ∈ NP0‬אזי קיים אלגוריתם ‪ A‬ובנוסף קבועים ‪ b, c, d‬כמובטח בהגדרה‪ .‬נבנה אלגוריתם ל"ד ‪B‬‬
‫שיכריע את ‪ L‬בזמן פולינומי‪.‬‬
‫)‪:B(x‬‬
‫‪ .1‬נחש באופן ל"ד מחרוזת ‪ y‬בעלת לא יותר מאשר ‪ |x|c + b‬תוים‪.‬‬
‫‪ .2‬הרץ את )‪ A(x, y‬והחזר את תשובתו‪.‬‬
‫ראשית‪ ,‬נשים לב שאלגוריתם זה אכן מסיים בזמן פולינומי‪" :‬ניחוש" ‪ y‬בשלב )‪ (1‬דורש ‪c‬‬
‫צעדים‪ .‬כעת‬
‫‪ O(|x| ) c·d‬‬
‫‬
‫‪c‬‬
‫‪d‬‬
‫|‪.O (|x| ) = O |x‬‬
‫מתקיים ש־) ‪ ,|(x, y)| = O(|x|c‬ולכן זמן הריצה של ‪ A‬בשלב )‪ (2‬הוא לא יותר מאשר‬
‫הואיל ו־‪ c, d‬הם קבועים‪ ,‬זהו זמן פולינומי‪ .‬בנוסף‪ ,‬מובן ש־‪ B‬מכריע נכונה את ‪3 .L‬‬
‫)⊇( תהי ‪ ,L ∈ N P‬אזי קיים אלגוריתם ל"ד ‪ B‬שמכריע את ‪ L‬כך שכל חישוב שלו על קלט ‪ x‬עוצר תוך לכל היותר‬
‫‪ |x|c + b‬צעדים‪ ,‬עבור קבועים ‪ b, c‬כלשהם‪ 4 .‬כמו כן‪ ,‬נשים לב שאת סדרת הבחירות הל"ד שמבצע האלגוריתם‬
‫ניתן לייצג בעזרת מחרוזת‪ .‬נגדיר אלגוריתם דטרמיניסטי שיפעל באופן הבא‪:‬‬
‫)‪:A(x, y‬‬
‫‪ .1‬הרץ את האלגוריתם הל"ד ‪ B‬על הקלט ‪ ,x‬כאשר הבחירות הל"ד נקבעות ע"י ‪.y‬‬
‫‪ .2‬החזר את התשובה שהתקבלה‪.‬‬
‫מובן שזהו אלגוריתם דטרמיניסטי )שכן יש לנו שיטה קבועה כיצד בוחרים בכל מקום שישנה יותר מאפשרות אחת(‬
‫ושהוא רץ בזמן פולינומי‪ .‬בנוסף‪ ,‬על פי הגדרת ‪ ,B‬אם ‪ x ∈ L‬אזי קיימת סדרת בחירות )באורך פולינומי ביחס‬
‫ל־‪ (x‬ל"ד שתוביל לקבלה; לכן קיים ‪ y‬באורך פולינומי שיהווה "עדות" שתגרום לריצה )‪ A(x, y‬לקבל‪ .‬באותו אופן‪,‬‬
‫∈ ‪ x‬לא קיים ‪ y‬כך ש־‪.A(x, y) = 1‬‬
‫מובן שעבור ‪/ L‬‬
‫‪3‬מדוע?‬
‫‪4‬מדוע ניתן להבטיח שפונקציית זמן הריצה היא מהצורה הנ"ל?‬
‫דוגמא ‪ .15.3‬השפה ‪ SAT‬היא השפה הבאה‪:‬‬
‫‬
‫‬
‫‪ φ‬היא נוסחא בוליאנית בצורת ‪ CNF‬שקיימת עבורה השמת אמת מספקת | ‪SAT = φ‬‬
‫)נזכיר שנוסחא בוליאנית בצורת ‪ CNF‬היא נוסחא המורכבת מפסוקיות שכל אחת מהן מכילה ליטרלים וביניהם‬
‫"או" כאשר בין הפסוקיות ישנו הקשר "וגם"‪ (.‬למשל‪ ,‬הנוסחא ) ‪ (x1 ∨ x2 ) ∧ (x1 ∨ x2‬היא ספיקה‪ ,‬כיוון שכל אחת‬
‫מן ההשמות ‪ x1 = 1, x2 = 0‬ו־‪ x1 = 0, x2 = 1‬מספקת אותה‪.‬‬
‫קל לראות ש־‪ :SAT ∈ NP‬על פי ההגדרה הראשונה של ‪ ,NP‬ניתן לבנות אלגוריתם ש"מנחש" באופן ל"ד‬
‫השמה עבור הנוסחא הנתונה ומקבל אם"ם ההשמה שניחש אכן מספקת את הנוסחא‪ .‬אם נרצה להראות שייכות‬
‫ל־‪ NP‬על פי ההגדרה השניה‪ ,‬נוכל להגדיר את היחס הטבעי הבא‪:‬‬
‫‬
‫‬
‫‪ y‬הוא וקטור שמהווה השמת אמת מספקת עבור ‪; RSAT = (φ, y) | φ‬‬
‫קל לראות שהיחס ניתן להכרעה בזמן פולינומי )פשוט ע"י הצבה ובדיקה( ובנוסף שלכל ‪ φ ∈ SAT‬ישנו ‪ y‬מתאים‬
‫∈ ‪ φ‬אין ‪ y‬כזה‪ .‬אנו עוד נדון בבעיה ‪ ;SAT‬בשלב זה נעיר כי‬
‫)ואורכו פולינומי יחסית ל־|‪ (|φ‬בעוד שלאף ‪/ SAT‬‬
‫לא ידוע האם קיים אלגוריתם דטרמיניסטי המכריע אותה בזמן פולינומי‪.‬‬
‫קיבלנו‪ ,‬אם כן‪ ,‬שאת בעיית ‪ P‬לעומת ‪ NP‬ניתן להציג גם בצורה נוספת‪ P :‬היא קבוצת כל הבעיות שניתן‬
‫לפתור בזמן פולינומי‪ ,‬בעוד ש־‪ NP‬היא קבוצת כל הבעיות שלכל קלט שהתשובה עליו "כן" ישנה הוכחה קצרה‬
‫שניתן לבדוק בזמן יעיל לכך שזו אכן התשובה‪ .‬מכאן‪ ,‬שאת השאלה האם ‪ P = NP‬ניתן לנסח גם כ־‬
‫האם כל שפה שניתן לבדוק עבורה "הוכחות שייכות" של קלטים בצורה יעילה‪ ,‬ניתן גם להכריע בזמן‬
‫יעיל? האם "בדיקת נכונות" ומציאת תשובה הן בעיות קלות באותה המידה?‬
‫‪15.2‬‬
‫המחלקה ‪co-NP‬‬
‫נשים לב שבניגוד לאלגוריתמים דטרמיניסטיים‪ ,‬החלפת מצבי הקבלה והדחיה באלגוריתם הכרעה ל"ד אינה יוצרת‬
‫אלגוריתם ל"ד להכרעת השפה המשלימה‪ 5 .‬גם על פי ההגדרה השניה שנתנו למחלקה ‪ ,NP‬קיום הוכחה קצרה‬
‫לשייכות של כל קלט בשפה אינה מחייבת גם קיום הוכחת "אי־שייכות" קצרה עבור קלטים שאינם בשפה‪ .‬כדוגמא‪,‬‬
‫ניתן להתבונן שוב בשפה ‪ :SAT‬כדי להוכיח שקלט שייך לשפה‪ ,‬מספיק להראות עבורו השמה מספקת )שהיא‬
‫קצרה וניתנת לבדיקה יעילה(‪ ,‬אך כיצד ניתן להוכיח בצורה יעילה שנוסחא אינה ניתנת לסיפוק?‬
‫הואיל ואנו לא יודעים להוכיח כי לכל שפה ‪ L ∈ NP‬גם ‪ ,L ∈ NP‬אנו מגדירים עבור שפות אלו מחלקה‬
‫נפרדת‪ ,‬שהשאלה לגבי זהותה ל־‪ NP‬עדיין פתוחה‪ .‬מחלקה זו נקראת ‪ ,6 co-NP‬ומכילה כל שפה ‪ L‬המקיימת‬
‫‪7 .L ∈ NP‬‬
‫‪8‬‬
‫ניתן להבחין ש־‪ P ⊆ co-NP‬וכמו כן מובן שאם מתקיים השוויון ‪ P = NP‬מתקיים גם ‪ .co-NP = NP‬גרירה‬
‫זו אינה נכונה בכיוון השני‪ :‬יתכן שיתקיים אי־השוויון ‪ P 6= NP‬וגם השוויון ‪.co-NP = NP‬‬
‫‪5‬מדוע?‬
‫‪6‬הקידומת ‪ co‬מציינת את תחילת המילה ‪ – complement‬משלים‪.‬‬
‫‪7‬חשוב לשים לב ש־‪!co-NP 6= NP‬‬
‫‪8‬מדוע?‬