מודלים חישוביים, חישוביות וסיבוכיות - Notes
Transcription
מודלים חישוביים, חישוביות וסיבוכיות - Notes
מודלים חישוביים ,חישוביות וסיבוכיות סשה גולדשטייןsashag@cs , 20ביוני 2011 תקציר הסיכום להלן מהווה תקציר של חומר הקורס ואיני נוטל עליו כל אחריות .אתם יכולים להיעזר גם בהקלטות השיעורים וכמובן בספר הלימוד .החומר מבוסס על הרצאותיו של ד"ר גיא קינדלר ושיעורי התרגול של מר רועי פוקס. ניתן למצוא את הגרסה המעודכנת ביותר של סיכום זה ב־ Heaven־ .Notesאשמח לקבל הערות ותיקונים לסיכום ,גם אחרי מועד המבחן ,לכתובת המייל שכתובה למעלה. תוכן עניינים Iמודלים חישוביים 1 2 3 II 3 מבוא לשפות פורמליות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . קבוצות וגדלים של קבוצות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 שפות פורמליות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 אוטומטים . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . אוטומטים סופיים דטרמיניסטיים . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 אוטומטים סופיים לא דטרמיניסטיים . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 פעולות על שפות רגולריות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 למת הניפוח לשפות רגולריות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 משפט Nerode־. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Myhill 2.5 ביטויים רגולריים . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 בעיות הכרעה לגבי שפות רגולריות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7 שפות חסרות הקשר . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . דקדוקים חסרי הקשר . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 פעולות על שפות חסרות הקשר . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 צורה נורמלית של חומסקי . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 למת הניפוח לשפות חסרות הקשר . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 בעיות הכרעה לגבי שפות חסרות הקשר . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 אוטומט מחסנית . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 חישוביות 4 5 3 3 4 4 4 5 7 8 9 10 11 11 11 12 13 14 15 15 17 מכונות טיורינג . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . מכונות טיורינג "פשוטות" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 וריאציות על מכונות טיורינג . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 מכונת טיורינג אוניברסלית . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 מכונת טיורינג לא דטרמיניסטית . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 פונקציות חשיבות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Random Access Machine 4.6 כריעות ואי־כריעות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . המחלקות RE ,Rואי־כריעות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 סגירות Rו־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RE 5.2 רדוקציית מיפוי . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 אנומרטורים )מונים( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 אוניברסאליות של דקדוקים חסרי הקשר . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5 משפט רייס . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6 1 17 17 19 20 21 21 22 23 23 24 25 26 27 28 5.7 5.8 5.9 דקדוקים פורמליים . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . בעיית ה־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PCP פונקציות לא־חשיבות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IIIסיבוכיות 6 7 8 28 29 30 31 מחלקות זמן P ,ו־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NP מחלקות זמן . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 הצגת NPבאמצעות מוודאים . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 בעיות קלאסיות ב־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NP 6.3 רדוקציות מיפוי פולינומיאליות ,קושי ושלמות ב־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NP 6.4 משפט Levin־. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cook 6.5 עוד בעיות NP־שלמות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6 בעיות חיפוש . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7 סגירות של NPו־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . coNP 6.8 אינטראקטאביליות ) (Intractabilityוסימולציה בזמן . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.9 סיבוכיות זיכרון . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . מחלקות זיכרון PSPACE ,ו־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NPSPACE 7.1 שלמות ב־ ,NLרדוקציית . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LOGSPACE 7.2 שלמות ב־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PSPACE 7.3 סימולציה במקום . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4 פרוטוקולים אינטראקטיביים ורנדומיות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . מבוא לרנדומיות במכונות טיורינג . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1 מבוא לפרוטוקולים אינטראקטיביים . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 בעיית הזהות ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Identity 8.3 פולינומים . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4 שקילות נוסחאות . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5 IPו־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . coNP 8.6 שיתוף סוד . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.7 2 31 31 32 33 33 34 35 38 38 39 41 41 42 43 45 46 46 46 47 48 49 51 52 להלן מספר דוגמאות לבעיות חישוביות .במהלך הקורס ננסה להפריד בין הבעיות האלה: .1בהנתן גרף ,Gרוצים לבדוק האם יש בו מסלול אוילר. .2נתונים המספרים a1 , . . . , an , tורוצים לבדוק האם ניתן להציג את tכסכום של ת"ק של .a1 , . . . , an .3נתונות שתי סדרות מחרוזות בינאריות x1 , . . . , xn , y1 , . . . , ynורוצים לבדוק האם יש סדרת אינדקסים i1 , . . . , ikכך ש־ .xi1 , . . . , xik = yi1 , . . . , yik .4בהנתן טענה מתמטית ,רוצים לבדוק האם יש לה הוכחה. .5בהנתן תוכנית מחשב וקלט ,רוצים לבדוק האם התוכנית נכנסת ללולאה אינסופית בריצתה על הקלט. במהלך הקורס נראה שהבעיה הראשונה "קלה" מבחינה חישובית ,השנייה "קשה" אך עדיין ניתנת לפתרון ,ושלוש הבעיות האחרונות אינן ניתנות לפתרון באמצעות מחשב. חלק I מודלים חישוביים 1 מבוא לשפות פורמליות בפרק זה נראה מספר מושגי יסוד. 1.1 קבוצות וגדלים של קבוצות הגדרה |A| ≤ |B| 1.1אם קיימת f : A → Bחח"ע. | |A| = |Bאם | |A| ≤ |Bוגם |.|B| ≤ |A = |.|A | |A| < |Bאם | |A| ≤ |Bוגם |6 |B משפט ) 1.2קנטור־ברנשטיין( | |A| = |Bאםם קיימת f : A → Bחח"ע ועל. הגדרה |N| = ℵ0 1.3ונאמר שאם |A| = ℵ0אז Aבת־מניה. הערה 1.4מתקיים איפוא ש־ .|Z| = |Q| = ℵ0 הגדרה |[0, 1]| = ℵ 1.5 טענה ℵ0 < ℵ 1.6 הוכחה :קל לראות ש־ ℵ0 ≤ ℵע"י ההתאמה .f : n 7→ n1 נשתמש בטיעון האלכסון של קנטור כדי להראות שלא קיימת פונקציה על ] .f : N → [0, 1נראה זאת אפילו לגבי ) .[0, 1נכתוב בשורה את ערכי :f 0.a11 a12 a13 . . . = )f (1 0.a21 a22 a23 . . . = )f (2 0.a31 a32 a33 . . . = )f (3 . . . . . . . . . וכעת נגדיר מספר חדש x = 0.b1 b2 b3 . . .עם הדרישה .bi 6= aiiברור שאין ל־ xמקור ביחס ל־ fולכן היא אינה על. 3 1.2 שפות פורמליות הגדרה 1.7א"ב Σזו קבוצה סופית לא ריקה ,שלאיבריה נקרא אותיות או תווים. מילה מעל Σהיא המילה הריקה )ללא אותיות( המסומנת εאו איבר ב־ Σnעבור n ∈ Nכלשהו. שלהן. אם u, wמילים מעל Σאז המילה ) uwלפעמים נסמן (u · wהיא השרשור S ∗ Σזהו אוסף כל המילים מעל Σכולל המילה הריקה) .כלומר(Σ∗ = n∈N∪{0} Σn , שפה מעל Σהיא תת־קבוצה של ∗.Σ דוגמאות לשפות: .1השפה הריקה )מעל א"ב כלשהו(. .2שפת כל המילים )מעל א"ב כלשהו(. .3שפת המילים מעל } {a, bבאורך 23לכל היותר. .4שפת המילים מעל } {a, bשבהן שלוש אותיות זהות רצופות. .5שפת המספרים העשרוניים החיוביים השלמים המתחלקים ב־.3 .6שפת המספרים הראשוניים. .7שפת הטענות המתמטיות שיש להן הוכחה במערכת ההיסק של פרגה מאקסיומות .ZFC הגדרה 1.8אם ∗ L1 , L2 ⊆ Σנגדיר את הפעולות הבאות: } = {uw : w ∈ L1 , x ∈ L2 L1 · L2 L1 ∩ L2 Ln1 Σ∗ \ L1 [ = L1 ∪ L2 L1 = L∗1 }n∈N∪{0 דוגמאות לפעולות על שפות: יהיו L1שפת המילים מעל } {a, bהמתחילות ב־ aו־ L2שפת המילים מעל אותו א"ב המסתיימות ב־ .bאז L1 ∩ L2אלה מילים המתחילות ב־ aומסתיימות ב־ .bבמקרה ספציפי זה ,גם L1 · L2זה בדיוק אותו הדבר. ∗ הערה 1.9יהי Σא"ב לא ריק .אזי |Σ∗ | = ℵ0ו־ .|2Σ | = ℵ 2 אוטומטים האוטומטים שנציג בפרק זה הם מודלים חישוביים פשוטים יחסית שלא מתקרבים ליכולתו של מחשב. 2.1 אוטומטים סופיים דטרמיניסטיים הגדרה 2.1אוטומט סופי דטרמיניסטי ) (DFAהוא חמישייה סדורה ) A = (Q, Σ, δ, q0 , Fכאשר Qקבוצת מצבים סופית Σ ,הוא א"ב q0 ∈ Q ,המצב ההתחלתי F ⊆ Q ,קבוצת המצבים המקבלים ,ו־ δ : Q × Σ → Qפונקציית המעברים. דוגמאות לאוטומטים: אוטומט שמקבל את המילים שבהן ביט שחוזר על עצמו שלוש פעמים ברציפות: 4 אוטומט שמקבל את המילים שבהן מספר האפסים מתחלק ב־ 3עם שארית :1 הגדרה פורמלית של האוטומט הזה F = {q1 } ,q0 = q0 ,Σ = {0, 1} ,Q = {q0 , q1 , q2 } :ונותר להגדיר את פונקציית המעברים. נעשה זאת באמצעות טבלה: δ(q, σ) σ = 0 σ = 1 q = q0 q1 q0 q = q1 q2 q1 q = q2 q0 q2 בדרך כלל נסתפק בציור של האוטומט. הגדרה 2.2בהנתן Aעם פונקציית מעברים ,δנגדיר δ ∗ : Q × Σ∗ → Qבאינדוקציה על האורך של ∗:w ∈ Σ אם w = εאז δ ∗ (q, w) := qלכל ;q ∈ Q אם הגדרנו את ∗ δעבור מילים באורך nו־ wהיא מילה באורך ,n + 1אז נכתוב את w = uaכאשר a ∈ Σונגדיר ).δ ∗ (q, w) = δ ∗ (q, ua) := δ(δ ∗ (q, u), a הערה 2.3נאמר שבריצתו על wהאוטומט מגיע למצב qאם .δ ∗ (q0 , w) = qהאוטומט מקבל את המילה אם .δ ∗ (q0 , w) ∈ F הגדרה 2.4יהי Aאוטומט סופי דטרמיניסטי מעל .Σהשפה Lהמתקבלת ע"י Aהיא } L := {w ∈ Σ∗ : δ ∗ (q0 , w) ∈ F שפה המתקבלת ע"י DFAכלשהו נקראת רגולרית. אוסף השפות הרגולריות יסומן .REG 2.2 אוטומטים סופיים לא דטרמיניסטיים הגדרה 2.5אוטומט סופי לא דטרמיניסטי ) (NFAהוא חמישייה סדורה ) A = (Q, Σ, δ, Q0 , Fכאשר Qקבוצת מצבים סופית Σ ,א"ב, Q0 ⊆ Qקבוצת המצבים ההתחלתיים F ⊆ Q ,קבוצת המצבים המקבלים ,ו־ δ : Q × Σ → 2Qפונקציית המעברים. דוגמא לאוטומט סופי לא דטרמיניסטי: 5 הגדרה 2.6בהנתן Aעם פונקציית מעברים ,δנגדיר δ ∗ : 2Q × Σ∗ → 2Qבאינדוקציה על האורך של ∗:w ∈ Σ אם w = εאז δ ∗ (S, w) := Sלכל ;S ⊆ Q אם הגדרנו את ∗ δעבור מילים באורך nו־ wהיא מילה באורך ,n + 1אז נכתוב את w = uaכאשר a ∈ Σונגדיר )δ(q, a [ =δ ∗ (S, w) = δ ∗ (S, ua) : )q∈δ ∗ (S,u הערה 2.7נאמר שהאוטומט מקבל את המילה ∗ w ∈ Σאם ∅ =.δ ∗ (Q0 , w) ∩ F 6 הגדרה 2.8ריצה חוקית של Aעל המילה ) w = (w1 , . . . , wnהיא סדרת מצבים q1 , . . . , qn ∈ Qכך ש־ q0 ∈ Q0וגם ≤ ∀1 ≤ i ) .n, qi ∈ δ(qi−1 , wi טענה 2.9יהי NFA Aמעל w ∈ L(A) .Σאםם קיימת ריצה חוקית של Aעל wשהמצב האחרון בה שייך ל־ .F הוכחה :טריוויאלית ,אינדוקציה על אורך המילה. הערה 2.10בהגדרה שלנו של ) NFAכשמציירים אותו על דף( אנו מרשים מעברי .εניתן להשתכנע )ר' תרגול (2שאין צורך אמיתי במעברים אלה .למשל ,אם } δ(q, a) = {q 0ויש מעבר εבין q 0ל־ ,q 00אנו יכולים להרחיב את δכך ש־ } .δ(q, a) = {q 0 , q 00כלומר, השוני המרכזי של NFAמ־ DFAאינו מעברי ,εאלא היכולת "להתפצל". משפט 2.11יהי ) A = (QA , Σ, δA , Q0 , FAאוטומט סופי לא דטרמיניסטי .אזי קיים אוטומט סופי דטרמיניסטי ) B = (QB , Σ, δB , q0 , FB המקיים ) .L(B) = L(Aיתר על כן ,קיים Bכזה שעבורו | ,|QB | ≤ 2|QAוהחסם הדוק. הוכחה :נגדיר את Bכדלהלן .q0 = Q0 ,QB = 2QA .את פונקציית המעברים נגדיר כך: → QB ∗ δA )(S, a δB : QB × Σ )δB (S, a = ∗ ∗ δBומכאן מתקבל הדרוש: (S, w) = δA ולבסוף }∅ = .FB = {S ∈ 2QA : S ∩ FA 6כעת יש להראות באינדוקציה ש־ )(S, w ∗ ∗ w ∈ L(A) ⇐⇒ δA (Q0 , w) ∩ FA 6= ∅ ⇐⇒ δB )(q0 , w) ∈ FB ⇐⇒ w ∈ L(B דוגמה לדטרמיניזציה: ר' תרגיל 2שאלה 3ב'. טענה 2.12החסם במשפט הדוק ,כלומר יש משפחה אינסופית של שפות שה־ DFAהמינימלי שמזהה אותן הוא בעל מספר אקספוננציאלי של מצבים לעומת ה־ NFAהשקול. 6 הוכחה :המשפחה היא }w, u ∈ {a, b}∗ , |u| = k − 1 Lk = {wau : ה־ NFAשמזהה את Lkנראה כך: בסה"כ באוטומט הזה יש k + 1מצבים .לעומת זאת ,ב־ DFAהקטן ביותר שמזהה את Lkיש לפחות 2kמצבים .אינטואיטיבית, האוטומט צריך לזכור בכל מצב האם היה aעד אותו שלב או לא )לפחות בחלון של kאותיות אחורה צריך לזכור את כל האותיות שנקראו( .מספר האפשרויות האלה הוא .2k פורמלית :נתבונן בכל המילים Σkשמספרן 2kבמקרה שלנו ,ונניח בשלילה שיש Ak DFAשבו .|Q| < 2kאז כעת יש y 6= x ∈ Σk כך ש־ ) δ ∗ (q0 , x) = δ ∗ (q0 , yמשיקולי שובך היונים. מכך ש־ x 6= yקיים iכך ש־ .xi 6= yiבה"כ xi = aו־ .yi = bנוסיף לשתי המילים את הסיפא .z = bk−1מתקיים ש־ ∈ .yzזו הסתירה. ) δ ∗ (q0 , xz) = δ ∗ (q0 , yzאבל ברור ש־ xz ∈ Lו־ / L הערה 2.13לכאורה ,בדרך כלל אי־דטרמיניסטיות עוזרת לנו .אבל יש מקרים )גם פשוטים( שבהם לא ניתן לצמצם אוטומט דטרמיניסטי ע"י מעבר לאוטומט לא דטרמיניסטי שקול .למשל ,האוטומט הדטרמיניסטי שמקבל את } L = {akהוא בעל k + 1 מצבים ,וניתן להוכיח )באמצעות ניפוח( שגם באוטומט לא דטרמיניסטי שמקבל את Lחייבים להיות לפחות k + 1מצבים. 2.3 פעולות על שפות רגולריות ∗ בהנתן L, Mשפות רגולריות מעל א"ב ,Σנרצה לבדוק האם L ∩ M, L ∪ M, L · M, L, Lהן רגולריות. טענה L ∈ REG =⇒ L ∈ REG 2.14 הוכחה :יש אוטומט ) A = (Q, Σ, δ, q0 , Fהמקבל את .Lהאוטומט ) A0 = (Q, Σ, δ, q0 , Q \ Fזהו האוטומט המבוקש המקבל את Lולכן היא רגולרית) .כמובן ,הוכחה זו לא שלמה(. טענה L, M ∈ REG =⇒ L ∩ M ∈ REG 2.15 הוכחה :יהיו ) A = (Q, Σ, δA , q0 , FAו־ ) B = (R, Σ, δB , r0 , FBאוטומטים המזהים את L, Mבהתאמה. ) ) C = (Q × R, Σ, δC , (q0 , r0 ), FA × FBהמכונה גם "אוטומט המכפלה"( עם אזי האוטומט ))δC ((q, r), a) = (δA (q, a), δB (r, a מקבל בדיוק את .L ∩ Mתחילה נראה באינדוקציה ש־ ∗ ∗ ∗ δC ((q0 , r0 ), w) = (δA (q0 , w), δB ))(r0 , w ∗ ∗ ∗ δCולהיפך. δBולכן ((q0 , r0 ), w) ∈ FA × FB δAו־ (r0 , w) ∈ FB )זה טריוויאלי( .כעת ,אם w ∈ L ∩ Mאז (q0 , w) ∈ FA טענה L, M ∈ REG =⇒ L ∪ M ∈ REG 2.16 הוכחה :כמו הטענה הקודמת ,אלא שקבוצת המצבים המקבלים של Cתהיה ) .(FA × R) ∪ (Q × FB טענה L, M ∈ REG =⇒ L · M ∈ REG 2.17 7 הוכחה :יהיו ) A = (Q, Σ, δA , q0 , FAו־ ) B = (R, Σ, δB , r0 , FBאוטומטים המזהים את L, Mבהתאמה .נבנה C = NFA ) (Q ∪ R, Σ, δ 0 , q0 , FBכאשר δ 0מתנהגת כמו δAו־ ,δBאבל בנוסף מאפשרת מעבר εמכל q ∈ FAל־ .r0 ברור מהבנייה של האוטומט שאם מילה היא ב־ L · Mאז ישנה ריצה של האוטומט שמקבלת אותה ,ולהיפך -אם האוטומט מקבל את המילה ,אפשר לשבור אותה לשני חלקים בדיוק סביב מעבר ה־ εשבוצע עליה )שהרי אין שום חיבור אחר בין Qל־ .(R טענה L ∈ REG =⇒ L∗ ∈ REG 2.18 הוכחה :ניקח NFAשמקבל את Lונבנה ממנו NFAשנראה אותו הדבר ,אבל δמחברת במעבר־ εכל מצב מקבל שלו לכל מצב התחלתי שלו .כדי לקבל גם את εנוסיף מצב מקבל והתחלתי ללא כל מעברים ממנו. לדוגמא ,עבור האוטומט האוטומט החדש הוא 2.4 למת הניפוח לשפות רגולריות נרצה להראות שקיימות גם שפות לא רגולריות .הדבר ברור משיקולי ספירה )קבוצת האוטומטים המגדירים שפות רגולריות היא בת־מניה ,בעוד שקבוצת השפות אינה בת־מניה( ,אבל אנו מחפשים דרך לטעון על שפה ספציפית שהיא לא רגולרית. ∈ .L טענה 2.19יהי } Σ = {0, 1ו־ } .L = {0n 1n : n ∈ Nאזי / REG הוכחה :אינטואיטיבית זה ברור -האוטומט צריך "לזכור" כמה אפסים וכמה אחדים היו עד עכשיו ,וזה דורש אינסוף מצבים .פורמלית: נניח בשלילה ש־ L ∈ REGוהאוטומט ) A = (Q, Σ, δ, q0 , Fמקבל אותה ,ויהי | .k = |Qנתבונן על ריצת האוטומט על המילה .0k+1 1k+1 ∈ Lהאוטומט עובר בין k + 1מצבים במהלך הטיפול באפסים ,ואז עוד k + 1מצבים במהלך הטיפול באחדים. ב־ k + 1המצבים הראשונים יש מצב אחד שחוזרים עליו לפחות פעמיים )שובך היונים( ,ונסמן אותם qi = qjכאשר .i < j כלומר ,אחרי 0iהגענו למצב qiולאחר עוד 0j−iשוב הגענו למצב .qiכלומר ,הריצה שלנו על המילה 0i 0j−i 0k−j 1kצריכה להיות זהה לריצה על ,0i 0j−i 0j−i 0k−j 1kאז אנחנו אמורים לקבל גם אותה -אבל המילה הזאת אינה בשפה בכלל! זוהי סתירה ,ולכן נסיק שהשפה אינה רגולרית כנדרש. משפט ) 2.20למת הניפוח (Pumping Lemma ,אם Lרגולרית אז ∀i ∈ N ∪ {0} xy i z ∈ L w = xyz, |y| > 0, |xy| ≤ p ∗∃p > 0 ∀w ∈ L, |w| > p ∃x, y, z ∈ Σ הוכחה :ההוכחה דומה למה שעשינו קודם ,כאשר pייבחר להיות |Q| + 1עבור האוטומט. דוגמא לשימוש בלמת הניפוח: 8 מעל } ,Σ = {a, bנראה ש־ } ∗ L = {uu : u ∈ Σאינה רגולרית .נניח בשלילה שהיא רגולרית ,ואז קיים p > 0מהלמה .המילה ap+1 bap+1 b ∈ Lמקיימת את תנאי הלמה ,ולכן יש לה פירוק xyzכך ש־ xyמורכב מ־ a־ים בלבד ,וגם .|y| > 0 נסמן .z = ap+1−r−m bap+1 b ,y = ar ,x = amכעת אנחנו יכולים לייצר מילים שאינן בשפה ,למשל המילה xyyzלפי הלמה צריכה להיות בשפה ,אולם xyyz = ap+r+1 bap+1 bוכמובן אינה בשפה .זוהי סתירה ולכן Lאינה רגולרית. 2.5 משפט Nerode־Myhill ∗ למת הניפוח מהווה תנאי הכרחי לכך ששפה תהיה רגולרית ,אך היא אינה תנאי מספיק .למשל ,השפה L = {w ∈ {a, b} : = ) #a (wאינה רגולרית ,אך היא מקיימת את למת הניפוח .אנו רוצים תנאי הכרחי ומספיק לרגולריות. })6 #b (w ∈ .uv, wv הגדרה 2.21תהי ∗ .L ⊆ Σנאמר ש־ ∗ u, w ∈ Σשקולות ביחס ל־ Lאם לכל ∗ v ∈ Σמתקיים ש־ uv, wv ∈ Lאו / L ∈ (.v, w )בפרט עבור v = εברור ש־ v, w ∈ Lאו / L אם יש ∗ v ∈ Σשאינה מקיימת את התנאי הנ"ל ,נאמר שהיא מפרידה בין .u, w אם u, wשקולות ביחס ל־ Lנסמן .u ∼L w הערה 2.22היחס ∼Lהוא יחס שקילות על מילים ב־ ∗.Σ דוגמאות ליחס השקילות: תהי }) .L1 = {w : #a (w) ≡ 1(mod3מהן מחלקות השקילות ביחס ל־ ?L1יש שלוש מחלקות שקילות [a], [aa], [aaa] = - ] .[εראינו כבר DFAמתאים ,ולמעשה המצבים באוטומט "זוכרים" את מחלקת השקילות של המילה. תהי }) .L2 = {w : #a (w) > #b (wכאן כל ] [akעם k ≥ 0מגדירה מחלקת שקילות נפרדת .למשל a 6∼L aaשכן המילה b מפרידה ביניהן .גם כל ] [bkעם k ≥ 0מהווה מחלקת שקילות .למעשה ,יש מחלקת שקילות לכל מספר z ∈ Zהמכילה את המילים wכך ש־ .#a (w) − #b (w) = z טענה 2.23אם ∗ L ⊆ Σו־ DFA Aהמקבל את ,Lוכן המילים ∗ u, w ∈ Σמקיימות ) δ ∗ (q0 , u) = δ ∗ (q0 , wאז .u ∼L w הוכחה :לכל ∗ v ∈ Σנקבל ) ,δ ∗ (q0 , uv) = δ ∗ (q0 , wvולכן uv ∈ Lאםם ,wv ∈ Lכלומר .u ∼L w משפט Nerode) 2.24־ L ∈ REG (Myhillאםם מספר מחלקות השקילות של היחס ∼Lהוא סופי. הוכחה (⇐) :תהי DFA A ,L ∈ REGהמזהה אותה ,ו־ Qקבוצת המצבים שלו .נניח בה"כ שלכל q ∈ Qיש מילה שנסמנה wqכך ש־ .δ ∗ (q0 , wq ) = qזה בה"כ כי מצבים שאי אפשר להגיע אליהם אפשר לסלק מהאוטומט ללא שינוי השפה שלו. נסתכל על קבוצת מחלקות השקילות } .{[wq ] : q ∈ Qזו קבוצה סופית והיא מכילה את כל מחלקות השקילות של ,∼Lשכן לכל ∗ w ∈ Σאם δ ∗ (q0 , w) = qאז ] w ∈ [wqלפי הטענה הקודמת .לכן מספר מחלקות השקילות הוא סופי. )⇒( תהי ∗ L ⊆ Σשמספר מחלקות השקילות שלה לפי ∼Lהוא .nאז נראה ש־ Lרגולרית ,נציג DFAבעל nמצבים בדיוק המקבל את ,Lונראה שאין DFAכזה בעל פחות מ־ nמצבים. אם יש DFAעם פחות מ־ nמצבים שמקבל את ,Lאז יש פחות מ־ nמחלקות שקילות לפי הטענה הקודמת ,וזו סתירה .כעת נבנה אוטומט עם המצבים q0 , q1 , . . . , qn−1המתאימים למחלקות השקילות של ,∼Lכאשר ] .q0 = [εנגדיר את = )δ(q, a) = δ([w], a ] .[waנשים לב שההגדרה לא תלויה בבחירת wכך ש־ ,[w] = qשהרי אם גם [w0 ] = qאז .w0 a ∼L waאוסף המצבים המקבלים יהיה } ; {δ ∗ (q0 , w) : w ∈ Lאפשר להסתכל על זה כמחלקות השקילות המכילות מילים בשפה )שהרי אם מחלקת שקילות מכילה מילה אחת בשפה ,כל המילים בה הן בשפה(. נותר לשים לב ש־ ] δ ∗ (q0 , w) = [wבאינדוקציה קלה על אורך המילה. כעת w ∈ Lאםם ] [wמכילה מילים ב־ Lאםם [w] ∈ Fאםם ,δ ∗ (q0 , w) ∈ Fכלומר אםם כשמריצים את Aעל wמגיעים למצב מקבל .לכן L(A) = Lכנדרש. שימושים במשפט Nerode־:Myhill ∈ L = {ak : kמעל } .Σ = {aלבדיקת רגולריות נספור כמה מחלקות שקילות יש ליחס .1נתבונן בשפה }}/ {20 , 21 , 22 , . . . n t n ∈ .yzלכן .∼Lנתבונן במילים x = a2ו־ y = a2עבור .n < tיש להן סיפא מפרידה ,למשל z = a2ואז xz ∈ Lאבל / L ] .[x] 6= [yזה נכון לכל n < tולכן יש אינסוף מחלקות שקילות ,כלומר Lאינה רגולרית. .2נתבונן בשפה } .L = {w ∈ {a, b}∗ : w ends with aנסתכל על מילים x, yו־ zשעשויה להפריד ביניהן .אם zמסתיימת ∈ .xz, yzכמו כן ,יש שתי מחלקות שקילות שמופרדות ע"י - εהמילים בשפה והמילים שאינן בשפה. ב־ aאז xz, yz ∈ Lואחרת / L כל שאר ה־ z־ים לא יכולים להפריד בין מילים ,ולכן Lרגולרית ,וכמובן האוטומט המזהה אותה הוא: 9 באוטומט זה המצב המקבל מתאים למחלקת השקילות Lוהמצב ההתחלתי מתאים למחלקת השקילות .L .3מינימיזציה של :DFAנתאר אלגוריתם המקבל A DFAומייצר ממנו DFAשקול עם מספר מינימלי של מצבים .הפלט צריך להיות מחלקות השקילות ביחס ל־ ) ,L(Aשמשרות את האוטומט שראינו בהוכחת משפט Nerode־.Myhill נגדיר את היחס החדש ∼kכך ש־ ∗ x, y ∈ Σמקיימות x 6∼k yאם קיימת ∗ z ∈ Σעם |z| ≤ kהמפרידה בין המילים .היחס ,∼0למשל ,מפריד בין מילים שמלכתחילה אחת מהן שייכת לשפה והשניה לא ,כי המפריד היחיד זו המילה הריקה .עבור ∼0מחלקות השקילות הן }.{L, L עבור היחסים ∼1 , . . . , ∼kיכולות להתווסף מחלקות שקילות .האלגוריתם יראה שהיחס ∼ המקורי מתקבל בתור ∼nסופי כלשהו. • נתחיל ב־ } ∼0 ← {L, Lו־ .i ← 0 • לכל p, q ∈ Q – נאמר ש־ p ∼i+1 qאלא אם כן: – ;p 6∼i qאו – קיים σ ∈ Σכך ש־ ).δ(q, σ) 6= δ(p, σ • i ← i + 1וחוזרים על התהליך עד שלא מתקבלים יותר שינויים במהלך הלולאה הפנימית. אינטואיטיבית ,מספר מחלקות השקילות הוא סופי וברור שהתהליך הזה עוצר בשלב כלשהו ,ומתקבלת הקבוצה המינימלית של מחלקות שקילות .מהן אפשר לבנות אוטומט מצומצם לפי המצבים הנמצאים באותה מחלקת שקילות. 2.6 ביטויים רגולריים הגדרה 2.25ביטוי רגולרי מעל א"ב Σהוא מהצורה: - ”∅” .1עם השפה ∅ = ∅;L - ”ε” .2עם השפה };Lε = {ε .3עבור ,a ∈ Σהביטוי ” - ”aעם השפה };La = {a .4אם R1 , R2ביטויים רגולריים מעל ,Σאז ”) ”(R1 ) ∪ (R2הוא ביטוי רגולרי -עם השפה ;L(R1 )∪(R2 ) = LR1 ∪ LR2 .5אם R1 , R2ביטויים רגולריים מעל ,Σאז ”) ”(R1 ) · (R2הוא ביטוי רגולרי -עם השפה ;L(R1 )·(R2 ) = LR1 · LR2 .6אם Rביטוי רגולרי מעל ,Σאז ” ∗) ”(Rביטוי רגולרי -עם השפה ∗) ;L(R)∗ = (LR .7אם Rביטוי רגולרי מעל ,Σאז ” ”(R)+מוגדר להיות כינוי לביטוי הרגולרי ” ∗).”R(R דוגמאות לביטויים רגולריים: • שפת המילים המכילות abaומסתיימות ב־ bמתוארת ע"י R = (a ∪ b)∗ aba(a ∪ b)∗ b • שפת כל המילים מעל } {a, bמתוארת ע"י ∗)R = (a ∪ b • שפת המילים שאינן מכילות שני אפסים רצופים ,ואם אינן ריקות מתחילות באפס ומסתיימות באחד מתוארת ע"י = R ∗) ((0(1)+ • שפת המילים הלא ריקות באורך גדול מ־ 1המתחילות ומסתיימות באותה אות מתוארת ע"י הביטוי ∪ R = (a(a ∪ b)∗ a) ∪ (b(a )b)∗ b • נשים לב גם ש־ )”L(”∅∗ ”) = L(”ε משפט 2.26יהי Rביטוי רגולרי מעל .Σאזי .LR ∈ REG הוכחה :באינדוקציה שלמה על האורך של .R עבור |R| = 1הביטויים הרגולריים ” ”∅”, ”ε”, ”aמשרים כמובן שפות רגולריות. עבור |R| = nכאשר הוכחנו כבר עבור > ,nמתבוננים בשלושת המקרים: R = (R1 ) ∪ (R2 ) .1נובע מכך שאיחוד של שפות רגולריות הוא רגולרי ,ולגבי R1 , R2משתמשים בהנחת האינדוקציה. R = (R1 ) · (R2 ) .2נובע מכך ששרשור של שפות רגולריות הוא רגולרי. R = (R1 )∗ .3נובע מכך שהסגור של קלייני של שפה רגולרית הוא שפה רגולרית. בזאת השלמנו את האינדוקציה. 10 הערה 2.27מהמשפט מקבלים גם תהליך רקורסיבי לבניית NFAהמזהה את הביטוי כולו מה־NFA־ים המזהים את חלקי הביטוי השונים. משפט 2.28לכל שפה רגולרית Lקיים ביטוי רגולרי Rכך ש־ .L = LR הוכחה) :לא פורמלית( נתבונן ב־ DFAשמזהה את ,Lונרצה "להיפטר" מכל המצבים פרט למצב ההתחלתי והמצב המקבל .כדי להיפטר ממצב ביניים מסוים ,נכתוב על הקשת החדשה שמדלגת על המצב את הביטוי הרגולרי המתאים .ניתן להראות פורמלית שתהליך זה מביא לביטוי רגולרי שנשאר על הקשת האחת מהמצב ההתחלתי למצב המקבל. הערה 2.29המעבר בין שני הייצוגים של שפה -בתור אוטומט ובתור ביטוי רגולרי -עלול לקחת זמן אקספוננציאלי) .לא הוכחנו זאת(. 2.7 בעיות הכרעה לגבי שפות רגולריות נשאל מספר שאלות לגבי שפות רגולריות ,ובהמשך נחזור עליהן גם לגבי מודלים מורכבים יותר. .1ריקנות :בתרגיל 2ראינו כיצד אפשר לבדוק האם השפה של DFAמסוים היא ריקה -מחפשים מהלך בגרף מהמצב ההתחלתי אל המצב המקבל. .2הכלה :בהינתן DFA־ים A, Bכיצד נבדוק האם )?L(A) ⊆ L(B השאלה שקולה לבדיקה ∅ = ) .L(A) ∩ L(Bאנו יודעים למצוא את המשלים של אוטומט דטרמיניסטי באופן יעיל ,ואת החיתוך באמצעות אוטומט מכפלה ,והצטמצמנו בחזרה לבדיקת ריקנות. .3אוניברסאליות :באופן דומה אפשר לבדוק האם ∗ L(A) = Σע"י בדיקה האם ∅ = ).L(A .4הבעיות הנ"ל לגבי NFAאינן כה טריוויאליות .כפי שראינו בתרגיל ,11ניתן לבנות NFAששפתו היא ההשמות הלא־מספקות של נוסחת .3CN Fכלומר ,בדיקה האם ∗ L(A) = Σעבור A NFAמאפשרת לבדוק האם נוסחת 3CN Fניתנת לסיפוק ,בעוד ש־ 1 .3SAT ∈ N P C לעומת זאת ,אנו יודעים לבדוק ריקנות של NFAבזמן פולינומי )ואף במקום לוגריתמי( ,באופן דומה ל־ ) DFAחיפוש בגרף( .ניתן להסיק שאנו לא יודעים למצוא משלים של NFAבזמן שאינו אקספוננציאלי. 3 שפות חסרות הקשר שפות חסרות הקשר משמשות למשל לתיאור של שפות תכנות ,והן חזקות יותר מהשפות הרגולריות .למשל ,כבר השפה הפשוטה של הסוגריים המאוזנים אינה רגולרית )לפי למת הניפוח( ,אבל ניתנת לתיאור ע"י דקדוק חסר הקשר. 3.1 דקדוקים חסרי הקשר הגדרה 3.1דקדוק חסר הקשר ) (CFGהוא רביעייה ) G = (V, Σ, R, Sכאשר Vקבוצה סופית של משתנים Σ ,קבוצה סופית של טרמינלים ומתקיים ∅ = R ,V ∩ Σקבוצה סופית של כללי גזירה ,ו־ Sמשתנה ההתחלה. כלל גזירה הוא זוג סדור המכיל משתנה יחיד מצד שמאל שלו ומצד ימין הוא מכיל מחרוזת מעל הא"ב }.Σ ∪ V ∪ {ε דוגמאות לדקדוקים חסרי הקשר: .1שפת הסוגריים המאוזנים: →A )(A → A AA → A ε → A .2השפה }:L = {an bm : m ≥ n →A → aAb A → B A → Bb B → ε B 1ולמעשה ,במופעים קודמים של הקורס אף הופיעה הוכחה שבדיקת אוניברסאליות של NFAהיא שלמה ב־ .PSPACEלכן לא ניתן לצפות לפתרון יעיל של הבעיה אלא אם כן .P = PSPACE 11 .3שפת כל המילים מהצורה ai bj ckכאשר i, j ≥ 0ו־ :k ≥ 1 →S ABC → S aA → A ε → A bB → B ε → B cC c → → C C הגדרה 3.2השפה המתאימה לדקדוק חסר הקשר Gתסומן ) L(Gומכילה בדיוק את המילים מעל Σהמתקבלות כאשר מתחילים במחרוזת Sובכל שלב מפעילים כלל גזירה ע"י החלפת המשתנה שבו במחרוזת שבצד ימין שלו ,עד שנשארים עם טרמינלים בלבד. שפה המתאימה לדקדוק חסר הקשר תיקרא שפה חסרת הקשר ) .(CFLקבוצת השפות חסרות ההקשר תסומן .CF L הערה 3.3ניתן לדבר גם על עץ הגזירה של מילה מסוימת בשפה ,שבו טרמינלים ומשתנים: משפט REG ⊂ CF L 3.4 הוכחה :תהי L ∈ REGו־ DFA Aשמקבל אותה .A = (Q, Σ, δ, q0 , F ) ,נבנה G CFGעם אותה השפה .נסמן ) G = (Q, Σ, R, q0 ונגדיר ב־ Rאת כללי הגזירה: לכל a ∈ Σ, q1 , q2 ∈ Qשעבורם δ(q1 , a) = q2יהיה כלל גזירה מהצורה .q1 → aq2בנוסף יהיה כלל q → εלכל .q ∈ F נשאר להראות ש־ ) .L(A) = L(Gהטענה העיקרית היא שאחרי tצעדי גזירה נקבל מחרוזת מהצורה wqכאשר ),q = δ ∗ (q0 , w או מחרוזת מהצורה wכאשר ) .w ∈ L(Aאת זה אפשר להראות באינדוקציה על מספר צעדי הגזירה ,ולכן ).L(G) ⊆ L(A להיפך ,לכל ∗ w ∈ Σהמילה wqעבור ) q = δ ∗ (q0 , wנגזרת מ־ ,Gושוב מראים זאת באינדוקציה על אורך המילה. הערה 3.5דקדוק חסר הקשר נקרא דקדוק שמאלי אם כל כלל גזירה הוא מהצורות A → εאו A → wBכאשר wמכילה רק טרמינלים ו־ Bמשתנה .קל לראות שדקדוק שמאלי נותן שפות רגולריות בלבד) .תרגיל ,4שאלה (.5 הגדרה 3.6דקדוק חסר הקשר הוא חד־משמעי אם כל מילה ניתנת לגזירה בדרך אחת בלבד .למשל ,הדקדוק הבא אינו חד משמעי, →A → AA|(A)|ε A משום שניתן לגזור ממנו את המילה )( במספר דרכים .למשל A → (A) → () :היא דרך אחת ,ו־ )( → ) A → AA → (Aהיא דרך שניה. הערה 3.7לא לכל שפה חסרת הקשר יש דקדוק חסר הקשר חד־משמעי שמתאר אותה) .לא ראינו מדוע(. 3.2 פעולות על שפות חסרות הקשר ∗ בהנתן L, Mשפות חסרות הקשר מעל א"ב ,Σנרצה לבדוק האם L ∩ M, L ∪ M, L · M, L, Lהן חסרות הקשר ,בדומה למה שעשינו עבור שפות רגולריות. טענה L, M ∈ CF L =⇒ L1 ∪ L2 ∈ CF L 3.8 הוכחה :ראשית נשנה את שמות המשתנים כדי שמשתני L1 , L2יהיו קבוצות זרות .ואז ,אם S1 , S2המשתנים ההתחלתיים אז ניצור משתנה חדש Sשיהיה המשתנה ההתחלתי של L1 ∪ L2וכללי גזירה חדשים S → S1ו־ .S → S2קל לראות שהדקדוק המתקבל הוא הדרוש. 12 הערה 3.9לעומת זאת ,שפות חסרות הקשר אינן סגורות לחיתוך )ולכן גם לא למשלים( .למשל ,נראה בהמשך שהשפה } {an bn cn אינה חסרת הקשר ,אבל היא מתקבלת בתור } {al bn cn } ∩ {an bn clשהן שתיהן שפות חסרות הקשר .למשל ,להלן הדקדוק עבור השפה } :{an bn cl →S → aAb|ε A → cC|ε C ובאופן דומה אפשר למצוא דקדוק חסר הקשר ל־ } .{al bn cn טענה L, M ∈ CF L =⇒ L · M ∈ CF L 3.10 הוכחה :בדומה להוכחה המתאימה לשפות רגולריות ,כאשר משתמשים באוטומט מחסנית. טענה L ∈ CF L =⇒ L∗ ∈ CF L 3.11 הוכחה :בדומה להוכחה המתאימה לשפות רגולריות ,כאשר משתמשים באוטומט מחסנית. טענה L ∈ REG, M ∈ CF L =⇒ L ∩ M ∈ CF L 3.12 הוכחה) :תרגיל ,5שאלה (1סקיצת ההוכחה :בניית מכפלה של DFAשמזהה את Lו־ PDAשמזהה את .Mכיוון שה־ DFAלא צריך מחסנית ,אין "התנגשות". 3.3 צורה נורמלית של חומסקי אנו מחפשים צורה פשוטה לתאר דקדוקים כדי שיהיה לנו יותר קל להוכיח דברים על שפות חסרות הקשר .אם נראה שכל דקדוק חסר הקשר ניתן להצגה בצורה פשוטה יחסית שגם חוסמת בקלות את גודל המילה המתקבלת משרשרת גזירה חסומה ,זה יקל עלינו מאוד. הגדרה 3.13נאמר שדקדוק חסר הקשר הוא בצורה נורמלית של חומסקי ) (Chomsky Normal Formאם כל כללי הגזירה שלו הם מהצורות הבאות: S → ε .1ואין חוקים נוספים מהצורה A → ε A → BC .2כאשר B, Cמשתנים שאינם המשתנה ההתחלתי אבל יכולים להיות זהים או שווים ל־ A A → σ .3כאשר ) σ ∈ Σטרמינל( טענה 3.14לכל דקדוק חסר הקשר קיים דקדוק חסר הקשר בעל אותה שפה שהוא בצורה נורמלית של חומסקי. הוכחה :נראה אלגוריתם להפיכת CFGלצורה נורמלית של חומסקי: .1נוסיף משתנה התחלתי חדש S0וכלל גזירה .S0 → Sקל לראות שהשפה לא משתנה כתוצאה מזה ,אלא רק הארכנו כל גזירה של מילה בעוד שלב אחד. .2לכל כלל גזירה מהצורה ) A → εכאשר (A 6= S0נעבור על כל הכללים מהצורה B → wAuונוסיף להם את החוק B → wu )כאשר w, uמחרוזות כלשהן( .2את הכלל A → εנוכל להסיר כעת ,וגם זה לא פוגע בשפה. .3לכל כלל מהצורה ) A → Bכאשר (3 A 6= Bנעבור על כללים מהצורה C → wAuונוסיף את הכלל .C → wBuלבסוף נוכל להסיר את הכלל A → Bוגם זה לא פוגע בשפה .את זאת נעשה גם עבור כללים שבהם .B ∈ Σ .4לכל כלל מהצורה A → v1 . . . vkכאשר k > 2נוסיף משתנים חדשים u2 , . . . , uk−1ואת כללי הגזירה החדשים ,A → v1 u2 u3 → v3 u4 ,u2 → v2 u3וכו' עד .uk−1 → vk−1 vkכמובן ,לא פגענו בשפה. .5נוסיף משתנים מיוחדים Xσלכל σ ∈ Σואת הכללים .Xσ → σבכל כלל שבו באגף ימין יש σנחליף אותו ב־ .Xσ נותר להוכיח )לא עשינו זאת( שהתהליך מסתיים .את זה שהשפה לא משתנה קל לראות. הערה 3.15כתוצאת לוואי ,אנו מגלים האם דקדוק גוזר את המילה הריקה .אם קיבלנו את הכלל S0 → εאז כן ,אחרת לא. 2לדוגמה ,אם היה הכלל B → ACADאז נצטרך להוסיף את הכללים B → CAD ,B → ACDו־ .B → CD 3שכן כללים מהצורה A → Aאפשר להסיר מהדקדוק ללא פגיעה בשפה. 13 דוגמת הרצה של האלגוריתם: נתחיל מהדקדוק הבא: →S → ASA|aB S → B|S A → b|ε B הכלל ה"תקין" היחיד הוא .B → bנתחיל את התהליך. .1ניצור כלל S0 → Sחדש. .2נתקן את B → εע"י הסרתו על חשבון החוקים A → εו־ .S → a .3נתקן את הכלל A → εע"י הסרתו על חשבון החוקים S → ASו־ .S → SA .4נתקן את הכלל A → Bע"י חסרתו על חשבון החוקים .S → ASB ,S → BSA ,S → BSB ,S → SB ,S → BS אנו רחוקים מסיום אך נעצור כאן. 3.4 למת הניפוח לשפות חסרות הקשר גם עבור שפות חסרות הקשר למת הניפוח עובדת ,אבל יהיה קצת יותר קשה להראות מדוע .הצורה הנורמלית של חומסקי מאוד תעזור לנו כדי לתאר היטב את עץ הגזירה של הדקדוק דנן. למה 3.16תהי .L ∈ CF Lאז ∀i ∈ N ∪ {0} uxi yz i v ∈ L w = uxyzv, |xz| > 0, |xyz| ≤ p ∃p > 0 ∀w ∈ L, |w| > p הוכחה :תהי ∗ L ⊆ Σחסרת הקשר ויהי Gדקדוק חסר הקשר ) G = (Q, Σ, R, Sשגוזר אותה .יהי nהאורך המקסימלי של מחרוזת המופיעה בכלל גזירה מתוך .R נגדיר את קבוע הניפוח להיות p := n|Q|+1ונראה שהוא מקיים את הדרוש .תהי w ∈ Lעם .|w| > pיהי Tעץ גזירה מינימלי הגוזר את wע"פ ) Gמינימלי מבחינת כמות הצמתים בעץ(. הגובה של :Tאם העץ בגובה lאז מספר העלים הוא לכל היותר ) nlבגלל החסם על אורך כלל גזירה( .לכן הגובה של Tהוא גדול מ־ ,|Q| + 1כי המילה באורך < pוכל אות בה היא עלה בעץ הגזירה. לכן ,יש מסלול S0 , S1 , . . . , Sl = Sבאורך < | |Qהמתחיל בעלה ומגיע לשורש של .Tלפי עיקרון שובך היונים ,חייב להיות איזה אינדקס ראשון iכך שקיים אינדקס i > jהמקיים ,Si = Sjכלומר iהוא המקום הראשון שבו חוזרים על משתנה שכבר ראינו במהלך המסלול. נסמן ב־ Tiאת תת־העץ שתלוי על Siוב־ Tjאת תת־העץ התלוי על .Sjכעת ידועה לנו החלוקה של wמהלמה .כל הטרמינלים משמאל ל־ Tiיהיו uואלה שמימין לו יהיו .vבתוך Tiכל הטרמינלים משמאל ל־ Tjיהיו ,xמימין ל־ Tjיהיו ,zובתוך Tjיהיו .y עתה נפנה לטענות הלמה: .1הגובה של Tiהוא ≥ |Q| + 1ולכן מספר העלים בו ≥ .p = n|Q|+1כלומר |xyz| ≤ p ,כפי שרצינו. .2נניח בשלילה ש־ ,xz = εאז אם נחליף את Tiב־ Tjנקבל עץ גזירה חוקי ע"פ Gשעדיין גוזר את wולבטח יש בו פחות צמתים )לפחות חסכנו את הצומת ,(Siוזו סתירה .מותר לנו לעשות את ההחלפה הזאת כי Si = Sjוהצומת הקודם ל־ Siהשתמש בכלל גזירה שבו אותו משתנה .לכן .|xz| > 0 .3על מנת לנפח ב־ i = 0עלינו להחליף את Tiב־ ,Tjבדיוק כמו ב־ ) .(2קל לראות שזה מספק מילה בשפה מאותם שיקולים. .4על מנת לנפח ב־ i = 2עלינו להדביק במקום Tjעותק של ) Tiעם Tjבפנים( .קל להשתכנע שזה עובד גם עבור i > 2 )אינדוקציה(. דוגמאות לשימוש בלמה: .1נתבונן בשפה הבאה מעל }:Σ = {a, b, # }L = {w#u : w, u ∈ {a, b}∗ ∧ ∃x, y : w = xuy נוכיח שהיא אינה חסרת הקשר בעזרת למת הניפוח .נניח בשלילה שהיא חסרת הקשר .מהלמה קיים pכך שאפשר לפרק את המילה w = ap bp #ap bp ∈ Lל־ w = uvxyzלפי תנאי הלמה .אז |vxy| ≤ pונחלק למקרים: 14 vxy .1נמצא משמאל ל־ .#במקרה זה אפשר לנפח את vyבאמצעות i = 0וזה מקטין את הביטוי ,ap bpמה שגורם לזה שהמילה כבר לא בשפה ,כי הביטוי מימין ל־ #כבר לא יכול להיות תת־מחרוזת של ביטוי קצר יותר משמאל. vxy .2נמצא מימין ל־ .#במקרה זה אפשר לנפח באמצעות i = 2וזה שוב גורם לצד ימין להיות ארוך יותר מצד שמאל ,ולכן הוא לא יכול להיות תת־מחרוזת. vxy .3מכיל את .#גם כאן נחלק למקרים: )א( vמכיל .#אפשר לנפח עם i = 0ולקבל מילה שאין בה בכלל #ולכן כמובן אינה בשפה. )ב( yמכיל .#כנ"ל. )ג( xמכיל .#זה אומר ש־ vמורכב רק מ־ b־ים ו־ yמורכב רק מ־ a־ים .שוב נחלק למקרים: |v| > 0 .iאז ננפח ב־ i = 0ואז בצד שמאל הקטנו את מספר ה־ b־ים ובצד ימין לא ,ולכן לא יכול להיות שצד ימין הוא תת מחרוזת של צד שמאל. |y| > 0 .iiאז ננפח ב־ i = 2ואז הגדלנו את מספר ה־ a־ים מימין ולא שינינו את מספרם משמאל ושוב המילה אינה בשפה. בזאת השלמנו את ההוכחה ש־ Lאינה חסרת הקשר. ∈ } .L = {an bn cn : n ∈ Nנניח בשלילה ש־ L ∈ CF Lויהי pקבוע הניפוח שלה .נעיין במילה .2נוכיח ש־ / CF L .w = a5p b5p c5pע"פ למת הניפוח אפשר לחלק אותה ל־ .w = uxyzvגם ב־ xוגם ב־ zיופיעו אותיות מסוג אחד בלבד ,ואז הניפוח )למשל עם (i = 2ייצור מצב שמספר מופעי אות אחת לפחות יגדל ומספר מופעי אות אחת לפחות לא ישתנה .המילה המתקבלת אינה ב־ ,Lבסתירה. 3.5 בעיות הכרעה לגבי שפות חסרות הקשר .1נתחיל מבעיית ה־ - membershipהאם מילה wנגזרת מהדקדוק ?G תחילה נשים לב שמספיק להסתכל על דקדוקים בצורה נורמלית של חומסקי. נתאר אלגוריתם תכנון דינאמי לבעיה .נחזיק טבלה n × nעבור המילה ,w = σ1 . . . σnכאשר בתא ה־ i, jיהיו כל המשתנים של Gשמהם יש גזירה של σi . . . σjבאמצעות כללי הגזירה של .G מקרה הבסיס הוא כאשר i = jומחפשים את המשתנים שמהם אפשר לגזור את ;σiשאר המקרים מתקבלים בצורה רקורסיבית: עבור j > iהמשתנים Xשמהם אפשר לגזור את σi . . . σjהם כאלה שעבורם יש כלל מהצורה X → Y Zופירוק = σi . . . σj σi . . . σk σk+1 . . . σjכך שרקורסיבית אפשר לגזור מ־ Yאת σi . . . σkומ־ Zאת .σk+1 . . . σj Sמופיע בתא ה־ 1, nשל הטבלה אםם אפשר לגזור את המילה wמ־ .G .2באופן די דומה אפשר לפתור גם את בעיית הריקנות. נתחיל בכך ש"נסמן" את כל הטרמינלים .לכל כלל גזירה מהצורה A → X1 . . . Xkנבדוק האם X1 , . . . , Xkכולם מסומנים .אם כן ,נסמן גם את .Aנמשיך באופן כזה עד שלא מסמנים יותר שום דבר. אם Sסומן ,השפה של הדקדוק אינה ריקה; אחרת ,היא ריקה) .הוכחת נכונות וזמן ריצה -שהוא פולינומיאלי באורך הייצוג של הדקדוק -בסיכום תרגול (.4 דרך אחרת היא להעביר את הדקדוק לצורה נורמלית של חומסקי ,ולבדוק האם S0 → εזהו כלל בדקדוק. .3בהמשך נראה שלא ניתן להכריע את בעיית ה־ - ALLCF Gכלומר לקבוע האם דקדוק מסוים מקבל את כל המילים. 3.6 אוטומט מחסנית אוטומט מחסנית ) PDA־ (Pushdown Automatonהוא אוטומט לא דטרמיניסטי עם זיכרון עזר בצורת מחסנית .נשים לב שמילת הקלט אינה מופיעה במחסנית )בניגוד למכונות טיורינג שנראה בהמשך( .נשתמש בו לזיהוי שפות חסרות הקשר. הגדרה 3.17אוטומט מחסנית הוא שישייה סדורה ) A = (Q, Σ, Γ, δ, q0 , Fכאשר Qקבוצת מצבים סופית Γ ,א"ב המחסנית Σ ,א"ב השפה q0 ∈ Q ,מצב התחלה F ⊆ Q ,קבוצת המצבים המקבלים ,ו־ δפונקציית המעברים }.δ : Q × Σ ∪ {ε} × Γ ∪ {ε הערה 3.18בגלל הגדרה זו ,אין לנו צורך במספר מצבי התחלה .בניגוד ל־ ,NFAכאן אנו "מרפדים" את המילה ב־ ε־ים ,כלומר החישוב יכול להתחיל במעבר .ε דוגמא לאוטומט מחסנית: אוטומט המחסנית הבא מזהה את השפה } L = {wwRמעל הא"ב }:Σ = {a, b 15 בציורים של אוטומט מחסנית ,כשנכתוב ) a, b → cכאשר } (a ∈ Σ ∪ {ε}, b, c ∈ Γ ∪ {εהכוונה היא שכאשר האוטומט קורא את האות aמהקלט ושולף מהמחסנית את האות ,bהוא עובר למצב הבא ודוחף את האות cלמחסנית. הגדרה 3.19קונפיגורציה של PDAמורכבת מהמצב שבו הוא נמצא ,וגם מתוכן המחסנית .הקונבנציה שלנו תהיה לכתוב את תחתית המחסנית מצד ימין ואת ראשה בצד שמאל .למשל ,האוטומט מהדוגמה הקודמת לאחר קריאת המילה abיהיה בקונפיגורציה ).(qw , ba$ צעד חישוב הוא מעבר חוקי בין הקונפיגורציות .צעד חישוב חוקי על האות αהוא מעבר ) (q1 , s1 ) → (q2 , s2כאשר s1 = asו־ .(q2 , b) ∈ δ(q1 , α, a) ,a, b ∈ Γ ∪ {ε} ,s2 = bs חישוב מקבל הוא חישוב חוקי המסתיים במצב מקבל ,ושפת האוטומט היא אוסף המילים שעבורן קיים חישוב מקבל) .ולהיפך ־ מילה אינה מתקבלת ע"י האוטומט אםם כל חישוב שלו עליה לא מקבל(. הערה 3.20בהחלט ייתכן שנרצה בצעד מסוים להוציא אות מסוימת ולהכניס למחסנית אותה +אות נוספת .במודל שלנו ,נצטרך לעשות את זה באמצעות שני מצבים ־ בראשון נוציא את האות ונחזיר אותה ,ובשני נכניס את האות הנוספת שרצינו. משפט 3.21יהי Gדקדוק חסר הקשר .אזי קיים Aאוטומט מחסנית כך ש־ ).L(A) = L(G הוכחה) :בערך( אפשר להכליל אוטומט מחסנית )ע"י הוספה של הרבה מצבים( כדי שנוכל בכל שלב לקרוא מילה )ב־ ∗ (Γמהמחסנית ולכתוב מילה למחסנית. אם כך ,נוכל לבנות את האוטומט הבא עם Σהטרמינלים של הדקדוק: כאשר הקשת → ε, Aמשוכפלת לכל כלל גזירה מהצורה → Aוהקשת a, a → εמשוכפלת לכל טרמינל .a ∈ Σ כעת ,אם מוציאים מהמחסנית משתנה אז אנחנו "מנסים לגזור אותו" ואם מוציאים טרמינל מהמחסנית אז משווים אותו לאות הנוכחית במילה ,וממשיכים. משפט 3.22יהי Aאוטומט מחסנית .אזי קיים דקדוק חסר הקשר Gכך ש־ ).L(G) = L(A הוכחה :נניח בה"כ ש: .0בתחילת הריצה Aדוחף $למחסנית. .1ל־ Aמצב מקבל יחיד .זה בה"כ כי אחרת נוסיף מצב מקבל וקשתות ε, ε → εמהמצבים המקבלים הקודמים למצב המקבל החדש. A .2מקבל רק אם המחסנית ריקה .זה בה"כ כי אחרת נוסיף מצב מקבל חדש ומהמצב המקבל הישן נוסיף קשתות עצמיות ε, σ → εלכל ,σ ∈ Γועוד מעבר ε, $ → εלמצב המקבל החדש. .3בכל מעבר Aדוחף אות למחסנית או מוציא אות מהמחסנית ,אך לא שניהם .זה בה"כ -נטפל בשני המקרים: עבור מעבר a, ε → bנבנה מצב נוסף ומעברים a, ε → bו־ .ε, b → ε עבור מעבר a, b → cנבנה מצב נוסף ומעברים a, b → εו־ .ε, ε → c 16 נשים לב של־ Aיש ריצה מקבלת על wאםם ל־ Aיש ריצה מ־ q0ל־ ) qaccהמצב המקבל( כך שהמחסנית ריקה בתחילת הריצה ובסופה. Apqאםם יש ל־ Aריצה מ־ pל־ qשמשמרת כעת לכל p, q ∈ Qיהיה משתנה Apqכך שלכל מילה ∗ x ∈ Σמתקיים ש־ x את ריקנות המחסנית(∗) . נבחין בין שני מצבים: .1במהלך הריצה מ־ pל־ qהמחסנית מתרוקנת במצב .rאם כך ,החלק של wשעברנו עליו בין pל־ rנגזר מ־ Aprתוך שמירה על ריקנות המחסנית ,והחלק של wשעברנו עליו בין rל־ qנגזר מ־ Arqתוך שמירה על ריקנות המחסנית. .2במהלך הריצה כנ"ל המחסנית מתרוקנת רק בהגיענו למצב .qאם כך ,נתבונן על המצב rשהוא המצב הראשון בדרך מ־ p ל־ qועל המצב sשהוא המצב האחרון לפני qבדרך הנ"ל .במקרה זה ,האות שנשלפת בין sל־ qהיא אותה אות שנדחפה בין pל־ - rלפי ההנחות שלנו. מכאן מוגדרים החוקים: .1לכל r, p, q ∈ Qנגדיר את הכלל Apq → Apr Arq .2לכל p, q, r, s ∈ Qולכל } γ ∈ Γ, a, b ∈ Σ ∪ {εנגדיר את הכלל Apq → aArs bאם מתקיים ) (r, γ) ∈ δ(p, a, εו־ ).(q, ε) ∈ δ(s, b, γ .3לכל p ∈ Qנגדיר את הכלל .App → ε בנוסף ,המשתנה ההתחלתי יהיה .Aq0 ,qacc עכשיו יש להוכיח את )∗( -זה נעשה באינדוקציה) .ר' סיכום תרגול 5לעוד פרטים(. חלק II חישוביות 4 מכונות טיורינג בפרק זה נתבונן במכונות טיורינג ,השקולות למחשב מבחינת יכולת חישוב. 4.1 מכונות טיורינג "פשוטות" למעשה ,מכונת טיורינג היא אוטומט סופי דטרמיניסטי המצויד גם בסרט חישוב דו־כיווני )רשימה מקושרת דו־כיוונית( .לראש הקריאה של האוטומט יש אפשרות לנוע ימינה ושמאל על הסרט ,שהוא אמנם סופי אבל לא חסום .הקלט של המכונה מגיע על הסרט ונוכל לקרוא אותו כמה פעמים שנרצה ולכתוב מידע חדש על הסרט כרצוננו. הגדרה 4.1מכונת טיורינג היא שביעייה סדורה ) M = (Q, Σ, Γ, q0 , qrej , qacc , δכאשר Qקבוצת המצבים Σ ,א"ב הקלט Γ ,א"ב הסרט כאשר Σ ⊆ Γו־ t ∈ Γתו מיוחד q0 ∈ Q ,המצב ההתחלתי qrej ∈ Q ,המצב הדוחה qacc ∈ Q ,המצב המקבל ,ו־ δפונקציית המעברים }) .δ : Q × Γ → Q × Γ \ {t} × {R, Lהמשמעות של R, Lהיא "ללכת ימינה" או "ללכת שמאלה"(. קונפיגורציה של מכונת טיורינג היא ) (u, q, vכאשר u, v ∈ Γ∗ ,q ∈ Qמתארים את מה שמשמאל לראש הקורא/כותב ומה שמימין לו. נסמן v = av 0כאשר } a ∈ Γ \ {tאם v 6= εאו a = tו־ v 0 = εאחרת .נניח ש־ ) .δ(q, a) = (q 0 , b, Rבמקרה זה הקונפיגורציה העוקבת של ) (u, q, vהיא ) .(ub, q 0 , v 0כנ"ל עבור .L ריצה חוקית של מכונת טיורינג היא סדרה )שאינה בהכרח סופית( של קונפיגורציות עוקבות .הריצה מסתיימת אם הסדרה סופית והמצב בקונפיגורציה האחרונה הוא qaccאו .qrej המכונה מקבלת את המילה )המילה בשפה של המכונה( אם יש ריצה שהקונפיגורציה ההתחלתית שלה היא ) (ε, q0 , wוהקונפיגורציה הסופית שלה היא ב־ .qacc המכונה מכריעה את השפה Lאם היא תמיד עוצרת ,והיא עוצרת במצב מקבל רק על קלטים .w ∈ L ∈ wהיא עוצרת ודוחה או שאינה עוצרת. המכונה מזהה את השפה Lאם היא עוצרת ומקבלת על קלטים ,w ∈ Lועל קלטים / L הערה .1 4.2השפה של הפולינומים ) p(x, y, zומספרים a, b, cכך ש־ p(a, b, c) = 0ניתנת להכרעה ע"י מכונת טיורינג. .2השפה של הפולינומים במקדמים שלמים ) p(x1 , . . . , xkכך שקיימים a1 , . . . , akשלמים המאפסים את הפולינום ניתנת לזיהוי ע"י מכונת טיורינג )ניתן לעבור על כל האפשרויות( אבל אינה ניתנת להכרעה .זוהי בעיה מספר 10של הילברט. ) .3ללא קשר( ניתן לגרום למכונה להתמודד עם שפות אינסופיות ע"י החלפת qrejב־ ) .qloopלא פיתחנו עוד את הרעיון הזה(. .4על פני אוטומט רגיל ,הוספנו את האפשרות לכתוב ולזוז שמאלה וימינה על הסרט .כל אחד משני הפיצ'רים האלה לא מספק עדיין את הכוח של מכונת טיורינג אלא נשאר בתחום השפות הרגולריות. .5מכונת טיורינג יכולה לקבל ,לדחות ,או "להיתקע" -כלומר לעולם לא לעצור .בניגוד לאוטומט ,מכונת טיורינג יכולה לא לעצור ובכל זאת לא לחזור על אותה קונפיגורציה פעמיים )שכן הסרט אינו חסום(. 17 דוגמאות למכונות טיורינג: .1להלן מכונת טיורינג בעלת השפה } L = {0∗ #מעל הא"ב }:Σ = {0, 1, # .2השפה } ∗} L = {w#w : w ∈ {0, 1מעל הא"ב } {0, 1, #אינה חסרת הקשר .ניתן להראות זאת ישירות באמצעות למת הניפוח לשפות חסרות הקשר. אבל ,אפשר לזהות אותה באמצעות מכונת טיורינג .תחילה ,נתאר אלגוריתם ואז נבנה את המכונה ממש )מה שלא נעשה בדרך כלל ,כי זה מגעיל וארוך(: .1החלף את האות מתחת לראש ב־ xוזכור אותה .2לך ימינה עד # .3לך ימינה צעד אחד ,וימינה כל עוד יש x .4אם האות מתחת לראש היא כמו שזכרת ,סמן xולך שמאלה עד # .5לך שמאלה עד ,xולך ימינה צעד אחד .6אם האות היא לא ,#חזור ל־ )(1 .7לך ימינה על x־ים ,אם הגעת ל־ ,tקבל להלן ציור של המכונה ,כאשר לא ציירנו את הקשתות שהולכות למצב הדוחה :qrej .3נבנה מכונת טיורינג שבודקת האם גרף לא מכוון הוא קשיר .נשתמש ב־ hiכדי לסמן קידוד של משהו ,למשל .hGiקידוד סביר של גרף הוא רשימה של הקודקודים בתור מספרים בינאריים מופרדים ע"י ,#שאחריהם רשימה של הצלעות בתור מספרים בינאריים .לדוגמא: hGi = 000#001#010# . . . ###(000#001)(010#000) . . . 18 פיסת הקידוד הנ"ל מתארת את הקודקודים v0 , v1 v2והצלעות ) .(v0 , v1 ), (v2 , v0 המכונה תשתמש בשני סרטים )בהמשך נראה שזה שקול למכונה עם סרט אחד( ותפעל כך: .1בדוק שהקלט מהווה קידוד חוקי של גרף. .2סמן את הקודקוד הראשון של Gע"י העברתו לסרט של הקודקודים שכבר סומנו. .3חזור עד שלא מסומנים קודקודים חדשים :לכל קודקוד ב־ ,Gסמן אותו אםם יש קשת בינו לבין קודקוד שכבר סומן. .4עבור על כל קודקודי .Gאם כולם מסומנים ,עצור וקבל; אחרת ,עצור ודחה. הערה .1 4.3ניתן לתאר אלגוריתם באמצעות מכונת טיורינג בכמה מישורים -התיאור הפורמלי באמצעות שביעייה ,תיאור ברמת המימוש )האופן שבו המכונה פועלת( ,ותיאור בשפה טבעית של האלגוריתם .בדרך כלל נפנה לאפשרות האחרונה. .2כאשר אנו מדברים על מכונות טיורינג שמקבלות קידוד של "משהו" כקלט ,בהחלט ייתכן שלא כל גיבוב תווים מעל הא"ב של המכונה יהיה קלט חוקי ,כלומר קידוד חוקי של "משהו" .מקרים כאלה לא יעניינו אותנו במיוחד ,כי בדרך כלל אפשר בזמן קצר מאוד לוודא בתחילת הריצה שאכן מדובר בקלט לא חוקי ,ולדחות אותו )או לעשות כל דבר אחר שנרצה(. 4.2 וריאציות על מכונות טיורינג הגדרה 4.4מכונת טיורינג עם שני סרטים מוגדרת כך -המילה כתובה על הסרט הראשון ,והמכונה יכולה להשתמש בשני הסרטים לצורך עבודה .פונקציית המעברים היא δ : Q × Γ2 → Q × Γ2 × {R, L}2מכיוון שיש שני ראשים קוראים/כותבים שהמכונה משתמשת בהם. טענה 4.5לכל מכונת טיורינג עם שני סרטים יש מכונת טיורינג שקולה )בעלת אותה השפה -גם מבחינת קבלה ודחייה ,וגם מבחינת עצירה(. הוכחה :נעבוד עם א"ב מחסנית של רביעיות Γ0 = Γ × Γ × {0, 1} × {0, 1} ,כאשר אות כמו ) (a, b, 1, 0משמעותה שעל הסרט הראשון כתוב ,aעל הסרט השני כתוב ,bהראש של הסרט הראשון נמצא מעל האות והראש השני של המכונה לא נמצא מעל האות. 0 0 .M 0 = (Q0 , Σ, Γ0 , δ 0 , q00 , qaccהמכונה פועלת בשני שלבים: , qrej נגדיר ) .1נעבור על כל הסרט ונהפוך כל אות σ ∈ Σלאות ) (σ, t, 0, 0ואת האות השמאלית ביותר ל־ ) - (σ, t, 1, 1שכן שני הראשים מתחילים באותו המקום. .2נרוץ על הסרט ונחפש אות מהצורה ) - (, , 1,מה שנמצא מתחת לראש של הסרט הראשון .נזכור מה האות בסרט הראשון .נמשיך ימינה עד הסוף. .3נחזור שמאלה ונחפש אות מהצורה ) - (, , , 1מה שנמצא מתחת לראש של הסרט השני .נזכור מה האות בסרט השני. נחזור שמאלה עד .t .4נרוץ ימינה ונחפש אות מהצורה ) ,(t, t, 1, tנבצע סימולציה של פעולת Mעל הסרט הראשון .כנ"ל לסרט השני. .5אם Mאומרת לעבור ל־ qaccאו ,qrejאז M 0תפעל בצורה דומה. הערה 4.6אם המכונה המקורית מבצעת nצעדים ,על צעד של המכונה המקורית אנו מבצעים ) O(nצעדים ,ובסה"כ ) O(n2צעדים. כלומר ,עלות הסימולציה היא ריבועית -לא כל כך נורא. הגדרה 4.7מכונת טיורינג עם סרט דו־מימדי היא מכונה שהסרט שלה גדל בשני כיוונים -למטה וימינה) .אפשר להסתכל עליה בתור מטריצה "אינסופית" (.מילת הקלט מגיעה על השורה הראשונה ,הראש הקורא/כותב מתחיל בתא ) (1, 1ופונקציית המעברים היא }.δ : Q × Γ → Q × Γ × {U, D, L, R נדרוש גם שלא "ניפול" -אם הגענו לעמודה הראשונה והולכים שמאלה ,אפשר לא לזוז .כנ"ל לגבי עלייה למעלה כאשר הגענו לשורה הראשונה. טענה 4.8למכונת טיורינג עם סרט דו־מימדי יש מכונת טיורינג שקולה עם סרט אחד. הוכחה :אם יש מכונת טיורינג עם סרט אינסופי בשני הכיוונים ,קל לבנות ממנה מכונה עם סרט דו־מימדי בעלת אותה השפה .פשוט צריך "לקפל" את הסרט סביב נקודת ההתחלה. להיפך ,בהינתן מכונת טיורינג עם סרט דו־מימדי יש לנו את הפונקציה ) fהחשיבה -ר' להלן( שיכולה להתאים כל תא מהסרט הדו־מימדי לתא אחד ויחיד על הסרט החד־מימדי .בתא הזה נשים את האות שהייתה בסרט הדו־מימדי באותו המקום .בנוסף ,עלינו לקודד את המידע על כך שהראש נמצא במקום האמור בטבלה -ואפשר לצורך כך להחזיק עוד סרט אחד ,למשל. כדי לעשות את הסימולציה ,נרוץ ונחפש היכן נמצא הראש ,ואז נרוץ על הסרט הראשון עד האות שעליה הראש נמצא .כדי לרוץ ימינה/שמאלה/למעלה/למטה עלינו לחשב את האינדקס שעליו עמדנו )בשביל זה צריך לדעת לספור( ואז לבצע את החישוב הדרוש על האינדקס -למצוא את f −1שלו ,להוסיף ל־ iאו ל־ jבהתאם לכיוון ,לחשב את fשל התוצאה ולפעול בהתאם. וריאציות נוספות: .1מכונת טיורינג עם סרט חד־כיווני -כלומר ,הסרט חסום משמאל ולא חסום מימין .המודל הזה עדיין שקול למכונת טיורינג רגילה )תרגיל 5שאלה .(4למשל ,אפשר להשתמש בשני סרטים כדי לסמלץ את החלקים ה"שמאלי" וה"ימני" של הסרט; אפשר גם 19 לכתוב על הסרט החד־כיווני את u#vכאשר uהחלק ה"שמאלי" ו־ vהחלק הימני ,ובכל פעם שהמכונה צריכה עוד מקום משמאל, מזיזים את המחרוזת ימינה. .2אוטומט סופי דטרמיניסטי עם שתי מחסניות .המודל הזה שקול למכונת טיורינג רגילה )תרגיל 6שאלה .(1למשל ,אפשר לסמלץ אוטומט בעל שתי מחסניות בעזרת מכונת טיורינג בעלת שני סרטים )סרט אחד לשתי המחסניות ,מופרדות ב־ #וסרט אחד לקלט(; ואפשר לסמלץ מכונת טיורינג בעלת סרט דו־כיווני באמצעות אוטומט בעל שתי מחסניות ,כך שמחסנית אחת מכילה את כל החלק של הסרט שמשמאל לראש והמחסנית השניה את כל החלק של הסרט שמימין לראש. .3מכונת טיורינג עם סרט בגודל קבוע ) .(LBAהמודל הזה אינו שקול )חלש יותר!( למכונת טיורינג רגילה .למעשהLBA ,־ים מזהים בדיוק את כל השפות הרקורסיביות) .לא הוכחנו זאת פורמלית ,אבל בהמשך ראינו ש־ ALBAהיא PSPACE־שלמה ובפרט כריעה, בעוד ש־ AT Mאינה כריעה(. 4.3 מכונת טיורינג אוניברסלית זוהי מכונת טיורינג המקבלת כקלט מכונת טיורינג אחרת ומריצה אותה .ראשית צריך יהיה לקודד מכונת טיורינג כקלט. הא"ב יהיה } .ΣU = {0, 1, #נקודד את Mבאמצעות :ΣU • שמות המצבים יהיו מספרים טבעיים } Q = {q0 , q1 , . . . , qnונקודד אותם פשוט בתור מספרים ,כאשר #מפרידה בין המצבים ו־ ###מסמנת את סוף הקידוד: hQi = 0000 · · · 000#0000 · · · 001#0000 · · · 010# · · · ### • גם את אותיות Σו־ Γנציג כמספרים טבעיים ,שהרי גם .Σ ⊆ Γנכתוב אותם בזה אחר זה ,קודם hΣiואח"כ hΓ \ Σiבקידוד בינארי ,מופרדים ע"י .### • נקודד את δבתור זוגות כאשר מספר האפשרויות ל־ Q × Γהרי סופי .למשל ,כדי לקודד את העובדה ש־ = ) δ(q1 , γ2 ) (q0 , σ1 , Lנכתוב על הסרט לפי הסדר את hq1 i, hγ2 iוכו': 0000 · · · 001#10#0000 · · · 000#01#0## • לבסוף ,כדי לקודד את q0 , qacc , qrejנכתוב אותם בזה אחר זה על הסרט. מטרתנו .MU (hM i, hwi) = M (w) :יהיו לנו שלושה סרטים -וניתן להראות בקלות שזה שקול למכונת טיורינג רגילה עם סרט אחד: .1סרט הקלט של המכונה MUשעליו יהיו כתובות hM i, hwi .2סרט שיכיל את הסימולציה של הסרט של M .3סרט שיכיל את המצב שבו Mנמצאת האלגוריתם: .1שלב האתחול -נרצה לכתוב על סרט 2את המילה hwiועל סרט 3את .hq0 iכדי לעשות זאת נרוץ ימינה בסרט 1עד שספרנו 7פעמים ###ושם תהיה .hwiמעתיקים אותה אות אחר אות ,ומחזירים את הראש בסרט 1למקום שבו מקודד hq0 i ומעתיקים אותו לסרט .3 .2שלב הסימולציה -ראשית בודקים האם הגענו ל־ qacc , qrejע"י השוואת סרט 3למה שכתוב בסרט 1במקומות המתאימים. אחרת ,צריך סימולציה של צעד ,δומוצאים "מה צריך לעשות" בסרט ,1מעתיקים לסרטים 2,3את התוצאה ומזיזים את הראש על סרט 2ע"פ התוצאה. נשים לב שניתן להרחיב את הרעיון הזה עוד -למשל ,לבנות מכונה שמקבלת את השפה המשלימה לזו של ,Mאו מכונה שמקבלת בנוסף מספר tשהוא מקסימום הצעדים שמותר לסימולציה לעשות ,או חסם על גודל הסרט שאפשר להשתמש בו ,וכו'. 20 4.4 מכונת טיורינג לא דטרמיניסטית הגדרה 4.9מכונת טיורינג לא דטרמיניסטית מוגדרת בדיוק כמו מכונת טיורינג ,למעט העובדה ש־ δהיא פונקציה → δ : Q × Γ )}.P(Q × Γ × {L, R הערה 4.10משמעות הדבר שלמכונה כזו יכולות להיות כמה ריצות חוקיות על הקלט ,ובכל שלב ייתכנו כמה מעברים חוקיים. הגדרה 4.11נאמר שמכונת טיורינג לא דטרמיניסטית מקבלת את המילה wאם קיימת ריצה מקבלת שלה על .wנאמר שהמכונה דוחה את wאם כל הריצות שלה על wדוחות .לבסוף ,נאמר שהמכונה אינה עוצרת על wאם לא קיימת ריצה מקבלת ,אך קיימת ריצה שאינה עוצרת. הערה 4.12כלומר ,גם במקרה שהמכונה מקבלת את המילה ,ייתכנו ריצות שאינן עוצרות. טענה 4.13תהי Mמכונת טיורינג לא דטרמיניסטית .אזי קיימת מכונת טיורינג דטרמיניסטית Dכך ש־ ) .L(D) = L(N הוכחה :אפשר להציג את הריצה של Nעל מילת קלט מסוימת בתור עץ שעוברים בו בין הקונפיגורציות שלה .כמובן ,ייתכן שהעץ אינסופי. נבנה את המכונה Dבעזרת שלושה סרטים -סרט קלט ,הסרט של המכונה ,Nוסרט הכתובת .לכל קונפיגורציה בעץ ניתן כתובת -ההחלטות שצריך לקבל כדי להגיע לקונפיגורציה הזאת מהקונפיגורציה ההתחלתית) .הכוונה ב"החלטה" לבחירה בין מספר אפשרויות במצב שבו למכונה יש מספר אפשרויות(. בהינתן כתובת על סרט הכתובת אנחנו נדע לסמלץ על הסרט של Nאת המסלול המתאים לכתובת )שהוא דטרמיניסטי( .כל שנותר הוא לעבור על הכתובות לפי סדר ,BFSוברור שאפשר לעשות את זה .כאשר נתקלים בקונפיגורציה מקבלת -מקבלים .אם כל הענפים הסתיימו בקונפיגורציות דוחות -דוחים. הערה 4.14הקושי עם הבנייה הנ"ל הוא מבחינת זמן הריצה .בכל צומת יכול להיות מספר סופי של התפצלויות ,לכל היותר |} .b = |Q × Γ × {L, Rנתבונן למשל במקרה שבו המכונה מקבלת .נניח שהריצה המקבלת הקצרה ביותר על wהיא באורך )|,g(|w אז Dעלולה לעבור על ))| bO(g(|wקונפיגורציות ,כלומר מספר אקספוננציאלי של פעולות ביחס למכונה המקורית. 4.5 פונקציות חשיבות במקום מכונת טיורינג שהפלט שלה הוא כן/לא ,נסתכל על פונקציות. הגדרה 4.15פונקציה ∗ f : Σ∗ → Σהיא חשיבה ) (computableאם קיימת מכונת טיורינג Mשמקבלת ∗ ,w ∈ Σרצה ותמיד עוצרת, והתוכן של הסרט הוא )) .f (wאפשרות שקולה היא שלמכונה יהיו שני סרטים(. דוגמאות לפונקציות חשיבות: .1למשל ,ראינו )פחות או יותר( שפונקציה שמוסיפה 1למספר הנתון בבינארי היא פונקציה חשיבה: .2כמובן ,הפונקציה לא חייבת לפעול על מספרים .למשל ,פונקציה שמקבלת hAiקידוד של NFAומחשבת hBiקידוד של DFA השקול לו היא פונקציה חשיבה -צריך לשתכנע שאלגוריתם הדטרמיניזציה אכן ניתן למימוש בעזרת מכונת טיורינג. .3ראינו ש־ |N| = ℵ0ובדיסקרטית מוכיחים ש־ |N × N| = ℵ0ע"י כך שיוצרים פונקציה חח"ע ועל מ־ Nל־ .N × Nנרצה עכשיו להסתכל על פונקציה אחת כזאת: ··· 4 10 3 6 9 2 3 5 8 1 1 2 4 7 i/j 1 2 3 4 . . . 21 אפשר לכתוב לה גם נוסחא סגורה: )(i + j − 2)(i + j − 1 +j 2 = )f (i, j הפונקציה הזאת ,כמובן ,חשיבה -אנו יודעים לחסר ,לחבר ,לכפול ולחלק בשתיים )שלמים( באמצעות מכונת טיורינג. .4לפונקציה ) (3יש גם הפכית -אפשר לכתוב לה במפורש נוסחא אריתמטית והיא תהיה חשיבה .אולם אנו נרצה אלגוריתם אחר נניח שרוצים למצוא את ):f −1 (k• נכתוב על הסרט את המשבצת השמאלית עליונה ,נפעיל את fונקבל ).f (1, 1 • אם קיבלנו את - kדיינו. • אחרת ,נתקדם לתא הבא (2, 1) -ומשם ל־ ) (1, 2ומשם ל־ ) (3, 1וכן הלאה. האופן המדויק שבו מקדמים את ) (i, jהוא כזה -אם i = 1אז מוסיפים לו 1ואת jמחזירים ל־ ;1אחרת ,מקדמים את jומחסרים 1מ־ .i כיוון ש־ kמספר טבעי ,מובטח שהמכונה תעצור בסופו של דבר .לכן f −1חשיבה. .5נבנה פונקציה } f : {hM i} → {hM iהמקבלת קידוד של מכונת טיורינג ומייצרת קידוד של מכונת טיורינג בעלת אותה שפה שלעולם לא מגיעה למצב הדוחה .כיצד הפונקציה פועלת? כאשר המכונה המקורית פונה ל־ qrejשלה ,המכונה החדשה תפנה למצב שבו היא תיתקע בלולאה אינסופית. 4.6 Random Access Machine נרצה להראות שקילות בין מכונות טיורינג ,שעדיין לא נראות כל כך כמו מחשב ,לבין מודל שלכאורה נראה חזק יותר ומאוד דומה למחשב ,אבל למעשה לא מציע שום כוח חישוב נוסף. • ל־ RAMיש מערך זיכרון אינסופי וממוספר ,כאשר התוכן של כל תא הוא מספר טבעי. • התוכן ההתחלתי בכל תא הוא .0 • יש פונקציה } c : N ∪ {0} → N ∪ {0שמחזירה את התוכן של כל תא. • יש תוכנית שהמכונה מריצה ,ששמורה מחוץ לזיכרון. • יש קלט -סדרה סופית של מספרים טבעיים. • יש מונה ) (PCשזוכר איפה בריצת התוכנית אנחנו נמצאים. • יש פונקציה vשאומרת מה הערך של האופרנד בפקודות שמיד נראה .הפונקציה מוגדרת כך: – - v(”= x”) = xאופרנד ששווה למספר קבוע כלשהו – ) - v(”x”) = c(xאופרנד שקורא זיכרון ממקום כלשהו – )) - v(”∗x”) = c(c(xאופרנד שמבצע מיעון עקיף מהזיכרון הפקודות האפשריות של המכונה הן: המשמעות )c(0) ← v(op )c(v(op)) ← c(0 )c(0) ← c(0) + v(op )c(0) ← c(0) − v(op c(v(op)) ← NextInput )P C ← v(op )If c(0) > 0 then P C ← v(op Accept Reject הפקודה )LOAD(op )STORE(op )ADD(op )SUB(op )READTO(op )JUMP(op )JUMPIF > 0(op ACCEPT REJECT טענה 4.16קיימת מכונת טיורינג שמקבלת קידוד של תוכנית ל־ RAMוקלט ואומרת האם התוכנית מקבלת או דוחה את הקלט. 22 הוכחה) :סקיצה( נצטרך 9סימנים לסימון סוגי הפקודות ,קידוד של האופרנדים ,וכן קידוד של הקלט .את כל אלה נרשום ונפריד ביניהם עם #כרגיל -על סרט הקלט .על סרט נוסף נחזיק ייצוג של הזיכרון של המכונה שמריצה את התוכנית ,ועוד סרטים לפי הצורך עבור חישובים .על הסרט הראשון נסמן גם על איזו פקודה אנחנו נמצאים .על סרט הזיכרון נרשום זוגות ) (i, jעם המשמעות שבתא ה־ iבזיכרון נמצא הערך ,jובתנאים שלא נשתמשנו בהם נניח שמופיע .0 כעת עלינו ללמוד לבצע את הפקודות של התוכנית. .1טיפול באופרנד -נרצה לשים על סרט החישוב השלישי את ) .v(opעבור ” ” = xפשוט נעתיק את המספר xלסרט החישוב. במקרים שדרושה גישה לזיכרון ,נצטרך לרוץ על סרט הזיכרון ולחפש את הזוג ) (x, jולהעתיק את jלסרט החישוב )או 0אם הוא לא נמצא( .עבור מיעון עקיף ,נצטרך לחזור על זה פעמיים. .2טיפול בפקודות -עבור פקודות הקריאה/כתיבה מהזיכרון ,מחשבים את ) v(opומחפשים אותו בסרט הזיכרון .את הפעולות האריתמטיות אנחנו במילא יודעים לעשות .עבור הפעולה READTOנצטרך לרוץ על wולזכור מה עוד לא קראנו מתוכה ,למשל ע"י מחיקת החלקים שכבר קראנו .עבור הפעולה JUMPנצטרך לעבור על הסרט הראשון למקום המתאים בתוכנית ,וכנ"ל עבור .JUMPIF > 0 לגבי ביצועים -על סרט הזיכרון ,אם המכונה עשתה nצעדים ,יש nתאים לכל היותר שכל אחד מכיל מספר עד ,kואנו משתמשים ב־ ) O(n log kמקום .מספר מעברי ה־ δיהיה ) O(n2 log kכי יש nצעדים .בשאר הסרטים המקום די קבוע .כלומר ,הסימולציה שלנו היא במספר פולינומיאלי של צעדים ביחס למספר הצעדים של המכונה המקורית. 5 כריעות ואי־כריעות לאחר שראינו את המודל של מכונת טיורינג ,נשאלת השאלה האם מודל זה יכול להכריע את כל השפות .אפילו משיקולי ספירה ניתן לראות שאין זה המצב; בפרק זה נגיע למסקנות פורמליות בנושא. 5.1 המחלקות RE ,Rואי־כריעות הגדרה 5.1נסמן ב־ ) Rשפות רקורסיביות (recursive ,את מחלקת השפות הניתנות להכרעה ע"י מכונת טיורינג .נסמן ב־ ) REשפות הניתנות למניה רקורסיבית (recursively enumerable ,את מחלקת השפות שניתנות לזיהוי ע"י מכונת טיורינג. נסמן ב־ coREאת מחלקת השפות Lכך ש־ ) .L ∈ REבמילים אחרות ,קיימת מכונת טיורינג שעוצרת ומקבלת מילים שאינן ב־ ,Lאבל על מילים ב־ Lהיא דוחה או נתקעת(. הערה 5.2כמובן .R ⊆ RE ,בהמשך נראה ש־ ∅ =.RE \ R 6 משפט ) RE ∩ coRE = R 5.3כלומר ,אם אפשר לזהות שפה ואת המשלים שלה -אזי היא ניתנת להכרעה(. הוכחה :תחילה נראה ש־ .R ⊆ RE ∩ coREאנו יודעים שאם L ∈ Rאז גם ,L ∈ Rשהרי אם במכונת טיורינג נחליף את qaccב־ qrejולהיפך נקבל מ"ט עבור השפה המשלימה .מכאן המסקנה. כעת נראה ש־ .RE ∩ coRE ⊆ Rאם Mמזהה את Lו־ Mמזהה את ,Lנרצה להריץ במקביל את שתי המכונות ומובטח שאחת מהן תעצור על כל מילה .נעשה זאת כך: המכונה החדשה ,M 0על המילה :w .1תאתחל i ← 1 .2הרץ את Mעל wבמשך iצעדים :אם היא קיבלה ,עצור וקבל .3הרץ את Mעל wבמשך iצעדים :אם היא קיבלה ,עצור ודחה i ← i + 1 .4וחזור לשלב 2 ברור שכל איטרציה של הלולאה באמת עוצרת בזמן סופי ,וכן ברור שנעצור בסופו של דבר ונצא מהלולאה -הרי אם w ∈ Lאז ∈ wאז כנ"ל לגבי .Mלכן M 0מכריעה את ,Lכלומר .L ∈ R קיים iכך ש־ Mעוצרת ומקבלת את wתוך iצעדים ,ואם / L ∈ .L משפט 5.4קיימת שפה / R הוכחה :משיקולי ספירה .למשל ,קבוצת כל השפות מעל } {0, 1היא מעוצמה .2ℵ0לעומת זאת ,קבוצת כל מכונות הטיורינג מעל אותה שפה היא קבוצה בת מניה ,שכן מכונת טיורינג ניתנת לתיאור )קידוד( סופי .מכאן ,יש שפה שאין מכונת טיורינג שמכריעה ∈ (.L אותה) .זה גם אומר שיש שפה / RE הערה 5.5אפשר להשתמש באותו טיעון גם להרבה דברים מעניינים נוספים .למשל ,יש מספר ממשי שלא ניתן לחשב ,כלומר שלא קיימת תוכנית שמדפיסה אותו .זה שוב משיקולי ספירה -תוכנית מחשב ניתנת לקידוד סופי ,ולכן קבוצת תוכניות המחשב היא בת מניה ,ואילו קבוצת המספרים הממשיים אינה בת מניה. משפט .R ( RE 5.6 23 ∈ .AT Mתחילה, הוכחה :נצביע במפורש על השפה } AT M = {hM, wi : M accepts wונראה ש־ AT M ∈ REאבל / R AT M ∈ REשכן קיימת MT Mמכונת טיורינג שמזהה את AT Mופועלת כך :היא מריצה את Mעל ,wופועלת כמוה .אכןMT M , תקבל את hM, wiאםם Mמקבלת את .w כעת נניח בשלילה שקיימת מכונת טיורינג Hשמכריעה את ,AT Mכלומר על קלט hM, wiהיא מקבלת אםם Mמקבלת את ,w ואחרת -דוחה )אבל תמיד עוצרת( .נבנה בעזרתה את המכונה Dשמקבלת קידוד hM iשל מכונת טיורינג ופועלת כך: ( ACC = )D(hM i REJ M (hM i) = ACC M (hM i) = REJ אופן הפעולה של Dהוא כזה :על קלט ,hM iהיא כותבת על הסרט hM ihM iואז מריצה את Hעל הקלט החדש .לבסוף ,נבנה מ־ Dאת המכונה D0הפועלת כך: M (hM i) = ACC M (hM i) = REJ REJ ACC ( 0 = )D (hM i את זה אנחנו כבר יודעים לעשות ע"י החלפת המצב המקבל והדוחה ב־ .Dכעת נותר רק להריץ את D0על עצמה: D0 (hD0 i) = ACC D0 (hD0 i) = REJ ( REJ ACC 0 0 = )D (hD i ∈ .AT M שתי האפשרויות לא ייתכנו ,ולכן קיבלנו סתירה .לכן/ R , ∈ .AT M מסקנה / coRE 5.7 המסקנה היא מרחיקת לכת .יש בעיות שלא ניתן להכריע אותן -ויש לנו כעת הכלי התיאורטי כדי להראות את זה .אז הנה דוגמה נוספת ,שנשתמש בה ברדוקציה )נגדיר בהמשך במדויק מהי רדוקציה(. ∈ }) HALTT M = {hM, wi : M halts on wבעיית העצירה(. טענה / R 5.8 הוכחה :נראה שאם HALTT M ∈ Rאז גם AT M ∈ Rונקבל את הסתירה .ובכן אם HALTT M ∈ Rאז תהי Tמ"ט שמכריעה את .HALTT Mנבנה מ"ט Sשמכריעה את AT Mכך :על קלט :hM i, w .1נריץ את Tעל הזוג .hM i, wאם Tדוחה ,נדחה. .2אם Tמקבלת את hM i, wאז נריץ את Mעל wונענה כמוה )מובטח לנו ש־ Mתעצור!(. ∈ }.REGT M = {hM i : M is a TM, L(M ) ∈ REG טענה / R 5.9 הוכחה :נניח בשלילה שיש מ"ט Tהמכריעה את REGT Mונבנה מ"ט Sשמכריעה את .AT Mבהינתן hM i, wנייצר מ"ט M 0מעל הא"ב } {0, 1אשר על קלט ∗} x ∈ {0, 1פועלת כך: .1אם xמהצורה ,0n 1nנקבל. .2אחרת ,נריץ את Mעל wונקבל אםם Mמקבלת את .w ∈ } .L(M 0 ) = {0n 1n : n ≥ 0לעומת זאת ,אם Mמקבלת את ,wאז כעת נשים לב שאם Mלא מקבלת את ,wאז / REG .L(M 0 ) = Σ∗M 0 ∈ REGכלומר M 0 ∈ REGT M ⇐⇒ L(M 0 ) ∈ REG ⇐⇒ (hM i, w) ∈ AT M ,ובזאת השלמנו את הבנייה. 5.2 סגירות Rו־ RE טענה .L, M ∈ RE =⇒ L ∪ M ∈ RE .1 5.10 .L, M ∈ RE =⇒ L ∩ M ∈ RE .2 .L ∈ R =⇒ L ∈ R .3 .L ∈ RE =⇒ L∗ ∈ RE .4 L, M ∈ RE =⇒ L · M ∈ RE .5 24 הוכחה .1 :מריצים את המכונות "במקביל" ומקבלים אם אחת מהן מקבלת) .ההרצה "במקביל" משמעותה שמבצעים tצעדים של כל אחת מהמכונות ,מסתכלים על התוצאה ,ואז מקדמים את tבמידת הצורך(. .2מריצים את שתי המכונות "במקביל" ומקבלים אם שתיהן מקבלות) .כאן אין אפילו צורך בהרצה אינקרמנטלית ,כי אם אחת המכונות נתקעת ,במילא המילה אינה בחיתוך השפות(. .3מחליפים בין qaccל־ .qrejנשים לב שזה לא נכון לגבי ) REלמשל AT M ∈ RE ,אבל / RE ∈ ,AT Mשכן אחרת AT M ∈ coREואז .(AT M ∈ RE ∩ coRE = R .4נשתמש במכונת טיורינג עם סרט דו־מימדי .כשמקבלים את מילת הקלט ,wנכתוב את כל החלוקות האפשריות שלה ל־ ,w1 , . . . , wkכל חלוקה על שורה משלה של הסרט .עבור tהולך וגדל ,נריץ את המכונה של Lבמקביל על כל שורה )כאשר בכל שורה L ,רצה במקביל על כל החלקים( במשך tצעדים .אם ∗ ,w ∈ Lיהיה tושורה מתאימה שעבורם נקבל .לכן.L∗ ∈ RE , אפשרות אחרת היא להשתמש במכונת טיורינג לא דטרמיניסטית ,שבוחרת בצורה לא דטרמיניסטית חלוקה של wומריצה עליה את Lכנ"ל) .ובכל מקרה ,ר' תרגיל 6שאלה (.4 אם מתמקדים ב־ ,Rאפשר גם להשתמש באלגוריתם תכנון דינאמי )ר' תרגיל ,9שאלה .(5הרעיון הוא להסתכל על כל התת־ מחרוזות ולבדוק האם הן ב־ ∗ ,Lכאשר מקרה הבסיס הוא התת־מחרוזת הריקה ותת־מחרוזות שהן ב־ .Lזה מאפשר גם לקבל זמן ריצה יעיל -ריבועי בזמן הריצה של המכונה המכריעה את .L .5בדומה ל־ ∗ ,Lבהינתן מילה wנסתכל על כל המקומות iשבהם ניתן לחלק את המילה לשני חלקים ,ונכתוב כל אפשרות על שורה משלה .עבור tהולך וגדל ,נריץ את המכונה של Lוהמכונה של Mבמקביל על כל שורה )כאשר בכל שורה L ,רצה על החלק הראשון ו־ Mעל החלק השני( במשך tצעדים. 5.3 רדוקציית מיפוי הגדרה 5.11שפה ∗ A ⊆ Σניתנת לרדוקציית מיפוי לשפה ∗ B ⊆ Σונסמן A ≤m Bאם קיימת פונקציה חשיבה ∗ f : Σ∗ → Σכך שלכל ∗ w ∈ Σמתקיים .w ∈ A ⇐⇒ f (w) ∈ B הערה 5.12רדוקציית מיפוי אינה סימטרית ,כלומר אם A ≤m Bאין הכרח שגם .B ≤m Aלמשל 01∗ ≤m AT M ,אבל ממש לא ההיפך .זאת משום שההפכית של פונקציה חשיבה אינה בהכרח חשיבה/קיימת! משפט 5.13אם A ≤m Bו־ ,B ∈ Rאז .A ∈ R הוכחה :בהינתן מכונת טיורינג MBהמכריעה את Bנבנה מ"ט MAהמכריעה את .Aהיא תפעל כך על הקלט :wתחשב את )f (w ותריץ את MBעל התוצאה MA .תחזיר את את התשובה של .MB ∈ .B ∈ ,Aאז / R מסקנה 5.14אם A ≤m Bו־ / R טענה 5.15אם A ≤m Bו־ ,B ∈ REאז .A ∈ RE הוכחה :באופן סימטרי לחלוטין ל"משפט" שראינו קודם. ∈ .B ∈ ,Aאז / RE מסקנה .1 5.16אם A ≤m Bו־ / RE .2אם A ≤m Bו־ ,B ∈ coREאז .A ∈ coRE ∈ .B ∈ ,Aאז / coRE .3אם A ≤m Bו־ / coRE טענה ) 5.17טריוויאלית( רדוקציית מיפוי היא טרנזיטיבית ,כלומר .A ≤m B ∧ B ≤m C =⇒ A ≤m C דוגמאות לרדוקציות מיפוי פשוטות: .1פורמליזציה של .AT M ≤m REGT Mבנינו את הפונקציה החשיבה שמייצרת מ־ ) (hM i, wאת המ"ט ,M 0ומתקיים .(hM i, w) ∈ AT M ⇐⇒ f (hM i, w) ∈ REGT M ⇐⇒ M 0 ∈ REGT M ⇐⇒ L(M 0 ) ∈ REG 0 .2פורמליזציה של .AT M ≤m HALTT Mנבנה את הפונקציה החשיבה שמייצרת מ־ ) (hM i, wאת המ"ט Mשמריצה את M על ,wמקבלת אם Mמקבלת את wואחרת נכנסת ללולאה אינסופית )כלומר אפילו אם Mדוחה M 0 ,נכנסת ללולאה אינסופית(. אז מתקיים .(hM i, w) ∈ AT M ⇐⇒ M 0 ∈ HALTT M ε .3נראה ש־ } AεT M = {hM i : M accepts εאינה כריעה באמצעות רדוקציה .AT M ≤m AT Mבהינתן זוג hM i, wהרדוקציה תפלוט מכונה hM 0 iשתפעל כך :בתחילת הריצה היא תדפיס את המילה wעל הסרט ,תחזיר את הראש לתחילת הסרט ,ותמשיך לרוץ על פי כללי המעבר של .Mקל לראות ש־ .(hM i, w) ∈ AT M ⇐⇒ hM 0 i ∈ AεT M ∈ }.IN FT M = {hM i : L(M ) is infinite טענה / RE ∪ coRE 5.18 25 הוכחה :תחילה נראה ש־ .AT M ≤m IN FT Mובכן ,עבור hM i, wנבנה מ"ט Tשפועלת כך על קלט :x T .1מסמלצת את Mעל .w .2אם Mדוחה את T ,wדוחה; .3אחרת ,אם | |xזוגי אז Tמקבלת ,4ואחרת Tדוחה. מקבלים ש־ ∅ = ) L(Tאם Mלא מקבלת את ,wואחרת ) L(Tאינסופית .כלומר.(hM i, w) ∈ AT M ⇐⇒ hT i ∈ IN FT M , ∈ .AT M ∈ ,IN FT Mשהרי / coRE לכן / coRE כעת נראה ש־ .AT M ≤m IN FT Mבהינתן hM i, wנבנה מ"ט Tשפועלת כך על קלט :x .1אם Mמקבלת את wתוך | |xצעדים ,אז Tדוחה. .2אחרת T ,מקבלת. כעת אם Mלא מקבלת את ,wהרי ש־ ∗ L(T ) = Σובפרט אינסופית .לעומת זאת ,אם Mמקבלת את wאז יש ריצה באורך tהמקבלת את ,wולכן } ,L(T ) ⊆ {x : |x| < tובפרט סופית .קיבלנו ש־ .(hM i, w) ∈ AT M ⇐⇒ hT i ∈ IN FT Mלכן ∈ .AT M ∈ ,IN FT Mשהרי / RE / RE טענה AT M 5.19היא RE־שלמה ,כלומר לכל L ∈ REמתקיים .L ≤m AT M הוכחה :תרגיל ,8שאלה ) .4זה ממש קל(. ∈ } ∗ALLT M = {hM i : L(M ) = Σ טענה / RE ∪ coRE 5.20 ∈ }) EQT M = {hM1 , M2 i : L(M1 ) = L(M2 מסקנה / RE ∪ coRE 5.21 הוכחה) :תרגיל ,8שאלה (3מדובר ברדוקציות הבסיסיות ביותר מ־ AT Mו־ .AT Mלמשל AT M ≤m ALLT M ,על ידי כך שמ־ hM, wiבונים מכונה M 0שעל כל קלט מריצה את Mעל wועונה כמוה .ולהיפך AT M ≤ ALLT M ,על ידי כך שמ־ hM, wiבונים מכונה M 0שעל קלט | |xמריצה את Mעל wבמשך | |xצעדים ,ומקבלת אםם Mלא מקבלת .את המסקנה אפשר להוכיח ישירות, או ע"י רדוקציה ALLT M ≤m EQT Mבאמצעות מכונה שמקבלת את ∗.Σ 5.4 אנומרטורים )מונים( הגדרה 5.22אנומרטור ) (enumeratorזו מכונת טיורינג עם מדפסת .אופי העבודה -יש למכונה סרט עבודה אבל מדי פעם היא כותבת משהו על סרט הפלט שלה ,שממנו היא לא יכולה לקרוא או למחוק .מילה היא בשפה של האנומרטור אםם היא מודפסת בסופו של דבר ע"י האנומרטור. משפט L ∈ RE 5.23אםם קיים אנומרטור Eכך ש־ .L(E) = L הוכחה (⇒) :בהינתן Eנייצר Mשמזהה את ) .L(Eהיא תפעל כך :בהינתן מילה M ,wמריצה את ,Eובכל פעם ש־ Eמדפיסה מילה M ,yבודקת האם w = yואם כן -עוצרת ומקבלת. )⇐( בהינתן Mשמזהה את Lנבנה Eכך ש־ .L(E) = Lאנו יודעים ש־ ∗ Σבת מניה ,ונתבונן בסידור )למשל ,לקסיקוגראפי( של ∗ .Σלסידור נקרא .w0 , w1 , . . .כעת Eתפעל כך :עבור i = 1, 2, . . .היא תריץ את Mעל המילים w0 , w1 , . . . , wiבמשך i צעדים על כל מילה .אם Mקיבלה מילה מסוימת E ,תדפיס אותה. ואמנם ,כל מילה wשמתקבלת ע"י ,Mמתקבלת תוך איזה jצעדים ,ותודפס ע"י Eאינסוף פעמים החל מהאיטרציה ה־ .j טענה 5.24תהי L ∈ REשפה אינסופית .אז קיימת שפה אינסופית L0 ⊆ Lכך ש־ ) .L0 ∈ Rמסיכום תרגול (7 הוכחה :יהי Eהאנומרטור של .Lנגדיר את השפה }w before printing w only prints words shorter than L0 = {w ∈ L : E קל לראות שהשפה אינסופית ,שכן אם היא הייתה סופית יש בה את המילה הארוכה ביותר w0ו־ Eלא מדפיס מילים יותר ארוכות מ־ w0לאחר הדפסתה -בסתירה לכך ש־ Lאינסופית. כמו כן - L0 ∈ R ,נבנה מ"ט שבהינתן מילה wמריצה את Eכל עוד מודפסות מילים שקצרות מ־ .wיש מספר סופי של כאלה. אם מודפסת מילה ארוכה יותר ,עוצרים ודוחים; אם wהודפסה ,מקבלים. 4הבחירה בתנאי הזה שרירותית לחלוטין. 26 5.5 אוניברסאליות של דקדוקים חסרי הקשר נרצה לבדוק האם ניתן להכריע באמצעות מכונת טיורינג את השפה: } ALLCF G = {hGi : G ∈ CF G ∧ L(G) = Σ∗G כלומר ,לזהות דקדוקים חסרי הקשר שניתן לגזור מהם את כל המילים. ראינו קודם אלגוריתם לבדיקת שייכות של מילה לדקדוק ,זה היה אלגוריתם תכנון דינאמי .מהאלגוריתם הנ"ל ניתן להסיק ש־ ALLCF G ∈ coREבאמצעות מכונת טיורינג כדלקמן: • על כל מילה ) w ∈ Σ∗Gלמשל ,בסדר לקסיקוגראפי( נבדוק האם ) .w ∈ L(Gאם לא ,נדחה את .hGi • אחרת ,ממשיכים למילה הבאה. ∈ wונדחה ולכן .ALLCF G ∈ coRE ברור שאם ∗ ,L(G) 6= Σבסופו של דבר נגיע למילה )/ L(G ∈ .(ALLCF G ∈ ) ALLCF Gלמעשה מספיק להראות ש־ / RE אבל כעת נראה ש־ / R משפט 5.25לכל מ"ט Mמעל א"ב ΣMוקלט w ∈ Σ∗Mקיים Aאוטומט מחסנית כך ש־ L(A) = Σ∗Aאםם Mלא מקבלת את .w הוכחה :נסתכל על הריצה של Mעל ,wהמורכבת מסדרת קונפיגורציות .c0 , c1 , . . . , ckכל קונפיגורציה כזו אפשר לקודד -היא מורכבת ממצב הסרט )מספר סופי של אי־ ,(tמיקום הראש ,והמצב באוטומט .נפריד בין הקונפיגורציות באמצעות #למשל .נדבר ספציפית של שפת הקידודים של סדרת קונפיגורציות שהיא תקינה עבור המכונה Mוהמילה wומקבלת .סדרה כזאת קיימת אםם Mמקבלת את ;wאחרת ,אין כזאת. קידוד של סדרת קונפיגורציות תקינה ומקבלת מקיים: c0 .1היא הקונפיגורציה ההתחלתית של Mעל ) .wהמצב הוא ,q0הסרט מכיל את ,wוהראש נמצא בתחילת הסרט(. ck .2היא קונפיגורציה מקבלת) .המצב הוא (.qacc .3כל מעבר מ־ ciל־ ci+1תקין ב־ .M לכן קידוד שאינו כזה מקיים לפחות אחד משלושת הבאים: c0 .1אינה הקונפיגורציה ההתחלתית. ck .2אינה קונפיגורציה מקבלת. .3קיים מעבר ci → ci+1שאינו תקין. נרצה לבנות אוטומט מחסנית שמקבל בדיוק את סדרות הקונפיגורציות שמקיימות אחד משלושת התנאים הנ"ל .ניתן לעשות זאת לכל תנאי בנפרד כי אוטומט מחסנית הוא לא דטרמיניסטי ולכן יכול "להתפצל": c0 .1היא מחרוזת קבועה כלשהי ,אז אפשר כמובן לבנות "ענף" של האוטומט שיבדוק האם הוא קיבל משהו שאינו המחרוזת הקבועה הזאת. .2בכל פעם שרואים ) #המפריד בין קונפיגורציות(" ,ננחש" באופן לא דטרמיניסטי שהגענו לקונפיגורציה האחרונה ובודקים האם המצב שלה מקבל .אם כן ,צריך לבדוק שבאמת הגענו לקונפיגורציה האחרונה כדי להחליט. .3נצטרך "לנחש" בכל פעם מהו ה־ iשעבורו בודקים את התקינות .חלק מהעניין זה לבדוק שמצב הסרט לא השתנה בין שתי קונפיגורציות ,וזה קצת דומה לשפה } {wwשהיא לא חסרת הקשר! כדי להתמודד עם זה ,לכל קונפיגורציה אי־זוגית על הסרט נעשה - reverse hc0 i#hc1 iR #hc2 i#hc3 iR # . . . עכשיו זה כבר יותר דומה לשפה } {wwRשהיא חסרת הקשר -חוץ ממקום אחד שבו הסרט השתנה. לסיכום ,ראינו סקיצה של PDAשמקבל בדיוק את סדרת הקונפיגורציות הלא תקינות ו/או לא מקבלות של המכונה .Mהדבר היחיד שהאוטומט לא מקבל זו הריצה התקינה והמקבלת של ,Mאם יש כזו .לכן L(A) = Σ∗Aאםם Mלא מקבלת את ,wכנדרש. ∈ .ALLCF G מסקנה / R 5.26 הוכחה :נניח בשלילה שכך המצב ,אז יש מ"ט M0שמכריעה את .ALLCF Gכעת נבנה מ"ט M1שמכריעה את AT Mונגיע לסתירה )זוהי דוגמה לשימוש ברדוקציה באופן לא פורמלי( M1 .תבנה את ה־ PDAמהמשפט ותכתוב את הקידוד שלו על הסרט .לאחר מכן היא תהפוך את הקידוד הזה לקידוד של ) CFGראינו שזה אפשרי( .נריץ את M0על הקידוד הזה ונדע האם ה־ PDAהיה אוניברסאלי. אם M0מחזירה "כן" ,נחזיר "לא" ולהיפך .לפי המשפט ,זה בדיוק "האם Mמקבלת את ,"wכלומר הכרענו את AT Mוזו סתירה לכך ∈ .AT M ש־ / R 27 5.6 משפט רייס ∈ }.L1 = {hM i : ∃w ∈ L(M ), |w| > 5 טענה / coRE 5.27 הוכחה :נראה רדוקציה .AT M ≤m L1מהקלט hM i, wנייצר את המכונה Tשפועלת על קלט xכך: T .1מסמלצת את Mעל .w .2אם Mדוחה T ,דוחה; .3אחרת ,אם x = 0101101אז Tמקבלת; .4אחרת T ,דוחה. קיבלנו ש־ } L(T ) = {0101101כאשר Mמקבלת את ,wו־ ∅ = ) L(Tאחרת .לכן זוהי רדוקציה ,ומכאן המסקנה. נראה מתבקש שתהיה הכללה כלשהי לטענות מהסוג הזה ,שתאפשר לטעון משהו על שפות של מכונות טיורינג .לצורך כך נצטרך הגדרה: הגדרה P 5.28קבוצה של מכונות טיורינג נקראת תכונה .תכונה נקראת סמנטית אם היא תלויה בשפה של המכונה ,כלומר לכל שתי מכונות טיורינג M1 , M2אם ) L(M1 ) = L(M2אזי .M1 ∈ P ⇐⇒ M2 ∈ Pנאמר שתכונה היא טריוויאלית אם ∅ = Pאו P היא קבוצת כל המכונות טיורינג. נסמן ב־ T0מ"ט המקיימת ∅ = ) .L(T0נסמן } .L(P ) = {hM i : M ∈ P ∈ ) (.L(P ∈ .T0אזי ) ) .AT M ≤m L(Pולכן גם / coRE למה 5.29תהי Pתכונה סמנטית לא טריוויאלית .נניח ש־ / P הוכחה :תהי H ∈ Pמכונה כלשהי )יש כזו כי Pאינה טריוויאלית( .עבור hM i, wנבנה מכונת טיורינג Tהפועלת על הקלט xכך: T .1מסמלצת את Mעל .w .2אם Mדוחה ,אז Tדוחה; .3אחרת T ,מריצה את Hעל xועונה כמוה. ∈ Tכי Pהיא תכונה סמנטית .לחלופין ,אם M התוצאה היא שאם Mלא מקבלת את ,wאז ∅ = ) L(T0 ) = L(Tולכן / P מקבלת את wאז ) L(T ) = L(Hושוב T ∈ Pכי .H ∈ Pבזאת השלמנו את הרדוקציה. משפט ) 5.30משפט רייס( תהי Pתכונה סמנטית לא טריוויאלית .אז השפה } L(P ) = {hM i : M ∈ Pאינה כריעה. הוכחה :כדי להוכיח את המשפט עלינו לטפל רק במקרה שבו Pמכילה גם מכונות בעלות שפה ריקה .ובכן ,אם T0 ∈ Pאז התכונה ∈ ) ,L(Pאבל בעצם ) L(P ) = L(Pולכן קיבלנו את המשפט. ∈ ) .L(Pלכן / RE ∈ T0ולפי הלמה / coRE המשלימה Pמקיימת / P דוגמא לשימוש במשפט: נתבונן בשפה }) .L = {hM i : ∀w ∈ Σ∗ , w ∈ L(M ) ⇐⇒ wwR wwR ∈ L(Mנרצה להראות שהשפה אינה כריעה ,ובשביל זה צריך להשתכנע שהתכונה של Mסמנטית ולא טריוויאלית .קל לראות שזו תכונה סמנטית ,שכן היא מתייחסת רק לשפה של ∈ ,Lולמעשה לפי הגרסה ההפוכה המכונה ולא למכונה עצמה .התכונה גם לא טריוויאלית ,שהרי .hT0 i ∈ Lלכן לפי משפט רייס / R ∈ .L של הלמה/ RE , 5.7 דקדוקים פורמליים הגדרה 5.31דקדוק פורמלי ) formal grammarאו sensitive grammar־ (contextהוא רביעייה ) G = (V, Σ, R, Sכאשר Vקבוצת משתנים Σ ,א"ב של טרמינלים המקיים ∅ = R ,Σ ∩ Vאוסף כללי גזירה ו־ S ∈ Vמשתנה התחלה; ובנוסף כלל גזירה הוא ביטוי מהצורה x → yכאשר ∗) x ∈ (Σ ∪ V )∗ · V · (Σ ∪ Vו־ ∗) .y ∈ (Σ ∪ V דוגמא לדקדוק פורמלי: →S aBc → S b|Bc|ε → C bC → Bc בדקדוק זה ,אפשר לגזור את המילה abבאופן הבא.S → aBc → abC → ab : טענה L ∈ RE 5.32אםם קיים דקדוק פורמלי Gכך ש־ .L(G) = L 28 הוכחה) :ר' תרגיל ,8שאלה (5סקיצת הוכחה: בהינתן דקדוק פורמלי ומילה ,אנו יכולים לבדוק את כל אפשרויות הגזירה של המילה בדקדוק באמצעות ) BFSכל התפצלות כי מקום שבו אפשר להשתמש ביותר מאשר כלל גזירה אחד( .אם המילה נגזרת מהדקדוק ,בסופו של דבר נגיע אליה ונגזור אותה. בכיוון השני ,בהינתן שפה הניתנת למניה רקורסיבית ומ"ט המזהה אותה ,ניתן לבנות דקדוק פורמלי שפעולתו מחקה את מהלך הריצה של המכונה על מילת קלט כלשהי וניתן לגזור ממנו רק מילים שמתקבלות ע"י המכונה )ר' גם הטענה הבאה(. טענה 5.33תהי }) .AG = {(hGi, w) : w ∈ L(Gאזי .AT M ≤m AG הוכחה :בהינתן קלט ) (hM i, wנבנה דקדוק Gעם הכללים הבאים שגורמים לכך שתהליך הגזירה של Gיחקה את תהליך הריצה של Mעל :w w1 w2 w3 . . . wn # q0 # → S כאשר כאן wq01משמעו שהמצב הנוכחי הוא q0והראש הקורא/כותב נמצא מעל .w1עבור כלל מעבר מהצורה )δ(q1 , a) = (q2 , b, R נייצר לכל c ∈ Γאת הכלל: a c c → b q1 q2 וכן את הכלל a t #→b q1 q2 וכנ"ל עבור כללים שבהם הראש הקורא/כותב פונה שמאלה .כללי הגזירה האלה גורמים לכך שהדקדוק אחרי tצעדים גוזר בדיוק את המילה המייצגת את ריצתה של Mעל wאחרי tצעדים .אם Mהגיעה למצב מקבל ,היינו צריכים לגזור את σ σk+1 . . . σm # #σ1 σ2 . . . σk qaccל־ ,εונעשה את זה על פי הכללים הבאים ,לכל :σ, a ∈ Γ σ P → qacc → Pa P → aP ε → P P כעת ברור שאפשר לגזור את εאםם Mמגיעה ל־ ,qaccכלומר (hM i, w) ∈ AT M ⇐⇒ (hGi, ε) ∈ AGובזאת השלמנו את הרדוקציה. 5.8 בעיית ה־ PCP . xyii אוסף הזוגות נמצא הקלט הוא קבוצה של זוגות מחרוזות ) (x1 , y1 ), . . . , (xn , ynמעל א"ב .Σכשנצייר אותם ,יהיה נוח לכתוב בשפה P CPאם קיימת סדרה לא ריקה של אינדקסים )מותרות חזרות( } i1 , . . . , ik ∈ {1, . . . , nכך ש־ .yi1 · · · yik = xi1 · · · xik אם כן, } P CP = {(hxi , yi i)ni=1 : ∃(i1 , . . . , ik ) xi1 · · · xik = yi1 · · · yik הערה 5.34קל לראות ש־ - P CP ∈ REנעבור על כל סדרות האינדקסים בסדר לקסיקוגראפי ונבדוק האם קיבלנו פתרון .אם יש פתרון -בסופו של דבר אנחנו נמצא אותו. ∈ .P CP טענה / R 5.35 29 הוכחה :נראה זאת באמצעות רדוקציה מ־ ,AGוכבר ראינו ש־ .AT M ≤m AGהמטרה היא שצירוף "אבני הדומינו" של PCPיהיה גזירה של מילה בדקדוק הפורמלי. נתבונן בדוגמא של הדקדוק הפורמלי הבא: →S → aSS|b → b S aS וגזירה לדוגמא בדקדוק זה.S → aSS → bS → bb : ניסיון ראשון :מה שמופיע בחלק התחתון בשלב הגזירה הבא צריך להופיע בחלק העליון בשלב הקודם .למשל ,אם עד עכשיו גזרנו β את ,αאז השלב הבא יהיה αאם אפשר לגזור .α → βבמונחי הדוגמא מקודם ,נשים לב למשל שעבור השלב aSS → bSשמיוצג b aSאנו צריכים לבטא גם את ה־ Sשנשאר .אז אפשר להשאיר גם בלוק מהצורה σσלכל ,σ ∈ Σ ∪ Vאבל זה בעייתי כי אז נוצר ע"י פתרון ל־ PCPאפילו בנוכחות בלוק אחד כזה .נצטרך להימנע מהם. ניסיון שני :הבלוקים יהיו כדלקמן: σאת אותה משמעות כמו ל־ σמבחינת חוקי הדקדוק המקורי. .1לכל σ ∈ Σ ∪ Vיהיה לנו הבלוק ˜ σσוהבלוק ˜ , σσכאשר נייחס ל־ ˜ ˜ β β .α .2לכל כלל גזירה α → βיהיה לנו הבלוק αוהבלוק ˜ S#כאשר מסמן התחלה ו־ #מסמנת הפרדה בין שלבי הגזירה. .3בלוק התחלה: .4בלוק סיום w# :כאשר מסמן סוף ו־ wהיא מילת הקלט. כדי לטפל בתווי ,#נאפשר בסוג הראשון של הבלוקים גם .σ = #להלן דוגמא לגזירה של המילה bbבדקדוק הפורמלי שהראינו קודם: bb# # ˜ # b ˜b b ˜b ˜ # # ˜b S ˜b b # ˜ # S ˜S b a ˜˜S ˜ # # a ˜˜S˜S S S# נשים לב ששלב הגזירה האחרון היה הכרחי כי אין לנו בלוק שבחלקו התחתון יש ,˜b˜bאלא רק בלוק שיש בו .bbלכן אנו עושים עוד צעד העתקה קצת מיותר שכזה. כעת יש לנו תהליך חישוב שבונה קלט ל־ PCPמ־ .hGi, wאם ) w ∈ L(Gאז יש גזירה S = γ1 → . . . → γm = wשל המילה ב־ .Gהפתרון PCPהמתאים הוא ˜ 2 # . . . #γm # ,S#γ˜1 #γכאשר אם mאי־זוגי צריך בסוף γm˜#γm #כמו בגזירה מקודם. להיפך ,בהינתן פתרון לבעיית ה־ ,PCPברור שבלוק ההתחלה צריך להיות ראשון ובלוק הסיום צריך להיות אחרון בהתאמת המחרוזות ,וכל שלבי הביניים מתאימים לכללי גזירה של .Gכלומר ,במחרוזת פתרון ה־ ,PCPכל מעבר הוא גזירה חוקית ב־ .G לכן AG ≤m P CPכפי שרצינו. 5.9 פונקציות לא־חשיבות 5 לפני שנעסוק בפונקציות ,ננסה לחשוב על מספרים חשיבים .למשל ,האם לכל מספר ממשי xקיימת תוכנית מחשב )או מכונת טיורינג( שפולטת את ?xקל לראות משיקולי ספירה שהתשובה היא שלילית -קבוצת המספרים הממשיים אינה בת־מניה ,ואילו קבוצת תוכניות המחשב -ואפילו קבוצת כל המחרוזות הסופיות -היא בת־מניה. נרצה לראות שתי דוגמאות קונקרטיות לפונקציות לא־חשיבות .f : N → N .1נסדר את כל המ"ט לפי סדר לקסיקוגראפי של התיאור שלהן .M1 , M2 , . . . -כעת נגדיר את הפונקציה f (i) = 1אם Mi עוצרת על ,εו־ 0אחרת .כיוון שבעיית העצירה אינה כריעה ,הפונקציה הזאת אינה חשיבה. .2עבור א"ב סרט } {0, 1, tנגדיר את הפונקציה BB : N → Nכך ש־ ) BB(kהוא מספר ה־ 1־ים המקסימלי שיכול להיות על הסרט לאחר שמ"ט Mכלשהי בעלת kמצבים עם א"ב סרט כנ"ל עוצרת בריצתה על ) .εכלומר ,עוברים על כל המ"ט שיש להן k מצבים מעל הא"ב הנתון ,ובודקים כמה 1־ים יש על הסרט כשהן מסיימות את ריצתן על (.ε ראשית ,ברור ש־ BBמונוטונית עולה ממש .בהינתן מ"ט שמדפיסה ) BB(kאחדות על הסרט בריצתה )העוצרת( על ,εנחליף את המצב המקבל שלה במצב נוסף שזז על הסרט ימינה עד שהוא מוצא משהו שאינו ,1ואז כותב 1ועובר למצב המקבל .מכאן ).BB(k + 1) ≥ BB(k) + 1 > BB(k נניח בשלילה ש־ BBחשיבה ,ותהי Hמכונת טיורינג המחשבת אותה .נניח בה"כ ש־ Hמקבלת את הקלט שלה בבינארי ופולטת את הפלט שלה באונארי ,כלומר מקבלת מספר בינארי kועוצרת כשעל הסרט כתובות ) BB(kאחדות. נניח שב־ Hיש nמצבים .נבנה את המכונה Mשבה dlog ne + 1מצבים שתוכל לעצור על εכאשר על הסרט שלה כתוב בבינארי .2nכעת נבנה את המכונה M 0שבהינתן εמתחילה בתור Mואחרי ש־ 2nנכתב על הסרט )בבינארי( ,היא מעבירה את 5החומר להלן לא נלמד במהלך הקורס ,אלא מופיע בסיכום הרשמי של תרגול .8 30 השליטה ל־ Hשמדפיסה את ) .BB(2nאבל זוהי סתירה ,כי ל־ M 0יש n + dlog ne + 1מצבים והיא עוצרת עם ) BB(2nאחדות על הסרט ,ולכן מקבלים ש־ ) ,BB(n + dlog ne + 1) ≥ BB(2nוזו סתירה למונוטוניות )שהרי .(2n > n + dlog ne + 1 )אפשר לחשוב על הנ"ל בתור תוכנית מחשב -אם יש פונקציה שאומרת כמה אחדות יכולה לפלוט כל פונקציה בעלת מספר מוגבל של תוים ,אפשר לכתוב פונקציה חדשה שמעבירה לפונקציה המקורית מספר שגדול ממספר התוים בפונקציה המקורית +בפונקציה החדשה(. חלק III סיבוכיות 6 מחלקות זמן P ,ו־ NP בפרק זה נתחיל למדוד את משאבי החישוב של מכונות טיורינג ,ונתעניין בשאלה האם אפשר להכריע בעיה מסוימת תוך זמן מוגדר היטב ,ולא "סתם להכריע" אותה. 6.1 מחלקות זמן הגדרה 6.1תהי L ∈ Rותהי Mמ"ט המכריעה אותה .נאמר ש־ ) ,tM (nהזמן שלוקח ל־ Mלרוץ על קלט באורך ,nהוא }{number of steps of M before it stops on x max ∗|x|≤n, x∈Σ = )tM (n הערה 6.2כמובן ,הגדרה זו תלויה במכונה -ורוצים לשאול מהו הזמן עבור מ"ט אופטימלית שמזהה את .Lכמו כן ,נשים לב שאפשר להגדיר את ) tM (nעל כל מכונת טיורינג שעוצרת תמיד ,ולא רק על כזאת שמכריעה את .L הגדרה 6.3תהי f : N → R+פונקציה מונוטונית עולה ,ויהי Σא"ב .אזי: }))TIME[f (n)] = {L ⊆ Σ∗ : ∃M TM that decides L, tM (n) = O(f (n במילים אחרות L ∈ TIME[f (n)] ,אם קיימת מכונת טיורינג דטרמיניסטית כך שלכל ∗ w ∈ Σהמכונה עוצרת תוך ))|O(f (|w צעדים ,ומכריעה את .L נתחיל במחלקה המתבקשת ביותר .TIME[n] ,ברור ש־ ] REG ⊆ TIME[nשכן מכונת טיורינג היא בפרט אוטומט סופי דטרמיניסטי, ואוטומטים פועלים בזמן ליניארי .ההיפך ,כמובן ,לא ברור: משפט ) 6.4ללא הוכחה( תהי f : N → R+מונוטונית עולה כך ש־ = 0 )f (n n log n ∞→ limnוגם .f (n) ≥ nאזי .TIME[f (n)] = REG טענה 6.5תהי }) .L = {w ∈ {a, b}∗ : #a (w) = #b (wאזי ].L ∈ TIME[n log n הוכחה :ראינו כבר ש־ / REG ∈ Lוקל לראות ש־ ] .L ∈ TIME[n2כדי להראות את החסם הדרוש צריך קצת להתחכם .למשל, הרעיון של למיין את המחרוזת הוא נחמד אבל במכונת טיורינג לא ניתן למיין בזמן ) - O(n log nלמשל ,פעולת swapבין שני אלמנטים לא תיקח זמן קבוע .במקום זה: נעשה nשלבים שבכל אחד מהם נקטין את מספר ה־ a־ים פי שניים ואת מספר ה־ b־ים פי שניים ,על ידי מעבר על המחרוזת משמאל לימין ומחיקת כל aשני וכל bשני ,וכמובן זוכרים האם היה מספר זוגי כדי לוודא בסוף שהמספרים מסתדרים .אם מספר ה־ a־ים וה־ b־ים לא היה בעל אותה זוגיות ,דוחים ,ואחרת עושים סבב נוסף על המחרוזת .כל שלב לוקח ) O(nזמן ולכן סך זמן הריצה הוא ) O(n log nכנדרש. הגדרה 6.6 ] TIME[nk ∞ [ k=1 זוהי מחלקת השפות שניתנות להכרעה בזמן פולינומיאלי. 31 = P דוגמאות לבעיות ב־ :Pקשירות של גרף ,רשת זרימה ,הפיכות של מטריצה -כמעט כל מה שלמדנו באלגוריתמים. הגדרה 6.7נסמן ב־ ]) NTIME[f (nאת מחלקת השפות המקיימות את הדרישות של ]) TIME[f (nעבור מכונת טיורינג לא דטרמיניסטית. במילים אחרות L ∈ NTIME[f (n)] ,אם קיימת מכונת טיורינג לא דטרמיניסטית אשר על w ∈ Lיש לה ריצה מקבלת תוך ∈ wכל הריצות שלה דוחות תוך )) O(f (nצעדים ,ובפרט כולן עוצרות. ))| O(f (|wצעדים ,ועל / L ∞ [ ] NTIME[nk = NP k=1 היחסים בין Pל־ N Pמאוד מתוחים ,וכבר מזה 40שנה לא ידוע האם .P 6= N P הערה 6.8נשים לב שאנו לא דורשים מהמכונה הלא דטרמיניסטית לעצור תוך ))| O(f (|wצעדים בכל הריצות ,אלא רק בחלק מהן. טענה L ∈ N P 6.9אםם קיים קבוע kומכונה לא דטרמיניסטית Mכך ש־ Mעוצרת על כל הקלטים תוך זמן ) O(nkומכריעה את .L 0 הוכחה :אנו יודעים שקיימת מ"ט M 0המקיימת את ההגדרה עם זמן ריצה ≥ .c0 nkנבצע סימולציה לא דטרמיניסטית למכונה זו 0 במשך c0 nkצעדים .אם היא עדיין לא סיימה את כל ריצותיה ,נדחה .אחרת ,נענה כמוה .הסימולציה היא פולינומיאלית כנדרש. הגדרה 6.10נוסחא במשתנים בוליאניים מוגדרת באינדוקציה בקורס בלוגיקה .אנחנו נסתפק בהגדרה ע"י דוגמא ,למשל ∧ ) (x1 ∨ x2 ) (x3 ∨ x2 ∨ x4זו נוסחא במשתנים בוליאניים. טענה .SAT = {hϕi : ϕ is a satisfiable Boolean formula} ∈ N P 6.11 הוכחה :קל לראות שע"י מעבר על כל האפשרויות SAT ∈ TIME[2n ] ,כאשר nהוא מספר המשתנים הבוליאניים בנוסחא .כיצד ניתן להכריע את SATבזמן פולינומי באמצעות מכונה לא דטרמיניסטית? ובכן ,המכונה רושמת על הסרט באופן לא דטרמיניסטי אחד מ־ 2nהצירופים שיש ,וקוראת לפרוצדורה ליניארית שבודק האם ההשמה מספקת .אם יש השמה -המכונה תעצור ותחזיר את התשובה הנכונה ,כלומר יש ריצה מקבלת ,בזמן ליניארי .לכן .SAT ∈ N P 6.2 הצגת NPבאמצעות מוודאים הגדרה 6.12מוודא ) (verifierלשפה Lזו מכונת טיורינג דטרמיניסטית Vכך ש: }) L = {x : ∃y : hx, yi ∈ L(V כאשר yנקרא העד של ,xוגם ש־ Vעוצרת על כל הקלטים בזמן פולינומיאלי ב־ |.|x דוגמאות למוודאים: .1במקרה של ,SATהעד של שייכות נוסחא ל־ SATהיא השמה של ערכי אמת לפסוקיות ,והמוודא זוהי פרוצדורת הבדיקה שמוודאת שההשמה אכן מספקת. .2נתבונן בשפה } .HAMPATH = {hGi : G contains a Hamiltonian pathכמובן יש מוודא לשפה -המוודא מקבל את הגרף ומסלול בגרף ,ובודק האם זה אכן מסלול המילטוני .כלומר, }L(V ) = {hG, P i : P is a Hamiltonian path in G כמובן ,זמן הריצה בשני המקרים הוא פולינומיאלי באורך הקלט המקורי. טענה 6.13תהי Lשפה .קיים מוודא Vל־ Lאםם .L ∈ N P 32 הוכחה (⇒) :העד לשייכות Lל־ N Pזוהי סדרת קונפיגורציות שמייצגת ריצה מקבלת של מ"ט לא דטרמיניסטית Mהמכריעה את Lבזמן פולינומי .המוודא בודק שסדרת הקונפיגורציות היא חוקית ומסתיימת בקבלה .נשים לב שאורך סדרת הקונפיגורציות הוא פולינומי באורך הקלט כי כל קונפיגורציה היא בגודל פולינומי ויש מספר פולינומי של קונפיגורציות ,ולכן גם המוודא פועל בזמן פולינומי) .אפשרות "קצרה" יותר :במקום סדרת קונפיגורציות ,להציג רק את הבחירות שהתקבלו בכל מקום שהייתה למכונה אפשרות לא דטרמיניסטית לפעולה ,כאשר הבחירה מוצגת כמספר למשל .בתרגול קראנו לזה ה"כתובת" של הריצה(. )⇐( יהי Vמוודא פולינומי ב־ | |xונראה שיש Nמ"ט לא דטרמיניסטית כך ש־ L(N ) = Lהמכריעה תוך ) O(nkצעדים .נניח ש־ Vמכריע תוך ) O(|x|kצעדים .לכן אורך עד ל־ xיכול להיות לכל היותר ) ,|y| = O(|x|kכי אם העד המינימלי ארוך מזה לא ייתכן זמן ריצה קצר יותר ,שהרי Vצריך לקרוא את העד. המכונה Nתרשום yכלשהו על הסרט )אחד מכל העדים האפשריים באורך ) (O(nkבקידוד hx, yiותפעיל עליהם את המוודא .Vזוהי ריצה דטרמיניסטית ופולינומיאלית ב־ | .|xברור שאם קיים עד ,yבאחת הריצות נקבל; אחרת ,אף ריצה לא תקבל וכל הריצות ידחו. הערה 6.14בהוכחה זו ,וגם בהוכחות אחרות נשתמש בחופשיות ב־ .Oכמובן ,כשהמכונה Nצריכה לכתוב על הסרט עדים ,היא צריכה לדעת בדיוק את הקבוע של .cnk 6.3 בעיות קלאסיות ב־ NP הבעיות הבאות הן בעיות קלאסיות ב־ .NPבהמשך נחזור אליהן כדי לראות שהן גם NP־שלמות. .1קבוצה בת"ל - Independent Set -האם בגרף Gקיימת קבוצה בת"ל בגודל ?k .2קליקה - Clique -האם בגרף Gקיימת קליקה בגודל ?k .3מסלול המילטוני - Hamiltonian Path -האם בגרף Gקיים מסלול המילטוני? .4כיסוי ע"י קבוצות - Set Cover -נתון אוסף של ת"ק } A1 , . . . , Am ⊆ {1, . . . nושואלים האם } {1, . . . , nמתקבל כאיחוד של ≥ kמהקבוצות ?A1 , . . . , Am .5כיסוי ע"י קודקודים - Vertex Cover -האם בגרף Gניתן לגעת בכל הצלעות בעזרת kקודקודים? - CNFSAT .6האם נוסחא בוליאנית בצורת (Conjunctive Normal Form) CNFהיא ספיקה? )נוסחא בצורת CNFהיא נוסחא המחברת ב־ ∧ בין פסוקיות בסוגריים שבתוכן יש ∨ בין מספר ליטרלים ,למשל ) (.x1 ∧ (x3 ∨ x2 ∨ x4 ) ∧ (x2 ∨ x1 mאפשרויות לבחור kת"ק מתוך mהקבוצות הנתונות ,והבדיקה האם אוסף של kת"ק נראה ,למשל ,ש־ .SetCover ∈ N Pיש k מכסה את } {1, . . . , nלוקחת זמן ליניארי ב־ .nלכן המכונה הלא דטרמיניסטית יכולה פשוט לכתוב על הסרט צירוף כלשהו של A1 , . . . , Amבגודל ,kואז להריץ מוודא דטרמיניסטי ולינארי שבודק את הכיסוי. במובן מסוים ,כל הבעיות האלה הן ב־ N Pכי בתנאי שיש פתרון " -קל יחסית" )בזמן פולינומיאלי( לבדוק שזהו הפתרון הנכון. עבור אף אחת מהבעיות הנ"ל לא ידוע האם "קל יחסית" )בזמן פולינומיאלי( למצוא את הפתרון. 6.4 רדוקציות מיפוי פולינומיאליות ,קושי ושלמות ב־ NP הגדרה 6.15יהיו ∗ .L1 , L2 ⊆ Σרדוקציית מיפוי פולינומיאלית )או רדוקציית (Karpמ־ L1ל־ L2היא רדוקציית מיפוי מ־ L1ל־ L2שרצה בזמן פולינומיאלי .אם יש רדוקציה כזאת ,נכתוב .L1 ≤p L2 טענה .CNFSAT ≤p IndependentSet 6.16 הוכחה :בהינתן נוסחא ,נייצר גרף שבו קודקוד לכל הופעה של ליטרל בנוסחא .נחבר בצלע בין שני ליטרלים אם הם באותה פסוקית, או אם הם סותרים .נקבע את kלהיות מספר הפסוקיות בנוסחא. לדוגמא ,עבור הנוסחא (x1 ∨ x2 ) ∧ (x1 ∨ x2 ) ∧ x1נייצר את הגרף הבא: קל לראות שהתהליך הזה הוא פולינומיאלי ,אבל מדוע זאת רדוקציה? ובכן ,בתוך כל פסוקית חיברנו את כל הקודקודים ,כך שאם בחרנו קודקוד מתוך פסוקית ,שאר הקודקודים בפסוקית לא יהיו באנטי־קליקה ,ולכן מספר הקודקודים באנטי־קליקה לא יעלה על מספר הפסוקיות .בנוסף ,חיברנו את הליטרלים הסותרים ולכן באנטי־קליקה לא תהיה סתירה בין הליטרלים. 33 הגדרה 6.17תהי Lשפה כך שלכל L0 ∈ N Pמתקיים .L0 ≤p Lאז נגיד ש־ Lהיא N P־קשה. אם בנוסף L ∈ N Pאז נגיד ש־ Lהיא N P־שלמה. נסמן ב־ N P Cאת אוסף השפות ה־ N P־שלמות. משפט Levine) 6.18־) .CNFSAT ∈ N P C (1972 ,Cookהוכחה בהמשך(. מסקנה .IndependentSet ∈ N P C 6.19 טענה .CLIQUE ∈ N P C 6.20 הוכחה :מספיק להראות ש־ .IndependentSet ≤p CLIQUEואמנם ,הרדוקציה היא פשוט לפלוט את הגרף המשלים )בצלעות(. טענה .VC ∈ N P C 6.21 הוכחה :נשים לב שאם U ⊆ Vאז הוא כיסוי בקודקודים של הצלעות אםם V \ Uקבוצה בת"ל .אכן ,אם u, v ∈ V \ Uויש ביניהם צלע ,הרי שהיא לא מכוסה .לכן בגרף יש כיסוי בקודקודים בגודל kאםם יש בו קבוצה בת"ל בגודל |V | − kולכן הרדוקציה היא .hG, ki → hG, |V | − ki 6.5 משפט Levin־Cook הגדרה 6.22 }∃y, |y| ≤ t, M accepts w#y in time ≤ t BoundedAN T M = {(hM i, w, 1t ) : הערה 6.23קל לראות ש־ ,BoundedAN T M ∈ N Pשכן מכונה לא דטרמיניסטית יכולה לנחש את yשהוא באורך tלכל היותר, ולבצע סימולציה של Mבמשך ≥ tצעדים ,שזה ייקח זמן פולינומיאלי ב־ tכנדרש .זו גם הסיבה שבגללה אנו מעבירים את tבייצוג אונארי -כדי לקבל זמן ריצה פולינומיאלי ב־ .t טענה .BoundedAN T M ∈ N P C 6.24 הוכחה :תהי .L ∈ N Pראינו שיש מ"ט דטרמיניסטית Mוקבועים c, kכך שלכל ∗ w ∈ Σמתקיים ש־ w ∈ Lאםם קיים עד yכך ש־ Mמקבלת את w#yתוך לכל היותר cnkצעדים ,כאשר .|w| = n k בהינתן קלט ,wהפלט של הרדוקציה הוא ) (hM i, w, 1tכאשר Mהמכונה הנ"ל ו־ .t = cnהרדוקציה לוקחת זמן פולינומיאלי, וכמובן w ∈ Lאםם (hM i, w, 1t ) ∈ BoundedAN T Mלפי הגדרתה. הגדרה 6.25בהינתן x1 , . . . , xkמשתנים A ,קבוצת ההשמות הבוליאניות למשתנים p : A → {0, 1} ,נקראת פרדיקט ) (predicateעל המשתנים .x1 , . . . , xk דוגמאות לפרדיקטים: .1הנוסחא ) x4 ∧ x1 ∧ (x1 ∨ x2 ∨ x3 ∨ x4מגדירה פרדיקט ,כי עכשיו לכל השמה של ערכים בוליאניים למשתנים אנו מקבלים ערך אמת עבור הנוסחא .בעצם ,כל נוסחת CNFובכלל כל נוסחא בוליאנית מגדירה פרדיקט. .2הפסוק "אם x1או x2אז x3וגם "x4מגדיר פרדיקט. .3כל פונקציה } f : {0, 1}k → {0, 1מגדירה פרדיקט pfעל x1 , . . . , xkבאופן ברור. טענה 6.26לכל } f : {0, 1}k → {0, 1הפרדיקט pfניתן להצגה ע"י נוסחת .CNF αi = 1 הוכחה :דרך אחת לעשות זאת -בהינתן α = (α1 , . . . , αk ) ∈ {0, 1}kנגדיר Dα = l1 ∧ . . . ∧ lkכאשר αi = 0 W .pf = α:f (α)=1 Dα αi = 1 הבעיה היא שקיבלנו נוסחת DNFולא נוסחת ,CNFונתקן את זה ע"י הגדרת Cα = l1 ∨ . . . ∨ lkכאשר αi = 0 V ,pf = α:f (α)=0 Cαוזו כבר נוסחת .CNF xi xi ( = .liכעת ( xi = liואז xi מסקנה 6.27אם רוצים נוסחת ,CNFאפשר להסתפק בגימום של הרבה פרדיקטים שכל אחד מהם הוא ב־ .CNFעדיף שכל פרדיקט יהיה מעל מספר קטן מאוד של משתנים ,שהרי הצגת CNFשל פרדיקט מעל kמשתנים עשויה להיות באורך ) .O(k · 2k 34 משפט ) BoundedAN T M ≤p CNFSAT 6.28משפט Levin־(1972 ,Cook הוכחה :בהינתן ) (hM i, w, 1tהרדוקציה תבנה קבוצת משתנים בוליאניים ונוסחת ϕ CNFמעליהם .לכל ריצה באורך ≥ tשל M תהיה השמה יחידה למשתנים ה"מקודדת" את הריצה .ההשמות היחידות ש־ ϕמקבלת יהיו ייצוגים של ריצות מקבלות על w#y כאשר .|y| ≤ t כאשר מייצגים ריצה של Mע"י השמה ,נרצה לקודד את מצב הסרט ,את המצב של המכונה ,ואת המיקום של הראש הקורא/כותב. אין טעם להסתכל על מקומות בסרט מעבר לתא tאו מעבר לתא .−tכמו כן ,נסכים בינינו שאם הגענו למצב מקבל/דוחה תוך פחות מ־ tצעדים ,אז נחזור על אותה קונפיגורציה עד שיעברו tצעדים .לכל "עובדה" מהריצה הזאת יהיה לנו משתנה בוליאני: .1משתני הסרט - Xs,a,i ∀s ∈ {0, . . . , t}, i ∈ {−t, . . . , t}, a ∈ Γ ∪ {t} : כאשר המשתנה Xs,a,iמייצג את הטענה" :בזמן sבמקום ה־ iעל הסרט כתובה האות ."a .2מיקום הראש - hs,i ∀s ∈ {0, . . . , t}, i ∈ {−t, . . . , t} : כאשר המשתנה hs,iמייצג את הטענה" :בזמן sהראש נמצא במקום ה־ ."i .3משתני המצב - gs,q ∀s ∈ {0, . . . , t}, q ∈ Q : כאשר המשתנה gs,qמייצג את הטענה" :בזמן sמצב המכונה הוא ."q כעת נבנה את הנוסחא שלנו ,שתהיה מורכבת מגימום של פרדיקטים: .1מניעת ריבוי -הראש נמצא במקום אחד בלבד ,בכל תא של הסרט כתובה רק אות אחת ,המכונה נמצאת במצב אחד בלבד, וכו' .למשל עבור מצב הסרט ,∀s, i, a 6= b : Xs,a,i ∨ Xs,b,i :ועבור מצב המכונהgs,q1 ∨ gs,q2 : .∀s, q1 6= q2 : W .∀s, i : .2קיום מצבים -יש מקום שבו הראש נמצא ,וכו' .למשל ,עבור מצב הסרטa∈Γ∪{t} Xs,a,i : .3כללי מעבר -עבור כל שוויון מהצורה ) δ(q1 , a) = (q2 , b, Rנגדיר את הפרדיקט לכל " :s, iאם Xs,a,iוגם hs,iוגם gs,q1 אז Xs+1,b,iוגם hs+1,i+1וגם ."gs+1,q2נשים לב שהפרדיקט הוא על מספר קבוע של משתנים ,ולכן תרגומו ל־ CNFלא יגרום להתפוצצות אקספוננציאלית באורך הקלט )גודל הנוסחא( .כמו כן ,צריך להוסיף כאן את ההתייחסות לכך שאם כבר הגענו למצב מקבל/דוחה ,אנו שומרים על אותו מצב כמו קודם -זו פשוט תוספת להגדרת .δ .4תנאי התחלה -המילה נמצאת על הסרט ∀0 ≤ i ≤ |w| − 1 : X0,wi ,i :וה־ #נמצאת על הסרט ;X0,#,|w| :מצב ההתחלה h0,0וגם .g0,q0באופן דומה יש לפרט את המשתנים לגבי .y .5הריצה מקבלת -כלומר .gt,qacc ברור שקיבלנו רדוקציה פולינומיאלית ,ולכן השלמנו את ההוכחה CNFSAT -היא N P־שלמה. 6.6 עוד בעיות NP־שלמות נראה מספר דוגמאות לרדוקציות שבסופן נשתכנע שכל השפות שראינו הן N P־שלמות. .1השפה 3DMatchingהיא כל הקלטים המתארים שלוש קבוצות שוות גודל ,ושלשות המוגדרות על איברי הקבוצות ,כך שקיים זיווג תלת־מימדי של איברי שלוש הקבוצות )כלומר ,הכללה של זיווג בגרף דו"צ( .בהינתן X, Y, Zשלוש קבוצות שגודל כל אחת ,m ו־ T ⊆ X × Y × Zאנו מחפשים mשלשות כך שכל איבר בכל קבוצה משתתף בשלשה אחת בדיוק. קל לראות ש־ 3DM ∈ N Pכי יש מוודא פולינומיאלי לזיווג מושלם .נראה שהבעיה קשה ע"י רדוקציה מ־ ) 3SATבהמשך נראה ש־ .(6 CNFSAT ≤p 3SATבהינתן קלט של - 3SATנוסחא ϕבעלת kפסוקיות ו־ nמשתנים -נבנה שני סוגים של gadget־ים עבור הבעיה החדשה :הסוג הראשון עבור משתנים ,כדי לוודא שההשמה של ערכי האמת היא חוקית ,והסוג השני הוא עבור פסוקיות, כדי לוודא שההשמה היא מספקת. • לכל משתנה ,xניצור gadgetכך k :נקודות ב־ k ,Xנקודות ב־ Yו־ 2kנקודות ב־ ,Zונחבר אותם בשלשות כמו בציור :7 6חשוב לציין שיש סיבה לבחירה ב־ .3למשל ,אם מצמצמים את מספר הליטרלים בכל פסוקית ל־ ,2מקבלים שפה שניתן להכריע בקלות בזמן פולינומי )ע"י בדיקה שהנוסחא לא מכילה סתירה( .ר' תרגיל ,9שאלה .4 7הציורים נגנבו ללא בושה מסיכום תרגול .10 35 • בכל gadgetשל משתנה xיש לנו 2kנקודות ב־ .Zנסמן אותן } {z1 , z2 , . . . , z2kונייחס להן את המשמעות הבאה z1 :יקושר לעובדה ש־ xמקבל ערך Tבפסוקית z2 ,c1יקושר לעובדה ש־ xמקבל ערך Fבפסוקית ,c1וכן הלאה .לבסוף z2kיקושר לעובדה ש־ xמקבל ערך Fבפסוקית .ck • לכל פסוקית ,ciנוסיף שתי נקודות xi ∈ Xו־ .yi ∈ Yלכל ליטרל lהמופיע ב־ ciנוסיף שלשה ) (xi , yi , zjכאשר zjמקושר )מהסעיף הקודם( לעובדה ש־ lמקבל את הערך המתאים בפסוקית .ciכלומר ,אם למשל ,l = aאז zjיהיה הקודקוד המקושר לעובדה ש־ aמקבל ערך Fבפסוקית .ciלמשל ,עבור הפסוקית c1 = x1 ∨ x2 ∨ x3נקבל את המצב )החלקי( הבא: • לבסוף ,יש לנו יותר איברים ב־ Zמאשר בקבוצות האחרות .נוסיף נקודות נוספות ב־ Xוב־ Yהמחוברות בשלשות לכל איברי .Zיש לנו (n − 1)kשלשות כאלה. ברור שתהליך הבנייה הוא פולינומיאלי ,ונותר להראות שזוהי רדוקציה .מהשמה מספקת של נוסחא ,לכל משתנה xשקיבל את הערך Tאנו נבחר את השלשות שמכילות את ה־ zi־ים כך ש־ ziמקושר לעובדה ש־ xקיבל את הערך Fבנוסחא )הפוך מההשמה( ,מה שמשאיר את ה־ zi־ים המקושרים לעובדה ש־ xקיבל את הערך Tפנויים .כעת מכל פסוקית נבחר משתנה כלשהו שמספק אותה, והשלשה שמחברת אותו עם ה־ zjהמתאים לו ,שהוא בהכרח נותר פנוי. להיפך ,בהינתן זיווג בגרף ,כל המעגלים הפנימיים ב־ gadgetsשל המשתנים מכוסים ,וזה אפשרי רק אם בחרנו את כל השלשות הזוגיות או כל השלשות האי־זוגיות .מהזוגיות מתקבלת ההשמה למשתנים .גם כל ה־ gadgetsשל הפסוקיות מכוסים ,ושוב זה אפשרי רק אם ה־ z־ים המתאימים פנויים .לכן התאמה משרה השמה מספקת. .2כעת נראה ש־ .3DM ≤p SubsetSumניזכר ש־ }si = t X SubsetSum = {hs1 , . . . , sn , ti : ∃I ⊆ {1, . . . , n}, i∈I כאשר כל המספרים הם טבעיים .נראה כיצד הרדוקציה פועלת על הקבוצות T = {t0 , . . . , tn } ⊆ X × Y × Z Z = {z0 , . . . , zm−1 }, Y = {y0 , . . . , ym−1 }, X = {x0 , . . . , xm−1 }, לשלשה ) (xi , yj , zkנתאים מספר טבעי בעל 3mספרות בבסיס bהמחולק לשלושה חלקים ,כל אחד בגודל ,mשיש בו 1במקומות i, m + j, 2m + kובשאר המקומות 0־ים .פורמלית, 36 (xi , yj , zk ) 7−→ bk + bm+j + b2m+i כך מהקבוצה Tאנו מייצרים את המספרים .s1 , . . . , snבנוסף נייצר את המספר 3m) t = 1 . . . 1ספרות( בבסיס .bאין ספק שתהליך זה הוא פולינומיאלי ,וכעת נראה שזו באמת רדוקציה. בהינתן זיווג לבעיית 3DMאנו יודעים שיש ת"ק של Tכך שעל כל X, Y, Zעוברים בדיוק פעם אחת על כל איבר .אם מסכמים את ה־ si־ים הרלוונטיים לאותה ת"ק של ,Tנקבל כמובן את 3m) 1 . . . 1ספרות( .להיפך ,בהינתן ת"ק של s1 , . . . , snהמסתכמת ל־ ,Tנרצה למצוא זיווג .נגדיר כעת ש־ b = n + 1וכעת ברור שלא יכול להיות נשא בחיבור ,כי צריך לחבר לפחות 1 n + 1־ים כדי לקבל נשא בחיבור בבסיס .n + 1כלומר ,כל ספרה מסתכמת לחוד וכל ספרה מסתכמת ל־ ,1ולכן יש בדיוק שלשה אחת שנוגעת בכל איבר מ־ X, Y, Zכפי שרצינו. .3נראה ש־ CNFSAT ≤p 3SATכדי להשלים את העבודה .ב־ SATיש לנו פסוקיות ϕ = c1 ∧ . . . ∧ ckאבל כל פסוקית i .ci = l1i ∨ . . . ∨ lmאנחנו רוצים רדוקציה לנוסחא שבה רק שלושה ליטרלים ,ונעשה את מהווה איווי של מספר כלשהו של ליטרלים, i זה עבור כל פסוקית בנפרד. • אם מספר הליטרלים mi = 1נפלוט את הפסוקית c0i = l1i ∨ l1i ∨ l1iוכמובן שמרנו על ספיקות. • אם mi = 2נפלוט פסוקית עם שכפול של אחד הליטרלים.c0i = l1i ∨ l2i ∨ l2i : • אם mi = 3נפלוט את הפסוקית כפי שהיא. • אם mi > 3נפצל את ciל־ mi − 2פסוקיות עם משתנים חדשים מקשרים באופן הבא: = l1i ∨ l2i ∨ z1i c1i = z1i ∨ l3i ∨ z2i c2i . . . . . . . . . i i i zm ∨ lm ∨ zm i −2 i −4 i −3 = i −3 cm i i i i zm ∨ lm ∨ lm i −1 i i −3 = i −2 cm i כעת כדי להפוך השמה של CNFלהשמה של 3CNFנצטרך לתת ערכי אמת לכל ה־ z־ים שיצרנו .לכל ה־ z־ים שלפני הליטרל הראשון שקיבל Tניתן את הערך ,Tועל כל אלה שאחריו -ניתן .Fלהיפך ,מהשמה של 3CNFצריך להראות השמה של .CNFאם i zmהוא Tאז בפסוקית האחרונה אחד הליטרלים הוא .Tאם zi1הוא Fאז בפסוקית הראשונה אחד הליטרלים הוא ,Tואם i −3 i i i 2 הראשון Tוהאחרון Fאז יש מעבר מ־ Tל־ Fאיפשהו ,למשל ב־ ,ciואז שם z1 = Tו־ z2 = Fאז בהכרח ,l3 = Tוכן הלאה. .4מסקנה מכל הנ"ל: CNFSAT ≤p 3SAT ≤p 3DM ≤p SubsetSum ולכן כל הבעיות האלה הן N P־שלמות. .5השפה } DS = {hG, ki : G has a dominating set of size at most kהיא N P־שלמה .ראינו זאת בתרגיל ,9שאלה 2 באמצעות רדוקציה מ־ .VCאת כל קודקודי הגרף המקורי נשאיר כפי שהם ,ונוסיף קודקוד veלכל צלע eבגרף המקורי .כמו כן, נייצר צלעות בין כל קודקודי הגרף המקורי ,וצלעות בין כל veלקודקודים של הצלע eבגרף המקורי .גודל ה־ DSשמחפשים הוא כגודל ה־ .VC .6השפה ) UHAMPATHגרפים לא מכוונים שיש בהם מסלול המילטוני( היא N P־שלמה .ראינו זאת בתרגיל ,10שאלה 2באמצעות רדוקציה מ־ ) HAMPATHעבור גרפים מכוונים( .במהלך הרדוקציה ,יצרנו שלושה קודקודים vin , vmid , voutעבור כל קודקוד של הגרף המקורי ,חיברנו צלעות ) (vin , vmid ), (vmid , voutודאגנו לכך שהצלעות המכוונות יהפכו לצלעות מן הצורה ) .(vout , uinתודות לבנייה הזאת ,אנו מבטיחים שמסלול המילטוני בגרף החדש קיים אםם קיים מסלול המילטוני בגרף המקורי. .7השפה NOTALLSATשל נוסחאות ה־ 3CNFכך שקיימת השמה שבכל פסוקית משאירה ליטרל אחד לא מסופק וליטרל אחד מסופק היא N P־שלמה .ראינו זאת בתרגיל ,10שאלה 3באמצעות רדוקציה מ־ .3SATכל פסוקית מהצורה ) (ai ∨ bi ∨ ci הופכת ל־ )(ai ∨ bi ∨ xi ) ∧ (xi ∨ ci ∨ yi ) ∧ (xi ∨ yi ∨ z כאשר zהוא משתנה חדש המשותף לכל הפסוקיות ,ו־ xi , yiספציפיים עבור כל פסוקית .לנוסחא המקורית יש השמה מספקת אםם לנוסחא החדשה יש השמה המקיימת את הדרישות מ־ .NOTALLSAT 37 .8השפה } MAXCUT = {hG, ki : G has a cut of size at least kהיא N P־שלמה .ראינו זאת בתרגיל ,10שאלה 3 באמצעות רדוקציה מ־ .NOTALLSATבגרף Gהחדש :לכל ליטרל יוצרים קודקוד ,ובין כל שני ליטרלים המופיעים באותה פסוקית יוצרים צלע .בנוסף ,על כל הופעה של משתנה בנוסחא ,יוצרים את הקודקודים x, xומחברים ביניהם בצלע .בסה"כ בגרף 6mצלעות והפלט של הרדוקציה הוא .hG, 5mi קל לראות שהשמה מתאימה מייצרת חתך בגודל ) 5mצדדי החתך נקבעים לפי ערך האמת של הליטרלים( ,כי בכל פסוקית יש שתי צלעות בחתך וכל זוג x, xשהוספנו תורם עוד צלע .להיפך x, x ,בהכרח נמצאים בשני צדדים שונים של החתך -אם מעבירים צד את זה שיש לו פחות צלעות בחתך ,במקרה הטוב לא מרוויחים שום דבר. .9השפה } 3COLOR = {hGi : there is a 3-coloring of Gהיא N P־שלמה .ראינו זאת בתרגיל ,11שאלה 1באמצעות רדוקציה מ־ .3SATאנו יוצרים שלושה קודקודים המייצגים את הצבעים T, F, Kומחברים אותם זה לזה -כך מובטח שהם ייצבעו בשלושה צבעים .כל משתנה ושלילתו מחברים ביניהם ול־ - Kכך מובטח שהם ייצבעו ב־ T, Fמה שישרה את ההשמה .כדי להבטיח את התקינות לגבי הפסוקיות ,מהפסוקית l1 ∨ l2 ∨ l3מייצרים gadgetמהצורה: ע"י בדיקה מייגעת של 7מקרים מקבלים שזו אכן רדוקציה. גם הבעיה } COLOR = {hG, ki : there is a k -coloring of Gהיא N P־שלמה באופן טריוויאלי ,וגם k -COLOR = {hGi : } k > 3, there is a k -coloring of Gהיא N P־שלמה באמצעות רדוקציה מ־ 3COLORע"י הוספת k − 3קודקודים המחוברים לעצמם ולכל קודקודי הגרף המקורי. 6.7 בעיות חיפוש לעתים התשובה לשאלה צריכה להיות לא בוליאנית אלא ממש "להראות משהו" .למשל ,לא רק להגיד שקיים זיווג בגרף ,אלא להצביע על הזיווג הזה; לא רק להגיד שקיימת קליקה בגודל ,kאלא ממש להצביע עליה .בעיות חיפוש הן לא קלות יותר מבעיות ההכרעה המתאימות ,אבל בדרך כלל הן גם לא יותר קשות. .1נניח שאנו מחפשים את גודל הקליקה המקסימלית בהינתן קופסה שחורה -מ"ט פולינומיאלית - Aשמכריעה את .CLIQUE אפשר לעשות חיפוש בינארי ,או סתם לעבור סדרתית על המספרים -עד שמגלים את גודל הקליקה המקסימלית ,kובכל מקרה גודל הקליקה לא יעלה על מספר הקודקודים .כדי למצוא את הקליקה עצמה ,בודקים לכל v ∈ Vהאם ב־ } G \ {vעדיין יש קליקה בגודל .kאם כן ,אפשר להשמיט את - vוכך בסוף מגיעים לקליקה עצמה. .2נניח שאנו מחפשים השמה מספקת של נוסחת ,CNFבהינתן מ"ט פולינומיאלית Aשמכריעה את ) CNFSATלחלופין יכולנו להניח ,כמו בתרגיל ,10ש־ .(P = N Pנפעל כך :ניתן ל־ x1ערך Tונבדוק בעזרת Aהאם הנוסחא החדשה ספיקה .אם כן -נמשיך ל־ .x2אם לא -ניתן ל־ x1ערך Fוכן הלאה. .3נניח שאנו מחפשים חתך בגודל מקסימלי בגרף ,בהינתן מ"ט פולינומיאלית שמכריעה את ) MAXCUTתרגיל ,10שאלה .(4 תחילה נמצא את גודל החתך המקסימלי - k ,למשל ע"י חיפוש ליניארי .לאחר מכן ,עלינו לבדוק עבור כל צלע האם הסרתה מהגרף משפיעה על גודל החתך המקסימלי ,ולחלק את הקודקודים בצדי הצלע בהתאם. 6.8 סגירות של NPו־ coNP טענה 6.29אם L1 , L2 ∈ N Pאזי: L1 ∪ L2 ∈ N P .1 L1 ∩ L2 ∈ N P .2 L∗1 ∈ N P .3 הוכחה) :סקיצה( .1ננחש באופן לא דטרמיניסטי באיזו שפה הקלט נמצא ונריץ את המכונה המתאימה. .2באמצעות מוודא -מקבלים שני עדים ,ומוודאים את שניהם באמצעות שני המוודאים. .3בהינתן מילה ,נבקש מהעד את החלוקה לתת־מילים ועדים לגבי כל תת־מילה. הערה 6.30אבל ,L1 ∈ N P ∧ L1 ⊆ L ; L ∈ N P ,למשל עבור ∅ = L1ו־ .L = AT Mבאופן דומהL1 ∈ N P ∧ L ⊆ L1 ; , ,L ∈ N Pלמשל עבור ∗ L1 = Σו־ .L = AT M יתר על כן ,לא ידוע האם .L ∈ N P =⇒ L ∈ N Pלכן: הגדרה ,coN P = {L : L ∈ N P } 6.31כלומר מחלקת השפות שהמשלים שלהן ב־ .N P ∈ hkiיכול להיות מחלק שלו לדוגמא ,השפה } PRIME = {hii : i ∈ N is primeהיא ב־ ,coN Pשכן העד לכך ש־ / PRIME )שהוא בהכרח קטן ממנו( .אגב ,הוכיחו ב־ 2002ש־ .PRIME ∈ P 38 הערה 6.32יש בעיות שיודעים שהן ב־ N P ∩ coN Pאבל לא יודעים האם הן ב־ .Pלא ידועים גם היחסים בין N Pל־ .coN P מה שכן ברור זה ש־ ,P ⊆ N P ∩ coN Pכי Pסגורה למשלים. טענה 6.33אם L1 ∈ coN Pו־ ,L2 ≤p L1אזי .L2 ∈ coN P הוכחה :נובעת מיידית מכך שאם A ≤p Bאז .A ≤p B הגדרה 6.34אם L ∈ coN Pולכל L0 ∈ coN Pמתקיים L0 ≤p Lאזי נאמר ש־ Lהיא coN P־שלמה. טענה L .1 6.35היא coN P־שלמה אםם Lהיא N P־שלמה. .2אם Lהיא coN P־שלמה ו־ ,L ∈ N Pאז .N P = coN P הוכחה :תרגיל ,11שאלה ) .3זה ממש קל(. הפילוסופיה של coNPו־ :IP בהינתן טענה מתמטית Pומקום 1tלכתיבת ההוכחה שלה ,ברור שבהינתן הוכחה אנו יכולים לוודא בזמן פולינומי שאכן מדובר בהוכחה כשרה .לכן הבעיה של מציאת הוכחה באורך tלטענה המתמטית Pהיא ב־ ,N Pומסתבר שהיא גם N P־שלמה .זו אחת הסיבות שאנו מאמינים ש־ - P 6= N Pאם ,P = N Pלהוכיח טענה זה קל באותה מידה כמו לבדוק בצורה טכנית שההוכחה נכונה. הבעיה המשלימה היא :בהינתן Pטענה מתמטית ,לא קיימת הוכחה באורך tלטענה .זו כבר בעיה coN P־שלמה .לא ברור מהו העד לכך שאין הוכחה )שאפשר לבדוק בזמן פולינומי!( ,בעוד שהיה ברור לגמרי מהו העד לקיום ונכונות הוכחה -ההוכחה עצמה. אותו קושי נכון להרבה בעיות coN P־שלמות :איך משתכנעים שאין בגרף מעגל המילטון? איך משתכנעים שאין בגרף קליקה בגודל ?k האלטרנטיבה למוודאים שקיימת עבור coN Pהיא "לדבר עם מישהו" בזמן פולינומי ולהשתכנע .קוראים לזה פרוטוקול אינטראקטיבי ונראה בהמשך ש־ .coN P ⊆ IP 6.9 אינטראקטאביליות ) (Intractabilityוסימולציה בזמן ∈ .Lלדוגמא ,נרצה למצוא מטרתנו עבור ) t(nכלשהי למצוא ]) L ∈ TIME[t(nכך שעבור )/ TIME[r(n)] ,r(n) < t(n ∈ .Lמהדיון ינבע גם ש־ ,P ( EXPTIMEכלומר איפשהו בין Pל־ EXPTIMEבאמת ] L ∈ TIME[n3אבל ] / TIME[n2 מתווספות שפות חדשות. הרעיון הכללי :יהיו לנו מכונות טיורינג M, M 0כך ש־ M 0מסיימת לחשב מהר יחסית ו־ Mעובדת יותר זמן .רוצים להשתמש ב־ Mכדי לחשב שפה ש־ M 0לא יכולה לחשב .כדי ש־ M 0תמיד לא תצליח לחשב את מה ש־ Mמחשבת M ,יכולה לסמלץ ריצה של M 0ולענות את ההיפך .כמובן M ,לא מכירה את M 0ולכן צריכה לסמלץ את כל המכונות שרצות בזמן של ,M 0ולעשות את זה בזמן יעיל) .כשראינו מכונת טיורינג אוניברסאלית ,עלות הסימולציה הייתה ) ,O(n2וזה לא יאפשר לנו להפריד בין מחלקות כמו ] TIME[n3ו־ ] (.TIME[n2 הגדרה 6.36תהי t : N → Nומתקיים ) .t(n) = Ω(n log nנאמר ש־ tחשיבה בזמן אם קיימת מכונת טיורינג שבהינתן הקלט 1n מחשבת את ) t(nבייצוג בינארי בזמן )).O(t(n הסיבה לחסם התחתון היא שאפילו רק למצוא את אורך הקלט שנתון בייצוג אונארי לוקח זמן .n log n דוגמאות: t(n) = n2 .1חשיבה בזמן -לוקח n log nזמן למצוא את ) nקידום מונה באורך log nבמשך nצעדים( ואז העלאה בריבוע לוקחת זמן שהוא פולינומי ב־ .log n t(n) = nblog2 nc .2חשיבה בזמן. t(n) = 2n .3חשיבה בזמן ) ,O(nשכן נכתוב 1ואז על כל ספרה של הקלט נוסיף 0לפלט. מחשבת את הקונפיגורציה של Mבריצתה על משפט ) 6.37משפט הסימולציה בזמן( קיימת מכונת טיורינג Sשבהינתן ) (hM i, w, t wבמשך tצעדים ,ומתקיים :אם | n = |hM i| + |wו־ t ≥ nאזי Sמסיימת לרוץ בזמן ).O t(|hM i|3 + log t הוכחה :קצת אינטואיציה -בביטוי המפחיד שאנו רוצים להוכיח |hM i| ,מופיע כי אנו צריכים גישה לקידוד של Mבכל צעד של הסימולציה ,ו־ log tמופיע כי צריך לספור מ־ 0עד tאת צעדי הסימולציה .כעת נעבור להוכחה. נשים לב שבהינתן מצב qשל Mואות aמתוך א"ב העבודה שלה ,ניתן לחשב את ) δM (q, aבזמן ) .O(|hM i|3איפה הבעיות? .1צריך להפריד את hM iמהסרט של Mתוך כדי סימולציה )אנחנו צריכים מכונה בעלת סרט אחד(. .2צריך להחזיר את הראש בכל פעם לקידוד של Mוכשהריצה נמצאת בשלבים מתקדמים ,יכול להיות שזה כבר ייקח יותר מאשר ) O(|hM i|3זמן. .3צריך לעצור אחרי tצעדים ,כלומר צריך לשמור את המונה שסופר צעדים .אם שומרים אותו בתחילת הסרט ,שוב כדי לעדכנו צריך לחזור לתחילת הסרט וזה ייקח זמן שגדול מ־ .log t 39 אילוסטרציה: M 0 s head ↓ ][. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t #hM i # M 0 s tape כדי לפתור את הבעיות הנ"ל ,נצטרך לאחסן את המידע שמשתמשים בו בסמוך למקום שבו צריך אותו ,כלומר בסמוך לראש המסומלץ .את תאי הסרט של Sנחלק לשלוש שכבות ,כלומר כל תא יהיה שלשה: סרט העבודה של - Mבקידוד לא"ב של S המצב הנוכחי qוהקידוד של ,Mמשמאלו המונה שסופר את מספר הצעדים שבוצעו בנוסף ,נצטרך סימן מיוחד ,למשל ˙ )נקודה מעל( ,כדי לציין את המקום שבו הראש של Mנמצא על סרט העבודה .נשים לב שגם qוגם hM iיהיו כתובים ,ככל הנראה ,על מספר תאים ,אבל בכל מקרה בשכבה השניה מתחת למקום שבו נמצא הראש של .M כנ"ל לגבי המונה. למשל ,כאשר סרט החישוב של Mמכיל ,abהראש נמצא מעל ,aוהמצב הוא ,qתמונת המצב של הסרט של Sתהיה כזו: ˙a b hM i q המונה ולאחר שהראש זז ימינה והחליף את aב־ ,cתמונת המצב של הסרט של Sתהיה כזו: c ˙b q hM i המונה כלומר ,בכל צעד אנו כותבים את המונה ,המצב ,והקידוד של המכונה מתחת לתא שאליו זזנו ,וצריך לחסר מהמונה .כל צעד חישוב של Mניתן לפיכך לסמלץ בזמן ) O(|hM i|3 + log tולכן מתקבל החסם הנדרש לגבי עלות כל הסימולציה ,שנמשכת tצעדים. הערה 6.38הדרישה t ≥ nנועדה להבטיח שיצירת המצב ההתחלתי )שלוקחת זמן ליניארי ב־ (nלא תשפיע על ההתנהגות האסימפטוטית של הסימולציה. מסקנה 6.39אם t : N → Nפונקציה חשיבה בזמן ,אז קיימת מכונת סימולציה S 0המקיימת: .1על קלט באורך S 0 ,nרצה בזמן ));O(t(n )t(n .2על קלט מהצורה ) S 0 ,(hM i, wמחשבת את הקונפיגורציה של Mבריצתה על הקלט ) (hM i, wבמשך b |hM i|3 +log t(n) c צעדים. ) .t0 = b |hM i3t(nניתן למכונה Sמהמשפט לטפל בקלט הוכחה :פעולת המכונה תהיה כך .ראשית ,מ־ ) (hM i, wנחשב את |+log t(n) c ) (hM i, (hM i, w), t0ונחזיר את מה ש־ Sמחזירה) .יש גם תקינות קלט שלוקחת זמן ליניארי(. נבדוק זמנים :לחשב את | |hM i| + |wלוקח זמן n log nוזה בסדר כי tחשיבה בזמן )כלומר ,חסומה מלרע ע"י .(n log nכדי לחשב את ,t0צריך לחשב את ) - t(nבזמן )) O(t(nכי היא חשיבה בזמן ,לחשב ) log t(nלוקח זמן )) ,O(log t(nלחשב את |hM i|3 אפשר בזמן פולי־לוגריתמי ,ולבסוף לחשב את המנה )בשלמים!( כנ"ל. כלומר ,חישוב t0לוקח זמן )) .O(t(nבניית הקלט ל־ S 0זניחה לעומת הריצה של Sשהוא ) .O t0 (|hM i|3 + log t0גם כאן מקבלים )) O(t(nכנדרש. )משפט הסימולציה בזמן( אם t : N → Nחשיבה בזמן ,אזי קיימת שפה ]) L ∈ TIME[t(nאבל אי אפשר להכריע את 6.40 משפט )t(n Lבזמן ).o log t(n הוכחה :נצביע במפורש על השפה הזאת .זוהי השפה הבאה: )t(n 0 =L = {(hM i, w) : n := |hM i| + |w|, t : : )|hM i|3 + log t(n }M does not accept (hM i, w) within t0 steps ראשית ,ברור ש־ ]) L ∈ TIME[f (nכי בהינתן hM i, wנריץ את Mעל wונבדוק האם היא מקבלת תוך t0צעדים .לפי משפט הסימולציה ,יש לנו מכונה שעושה את זה בזמן )) ,O(f (nואם Mלא קיבלה -נקבל. 40 כעת נניח בשלילה שקיימת מ"ט M0המכריעה את Lורצה בזמן k קלט מהצורה ) .(hM0 i, wעבור nגדול מספיק מתקיים = t0 )t(n )log t(n )t(n )|hM0 i|3 +log t(n j .r(n) = oבפרט הדבר נכון כאשר M0רצה על < ) r(nכיוון ש־ | |hM0 iקבוע .נבחר קלט מהצורה ) (hM0 i, wשאורכו nמספיק גדול כנ"ל. ∈ ) (hM0 i, wוזו סתירה כי M0מכריעה את כעת אם M0מקבלת את ) (hM0 i, wאז היא מקבלת אותו בזמן r(n) < t0ולכן / L .Lלהיפך ,אם M0דוחה את ) (hM0 i, wאז זה אומר שהיא לא מקבלת תוך r(n) < t0צעדים ולכן (hM0 i, w) ∈ Lוזו שוב סתירה כי M0אמורה לקבל את ) (hM0 i, wכי היא מכריעה את .L 7 סיבוכיות זיכרון בפרק זה נתבונן על מדד אחר של "ביצועי" מכונת טיורינג -כמות הזיכרון שהיא משתמשת בה .נשים לב שלכל המודלים של מ"ט שראינו )מספר סרטים RAM ,וכו'( הצלחנו לעשות סימולציה בזיכרון ליניארי אפילו אם הזמן היה ריבועי או יותר .זה די מתבקש, שהרי אפשר להשתמש שוב ושוב באותו הזיכרון ,מה שאי אפשר לעשות לגבי זמן. 7.1 מחלקות זיכרון PSPACE ,ו־ NPSPACE הגדרה 7.1אם Mמכונת טיורינג דטרמיניסטית שלכל קלט xעוצרת תוך שימוש ב־ )| O(f (|xתאי סרט ,אז נאמר ש־ ∈ ) L(M ]).SPACE[f (n )המטרה של ה־ Oכאן היא להבטיח שלא תהיה חשיבות לא"ב של הסרט ,כל עוד הוא לא אונארי(. אם Nמכונת טיורינג לא דטרמיניסטית שלכל קלט xעוצרת תוך שימוש ב־ ))| O(f (|xתאי סרט ,ובנוסף: .1אם Nמקבלת את ,xאז קיימת ריצה מקבלת. .2אם Nדוחה את ,xאז כל הריצות דוחות. אז נאמר ש־ ]).L(N ) ∈ NSPACE[f (n לגבי שפה כלשהי ,Lנאמר ש־ ]) L ∈ SPACE[f (nאם קיימת מ"ט דטרמיניסטית שמכריעה אותה בזמן )) ,O(f (nוכנ"ל לגבי ]).NSPACE[f (n הערה 7.2יש בעיה עם ההגדרה הזאת עבור מחלקות מקום תת־ליניאריות ,שכן הקלט עצמו כבר תופס מקום שהוא ליניארי באורך הקלט .כדי להתמודד עם זה ,כל המכונות שלנו יהיו בעלות שני סרטים: .1סרט הקלט -הקלט כתוב עליו ואסור לשנותו. .2סרט החישוב -מותר לשנותו. והשאלה על SPACEהיא לגבי סרט החישוב .כעת fיכולה להיות גם פונקציה תת־ליניארית ,כמו למשל .logלמשל ,כל שפה רגולרית תהיה ב־ ] ,SPACE[0כי קיימת מ"ט שמכריעה אותה והיא פשוט .DFA הגדרה 7.3 ] SPACE[nk [ = PSPACE k∈N ] NSPACE[nk [ = NPSPACE ]SPACE[log n = L = LOGSPACE ]NSPACE[log n = N L = NLOGSPACE k∈N לדוגמא - SAT ∈ PSPACE ,נעבור על כל ההשמות ,כלומר נכתוב אחת על הסרט בכל רגע ונבדוק האם היא מספקת את הנוסחא. ברור שכמות הזיכרון היא פולינומיאלית -ולמעשה ליניארית -באורך הנוסחא. הערה 7.4בהינתן מכונה שעובדת ב־ ]) TIME[f (nברור שהיא גם ב־ ]) SPACE[f (nשהרי היא לא יכולה להשתמש ביותר תאי סרט מאשר צעדי חישוב .לכן: ])⊆ SPACE[f (n ])⊆ NSPACE[f (n ])TIME[f (n ])NTIME[f (n להיפך ,בהינתן מכונה שעובדת ב־ ]) ,SPACE[f (nיש מספר חסום של קונפיגורציות שמשתמשות ב־ )) O(f (nתאי סרט .אם רצים יותר זמן ,חוזרים על אותה קונפיגורציה פעמיים -ולכן הריצה לא תסתיים .קונפיגורציה מורכבת ממצב המכונה ,מקום הראש 41 על הסרט הראשון ,מקום הראש על הסרט השני ,ומצב הסרט השני )שהרי מצב סרט הקלט תמיד קבוע( .יש לנו | |Qמצבים|x| , אפשרויות למקום הראש על סרט הקלט O(f (x)) ,מצבים לראש על סרט החישוב ,ו־ ))| |Γ|O(f (|xמצבים של סרט החישוב .זה חסם לא מדויק במיוחד ,והוא נותן: ] ))SPACE[f (n)] ⊆ TIME[n · 2O(f (n כאשר נשים לב שבסיס החזקה לא משנה בגלל ה־ Oבמעריך .באותו אופן, ] ))NSPACE[f (n)] ⊆ NTIME[n · 2O(f (n נוכל להסיק מכאן: NL ⊆ NP L ⊆ P, N P ⊆ NPSPACE, P ⊆ PSPACE, שאלה פתוחה :האם ?L ( N L מכאן נובע העניין בבעיות N L־שלמות וקשות ,וכדי לדבר עליהן נצטרך להגדיר רדוקציה חלשה יותר מאשר רדוקציה פולינומיאלית. זאת משום שנראה בהמשך ש־ N L ⊆ Pולכן רדוקציה פולינומיאלית היא חזקה מדי -הרדוקציה יכולה פשוט להכריע את הבעיה ולהמשיך הלאה .אנחנו נצטרך רדוקציה שרצה ב־ .LOGSPACE 7.2 שלמות ב־ ,NLרדוקציית LOGSPACE הבעיה הקנונית של N Lהיא .PATH הגדרה 7.5 }PATH = {hG, s, ti : G is a directed graph, there is a path in G from s to t טענה .PATH ∈ N L 7.6 הוכחה :נציג מכונת טיורינג לא דטרמיניסטית שמכריעה את PATHופועלת בזיכרון לוגריתמי באורך הקלט .האלגוריתם שהמכונה מממשת: .1אתחל v ← s .2באופן לא דטרמיניסטי) v ← u : (v, u) ∈ E ,מתוך כל הצלעות המקיימות זאת( .3אם ,v = tקבל .4אחרת ,חזור על שלב ,2אבל לא יותר מאשר | |Vפעמים .5דחה ברור שהמגבלה על | |Vתקינה כי אם יש מסלול ,יש מסלול שמשתמש בלא יותר מאשר | |Vצלעות ,בפרט מסלול פשוט ,ונכונות האלגוריתם ברורה .כמות המקום שמשתמשים בו :אנו צריכים מקום למונה ול־ ,vכל אחד מהם בין 1ל־ | |Vולכן כמות המקום - בייצוג בבסיס - 2היא )| O(log |Vולכן .PATH ∈ N L הגדרה 7.7יהיו A, Bשפות כלשהן .רדוקציית LOGSPACEזוהי פונקציה חשיבה f : Σ∗A → Σ∗Bהפועלת ב־ LOGSPACEכך ש־ .x ∈ A ⇐⇒ f (x) ∈ Bהמשמעות של "חשיבה ב־ "LOGSPACEהיא שיש שלושה סרטים: .1סרט הקלט -לקריאה בלבד. .2סרט חישוב -לקריאה ולכתיבה. .3סרט הפלט -לכתיבה בלבד. והדרישה היא שמספר התאים שמשתמשים בהם בסרט החישוב יהיה ).O(log n אם קיימת רדוקציית LOGSPACEבין Aל־ ,Bנסמן .A ≤L B טענה 7.8אם A ∈ N Lאז .A ≤L PATH 42 הוכחה :בהינתן קלט xנבנה hG, s, tiכדלקמן :יש לנו את ,Nמ"ט לא דטרמיניסטית שמכריעה את Aב־ .LOGSPACEבגרף ,G הקודקודים Vיהיו הקונפיגורציות של Nו־ Eהקשתות שמחברות בין שתי קונפיגורציות שניתן לעבור ביניהן באמצעות מעבר .δ אנחנו לא צריכים את כל הקונפיגורציות ,אלא רק קונפיגורציות עם סרט באורך )| - O(log |xוהקבוע של ה־ Oידוע לנו מהמכונה. יש מספר פולינומיאלי ב־ | |xשל קונפיגורציות כאלה s .יהיה הקונפיגורציה ההתחלתית על ,xו־ tתהיה קונפיגורציה מיוחדת שיש אליה מעבר מכל קונפיגורציה מקבלת )כך אנו מטפלים באפשרות שיש כמה קונפיגורציות מקבלות -למשל t ,מייצגת את qaccכאשר על הסרט לא כתוב שום דבר(. צריך להראות שהרדוקציה נכונה ופועלת ב־ .LOGSPACEכל קונפיגורציה מכילה )| O(log |xביטים -אינדקס ,מספר המצב, מצב הסרט שהוא בעצמו בגודל )| ,O(log |xומצב הראש שהוא מספר בין 1ל־ | ;|xלאחר מכן עלינו לעבור על זוגות קונפיגורציות )עדיין (LOGSPACEוכמובן כנ"ל לגבי .s, tהפלט כאן הוא בכלל לא ,LOGSPACEאבל על סרט החישוב אנחנו בהחלט משתמשים רק ב־ )| O(log |xמקום .כמובן ,הנכונות קלה. לכן PATHהיא N L־שלמה. הערה 7.9יש אלגוריתם פולינומיאלי בזמן שמכריע את ,PATHלמשל BFSאו .Dijkstraלכן .PATH ∈ Pכמובן ,אם יש רדוקציה חשיבה ב־ LOGSPACEאז מהאבחנות שלנו קודם היא חשיבה ב־ Pכמות שהיא )מספר הקונפיגורציות הוא פולינומיאלי( ,כלומר ≤Lגורר .≤pמזה נסיק ש־ .N L ⊆ P היררכיית המחלקות הידועה לנו כרגע: L ⊆ N L ⊆ P ⊆ N P ⊆ NPSPACE וגם: P ⊆ PSPACE ⊆ NPSPACE טענה 7.10אם A ≤L Bו־ B ∈ N Lאז .A ∈ N L הוכחה :נשים לב שזה לא טריוויאלי -הפלט של הרדוקציה יכול להיות פולינומיאלי ,אין לנו חסם עליו בניגוד לרדוקציה פולינומיאלית בזמן .הרעיון הכללי הוא כזה :לא חייבים להחזיק את כל ) f (xאלא אפשר לחשב אותו מספר פעמים. בהינתן xקלט של Aורדוקציית LOGSPACEל־ Bשנסמנה ,fאנחנו מסמלצים את המכונה Mשמכריעה את .Bבכל פעם ש־ Mמנסה לקרוא קלט ,אנחנו נחשב את ) f (xב־ LOGSPACEונפלוט רק את האות שהראש של Mצריך כרגע -את זה נעשה לכל צעד של .Mכיוון ש־ Bפועלת ב־ LOGSPACEואנחנו לא שומרים את כל ) f (xאף פעם ,מקבלים מכונה להכרעת Aב־ LOGSPACEכנדרש. הגדרה 7.11מוודא LOGSPACEזוהי מכונת טיורינג בעלת שלושה סרטים שהקלט שלה הוא זוג .x, yהסרט הראשון הוא סרט קלט שעליו כתוב ,xוזהו סרט לקריאה בלבד .הסרט השני הוא סרט העד שעליו כתוב ,yוזהו סרט לקריאה בלבד בכיוון אחד )ימינה בלבד( .הסרט השלישי הוא סרט העבודה ,ואנו דורשים שצריכת המקום עליו תהיה )|.O(log |x טענה A ∈ N L 7.12אםם קיים מוודא LOGSPACEעבורה Vכך ש־ }) .A = {x : ∃y, hx, yi ∈ L(V הוכחה) :תרגיל ,12שאלה (3סקיצת הוכחה :בהינתן מוודא ,מ"ט לא דטרמיניסטית עבור Aיכולה לסמלץ את המוודא על סרט העבודה שלה ,כאשר סרט הקלט שלה הוא גם סרט הקלט של המוודא .מה לגבי סרט העד? ובכן ,בכל פעם שהמוודא מבקש אות מסרט העד ,המכונה שלנו בוחרת אות באופן לא דטרמיניסטי -אין צורך לשמור את האות כי הסרט הוא חד־פעמי. להיפך ,העד הוא מהלך הריצה המקבלת )"כתובת"( של המ"ט הלא דטרמיניסטית עבור Aעל הקלט .המוודא יכול לבדוק את תקינות המהלך והעובדה שהריצה מקבלת בדומה להוכחה עבור מוודאים ב־ .N P 7.3 שלמות ב־ PSPACE אנו רוצים למצוא שפה שלמה ב־ ,PSPACEומשתמשים ברדוקציות פולינומיאליות בזמן לשם כך .אפשר היה באופן עקרוני להגדיר רדוקציית PSPACEולהשתמש בה ,אבל המטרה שלנו היא להפריד בין Pל־ .PSPACEכיוון שבמילא ,P ⊆ PSPACEרדוקציית PSPACEמבעיה ב־ Pיכולה בעצמה לפתור את הבעיה ,כלומר היא חזקה מדי. השפה שנתבונן בה תהיה ,TQBFשפת הנוסחאות הבוליאניות הסגורות )עם כמתים (Totally Quantified Boolean Formula -שערך האמת שלהן הוא .T בנוסחא כזו אנו מרשים להשתמש גם בכמת ∃ וגם בכמת ∀ ,ודורשים שכל המשתנים יהיו תחת כמת .לכן ,ערך האמת של הנוסחא קבוע ואינו תלוי בהשמה על המשתנים .למשל ,לנוסחא ) ∀x∃y(x ∨ y) ∧ (x ∨ yיש ערך אמת ,Tשכן לכל xאפשר לבחור .y = x לעומת זאת ,לנוסחא ) ∃y∀x(x ∨ y) ∧ (x ∨ yיש ערך אמת .Fנרשה להכניס לנוסחא גם את הקבועים .T, F 43 טענה .TQBF ∈ PSPACE 7.13 הוכחה :אלגוריתם להכרעת TQBFבמקום פולינומיאלי על הנוסחא :ϕ .1אם ב־ ϕיש רק קבועים ,נעבור עליה ונחשב את ערך האמת. .2אחרת ,אם הכמת הראשון הוא ∃ ,כלומר ,ϕ = (∃x)ϕ0אז נציב פעם אחת x = Tופעם אחת ,x = Fובכל פעם נבצע קריאה רקורסיבית כדי לבדוק האם הנוסחא החדשה היא ב־ .TQBFנחזיר "כן" אם אחת ההצבות הצליחה. .3אם ,ϕ = (∀x)ϕ0נעשה כנ"ל אבל נחזיר "כן" רק אם שתי ההצבות הצליחו. קל להוכיח את נכונות האלגוריתם באינדוקציה על מספר הכמתים בנוסחא .לגבי כמות המקום שמשתמשים בה :יש כאן רקורסיה, ובכל שלב של הרקורסיה אנחנו צריכים לזכור מה היה הערך -כלומר צריך מחסנית קריאות .כל frameבמחסנית תופס רק מקום קבוע )כי אנחנו לא צריכים לשמור את כל הנוסחא ,וגם אם כן זה יהיה בסדר( ,ועומק הרקורסיה הוא כמספר המשתנים .לכן כמות המקום היא אכן פולינומיאלית באורך הנוסחא. הערה 7.14בכל הדיון הזה לא הוכחנו ש־ TQBFהיא שלמה ב־ .PSPACEניתן למצוא את ההוכחה המלאה בוויקיפדיה או בספר, והיא מתבססת על הרעיון של CANYIELDמהמשפט הבא. עיקר העניין הוא שאפשר לבנות נוסחא המייצגת את מצב המכונה )בדומה למה שעשינו בהוכחה ש־ SATהיא N P־שלמה( ,ואף נוסחא עבור קונפיגורציות ϕc1 ,c2 ,tשמקבלת ערך אמת Tאםם המכונה המתאימה יכולה לעבור מ־ c1ל־ c2תוך tצעדים .אז, השאלה על קבלת מילה תוך xצעדים מצמטצמת לבדיקת הנכונות של הנוסחא .ϕc0 ,cacc ,x כאן העסק מסתבך מעט כי צריך להראות שאפשר לחשב את הרדוקציה בזמן פולינומי ,ובאופן עקרוני עושה רושם שהנוסחא מתפוצצת באופן אקספוננציאלי .אבל ,אנו יכולים לנצל את שני הכמתים כדי לשים לב למאפיין הבא: ϕc1 ,c2 ,t ≡ ∃c0 ∀c3 , c4 ∈ {(c1 , c0 ), (c0 , c2 )}ϕc3 ,c4 ,d 2t e ואת הנוסחא הזאת אפשר לבנות בזמן פולינומיאלי. משפט ) 7.15משפט (Savitchאם ) f (n) = Ω(log nאז: ])NSPACE[f (n)] ⊆ SPACE[f 2 (n הוכחה :אנו נעשה כמה הנחות מקלות שמגבילות את הכלליות -נדרוש ) f (n) = Ω(nוגם ש־ fחשיבה ב־ ]) .SPACE[f (nנניח ש־ Nמ"ט לא דטרמיניסטית שעובדת ב־ ]) SPACE[f (nונבנה מ"ט דטרמיניסטית שעובדת ב־ ]).SPACE[f 2 (n נרצה לשאול על Nאת השאלה ) CANYIELD(c1 , c2 , tשמשמעותה -האם ניתן להגיע מהקונפיגורציה c1לקונפיגורציה c2תוך ביצוע tצעדי חישוב. להלן האלגוריתם ):CANYIELD(c1 , c2 , t .1אם ,t = 1ניתן לענות מהתבוננות ב־ .δN .2אחרת ,לכל c0אפשרית :אם גם ) CANYIELD(c1 , c0 , b 2t cוגם ) CANYIELD(c0 , c2 , d 2t eקבל. .3דחה. נכונות האלגוריתם ברורה מאינדוקציה על .tצריך לציין שאנו מסתכלים על c0שאורך תוכן הסרט שלה הוא לא יותר מאשר )) ,O(f (nמהנתון על .N צריכת המקום של האלגוריתם :כל רמה של הרקורסיה דורשת לשמור את c0כדי שנוכל למצוא את ה־ c0הבא ,וכן עוד מספר קבוע של קונפיגורציות .כלומר ,כל רמה צורכת מקום )) O(f (nוכן צריך לשמור את .tעומק הרקורסיה הוא .dlog2 te כעת בהינתן xנרצה לבדוק האם Nמקבלת את ,xוזה קורה אםם יש ריצה מהקונפיגורציה ההתחלתית על xלקונפיגורציה מקבלת כלשהי .נדרוש שתהיה ל־ Nקונפיגורציה מקבלת יחידה -צריך בשביל זה מעבר מ־ qaccלמצב מקבל חדש שבדרך אליו מוחקים את כל הסרט ושמים את הראש במקום הראשון -וזה כמובן לא מגביל את הכלליות. מספר הקונפיגורציות האפשריות בסה"כ הוא )) ,2O(f (nכלומר Nתרוץ לכל היותר במשך )) 2O(f (nצעדים .לכן N ,מקבלת את xאםם ) )) CANYIELD(c0 , cacc , 2O(f (nכאשר c0 , caccהקונפיגורציות ההתחלתית והמקבלת בהתאמה. כיוון שאנו יודעים את ,tעומק הרקורסיה הוא )) O(f (nעם צריכת זיכרון של )) O(f (nלכל ,frameולכן סה"כ צריכת הזיכרון היא )) O(f 2 (nכנדרש .נשים לב שכדי לרשום את tאנו צריכים ) )) log(2O(f (nמקום ,אבל זה בדיוק )) O(f (nעדיין. מסקנה NPSPACE = PSPACE = coPSPACE = coNPSPACE 7.16 הוכחה :מסקנה ישירה מהמשפט והעובדה ש־ PSPACE = coPSPACEשכן זו מחלקה של שפות המוגדרות ע"י מכונות דטרמיניסטיות ואפשר להחליף את qaccו־ qrejכפי שראינו בעבר כדי לקבל את השפה המשלימה. טענה 7.17תהי f : N → Nכך ש־ .f (n) ≥ nאז מתקיים ]).NTIME[f (n)] ⊆ SPACE[f (n 44 הוכחה) :תרגיל ,11שאלה (5סקיצת הוכחה :בהינתן מ"ט לא דטרמיניסטית Nהמכריעה ]) ,L ∈ NTIME[f (nבונים מ"ט דטרמיניסטית הפועלת במקום )) O(f (nשמבצעת סימולציה של כל הריצות האפשריות של .Nכדי לכתוב את הריצה הנוכחית אנו צריכים )) O(f (nמקום וכדי לבצע את הסימולציה עצמה -כנ"ל. טענה 7.18השפה }w is an LBA that accepts ALBA = {hM, wi : Mהיא PSPACE־שלמה. הוכחה) :תרגיל ,12שאלה (2סקיצת הוכחה :ניזכר ש־ ALBAזוהי מכונת טיורינג דטרמיניסטית שאסור לה לחרוג בעבודתה מעבר לקטע הסרט שעליו נמצא הקלט שלה .ההוכחה היא באמצעות רדוקציה מכל .L ∈ PSPACEיש ל־ Lמ"ט Dהפועלת במקום k ≥ cnkעל מילים באורך .nבהינתן ,wהרדוקציה מייצרת את הזוג hM, w#c|w| iכאשר Mפועלת כמו Dכשהיא מתייחסת ל־ # כמו למקום ריק על הסרט .כמובן ,המקום שיש ל־ Mמספיק מההנחה על .D 7.4 סימולציה במקום נרצה להגיע למשפט סימולציה במקום ומשפט היררכיה במקום בדומה למה שעשינו לגבי זמן. הגדרה s : N → N 7.19המקיימת s(n) ≥ log nנקראת חשיבה במקום אם יש מ"ט Mשבהינתן קלט מהצורה 1nפולטת את הייצוג הבינארי של ) s(nתוך שימוש במקום )).O(s(n משפט .1 .2 .3 ) 7.20משפט הסימולציה במקום( קיימת מ"ט Sשבהינתן ) (hM i, w, sמקיימת את התנאים הבאים: אם בריצתה על wהמכונה Mמשתמשת ביותר מ־ sתאי סרט ,או נכנסת ללולאה אינסופית ,אז Sתדחה. אם בריצתה על wהמכונה Mמשתמשת ב־ ≥ sתאי סרט ועוצרת ,אז Sתענה כמו .M Sמשתמשת לכל היותר ב־ ) O(s log nתאי סרט ,כאשר |.n = |hM i הוכחה) :חלקית בלבד( אנו צריכים לסמלץ sתאים של ,Mכל אחד בקידוד שלא יעלה על log nאותיות בא"ב של .Sכמו כן נשים לב שמכונה המשתמשת ב־ sתאי סרט ולא נתקעת רצה לכל היותר ) O(nsצעדים .לכן: .1נחשב את .nsאם הסימולציה תימשך יותר צעדים מזה ,נדחה) .נשים לב שהמקום הדרוש לשמירת מספר זה הוא בדיוק (.s log n .2נקצה על סרט העבודה מקום ל־ sתוים של הא"ב־סרט של .Mתוך כדי הסימולציה ,אם חורגים מהמקום הנ"ל -נדחה. .3נבצע את הסימולציה כאשר סופרים בכל פעם כמה צעדים כבר עשינו ,ונחזיר לבסוף את מה ש־ Mמחזירה .כאן למשל נצטרך לרשום את המצב שמסמלצים תוך שימוש בא"ב של כמה שכבות ,כמו שעשינו במשפט הסימולציה בזמן. משפט ) 7.21משפט ההיררכיה במקום( אם s : N → Nחשיבה במקום ,אז קיימת ]) L ∈ SPACE[s(nאבל Lלא ניתנת להכרעה במקום )).o(s(n הוכחה) :תרגיל (12ההוכחה דומה מאוד להוכחת משפט ההיררכיה בזמן .אנו בונים את השפה } space )|f (|hM, wi |log |hM i using hM, wi does not accept L = {hM, wi : M )| k = s(|hM,wiבמקום )) ,O(s(nכי sחשיבה במקום .כעת מריצים את מכונת ראשית L ∈ SPACE[s(n)] ,כי אפשר לחשב את |log |hM i הסימולציה על hM, w, kiוזה נעשה תוך זמן ) k log |hM i| = s(nכנדרש. כעת מניחים בשלילה שקיימת מ"ט Tהמכריעה את Lבמקום )) .o(s(nאז תהי ) r(nפונקציית סיבוכיות המקום של מכונה ) .r(n) < logs(nנתבונן בהתנהגות של Tעל מילת קלט כלשהי hT, wiשארוכה מ־ nזה .כמו כזאת ,ועבור nגדול מספיק מתקיים ||hT i )|s(|hT,wi |log |hT i קודם ,אם Tמקבלת את הקלט ,היא עושה זאת בשימוש בפחות מ־ -אם Tאינה מקבלת את הקלט ,אז מילת הקלט כן בשפתה ,וזו שוב סתירה. מקום ,ואז הקלט אינו בשפתה ,וזו סתירה .וגם להיפך מסקנה L ( PSPACE 7.22 והנה המצב המעודכן ביותר של מחלקות בזמן והמקום הידועות לנו כרגע: L ⊆ N L ⊆ P ⊆ N P ⊆ PSPACE ⊆ EXPTIME אנו יודעים שאחת ההכלות בין Pל־ EXPTIMEהיא הכלה ממש בגלל משפט ההיררכיה בזמן ,ויודעים שאחת ההכלות בין L ל־ PSPACEהיא הכלה ממש בגלל משפט ההיררכיה במקום .לגבי שאר ההכלות ,אנחנו רק מאמינים שהן הכלות ממש. 45 8 פרוטוקולים אינטראקטיביים ורנדומיות בפרק זה נראה מודלים חישוביים חדשים ,למשל מודל שבו "מוכיח" ו"מוודא" המנהלים ביניהם תקשורת פולינומיאלית כדי להשתכנע בנכונות של טענה כלשהי בהסתברות גבוהה. 8.1 מבוא לרנדומיות במכונות טיורינג הגדרה 8.1מכונת טיורינג המשתמשת ברנדומיות היא בעלת שלושה סרטים: .1סרט הקלט -לקריאה בלבד. .2סרט עבודה -לקריאה וכתיבה ,כרגיל. .3סרט אקראיות -מחרוזת בינארית של 0/1באורך מסוים שניתן לקרוא כל ביט שלה פעם אחת בלבד ,כאשר כל סדרה בינארית מופיעה על הסרט בהסתברות אחידה .כל קריאה מסרט האקראיות שקולה להטלת מטבע. המכונה פועלת על הקלט xועל המחרוזת האקראית .Rעבור xנתון ,אנו יכולים לשאול עבור כמה מה־ R־ים האפשריים המכונה תקבל ועבור כמה היא תדחה ,ונסמן: ]Pr[M (x) = ACC ] Pr[M (x) = REJ כך נוכל להגדיר מספר מודלים של חישוב הסתברותי: - random polynomial time - RP .1אסור לטעות: 1 2 Pr[M (x) = REJ ] = 1 ≥ ]Pr[M (x) = ACC ⇒= x∈L ⇒= ∈x /L :coRP .2 Pr[M (x) = ACC] = 1 1 ≥ ] Pr[M (x) = REJ 2 ⇒= x∈L ⇒= ∈x /L :BP P .3 2 3 2 ≥ ] Pr[M (x) = REJ 3 ≥ ]Pr[M (x) = ACC ⇒= x∈L ⇒= ∈x /L הערה 8.2אנו יודעים ש־ ,P ⊆ RP ⊆ BP Pורוב החוקרים סבורים ש־ .BP P ⊆ P 8.2 מבוא לפרוטוקולים אינטראקטיביים הגדרה 8.3שני גרפים G1 , G2נקראים איזומורפיים אם הם זהים עד כדי שמות הקודקודים .לדוגמא ,הגרפים הבאים הם איזומורפיים -אפשר לקבל את G1מ־ G2ע"י החלפת הקודקוד 2ב־ .1 הערה 8.4כמובן GraphIso ∈ N P ,שכן העד זוהי פשוט פרמוטציה של הקודקודים ,וכמובן הווידוא לוקח זמן פולינומיאלי .לעומת זאת ,להשתכנע בכך ששני גרפים הם לא איזומורפיים זה די קשה ,אלא אם כן למשל הדרגות של הקודקודים אינן אותו הדבר .אם זאת ,מעצם ההגדרה.GraphNonIso ∈ coN P , 46 אנו זקוקים למודל של אינטראקציה -המכונה הפולינומיאלית "מדברת" עם גוף כל־יכול )נקרא לו "קהל"( שיכול לענות על שאלות, שמחליף את ה"עד" מקודם .הפרוטוקול הוא כזה: .1מטילים מטבע כדי לדעת האם מסתכלים על G1או על .G2 .2מגרילים פרמוטציה אקראית πומפעילים אותה על הגרף שנבחר. .3מראים ל"קהל" את הגרפים ושואלים -מאיזה מהם הגענו לגרף החדש לאחר הפעלת ) ?πכלומר ,מה הביט שהגרלנו בשלב (.1 .4אם הקהל צדק ,נאמר ש־ G1ו־ G2אינם איזומורפיים) .ולהיפך(. הנקודה היא שאם הקהל הכל־יכול הזה טועה ,אז הגרפים איזומורפיים -שכן אפשר לקבל את הגרף שהתקבל לאחר הפעלת πגם מ־ G1וגם מ־ ) G2רק צריך עוד פרמוטציה בדרך( .אם כן ,במקרה שהגרפים לא איזומורפיים אנו תמיד צודקים .אם הגרפים כן איזומורפיים ,אנו צודקים בהסתברות ≤ . 21 אמנם ,ההסתברות הזאת ) ( 12לא נראית טובה במיוחד -אבל אנחנו יכולים לחזור על הפרוטוקול שוב ושוב ובכל פעם אנו מקטינים את הסיכוי לטעות באופן אקספוננציאלי .אחרי kהפעלות של הפרוטוקול נקבל הסתברות לטעות של ≥ . 21k נשים לב גם שהפרוטוקול רץ בזמן פולינומיאלי. הגדרה 8.5מחלקת השפות שאפשר להכריע ע"י ביצוע פרוטוקול כנ"ל בזמן פולינומיאלי נקראת .IP 8.3 בעיית הזהות )(Identity n בעיית הזהות מוגדרת כך :שני אנשים ,אליס ובוב ,מקבלים שניהם מחרוזות בינאריות .אליס מקבלת את המחרוזת } x ∈ {0, 1ובוב מקבל את המחרוזת .y ∈ {0, 1}nבוב טוען ש־ y = xורוצה להוכיח זאת לאליס. Alice Bob B A →← n y ∈ {0, 1}n }x ∈ {0, 1 פתרון טריוויאלי הוא להעביר לאליס את כל ,yודרושים לשם כך nביטים .במקום זאת ,אנו רוצים פתרון הסתברותי )למשל ,עם הסתברות לטעות > ( 41אבל תוך שימוש במספר קבוע של ביטים. הרעיון הוא להשתמש במקור אקראיות משותף" ,לווין בחלל" שיבחר ביטים רנדומיים וישדר אותם ליקום .גם אליס וגם בוב יוכלו להאזין לביטים האלה ,ולדעת שהם קיבלו את אותם ביטים של רנדומיות) .מכאן -רנדומיות משותפת(. Satellite . & B β A α →← לשם הפשטות ,אנו נניח שבוב לא מנסה לרמות ולשכנע את אליס ש־ α = βכשהם לא .הדרישות האחרות שלנו מהפרוטוקול הן כאלה: .1שלמות ) - (completenessאם α = βאז .Pr[”yes”] = 1 .2נאותות ) - (soundnessאם α 6= βאז .Pr[”yes”] ≤ 12 כמו כן ,רוצים לצמצם ככל האפשר את מספר הביטים המועברים. הצעות: .1נתייחס לביטים שהלווין משדר כאינדקס iבין 0ל־ ,n − 1ונשלח את βiלאליס .אליס יודעת שנשלח לה ) βiכי הרנדומיות משותפת( ומשווה .αi =? βiאם הם שונים ,אליס תדחה; אם הם שווים ,נמשיך לעשות את זה n2פעמים .ברור שהשלמות מתקיימת, וגם הנאותות מתקיימת כי הסיכוי שהביט השונה לא ייבחר הוא . 21מספר הביטים המועברים הוא n2במקום .n .2נריץ פונקציית hashכלשהי -משתמשים בביטים המקריים כדי לבחור פונקציה מסוימת מתוך משפחת פונקציות hashומשווים את תוצאת הפעלת הפונקציה ,שיכולה להכיל מספר קבוע של ביטים. .3בעזרת הרנדומיות המשותפת אליס ובוב יבחרו איבר ) - z = (z0 , . . . , zn ) ∼ U({0, 1}nכלומר מחרוזת בינארית רנדומית באורך nבהתפלגות אחידה .כעת כל צד יחשב: ! n−1 X = a zi αi mod2 i=0 ! mod2 zi βi n−1 X i=0 47 = b בוב ישלח לאליס את ;bאליס תקבל אםם .a = b כמובן ,מועבר רק ביט אחד ומתקיימת שלמות .הנאותות נובעת מהתרגיל הבא בהסתברות: "מטילים 100מטבעות הוגנים ובלתי תלויים .מה ההסתברות שמספר הפעמים שיופיע "פלי" הוא זוגי?" מקרה א' :עד המטבע ה־ 99ראינו מספר זוגי של "פלי" .הסיכוי שהמטבע האחרון ישאיר את זה כך הוא . 12 מקרה ב' :עד המטבע ה־ 99ראינו מספר אי־זוגי של "פלי" .גם כאן הסיכוי הוא . 12 Pמהם הוא הוגן ולא תלוי בשאר. ההוגנות/אי־תלות של 100המטבעות; די שאחד P בעצם ,לא היינו צריכים אתP אםם .( zi (αi − βi )) mod2 = 0נשים לב שאם α 6= βאז יש iכך ש־ αi 6= βi = zi αi לענייננו a = b ,אםם zi βi ולכן קיבלנו את אותה הבעיה כמו עם המטבעות -אנו רוצים לדעת את הזוגיות של מספר ה־ zi־ים שהם 1עבור ה־ i־ים שבהם :αi 6= βi zi X zi (αi − βi ) ≡mod2 i:αi 6=βi n−1 X i=0 ולכן הסכום הזה הוא ) 0מודולו (2בהסתברות 12בדיוק כמו שרצינו עבור הנאותות. .4מתבקש עידון כדי לקבל נאותות "טובה יותר" ,למשל הסתברות 41לטעות .כדי לקבל זאת ,אפשר לבצע את הפרוטוקול פעמיים כלומר בוחרים שני z־ים ומעבירים שני ביטים .אפשר להקטין את ההסתברות לטעות כרצוננו ל־ 21kע"י העברת kביטים כאלה. .5וריאציה על הבעיה :מה קורה אם בוב מנסה לשכנע את אליס ש־ α = βלמרות שזה לא באמת המצב? )שאלה למחשבה - התשובה היא שזה לא עוזר לו(. .6וריאציה נוספת על הבעיה :מה קורה אם אין רנדומיות משותפת ,אלא לכל צד יש רנדומיות פרטית? הפרוטוקול הנ"ל ,כמובן, לא עובד יותר ,וגם כל מני רעיונות פשוטים אחרים לא עובדים. 8.4 פולינומים טענה 8.6אם ) p(xפולינום שאינו פולינום האפס ו־ ,deg(p) = dאז מספר השורשים של pהוא ≥ .d מסקנה 8.7אם ) p(x) 6= q(xושניהם מדרגה ≥ ,dאז .|{z : p(z) = q(z)}| ≤ d מכאן מתקבל הפרוטוקול לבעיית הזהות תוך שימוש ברנדומיות פרטית: Pn−1 .1אליס תגדיר פולינום p(x) = i=0 αi xi Pn−1 .2בוב יגדיר פולינום q(x) = i=0 βi xi .3אליס תגריל )} z ∼ U({1, . . . , n2ותשלח אותו לבוב .4בוב ישלח את ) q(zלאליס .5אליס מקבלת אםם )p(z) = q(z כעת נשים לב שאם α = βאז p ≡ qולכן .Pr[”yes”] = 1לעומת זאת ,אם α 6= βאז ) p(x) 6= q(xומתקיים ≤ )deg(p), deg(q .n − 1מכאן 1 n−1 ≤ 2 n n ≤ ])Pr[”yes”] = Pr[p(z) = q(z שהרי מתוך n2הערכים שמתוכם zמוגרל ,יש לכל היותר n − 1ערכים שעליהם ).p(z) = q(z כמה ביטים מועברים כאן? כאשר השדה הוא ,Qמספר הביטים הדרושים להעברת zיכול להיות מאוד גדול .כדי לטפל בזה נעבוד מעל שדה סופי Zpכש־ pראשוני לא גדול במיוחד. כדי לתקן את הפרוטוקול ,אליס ובוב יבחרו את pלהיות הראשוני הראשון שגדול מ־ ;n2מספיק לנו לדעת ש־ .n2 < p ≤ 2n2 מכאן כל הפרוטוקול נשאר אותו הדבר ,הנאותות והשלמות נשמרות ,אבל כמות הביטים שעוברים היא ) ,O(log nשהרי ב־ zיש לכל היותר 2 log nביטים וב־ ) q(zיש לכל היותר 2 log p ≤ 4 log nביטים. הגדרה 8.8פולינום בכמה משתנים הוא סכום של מונומים ,כאשר כל מונום הוא מהצורה n a(ei )ni=1 xe11 · · · xen 48 Pn כאשר כל ei ≥ 0טבעי ,האינדקס של המקדם aהוא סדרת החזקות ,והדרגה של המונום היא . i=1 eiניתן להציג את הפולינום בתור X Y e = ) f (x1 , . . . , xn ) a(ei xj j ) (ei n+d−1מונומים שונים מדרגה .dזה אקספוננציאלי ,כלומר כדי לתאר פולינום מדרגה dמעל שדה Zpאנו ללא המקדמים ,יש לנו n−1 נצטרך מקום אקספוננציאלי .אם נבחר בייצוג שבו כותבים רק את המונומים שמשתתפים בסכום ,אפשר לכתוב את חלק מהפולינומים האלה מעל Zpבמקום פולינומיאלי -בתנאי שמשתתף בהם מספר פולינומיאלי של מונומים. אנו נשתמש בייצוג של פולינומים כאלה באמצעות נוסחא אריתמטית. הגדרה 8.9נוסחא אריתמטית מוגדרת באינדוקציה ע"י: .1משתנה xiאו קבוע 1הוא נוסחא. .2אם p, qנוסחאות אז ) p + q, p − q, p · q, (−qגם כן נוסחאות. למשל ,את הפולינום x3 y + y + 2נוכל לייצג בתור ,x · x · x · y + y + 1 + 1ונוכל גם להוסיף סוגריים לפי הצורך. טענה 8.10אם Fנוסחא באורך ,nהיא מגדירה פולינום שדרגתו לכל היותר .n הוכחה :אינדוקציה על .n משפט ) 8.11משפט שוורץ־זיפלZippel ,־ (Schwartzאם p 6≡ 0פולינום ב־ nמשתנים מדרגה dמעל ,Zpו־ ) ,r1 , . . . , rn ∼ U(Zpאז d p ≤ )Pr[p(r1 , . . . , rn ) = 0 הוכחה :אינדוקציה על .nעבור n = 1זה נכון ,כי ל־ pיש לכל היותר dשורשים ,ולכן ההסתברות שבחרנו שורש באופן אחיד היא לכל היותר . dp P 0 i נשים לב ש־ ,p(x1 , . . . , xn ) = i pi (x2 , . . . , xn )x1כלומר אפשר להסתכל על pכפולינום במשתנה x1שהמרכיבים שלו הם פולינומים מעל .x2 , . . . , xnהפולינומים } {p0iיכולים להיות זהותית אפס או לא; ניקח את kלהיות ה־ iהמקסימלי כך ש־ .p0i 6≡ 0 בפרט p0k 6≡ 0 ,והדרגה שלו היא לכל היותר ) d − kכי ה־ " xk1לקח" kמהדרגה המקסימלית של pכולו(. .Pr[p0k (r2 , . . . , rn ) = 0] ≤ d−kנתבונן בפולינום במשתנה אחד ) q = p(x1 , r2 , . . . , rnונניח ש־ לפי הנחת האינדוקציה, p k .p0k (r2 , . . . , rn ) 6= 0אז הפולינום qהוא מדרגה .kלפי מקרה הבסיס שראינו ,מתקיים ,Pr[p(x1 , r2 , . . . , rn ) = 0] ≤ pכאשר ההסתברות היא על בחירת .x1 כעת נכתוב נוסחת הסתברות שלמה עבור מה שאנחנו רוצים: = Pr[p(r1 , . . . , rn ) = 0 | p0k (r2 , . . . , rn ) = 0] · Pr[p0k (r2 , . . . , rn ) = 0] + ]Pr[p(r1 , . . . , rn ) = 0 ]Pr[p(r1 , . . . , rn ) = 0 | p0k (r2 , . . . , rn ) 6= 0] · Pr[p0k (r2 , . . . , rn ) 6= 0 ]Pr[p0k (r2 , . . . , rn ) = 0] + Pr[p(r1 , . . . , rn ) = 0 | p0k (r2 , . . . , rn ) = 0 d−k k d = + p p p 8.5 ≤ = שקילות נוסחאות הגדרה 8.12אם F1 , F2נוסחאות אריתמטיות במשתנים ,x1 , . . . , xnנאמר שהנוסחאות שקולות אם כל מקדמי המונומים בפולינומים המתאימים שווים. הערה .1 8.13לא נכון להסתכל על ערכי הצבות בנוסחאות ,שכן אנחנו מדברים על פולינומים ולא על פונקציות .למשל ,מעל Z3 הפולינומים 0ו־ ) x(x − 1)(x − 2אינם שקולים כפולינומים ,אבל כן שקולים כפונקציות. .2דוגמא לשקילות.(x1 − x2 )(x1 + x2 ) ∼ x1 · x1 − x2 · x2 : .3כמובן ,מתקיים ש־ F1 ∼ F2אםם .F1 − F2 ∼ 0 49 הגדרה 8.14בעיית שקילות הנוסחאות ) (equivalenceמוגדרת ע"י השפה }EQ = {F : F ∼ 0 הערה 8.15צריך לשים לב שפתיחת סוגריים והשוואת מקדמים תפעל בזמן אקספוננציאלי ,כלומר .EQ ∈ EXPTIMEבבירור, EQ ∈ coN Pכי אפשר לבדוק הצבה בזמן פולינומיאלי )בתנאי שהמספרים שמציבים הם בגודל פולינומי באורך הנוסחא ,או אם מסתכלים על זמן פולינומי באורך הנוסחא והמספרים שמציבים( .אנחנו רוצים להשתכנע שאם F 6∼ 0אז יש מספרים לא גדולים שאפשר להציב בנוסחא ולראות שהיא לא .0 משפט 8.16אם pפולינום ב־ nמשתנים מעל שדה Fודרגתו ≥ S ⊆ F ,p 6≡ 0 ,dקבוצה סופית ,ונגריל ) ,z1 , . . . , z1 ∼ U(Sאזי מתקיים d ||S ≤ ]Pr[p(z1 , . . . , zn ) = 0 הוכחה :זוהי וריאציה קלה ביותר על משפט זיפל־שוורץ שהוכחנו קודם. מסקנה 8.17קיימת הצבה כנ"ל במספרים נמוכים יחסית ,למשל עבור } S = {1, . . . , n5ולכן EQ ∈ coN Pכפי שרצינו. אלגוריתם ל־ :EQ בהינתן נוסחא Fבאורך nמעל השדה ,Qנציב ב־ Fערכים רנדומיים מתוך הקבוצה } S = {1, . . . , n5ונקבל אםם הערך של הנוסחא עבור ההצבה שבחרנו הוא .0 שלמות :אם F ∼ 0אז .Pr[”yes”] = 1 נאותות :אם F 6∼ 0אז ) deg(pF n 1 2 ≤ ≤ 5 = 4 ||S n n 3 ≤ ]”Pr[”yes זמן הריצה :הצבה אחת ,ולכן פולינומיאלי. מכאן אנו מקבלים ש־ .EQ ∈ RP כמובן ,לא לכל פולינום יש נוסחא בגודל סביר שמייצגת אותו -משיקולי ספירה .לנוסחא יש הרבה פחות "דרגות חופש" .כך שהתוצאה שקיבלנו מעניינת ,אבל לא ישימה לכל פולינום. הגדרה 8.18יהיו F1 , F2נוסחאות אריתמטיות במשתנים .x1 , . . . , xnנאמר ש־ ) F1 ∼B F2שקולה בוליאנית( אם = ) F1 (z1 , . . . , zn ) F2 (z1 , . . . , znעבור כל }.z1 , . . . , zn ∈ {0, 1 הערה 8.19 ⇒⇐ F1 ∼B F2 ⇐⇒ F1 − F2 ∼B 0 ⇐⇒ (F1 − F2 )2 ∼B 0 X ⇒⇐ (F1 − F2 )2 (u1 , . . . , un ) = 0 }u1 ,...,un ∈{0,1 הגדרה 8.20 }F 2 (u1 , . . . , un ) = 0 X variables, n is a formula in BEQ = {F : F }u1 ,...,un ∈{0,1 הערה 8.21אם היינו יודעים להכריע את BEQהיינו מקבלים בחינם גם מכונה להכרעת הבדיקה האם שתי נוסחאות שקולות בוליאנית. ברור ש־ BEQ ∈ EXPTIMEכי אפשר לעבור על 2nהצבות בוליאניות ולבדוק בזמן פולינומי כל אחת -אבל אנחנו רוצים משהו יותר טוב .ברור גם ש־ BEQ ∈ coN Pכי העד הוא פשוט הצבה בוליאנית ,וקל לבדוק אותו. לא ידוע היום האם EQ ∈ Pוהאם .BEQ ∈ N Pלא ידוע גם האם יש אלגוריתם רנדומי פולינומי .נשים לב שאותו רעיון כמו קודם לא עובד כי בחירת הצבה בוליאנית לא יכולה להשתמש במשפט שוורץ־זיפל. 50 8 פרוטוקול אינטראקטיבי להכרעת :BEQ הפרוטוקול הוא בין Vהמוודא ל־ Pהמוכיח ,כאשר Vשואל שאלות ו־ Pעונה עליהן. מספר השלבים בפרוטוקול יהיה ליניארי ב־ ) nספציפית ,(n + 2 ,כאשר Vמבצע חישוב פולינומי ב־ nבכל שלב ,ולכן סך זמן הריצה שלו יהיה פולינומי. פולינומי. באורך הן שלו והתשובות כלשהו, Pיכול לעשות חישוב P שלמות :אם P, Vעוקבים אחרי הפרוטוקול אז בסופו של דבר Vמחזיר את המספר ) .s = u1 ,...,un ∈{0,1} F (u1 , . . . , un נאותות :אם Vעוקב אחרי הפרוטוקול ,אז לכל אסטרטגיה של Pההסתברות ש־ Vמחזיר מספר שאינו sתהיה קטנה או שווה ל־ . 14 כלומר ,לא מובטח ש־ " Pמתנהג יפה" אבל זה לא יקלקל יותר מדי -או ש־ Vבכל מקרה ייתן את ,sאו שהוא יגיד "אני לא מוכן לדבר עם ה־ Pהזה". )?( "s " עונה: P V .1שואל" :מהו ,"?s P נגדיר את הפולינום ) ,p1 (x1 ) = u2 ,...,un ∈{0,1} F (x1 , u2 , . . . , unפולינום במשתנה אחד מדרגה ≥ .nאנחנו לא יודעים לחשב אותו -רק מגדירים אותו. )?( V .2שואל" :מהו ) P ,"?p1 (x1עונה"p1 (x1 )" : נשים לב ש־ p1הוא פולינום במשתנה אחד ,ויש לו n + 1מקדמים לכל היותר .לכן אין בעיה לשלוח אותו מצד לצד -הבעיה היא רק לחשב אותו .נשים לב גם ש־ .p1 (0) + p1 (1) = s )?( )?( )?( )?( כעת אם )) ,n < deg(p1 (x1אז Vדוחה ,וגם אם ,p1 (0) + p1 (1) 6= sאז Vדוחה. )?( )?( 5 לבסוף Vבוחר )} .z1 ∼ U({1, . . . , nהרעיון הוא שאם ,p1 6= p1אז בסיכוי גבוה גם ) p1 (z1 ) 6= p1 (z1בגלל משפט זיפל־שוורץ. P נגדיר את הפולינום ) .p2 (x2 ) = u3 ,...,un ∈{0,1} F (z1 , x2 , u3 , . . . , un )?( V .3שואל" :מהו ) P ,"?p2 (x2עונה"p2 (x2 )" : )?( )?( )?( )?( אם )) n < deg(p2 (x2או ) ,p2 (0) + p2 (1) 6= p1 (z1אז Vדוחה. 5 כעת Vבוחר )} .z2 ∼ U({1, . . . , n P נגדיר את הפולינום ) .p3 (x3 ) = u4 ,...,un ∈{0,1} F (z1 , z2 , x3 , u4 , . . . , un )?( V .4שואל" :מהו ) P ,"?p3 (x3עונה"p3 (x3 )" : ושוב Vמוודא את הדרגה ואת הסכום ,וממשיכים כך כאשר האבחנה היא שאם pkהיה שקרי ו־ pk+1היה אמיתי ,הסיכוי להתלכדות הערכים בשלב הבא הוא קטן .כך המשכנו ,וייתכן ש־ Pשיקר לנו במשך כל הדרך .הגענו לשלב ה־ :n .nבחרנו )} zn−1 ∼ U({1, . . . , n5ומגדירים ) .pn (xn ) = F (z1 , . . . , zn−1 , xn )?( Vשואל" :מהו ) P ,"?pn (xnעונה"pn (xn )" : )?( )?( )?( כעת Vמוודא דרגה ומוודא ש־ ) .pn (0) + pn (1) = pn−1 (zn−1 )?( .n+1בוחרים )} zn ∼ U({1, . . . , n5ואי אפשר להמשיך .עכשיו Vיבדוק ש־ ) pn (zn ) = pn (zn ) = F (z1 , . . . , znוידחה אם אין שוויון .אחרת V ,יחזיר את )?( sשאנו חושבים שהוא .s נשים לב שאין בעיה להעריך את ) pn (znכי זהו פולינום במשתנה אחד -אין יותר סכום של מספר אקספוננציאלי של מונומים. שלמות :קל לראות שהיא מתקיימת. נאותות :רוצים להראות שאם ,s(?) 6= sאז Vדוחה בדרך כלל ,ואם הוא מקבל -זה קורה בהסתברות ≥ . 41ובכן ,בשלב V 1 )?( )?( )?( בודק ש־ )?( .p1 (0) + p1 (1) = sכלומר ,אם Pרוצה לרמות הוא מוכרח להחזיר לנו p1שאינו p1האמיתי. )?( )?( )?( )?( בשלב 2היה לנו z1רנדומי ,וכעת Pנותן לנו את p2ושוב צריך להתקיים ש־ ) .p2 (0) + p2 (1) = p1 (z1כעת יש שתי אפשרויות: )?( או ש־ ) - p1 (z1 ) = p1 (z1ההסתברות לזה היא ≥ , n14כי בחרנו את z1מתוך n5מספרים שונים והפולינום הוא מדרגה ;n )?( )?( אחרת ) ,p1 (z1 ) 6= p1 (z1ואז Pצריך לשקר ולהחזיר איזשהו p2שאינו .p2 )?( )?( כך זה ממשיך ,עד ) pn (xn ) 6= pn (xnובוחרים znרנדומי ובודקים האם ) .pn (zn ) = pn (znאם עד עכשיו Pשיקר ,הסיכוי שהשוויון האחרון מתקיים הוא שוב ≥ . n14 1 כלומר ,בכל שלב בפרוטוקול יש הזדמנות של ≥ n4ש־ Pיוכל לשקר ולשכנע את .Vבסה"כ ,ההסתברות של Pלשקר בהצלחה לא תעלה על ) ,O( n13וזה מה שרצינו מראש. 8.6 IPו־ coNP טענה 3SAT ≤p BEQ 8.22 הוכחה :יש אלגוריתם פולינומי אשר בהינתן נוסחא בוליאנית כלשהי ϕמחזיר פולינום pϕמעל אותם משתנים בדיוק כך שלכל השמה בוליאנית (u1 , . . . , un ) ∈ {0, 1}nלמשתנים x1 , . . . , xnמתקיים ) .pϕ (u1 , . . . , un ) = ϕ(u1 , . . . , un האלגוריתם פועל באינדוקציה .במקרה הבסיס ϕ = 1נחזיר את הפולינום .pϕ = 1 עבור ϕ = xiנחזיר את הפולינום .pϕ = xi 8שימו לב -לפי הודעת סגל הקורס ,פרוטוקול זה אינו כלול בחומר למבחן. 51 עבור ϕ = xiנחזיר את הפולינום ) .pϕ = (1 − xi עבור ϕ = ϕ1 ∧ ϕ2נחזיר את הפולינום .pϕ = pϕ1 · pϕ2 .pP עבור ϕ = ϕ1 ∨ ϕ2נחזיר את הפולינום ϕ = pϕ1 + pϕ2 − pϕ1 · pϕ2 מכאן ש־ ϕאינה ספיקה אםם u1 ,...,un ∈{0,1} p2ϕ (u1 , . . . , un ) = 0וזו הרדוקציה. מסקנה coN P ⊆ IP 8.23 הוכחה :מיידית מהעובדה ש־ 3SATהיא N P־שלמה ולכן 3SATהיא coN P־שלמה ,וראינו ש־ .BEQ ∈ IP 8.7 שיתוף סוד רוצים לחלק ל־ nאנשים חלקים של סוד ,כך שרק כל kמתוכם יוכלו להרכיב את הסוד השלם ,אבל ל־ k − 1מתוכם לא יהיה מה לעשות שהוא יותר טוב מאשר לנחש את הסוד. אנו עובדים מעל שדה סופי Zpעבור pראשוני כלשהו .פורמלית ,אם D ∈ Zpהסוד שנבחר בהתפלגות אחידה ,אנו רוצים ש־ kאנשים יוכלו לבצע חישוב פולינומיאלי שהתוצאה שלו היא Dבוודאות ,ואילו k − 1אנשים לא יוכלו בחישוב פולינומיאלי לקבל תוצאה שהיא יותר טובה מהתפלגות אחידה על .Zp הדרישה ש־ Dנבחר בהתפלגות אחידה לא מזיקה ,כי במקרה שהיא לא ,אפשר להגריל D0בהתפלגות אחידה ולהשתמש ב־ ,xor) D ⊕ D0שהיא פעולה הפיכה( בתור הסוד .נדרוש גם .D, n < p הסכימה של שמיר: נגדיר פולינום ) f (xעם מקדמים ) .a0 = D; a1 , . . . , ak−1 ∼ U(Zpזהו פולינום מדרגה ≥ ,k − 1ומתקיים .f (0) = Dכעת נציב בפולינום ) f (1), f (2), . . . , f (nוזה מה שמחלקים לאנשים -לאיש ה־ iנותנים את הזוג )).(i, f (i כעת kמהאנשים יכולים לחלץ את .Dבהינתן ) (x1 , y1 ), . . . , (xk , ykנגדיר את הפולינומים deg(li ) = k − 1 Y x − xm , xi − xm = )li (x m6=i ומתקיים li (xi ) = 1ולכל j 6= iמתקיים .li (xi ) = 0את פולינום האינטרפולציה מקבלים כך: )yi li (x k X = )fˆ(x i=1 ואכן קל לוודא שלכל ,jמתקיים .fˆ(xj ) = yjכיוון שפולינום ממעלה ≥ k − 1נקבע ביחידות ע"י kנקודות ,קיבלנו מתוך k הנקודות את ,fכלומר .fˆ ≡ fכל שנותר לאנשים לעשות זה להציב ) fˆ(0ולקבל את .Dכמובן ,כל התהליך היה פולינומיאלי - מדובר בחיבור ,חיסור ,כפל וחילוק של מספרים ב־ .Zp נראה גם של־ k − 1אנשים אין משהו טוב לעשות .כמה פולינומים שונים אפשר לקבל אם x1 , . . . , xkקבועים ול־ y1 , . . . , yk יש ערכים כלשהם? יש pkזוגות שונים של ) (x1 , y1 ), . . . , (xk , ykכאלה .הפעלת אינטרפולציה על כל k־יה מתוך pkה־k־יות נותנת פולינום שונה מכל האחרים .למשל ,בהינתן ) (x1 , y1 ), . . . , (xk , ykו־ ) (x1 , y10 ), . . . , (xk , ykמתקבלים fˆ, fˆ0שונים ,שהרי הם שונים אפילו על .x1מכאן יש לפחות pkפולינומים שונים מדרגה ≥ k − 1מעל .Zp מצד שני ,אפשר לספור את הפולינומים באמצעות המקדמים שלהם .יש kמקדמים שכל אחד מהם נבחר מ־ Zpולכן מספר הפולינומים השונים מדרגה ≥ k − 1הוא pkלכל היותר .לכן ,יש בדיוק pkפולינומים שונים מעל .Zp בהינתן רק k − 1זוגות ,יש לנו את y1 , . . . , yk−1בנקודות .x1 , . . . , xk−1נוסיף נקודה נוספת x0 = 0 ,ונבחר לו ערך כלשהו מ־ ,Zpכלומר איזה ) .d = y0 ∼ U(Zpכל מספר שנבחר יספק פולינום אחר .כעת מכיוון שבחירת a0 , . . . , ak−1הייתה בהתפלגות אחידה ,הסיכוי ש־ y0 = dזהה לסיכוי שבחרנו פולינום ספציפי כלשהו ,כלומר לא למדנו שום דבר על ,y0כנדרש. 52