NP ביניים

בתורת הסיבוכיות, NP ביניים היא מחלקת כל בעיות ההכרעה במחלקה  NP שאינן נמצאות ב-P וגם אינן NP-שלמות (NPC). המחלקה של בעיות אלו נקראת NPI. נשים לב שאם P=NP, אזי NPI היא ריקה.
הכיוון השני גם כן נכון, כלומר אם , אזי NPI אינה ריקה. תוצאה לא טריוויאלית זו נובעת ממשפט לדנר, שהוכח בשנת 1975 על ידי ריצ'רד לדנר. משפט לדנר קובע שאם , אזי NPI אינה ריקה.

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

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

נגדיר שפה - 

ברור שאם הפונקציה f חשיבה בזמן פולינומי אזי .

נגדיר את הפונקציה f כך: 
. עבור  נגדיר את :

אם  אז נשאיר את 

אחרת יש לנו שני מקרים: 
 (כלומר ערך זוגי), נבדוק האם קיים קלט x,  כך ש-
 מקבלת את x וגם  אי-זוגי או , או
 דוחה את x וגם  זוגי או 
אם קיים כזה x, אזי . אחרת .
 (כלומר ערך אי זוגי), נבדוק האם קיים קלט x,  כך ש-
 וגם מתקיים  אי-זוגי או 
 וגם  זוגי וגם 
אם קיים כזה x, אזי בדומה למקודם, . אחרת .
עכשיו נסביר מדוע זה עובד.

ראשית כל נשים לב שאין קשר בין הפונקציות  לפונקציה 

מתקיים שהסדרה של המכונות הפולינומיות שלנו לא יכולות לפתור את SAT, מכיוון שהנחנו ש- , ולכן יש גם אינסוף xים שהמכונה נכשלת עליהם, כלומר לכל מספר טבעי n קיים x באורך גדול או שווה ל-n שהמכונה נכשלת עליו. לכן אם המכונה מקבלת את x אבל x בכלל לא ב-SAT, אז מתקיים שהמכונה הזאת כבר לא תוכל להכריע את השפה שהגדרנו A, מכיוון ש-x יהיה בשפה A (שהרי  זוגי וגם x לא ב-SAT).

באופן אנלוגי נותנים את התנאי השני. אם המכונה לא מקבלת את x אבל x כן ב-SAT, אז מצאנו שוב x שהמכונה  נכשלת עליו. אחרי שהבנו איך הבניה מפרידה את SAT מכל מכונה פולינומית, נסביר בקצרה את העניין עם הפונקציה . השימוש בפונקציה הזו נועד כדי שנוכל לסנן עוד מילים מהשפה, כדי שהיא לא תהיה NPC (שלמה). לכן בכל תנאי, במקום לדרוש המילה תהיה או לא תהיה ב-SAT, אנחנו דורשים שהמילה תהיה או לא תהיה ב-A, כלומר מוסיפים את הדרישה ש- זוגי. ברור שנמצא x כזה, כי הנחנו ש-, אז אין לכל מכונה פולינומית יש קלט x עבורו היא מחזירה תשובה לא נכונה.

עתה סיימנו להוכיח רעיונית שהשפה A אינה נמצאת ב-P. נרצה להוכיח שהשפה גם אינה NPC, כלומר לא קיימת רדוקציה פולינומית מ-SAT אל A.
כמו שהגדרנו מקודם, יש לנו רשימה של כל הפונקציות הפולינומיות הקיימות. אם השפה A היא אכן NPC אזי אחת מהפונקציות היא רדוקציה פולינומית מ-SAT אל A. לכן אנחנו מחפשים עבור כל פונקציה  קלט x עבורו הפונקציה לא מהווה רדוקציה ל-A (וכתוב למעלה איך עושים את זה פורמלית בדיוק). כעת נותר להוכיח שהתנאים לבסוף מתקיימים, כלומר שאין איזה i עבורו  כן מהווה רדוקציה ל-SAT. לכל פונקציה  שהיא רדוקציה ל-SAT, מההנחה ש  אורך הפלט של הפונקציה  גדל, ולכן בסופו של דבר נגיע ל- מספיק גדול שיהיה אי-זוגי ונגרום לכך ש- לא תהיה רדוקציה טובה.

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

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

נגדיר שפה 

אנחנו נשאיר את  עד שנקיים את התנאי ה-i, ואז נקדם את  להיות 

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

 מקבל את x, אבל 
 דוחה את x, אבל 

במידה ויש כזה x, נגדיר . אחרת לא נשנה את i ונעבור ל-n הבא.

מכיוון שאנחנו בודקים רק עבור  ניתן לחשב את f בזמן פולינומי

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

לכן מילאנו את התנאי שהשפה L אינה פולינומית. כעת נניח שיש פונקציה  עושה רדוקציה פולינומית מ-SAT ל-L. נרצה להראות שזה גורר ש-SAT פתירה בזמן פולינומי (וכנגד ההנחה שלנו, כמובן)

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

עכשיו נניח שיש לנו נוסחה  כך ש. אם  לא בטווח של , אז . אחרת,  כש- ו אם ורק אם . עד כה השגנו ש. אז  אם . מאחר ש מתקיים k>j  אז . אם  אז אפשר לבדוק אם  ב-SAT ולכן גם אפשר לבדוק אם  ב-SAT. אחרת נריץ את האלגוריתם רקורסיבית (לא יותר מ-n פעמים) מכיוון שגודל הפלט גדל בין הרצה להרצה, וכל ריצה מתבצעת בזמן פולינומי.

בעיות חשודות להיות ב-NPI
תורת המספרים ואלגברה
בעיית הפירוק לגורמים
בעיית הלוג הדיסקרטי
בעיית איזומורפיזם בין גרפים וחוגים
תורת המשחקים
מציאת המנצח במשחק זוגיות
אלגוריתמים בגרפים
בעיית איזומורפיזם בין גרפים
למידת מכונה
מציאת מימד VC של בעיה
לקריאה נוספת
 Michael Sipser, Introduction to the Theory of Computation, Thompson, 1996

הערות שוליים

קטגוריה:מחלקות סיבוכיות