Professional Documents
Culture Documents
דור עזריה
|| 2חישוביות
43 רדוקציות
דור עזריה
|| 3חישוביות
מבוא לקורס
חישוביות
בעיות שניתן לפתור על ידי מחשב .תורת החישוביות היא הבסיס למדעי המחשב ,והיא עוסקת במודלים לחישוב
ובפונקציות הניתנות לחישוב במסגרתם .השאלה הבסיסית בתורת החישוביות היא :מה מחשבים יכולים
לחשב ,ומה לא? בניגוד להנחה נפוצה ,ישנן פונקציות שאי אפשר לחשב .בעיית העצירה מהווה דוגמה
לפונקציה שכזו :ניתן להוכיח כי אין תוכנית היכולה לקבל כקלט תוכנית כלשהי וקלט לאותה התוכנית ,ולהכריע
האם התוכנית תעצור.
סיבוכיות
נחלק את עולם הבעיות שלנו לכמה מחלקות לפי סיבוכיות זמן הריצה שלהן( .או יעילות).
במדעי המחשב ,סיבוכיות (באנגלית )Complexity :היא כלי מדד מתמטי של משאבי המערכת הנחוצים
לפתרון בעיה נתונה באמצעות מחשב .המשאב העיקרי הנבחן הוא זמן הריצה ,כלומר נבחן משך הזמן הנחוץ
לשם ביצוע האלגוריתם .משאב נוסף הוא הזיכרון הנחוץ לשם ביצוע האלגוריתם .ניתן להביא בחשבון משאבים
נוספים ,כגון כמה מעבדים נחוצים לשם פתרון הבעיה בעיבוד מקבילי .התורה החוקרת סיבוכיות קרויה תורת
הסיבוכיות .ענף הסיבוכיות נבדל מענף החישוביות ,שבו נבחנת השאלה האם ניתן בכלל לפתור בעיה נתונה,
בלא קשר לכמות המשאבים הנחוצה.
מודל חישובי
מודל חישובי הוא מכונה תיאורטית עם רכיבים מסוימים (למשל :גודל זיכרון ,א"ב ,סרט קלט) .כשנדבר על
מודלים חישוביים ,נדבר על אלגוריתם כללי לפתרון הבעיה .באוטומטים ראינו מודלים חישוביים כגון אס"ד,
אסל"ד ואוטומט מחסנית .בקורס זה המודל החישובי העיקרי יהיה מכונת טיורינג.
פסוקים
( ( ) )
נעסוק בפסוק שהוא פונקציה בוליאנית בצורת CNFכמו למשל. 𝑥1 ∨ 𝑥‾2 ∨ 𝑥4 ∧ 𝑥2 ∨ 𝑥‾3 ∨ 𝑥4 :
"השמה מספקת" לפסוק מגדירה האם יש דרך להציב ערכי T/Fבכל המשתנים האלה כדי שנקבל .TRUE
פסוק CNF
פסוק הוא CNFאם הפסוק כולו הוא "וגם" של הרבה פסוקים אחרים (פסוקיות).
כל פסוקית היא "או" של ליטרלים (משתנים אטומיים כמו למשל Tאו .)F
נשים לב -השמה מספקת לפסוק ⇔ CNFהיא מספקת כל פסוקית בו.
דור עזריה
|| 4חישוביות
סוגי בעיות
ישנם שני סוגים של בעיות:
.1בעיית קיימות -אנחנו רוצים לדעת אם קיים פתרון.
.2בעיית חיפוש -אנחנו רוצים לדעת מה הפתרון.
אנו נעסוק בעיקר בבעיות הקיימות.
פתירות של בעיה
פתירות של בעיה היא ביחס למודל חישובי כלשהו ,למשל מחשב או בן אדם (דף ועט).
בעיות לא פתירות -הכוונה שאין פתרון כללי לבעיה .כלומר ,אם האלגוריתם מצליח לפתור מקרה פרטי בבעיה
זה לא אומר שקיים פתרון כללי.
בעיות פתירות ניתן לסווג ל"-קשות" או "קלות" .הסיווג נקבע לפי זמן הריצה המינימלי לפתרון הבעיה.
זמן הריצה הוא פונקציה של אורך הקלט .למשל עבור פסוק עם 𝑛 משתנים ,זמן הריצה הוא )𝑛(𝑂.
בעיה היא קשה אם כל אלגוריתם צריך זמן בעיה היא קלה אם קיים אלגוריתם שיודע
הגדרה
ריצה לפחות אקספוננציאלי בגודל הקלט. לפתור את הבעיה בזמן ריצה פולינומי.
יש להוכיח שלא קיים אף אלגוריתם פולינומי מספיק להראות קיימות של אלגוריתם בעל
שיטתיות
שיפתור אותה. זמן ריצה פולינומי ולהוכיח את זמן הריצה.
אלגוריתם שפותר בעיה מסויימת בזמן ריצה בעיית המסלול הטוב ביותר -נפתור בעזרת
𝑛 3
דוגמה כללית
לפחות ) ( 𝑂(2אקספוננציאלי). אלגוריתם Floyd-Warshallב 𝑂(𝑛 )-שאכן ולא מספקת
ולא קיים אלגוריתם יותר יעיל מזה. בזמן ריצה פולינומי.
דור עזריה
|| 5חישוביות
מכונת טיורינג
מבוא
מכונת טיורינג ( )Turing Machineהוא מודל שהציע אלן טיורינג (אבי מדעי המחשב) טרם המצאת המחשב.
המכונה מתוארת באופן דמיוני כסרט אינסופי של תאים וראש קריאה בעל זיכרון סופי היכול לקרוא את תוכנו של
התא שמעליו הוא ממוקם ,לכתוב באותו התא וכן לנוע ימינה או שמאלה על הסרט .המכונה מקבלת את הקלט
שלה באמצעות הסרט ,עליו היא יכולה גם לכתוב ,ולזוז כרצונה לכל נקודה על גביו.
מכונת טיורינג (מ"ט) מתארת בצורה פורמלית-מתמטית ,כיצד ניתן לבצע פעולות חישוביות שונות כגון זיהוי
מילים השייכות לשפה פורמלית ,ביצוע פעולות חיפוש ומיון בקלט ועוד ,והיא למעשה האוטומט החזק ביותר
לביצוע חישובים ,ולמעשה לעיתים המושג "חישוב" מוגדר על סמך פעולות הניתנות לביצוע באמצעות מ"ט.
התזה של צ'רץ'-טיורינג קובעת שכל חישוב או אלגוריתם בר-ביצוע ,ניתן לתרגם למכונת טיורינג .מבחינה זו,
מכונת טיורינג שקולה לכל מחשב.
דור עזריה
|| 6חישוביות
פתרון משולב עם הסבר :אנחנו רוצים לוודא שהתו האחרון הוא " "1ואז המילה מתקבלת.
אנחנו נקרא את המילה לאורך הסרט עד שנגיע ל 𝑏‾-הראשון ואז נחזור תא אחד אחורה ונקבע ש:
● אם כתוב בתא הזה " "1אז נעבור למצב מקבל 𝐹 ∈ 𝑡𝑝𝑒𝑐𝑐𝑎𝑞.
● אם כתוב בתא הזה " "0אז נעבור למצב דוחה 𝐹 ∈ 𝑡𝑐𝑒𝑗𝑒𝑟𝑞.
אנחנו נכתוב טבלת מעברים עבור המכונה 𝑀 שמזהה את השפה :𝑥1
● השורה הירוקה הם תווים γ ∈ Γשנמצאים בתוך התאים של הסרט שאותו אנחנו קוראים.
● העמודה הצהובה הם מצבים לא סופיים 𝐹\𝑄 כלשהם שנטייל בהם במהלך הריצה.
לפי ההגדרה של ,δהיא מקבלת מצב נוכחי ואות קריאה ומחזירה לנו( :צעד הזזה לראש ,אות כתיבה ,מצב).
Γ
0 1 ‾𝑏
𝐹\𝑄
𝑞0 )𝑅 (𝑞0, 0, )𝑅 (𝑞1, 1, )𝑆 (𝑞𝑟𝑒𝑗𝑒𝑐𝑡, 0,
𝑞1 )𝑅 (𝑞0, 0, )𝑅 (𝑞1, 1, )𝑆 (𝑞𝑎𝑐𝑐𝑒𝑝𝑡, 1,
המצב 𝑞0אומר שהתא האחרון מכיל 0ו 𝑞1-אומר שהתא האחרון מכיל .1לכן ,כשנקרא את ה 𝑏‾-הראשון ממצב
𝑞1אז נשלח למצב מקבל 𝑡𝑝𝑒𝑐𝑐𝑎𝑞 ואם נקרא את ה 𝑏‾-הראשון ממצב 𝑞0אז נשלח למצב דוחה 𝑡𝑐𝑒𝑗𝑒𝑟𝑞.
דור עזריה
|| 7חישוביות
( )
פורמלית.𝑀 = 𝑄 = {𝑞0, 𝑞1, 𝑞𝑒𝑛𝑑}, 𝑞0, 𝐹 = {𝑞𝑒𝑛𝑑}, Γ = {0, 1, 𝑏‾}, Σ = {0, 1}, 𝑏‾, δ :
אנחנו נכתוב טבלת מעברים עבור המכונה 𝑀 שמזהה את הפונקציה 𝑥.𝑓𝑀(𝑥) = 0
● השורה הירוקה הם תווים γ ∈ Γשבתוך התאים של הסרט שאותו אנחנו קוראים.
● העמודה הצהובה הם מצבים לא סופיים 𝐹\𝑄 כלשהם שנטייל בהם במהלך הריצה.
לפי ההגדרה של ,δהיא מקבלת מצב נוכחי ואות לקריאה ומחזירה לנו( :צעד הזזה לראש ,אות כתיבה ,מצב).
Γ
0 1 ‾𝑏
𝐹\𝑄
𝑞0 )𝑅 (𝑞0, 0, )𝑅 (𝑞1, 0, )𝑅 (𝑞𝑒𝑛𝑑, 0,
𝑞1 )𝑅 (𝑞0, 1, )𝑅 (𝑞1, 1, )𝑅 (𝑞𝑒𝑛𝑑, 1,
● למשל ,אם )𝑅 δ(𝑞0, 0) = (𝑞0, 0,זה אומר שאם קראנו בסרט את האות 0ואנחנו במצב 𝑞0אז בתא
הבא מימין אנחנו צריכים לכתוב 0ולכן נשאר במצב 𝑞0ונזיז את הראש הקורא/כותב ימינה )𝑅( לתא
הבא בסרט.
● למשל ,אם )𝑅 δ(𝑞0, 𝑏‾) = (𝑞𝑒𝑛𝑑, 0,זה אומר שאם קראנו בסרט את האות ‾𝑏 ממצב 𝑞0אז נכתוב
בתא הזה " "0ואז נעבור למצב מסיים 𝑑𝑛𝑒𝑞 ,ונזוז ימינה )𝑅( לתא הבא .אנחנו לא נשארים )𝑆( כיוון
שלפי ההגדרה ,המילה שחוזרת מהפונקציה היא רצף התווים משמאל לראש ולכן אנחנו צריכים לזוז
צעד אחד ימינה לאחר שכתבנו את ה "0"-כדי שנוכל להחזיר גם אותו.
דור עזריה
|| 8חישוביות
( )
פתרון :יהי מכונת טיורינג .𝑀 = 𝑄, 𝑞0, 𝐹, Γ, Σ, 𝑏‾, δ
לא משנה איזה קלט * 𝑤 ∈ Σהפונקציה 𝑀𝑓 תקבל ,היא תמיד תחזיר את המילה הריקה.
לכן ,אנחנו לא צריכים לעבור על המילה של הקלט כי הפונקציה תמיד מחזירה ערך אחד ויחיד.ε :
אנחנו נקבל כקלט את * 𝑤 ∈ Σונעבור ישר למצב סופי 𝐹 ∈ 𝑑𝑛𝑒𝑞.
הסבר :אמרנו שלפי הגדרה ,כש 𝑀-מחשבת פונקציה ,היא צריכה להחזיר את כל רצף התאים שמשמאל לראש
הכותב/קורא .בתחילת הריצה ,הראש תמיד מתחיל כשהוא מצביע על התא הראשון ,לכן אם לא נזיז אותו בכלל
אז נחזיר את כל מה שמשמאלו ,מכיוון שאין כלום משמאל אז זה אומר שנחזיר כלום כלומר εכנדרש לפונקציה.
( )
פתרון :יהי מכונת טיורינג .𝑀 = 𝑄, 𝑞0, 𝐹, Γ, Σ, 𝑏‾, δ
לא משנה איזה קלט * 𝑤 ∈ Σאנחנו מקבלים ,תמיד צריך ללכת ימינה ולא לעצור.
אם המכונה בריצה אינסופית (לא עוצרת לעולם) אז קבוצת המצבים הסופיים ∅ = 𝐹.
קבוצת המצבים 𝑄 מכילה רק מצב אחד }.𝑄 = {𝑞0
ומכיוון שהמכונה תמיד זזה ימינה מבלי לעצור ,פונקציית המעברים מוגדרת כלולאה עצמית על המצב 𝑞0
כאשר ראש הסרט תמיד זז ימינה.δ(𝑞0, σ) = (𝑞0, σ, 𝑅) :
הפונקציה )𝑤(𝑀𝑓 של המכונה 𝑀 לא מוגדרת לכל קלט * .𝑤 ∈ Σ
( )
פתרון :יהי מכונת טיורינג .𝑀 = 𝑄, 𝑞0, 𝐹, Γ, Σ, 𝑏‾, δהפונקציה 𝑓 מקבלת קלט * 𝑤 ∈ Σוממירה את 𝑤
למילה של אחדות באורך |𝑤| .נגדיר קבוצת מצבים סופיים }𝑑𝑛𝑒𝑞{ = 𝐹 וקבוצת מצבים }𝑑𝑛𝑒𝑞 .𝑄 = {𝑞0,
א"ב עבודה מוגדר בצורה הבאה. Γ = Σ ∪ {1} :
פונקציית המעברים של המכונה מוגדרת באופן הבא:
● לכל σ ∈ Σמתקיים.δ(𝑞0, σ) = (𝑞0, 1, 𝑅) :
דור עזריה
|| 9חישוביות
רעיון הפתרון:
.1נתחיל במצב ,𝑞0כדי לטפל במצב של הרחבת המחרוזת ( )Carryנדחוף סימון חדש $בתא הראשון.
1 0
.2נבצע Shift Rightל 𝑥-אם קראנו 0נעבור למצב 𝑅𝑆𝑞 ואם קראנו 1נעבור למצב 𝑅𝑆𝑞.
.3כשנסיים להזיז את 𝑥 ימינה ,נעבור למצב 𝑑𝑑𝑎𝑞 שמטפל בפעולת החיבור :1 +נטייל שמאלה כל עוד
התא מכיל את המספר ,1ונחליף כל תא כזה ב 0-עד כאשר בתא:
.aנראה $אז נחליף אותו ל 1-ואז נעבור למצב 𝑅𝑞 שמזיז את הראש ימינה עד שנפגוש את ה𝑏‾-
הראשון כדי להוציא את המספר החדש כפלט.
.bנראה 0אז נשנה את התא הזה ל ,1-אם נפגשנו ב 0-זה אומר שאנחנו לא מרחיבים את
המחרוזת ,כלומר ה $-נשאר בתא הראשון וזה לא פלט תקין .לכן נרצה לעשות :shift left
𝑏 ‾
נעבור למצב 𝑞1שיקח אותנו ימינה עד ל 𝑏‾-הראשון שיעביר אותנו ל.𝑞𝑆𝐿- .i
0
נזוז צעד אחד שמאלה (המספר הימני ביותר) ,אם הוא 0נעבור למצב 𝐿𝑆𝑞 ואחרת .ii
1
נעבור למצב 𝐿𝑆𝑞 עד כאשר נפגוש את ה ,$-נדרוס אותו במספר לפי המצב הנתון.
נעבור למצב 𝑅𝑞 שמזיז את הראש ימינה עד שנפגוש את ה 𝑏‾-הראשון כדי להוציא את .iii
המספר החדש כפלט.
דור עזריה
|| 10חישוביות
דוגמת סימולציה:
קונפיגורציות
קונפיגורציה היא מעיין תמונת מצב במהלך ריצת המכונה -לפני או אחרי השלמה של פעולת חישוב ב.δ-
ניתן לתאר את ריצת מכונת טיורינג על ידי סדרת קונפיגורציות.
קונפיגורציה 𝑐 היא שלשה )𝑖 𝑐 = (α, 𝑞,כאשר:
● * α ∈ Γהוא מחרוזת תוכן הסרט( .עד ה 𝑏‾-הראשון שהחל ממנו הכל רק ‾𝑏 ,לא כולל).
● 𝑄 ∈ 𝑞 הוא המצב הנוכחי.
● 𝑖 ∈ ℕהוא מיקום הראש הקורא כותב( .אינדקס).
לדוגמה :תוכן הסרט הוא ,α = 1001𝑏‾011המצב 𝑞 ומיקום הראש הכותב 𝑖 = 5ולכן ‾𝑏 = .α𝑖 = α5
דור עזריה
|| 11חישוביות
הסבר :מה שמעניין אותנו בסרט זה :או הקלט או התא הכי ימני שנפגשנו בו במהלך ריצת המכונה.
מכיוון שהסרט הוא אינסופי ,אנחנו לא צריכים את כל ה 𝑏‾-האינסופיים איתנו ולכן הגדרנו את 𝑇 𝑡,כדי "לתפוס"
את התאים הרלוונטים בלבד עבור תוכן הסרט שעלול להשתנות במהלך הריצה.
בנוסף ,אורך תוכן הסרט הוא לא מספר קבוע כיוון שניתן לכתוב עליו במהלך הריצה ולהרחיב אותו.
סוגי קונפיגורציות
קונפיגורציה התחלתית היא ) 𝑐0 = (𝑥, 𝑞0, 1כאשר 𝑥 היא המילה אותה קיבלנו כקלט.
צעד חישוב
צעד חישוב במכונת טיורינג המתחיל ב 𝑐 = (α, 𝑞, 𝑖) -יבוצע בצורה הבאה:
אם )𝑑 δ(𝑞, α𝑖) = (𝑝, 𝑏,אז:
● נעבור ממצב 𝑞 למצב 𝑝.
● האות 𝑖 αיוחלף באות * .𝑏 ∈ Γ
● המיקום של הראש (האינדקס) יוחלף לפי ההזזה }𝑅 .𝑑 ∈ {𝐿, 𝑆,
אם נזוז שמאלה 𝐿 = 𝑑 אזי מעדכנים את המיקום לפי }( 𝑚𝑎𝑥{1 , 𝑖 − 1כיוון שלא ניתן לזוז שמאלה יותר
מהתא הראשון של הסרט -אינדקס מספר ,1כי הסרט חסום משמאל).
דור עזריה
|| 12חישוביות
פתרון:
)(1101011, 𝑞0, 1) ⊢𝑀 (1101011, 𝑞0, 2) ⊢𝑀 (1101011, 𝑞0, 3
)⊢𝑀(1111011, 𝑞0, 4) ⊢𝑀 (1111011, 𝑞0, 5) ⊢𝑀(1111111, 𝑞0, 6
)⊢𝑀(1111111, 𝑞0, 7) ⊢𝑀 (1111111, 𝑞0, 8) ⊢𝑀(1111111, 𝑞𝑒𝑛𝑑, 8
Γ
0 1 ‾𝑏
𝐹\𝑄
𝑞0 )𝑅 (𝑞0, 0, )𝑅 (𝑞1, 0, )𝑅 (𝑞𝑒𝑛𝑑, 0,
𝑞1 )𝑅 (𝑞0, 1, )𝑅 (𝑞1, 1, )𝑅 (𝑞𝑒𝑛𝑑, 1,
מכיוון שבתא α[2] = 0אז נעבור למצב 𝑞0אך לפני שנעבור ,בגלל שאנחנו נמצאים במצב 𝑞1אז נדרוס
α[2] = 1ואז נעבור למצב .𝑞0לכן.𝑐2 = (0101, 𝑞0, 3) :
דור עזריה
|| 13חישוביות
כעת בתא α[3] = 0ומכיוון שאנחנו במצב 𝑞0אז נשאר באותו המצב ,נכתוב α[3] = 0ונזוז צעד ימינה.
לכן ).𝑐3 = (0101, 𝑞0, 4
מכיוון שבתא α[4] = 1אז נעבור למצב 𝑞1אך לפני שנעבור ,בגלל שאנחנו נמצאים במצב 𝑞0אז נדרוס
α[4] = 0ואז נעבור למצב .𝑞1לכן.𝑐4 = (0100, 𝑞1, 5) :
כעת ,מכיוון ש α[5] = 𝑏‾ :אז לפי טבלת המעברים ,אם אנחנו במצב 𝑞1אז נדרוס α[5] = 1ואז נעבור למצב
הסופי 𝑑𝑛𝑒𝑞 .כלומר.𝑐6 = (01001, 𝑞𝑒𝑛𝑑, 6) :
דור עזריה
|| 14חישוביות
שקילות מודלים
לכל מודל 𝐴 של מכונת חישוב ,נגדיר את 𝐴𝐹 להיות קבוצת כל הפונקציות הניתנות לחישוב על ידי מכונה כלשהי
מהמודל 𝐴 .אז בהינתן שני מודלים שונים 𝐵 𝐴,נאמר שם שקולים אם"ם 𝐵𝐹 = 𝐴𝐹.
● מסקנה :כדי להוכיח ששני מודלים שקולים ,צריך להוכיח שהקבוצות של הפונקציות המתאימות לשני
המודלים שוות( .בהכלה דו כיוונית).
דוגמה :תהי שפה }𝑟𝑒𝑏𝑚𝑢𝑛 𝑒𝑚𝑖𝑟𝑝 𝑎 𝑓𝑜 𝑛𝑜𝑖𝑡𝑎𝑡𝑛𝑒𝑠𝑒𝑟𝑝𝑒𝑟 𝑦𝑟𝑎𝑛𝑖𝑏 𝑠𝑖 𝑝 | * }. 𝑃 = {𝑝 ∈ {0, 1
למדנו כי 𝐴𝐹𝑁 ≡ 𝐴𝐹𝐷 אבל לא שקול ל( 𝑃𝐷𝐴-אוטומט מחסנית).
למדנו כי 𝐴𝐷𝑃 שקול לדח"ה (כלומר לשפות חסרות הקשר) ,אבל מתברר שדח"ה לא שקול למכונת טיורינג.
באוטומטים למדנו שהשפה 𝑃 היא לא ח"ה אבל מכונת טיורינג יכולה לעשות את זה כי היא שקולה למחשב
מודרני ובמחשב קיימים אלגוריתמים שיודעים איך לפענח את השפה 𝑃 (נחלק בכל הראשוניים עד השורש).
יכולים להיות קלטים שהפלט לא מוגדר עליהם כמו למשל "פונקציות לא מלאות".
דוגמה :מכונת טיורינג זריזה ,שבה מותר גם לזוז שני צעדים לכל כיוון ולא רק אחד.
רעיון ההוכחה :כיוון אחד -אם יש לנו מ"ט רגילה אז היא גם זריזה פשוט לא השתמשה ב 2-ימינה או 2שמאלה.
כיוון שני -אם יש לנו מ"ט זריזה ,אפשר לבנות לה מ"ט רגילה עם עוד 2מצבים חדשים 𝐿𝑞 𝑞𝑅,במסעי .ε
דור עזריה
|| 15חישוביות
תזת צ'רץ'-טיורינג
התזה :כל מודל כללי וסביר שקול למכונת טיורינג.
● כללי = הכוונה למודל חזק לפחות כמו מכונת טיורינג.
● סביר = הכוונה למודל שלא מכיל רכיבים אינסופיים.
שאלה :אבל למכונת טיורינג יש רכיב אינסופי שהוא הסרט האינסופי.
תשובה :המשמעות מבחינתנו של הסרט האינסופי ,היא רק שבמהלך הריצה של מכונת טיורינג לא יקרה מצב
שחסר מקום אחסון .בפועל ,כל כמות של תווים שנוכל לכתוב על גבי הסרט היא תמיד סופית.
כלומר ,אם נתייחס לאורך המילה כקבוע ,תמיד נשתמש באורך סרט סופי אבל לא חסום.
דור עזריה
|| 16חישוביות
𝐹 ⊆ 𝑀𝐹 -מ"ט רגילה היא בפרט מ"ט דו-סרטית רק שאינה מבצעת שימוש בסרט השני. 2 ⇐ כיוון ראשון
𝑀
2
תהא ) 𝑀 = (𝑄, 𝑞0, 𝐹, Γ, Σ, 𝑏‾, δמ"ט רגילה .נתאר את )‾ 𝑀 = (𝑄, 𝑞0, 𝐹, Γ, Σ, 𝑏‾, δמ"ט דו-סרטית.
הא"ב עבודה מוגדרת כך.Γ𝑀 = {0, 1, 𝑏‾ 2} ∪ {$1, $2, 0&, 1& , 𝑏‾&} :
𝑀
α1 ∈ Γנכתב לסרט של 𝑀 החל מה 𝑏‾-הראשון ,כשבסופו נצרף את האות 2 ● תוכן הסרט ה: 1-
𝑀
המיוחדת .$1אם הראש של הסרט ה 1-מצביע על האות }‾𝑏 σ ∈ {0, 1,אז בסרט של 𝑀 נסמנו &.σ
α2 ∈ Γנכתב לסרט של 𝑀 החל מה 𝑏‾-הראשון ,כשבסופו נצרף את האות 2 ● תוכן הסרט ה: 2-
𝑀
המיוחדת .$2אם הראש של הסרט ה 2-מצביע על האות }‾𝑏 σ ∈ {0, 1,אז בסרט של 𝑀 נסמנו &.σ
2
כאשר המכונה הדו-סרטית 𝑀 תבצע שינויים (הזזת הראש וכתיבה/קריאה) ב 2-הסרטים שלה ,אנחנו נעדכן
בהתאם גם בסרט היחיד של 𝑀 באמצעות הסימונים המיוחדים שהוספנו לה.
את התיאור הפורמלי של השינויים האלה אנחנו לא נכתוב כי זה הרבה עבודה.
דור עזריה
|| 17חישוביות
𝑖 .$אם הראש של הסרט ה 𝑖-מצביע על האות }‾𝑏 σ ∈ {0, 1,אז בסרט של 𝑀 נסמנו & σבהתאם.
𝑘
כאשר המכונה ה 𝑘-סרטית 𝑀 תבצע שינויים (הזזת הראש וכתיבה/קריאה) ב 𝑘-הסרטים שלה ,אנחנו נעדכן
בהתאם גם בסרט היחיד של 𝑀 באמצעות הסימונים המיוחדים שהוספנו לה.
את התיאור הפורמלי של השינויים האלה אנחנו לא נכתוב כי זה הרבה עבודה.
דור עזריה
|| 18חישוביות
דוגמה למודל אינסופי :קבוצה המצבים של * 𝑀 היא }.𝑄 = {𝑞ε, 𝑞0, 𝑞1, 𝑞00, 𝑞01, 𝑞10, 𝑞11,....
כל מצב כזה "זוכר" את הפלט שמתאים לו ,כאשר נקרא את המילה נוכל לעבור בין המצבים לפי המילה
שקראנו .ולבסוף ,כאשר נגיע לרווח הראשון ( )blankנדע שסיימנו לקרוא את המילה ונחזיר את הפלט שהמצב
שהגענו אליו זוכר .כלומר ,נחזור לתחילת הסרט ונכתוב את הפלט המתאים.
דור עזריה
|| 19חישוביות
הוכחה דו כיוונית:
⇐ כיוון ראשון '𝑀𝐹 ⊆ 𝑀𝐹 :תהי 𝑀 מכונת טיורינג רגילה .נבנה מכונת טיורינג '𝑀 שתחשב את אותה הפונקציה
ש 𝑀-מחשבת .קבוצת המצבים }𝑡𝑓𝑒𝐿𝑞{ ∪ 𝑀𝑄 = '𝑀𝑄 ,קבוצת המצבים הסופיים '𝑀𝐹 = 𝑀𝐹 וגם '𝑀.Σ𝑀 = Σ
א"ב עבודה יתואר באופן הבא.Γ𝑀' = {0, 1, 𝑏‾} ∪ {0&, 1&, 𝑏‾&} :
הראש הכותב של הסרט של 𝑀 שמצביע על האות 𝑀 σ ∈ Γיוחלף באותו מקום בסרט של '𝑀 עם הסימון &.σ
● כאשר 𝑀 מפעיל צעד 𝑡𝑓𝑒𝐿 אז נכתוב בתא שלאחר ההזזה את & .σנעבור ב 𝑀' -למצב 𝑡𝑓𝑒𝐿𝑞 שמבצע
𝑡𝑒𝑠𝑒𝑅 לראש ואז יבצע חיפוש מימין 𝑡 𝑅𝑖𝑔ℎעד שיפגוש את התא שמסומן ב σ&-ואז נעבור ממצב
𝑡𝑓𝑒𝐿𝑞 לאותו מצב ש 𝑀 נמצא בו.
● כאשר 𝑀 מפעיל צעד 𝑡 𝑅𝑖𝑔ℎאו 𝑆 אז '𝑀 יפעל באופן שווה כי הפעולות האלו קיימות גם בו.
⇒ כיוון שני 𝑀𝐹 ⊆ :𝐹𝑀,תהי '𝑀 מ"ט החדשה .נבנה מ"ט 𝑀 רגילה שתחשב את אותה הפונקציה ש𝑀'-
מחשבת .כל הרכיבים שווים מלבד פונקציית המעברים וקבוצת המצבים }𝑡𝑒𝑠𝑒𝑅𝑞{ ∪ '𝑀𝑄 = 𝑀𝑄.
● כאשר '𝑀 מפעיל צעד 𝑡𝑒𝑠𝑒𝑅 ,נעבור ב 𝑀-למצב 𝑡𝑒𝑠𝑒𝑅𝑞 שמזיז את הראש עם צעדי 𝑡𝑓𝑒𝐿 עד שנגיע
לתחילת הסרט .כשנגיע להתחלה ,נעבור ממצב 𝑡𝑒𝑠𝑒𝑅𝑞 לאותו המצב ש 𝑀'-נמצא בו.
● כאשר '𝑀 מפעיל צעד 𝑡 𝑆, 𝑅𝑖𝑔ℎאז נפעל באופן בשווה גם במודל 𝑀.
דור עזריה
|| 20חישוביות
הזז את הראש ימינה עד שתגיע ל 1-הראשון וסמן אותו ב - 𝑦-אם לא נמצא " "1כזה ,דחה. 3
אם התא הזה מכיל את המספר 0אז סמנו ב 𝑥-וחזור לשלב .3 4.1
אם התא הזה מסומן ב 𝑦-אז זוז ימינה עד לסוף המילה. 4.2
קבל. 5
● בשלב - 4.1אם סימנו את 0ב 𝑥-ועברנו לשלב 3ולא מצאנו " "1מתאים עבורו זה אז | |0| > |1ונדחה.
● בשלב - 4.2.1אם התא הזה מסומן ב y-זה אומר שסיימנו לסמן את כל האפסים ב 𝑥-ולכן נותר לנו רק
לבדוק ש …|0| = |1| :אם במהלך הריצה ימינה לסוף המילה נפגשנו ב 1-אז | |0| < |1ונדחה.
דוגמה ויזואלית:
דור עזריה
|| 21חישוביות
נרצה לבנות מכונת טיורינג כללית שתוכל לבצע את המשימה של כל מכונת טיורינג אחרת.
כלומר ,יהיו לנו כל מיני מכונות 𝑀 שמריצות אלגוריתמים ,אנחנו נרצה מכונה כללית 𝑈 שתפעיל אותם.
מכונת טיורינג אוניברסלית 𝑈 צריכה לקבל קידוד של מכונה 𝑀 ואת הקלט * 𝑥 ∈ Σעבור 𝑀 ותחזיר )𝑥(𝑀.
כלומר ,נרצה שיתקיים:
)𝑥(𝑀 = )> 𝑥 𝑈(< 𝑀,
על מנת לייצג מ"ט באופן נוח ,נרצה לקודד אותה בצורת מחרוזת מעל הא"ב }.{0, 1
דרישות מקידוד > 𝑀 < של מכונת טיורינג:
.1יהיה ניתן לשחזר את המכונה 𝑀 בהינתן הקידוד שלה > 𝑀 <.
.2יהיה ניתן "להריץ" או "לסמלץ" את המכונה בהינתן הקידוד שלה > 𝑀 < על הקלט שלה > 𝑥 <.
דור עזריה
|| 22חישוביות
( )
● תהי שביעייה.𝑀 = 𝑄, Σ, Γ, δ, 𝑞0, 𝐹 = {𝑞𝑎𝑐𝑐𝑒𝑝𝑡, 𝑞𝑟𝑒𝑗𝑒𝑐𝑡}, 𝑏‾ :
● נניח בלי הגבלת הכלליות שמ"ט 𝑀 היא מהצורה הבאה:
}𝑠𝑏 𝑄 = {𝑞1, 𝑞2 , . . . , 𝑞𝑚} , Σ = {𝑎1, 𝑎2, . . . , 𝑎𝑘} , Γ = {𝑏1, 𝑏2 , . . . ,
כאשר 𝑡𝑐𝑒𝑗𝑒𝑟𝑞 𝑞0, 𝑞𝑎𝑐𝑐𝑒𝑝𝑡,הם 𝑞1, 𝑞2, 𝑞3בהתאם.
דור עזריה
|| 23חישוביות
דור עזריה
|| 24חישוביות
המחלקות RוRE-
תזכורת -מ"ט לקבלת שפות
תזכורת :שפה 𝐿 הינה תת קבוצה סופית או אינסופית של * .Σ
הגדרה :מכונת טיורינג לקבלת שפות הינה מכונת טיורינג רגילה שמקיימת }𝑗𝑒𝑟𝑞 .𝐹 = {𝑞𝑎𝑐𝑐,
● המצב 𝑐𝑐𝑎𝑞 הינו מצב סופי שמשמעותו היא שהמכונה מקבלת את הקלט שלה.
● המצב 𝑗𝑒𝑟𝑞 הינו מצב סופי שמשמעותו היא שהמכונה דוחה את הקלט שלה.
הערה :גם למכונה לקבלת שפות יש פלט כמו שהוגדר במודל המקורי ,אבל לרוב לא נתייחס אליו.
שפה של מכונה
בהינתן מכונה 𝑀 עם הקלט שלה * 𝑥 ∈ Σאז:
● אם המכונה 𝑀 בריצתה על 𝑥 נעצרת על מצב 𝑐𝑐𝑎𝑞 ,נאמר ש 𝑀-מקבלת את 𝑥 ונסמן ב.𝑀(𝑥) = 1 -
● אם המכונה 𝑀 בריצתה על 𝑥 נעצרת על מצב 𝑗𝑒𝑟𝑞 ,נאמר ש 𝑀-דוחה את 𝑥 ונסמן ב.𝑀(𝑥) = 0 -
● אם המכונה לא עצרה -הפלט לא מוגדר.
הגדרה :שפת המכונה )𝑀(𝐿 הינה קבוצת כל המילים אשר המכונה 𝑀 מקבלת אותם (.)𝑀(𝑥) = 1
הגדרה :השפה המשלימה )𝑀(𝐿\ * 𝐿(𝑀) = Σהיא קבוצת כל המילים ש 𝑀-דוחה או לא עוצרת.
דור עזריה
|| 25חישוביות
המחלקות RוRE-
הגדרה :מחלקה 𝑅 היא קבוצה שמכילה את כל השפות שקיימות עבורן מכונת טיורינג המכריעה אותן.
הגדרה :מחלקה 𝐸𝑅 היא קבוצה שמכילה את כל השפות שקיימות עבורן מכונת טיורינג המקבלת אותן.
דור עזריה
|| 26חישוביות
דור עזריה
|| 27חישוביות
במילים אחרות ,כאשר המכונה האוניברסלית 𝑈 מקבלת קלט הוא יושב אצלה בסרט אחד.
אבל המכונה 𝑈 יכולה:
להשאיר את החצי הראשון של הקלט בסרט 1עם הקונפיגורציה שלה בסרט .2 .1
.2לגזור את החצי השני של הקלט לסרט 3ואת הקונפיגורציה שלה בסרט .4
רעיון הוכחה - 4תהיינה 𝐿1, 𝐿2שייכות ל ,𝑅𝐸-ותהיינה 𝑀1, 𝑀2מ"ט המקבלות את 𝐿1, 𝐿2בהתאמה.
נגדיר מכונה חדשה '𝑀 על קלט 𝑥 שמבצעת:
𝑀'(𝑥) .1תסמלץ את שתי המכונות 𝑀1, 𝑀2במקביל על 𝑥.
.2אם אחת מהן עצרה ב 𝑞𝑎𝑐𝑐𝑒𝑝𝑡-אז מיד נעצור ונקבל.
.3אם שתיהן עצרו ב 𝑞𝑟𝑒𝑗𝑒𝑐𝑡-אז נעצור ונדחה.
.4אחרת -המכונה שלנו פשוט תמשיך לרוץ לנצח (וזה בסדר…).
נשאר להוכיח את נכונות הבניה .כלומר ש 𝑥 ∈ 𝐿(𝑀1) :או ).𝑥 ∈ 𝐿(𝑀2
● 𝑥 ∈ 𝐿1 ∪ 𝐿2אז לפחות אחת מהמכונות עוצרת על 𝑥 ב 𝑞𝑎𝑐𝑐𝑒𝑝𝑡-ונסמן ב 𝑖-את הצעד בו היא עצרה.
מהבניה של '𝑀 ,המכונה '𝑀 תזהה עצירה זו בסימולציה של הצעד הנ"ל בצעד סימולציה 𝑖 2לכל
היותר (כי יש 2סרטים שרצים במקביל) .במקרה זה ,היא גם תעצור ותקבל .גם אם 𝑀2עצרה לפני כן,
זה לא ישנה את התוצאה ל 𝑞𝑟𝑒𝑗𝑒𝑐𝑡-כי '𝑀 לא עוצרת ב 𝑞𝑟𝑒𝑗𝑒𝑐𝑡-אלא אם שתי המכונות עצרו ב.𝑞𝑟𝑒𝑗𝑒𝑐𝑡-
● 𝑥 ∉ 𝐿1 ∪ 𝐿2אז ) 𝑥 ∉ 𝐿1 = 𝐿(𝑀1וגם ) . 𝑥 ∉ 𝐿2 = 𝐿(𝑀2כלומר ,אף אחת מהמכונות לא תעצור
במצב 𝑡𝑝𝑒𝑐𝑐𝑎𝑞 .לכן '𝑀 גם לא תעצור ב 𝑞𝑎𝑐𝑐𝑒𝑝𝑡-אלא תעצור ב 𝑞𝑟𝑒𝑗𝑒𝑐𝑡-אם שתיהן עוצרות או לא.
∎
דור עזריה
|| 28חישוביות
המחלקה co-RE
הגדרה .𝑐𝑜𝑅𝐸 = {𝐿 | 𝐿‾ ∈ 𝑅𝐸} :כלומר ,קבוצת כל השפות אשר לשפה המשלימה שלהן יש מכונה מקבלת.
הגדרה שקולה :הקבוצה 𝐸𝑅𝑜𝑐 היא קבוצת השפות שיש עבורן מכונה 𝑀 כך ש:
.1אם 𝐿 ∈ 𝑥 אז המכונה עוצרת ומקבלת או לא עוצרת בכלל.
.2אם 𝐿 ∉ 𝑥 אז המכונה עוצרת ודוחה.
אבחנה :כשמגדירים שפה 𝐸𝑅𝑜𝑐 ∈ 𝐿 על ידי מכונה 𝑀 כנ"ל ,לא בהכרח מתקיים 𝐿 = )𝑀(𝐿.
שאלה -מתי זה כן מתקיים .תשובה -עבור כל שפה 𝐸𝑅𝑜𝑐 ⊆ 𝑅 ∈ 𝐿.
סדר בראש:
עבור 𝐸𝑅 ∈ 𝐿 מתקיים:
● אם 𝐿 ∈ 𝑥 אז 𝑀(𝑥) = 1ועוצר.
● אם 𝐿 ∉ 𝑥 אז 𝑀(𝑥) = 0או )𝑥(𝑀 לא עוצר.
עבור 𝐸𝑅𝑜𝑐 ∈ 𝐿 מתקיים:
● אם 𝐿 ∈ 𝑥 אז 𝑀(𝑥) = 1או )𝑥(𝑀 לא עוצר.
● אם 𝐿 ∉ 𝑥 אז 𝑀(𝑥) = 0ועוצר.
דור עזריה
|| 29חישוביות
דור עזריה
|| 30חישוביות
השפה 𝑢𝐿
האם השפה }𝑥 𝑠𝑡𝑝𝑒𝑐𝑐𝑎 𝑀 | > 𝑥 𝐿𝑢 = {< 𝑀,שייכת ל ?𝑅𝐸-האם היא שייכת ל - ?𝑅-הוכיחו.
טענה.𝐿𝑢 ∈ 𝑅𝐸 :
הוכחה :נתאר מכונת טיורינג 𝑢𝑀 המקבלת את השפה 𝑢𝐿:
𝑢𝑀 על קלט > 𝑥 < 𝑀,תסמלץ את ריצת 𝑀 על הקלט 𝑥 ותענה כמוה.
● (ראינו שניתן "לסמלץ" ריצה של מכונה שנתונה לנו כקידוד).
נשאר להוכיח את נכונות הבניה:
● אם 𝑢𝐿 ∈> 𝑥 < 𝑀,אז 𝑀 מקבלת את הקלט 𝑥 ,מכאן ש 𝑀𝑢-מקבלת את הקלט > 𝑥 < 𝑀,אזי
)𝑢𝑀(𝐿 ∈> 𝑥 .< 𝑀,
● אם 𝑢𝐿 ∉> 𝑥 < 𝑀,אז 𝑀 לא מקבלת את הקלט 𝑥 ,מכאן ש 𝑀𝑢-לא מקבלת את הקלט > 𝑥 < 𝑀,
אזי )𝑢𝑀(𝐿 ∉> 𝑥 ( .< 𝑀,כלומר היא דוחה או לא עוצרת כהגדרה של 𝐸𝑅).
הראנו ש 𝐿𝑢 = 𝐿(𝑀𝑢) :כלומר שקיימת מכונה 𝑢𝑀 המקבלת את השפה 𝑢𝐿 ולכן 𝐸𝑅 ∈ 𝑢𝐿.
∎
השפה 𝐷𝐿
האם השפה }> 𝑀 < 𝑠𝑡𝑝𝑒𝑐𝑐𝑎 𝑀 | > 𝑀 <{ = 𝐷𝐿 שייכת ל ?𝑅𝐸-האם שייכת ל - ?𝑅-הוכיחו.
טענה.𝐿𝐷 ∈ 𝑅𝐸 :
הוכחה :נתאר מ"ט 𝐷𝑀 המקבלת את השפה 𝐷𝐿:
𝐷𝑀 על הקלט > 𝑀 < תסמלץ את ריצת 𝑀 על הקלט > 𝑀 < ותענה כמוה.
נשאר להוכיח את נכונות הבניה:
● אם 𝐷𝐿 ∈> 𝑀 < אז .𝑀𝐷(< 𝑀 >) = 1
● אם 𝐷𝐿 ∉> 𝑀 < אז 𝑀𝐷(< 𝑀 >) = 0או )> 𝑀 <(𝐷𝑀 לא תעצור (לא מוגדרת).
הראנו ש 𝐿𝐷 = 𝐿(𝑀𝐷) :כלומר שקיימת מכונה 𝐷𝑀 המקבלת את השפה 𝐷𝐿 ולכן 𝐸𝑅 ∈ 𝐷𝐿.
דור עזריה
|| 31חישוביות
מבנה ההוכחה:
.1נניח בשלילה שיש מספר בן-מניה של מספרים בין 0ל.1-
.2לשם הנוחות ,ניקח תת-קבוצה 𝐴 של מספרים בין 0ל ,1-שהייצוג שלהם מכיל רק 2תווים (למשל .)0,1
.3נסדר את המספרים הללו בסידור כלשהו (מובטח שקיים סידור כזה מכיוון שהנחנו שמדובר בקבוצת
בת מנייה).
.4נבנה מספר חדש 𝑐 על ידי זה שניקח את הספרות שבאלכסון ונחליף אותן 1 ,יהפוך ל 0-ו 0-יהפוך ל.1-
.5המספר 𝐴 ∈ 𝑐 ולכן קיים אינדקס 𝑖 כך שהמספר שלנו הוא בדיוק האיבר 𝑖𝑛.
.6אבל ,לפי הבנייה של 𝑐 ,הערך של 𝑐 בתו ה 𝑖-שונה מהערך של 𝑖𝑛 בתו ה.𝑖-
.7סתירה.
טענה.𝐿𝐷 ∉ 𝑅 :
מבנה ההוכחה :ניצור פרדוקס :נניח בשלילה ונראה שזה גורר סתירה.
הוכחה :נניח בשלילה ש 𝐿𝐷 ∈ 𝑅 :ולכן קיימת לשפה 𝐷𝐿 מכונה 𝐷𝑀 המכריעה אותה.
נגדיר מכונה חדשה 𝐷𝐴 (היא גם מכונה מכריעה לפי סגירות למשלים) שפועלת בצורה הבאה:
< ועונה הפוך( .כמו שהפכנו את הביטים המכונה 𝐷𝐴 על הקלט > 𝑀 < מריצה את המכונה 𝐷𝑀 על הקלט > 𝑀
בלכסון של קנטור) .מכיוון שיש מספר בן מניה של מכונות טיורינג ,ניתן לסדר את כל המכונות בסידור כלשהו (למשל
סידור לקסיקוגרפי של מחרוזות הקידוד).
נבנה טבלה אינסופית של כל הזוגות האפשריים של מכונות טיורינג ,כך שבתא ה [𝑖][𝑗]-נאחסן את התשובה
לשאלה הבאה :האם המכונה 𝑖𝑀 מקבלת את הקלט > 𝑗𝑀 < (הקידוד של המכונה 𝑗𝑀)?
דור עזריה
|| 32חישוביות
> < 𝑀1 > < 𝑀2 > < 𝑀3 > < 𝑀4 … … …
> < 𝑀1 0 0 0 0 1 1
> < 𝑀2 1 1 1 0 0 0
> < 𝑀3 1
> < 𝑀4 0
… 0
… 1
… 0
𝑀 יודעת למלא את התאים של האלכסון בטבלה (כי 𝐷𝑀 מכריעה את השפה 𝐷𝐿 שמקבלת כל קידוד > 𝑖𝑀 < של המכונה
𝐷
המכונה 𝑖𝑀 כלומר כל ]𝑖[]𝑖[ בונה את האלכסון של הטבלה) ,לכן המכונה 𝐷𝐴 גם כן יודעת למלא את תאי האלכסון של הטבלה
(ממלאת את האלכסון אבל בדיוק ההפך).
המכונה 𝐷𝐴 היא גם מכונת טיורינג ולכן היא נמצאת בטבלה ,כלומר קיים אינדקס 𝑖 כך שמתקיים ש.𝐴𝐷 = 𝑀𝑖 :
מה הערך בתא ה [𝑖][𝑖]-בטבלה? -כלומר מה הערך של?𝑀𝑖(< 𝑀𝑖 >) = 𝐴𝐷(< 𝑀𝑖 >) :
● אם 𝐷𝐴 מקבלת על הקלט > 𝐷𝐴 < אז בתא ]𝑖[]𝑖[ צריך להיות ערך ( 1זה נכון לפי הגדרת הטבלה).
אבל בהרצה של 𝐷𝐴 על הקלט > 𝐷𝐴 < ,המכונה 𝐷𝑀 תענה 1ואז 𝐷𝐴 חייב לפלוט - .0סתירה.
● אם 𝐷𝐴 לא מקבלת על הקלט > 𝐷𝐴 < אז בתא ]𝑖[]𝑖[ צריך להיות ערך ( 0זה נכון לפי הגדרת הטבלה).
אבל בהרצה של 𝐷𝐴 על הקלט > 𝐷𝐴 < ,המכונה 𝐷𝑀 תענה 0ואז 𝐷𝐴 חייב לפלוט - .1סתירה.
∎
אינטואיציה :אם 𝑀 עצרה על 𝑥 אז 𝑃𝐻 ∈> 𝑥 ,< 𝑀,כלומר הגענו למצב מקבל 𝑡𝑝𝑒𝑐𝑐𝑎𝑞 והקלט בשפה.
אם 𝑀 לא עצרה על 𝑥 אז 𝑃𝐻 ∉> 𝑥 ,< 𝑀,אבל אנחנו לא יודעים אם בוודאות המכונה עצרה ולכן ,המכונה 𝑀
לא יכולה להכריע את השפה .מכאן 𝐻𝑃 ∈ 𝑅𝐸 -אבל 𝑅 ∉ 𝑃𝐻.
טענה.𝐻𝑃 ∈ 𝑅𝐸 :
רעיון ההוכחה :נראה מכונה שאם היא עוצרת אז היא מקבלת את הקלט -אחרת היא לאו דווקא עוצרת.
הוכחה :נתאר מכונת טיורינג 𝑃𝐻𝑀 המקבלת את השפה 𝑃𝐻:
המכונה 𝑃𝐻𝑀 על הקלט > 𝑥 < 𝑀,תסמלץ את ריצת 𝑀 על הקלט 𝑥 ,אם עצרה -נקבל (נעבור ל.)𝑞𝑎𝑐𝑐𝑒𝑝𝑡-
אם הקידוד > 𝑥 < 𝑀,לא חוקי -המכונה 𝑃𝐻𝑀 לא עוצרת.
נשאר להוכיח את נכונות הבניה:
דור עזריה
|| 33חישוביות
● אם 𝑃𝐻 ∈> 𝑥 < 𝑀,אז 𝑀 עוצרת על הקלט 𝑥 ולכן 𝑃𝐻𝑀 מקבלת את הקלט > 𝑥 .< 𝑀,
אזי )𝑃𝐻𝑀(𝐿 ∈> 𝑥 .< 𝑀,
● אם 𝑃𝐻 ∉> 𝑥 < 𝑀,אז 𝑀 לא עוצרת על הקלט 𝑥 ולכן 𝑃𝐻𝑀 לא מקבלת את הקלט > 𝑥 .< 𝑀,
ובפרט ,המכונה 𝑃𝐻𝑀 לא עוצרת על קלט זה .אזי )𝑃𝐻𝑀(𝐿 ∉> 𝑥 .< 𝑀,
הראנו ש 𝐻𝑃 = 𝐿(𝑀𝐻𝑃) :כלומר שקיימת מכונה 𝑃𝐻𝑀 המקבלת את השפה 𝑃𝐻 ולכן 𝐸𝑅 ∈ 𝑃𝐻.
∎
בעיית העצירה
שאלה :האם השפה 𝑅 ∈ 𝑃𝐻?
תשובה :לא .כלומר 𝑅 ∉ 𝑃𝐻.
רעיון ההוכחה:
.1נניח בשלילה שיש מכונה 𝑃𝐻𝑀 המכריעה את 𝑃𝐻.
.2נשתמש ב 𝑀𝐻𝑃-כדי להכריע את }> 𝑀 < 𝑠𝑡𝑝𝑒𝑐𝑐𝑎 𝑀 | > 𝑀 <{ = 𝐷𝐿.
.3אבל הוכחנו שלא קיימת מכונה 𝐷𝑀 שמכריע את השפה 𝐷𝐿.
.4לכן גם לא קיימת מכונה שמכריע את 𝑃𝐻 -נקבל סתירה.
טענה.𝐻𝑃 ∉ 𝑅 :
הוכחה :נניח בשלילה 𝑅 ∈ }𝑥 𝑛𝑜 )𝑠𝑝𝑜𝑡𝑠( 𝑠𝑡𝑙𝑎 𝐻𝑃 = {< 𝑀, 𝑥 > | 𝑀 ℎולכן קיימת מכונת טיורינג 𝑃𝐻𝑀
המכריעה את השפה 𝑃𝐻 .בהינתן קידוד של מכונה כלשהי > 𝑀 < ,נרצה להכריע האם היא שייכת לשפה
}> 𝑀 < 𝑠𝑡𝑝𝑒𝑐𝑐𝑎 𝑀 | > 𝑀 <{ = 𝐷𝐿 או לא:
נבנה מכונה '𝑀 אשר זהה ל ,𝑀-רק שבכל פעם כאשר 𝑀 דוחה אז '𝑀 נכנסת ללולאה אינסופית.
עבור המכונה '𝑀 על הקלט 𝑦 :
● מסמלצת את ריצת 𝑀 על 𝑦 ,אם 𝑀 קיבלה -אז '𝑀 מקבלת.
● אם 𝑀 דחתה -אז '𝑀 נכנסת ללולאה אינסופית.
כעת נשלח אל המכונה 𝑃𝐻𝑀 את הקידוד >> 𝑀 < .< 𝑀',
● אם 𝑃𝐻𝑀 תענה שהקלט בשפה 𝑃𝐻 אז '𝑀 עוצרת על > 𝑀 < ולפי בניית '𝑀 נסיק ש 𝑀-מקבלת את
> 𝑀 < ונסיק מכך כי 𝐷𝐿 ∈> 𝑀 <.
● אם 𝑃𝐻𝑀 תענה שהקלט לא בשפה 𝑃𝐻 אז '𝑀 לא עוצרת על > 𝑀 < ולפי בניית '𝑀 נסיק ש𝑀-
לא-מקבלת את > 𝑀 < (דוחה או נכנסת ללולאה אינסופית) ונסיק מכך כי 𝐷𝐿 ∉> 𝑀 <.
קיבלנו אלגוריתם שמכריע את השפה 𝐷𝐿 -סתירה.
∎
דור עזריה
|| 34חישוביות
הערות הוכחה:
● אם יש לנו מכונה 𝑃𝐻𝑀 שמכריע את 𝑃𝐻 אז המכונה הזאת אומרת לנו האם נכנסו ללולאה אינסופית או
לא (האם עצרנו או לא) .אם יש לולאה אינסופית אז נדחה ואם הגענו למצב סופי אז נקבל.
● הסתירה נובעת כי הוכחנו כבר ש 𝐿𝐷 ∉ 𝑅 :כלומר שאי אפשר להכריע אותה אבל הראנו הרגע שקיים
אלגוריתם שמכריע אותה וזו הסתירה.
● הוכחנו ישירות משיטת הלכסון של קנטור ש 𝐿𝐷 ∉ 𝑅 :ואנחנו נעזרים בו בשביל להוכיח ש.𝐻𝑃 ∉ 𝑅 :
כלומר הוכחנו ש 𝐻𝑃 :לא כריעה.
דור עזריה
|| 35חישוביות
תמונת מצב
בקורס אוטומטים למדנו על המחלקות הרגולריות,
חסרות ההקשר ותלויות ההקשר .לכל אחת
מהמחלקות האלה קיים מכונה שיודעת למדל אותם.
כל מכונה שונה כזאת חזקה יותר מהשניה ככל שהיא
תכיל יותר מחלקות בתוכה.
השפה הרגולרית -הם שפות שלא צריך לזכור בהן משהו אינסופי .הן שפות מחזוריות .כלומר :לא צריך ספירה
𝑖
מדויקת וגם לא צריך למנות משהו כנגד משהו אחר .לדוגמה השפה } 𝐿 = {𝑎 : 𝑖 ∈ ℕהיא שפה רגולרית.
לשפות האלו למדנו את המודלים 𝐷𝐹𝐴, 𝑁𝐹𝐴, 𝑁𝐹𝐴 − εוקבענו כי אם ניתן לבנות לשפה אוטומט ממודלים
אלה אז השפה היא רגולרית .בתחילת הקורס של אוטומטים ,הסבירו לנו כי לכל אוטומט יש סרט וראש קורא
שעובר על הקלט .עבור כל תו שהראש קורא בסרט ,נשתמש בפונקצית המעברים δכדי לקבוע (דטרמיניסטי או
לא) לאיזה מצב להמשיך .כלומר ,המודלים 𝐴𝐹𝑁 𝐷𝐹𝐴, 𝑁𝐹𝐴, εהם מקרה פרטי של מכונת טיורינג שיודעות
לקבל רק את השפות הרגולריות ולא יותר מזה .לפי הציור אפשר להבין כי כל השפות רגולריות הם גם חסרות
הקשר ,תלויות הקשר.𝑅, 𝑅𝐸 ,
שפות חסרות ההקשר -הם שפות שיש להן זיכרון של מחסנית .לא ניתן לבצע ספירה מדויקת אבל ניתן לזכור
𝑛 𝑛
כמות כנגד כמות .לדוגמה ,השפה } 𝐿 = {𝑎 𝑏 : 𝑛 ∈ ℕהיא שפה חסרת הקשר ובפרט לא רגולרית.
לשפות אלה למדנו את המודל 𝐴𝐷𝑃 או 𝑎𝑡𝑎𝑚𝑜𝑡𝑢𝐴 𝑛𝑤𝑜𝐷 𝑃𝑢𝑠ℎכלומר אוטומט המחסנית .למדנו על
דקדוקים חסרי הקשר והראנו שהם שקולים ל .𝑃𝐷𝐴-גם כאן ,למדנו שלאוטומט 𝐴𝐷𝑃 יש ראש קורא/כותב וסרט.
כלומר 𝐴𝐷𝑃 הוא גם מקרה פרטי של מכונת טיורינג שמחקה התנהגות של מחסנית .מודל 𝐴𝐷𝑃 הוא מודל חזק
יותר ממודלי 𝐴𝐹𝐷 של השפות הרגולריות וככל שנעטוף יותר מחלקות ככה המודל יהיה חזק יותר.
שפות תלויות הקשר -הם שפות שאפשר לבצע בהן ספירה מדויקת ותלות משולשת בין תווים .לדוגמה השפות
𝑝 𝑛 𝑛 𝑛
}𝑁 ∈ 𝑛 𝐿 = {𝑎 𝑏 𝑐 :ו 𝐿 = {𝑎 : 𝑝 𝑖𝑠 𝑝𝑟𝑖𝑚𝑒} -הם תלויות הקשר .לשפות תלויות הקשר יש להן זיכרון
חסום של מכונת טיורינג (מקרה פרטי) והם חזקות יותר ממודלי 𝐴𝐷𝑃 𝐷𝐹𝐴,וכל מחלקה שהיא עוטפת.
המחלקה - Rהיא קבוצת כל השפות שקיים עבורן מכונת טיורינג שמכריעה אותן .כלומר ,זה שפות שאפשר
לקבוע עבורן החלטה חד-משמעית האם המילה מתקבלת או לא .למשל השפה * Σנמצאת ב 𝑅-מכיוון שלא
ניתן לקבוע חישובים מסובכים ,עבור כל * 𝑥 ∈ Σאז 𝑀(𝑥) = 1אם תתקבל או 𝑀(𝑥) = 0אם תדחה.
מכיוון שהמכונה 𝑀 מכירה את Σאז אין לנו כאן בעיות שעלולות להוביל אותנו לריצה אינסופית.
המחלקה - REהיא קבוצת כל השפות שקיים עבורן מכונת טיורינג שמקבלת אותן .זה שפות שייתכן שקיים להן
מכונת טיורינג שעבור קלט מסוים עלולות להוביל את המכונה למצב אינסופי ולא להיעצר לעולם.
דור עזריה
|| 36חישוביות
מכונת טיורינג לקבלת שפות הינה מכונת טיורינג רגילה 𝑀 שמקיימת }𝑗𝑒𝑟𝑞 .𝐹 = {𝑞𝑎𝑐𝑐,
● נאמר ש 𝑀 :מקבלת את 𝑥 ונסמן .𝑀(𝑥) = 1
● נאמר ש 𝑀 :דוחה את 𝑥 ונסמן .𝑀(𝑥) = 0
● שפת המכונה )𝑀(𝐿 הינה קבוצת כל המילים אשר המכונה 𝑀 מקבלת אותם (.)𝑀(𝑥) = 1
● השפה המשלימה )𝑀(𝐿\ * 𝐿(𝑀) = Σהיא קבוצת כל המילים ש 𝑀-דוחה או לא עוצרת.
קבלת שפה -נאמר שמכונה 𝐿𝑀 מקבלת (מזהה) את השפה 𝐿 אם מתקיים. 𝑥 ∈ 𝐿 ↔ 𝑀(𝑥) = 1 :
הכרעת שפה -נאמר שמכונה 𝐿𝑀 מכריעה את השפה 𝐿 אם מתקיים.𝑥 ∈ 𝐿 ↔ 𝑀(𝑥) = 1 :
בנוסף 𝑀𝐿 ,תמיד עוצרת.
המחלקה - Rהיא קבוצה שמכילה את כל השפות שקיימות עבורן מכונת טיורינג המכריעה אותן.
המחלקה - REהיא קבוצה שמכילה את כל השפות שקיימות עבורן מכונת טיורינג המקבלת אותן.
:𝑅 ⊆ 𝑅𝐸 .1מ"ט המכריעה שפה ,בהכרח גם מקבלת אותה.
.2המחלקה 𝑅 סגורה למשלים :אם 𝑅 ∈ 𝐿 אז 𝑅 ∈ ‾𝐿.
.3המחלקה 𝑅 סגורה לאיחוד.
.4המחלקה 𝐸𝑅 סגורה לאיחוד.
.𝑐𝑜𝑅𝐸 = {𝐿 | 𝐿‾ ∈ 𝑅𝐸} .5כלומר ,קבוצת כל השפות אשר לשפה המשלימה שלהן יש מכונה מקבלת.
:𝑅 ⊆ 𝑐𝑜𝑅𝐸 .6מ"ט המכריעה שפה 𝐿 ,בהכרח עוצרת על כל קלט 𝐿 ∉ 𝑥.
.𝐿𝑢 = {< 𝑀, 𝑥 > | 𝑀 𝑎𝑐𝑐𝑒𝑝𝑡𝑠 𝑥} ∈ 𝑅𝐸 .7
𝐿𝐷 = {< 𝑀 > | 𝑀 𝑎𝑐𝑐𝑒𝑝𝑡𝑠 < 𝑀 >} ∈ 𝑅𝐸 .8
𝐻𝑃 = {< 𝑀, 𝑥 > | 𝑀 ℎ𝑎𝑙𝑡𝑠 (𝑠𝑡𝑜𝑝𝑠) 𝑜𝑛 𝑥} ∈ 𝑅𝐸 .9
שיטת הלכסון של קנטור -קנטור הוכיח שבקטע ] [0, 1יש כמות לא בת מניה של מספרים .נשתמש בשיטה זו
כדי להראות אי שייכות למחלקה 𝑅.
דור עזריה
|| 37חישוביות
הרצה מבוקרת
נציג כעת שיטה חזקה להוכחה ששפות מסוימות שייכות ל.𝑅𝐸-
בתור דוגמה ,נתונה השפה הבאה.𝐿 = {< 𝑀 > | ∃𝑥 𝑠. 𝑡. 𝑓𝑀(𝑥) = 𝑥 } :
● זוהי שפת כל המכונות שיש "נקודת שבת" לפונקציה שהן מחשבות.
● בהינתן דקדוק מכונה > 𝑀 < ,לא ברורה הדרך לבדוק האם קיימת נקודת שבת מלבד לבצע
𝑒𝑐𝑟𝑜𝐹 𝑒𝑡𝑢𝑟𝐵 לכל קלט * 𝑤𝑖 ∈ Σאפשרי כזה (יש אינסוף כאלה).
● במכונות המקבלות שפה ,ייתכן שעבור קלט מסוים המכונה לא תעצור לעולם.
● מה הבעיה? -יכול להיות ש 𝑀(𝑤2) = 𝑤2 :אבל ) 𝑀(𝑤1לא תעצור לעולם ולכן 𝑀 לא תבדוק את .𝑤2
● פתרון -נשתמש בהרצה מבוקרת.
מה זה הרצה מבוקרת? -כדי להימנע ממצב שעבור קלט מסוים 𝑤 ,המכונה תיכנס ללולאה אינסופית ,נשתמש
בשיטת הרצה מבוקרת .זו שיטה עדינה ומבוקרת יותר המונעת ריצה אינסופית .בכל צעד באלגוריתם ,נפעיל
חלק קטן מתוך כל מילה 𝑖𝑤 שנעבוד עליה .ככל שמספר הצעדים גדל -ככה נעבוד על יותר מילים במקביל -
כך שאם מילה 𝑖𝑤 תיכנס למצב אינסופי ,המילה 𝑤𝑖+1שגם נעבוד עליה במקביל ,תמשיך להיבדק עד
לעצירתה .נסתכל על הפתרון הבא שיעזור לנו להבין יותר את רעיון השיטה הזו.
דור עזריה
|| 38חישוביות
הסבר כיוון ראשון :נניח שהמילה ה ,𝑘 = 1-כלומר ה , 𝑤1-עוצרת (מסתיימת) בריצת המכונה 𝑀 לאחר
𝑡 = 30צעדים והיא אכן מקיימת ש( 𝑓𝑀(𝑤1) = 𝑤1 -בהכרח יש כזאת כי 𝐿 ∈> 𝑀 <).
כלומר ,צריך לקרוא את כל המילה 𝑤1בשביל לקבוע אם מתקיים .המילה הזאת היא בת כ 𝑡 = 30-תווים.
רק כאשר באלגוריתם שלנו ,ה( 𝑖-לולאה החיצונית) יהיה }𝑘 𝑖 = 𝑚𝑎𝑥{𝑡,אז 𝑀 תסיים לקרוא את המילה 𝑤1
ותקבע ש .𝑓𝑀(𝑤1) = 𝑤1כלומר אנחנו נצטרך בזמן הריצה לעבור על 𝑖𝑤 𝑤1,...,מילים עד ש 𝑤1-תעצור.
תרגיל
נתונה השפה הבאה .𝐿 = {< 𝑀 > | < 𝑀 >∉ 𝐿(𝑀) } :האם היא ב ?𝑅𝐸-האם ב ?𝑅-האם ב?𝑐𝑜𝑅𝐸-
האם היא ב - ?R-לא .אם היא הייתה ,אז ניתן היה בקלות להכריע את 𝐷𝐿 שראיתם בהרצאה שהיא לא ב.𝑅-
האם היא ב - ?coRE-כן .נוכיח את זה .צריך להראות מכונה כך ש:
.1אם הקלט לא בשפה ,אז המכונה תמיד עוצרת ודוחה.
.2אם הקלט בשפה ,אז המכונה מקבלת או לא עוצרת.
נבנה מכונה '𝑀 המקבלת את השפה 𝐿.
מכונה '𝑀 על קלט > 𝑀 < תבצע:
.1נסמלץ את 𝑀 על > 𝑀 <.
.2אם 𝑀 עצרה:
.aוקיבלה את הקלט ,אז '𝑀 תדחה.
.bודחתה את הקלט ,אז '𝑀 תקבל.
נוכיח את נכונות הבניה.
כיוון ראשון ,< 𝑀 >∈ 𝐿 -נראה כי )'𝑀(𝐿 ∈> 𝑀 <.
.1לפני ההנחה 𝑀 עוצרת ודוחה או לא עוצרת על > 𝑀 <.
לכן 𝑀' ,תעצור ותקבל או לא תעצור( .כי אם 𝑀 לא עצרה אז גם '𝑀 לא עוצרת). .2
.3מכאן )'𝑀(𝐿 ∈> 𝑀 <.
דור עזריה
|| 39חישוביות
האם היא ב - ?RE-לא .הוכחנו כבר ש .𝑅 = 𝑐𝑜𝑅𝐸 ∩ 𝑅𝐸 :אם 𝐸𝑅 ∈ 𝐿 וגם 𝐸𝑅𝑜𝑐 ∈ 𝐿 אז 𝑅 ∈ 𝐿 אבל
ראינו כבר ש 𝐿 ∉ 𝑅:ולכן 𝐸𝑅 ∉ 𝐿.
דור עזריה
|| 40חישוביות
דור עזריה
|| 41חישוביות
דור עזריה
|| 42חישוביות
● המכונה '𝑀 לא תסיים את ריצתה לעולם( .כי הלולאה הראשית רצה לאינסוף ונעצרת רק אם נקבל).
● מכאן )'𝑀(𝐿 ∉ 𝑥 כנדרש.
∎
דור עזריה
|| 43חישוביות
רדוקציות
מבוא
רדוקציה היא שיטה אלגוריתמית המאפשרת להמיר בעיה נתונה לבעיה
אחרת שבעזרתה ניתן לפתור את הבעיה המקורית .לדוגמה ,נניח שנתונה
סדרת מספרים כלשהי ,ונניח שקל לפתור את הבעיה "מהו המספר הראשון
בסדרה" .את הבעיה "מהו המספר הקטן ביותר בסדרה" נוכל לפתור באופן
הבא :ראשית נמיין את סדרת המספרים ,ואז נפעיל את האלגוריתם שפותר
את בעיית "מהו המספר הראשון בסדרה" התוצאה תהיה המספר הקטן
ביותר בסדר .משפט רייס מוכיח שהבעיה של זיהוי תכונה לא טריוויאלית של
פונקציה היא לא כריעה על ידי רדוקציה מבעיית העצירה (שאינה כריעה) אליה.
בציור :כל הקלטים ב 𝐿1-ממופים לקלטים של ,𝐿2ואילו קלטים שאינם ב 𝐿1-ממופים לקלטים שאינם ב.𝐿2-
רדוקציה (הגדרה)
תהיינה שפות * ,𝐿1, 𝐿2 ⊆ Σנאמר ש 𝐿1 :ניתנת לרדוקציה ל( 𝐿2-נסמן )𝐿1 ≤ 𝐿2
אם ורק אם קיימת פונקציה * 𝑓: Σ *→ Σשהיא:
.1פונקציה מלאה :פונקציה המוגדרת לכל קלט.
.2פונקציה הניתנת לחישוב :כלומר ,קיימת מכונת טיורינג שיכולה לחשב את הפונקציה הזו.
.3פונקציה תקפה.∀𝑥 ∈ Σ * : 𝑥 ∈ 𝐿1 ⇔ 𝑓(𝑥) ∈ 𝐿2 :
1
= )𝑥(𝑓 כאשר 𝑥 = 0לא מוגדר. 𝑥
הערות :פונקציה לא מלאה יכולה להיות מהצורה
● פונקציה תקפה -כל קלט 𝑥 שמתקבל ב ,𝐿1-הפונקציה שלו )𝑥(𝑓 צריכה להתקבל ב.𝐿2-
דור עזריה
|| 44חישוביות
משפט הרדוקציה
אם ( 𝐿1 ≤ 𝐿2אם 𝐿1ניתנת לרדוקציה ל )𝐿2-אז:
● אם 𝑅 ∈ 𝐿2אז גם 𝑅 ∈ .𝐿1
● אם 𝐸𝑅 ∈ 𝐿2אז גם 𝐸𝑅 ∈ .𝐿1
● אם 𝐸𝑅𝑜𝑐 ∈ 𝐿2אז גם 𝐸𝑅𝑜𝑐 ∈ .𝐿1
דור עזריה
|| 45חישוביות
הערות:
● נזכר בהוכחה בסוף של מצגת ,2למעשה הוכחנו שיש רדוקציה 𝑃𝐻 ≤ 𝐷𝐿 .ואז מכיוון ש 𝐿𝐷 ∉ 𝑅 :אזי
לפי משפט הרדוקציה נובע שגם 𝑅 ∉ 𝑃𝐻.
● בדרך כלל ,כשנתעסק ברדוקציות ,אנחנו נתעסק עם המשפט של הניסוח השקול.
כלומר ,אם 𝐿1 ≤ 𝐿2אז אפשר להגיד שהשפה 𝐿1יכולה להיות אחת מהשפות הבאות שנלמדו:
𝑅 ∉ 𝑈𝐿 𝐻𝑃, 𝐿𝐷,ואז גורר מכך ש .𝐿2 ∉ 𝑅 :כי אם " 𝐿2קשה" לפחות כמו 𝐿1אז בוודאות 𝑅 ∉ .𝐿2
● כלומר ,אם נסתכל על 𝐿1 ≤ 𝐿2אז אפשר להגיד שאם "השמאלי" לא ב 𝑅-אז גם "הימני" לא ב.𝑅-
וזה נכון גם עבור 𝐸𝑅𝑜𝑐 .𝑅𝐸,
דור עזריה
|| 46חישוביות
טענה.𝐻𝑃 ∉ 𝑅 :
הקדמה להוכחה :נציג כאן מכונה '𝑀 שתייצג את 𝑃𝐻 ומכונה 𝑀 שתייצג את 𝐷𝐿.
הוכחה :נוכיח ע"י בניית רדוקציה 𝑃𝐻 ≤ 𝐷𝐿 ,ואז לפי משפט הרדוקציה נקבל שמכיוון ש 𝐿𝐷 ∉ 𝑅 :אז גם
<(𝑓( .זה פונקציה 𝑃𝐻 → 𝐷𝐿 כמו "המרה" ). 𝑅 ∉ 𝑃𝐻 .פונקציית הרדוקציה𝑀 >) =< 𝑀', < 𝑀 >> :
כאשר '𝑀 על קלט 𝑦:
● מסמלצת את ריצת 𝑀 על 𝑦.
אם 𝑀 קיבלה אז גם '𝑀 מקבלת( .כי אמרנו ש 𝐿𝐷 ∈ 𝑅𝐸 :וב 𝑅𝐸-כל מילה 𝐷𝐿 ∈ 𝑥 הוא מתקבל ועוצר). ●
אם 𝑀 דחתה אז '𝑀 נכנסת ללולאה אינסופית( .כי לפי הגדרת 𝑃𝐻 ,המכונה שלה לא עוצרת [ ]haltsלכל דחייה.
במילים אחרות ,אם הקלט 𝑥 לא התקבל ב 𝐿𝐷-אז הוא גם לא מתקבל ב 𝐻𝑃-ולפי הגדרת השפה ,המכונה של 𝑃𝐻 לא עוצרת).
כעת ,צריך להוכיח שהפונקציה מלאה ,ניתנת לחישוב ותקפה (מספיק להראות זאת בנוגע לקלט תקין):
● הפונקציה מלאה כיוון שמכל מכונה 𝑀 שנתונה לנו ,ניתן לבנות את המכונה '𝑀.
● הפונקציה ניתנת לחישוב כיוון שלמדנו שכל מכונת טיורינג ניתנת לקידוד כמחרוזת.
● הפונקציה תקפה :צריך להראות ש.∀𝑥 ∈ Σ * : 𝑥 ∈ 𝐿1 ⇔ 𝑓(𝑥) ∈ 𝐿2 :
○ אם 𝐷𝐿 ∈ 𝑀 )🠈( 𝑀 מקבלת את > 𝑀 < )🠈( '𝑀 גם עוצרת על > 𝑀 < ומקבלת
= )> 𝑀 <(𝑓. > 𝑀 < < 𝑀' , > )🠈( 𝑃𝐻 ∈
○ אם 𝐷𝐿 ∉ 𝑀 )🠈( 𝑀 דוחה את > 𝑀 < או לא עוצרת )🠈( '𝑀 עוברת ללולאה אינסופית על
= )> 𝑀 <(𝑓. > 𝑀 < < 𝑀' , > > 𝑀 < או דוחה אותה )🠈( 𝑃𝐻 ∉
∎
דור עזריה
|| 47חישוביות
דור עזריה
|| 48חישוביות
אתחל מונה .𝑐𝑜𝑢𝑛𝑡𝑒𝑟 = 0בכל שלב אם 𝑐𝑜𝑢𝑛𝑡𝑒𝑟 = 4אז עצור וקבל. 2
𝑤 למשך 𝑖 צעדים( .כלומר נריץ )]𝑖 .)𝑀(𝑤𝑗[1... הרץ את המכונה 𝑀 על המילה 5
𝑗
דור עזריה
|| 49חישוביות
● 𝑥𝑀 מקבלת את 𝑦.
נכונות הפונקציה:
● הפונקציה מלאה -לכל קידוד של מכונה וקלט נתונים ,ניתן לבנות את המכונה 𝑥𝑀.
● הפונקציה ניתנת לחישוב -כל מ"ט ניתנת לקידוד כמחרוזת.
● הפונקציה תקפה -צריך להראות ש.∀𝑥 ∈ Σ * : 𝑥 ∈ 𝐿1 ⇔ 𝑓(𝑥) ∈ 𝐿2 :
○ אם 𝑃𝐻 ∈> 𝑥 𝑀 (🠈) < 𝑀,עוצרת על 𝑥 )🠈( 𝑥𝑀 גם עוצרת על 𝑦 ומקבלת
)🠈( 𝐿 ∈> 𝑥𝑀 <= )> 𝑥 .𝑓(< 𝑀,
○ אם 𝑃𝐻 ∉> 𝑥 𝑀 (🠈) < 𝑀,לעולם לא עוצרת על 𝑥 )🠈( 𝑥𝑀 גם לעולם לא עוצרת על 𝑦 ולכן
)🠈( 𝐿 ∉> 𝑥𝑀 <= )> 𝑥 .𝑓(< 𝑀,
∎
דור עזריה
|| 50חישוביות
תרגיל 3
נציג כאן דוגמה לשפה ששייכת ל( .𝑅𝐸 ∪ 𝑐𝑜𝑅𝐸 -כלומר שפה שלא ב 𝑅𝐸-ולא ב.)𝑐𝑜𝑅𝐸-
נתונה השפה הבאה.𝐿∞ = {< 𝑀 > : |𝐿(𝑀)| = ∞} :
אינטואיציה :גם אם נצליח לוודא שהמכונה מקבלת המון קלטים ,כל כמות שנצליח לבדוק היא בהכרח סופית.
לדוגמה ,לא נוכל לבצע הרצה מבוקרת על אינסוף מילים ,כי הרצה מבוקרת תמיד תעצור לפי הגדרתה.
בכל איטרציה ,היא עוצרת על כמות סופית של מילים ותבדוק אותם.
טענה.𝐿∞ ∈ 𝑅𝐸 ∪ 𝑐𝑜𝑅𝐸 :
מבוא :ההוכחה תהיה בשני שלבים:
- 𝐻𝑃 ≤ 𝐿∞ .1ממשפט הרדוקציה נובע ש.𝐿∞ ∉ 𝑐𝑜𝑅𝐸 :
דור עזריה
|| 51חישוביות
.2אם 𝑃𝐻 ∉> 𝑥 𝑀 (🠈) < 𝑀,עוצרת על 𝑥 לאחר מספר סופי 𝑘 של צעדי חישוב )🠈( עבור כל 𝑦
המקיים 𝑘 > |𝑦| אז 𝑥'𝑀 תדחה את 𝑦 )🠈( '𝑀 תקבל רק מילים 𝑦 כך ש(🠈) |𝑦| < 𝑘 :
|
∞ < )𝑥'𝑀(𝐿 )🠈( ∞𝐿 ∉> 𝑥'𝑀 <. |
∎
הערה -חלק (:)2
● }𝑥 𝑛𝑜 𝑝𝑜𝑡𝑠 𝑡'𝑛𝑠𝑒𝑜𝑑 𝑀 | > 𝑥 .𝐻𝑃 = {< 𝑀,
● יש לנו אינסוף מילים ,כל מילה בפני עצמה בכמות סופית של תווים (כל מילה היא באורך סופי).
● כל עוד אנחנו במילים קטנות 𝑦 אז השפה עדיין לא אינסופית ,אבל כשאנחנו מגיעים למילים ארוכות
מאוד אז אנחנו נותנים ל 𝑀-כמה צעדים שהיא צריכה.
● לכן ,אם 𝑀 לא עצרה ,אז היא צריכה הרבה יותר ממספר הצעדים שהיא קיבלה בזכות |𝑦|שעליה היא
מסתמכת ,כלומר זה אינסופי ולכן נעצור ונקבל.
● אם 𝑀 עצרה אז הגענו "לחסם" מסוים לאחר 𝑡 צעדים ולכן לכל 𝑦 המקיים 𝑡 ≥ |𝑦| אז > 𝑥'𝑀 <∉ 𝑦
כלומר ,זה לא אינסופי ונדחה.
מה לגבי שייכות ל :?𝑅𝐸-אפשר לשנות מעט את הרדוקציה שראינו ∞𝐿 ≤ 𝑃𝐻 כדי להתאים לשפה .𝐿2
טענה.𝐿2 ∉ 𝑅𝐸 :
הוכחה :נראה כי .𝐻𝑃 ≤ 𝐿2פונקצית הרדוקציה היא.𝑓(< 𝑀, 𝑥 >) =< 𝑀'𝑥 > :
כאשר 𝑥'𝑀 על קלט 𝑤 אז:
.1מריצה את 𝑀 על 𝑥 למשך |𝑤| צעדים.
דור עזריה
|| 52חישוביות
.2אם 𝑃𝐻 ∉> 𝑥 𝑀 (🠈) < 𝑀,עוצרת על 𝑥 לאחר מספר סופי 𝑡 של צעדי חישוב )🠈( 𝑥'𝑀 תיכנס
ללולאה אינסופית עבור כל 𝑤 כך ש 𝑀'𝑥 (🠈)|𝑤| ≥ 𝑡 :לא עוצרת לכל 𝑤 )🠈( .𝑀'𝑥 ∉ 𝐿2
∎
הסבר להמשך תרגיל :2נשים לב ש.𝐻𝑃 = {< 𝑀, 𝑥 > | 𝑀 𝑑𝑜𝑒𝑠𝑛'𝑡 𝑠𝑡𝑜𝑝 𝑜𝑛 𝑥} :
נזכור שלא באמת מעניין אותנו התוכן של 𝑤 ,אלא רק צריך להגיב בהתאם לעניין השייכות של 𝑃𝐻:
.1אם 𝑀 לא עצרה על 𝑥 ,אז זה מעולה ,כי זה עונה על דרישת השפה 𝑃𝐻 ,כלומר 𝑃𝐻 ∈> 𝑥 < 𝑀,
ולכן גם המכונה 𝑥'𝑀 של 𝐿2חייבת להגיב בהתאם למקרה של < 𝑀'𝑥 >∈ 𝐿2ולכן ,תקבל את 𝑤.
.2אם 𝑀 עצרה על 𝑥 ,אז זה לא עונה על דרישת השפה 𝑃𝐻 ,כלומר 𝑃𝐻 ∉> 𝑥 .< 𝑀,
מתי מילה לא שייכת לשפה - ?𝐿2כאשר 𝑀 לא עוצר עבור כל * .𝑥 ∈ Σ
לכן המכונה 𝑥'𝑀 של 𝐿2חייבת לא לעצור לעולם על כל 𝑥.
תרגיל 4
נתונה השפה }* .𝐿Σ* = {< 𝑀 > | 𝐿(𝑀) = Σ
𝑅 ולכן היא מחוץ ל"מגרש המשחקים" שהתעסקנו בו עד עכשיו ,כלומר היא 𝐸𝑅𝑜𝑐 ∪ 𝐸𝑅 ∈ *.𝐿Σ
אבחנה :שתי פונקציות הרדוקציה שראינו עבור ∞𝐿 ≤ 𝑃𝐻 𝐻𝑃 ≤ 𝐿∞ ,מתאימות גם עבור השפה *.𝐿Σ
הוכחה חלק :1אנו יודעים כי 𝐸𝑅𝑜𝑐 ∉ 𝑃𝐻 ,נוכיח ברדוקציה ⋆ 𝐿 ≤ 𝑃𝐻 וכך נראה כי 𝐸𝑅𝑜𝑐 ∉ ⋆ 𝐿.
Σ Σ
פונקציית הרדוקציה מוגדרת כך.𝑓(< 𝑀, 𝑥 >) =< 𝑀𝑥 > :
𝑥𝑀 על קלט 𝑤 אז:
● מריצה את 𝑀 על 𝑥.
● מקבל את 𝑤.
דור עזריה
|| 53חישוביות
הוכחה חלק :2אנו יודעים כי 𝐸𝑅 ∉ 𝑃𝐻 .נוכיח ברדוקציה ⋆ 𝐿 ≤ 𝑃𝐻 וכך נקבל 𝐸𝑅 ∉ ⋆ 𝐿.
Σ Σ
פונקציית הרדוקציה מוגדרת כך.𝑓(< 𝑀, 𝑥 >) =< 𝑀𝑥 > :
𝑥𝑀 על קלט 𝑤 תבצע:
● 𝑀 תפעל על 𝑥 למשך |𝑤| צעדים.
○ אם 𝑀 לא עצרה על 𝑥 -קבל.
○ אם 𝑀 עצרה על 𝑥 -רוץ לאינסוף.
נוכיח את נכונות פונקצית הרדוקציה.
.1הפונקציה מלאה :לכל קידוד של מכונה וקלט נתונים ,ניתן לבנות את המכונה 𝑥𝑀.
.2הפונקציה ניתנת לחישוב :קיים קידוד כמחרוזת לכל מ"ט.
.3הפונקציה פתירה:
.aאם 𝑃𝐻 ∈> 𝑥 𝑀 ← < 𝑀,לא עצרה על 𝑥 ← 𝑥𝑀 מקבל כל קלט באורך |𝑤|← ⋆ 𝐿 ∈ 𝑥𝑀.
Σ
.bאם 𝑃𝐻 ∉> 𝑥 𝑀 ← < 𝑀,עצרה על 𝑥 לאחר 𝑡 צעדים ← 𝑥𝑀 רץ לאינסוף החל מהצעד ה𝑡-
⋆
← מילה לא התקבלה כל מילה חייבת להיות ב.𝑀𝑥 ∉ 𝐿 ⋆ ←Σ -
Σ
תרגיל 5
נתונה השפה }).𝐿𝑒𝑞 = {< 𝑀1 , 𝑀2 > | 𝐿(𝑀1) = 𝐿(𝑀2
דור עזריה
|| 54חישוביות
דור עזריה
|| 55חישוביות
דור עזריה
|| 56חישוביות
𝑀 תקבל את ,εבשביל למנוע מצב ש'𝑀 תעשה 𝑅𝑅𝑅 כשלא באמת צריך ,אז נגיד שלכל צעד ימינה ,נעמוד במקום ואז נזוז ימינה ,ואז יהיה לנו רצף
צעדים של 𝑅𝑆𝑅𝑆𝑅𝑆𝑅𝑆 וככה אנחנו מתחייבים שלא יהיה לנו לפחות 3ימינה רצופים כנדרש.
.3נכונות פונקציית הרדוקציה:
.aהפונקציה מלאה :כי '𝑀 מוגדרת לכל 𝑀.
.bהפונקציה ניתנת לחישוב :כי קיים קידוד לכל מ"ט.
.cהפונקציה פתירה:
𝑀 ← < 𝑀 >∈ 𝐿εתעצור ותקבל את 𝑀' ← εבריצתה על εתלך שלושה צעדים .i
רצופים ימינה ← 𝐿 ∈> '𝑀 <.
𝑀 ← < 𝑀 >∉ 𝐿εתעצור ותדחה או לא תעצור ← '𝑀 בריצתה על εלא תלך .ii
שלושה צעדים רצופים ימינה ואפילו אינסוף (משום שקטענו עם 𝑆) ← 𝐿 ∉> '𝑀 <.
.4סיכום :הראינו כי 𝐿εניתנת לרדוקציה ל 𝐿-ידוע לנו כי 𝑅 ∉ 𝐿εולכן 𝑅 ∉ 𝐿 כנדרש.
דור עזריה
|| 57חישוביות
דור עזריה
|| 58חישוביות
.cהפונקציה פתירה:
⋆
אם 𝑃𝐻 ∈> 𝑥 𝑀 ← < 𝑀,לא עוצרת על 𝑥 ← לכל 𝑀𝑥 ,𝑤 ∈ Σמקבל רק את .i
} 𝐿(𝑀𝑥) = {ε, 0, 1} ← 𝑤 ∈ {ε, 0, 1ואכן בגודל .< 𝑀𝑥 >∈ 𝐿=3 ←3
⋆
אם 𝑃𝐻 ∉> 𝑥 𝑀 ← < 𝑀,עוצרת על 𝑥 ← 𝑥𝑀 מקבל כל ← 𝑤 ∈ Σ .ii
⋆
𝐿(𝑀𝑥) = Σובהכרח לא בגודל .< 𝑀𝑥 >∉ 𝐿=3 ← 3
|
סופית ← ∞ < )𝑥𝑀(𝐿 ובנוסף 𝑀𝐴𝑇𝑆𝑀 מקבלת כל קלט ← |
|
∞ < )𝑀𝐴𝑇𝑆𝑀(𝐿 ∩ )𝑥𝑀(𝐿 ← 𝐿 ∉> 𝑀𝐴𝑇𝑆𝑀 .< 𝑀𝑥, |
● סיכום :ממשפט הרדוקציה 𝐸𝑅 ∉ 𝑃𝐻 ולכן 𝐸𝑅 ∉ 𝐿 .מאחר ו 𝑅 ⊆ 𝑅𝐸 -אז גם 𝑅 ∉ 𝐿.
כלומר הוכחנו כי 𝑅 𝐿 ∉ 𝑅𝐸,כנדרש.
∎
דור עזריה
|| 59חישוביות
שפות שלמות
הגדרות
הגדרה - 1שפה 𝐿 היא שלמה ב 𝑅𝐸-אם"ם היא מקיימת:
𝐿 ∈ 𝑅𝐸 .1
𝐿' ( ∀𝐿' ∈ 𝑅𝐸 : 𝐿' ≤ 𝐿 .2ניתנת לרדוקציה על 𝐿).
סימונים
● נסמן 𝑒𝑡𝑒𝑙𝑝𝑚𝑜𝑐 𝐿 ∈ 𝑅𝐸 −כאשר 𝑒𝑡𝑒𝑙𝑝𝑚𝑜𝑐 𝑅𝐸 −היא מחלקת השפות השלמות ב.𝑅𝐸-
● נסמן 𝑒𝑡𝑒𝑙𝑝𝑚𝑜𝑐 𝐿 ∈ 𝑅 −כאשר 𝑒𝑡𝑒𝑙𝑝𝑚𝑜𝑐 𝑅 −היא מחלקת השפות השלמות ב.𝑅-
● נסמן 𝑒𝑡𝑒𝑙𝑝𝑚𝑜𝑐 𝐿 ∈ 𝑐𝑜𝑅𝐸 −כאשר 𝑒𝑡𝑒𝑙𝑝𝑚𝑜𝑐 𝑐𝑜𝑅𝐸 −היא מחלקת השפות השלמות ב-
𝐸𝑅𝑜𝑐
תרגיל 6
דוגמא לשפה שלמה ב.𝑅𝐸-
טענה :השפה }𝑥 𝑠𝑡𝑝𝑒𝑐𝑐𝑎 𝑀 | > 𝑥 𝐿𝑢 = {< 𝑀,היא שפה שלמה ב.𝑅𝐸-
מבוא להוכחה :לפי ההגדרה ,צריך להראות ש 𝐿𝑢 ∈ 𝑅𝐸 )1( :וגם ( )2שלא משנה איזה שפה אחרת 𝐸𝑅 ∈ '𝐿,
יש לה רדוקציה ל.𝐿𝑢-
הוכחה:
.1הוכחנו בשיעורים קודמים ש( 𝐿𝑢 ∈ 𝑅𝐸:נחזור על זה שוב):
נתאר מכונת טיורינג 𝑢𝑀 המקבלת את השפה 𝑢𝐿:
𝑢𝑀 על קלט > 𝑥 < 𝑀,תסמלץ את ריצת 𝑀 על הקלט 𝑥 ותענה כמוה.
● (ראינו שניתן "לסמלץ" ריצה של מכונה שנתונה לנו כקידוד).
נשאר להוכיח את נכונות הבניה:
דור עזריה
|| 60חישוביות
● אם 𝑢𝐿 ∈> 𝑥 < 𝑀,אז 𝑀 מקבלת את הקלט 𝑥 ,מכאן ש 𝑀𝑢-מקבלת את הקלט > 𝑥 < 𝑀,אזי
)𝑢𝑀(𝐿 ∈> 𝑥 .< 𝑀,
● אם 𝑢𝐿 ∉> 𝑥 < 𝑀,אז 𝑀 לא מקבלת את הקלט 𝑥 ,מכאן ש 𝑀𝑢-לא מקבלת את הקלט
> 𝑥 < 𝑀,אזי )𝑢𝑀(𝐿 ∉> 𝑥 ( .< 𝑀,כלומר היא דוחה או לא עוצרת כהגדרה של 𝐸𝑅).
הראנו ש 𝐿𝑢 = 𝐿(𝑀𝑢) :כלומר שקיימת מכונה 𝑢𝑀 המקבלת את השפה 𝑢𝐿 ולכן 𝐸𝑅 ∈ 𝑢𝐿.
.2נראה רדוקציה מכל שפה ב 𝑅𝐸-אל })𝑀(𝐿 ∈ 𝑥 | > 𝑥 .𝐿𝑢 = {< 𝑀,
תהי שפה 𝐸𝑅 ∈ '𝐿 ,אזי קיימת עבורה מ"ט '𝑀 המקבלת את '𝐿 .יהי > '𝑀 < קידוד של המכונה '𝑀.
אזי פונקציית הרדוקציה עבור 𝑢𝐿 ≤ '𝐿 היא.𝑓(𝑥) =< 𝑀', 𝑥 > :
כאשר 𝑢𝑀 על קלט 𝑤 אז:
.1נריץ את '𝑀 על 𝑥:
.aאם '𝑀 מקבל את 𝑥 אז קבל.
.bאם '𝑀 דוחה את 𝑥 אז דוחה.
.cאם '𝑀 לא עוצר על 𝑥 אז גם לא עוצר.
נכונות הפונקציה:
הפונקציה מלאה וניתנת לחישוב (שרשור של מחרוזת קבועה למילה הנתונה).
תקפות הרדוקציה:
.1אם '𝐿 ∈ 𝑥 )🠈( '𝑀 מקבלת את 𝑥 )🠈( 𝑢𝑀 עוצר ומקבל את 𝑤 )🠈( 𝑢𝐿 ∈ 𝑤.
.2אם '𝐿 ∉ 𝑥 )🠈( '𝑀 דוחה את 𝑥 או לא עוצרת )🠈( 𝑢𝑀 דוחה את 𝑤 או לא עוצר )🠈( 𝑢𝐿 ∉ 𝑤.
∎
האם יש עוד שפות שלמות ב?𝑅𝐸-
נתונה שפה שלמה 𝑒𝑡𝑒𝑙𝑝𝑚𝑜𝐶 𝐿 ∈ 𝑅𝐸 −ונתונה שפה נוספת 𝐸𝑅 ∈* 𝐿.
אם מתקיים ש 𝐿 ≤ 𝐿 * :אז נסיק שגם 𝑒𝑡𝑒𝑙𝑝𝑚𝑜𝐶 .𝐿 *∈ 𝑅𝐸 −
שאלה -למה זה נכון?
תשובה -הראנו שתכונת הטרנזטיביות תקפה עבור רדוקציות .אם לכל 𝐸𝑅 ∈ '𝐿 אפשר לעשות עם 𝐿 רדוקציה
כלומר 𝐿 ≤ '𝐿 וגם מתקיים ש 𝐿 ≤ 𝐿 * :אז * 𝐿 ≤ 𝐿 ≤ '𝐿 ולפי טרנזיטיביות* 𝐿 ≤ '𝐿 .
דור עזריה
|| 61חישוביות
תרגיל 7
שאלה :האם יש שפות שלמות ב?𝑅-
תשובה :כן ,כמעט כולן! יש בדיוק 2שפות שלא יכולות להיות שלמות ב( 𝑅-הם השפות ∅ .)Σ *,
שאלה :למה השפות ∅ Σ *,לא שלמות?
תשובה :כי אי אפשר לעשות עליהן רדוקציה ,כי ∅ Σ *,שתיהן אומרות "כולם בפנים או כולם בחוץ" אז אין לנו
אף שפה אחרת שאפשר לעשות עליהן רדוקציה (מלבד אחת על השניה).
דור עזריה
|| 62חישוביות
טענה
}∅ .𝑅 − 𝐶𝑜𝑚𝑝𝑙𝑒𝑡𝑒 = 𝑅 \ {Σ *,כלומר כל שפה 𝑅 ∈ 𝐿 היא שלמה מלבד השפות }∅ .{Σ *,
הוכחה :ראשית ,נשים לב שלא יכולה להיות קיימת רדוקציה משפה כלשהי 𝐿 שאינה טריוויאלית אל אחת
מהשפות הטריוויאליות ∅ .Σ *,
נוכיח שבהינתן שתי שפות כלשהן 𝐿1, 𝐿2 ∈ 𝑅 \ {Σ *, ∅} :מתקיים ש.𝐿1 ≤ 𝐿2 :
תהי 𝑀1מכונת טיורינג המכריעה את השפה .𝐿1
נבחר שתי מילים ( 𝑥 ∈ 𝐿2, 𝑦 ∉ 𝐿2האם אפשר לבחור? -כן כי אנחנו לא ב.)Σ *, ∅-
נתאר מכונה לחישוב פונקציית הרדוקציה :𝐿1 ≤ 𝐿2
המכונה 𝑓𝑀 על קלט 𝑤:
● מסמלצת את ריצת 𝑀1על הקלט 𝑤:
○ אם 𝑀1קיבלה את 𝑤 -מחזירה את 𝑥.
○ אם 𝑀1דחתה את 𝑤 -מחזירה את 𝑦.
הערה :בשלב הזה ,פונקציית הרדוקציה החזירה 𝑥 אם 𝑀1קיבלה את 𝑤 .אמרנו שפלט הפונקציה נשלח למכונה של ,𝐿2לכן המכונה 𝑀2תקבל את 𝑥
ומכיוון שהגדרנו כבר מראש ש 𝑥 ∈ 𝐿2 :אז 𝑀2תקבל את 𝑥 כנדרש .עבור 𝑦 השלב הזה דומה רק הפוך (דחייה).
דור עזריה
|| 63חישוביות
משפט רייס
מבוא
משפט רייס הוא משפט שעוסק ביכולת של אלגוריתמים לחקור אלגוריתמים אחרים .באופן אינטואיטיבי המשפט
טוען שתוכנית מחשב אינה יכולה לדעת כמעט כלום על הפלטים של תוכניות מחשב הנתונות לה כקלט.
הבעיה פשוטה :בהינתן תכונה של קבוצת מספרים טבעיים ,אנחנו רוצים
אלגוריתם כלשהו שמקבל כקלט מכונת טיורינג ואומר האם הקבוצה של
המספרים שמזוהים על ידי המכונה היא בעלת התכונה הזו או לאו.
כפי שניתן לנחש ,אלגוריתם שכזה לא קיים כמעט אף פעם ,ולמשפט
שאומר זאת בצורה פורמלית קוראים משפט רייס .מה אומר משפט רייס?
שלכל תכונה לא טריוויאלית 𝑆 של קבוצות טבעיים (ובניסוחים אחרים -
פונקציות ,שפות -זה לא חשוב כי הכל שקול) לא קיים אלגוריתם שמקבל כקלט מכונת טיורינג 𝑀 ואומר האם
קבוצת המספרים ש 𝑀-מקבלת היא בעלת התכונה 𝑆.
עד עכשיו ,כשראינו שפה מהצורה 𝐿 = {< 𝑀 > | 𝐿(𝑀) ℎ𝑎𝑠 𝑎 𝑝𝑎𝑟𝑡𝑖𝑐𝑢𝑙𝑎𝑟 𝑝𝑟𝑜𝑝𝑒𝑟𝑡𝑦} :ניסינו להתאים
לה רדוקציה ספציפית כדי להוכיח עבורה לאיזה מחלקה היא איננה שייכת.
במקרים כאלה ,משפט רייס נותן לנו קיצור דרך.
דור עזריה
|| 64חישוביות
דוגמאות:
.1לתכונה } 𝑠1 = {𝐿 ∈ 𝑅𝐸 | |𝐿| ≥ 2מתאימה השפה }𝐿𝑠 = {< 𝑀 > : |𝐿(𝑀)| ≥ 2
1
משפט רייס
לכל תכונה לא טריוויאלית 𝐸𝑅 ⊂ 𝑆 ≠ ∅ מתקיים 𝑅 ∉ 𝑆𝐿.
במילים :כל תכונה שאפשר לכתוב ב 𝑅𝐸-שהיא לא ∅ והיא לא כל 𝐸𝑅 אומר ששפת כל המכונות שמקיימות את
התכונה 𝑆 לא שייכת למחלקה 𝑅.
רעיון ההוכחה:
נחלק למקרים:
.1אם 𝑆 ∉ ( φהשפה הריקה) אז נראה כי 𝑆𝐿 ≤ 𝑃𝐻 ומזה נובע כי 𝐸𝑅𝑜𝑐 ∉ 𝑆𝐿.
דור עזריה
|| 65חישוביות
(למה 𝐿1קיימת? -כי ראינו שלכל תכונה לא טריוויאלית 𝑆 קיימת לפחות שפה אחת ב 𝑆-ולפחות שפה אחת
הערה :אם 𝑀 לא עצרה על 𝑥 אז 𝑥𝑀 תקוע לנצח וממשיך לרוץ ,לכן השפה תהיה ריקה φכי אין לנו אף 𝑦 שאפשר יהיה להריץ אותו על 𝐿𝑀 כי 𝑀 לא
1
עוצרת .אבל ,אם השפה שקיבלנו ריקה φאז אנחנו לא בתכונה 𝑆.
נוכיח את נכונות פונקצית הרדוקציה:
.1הפונקציה מלאה (מהגדרה).
.2ניתנת לחישוב (פעולת קומפילציה פשוטה) כי ניתן לקודד כל מ"ט.
.3תקפה:
)🠊() 𝐿𝑀(𝐿 = )𝑥𝑀(𝐿 )🠊( 𝑦 𝑛𝑜 𝐿𝑀 𝑠𝑛𝑢𝑟 𝑥𝑀 )🠊( 𝑥 𝑛𝑜 𝑠𝑝𝑜𝑡𝑠 𝑀 )🠊(𝑃𝐻 ∈> 𝑥 ● < 𝑀,
1 1
)🠊( 𝑦 𝑛𝑜 𝑟𝑒𝑣𝑒𝑟𝑜𝑓 𝑠𝑛𝑢𝑟 𝑥𝑀 )🠊( 𝑥 𝑛𝑜 𝑟𝑒𝑣𝑒𝑟𝑜𝑓 𝑠𝑛𝑢𝑟 𝑀)🠊(𝑃𝐻 ∉> 𝑥 ● < 𝑀,
𝑆𝐿 ∉ 𝑥𝑀 )🠊( 𝑆𝐿 ∉ (🠊)𝐿(𝑀𝑥) = φ (🠊) 𝑊𝑒 𝑘𝑛𝑜𝑤 𝑡ℎ𝑎𝑡 φ
דור עזריה
|| 66חישוביות
הערה :אם 𝑃𝐻 ∈> 𝑥 < 𝑀,אז 𝑀 לא עצרה על 𝑥 כלומר 𝑥𝑀 תקוע לנצח וממשיך לרוץ ,לכן השפה תהיה ריקה 𝐿(𝑀𝑥) = φולכן היא ב.𝑆-
)🠊( 𝑦 𝑛𝑜 𝑟𝑒𝑣𝑒𝑟𝑜𝑓 𝑠𝑛𝑢𝑟 𝑥𝑀 )🠊( 𝑥 𝑛𝑜 𝑟𝑒𝑣𝑒𝑟𝑜𝑓 𝑠𝑛𝑢𝑟 𝑀)🠊(𝑃𝐻 ∈> 𝑥 ● < 𝑀,
𝑆𝐿 ∈ 𝑥𝑀 )🠊( 𝑆 ∈ (🠊)𝐿(𝑀𝑥) = φ (🠊) 𝑊𝑒 𝑘𝑛𝑜𝑤 𝑡ℎ𝑎𝑡 φ
דור עזריה
|| 67חישוביות
אבחנה :אם התכונה המדוברת היא תכונה של מכונה ולא תכונה של שפה של המכונה אז משפט רייס לא עובד.
דוגמה לאבחנה :נתונה השפה }𝑡𝑢𝑝𝑛𝑖 𝑦𝑟𝑒𝑣𝑒 𝑛𝑜 𝑠𝑡𝑙𝑎.𝐿 = {< 𝑀 > | 𝑀 ℎ
עצירה היא תכונה של מכונה ולא של שפה (כי שואלים מתי 𝑀 עוצרת) ,בהינתן תכונה לא טריוויאלית 𝑆:
● יש מכונות שתמיד עוצרות שהשפה שלהן ב.𝑆-
● יש מכונות שמקבלות את אותה שפה שלא עוצרות על מילים שלא בשפה.
התכונה היחידה של משפט רייס שעשויה להתאים לשפה הנתונה 𝐿 היא 𝑅 = 𝑆.
אבל ,אפשר לחשוב על מכונה שמקבלת שפה ב 𝑅-ולא עוצרת על מילים שלא בשפה.
שאלה :למה זה לא סותר את זה שהשפה ב?𝑅-
תשובה :כי כדי להוכיח ששפה מסוימת היא ב ,𝑅-מספיקה מכונה אחת ,אבל יכול להיות שיש מכונה אחרת
שמקבלת את אותה השפה אבל היא לא מקיימת את התכונה שהיא תמיד עוצרת .למשל ,מכונה שעל כל מילה
שלא בשפה -תיכנס ללולאה אינסופית.
במקרה כזה ,צריך להוכיח בדרכים שונות (כלומר ע"י רדוקציה).
כמה דוגמאות
דוגמה - 1נתונה השפה.𝐿1 = {< 𝑀 > : |𝐿(𝑀)| = 3} :
● האם שייכת ל - ? 𝑅-לא ,כי כל מה שעובד ברייס -לא נמצא ב.𝑅-
● האם שייכת ל - ?𝑅𝐸-לא ,צריך להוכיח ברדוקציה -כי משפט רייס לא עוזר פה.
האם ניתן להשתמש ברייס? -כן ,כי זה תנאי על השפה .וזה לא טריוויאלי כי אפשר לחשוב על שפות ●
שהגודל שלהם הוא בדיוק 3ואפשר לחשוב על אחרות שיש להם גודל שונה מ.3-
⋆
דוגמה - 2נתונה השפה𝐿2 = {< 𝑀 > : 𝐿(𝑀) ⊆ Σ } :
● האם שייכת ל - ? 𝑅-כן ,כי זה תכונה טריוויאלית.
● האם שייכת ל - ?𝑅𝐸-כן ,כי כל מה שמוכל ב 𝑅-מוכל גם ב.𝑅𝐸-
⋆
האם ניתן להשתמש ברייס? -לא ,כי זו תכונה טריוויאלית -כל שפה מוכלת ב Σ -אז כל מכונה שנקבל ●
⋆
השפה של המכונה תיהיה מוכלת ב.Σ -
דוגמה - 3נתונה השפה𝐿3 = {< 𝑀 > : 𝑀 𝑎𝑐𝑐𝑒𝑝𝑡𝑠 𝑡ℎ𝑒 𝑤𝑜𝑟𝑑 ε} :
● האם שייכת ל - ? 𝑅-לא ,כי זו תכונה לא טריוויאלית.
● האם שייכת ל - ?𝑅𝐸-כן ,אפשר להריץ את 𝑀 על εואז יכול להיות שיתקבל או שלא יעצור.
האם ניתן להשתמש ברייס? -כן ,כי זה תנאי על השפה .וזה לא טריוויאלי כי אפשר לחשוב על שפות ש ●
𝐿 ∈ εואפשר לחשוב על אחרות שעבורם 𝐿 ∉ .ε
דור עזריה
|| 68חישוביות
דוגמה - 8נתונה השפה𝐿8 = {< 𝑀 > : |𝐿(𝑀)| 𝑖𝑠 𝑜𝑑𝑑 𝑎𝑛𝑑 |< 𝑀 >| ≤ 1000} :
● האם שייכת ל - ? 𝑅-כן ,כי כל שפה סופית היא רגולרית וכל הרגולריות מוכלות ב.𝑅-
● האם שייכת ל - ?𝑅𝐸-כן ,כי זה שייך גם ל.𝑅-
האם ניתן להשתמש ברייס? -לא ,כי זה טריוויאלי -השפה סופית שייכת ל.𝑅- ●
דור עזריה
|| 69חישוביות
דור עזריה
|| 70חישוביות
| |
} < 𝑀𝑥 >∈ 𝐿 ← 𝐿(𝑀𝑥) = 3 ← 𝐿(𝑀𝑥) = {0, 1, εכנדרש.
⋆
אם 𝑃𝐻 ∉> 𝑥 𝑀 ← < 𝑀,עוצרת על 𝑥 ← 𝑥𝑀 מקבלת כל ← 𝑤 ∈ Σ .ii
⋆
← 𝐿(𝑀𝑥) = Σקיבלנו ששפת המכונה בגודל אינסופי ← 𝐿 ∉> 𝑥𝑀 <.
דור עזריה
|| 71חישוביות
דור עזריה
|| 72חישוביות
(
𝐿 ∈ 𝑥 . < 𝑀 >, < 𝑀𝑙𝑜𝑜𝑝 >,)
■ 𝑃𝐻 ∉> 𝑥 𝑀 ← < 𝑀,לא עוצרת על 𝑥 ו 𝑀𝑙𝑜𝑜𝑝-לא עוצרת ←
(
𝐿 ∉ 𝑥 . < 𝑀 >, < 𝑀𝑙𝑜𝑜𝑝 >,)
● סיכום :הראינו רדוקציה 𝑃𝐻 על 𝐿 וכיוון ש 𝐻𝑃 ∉ 𝑐𝑜𝑅𝐸 :אז גם 𝐸𝑅𝑜𝑐 ∉ 𝐿 כנדרש.
דור עזריה
|| 73חישוביות
( )
𝐿 ∈ 𝑥 . < 𝑀𝑆𝑇𝐴𝑀 >, < 𝑀 >,
( )
𝐿 ∉ 𝑥 . < 𝑀𝑆𝑇𝐴𝑀 >, < 𝑀 >,
דור עזריה
|| 74חישוביות
השפה 𝑐𝐿
נתונה השפה }𝑠𝑝𝑒𝑡𝑠 .𝐿𝑐 = {< 𝑀, 𝑥 > | 𝑀 ℎ𝑎𝑙𝑡𝑠 𝑜𝑛 𝑥 𝑤𝑖𝑡ℎ𝑖𝑛 𝑐 ∈ ℕ
במילים :כל הקידודים > 𝑥 < 𝑀,כך ש 𝑀-עוצרת על 𝑥 בתוך 𝑐 צעדים.
אינטואיציה :למשל 𝐿1000זה כל הקידודים > 𝑥 < 𝑀,כך שבצעד ה 1000-המכונה 𝑀 עוצרת על 𝑥.
השפה 𝑅 ∈ 𝑐𝐿 בגלל שאם נתון לנו ה 𝑐-אז יש לנו מעין "חסם" ,ולכן אפשר להכריע אותה כי אנחנו "נאחזים" ב-
𝑐 שתמיד מוגדר וסופי לכל מספר טבעי שנקבל עבורו .שלב 1בהוכחה תמיד מסתיים ,כי גם אם המכונה אמורה
לרוץ לאינסוף צעדים ,בגלל שקבענו חסם עבור מספר הצעדים שלנו ,אז המכונה תמיד תעצור.
השפה 𝑐𝐿 שייכת למחלקה 𝐸𝑅.
טענה.𝐿𝑐 ∈ 𝑅 :
הוכחה :נוכיח כי 𝑅 ∈ 𝑐𝐿.
נתאר מכונה מכריעה:
𝑈 על קלט > 𝑥 < 𝑀,תבצע:
.1הרץ את 𝑀 על הקלט 𝑥 למשך 𝑐 צעדים.
.2אם 𝑀 עצרה על 𝑥 -קבל.
.3אם 𝑀 לא עצרה על 𝑥 -דחה.
נכונות הבניה:
● אם 𝑐𝐿 ∈> 𝑥 𝑀 ← < 𝑀,עוצרת על 𝑥 בצעד ה 𝑈 ← 𝑐-קיבל ← )𝑈(𝐿 ∈> 𝑥 .< 𝑀,
● אם 𝑐𝐿 ∉> 𝑥 𝑀 ← < 𝑀,לא עוצרת על 𝑥 או 𝑀 עוצרת אחרי יותר מ 𝑐-צעדים ← 𝑈 לא תזהה עצירה
ותדחה ← )𝑈(𝐿 ∉> 𝑥 .< 𝑀,
הוכחנו כי )𝑈(𝐿 = 𝑐𝐿 וכן 𝑈 מכריעה את השפה 𝑐𝐿 ומכאן 𝑅 ∈ 𝑐𝐿 כנדרש.
∎
דור עזריה
|| 75חישוביות
השפה 𝑃𝐻𝐵
נתונה השפה:
2
}𝑒𝑝𝑎𝑡 𝑠𝑡𝑖 𝑓𝑜 𝑙𝑙𝑒𝑐 𝐵𝐻𝑃 = {< 𝑀, 𝑥 > | 𝑀 ℎ𝑎𝑙𝑡𝑠 𝑜𝑛 𝑥, 𝑎𝑛𝑑 𝑀 𝑑𝑜𝑒𝑠𝑛'𝑡 𝑒𝑛𝑡𝑒𝑟 𝑡ℎ𝑒 (|𝑥| + 1)'𝑡ℎ
2
במילים :תוודא ש 𝑀-מסמלצת על 𝑥 ועוצרת .ובנוסף 𝑀 ,לא תעבור את התא ה (|𝑥| + 1)-בסרט שלה.
טענה.𝐵𝐻𝑃 ∈ 𝑅 :
2
מבוא להוכחה :כדי להוכיח 𝑅 ∈ 𝑃𝐻𝐵 ,נשים לב שמותר למכונה להשתמש בלכל היותר |𝑥| תאי זיכרון.
● המכונה יכולה לא לעצור .מהם כל האפשרויות עבור המכונה (עוצרת או לא) וכיצד ניתן לזהות אותם?:
.1כאשר 𝑀 נכנסת לתא האסור (בין אם עוצרת או לא).
.2כאשר 𝑀 עוצרת מבלי להיכנס לתא האסור.
.3כאשר 𝑀 נכנסת ללולאה אינסופית בתוך התאים המותרים.
● תזכורת :קונפיגורציה היא תיאור המצב הכללי של המכונה בנקודה הספציפית )𝑖 .𝑐 = (α, 𝑞,
כאשר αהוא תוכן הסרט 𝑞 ,הוא המצב הנוכחי ו 𝑖 -הוא המיקום (האינדקס) של הראש של הסרט.
2
במקרה שלנו ,מכיוון שכמות התאים המותרים לשימוש מוגבלת ע"י |𝑥| ,ניתן לחשב חסם עליון למספר
הקונפיגורציות השונות האפשריות.
● למה הקונפיגורציות האלה מעניינות אותנו? :אנחנו רוצים לזהות את כל האפשרויות שהמכונה תבצע
בשביל שנוכל להכריע את השפה ,אמרנו שאחד מהאפשרויות האלה היא כאשר 𝑀 נכנסת ללולאה
אינסופית בתוך התאים המותרים .לכן כדי לזהות את המקרים שנכנס ללולאה אז אפשר להשתמש
בקונפיגורציות .בהרצאה ,1הוכחנו עם עקרון שובך היונים שאם עברנו על כל הקונפיגורציות
האפשריות ,אז הקונפיגורציה הבאה תסגור לנו מעגל כי נפגשנו בקונפיגורציה הזאת בעבר .לכן,
נשתמש בשיטה הזאת כדי לזהות כאשר המכונה 𝑀 נכנסת ללולאה ואז נוכל לעצור.
2
● חסם לכמות הקונפיגורציות השונות האפשריות בתוך |𝑥| תאים :נרצה לחשב את מספר כל
הקונפיגורציות האפשריות שלנו:
2
|𝑥|
|.#(α) ≤ |Γ ○ מספר כל הקלטים האפשריים הוא
○ מספר כל הקבוצות האפשריות הוא |𝑄| ≤ )𝑞(.#
2
○ מספר כל התאים האפשריים על הסרט הוא |𝑥| ≤ )𝑖(.#
2
|𝑥| 2
|.𝑇 = |Γ לכן החסם הכללי 𝑇 לכמות הקונפיגורציות השונות× |𝑄| × |𝑥| :
● אבחנה :אם נריץ את המכונה ל 𝑇 + 1-צעדים אז בהכרח קיימת קונפיגורציה שהמכונה ביקרה
פעמיים.
● אם המכונה הייתה באותה קונפיגורציה פעמיים ,אפשר להסיק שהמסלול של המכונה מכיל מעגל .נניח
שקיימים 𝑗 𝑖,כך ש .𝑐𝑖 = 𝑐𝑗 :לכן ,קיום המעגל נובע מכך שפונקציית המעברים היא דטרמיניסטית.
דור עזריה
|| 76חישוביות
אינטואיציה :הצגנו במבוא להוכחה כי ניתן לזהות כל מקרה אפשרי של המכונה ולכן עבור כל זיהוי שכזה נוכל
להבטיח שהאלגוריתם תמיד יעצור וכך המכונה תכריע את השפה .כלומר 𝑅 ∈ 𝑃𝐻𝐵.
אנחנו הצגנו במבוא 3אפשרויות וכעת נראה איך האלגוריתם בהוכחה נותנת עבורם מענה:
● כאשר 𝑀 נכנסת לתא האסור (בין אם עוצרת או לא) -אז נדחה בשלב ( )aבאלגוריתם.
● כאשר 𝑀 עוצרת על 𝑥 מבלי להיכנס לתא האסור -אז נקבל בשלב ( )bבאלגוריתם.
● כאשר 𝑀 נכנסת ללולאה אינסופית בתוך התאים המותרים -אז נדחה בשלב ( )3באלגוריתם.
שאלה לתרגול
נתונה השפה }𝑙𝑙𝑒𝑐 .𝐿 = {< 𝑀 > | 𝑤ℎ𝑒𝑛 𝑟𝑢𝑛𝑛𝑖𝑛𝑔 𝑜𝑛 𝑡ℎ𝑒 𝑖𝑛𝑝𝑢𝑡 ε, 𝑀 𝑑𝑜𝑒𝑠𝑛'𝑡 𝑒𝑛𝑡𝑒𝑟 𝑡ℎ𝑒 10'𝑡ℎ
הוכיחו כי 𝑅 ∈ 𝐿.
2
|𝑥| 2
|.𝑇 = |Γ הוכחה :נוכיח כי 𝑅 ∈ 𝐿 .החסם הכללי 𝑇 לכמות הקונפיגורציות השונות× |𝑄| × |𝑥| :
נתאר מכונה מכריעה:
𝑈 על קלט > 𝑀 < תבצע:
.1תסמלץ את 𝑀 על εלמשך 𝑇 + 1צעדים.
.2בכל צעד:
.aאם 𝑀 נכנסה לתא - 10דחה.
דור עזריה
|| 77חישוביות
הערה לפתרון :התרגיל הזה בוחן את הערנות שלנו .נשים לב שלשפה הנתונה 𝐿 אין התייחסות בכלל לעצירה,
החסם היחידי הוא בנפח ,כלומר בהגבלת השימוש של התאים של הסרט .לכן ,אנחנו נקבל בין אם 𝑀 עצרה בין
התאים 1-9או בין אם לא עצרה .למה עדיין היה חשוב לנו להתייחס לעניין ה ?𝑇 + 1-כי אנחנו רוצים להוכיח
שקיים מכונה שמכריעה את השפה ,כדי שהמכונה תכריעה היא חייבת לזהות כל תרחיש אפשרי עבורה למשל
מתי היא עוצרת או לא וכו'...
דור עזריה
|| 78חישוביות
דוגמה פרקטית לשימוש במ"ט אי-דטרמיניסטית :נביט לדוגמה על מכונה א"ד למציאת מעגל בגרף.
● בהינתן גרף מכוון ,מעגל הוא מסלול לא-ריק אשר מתחיל ומסתיים באותו צומת.
● אלגוריתם 𝑁 לא-דטרמיניסטי לדוגמה ,יקבל כקלט את הגרף 𝐺" ,ינחש" צומת מוצא 𝑠𝑞 ,ובכל צעד
"ינחש" את הצומת הבא במעגל .אם המכונה חזרה לצומת ממנו התחילה ,היא מסיימת במצב מקבל.
● אם קיים מעגל ,הרי שמכונה שתנחש צומת שנמצא על המעגל ,ובכל צעד תנחש את הצומת הבא
במסלול המעגלי ,תגיע בסופו של דבר אל צומת המוצא 𝑠𝑞 ,ותסיים במצב מקבל.
● לכן קלט 𝐺 כנ"ל מוגדר כקלט שהתקבל על ידי המכונה ,כלומר ,יש בו מעגל (יש לשים לב ,ששאר
הניחושים חסרי משמעות ,מכיוון שנדרש שיהיה קיים חישוב אחד שיסיים במצב מקבל).
● מצד שני ,אם אין בגרף הקלט 𝐺 מעגל ,אף ניחוש לא יכול להחזיר אותנו אל צומת המוצא 𝑠𝑞 .כלומר כל
החישובים לא יסתיימו במצב מקבל ,והגרף מוגדר כקלט שנדחה על ידי המכונה ,כלומר שאין בו מעגל.
מכונות לא דטרמיניסטיות
למדנו בקורס "אוטומטים" על מודלים לא דטרמיניסטים:
● אוטומט סופי לא דטרמיניסטי )𝐴𝐹𝑁( שקול בכוחו לאוטומט סופי דטרמיניסטי )𝐴𝐹𝐷(.
● אוטומט מחסנית לא דטרמיניסטי חזק יותר מאוטומט מחסנית דטרמיניסטי.
דור עזריה
|| 79חישוביות
הערות:
● הקבוצה 𝐹\𝑄 = '𝑄 כלומר היא קבוצת מצבים לא סופיים.
● קלט :מצב לא סופי '𝑄 ∈ 𝑞 ואות σ ∈ Γ
● פלט :ומחזירה לנו שלשה של מצב 𝑄 ∈ 𝑝 ,אות β ∈ Γותזוזה }𝑅 𝑑 ∈ {𝐿, 𝑆,כלומר )𝑑 .(𝑝, β,אבל
עבור אותו הקלט היא יכולה להחזיר כמה שלשות שונות (לפי ניחוש בבחירה שרירותית).
● לפי ההגדרה הפורמלית ,אפשרית גם קבוצה ריקה של צעדים אפשריים ,אבל אנחנו נניח שתמיד יש
לפחות צעד אפשרי אחד.
⋆
{
𝑥 𝑠𝑡𝑝𝑒𝑐𝑐𝑎 𝑁 | 𝐿(𝑁) = 𝑥 ∈ Σ }
● במכונה דטרמיניסטית ,אמרנו שכל הרצה של המכונה על קלט מסוים היא בעצם סדרה של
קונפיגורציות עוקבות ,כלומר -מסלול חישוב.
● בדומה ,במכונה אי-דטרמיניסטית ,כל הרצה של מכונה על קלט מסוים נותנת עץ חישוב .כאשר
ההרצה הספציפית היא בחירה שרירותית של מסלול יחיד בעץ החישוב.
● העץ המתקבל במ"ט א"ד הוא עץ בינארי (לא בהכרח מלא).
תזכורת חשובה -הכוח של מודלים לא דטרמיניסטים נובע מן ההגדרה שמילה מתקבלת אם יש לה מסלול
חישוב מקבל אחד לפחות (מסלול חישוב שמסתיים במצב המקבל) .זה תקף גם אם מסלולי חישוב רבים לא
מסתיימים במצב מקבל( .ייתכן אינסוף מסלולי חישוב כאלה).
דור עזריה
|| 80חישוביות
חישוב של מ"ט דטרמיניסטית :אפשר להסתכל על חישוב של מ"ט לא דטרמיניסטית :אפשר להסתכל
החישוב כעל מסלול במרחב הקונפיגורציות: על החישוב כעל עץ במרחב הקונפיגורציות:
.1מתחילים בקונפיגורציה ההתחלתית. .1מתחילים בקונפיגורציה ההתחלתית.
.2לכל קונפיגורציה יש קונפיגורציה עוקבת אחת .2לכל קונפיגורציה יכולות להיות כמה
לכל היותר. קונפיגורציה עוקבות.
דוגמה 1
הגדרה :מעגל המילטוני הוא מסלול בגרף העובר בכל צומת פעם אחת פרט לצומת שממנו יצא.
תרגיל :בנו מ"ט א"ד המקבלת כל גרף המכיל מעגל המילטון והוכיחו נכונות.
אינטואיציה :אנחנו רוצים מ"ט שמקבלת קידוד של גרף .אם יהיה בגרף הזה מעגל המילטוני אז נדע לזהות
ולקבל ואם אין אז נדחה בכל המסלולים.
● אם בגרף יש מסלול המילטון ,אז לכל פרמוטציה מתוך !𝑛 אם יש סידור כלשהו שיהווה מעגל המילטוני,
אז נכנס למסלול הזה ,נראה שכל הצלעות קיימות לפי ההגדרה של המעגל ונעבור למצב מקבל.
● מצד שני ,אם אין מסלול המילטוני אז כל פרמוטציה לא תהווה לנו מעגל המילטוני בגרף ולכן נדחה לכל
מסלול.
● בתרגילים כאלה ,כשנרצה קיימות של תכונה בגרף ,אז ננחש סידור כלשהו של הגרף מתוך כל ה|𝑉|!-
פרמוטציות ואז נבדוק אם הסידור הזה עונה על הדרישות של התכונה.
דור עזריה
|| 81חישוביות
הערה :הרעיון באי-דטרמיניזם זה לא לעבור על כל הפרמוטציות עד שנתפוס אחד שתקבל בשפה אלא אנחנו
ננחש שרירותית רק פרמוטציה אחת בלבד (לא רצים במקביל על כמה פרמוטציות) ,והפרמוטציה הזאת תקבע
לנו לפי הניחוש אם קיים מעגל או לא .כלומר ,בשלב ( )1באלגוריתם שהצגנו אנחנו מנחשים ניחוש אחד בלבד!
דוגמה 2
⋆
כדוגמה פשוטה ,נסתכל על השפה.𝐿 = {𝑤 ∈ {0, 1} | 𝑤 𝑠𝑡𝑎𝑟𝑡𝑠 𝑎𝑛𝑑 𝑒𝑛𝑑𝑠 𝑖𝑛 𝑡ℎ𝑒 𝑠𝑎𝑚𝑒 𝑏𝑖𝑡} :
במודל הדטרמיניסטי ,המילים 𝐿 ∈ 1001וגם 𝐿 ∉ .1000כנ"ל במודל האי-דטרמיניסטי.
אבל ,כדי לגלות כי 𝐿 ∉ ,1000נצטרך לנסות את כל מסלולי החישוב האפשריים של המכונה ,ורק כשכולם
דוחים אז נוכל לדעת כי 𝐿 ∉ .1000
הערות:
2
.1מודל שקול למ"ט א"ד הוא אי-דטרמיניזם מוגבל.δ: 𝑄' × Γ → (𝑄 × Γ × {𝐿, 𝑆, 𝑅}) :
.2נוח לחשוב על עץ ההרצות הזה בתור עץ בינארי.
.3שימו לב ,שכאשר מריצים מכונה בהרצה בודדת ,המכונה רצה על מסלול חישוב יחיד המוגדר לפי
הבחירות שלה בכל הצמתים .היא לא רצה במקביל בכל העץ!.
דור עזריה
|| 82חישוביות
אם )𝑁(𝐿 ∉ 𝑥 אז כל מסלול לא מקבל אם )𝑁(𝐿 ∈ 𝑥 אז קיים מסלול מקבל בעץ
אם )𝑁(𝐿 ∉ 𝑥 אז כל מסלול דוחה אם )𝑁(𝐿 ∈ 𝑥 אז קיים מסלול מקבל בעץ
דור עזריה
|| 83חישוביות
משפט שקילות
משפט :מכונת טיורינג לא דטרמיניסטית שקולה בכוח החישוב שלה למכונה דטרמיניסטית.
הוכחה:
● כיוון א' :פשוט -מכונה דטרמיניסטית 𝐷 היא מקרה פרטי של
מכונה לא דטרמיניסטית 𝑁( .כל האפשרויות הנוספות -
זהות לאפשרות המקורית).
● כיוון ב' :נסביר כיצד אפשר לבנות ,לכל מכונה לא
דטרמיניסטית 𝑁 ,מכונה דטרמיניסטית 𝐷 שתהיה שקולה ל-
𝑁 .כלומר 𝐷 תבצע סימולציה ותעקוב אחרי כל מסלולי החישוב של המכונה 𝑁.
הרעיון של כיוון ב':
○ 𝐷 תנסה את כל ענפי החישוב של 𝑁 על מילת הקלט 𝑤.
○ אם נמצא מסלול חישוב שמסתיים במצב המקבל (של 𝑁) אז 𝐷 תקבל (מצב מקבל שלה).
○ אם כל מסלולי החישוב של 𝑁 מסתיימים במצב הדוחה (של 𝑁) אז 𝐷 תדחה (מצב דוחה שלה).
○ אם יש ל 𝑁-מסלולי חישוב לא עוצרים (אינסופיים) ואין לה מסלול חישוב מקבל 𝐷 -לא תעצור.
● בהמשך הפרק נציג את השלבים כיצד להוכיח את כיוון ב'.
דור עזריה
|| 84חישוביות
תרגיל :הסבירו למה המכונה הדטרמיניסטית 𝐷 לא תנסה לבצע חיפוש לעומק בעץ הקונפיגורציות?
פתרון :מיד נראה שחיפוש לרוחב 𝑆𝐹𝐵 בעץ
הזה כן יהיה טוב .באופן אינטואיטיבי ,אם
נסתכל על הציור משמאל עבור 𝑆𝐹𝐵 ,אפשר
לשער שצריך לעבור על כל קונפיגורציה
אפשרית בכל רמה ולהחליט מי מביניהם יכול
להתאים.
המכונה הדטרמיניסטית
למכונה 𝐷 יהיו שלושה סרטים.
.1סרט הקלט -שעליו רשומה מילת הקלט .זהו סרט לקריאה בלבד (לא משנים בו דבר).
.2סרט הסימולציה -לחיקוי מסלול חישוב חלקי של 𝑁 .נעדכן בו את הקונפיגורציות.
.3סרט הכתובות -שיציין את מסלול הבחירות הלא דטרמיניסטיות של החישוב החלקי הנוכחי.
סרט הכתובות
לכל צומת פנימית 𝑖𝑐 (לכל קונפיגורציה) בעץ החישוב יש לכל
⋆
היותר 2בנים ,לכן מילה } 𝑤 ∈ {0, 1יכולה לציין מסלול
חישוב חלקי מהשורש עד הצומת 𝑖𝑐 בעץ .לכן ,המילה 𝑤 היא
הכתובת של הצומת בעץ .לדוגמה בציור משמאל המחרוזת
𝑤 = 011תביא אותנו מהשורש אל צומת פנימית.
דור עזריה
|| 85חישוביות
כתובות לא חוקיות :מאחר ולקונפיגורציה ההתחלתית 𝑐0יש רק שתי קונפיגורציות עוקבות (כי לשורש העץ יש
שני בנים) ,אז כל כתובת שמתחילה ב 2-ומעלה איננה חוקית .כלומר אם אמרנו שהמחרוזות מורכבות מ-
⋆
} 𝑤 ∈ {0, 1אז לא יכול להיות לנו מחרוזת למשל מהצורה .𝑤 = 0112230110
פתרון :המכונה 𝐷 תתייחס לכתובת לא חוקית כאל ענף חישוב שהסתיים בדחייה.
הסימולציה של D
תזכורת :אנחנו צריכים להוכיח את כיוון ב' -לכל מכונה לא דטרמיניסטית 𝑁 נבנה מכונה דטרמיניסטית 𝐷
ששקולה ל.𝑁-
אתחול :בתחילת הריצה של 𝐷.
.1מילת הקלט רשומה על סרט 1שהוא סרט הקלט.
.2סרט הסימולציה (סרט )2וסרט הכתובות (סרט )3ריקים (יש ‾𝑏 בכל התאים בסרטים האלה).
שלב בסימולציה:
.1מעתיקים את תוכן סרט ( 1הקלט) לסרט .2
.2מבצעים את הצעדים של 𝑁 על סרט 2לפי הבחירות הלא דטרמיניסטיות הרשומות בסרט ( 3לפי
הכתובות)( .כלומר מעדכנים את הקונפיגורציות לרוחב על סרט .)2
.3אם 𝑁 הגיעה למצב המקבל שלה ,מקבלים .כלומר 𝐷 נכנסת למצב המקבל שלה ,והחישוב מסתיים.
.4אחרת ,עוברים לבצע סימולציה של ענף החישוב הבא.
הסברים:
● מה פירוש "אחרת"? מה יכול לקרות?:
○ יכול לקרות ש 𝐷-סיימה לבצע את הצעדים שהיו רשומים בכתובות ולא הגיעה למצב עצירה.
○ ייתכן כי 𝑁 נכנסה למצב הדוחה שלה באיזשהו צעד בענף החישוב הנוכחי.
ייתכן שהכתובת בסרט השלישי לא חוקית (למשל מכילה ' '3אבל המחרוזת צריכה להיות בינארית). ○
● איך עוברים לענף החישוב הבא?:
○ מוחקים את תוכן סרט הסימולציה.
○ עוברים לכתובת הבאה בסרט הכתובות.
○ מתחילים את הסימולציה של ענף החישוב הבא.
דור עזריה
|| 86חישוביות
מסקנה מן השקילות
.1כדי להוכיח ש 𝐿 ∈ 𝑅𝐸 :אפשר לתאר מכונה לא דטרמיניסטית שמקבלת את 𝐿.
משום שלכל מכונה כזו אפשר לבנות מכונה דטרמיניסטית שתקבל את 𝐿.
.2כדי להוכיח ש 𝐿 ∈ 𝑅 :אפשר לתאר מכונה לא דטרמיניסטית שמכריעה את 𝐿.
עץ החישוב במקרה זה יהיה סופי לכל קלט.
דור עזריה
|| 87חישוביות
הוכחה :נרצה להוכיח כי 𝐸𝑅 ∈ 𝐿 ולכן נבנה מכונת טיורינג לא דטרמיניסטית 𝑁 המקבלת את 𝐿:
המכונה 𝑁 על הקלט > 𝑀 < תבצע:
⋆
.1נחש מילה }𝑥 ∈ {0, 1
.2סמלץ את 𝑀 על 𝑥:
.aאם 𝑥 = )𝑥(𝑀𝑓 אז קבל.
.bאם 𝑥 ≠ )𝑥(𝑀𝑓 אז דחה.
נוכיח את נכונות המכונה 𝑁 ,כלומר נוכיח כי 𝐿 = )𝑁(𝐿:
⋆
● אם 𝐿 ∈> 𝑀 < ← אז קיים (לפי ניחוש שרירותי) מילה } 𝑥 ∈ {0, 1כך ש ← .𝑓𝑀(𝑥) = 𝑥 :בעץ
החישוב בהפעלת המכונה 𝑁 על הקלט > 𝑀 < קיים מסלול שבו הניחוש של 𝑁 הוא בדיוק 𝑥 ←
המסלול המדובר הוא מסלול מקבל ← )𝑁(𝐿 ∈> 𝑀 <.
⋆
● אם 𝐿 ∉> 𝑀 < ← אז לכל } 𝑥 ∈ {0, 1מתקיים 𝑥 ≠ )𝑥(𝑀𝑓 ← בעץ החישוב בהפעלת המכונה 𝑁
⋆
על הקלט > 𝑀 < לכל } 𝑥 ∈ {0, 1לא קיים מסלול שבו הניחוש של 𝑁 הוא בדיוק 𝑥 ← כל
המסלולים של 𝑁 הם דוחים או אינסופיים ← )𝑁(𝐿 ∉> 𝑀 <.
∎
הערה חשובה
● פונקציית הרדוקציה היא תמיד דטרמיניסטית!
● יכול להיות שבפונקצית הרדוקציה תהיה מכונה א"ד אבל הפונקציה עצמה היא דטרמיניסטית.
● תוצאת פונקצית הרדוקציה יכולה להיות קידוד של מ"ט א"ד.
דור עזריה
|| 88חישוביות
צמתים -כלומר צמתים סופיים ונרצה שמכל הארבעה אלו ימשיך מסלול המקבל את 𝑥 על 𝑀.
● תיאור הרדוקציה :נראה ברדוקציה .𝐿𝑢 ≤ 𝐿4
○ פונקצית הרדוקציה היא𝑓(< 𝑀, 𝑥 >) =< 𝑀', 𝑦 >, :
○ המכונה '𝑀 על הקלט 𝑦:
■ תנחש 0או 1
■ תנחש 0או 1
■ סמלץ את 𝑀 על 𝑥 וענה כמותו.
● הוכחת נכונות פונקציית הרדוקציה:
○ הפונקציה מלאה :לכל 𝑥 𝑀,ניתן ליצור 𝑦 .𝑀',
○ הפונקציה ניתנת לחישוב :לכל מ"ט קיים קידוד במיוצג כמחרוזת.
○ הפונקציה פתירה:
■ 𝑢𝐿 ∈> 𝑥 ← 𝑥 ∈ 𝐿(𝑀) ← < 𝑀,קיים לפחות מסלול אחד מקבל בחישוב 𝑀 על𝑥
← קיימים 4מסלולים מקבלים ← .< 𝑀', 𝑥 >∈ 𝐿4
■ 𝑢𝐿 ∉> 𝑥 ← 𝑥 ∉ 𝐿(𝑀) ← < 𝑀,כל מסלול בחישוב 𝑀 על𝑥 או דוחה או אינסופי
← קיימים 4מסלולים דוחים או אינסופיים ← .< 𝑀', 𝑥 >∉ 𝐿4
● לסיכום :הראנו רדוקציה 𝑢𝐿 מעל 𝐿4והוכחנו ש.𝐿4 = 𝐿(𝑀') :
דור עזריה
|| 89חישוביות
)𝑀(𝐿 (השפה ההופכית של שפת המכונה 𝑀 ,שווה לשפת המכונה ההופכית). סעיף א' :הוכיחו או הפריכו= 𝐿(𝑀𝑖𝑛𝑣𝑒𝑟𝑠𝑒) :
סעיף ב' :האם קיימת מכונה 𝑀 ,כך שמתקיים ?𝐿(𝑀) = 𝐿(𝑀𝑖𝑛𝑣𝑒𝑟𝑠𝑒) :אם כן ,תנו דוגמא ,אם לא ,הוכיחו.
○ מכאן ש 𝐿(𝑀) ≠ 𝐿(𝑀𝑖𝑛𝑣𝑒𝑟𝑠𝑒) :כי הראנו ש 𝑥 ∈ 𝐿(𝑀) :וגם ש.𝑥 ∈ 𝐿(𝑀𝑖𝑛𝑣𝑒𝑟𝑠𝑒) :
● שאלת צד :מתי זה נכון? -כאשר כל המצבים סופיים וזהים (כולם מקבלים או כולם דוחים).
דור עזריה
|| 90חישוביות
דור עזריה
|| 91חישוביות
הוכחת נכונות:
● 𝑃𝐻 ∈ )𝑥 𝑀 ← (< 𝑀 >,עוצרת על 𝑥 ← נניח ש 𝑀 :עוצרת על 𝑥 לאחר 𝑡 צעדים ← לכל ניחוש של
𝑛 כך ש ,𝑛 ≥ 𝑡 :המכונה 𝑁 תעצור ותקבל ← .קיים מסלול חישוב שבו 𝑁 תקבל ←
)𝑁(𝐿 ∈ )𝑥 .(< 𝑀 >,
● 𝑃𝐻 ∉ )𝑥 𝑀 ← (< 𝑀 >,לא עוצרת על 𝑥 ← 𝑀 לא עוצרת על 𝑥 לכל ניחוש 𝑛 ← לא קיים אף
מסלול חישוב שבו 𝑁 תקבל ← )𝑁(𝐿 ∉ )𝑥 .(< 𝑀 >,
∎
הסבר :למה זה ב .?𝑅-בפרק של 𝑃𝐻𝐵 הראנו שפות שאם יש להם חסם אז אפשר להכריע אם הקלט עקף את
𝑐
החסם או לא וככה להכריע .מאחר ויש מספר סופי של מחרוזות בינאריות באורך 𝑐 ,כלומר 2מחרוזות האלה,
אז זו שפה סופית ← רגולרית ← שייכת ל.𝑅-
נקודה חשובה :אם היה בשפה orבמקום andאז זה היא לא הייתה סופית ובכלל לא ב.𝑅- -
דור עזריה
|| 92חישוביות
שיעורי בית :הוכיחו שהשפה לא ב( .R-ברדוקציות -אפשר מ HP-או מקור אחר).
דור עזריה
|| 93חישוביות
פתרון:
● אינטואיציה :השפה ב .𝑅𝐸-נוכיח באינדוקציה ש 𝐿 ∉ 𝑅:ונשתמש בשפה 𝑅 ∉ 𝑃𝐻 .בתיאור הרדוקציה
נפעיל את 𝑀 על 𝑥 ,אם הוא עצר (לפי 𝑃𝐻) אז הגענו במסלול החישוב שלנו לצומת שבה צריך לקבוע
מה הצעד הבא של האלגוריתם -האם נקבל או נדחה? .לכן ,מאחר ש 𝑁-א"ד אז נגריל/ננחש את הענף
הבא במסלול החישוב שיקבע אם נקבל או נדחה ( == 0דוחה || == 1מקבל).
● תיאור הרדוקציה :נראה רדוקציה 𝐿 ≤ 𝑃𝐻.
○ פונקציית הרדוקציה.𝑓(< 𝑀, 𝑥 >) =< 𝑁, 𝑦 > :
○ 𝑁 על קלט 𝑦 תפעל:
■ תסמלץ את 𝑀 על 𝑥.
■ מגרילה ביט 𝑏.
■ אם 𝑏 = 0אז 𝑁 דוחה.
■ אם 𝑏 = 1אז 𝑁 מקבלת.
● הוכחת נכונות הפונקציה:
○ הפונקציה מלאה :לכל 𝑥 𝑀,ניתן ליצור 𝑦 .𝑁,
○ הפונקציה ניתנת לחישוב :לכל מ"ט קיים קידוד.
○ הפונקציה פתירה:
■ 𝑃𝐻 ∈> 𝑥 𝑀 ← < 𝑀,עוצרת על 𝑥 ← 𝑁 יכולה לקבל או לדחות ← יש ל 𝑁-מסלול
חישוב מקבל ומסלול חישוב דוחה ← במ"ט א"ד מספיק מסלול מקבל אחד בשביל
לקבל את המילה ← )𝑁(𝐿 ∈> 𝑥 .< 𝑁,
■ 𝑃𝐻 ∉> 𝑥 𝑀 ← < 𝑀,לא עוצרת ← אין ל 𝑁-מסלול חישוב מקבל ←
)𝑁(𝐿 ∉> 𝑥 .< 𝑁,
● סיכום :מאחר ו 𝐻𝑃 ∉ 𝑅-והראנו ברדוקציה 𝐿 ≤ 𝑃𝐻 אזי גם 𝑅 ∉ 𝐿.
∎
דור עזריה
|| 94חישוביות
תרגילים -חישוביות
תרגיל :1כתבו מכונת טיורינג המחשבת את הפונקציה 𝑥.𝑓(𝑥) = 2
𝑖
הערה 𝑥 :הוא מחרוזת בינארית של מספר חיובי .תזכורת :הכפלה בינארית ב 2 -דורש הזזת 𝑖 צעדים שמאלה.
תרגיל :2מודל מכונת טיורינג בגיל העמידה הוא מודל זהה למודל הרגיל של מ"ט לחישוב פונקציות פרט
לשינויים הבאים:
.1למכונה אין מצבים סופיים ,ולכן המכונה לעולם לא עוצרת.
.2נגיד שמכונה נעמדת בצעד החישוב ה 𝑡-אם מצעד חישוב זה והלאה המכונה מבצעת אך ורק תזוזה
𝑦𝑎𝑡𝑆 (ולעולם לא תבצע יותר תזוזות 𝑡𝑓𝑒𝐿 או 𝑡.)𝑅𝑖𝑔ℎ
.3עבור קלט 𝑥 הפלט של המכונה הוא המילה 𝑦 שנמצאת משמאל לראש כאשר המכונה נעמדת.
הוכיחו/הפריכו :מודל גיל העמידה שקול למודל הרגיל.
𝑅
תרגיל :3כתבו מכונת טיורינג שמחשבת את הפונקציה.𝑓(𝑤) = 𝑤 :
תרגיל :6קבעו עבור השפות הבאות האם שייכות ל .(𝑅, 𝑐𝑜𝑅𝐸, 𝑅𝐸) -הוכיחו.
}𝑥 𝑛𝑜 𝑠𝑡𝑙𝑎𝐿1 = {𝑀 | ∃𝑥 𝑠. 𝑡. 𝑀 ℎ
}𝐿2 = {𝑀 | |𝐿(𝑀)| ≤ 3
(שאלה אונ' תל אביב מטלה .)2008a ,3
דור עזריה
|| 95חישוביות
|
ב.𝐿3 = {< 𝑀1 >< 𝑀2 > : 𝐿(𝑀1) ∩ 𝐿(𝑀2) = ∞} . |
תרגיל :9שאלת מבחן -מועד א' ,קיץ 2020
הוכיחו או הפריכו את הטענות הבאות:
⋆
א .אם 𝑅 ∈ 𝐿 וגם 𝐿 ≠ φ, Σאז ‾𝐿 ≤ 𝐿.
ב .אם 𝑅 ∉ 𝐿 וגם ‾𝐿 ≤ 𝐿 אז 𝐸𝑅𝑜𝑐 ∪ 𝐸𝑅 ∈ 𝐿.
תרגיל :10קבעו עבור השפות הבאות האם שייכות ל .(𝑅, 𝑐𝑜𝑅𝐸, 𝑅𝐸) -הוכיחו.
}𝑠𝑒𝑚𝑖𝑡 𝐿1 = {< 𝑀 > | 𝑤ℎ𝑒𝑛 𝑀 𝑟𝑢𝑛𝑛𝑖𝑛𝑔 ε, 𝑡ℎ𝑒 ℎ𝑒𝑎𝑑 𝑚𝑜𝑣𝑒𝑠 𝑙𝑒𝑓𝑡 𝑎𝑡 𝑚𝑜𝑠𝑡 2022
}𝑡𝑓𝑒𝑙 𝑤𝑜𝑟 𝑎 𝑛𝑖 𝑠𝑒𝑚𝑖𝑡 𝑒𝑒𝑟𝐿2 = {< 𝑀 > | 𝑤ℎ𝑒𝑛 𝑀 𝑟𝑢𝑛𝑛𝑖𝑛𝑔 ε, 𝑡ℎ𝑒 ℎ𝑒𝑎𝑑 𝑛𝑒𝑣𝑒𝑟 𝑚𝑜𝑣𝑒𝑠 𝑡ℎ
(שאלה אונ' תל אביב מטלה .)2014b ,5
תרגיל :12עבור השפה הבאה ענו האם היא ב 𝑅-והאם היא ב.𝑅𝐸-
}𝑠𝑡𝑢𝑝𝑛𝑖 𝑙𝑙𝑎 𝑛𝑜 𝑠𝑡𝑙𝑎𝐿 = {< 𝑀 > |𝑀 ℎ
(מטלה - 2אריאל תש"ף).
תרגיל :14תהיינה 𝐿1, 𝐿2שפות כך ש 𝐿1 ∈ 𝑅𝐸 :וגם 𝐸𝑅𝑜𝑐 ∈ 𝐿2בנוסף נתון כי .𝐿1 ≤ 𝐿2
עבור כל אחת מהטענות הבאות הוכיחו האם היא תמיד נכונה ,תמיד לא נכונה או שקיימות שפות המקיימות את
התנאים עבורן הטענה נכונה ,וקיימות שפות המקיימות את התנאים עבורן הטענה לא נכונה.
𝐿1 .1היא 𝐸𝑅 משלימה.
.𝐿2 ∈ 𝑅 .2כלומר 𝐿2כריעה.
דור עזריה
|| 96חישוביות
}.{< 𝑀 > | |𝐿(𝑀)| ≥ 3 ≤ תרגיל :15הראו ש{< 𝑀 > | |𝐿(𝑀)| ≥ 6} :
(מבחן אריאל תשע"ח קיץ מועד א' שאלה 2ג').
דור עזריה
|| 97חישוביות
מבוא לסיבוכיות
מבוא
חישוביות :בחלק הקודם ,התעסקנו בשאלה "מה בכלל אפשר לחשב בעזרת מכונות?".
● איזה פונקציות ניתנות לחישוב ואיזה לא?
● איזה שפות ניתנות להכרעה (לזיהוי) ואיזה לא?
סיבוכיות :בחלק זה ,נעסוק:
● בפונקציות הניתנות לחישוב ובשפות הכריעות.
● בשאלה של כמויות המשאבים הדרושות לחישובים (משאבי זמן וזיכרון הדרושים).
סיבוכיות זמן
בסיבוכיות זמן נשאל מהו הזמן הדרוש למימוש כל אלגוריתם.
המודל החישובי שאיתו נמדוד את סיבוכיות הזמן הוא מכונת טיורינג והסיבות לכך הן:
.1סיבוכיות הזמן נמדדת כפונקציה של גודל הקלט ובמכונת טיורינג גודל הקלט מוגדר היטב (מספר
התאים בסרט).
.2זמן הריצה יוגדר כמספר הצעדים שמבצעת המכונה במהלך ריצתה (צעד החישוב במ"ט מוגדר היטב).
לדוגמה :בדוגמה הקודמת אפשר להגיד שמספר צעדי הריצה של 𝑀 על 𝑤 הוא לכל היותר
2 2
) 𝑛(𝑂 = ) )𝑛(𝑡 (𝑂 .כי אמנם גודל הקלט הוא 𝑛 אבל נדרש מהמכונה 𝑀1לכל היותר 𝑛 צעדי ריצה.
דור עזריה
|| 98חישוביות
2
מסקנה 𝐿1 ∈ 𝐷𝑇𝐼𝑀𝐸(𝑛 · log(𝑛)) :וגם ) 𝑛(𝐸𝑀𝐼𝑇𝐷 ∈ .𝐿1
2
תרגיל :האם כל שפה ששייכת ל 𝐷𝑇𝐼𝑀𝐸(𝑛 · log(𝑛))-שייכת גם ל.?𝐷𝑇𝐼𝑀𝐸(𝑛 )-
2
תשובה :כן ,אפשר לייצר צעדים מיותרים ב 𝑛 · log(𝑛)-כדי להפוך אותו ל.𝑛 -
דור עזריה
|| 99חישוביות
משפטים
משפט :1אם ))𝑛( 𝑡1(𝑛) = 𝑂(𝑡2אז ))𝑛(.𝐷𝑇𝐼𝑀𝐸(𝑡1(𝑛)) ⊆ 𝐷𝑇𝐼𝑀𝐸(𝑡2
חסמים אסימפטוטיים:
● 𝑂 -חסום מלמעלה .למשל )𝑛 𝑛 = 𝑂(𝑛 logאז נאמר ש 𝑛 " :חסום ב."𝑛 log 𝑛-
● - Ωחסום מלמטה.
,כלומר אפשר לחסום גם מלמעלה וגם מלמטה. - Θחסום הדוק .למשל ) 𝑛(( ) = Θ
𝑛
𝑘
𝑘
●
2 2 2
● 𝑜 -קטן ממש .למשל ) 𝑛(𝑜 = )𝑛( 𝑡1אז נאמר ש 𝑡1" :קטן ממש מ "𝑛 -ונסמן 𝑛 ≪ .𝑡1
2 2 2
● - ωגדול ממש .למשל ) 𝑛( 𝑡1(𝑛) = ωאז נאמר ש 𝑡1" :גדול ממש מ "𝑛 -ונסמן 𝑛 ≫ 𝑡1
𝑚 𝑚
שאלה :האם אפשר להכריע את } 𝐿1 = {𝑎 𝑏 |𝑚 ≥ 0עוד יותר מהר? בזמן )𝑛 ?𝑜(𝑛 log
תשובה :לא במכונה עם סרט אחד! .
משפט :2שפה שניתנת להכרעה בזמן ))𝑛( 𝑂(𝑛 · logבמכונה עם סרט אחד היא בהכרח רגולרית.
דור עזריה
|| 100חישוביות
מודלים לא דטרמיניסטיים
הראינו שזמן הריצה לא שונה באופן מהותי במודלים דטרמיניסטיים שונים.
מצד שני ,בחירת מודלים אי-דטרמיניסטיים היא בחירה קריטית שיכולה להשפיע רבות על זמן הריצה.
תחילה עלינו להגדיר מהו זמן הריצה במקרה זה - .נדבר רק על מכונות מכריעות:
.1כל ענפי החישוב מסתיימים בעצירה (במצב המקבל או הדוחה).
.2נסתכל על זמן החישוב הארוך ביותר.
דור עזריה
|| 101חישוביות
תזכורת לסימולציה
המכונה הדטרמיניסטית 𝐷 שמסמלצת את המכונה הלא
דטרמיניסטית 𝑁 .המכונה 𝐷 שתיארנו בחישוביות לא
יעילה מבחינת זמן הריצה כי יש בה חזרות על חלקים של
חישובים .אפשר לייעל את פעולתה של 𝐷 ,אך עדיין זמן
הריצה של כל סימולציה אפשרית של מכונה לא
דטרמיניסטית על ידי מכונה דטרמיניסטית הוא לפחות
מעריכי (אקספוננציאלי) בזמן הריצה של המכונה הלא
דטרמיניסטית .כי אם אנחנו סורקים בצורה
דטרמיניסטית את המכונה האי דטרמיניסטית אז אנחנו
בעץ ולכן זו סריקה בזמן אקספוננציאלי.
זמן הריצה של מכונה א"ד מכריעה 𝑁 על מילה 𝑤 מוגדר כמספר הצעדים במסלול החישוב הארוך -
ביותר של 𝑁 על 𝑤 (מקבל או דוחה).
אבחנה חשובה
● יש לכל היותר פער פולימוניאלי בין מכונה
מרובת סרטים למכונה עם סרט אחד.
● יש לכל היותר פער אקספוננציאלי בין מכונה
א"ד למכונה דטרמיניסטית.
● יש הבדל עצום בין הגידול של זמני ריצה
3
פולינומיאליים טיפוסיים כמו 𝑛 לבין הגידול
של זמני ריצה אקספוננציאליים טיפוסיים
𝑛
כמו .2
דור עזריה
|| 102חישוביות
דור עזריה
|| 103חישוביות
דור עזריה
|| 104חישוביות
המחלקות PוNP-
הגדרה :המחלקה P
הגדרה :המחלקה 𝑃 היא מחלקת השפות כך שלכל שפה:
.1יש מכונת טיורינג דטרמיניסטית מכריעה.
.2זמן הריצה של המכונה הוא פולינומיאלי (בגודל הקלט).
𝑘
) 𝑛(𝐸𝑀𝐼𝑇𝐷 𝑃 = ∪𝑘≥0
הסבר 𝐿 ∈ 𝑃 :אם יש אלגוריתם בעל זמן ריצה פולינומיאלי להכרעת השייכות ל.𝐿-
𝑘
כלומר ,קיים אלגוריתם שזמן ריצתו ) 𝑛(𝑂 ל 𝑘-קבוע טבעי כלשהו.
דור עזריה
|| 105חישוביות
קידוד הקלט
זמן הריצה מוגדר כפונקציה של גודל הקלט (מספר הביטים) .לכן ,צריך לבחור קידוד סביר לקלט ולא קידוד
שיגדיל באופן מלאכותי את גודל הקלט( .למרות שמלאכותי זמן הריצה ייראה טוב יותר -זה נקרא "ריפוד").
דוגמה -קידוד של גרף :רשימה של צמתים ורשימה של קשתות ,או מטריצת שכנויות.
.1אפשר לעבור מקידוד מסוים לקידוד אחר בזמן פולינומיאלי ,והגודל של כל קידוד פולינומיאלי בגודל
של הקידוד האחר.
.2אנחנו רגילים לחשב את זמן הריצה כפונקציה של מספר הצמתים .זה לא גודל הקלט ,אבל גודל
2
הקלט פולינומיאלי במספר הזה .למשל גרף הנתון כמטריצת שכנויות :גודל הקלט.𝑂(|𝑉| ) :
הערה חשובה :אלגוריתם על מספרים ייחשב פולינומיאלי אם זמן הריצה שלו פולינומיאלי בכמות הספרות
המייצגות את המספרים (ולא אם הזמן פולינומיאלי במספרים עצמם המיוצגים ע"י הספרות).
.1פולינומיאליות בגודל הקלט.
.2לדוגמה :אם ( 𝑛 = 1000000בייצוג בינארי) ,אז זמן הריצה צריך להיות פולינומיאלי ב.7-
דור עזריה
|| 106חישוביות
נתונה השפה:
}𝑡 𝑜𝑡 𝑠 𝑚𝑜𝑟𝑓 𝑃𝐴𝑇𝐻 = {< 𝐺, 𝑠, 𝑡, > | 𝐺 𝑖𝑠 𝑎 𝑑𝑖𝑟𝑒𝑐𝑡𝑒𝑑 𝑔𝑟𝑎𝑝ℎ 𝑡ℎ𝑎𝑡 ℎ𝑎𝑠 𝑎 𝑑𝑖𝑟𝑒𝑐𝑡𝑒𝑑 𝑝𝑎𝑡ℎ
טענה.𝑃𝐴𝑇𝐻 ∈ 𝑃 :
רעיון ההוכחה :נוכיח את הטענה ע"י הצגת אלגוריתם (מכונה) מכריע לשפה 𝐻𝑇𝐴𝑃 בזמן ריצה פולינומי.
לפני שנתאר את האלגוריתם ,נראה למה אלגוריתם 𝑒𝑐𝑟𝑜𝐹 𝑒𝑡𝑢𝑟𝐵 לא מהיר מספיק עבור הבעיה הזאת.
אלגוריתם 𝑒𝑐𝑟𝑜𝐹 𝑒𝑡𝑢𝑟𝐵 עבור 𝐻𝑇𝐴𝑃 בוחן את כל המסלולים הפוטנציאלים ב 𝐺-וקובע האם אחד מהם יש
מסלול מכוון בין 𝑠 ל .𝑡-מסלול פוטנציאלי הוא סדרה של צמתים ב 𝐺-באורך של לכל היותר 𝑚 = |)𝐺(𝑉|.
𝑚
אבל מספר המסלולים הפוטנציאלים האלה הם לכל היותר 𝑚 ,שזה אקספוננציאלי במספר הצמתים ב.𝐺-
לכן ,אלגוריתם 𝑒𝑐𝑟𝑜𝐹 𝑒𝑡𝑢𝑟𝐵 משתמש בזמן ריצה אקספוננציאלי -לא רלוונטי לפתרון שלנו.
כדי ליצור אלגוריתם (מכונה) מכריע עבור 𝐻𝑇𝐴𝑃 בזמן ריצה פולינומי ,אנחנו חייבים למנוע ממנו להיות
𝑒𝑐𝑟𝑜𝐹 𝑒𝑡𝑢𝑟𝐵 .אחת הדרכים למנוע דבר כזה הוא באמצעות שיטה לחיפוש בגרף בשם 𝑆𝐹𝐵 .כאן ,אנחנו נסמן
את כל הצמתים לאורך המסלול המכוון החל מ .𝑠-ככה אפשר יהיה לחסום את זמן הריצה לפולינומיות.
הוכחה :האלגוריתם 𝑀 על 𝐻𝑇𝐴𝑃 עובד בזמן פולינומי לפי התיאור הבא:
המכונה 𝑀 על הקלט > 𝑡 < 𝐺, 𝑠,מבצעת:
.1סמן את הצומת ההתחלתית 𝑠.
.2חזור על השלבים הבאים עד שלא נותרו צמתים נוספים לסימון:
עבור על כל הצלעות של 𝐺 .אם צומת )𝑏 (𝑎,נמצאה שעוברת מהצומת המסומנת 𝑎 לצומת .3
הלא-מסומנת 𝑏 ,אז סמן גם את 𝑏.
.4אם 𝑡 סומנה ,קבל .אחרת ,דחה.
כעת ננתח את האלגוריתם כדי להראות שהוא רץ בזמן פולינומי .שלבים 1ו 4-פועלים רק פעם אחת .שלב 3רץ
לכל היותר |)𝐺(𝑉| פעמים כי בכל צעד חוץ מהאחרון ,נסמן צומת נוספת .לכן ,מספר הצעדים הוא לכל היותר
,|𝑉(𝐺)| + 1 + 1שזה פולינומיאלי בגודל של 𝐺 .שלב 3מבצע חיפוש בהתאם לקלט ובוחן האם צמתים
מסוימים סומנו ,לכן זה ניתן למימוש בזמן פולינומי.
ומכאן 𝑀 הוא אלגוריתם בזמן פולינומי המכריע את השפה 𝐻𝑇𝐴𝑃 ,כלומר 𝑃 ∈ 𝐻𝑇𝐴𝑃.
דור עזריה
|| 107חישוביות
המחלקה NP
תזכורת -מחלקת השפות לדטרמיניסטי :תהי פונקציה .𝑡: ℕ → ℕנסמן ב 𝐷𝑇𝐼𝑀𝐸(𝑡(𝑛))-את מחלקת
השפות שיש להן מכונת טיורינג דטרמיניסטית מכריעה שזמן הריצה שלה הוא ))𝑛(𝑡(𝑂.
פורמלית.𝐷𝑇𝐼𝑀𝐸(𝑡(𝑛)) = {𝐿 | 𝐿 𝑖𝑠 𝑎 𝑙𝑎𝑛𝑔𝑢𝑎𝑔𝑒, 𝑑𝑒𝑐𝑖𝑑𝑒𝑑 𝑏𝑦 𝑎𝑛 𝑂(𝑡(𝑛)) − 𝑡𝑖𝑚𝑒 𝐷𝑇𝑀} :
הגדרה -מחלקת השפות לא"ד :תהי פונקציה .𝑡: ℕ → ℕנסמן ב 𝑁𝑇𝐼𝑀𝐸(𝑡(𝑛))-את מחלקת השפות שיש
להן מכונת טיורינג לא דטרמיניסטית מכריעה שזמן הריצה שלה הוא ))𝑛(𝑡(𝑂.
פורמלית.𝑁𝑇𝐼𝑀𝐸(𝑡(𝑛)) = {𝐿 | 𝐿 𝑖𝑠 𝑎 𝑙𝑎𝑛𝑔𝑢𝑎𝑔𝑒, 𝑑𝑒𝑐𝑖𝑑𝑒𝑑 𝑏𝑦 𝑎𝑛 𝑂(𝑡(𝑛)) − 𝑡𝑖𝑚𝑒 𝑁𝑇𝑀} :
תזכורת :זמן הריצה של מכונה א"ד מוגדר לפי מסלול החישוב הארוך ביותר על המילה.
𝑘
) 𝑛(𝐸𝑀𝐼𝑇𝑁 𝑁𝑃 = ∪𝑘≥0
דור עזריה
|| 108חישוביות
תעודת שייכות
אמרנו שלכל מילה בשפה יש "תעודת שייכות" שמשכנעת שהמילה שייכת לשפה.
למשל ,באלגוריתם למציאת מעגל המילטון בגרף ,נרצה לנחש את פרמוטציית הסידור הנכונה מתוך כל ה|𝑉|!-
פרמוטציות ,שתגיד לנו "קיים מעגל המילטון בגרף".
● אם המילה בשפה ,אז הסידור שניחשנו הוא "תעודת השייכות" שלנו שמשכנעת ש.< 𝐺 >∈ 𝐿 :
● אם המילה לא בשפה ,אז לא משנה איזה "עד" ניתן ,לא קיימת אף "תעודת שייכות" שתשתכנע אותנו
שאכן קיים מעגל המילטון בגרף ומכאן 𝐿 ∉> 𝐺 < .כלומר לא משנה איזה סידור ננחש ,לעולם לא
קיים מעגל המילטון בגרף.
האם 𝑃 ⊆ 𝑃𝑁?
במילים אחרות -האם אפשר להמיר מ"ט א"ד פולינומית למ"ט דטרמיניסטית פולינומית?.
תשובה :לא ידוע .כשהוכחנו בשיעור הקודם (של מ"ט א"ד) ראינו שניתן לסמלץ מ"ט א"ד ע"י מ"ט
דטרמיניסטית ,התעלמנו מכמות המשאבים הדרושים לכך .לכן ,אם נרצה לסרוק את כל עץ החישוב של
)𝑛(𝑝
- Ω(2וזה המכונה הלא דטרמיניסטית הפולינומית ,נקבל זמן ריצה פרופורציונלי לגודל העץ ,כלומר )
אקספוננציאלי! .השאלה הזו נקראת שאלת ?P=NPזו שאלה פתוחה במדמ"ח שלא הצליחו להוכיח/להפריך.
דור עזריה
|| 109חישוביות
נתונה השפה:
}𝑘 𝑒𝑧𝑖𝑠 𝑓𝑜 𝑡𝑒𝑠 𝑡𝑛𝑒𝑑𝑛𝑒𝑝𝑒𝑑𝑛𝑖 𝑛𝑎 𝑠𝑛𝑖𝑎𝑡𝑛𝑜𝑐 𝑡𝑎.𝐼𝑆 = {< 𝐺, 𝑘 > | 𝐺 𝑖𝑠 𝑎 𝑔𝑟𝑎𝑝ℎ 𝑡ℎ
.2לכל אפשרות כזו ,לבדוק האם היא קבוצה ב"ת (לבדוק שכל זוג צמתים בקבוצה לא מחוברים בצלע).
.3אם מצאנו אפשרות שכזו -קבל.
.4אם עברנו על כל האפשרויות ולא מצאנו -דחה.
תתי קבוצות בגודל 𝑘 ,איזה אחד מהם אנחנו צריכים? -אנחנו צריכים לעבור על כולם ולכן הערה :1יש לנו ) (
𝑛
𝑘
)(
𝑛
𝑘
2בחיפוש שלם. צריך לעבור על
הוכחה פורמלית של טענה :2נתאר מ"ט א"ד פולינומית המכריעה את השפה 𝑆𝐼 .נוכיח ש.𝐼𝑆 ∈ 𝑁𝑃 :
אלגוריתם 𝑁 :על קלט > 𝑘 < 𝐺,תבצע:
.1נחש תת קבוצה 𝑆 של צמתי 𝐺( .בדוק שגודל הקבוצה הינו 𝑘).
.2לכל זוג צמתים מהקבוצה 𝑆 ∈ ,𝑣1, 𝑣2בדוק שאכן )𝐺(𝐸 ∉ }.{𝑣1, 𝑣2
.aאם לאחת הצלעות גילינו ש - {𝑣1, 𝑣2} ∈ 𝐸(𝐺) :אז דחה.
.3אם עברנו על כל הזוגות ולא דחינו -אז קבל.
נכונות האלגוריתם:
● אם 𝑆𝐼 ∈> 𝑘 < 𝐺,אזי קיימת תת-קבוצה 𝑉 ⊆ 𝑆 בגודל 𝑘 שהיא ב"ת ← .קיים מסלול חישוב שבו
המכונה 𝑁 מנחשת בדיוק את הקבוצה 𝑆 ← במסלול זה ,הבדיקה של 𝑁 על הקבוצה 𝑆 יוצאת תקינה
ולכן 𝑁 מקבלת ← .קיים מסלול מקבל < 𝐺, 𝑘 >∈ 𝐿(𝑁) ← .כנדרש.
דור עזריה
|| 110חישוביות
● אם 𝑆𝐼 ∉> 𝑘 < 𝐺,אזי לכל תת-קבוצה 𝑉 ⊆ 𝑆 בגודל 𝑘 שהיא תלויה ← .לכל ניחוש של קבוצה 𝑆,
המכונה 𝑁 תזהה שקיימת צלע ב 𝑆-ותדחה ← כל המסלולים דוחים ← )𝑁(𝐿 ∉> 𝑘 < 𝐺,כנדרש.
הוכחנו כי )𝑁(𝐿 = 𝑆𝐼 ולכן המכונה 𝑁 אכן מכריעה את השפה 𝑆𝐼.
סיבוכיות האלגוריתם :הסיבוכיות של ניחוש הוא כגודל הניחוש (במקרה זה )𝑘(𝑂).
2
● גודל הקלט( - 𝑂(𝑛 ) :מטריצת שכנויות) כאשר 𝑛 הינו מספר הצמתים בגרף הנתון.
● נניח כי 𝑛 ≤ 𝑘.
● בשלב :1ניחוש קבוצה בגודל 𝑘 עולה לנו )𝑘(𝑂.
המחלקה coNP
מחלקת השפות 𝑃𝑁𝑜𝑐 :השפות שהמשלימה שלהן שייכת ל .𝑁𝑃-כלומר }𝑃𝑁 ∈ ‾𝐿 |𝐿{ = 𝑃𝑁𝑜𝑐.
באופן לא פורמלי ,שפה 𝐿 שייכת למחלקה 𝑃𝑁𝑜𝑐 אם לכל מילה 𝑤 שלא שייכת ל 𝐿-יש דרך מהירה לוודא ש𝑤-
לא שייכת ל.𝐿-
תרגיל :אלו שפות נראות קשות יותר ,אלה שב 𝑁𝑃-או אלה שב?𝑐𝑜𝑁𝑃-
דור עזריה
|| 111חישוביות
יחס 𝐿𝑅
הגדרה :שפה 𝑃𝑁 ∈ 𝐿 אם קיים יחס דו-מקומי 𝐿𝑅 המכיל זוגות )𝑦 (𝑥,כך שמתקיים:
.𝑥 ∈ 𝐿 .1
𝑦 .2הינו "עד" עבור 𝑥( .כלומר 𝑦 ,הוא אובייקט המעיד על השייכות של 𝑥 לשפה 𝐿).
היחס 𝐿𝑅 מקיים:
𝑅𝐿 .3חסום פולינומית.
כלומר :לכל זוג 𝐿𝑅 ∈ )𝑦 (𝑥,קיים פולינום )·(𝑝 כך שמתקיים.|𝑦| ≤ 𝑝(|𝑥|) :
.4היחס 𝐿𝑅 ניתן לזיהוי דטרמיניסטי פולינומי .כלומר -קיימת מ"ט דטרמיניסטית פולינומית 𝑉 המכריעה
את היחס (לכל זוג )𝑦 (𝑥,תענה האם 𝐿𝑅 ∈ )𝑦 (𝑥,או 𝐿𝑅 ∉ )𝑦 .)(𝑥,המכונה 𝑉 נקרא מאמת.
⋆
.5השפה 𝐿 מקיימת.𝐿 = {𝑥 ∈ Σ | ∃𝑦 𝑠. 𝑡. (𝑥, 𝑦) ∈ 𝑅𝐿} :
כלומר לכל מילה בשפה קיים עד פולינומי ,ולכל מילה שלא בשפה לא קיים עד פולינומי.
)|𝑥|(𝑝
𝑦 ∈ Σכך ש.(𝑥, 𝑦) ∈ 𝑅𝐿 : ● 𝐿 ∈ 𝑥 ← קיים פולינום )·(𝑝 וקיים
)|𝑥|(𝑝
𝑦 ∈ Σכך ש.(𝑥, 𝑦) ∉ 𝑅𝐿 : ● 𝐿 ∉ 𝑥 ← לכל פולינום )·(𝑝 ולכל
במילים :נשאל האם הבעיה 𝑥 נפתרת בעזרת העד 𝑦 ,במידה וכן אז 𝐿𝑅 ∈ )𝑦 (𝑥,ואחרת לא ביחס.
הגדרה שקולה 𝐿 ∈ 𝑁𝑃 :אם קיימת 𝑉 מכונה מוודאות דטרמיניסטית מכריעה ופולינומית עבור 𝐿.
⋆
קיים פולינום )·(𝑝 וגם עד 𝑦 עבור 𝑉 ו 𝑥-כל שלכל 𝑥 ∈ Σמתקיים:
)|𝑥|(𝑝
}𝑥 ∈ 𝐿 ⇔ ∃𝑦 ∈ {0, 1 : 𝑉(𝑥, 𝑦) = 1
)|𝑥|(𝑝
}𝑥 ∉ 𝐿 ⇔ ∀𝑦 ∈ {0, 1 : 𝑉(𝑥, 𝑦) = 0
⋆
הסבר :מכונה מוודאת 𝑉 מקבלת את הקלט 𝑥 ∈ Σוגם מקבלת באופן חיצוני את 𝑦 שנקרא לו העד.
העד 𝑦 עוזר לנו להגיד האם 𝐿 ∈ 𝑥 או לא ,כלומר ,הוא יתן לנו עדות על השייכות ליחס של השפה.
ה 𝑦-הוא בעצם איזשהו פרמוטציה של מחרוזת בינארית שנקבל באופן חיצוני לא ידוע.
⋆
למשל עבור השפה }𝑒𝑙𝑐𝑦𝑐 𝑛𝑎𝑖𝑛𝑜𝑡𝑙𝑖𝑚𝑎𝐻 𝑎 𝑠𝑎 .𝐻𝐶 = {< 𝐺 > | 𝐺 ℎבהינתן 𝑥 ∈ Σכלשהו ובהינתן עד
𝑦 שהגיע באופן חיצוני .המוודא 𝑉(𝑥, 𝑦) = 1אם העד 𝑦 מייצג מעגל המילטון (פרמוטציה/סידור של צמתי
הגרף) וגם > 𝐺 <= 𝑥 .כלומר 𝑉(< 𝐺 >, 𝐻𝑎𝑚𝑖𝑙𝑡𝑜𝑛𝑖𝑎𝑛 𝑐𝑦𝑐𝑙𝑒) = 1שאכן במקרה זה 𝐶𝐻 ∈> 𝐺 <.
חשוב להבין שלא תמיד נקבל 𝑦 שהוא בהכרח מעגל המילטון ,יכול להיות שנקבל 𝑦 שידחה .כלומר ,העד לא
תמיד מבטיח לנו שהמילה תתקבל בשפה ,והאחראי להחלטה הזאת היא המכונה המוודא 𝑉.
דור עזריה
|| 112חישוביות
דור עזריה
|| 113חישוביות
● שלב :𝑂(𝑝1(|𝑥|) + 𝑝2(|𝑥|)) :2מוודאת שאכן 𝑦 הוא "עד" ,אז היא מריצה את 𝑥 וגם היא צריכה
לקרוא את הניחוש הזה שזה גם יעלה 𝑥 בזמן פולינומי.
● סך הכל 𝑂(𝑝1(|𝑥|) + 𝑝2(|𝑥|)) :פולינומי ב |𝑥|-כנדרש( .כי סכום פולינומים הוא גם פולינום).
לסיום :הראנו שאם יש לנו יחס תקין אז אפשר לכתוב מכונה א"ד.
∎
כיוון ב' .𝑁𝑃1 ⊆ 𝑁𝑃2 :תהי 𝐿 ∈ 𝑁𝑃1ותהי 𝑁 מ"ט א"ד המכריעה את השפה 𝐿 ויהי )𝑛(𝑝 חסם פולינומי לזמן
הריצה של המכונה 𝑁 (כלומר ,לעומק על עצי החישוב שלה).
יחס 𝐿𝑅 עבור השפה 𝐿 היא:
.1לכל 𝐿 ∈ 𝑥 ניקח מסלול ריצה מקבל בעץ החישוב של 𝑁 על 𝑥 להיות עד .נייצג כל מסלול ריצה כזה
כמחרוזת בינארית (=0שמאלה ו=1-ימינה).
.2האורך של כל מחרוזת כזו חסום ע"י )|𝑥|(𝑝.
.3ניתן לבדוק "בקלות" (כלומר ,בחישוב דטרמיניסטי בזמן פולינומי) אם המסלול שניתן לנו כ"-עד",
מסתיים או לא מסתיים במצב מקבל( .זה בעצם המאמת 𝑉).
נכונות:
● אם 𝐿 ∈ 𝑥 אז קיים מסלול מקבל בעץ החישוב של 𝑁 על 𝑥 .מכאן קיים עד 𝑦 שאורכו חסום ע"י פולינום
ב .|𝑥|-לכן הזוג )𝑦 (𝑥,שייך ליחס 𝐿𝑅.
● אם 𝐿 ∉ 𝑥 אז כל המסלולים בעץ החישוב של 𝑁 על 𝑥 דוחים .מכאן שלכל עד 𝑦 ,הזוג 𝐿𝑅 ∉ )𝑦 .(𝑥,
לסיום :הראנו שאם יש לנו מכונה א"ד אז אפשר לכתוב לה יחס.
הערה :הראנו שהמסלול הספציפי הוא ה"-עד" .ה"-עד" הזה יהיה הקידוד של המסלול.
∎
דור עזריה
|| 114חישוביות
טענה.𝐻𝐴𝑀𝑃𝐴𝑇𝐻 ∈ 𝑁𝑃 :
הוכחה :נציג אלגוריתם 𝑁 על 𝐻𝑇𝐴𝑃𝑀𝐴𝐻 שעובד בזמן פולינומי.
המכונה 𝑁 על הקלט > 𝑡 < 𝐺, 𝑠,מבצעת:
.1כתוב רשימה של 𝑚 = |)𝐺(𝑉| מספרים .𝑝1, ... , 𝑝𝑚 ,כל מספר ברשימה נבחר באופן לא
דטרמיניסטי בטווח ]𝑚 .[1,
.2בדוק אם קיים חזרתיות ברשימה - .אם נמצא כזה ,דחה.
.3בדוק האם 𝑠 ≠ 𝑝1וגם 𝑚𝑝 ≠ 𝑡 .אם מתקיים ,דחה.
.4לכל ,1 ≤ 𝑖 ≤ 𝑚 − 1בדוק האם ) (𝑝𝑖, 𝑝𝑖+1הוא צלע ב .𝐺-אם לא ,דחה.
.5קבל.
כדי לנתח את האלגוריתם ולאמת שהוא רץ בזמן ריצה פולינומי א"ד ,ננתח כל אחד מהשלבים שלו.
בשלב - 1קיים בחירה א"ד שמתבצעת בזמן פולינומי .בשלב 2ו ,3-כל שלב רץ בזמן פולינומי .בשלב 4אנחנו
עוברים בלולאה בצורה ליניארית שזה בהחלט לכל היותר פולינומי .לכן 𝑁 מכונה א"ד מכריעה בזמן פולינומי.
ומכאן 𝑃𝑁 ∈ 𝐻𝑇𝐴𝑃𝑀𝐴𝐻.
∎
דור עזריה
|| 115חישוביות
השפה COMPOSITES
תזכורת :מספר טבעי נקרא פריק אם הוא מכפלה של שני מספרים טבעיים גדולים מ.1-
נתונה השפה.𝐶𝑂𝑀𝑃𝑂𝑆𝐼𝑇𝐸𝑆 = {< 𝑛 > | 𝑛 = 𝑝𝑞, 𝑓𝑜𝑟 𝑖𝑛𝑡𝑒𝑔𝑒𝑟𝑠 𝑝, 𝑞 > 1} :
שאלה :האם 𝑃 ∈ 𝑆𝐸𝑇𝐼𝑆𝑂𝑃𝑀𝑂𝐶?
תשובה :נשים לב שישנו אלגוריתם דטרמיניסטי שנלמד בעבר שאומר שניתן לעבור על כל המספרים מ 1-ועד
𝑛 .אם מצאנו מחלקה ,אזי הוא פריק ואם לא אז הוא ראשוני .אבל נסתכל מה סיבוכיות האלגוריתם הזה:
מאחר שהקלט > 𝑛 < מיוצג במחרוזת בינארית אז הוא בגודל )𝑛( log2ואנחנו נרוץ 𝑛 פעמים אז נקבל שזמן
)𝑛(log
)𝑛(log2
= 𝑛 כלומר זה זמן אקספוננציאלי .במילים אחרות, 2 =2 2
הריצה של האלגוריתם הזה יהיה
)𝑛(log
טענה.𝐶𝑂𝑀𝑃𝑂𝑆𝐼𝑇𝐸𝑆 ∈ 𝑁𝑃 :
רעיון ההוכחה :זמן הריצה צריך להיות פולינומיאלי בכמות הספרות המייצגות את המספר 𝑛 .נשים לב ש:
)𝑛( |< 𝑛 >| = logכי זו מחרוזת בינארית ולכן נתעניין כאן במ"ט שרצות בזמן פולינומי ב.log(𝑛)-
הוכחה -דרך :1נגדיר יחס }𝑛 < 𝑑 < .𝑅𝐶 = {(𝑛, 𝑑) ∈ ℕ × ℕ| 𝑑 𝑑𝑖𝑣𝑖𝑑𝑒𝑠 𝑛 𝑎𝑛𝑑 1
.1היחס חסום פולינומית :כי 𝑛 < 𝑑 ולכן קידוד 𝑑 לא גדול מקידוד 𝑛 .כלומר )𝑛(.log(𝑑) ≤ log
ֻ
פולינומית :קיים מאמת שמחלק מספרים טבעיים ביעילות ובודק אם יש שארית. .2היחס ניתן להכרעה
⇔ 𝑛 ∈ 𝐶𝑂𝑀𝑃𝑂𝑆𝐼𝑇𝐸𝑆 .3קיים 𝑛 < 𝑑 < 1המחלק את 𝑛 ללא שארית ⇔ 𝐶𝑅 ∈ )𝑑 .∃𝑑: (𝑛,
הוכחה -דרך :2נגדיר מ"ט א"ד 𝑀 על קלט > 𝑛 <:
.1תנחש מספר טבעי 𝑑 כך ש.1 < 𝑑 < 𝑛 :
.2תבדוק האם 𝑑 מחלק את 𝑛.
.3אם כן ,תקבל .אחרת ,תדחה.
סיבוכיות זמן ריצה :המכונה פולינומית ,כי ניתן לנחש 𝑑 ולבדוק חלוקה בזמן פולינומי.
הוכחת נכונות :נוכיח כי )𝑀(𝐿 = 𝐸𝑇𝐼𝑆𝑂𝑃𝑀𝑂𝐶.
● 𝑆𝐸𝑇𝐼𝑆𝑂𝑃𝑀𝑂𝐶 ∈ 𝑛 ← קיים 𝑑 שמחלק את 𝑛 ← קיים ניחוש ל 𝑑-שעבורו קיים מסלול חישוב ש𝑀-
מגיע למצב מקבל ← )𝑀(𝐿 ∈ 𝑛.
● 𝑆𝐸𝑇𝐼𝑆𝑂𝑃𝑀𝑂𝐶 ∉ 𝑛 ← לכל 𝑑 בתחום ,לא קיים מסלול חישוב עבור 𝑀 שמגיע למצב מקבל ←
)𝑀(𝐿 ∉ 𝑛.
∎
דור עזריה
|| 116חישוביות
השפה PRIMES
נתונה השפה }𝑒𝑚𝑖𝑟𝑝 𝑠𝑖 𝑛 | > 𝑛 <{ = 𝑆𝐸𝑀𝐼𝑅𝑃.
שאלה :האם 𝑃 ∈ 𝑆𝐸𝑀𝐼𝑅𝑃?
תשובה :מכיוון ש 𝐶𝑂𝑀𝑃𝑂𝑆𝐼𝑇𝐸𝑆 ∈ 𝑁𝑃 :אז גם 𝑃 ∈ 𝑆𝐸𝑀𝐼𝑅𝑃 (כי Pסגורה למשלים).
הוכיחו גם בעבר כי 𝑃𝑁 ∈ 𝑆𝐸𝑀𝐼𝑅𝑃.
הערה :שפה שגם היא וגם המשלימה שלה שייכות ל 𝑁𝑃-אז היא "חשודה" כשייכת גם ל.𝑃-
טענה.𝐶𝐿𝐼𝑄𝑈𝐸 ∈ 𝑁𝑃 :
רעיון ההוכחה :הקליקה היא "תעודת השייכות".
הוכחה :נוכיח כי 𝑉 הוא המאמת של 𝐸𝑈𝑄𝐼𝐿𝐶.
𝑉 על קלט > 𝑐 << 𝐺, 𝑘 >,תבצע:
.1תבדוק האם 𝑐 הוא תת-גרף עם 𝑘 קודקודים ב.𝐺-
.2תבדוק האם 𝐺 מכילה את כל הצלעות שמחברות את הקודקודים בתת הגרף 𝑐.
.3אם שלבים 1ו 2-הצליחו ,קבל .אחרת ,דחה.
הוכחה אחרת :נציג אלגוריתם 𝑁 א"ד בזמן פולינומי שמכריע את 𝐸𝑈𝑄𝐼𝐿𝐶.
המכונה 𝑁 על הקלט > 𝑘 < 𝐺,תבצע:
.1תנחש תת קבוצה 𝑐 של 𝑘 קודקודים בגרף 𝐺.
.2תבדוק האם 𝐺 מכילה את כל הצלעות שמחברות את הקודקודים בתת הגרף 𝑐.
.3אם שלב 2הצליח ,קבל .אחרת ,דחה.
דור עזריה
|| 117חישוביות
. 𝑅 ∈ 𝑆𝐼 :כי אפשר לעבור על ) ( תתי קבוצות ובכל אחת לוודא שאין צלעות ) (
𝑘
2
𝑛
𝑘
𝑘 2
זמן ריצה.Θ(𝑛 · 𝑘 ) :
𝑘 2
הוכחנו שהיא ב ,R-אם עברנו על כל האפשרויות ולא מצאנו קבוצה ב"ת אז ) 𝑘 · 𝑛( Θוזה נראה פולינום.
אז השאלה היא למה לא ידוע האם 𝑃 ∈ 𝑆𝐼? -הרי כתוב כאן פולינום בחזקה קבועה.
הבעיה :כי 𝑛 ≤ 𝑘 ≤ ,1אמנם 𝑘 הוא מספר קבוע אבל הוא יכול להיות פונקציה של 𝑛.
𝑛/2 2 𝑛 𝑘 2
𝑛( Θזה אקספוננציאלי???WTF . = 𝑘 ולכן ) )· (𝑛/2 2
מאינפי 𝑛 · 𝑘 :מקבל מקסימום עבור
𝑘 𝑛/2
𝑛= 𝑛 במילים אחרות :בגלל ש 𝑛 → ∞ :ו 𝑘-חסום עד 𝑛 כולל אז יכול להיות מקרה בו 𝑛 = 𝑘 ולכן ∞ →
כלומר זה לא יכול להיות פולינומי.
דור עזריה
|| 118חישוביות
השפה SUBSET-SUM
נתונה השפה הבאה:
}𝑡 = 𝑖𝑦𝑆𝑈𝐵𝑆𝐸𝑇 − 𝑆𝑈𝑀 = {< 𝑆, 𝑡 > | 𝑆 = {𝑥1,.., 𝑥𝑛}, ∃{𝑦1,.., 𝑦𝑘} ⊆ {𝑥1,..., 𝑥𝑛} 𝑠. 𝑡. Σ
השפה במילים :הקידוד > 𝑡 < 𝑆,בשפה אם לקבוצה 𝑆 קיים תת קבוצה }𝑘𝑦 {𝑦1,..,כך שסכומה הוא 𝑡.
דוגמה < {4, 11, 16, 21, 27}, 25 >∈ 𝑆𝑈𝐵𝑆𝐸𝑇 − 𝑆𝑈𝑀 :בגלל ש.4 + 21 = 25 :
הוכחה אחרת :נציג אלגוריתם 𝑁 א"ד בזמן פולינומי שמכריע את השפה 𝑀𝑈𝑆 .𝑆𝑈𝐵𝑆𝐸𝑇 −
המכונה 𝑁 על הקלט > 𝑡 < 𝑆,תבצע:
.1נחש תת קבוצה 𝑐 של מספרים מתוך 𝑆.
.2בדוק האם 𝑐 הוא אוסף מספרים שסוכמו שווה ל.𝑡-
.3אם שלב 1הצליח ,קבל .אחרת ,דחה.
דור עזריה
|| 119חישוביות
שאלות פתוחות
● לא ידוע האם 𝑃𝑁 = 𝑃 או 𝑃𝑁 ⊂ 𝑃 .האם יש שוויון בין המחלקות או שיש הכלה ממש?
רוב מוחלט של החוקרים סבורים ש.𝑃 ≠ 𝑁𝑃 :
● לא ידוע האם 𝑃𝑁𝑜𝑐 = 𝑃𝑁
הסבירו היטב את משמעות השוויון הזה! (להשלים).
● לא ידוע האם 𝑃𝑁𝑜𝑐 ∩ 𝑃𝑁 = 𝑃.
הסבירו היטב מהי המחלקה 𝑃𝑁𝑜𝑐 ∩ 𝑃𝑁 .הראו ש( .𝑃 ⊆ 𝑁𝑃 ∩ 𝑐𝑜𝑁𝑃 :להשלים).
דור עזריה
|| 120חישוביות
דור עזריה
|| 121חישוביות
דור עזריה
|| 122חישוביות
● 𝐶𝐻 ∉> 𝐺 < ← לא קיים ב 𝐺-מעגל המילטון ← לא קיים אף סידור של צמתים המתאר מעגל
המילטוני ← 𝐶𝐻𝑀 לא תצליח בניחוש ← לא קיים אף מסלול חישוב מקבל עבור 𝐺 ←
)𝐶𝐻𝑀(𝐿 ∉> 𝐺 <.
ומכאן 𝑃𝑁 ∈ 𝐶𝐻 כנדרש.
∎
דור עזריה
|| 123חישוביות
דור עזריה
|| 124חישוביות
טענה.𝐿3 ∈ 𝑁𝑃 :
הוכחה :בניית המכונה :נבנה מ"ט א"ד 𝑁3בזמן פולינומי שמכריעה את השפה .𝐿3
המכונה 𝑁3על קלט )𝑑 (< 𝐺 >, 𝑓,תבצע:
.1נחש קבוצה של 𝑓 קודקודים.
.2לכל צומת 𝑣 בגרף:
.aתריץ החל ממנו 𝑆𝐹𝐵 עד שתגיע לקודקוד בקבוצה .אם המרחק הוא יותר מ - 𝑑-דחה.
.3אם כל הבדיקות עברו -קבל.
הוכחת נכונות הבניה :נוכיח כי .𝐿(𝑁3) = 𝐿3
● ← (< 𝐺 >, 𝑓, 𝑑) ∈ 𝐿3קיימת קבוצה 𝐼 של 𝑓 צמתים ,כך שכל הצמתים בגרף נמצאים במרחק לכל
היותר 𝑑 מקודקוד בקבוצה 𝐼 ← קיים ניחוש של קבוצה כזו ← 𝑁3בוחר בניחוש הנכון ומקבל ←
).(< 𝐺 >, 𝑓, 𝑑) ∈ 𝐿(𝑁3
● ← (< 𝐺 >, 𝑓, 𝑑) ∉ 𝐿3לא קיימת קבוצה 𝐼 של 𝑓 צמתים ,כך שכל הצמתים בגרף נמצאים במרחק
לכל היותר 𝑑 מקודקוד בקבוצה 𝐼 ←לכל ניחוש ,קיים צומת בגרף שרחוק יותר ב 𝑑-מכל הצמתים
בקבוצה 𝐼 ← לכל ניחוש 𝑁3 ,דוחה ← ).(< 𝐺 >, 𝑓, 𝑑) ∉ 𝐿(𝑁3
סיבוכיות זמן ריצה:
.1שלב - 1עולה כגודל הניחוש 𝑂(𝑓) = 𝑂(𝑛) :כאשר 𝑛 = |)𝐺(𝑉|.
.2שלב - 2
.aלעבור על כל צומת בגרף עולה לנו )𝑛(𝑂.
2
.bלבצע 𝑆𝐹𝐵 עולה לנו ) 𝑛(𝑂 כי זה הסיבוכיות של 𝑆𝐹𝐵 לגרף המיוצג במטריצת שכנויות.
2 3
.cסה"כ עבור שלב 2נקבל ) 𝑛(𝑂 = ) 𝑛 · 𝑛(𝑂.
.3שלב - 3קבלה עולה לנו ).𝑂(1
3
סה"כ קיבלנו ) 𝑛(𝑂 שזה פולינומי ולכן 𝑃𝑁 ∈ 𝐿3כנדרש.
∎
דור עזריה
|| 125חישוביות
טענה.𝐿4 ∈ 𝑁𝑃 :
הוכחה :בניית המכונה :נבנה 𝑁4מ"ט א"ד פולינומית המכריעה את השפה .𝐿4
המכונה 𝑁4על הקלט )𝑘 (< 𝐺 >,תבצע:
.1נחש מסלול.
.2בדוק שאורכו קטן מ.𝑘-
.3אם כן ,קבל .אחרת ,דחה.
הוכחת נכונות הבניה :נוכיח כי ).𝐿4 = 𝐿(𝑁4
● ← (< 𝐺 >, 𝑘) ∈ 𝐿4המסלול הקצר ביותר בגרף 𝐺 בין זוג קודקודים כלשהם הוא לכל היותר באורך
← 𝑘 − 1קיים ניחוש למסלול כזה ← 𝑁4בוחר בניחוש הנכון ומקבל ← ).(< 𝐺 >, 𝑘) ∈ 𝐿(𝑁4
● ← (< 𝐺 >, 𝑘) ∉ 𝐿4המסלול הקצר ביותר בגרף 𝐺 הוא לפחות באורך 𝑘 ← לכל ניחוש ,נבחר
במסלול שלפחות באורך 𝑘 ← לכל ניחוש 𝑁4 ,דוחה ← ).(< 𝐺 >, 𝑘) ∉ 𝐿(𝑁4
סיבוכיות זמן ריצה:
.1שלב - 1אורך המסלול חסום בכמות הצמתים ולכן ניחוש המסלול עולה לנו )𝑛(𝑂.
.2שלב - 2חישוב אורך המסלול :מעבר לאורך כל הצלעות ולכן עולה לנו )𝑛(𝑂.
.3שלב - 3בדיקת קבלה /דחיה עולה לנו ).𝑂(1
סה"כ קיבלנו )𝑛(𝑂 שזה פולינומי ולכן 𝑃𝑁 ∈ 𝐿4כנדרש.
∎
דור עזריה
|| 126חישוביות
שאלה :למה 𝑃 ∈ }𝑒𝑢𝑞𝑖𝑙𝑐 𝑎 𝑠𝑖 𝐶 𝑑𝑛𝑎 ?𝐿1 = {< 𝐺 > | ∃𝐶 ⊆ 𝑉(𝐺) 𝑠. 𝑡. |𝐶| = 11
תשובה :אפשר לבנות מכונה דטרמיניסטית שתכריע את השפה 𝐿1בזמן פולינומי .מספר כל הקבוצות
שאלה :למה 𝑃 ∈ }𝑘 < ?𝐿4 = {(< 𝐺 >, 𝑘)| 𝑇ℎ𝑒 𝑠ℎ𝑜𝑟𝑡𝑒𝑠𝑡 𝑝𝑎𝑡ℎ 𝑖𝑛 𝐺 𝑖𝑠 𝑜𝑓 𝑙𝑒𝑛𝑔𝑡ℎ
2
תשובה :כמה מסלולים אפשריים יש לנו בגרף 𝐺? :יש לנו 𝑛 מסלולים בין כל זוג קודקודים ,ואם נעבור על כל
המסלולים האלה ,אפשר למצוא את המסלול המינימלי ביותר בגרף 𝐺 ובסופו לוודא שהוא קטן מספיק מ.𝑘-
לכן קיימת מכונה דטרמיניסטית בזמן פולינומי שתכריע את השפה .𝐿4
סיבוכיות זמן הריצה :קל לראות ש 𝑀𝐿' :פולינומית .הרצה של 𝐿𝑀 על 𝑥 היא פולינומית כי 𝑃𝑁 ∈ 𝐿 ,ושאר
הניחושים של '𝐿𝑀 הם בזמן קבוע.
דור עזריה
|| 127חישוביות
הוכחת נכונות הבניה :עבור שפה 𝑃𝑁 ∈ 𝐿 ושפה ,𝐿4,𝑀 ' ∈ 𝑁𝑃4נוכיח כי 𝐿 = ' 𝑀.𝐿4,
𝐿 𝐿
● אם 𝐿 ∉ 𝑥 ← 𝐿𝑀 תעצור ותדחה בכל מסלול חישוב (לפי הגדרה של מ"ט א"ד מכריעה) ← '𝐿𝑀
תעצור ותדחה בכל מסלול חישוב ← ' 𝑀.𝑥 ∉ 𝐿4,
𝐿
● אם 𝐿 ∈ 𝑥 ← קיים מסלול חישוב מקבל שבו 𝐿𝑀 תעצור ותקבל ← ל 𝑀𝐿' -יש ארבעה מסלולי חישוב
מקבלים ,עבור ניחושי הביטים 𝑥 ∈ 𝐿4,𝑀 ' ← 00,01,10,11
𝐿
ומכאן 𝑁𝑃 ⊆ 𝑁𝑃4כנדרש.
∎
דור עזריה
|| 128חישוביות
דור עזריה
|| 129חישוביות
תזכורת :כאשר הוכחנו ש 𝑅 :סגורה לאיטרציה ,מה שעשינו זה פשוט לעבור על כל החלוקות האפשריות של
המילה לתתי מילים.
בעיה :יש כמות אקספוננציאלית של חלוקות כאלה!
⋆
שיטה :מתי 𝐿 ∈ 𝑥?
.1אם .𝑥 = ε
.2אם 𝐿 ∈ 𝑥.
⋆
.3אם קיימים מילים 𝐿 ∈ 𝑢 𝑤,כך ש.𝑥 = 𝑤𝑢 :
נשתמש בתכנון דינאמי על מנת לפתור את הבעיה ☹.
דור עזריה
|| 130חישוביות
תכנון דינמי:
עבור מילה 𝑤 ,נגדיר את 𝑗 𝑤𝑖,להיות תת המילה מאינדקס 𝑖 ועד אינדקס 𝑗.
⋆
נבנה טבלה 𝑏𝑎𝑇 המאותחלת ב ,𝐹-בה כל תא 𝑗 𝑖,יחזיק ערך בוליאני שיסמן האם תת-המילה 𝑗 𝑤𝑖,שייכת ל.𝐿 -
לכל תא ]𝑗[]𝑖[ בטבלה ,נצטרך לבדוק:
.1האם 𝐿 ∈ 𝑗.𝑤𝑖,
⋆
.2לבדוק את כל החלוקות לשתי מילים בין הטווח )𝑗 ,[𝑖,ואם באחת מהן שתי המילים ב.𝐿 -
מה תהיה התשובה הסופית שנקבל בעזרת הטבלה? :התשובה נמצאת בתא ]𝑛[].𝑇𝑎𝑏[1
⋆
למה? -כי זה תת המילה 𝑛 𝑤1,כלומר זו המילה 𝑤 כולה שבדיוק עליה נרצה לשאול האם 𝐿 ∈ 𝑤.
המכונה המלאה:
𝑀 על קלט 𝑤 תבצע:
) 𝑂(1אם - 𝑤 = εאז נקבל.
2
) 𝑛(𝑂 נאתחל טבלה 𝑏𝑎𝑇 בגודל 𝑛𝑥𝑛 עם הערכים 𝑒𝑠𝑙𝑎𝐹.
)𝑛(𝑂 עבור 𝑛 ≤ 𝑖 ≤ :1
עבור 𝑛 ≤ 𝑗 ≤ 𝑖( :אנחנו עוברים החל מ ,𝑖-כי אנחנו צריכים חלוקה ל 2-כך שהאינדקס הימני גדול מהשמאלי). )𝑛(𝑂
נריץ את 𝐿𝑀 על 𝑗.𝑤𝑖, )𝑛(𝑝
]𝑗[]𝑖[𝑏𝑎𝑇( .התנאי הראשון עבד ,המילה אכן בשפה ונסמן אותה). אם קיבלה= 𝑇𝑟𝑢𝑒 : )𝑂(1
אחרת( :נבדוק את התנאי השני ,כלומר נבדוק את כל החלוקות לשתי מילים).
עבור ( :𝑖 ≤ 𝑘 ≤ 𝑗 − 1כלומר נבדוק שאם 𝐿 ∈ 𝑤 וגם 𝐿 ∈ 𝑢 אז גם 𝐿 ∈ 𝑢𝑤
⋆ ⋆ ⋆
= 𝑥). )𝑛(𝑂
אם 𝑒𝑢𝑟𝑇 = ]𝑗[] 𝑇𝑎𝑏[𝑘 + 1וגם 𝑒𝑢𝑟𝑇 = ]𝑘[]𝑖[𝑏𝑎𝑇: )𝑂(1
אז 𝑒𝑢𝑟𝑇 = ]𝑗[]𝑖[𝑏𝑎𝑇.
אם 𝑒𝑢𝑟𝑇 = ]𝑛[] ,𝑇𝑎𝑏[1אז נקבל. )𝑂(1
אחרת ,נדחה.
דור עזריה
|| 131חישוביות
רדוקציה פולינומית
תזכורות מתורת החישוביות
.1השפות הקלות במחלקה 𝐸𝑅 הן השפות הכריעות (𝑅).
יש רדוקציה מכל שפה 𝑅 ∈ 𝐿 לכל שפה לא טריוויאלית ב.𝑅𝐸-
.2השפות הקשות במחלקה 𝐸𝑅 הן השפות השלמות ב.𝑅𝐸-
יש רדוקציה מכל שפה 𝐸𝑅 ∈ 𝐿 לכל שפה שלמה ב.𝑅𝐸-
רעיון הרדוקציה:
בפרק זה ,באופן כמעט דומה לרדוקציות שראינו עד היום 𝑁𝑃 ,יהיו הקשים ו 𝑃-יהיו הקלים (כי 𝑃𝑁 ⊆ 𝑃).
דור עזריה
|| 132חישוביות
הגדרה עבור שפות מאותו א"ב :אם שתי השפות מעל אותו א"ב ,נוכל להגדיר בצורה פשוטה יותר:
⋆ ⋆ ⋆
תהיינה ,𝐿1, 𝐿2 ⊆ Σנאמר כי ( 𝐿1≤𝑃𝐿2כלומר 𝐿1ניתנת לרדוקציה פולינומית ל )𝐿2-אם קיימת פונקציה 𝑓: Σ → Σהמקיימת:
𝑓 .1מלאה.
𝑓 .2ניתנת לחישוב זמן פולינומי.
⋆
𝑓 .3תקפה ,כלומר .∀𝑥 ∈ Σ : 𝑥 ∈ 𝐿1 ⇔ 𝑓(𝑥) ∈ 𝐿2
}𝑘 𝑒𝑧𝑖𝑠 𝑓𝑜 𝑡𝑒𝑠 𝑡𝑛𝑒𝑑𝑛𝑒𝑝𝑒𝑑𝑛𝑖 𝑛𝑎 𝑠𝑛𝑖𝑎𝑡𝑛𝑜𝑐 𝑡𝑎𝐼𝑆 = {< 𝐺, 𝑘 > |𝐺 𝑖𝑠 𝑎 𝑔𝑟𝑎𝑝ℎ 𝑡ℎ
תזכורת :קבוצה בלתי תלויה :𝐼𝑛𝑑𝑒𝑝𝑒𝑛𝑑𝑒𝑛𝑡 𝑆𝑒𝑡,בהינתן גרף )𝐸 ,𝐺 = (𝑉,קבוצה בלתי תלויה ב 𝐺-היא
תת קבוצה של קודקודים 𝑉 ⊆ 𝑆 המקיימת שלא קיימות צלעות בגרף ששני הקודקודים החלים בהן שייכים ל.𝑆-
(במילים אחרות ,לכל אחת מהצלעות ב 𝐺-יש לכל היותר קודקוד אחד ב.)𝑆-
}𝑘 𝑒𝑧𝑖𝑠 𝑓𝑜 𝑟𝑒𝑣𝑜𝑐 𝑥𝑒𝑡𝑟𝑒𝑣 𝑎 𝑠𝑛𝑖𝑎𝑡𝑛𝑜𝑐 𝑡𝑎𝑉𝐶 = {< 𝐺, 𝑘 > |𝐺 𝑖𝑠 𝑎 𝑔𝑟𝑎𝑝ℎ 𝑡ℎ
הגדרה :כיסוי קודקודים :𝑉𝑒𝑟𝑡𝑒𝑥 𝐶𝑜𝑣𝑒𝑟 ,בהינתן גרף )𝐸 ,𝐺 = (𝑉,קבוצה
. 𝑉 ⊆ 𝑆 היא קבוצת כיסוי קודקודים אם ורק אם כל צלע ב 𝐺-חלה בקודקוד מ𝑆-
(כלומר ,אין צלע בגרף שאין לה קצה בקבוצה 𝑆).
הערה :חיפוש של 𝑒𝑢𝑞𝑖𝑙𝐶 או של 𝐶𝑉 לא מתבצע בזמן פולינומי ,אבל המעבר בין שניהם (רדוקציה) הוא
פולינומי ולכן נאמר שהם "קשים באותה המידה" ,כלומר שניהם יהיו באותה המחלקה.
דור עזריה
|| 133חישוביות
פלט( < 𝐺‾, 𝑘' >∈ 𝐼𝑆 :לכל אחת מהצלעות ב 𝐺‾-יש לכל היותר קודקוד אחד ב.)𝑆-
פונקצית הרדוקציה.𝑓(< 𝐺, 𝑘 >) =< 𝐺‾, 𝑘 > :
הסבר לפונקציה :איך נתעסק בקליקה בשפה של 𝑆𝐼? אם יש לנו בגרף 𝐺 קליקה ,אז כשנהפוך את כל הצלעות,
אותה הקליקה בדיוק תהיה ב 𝐺‾-וה 𝑘-נשאר אותו הדבר כי זו אותה הקליקה בדיוק.
הסבר כללי :אנחנו לא חיפשו קליקה ב ,𝐼𝑆-אנחנו נעזרנו ברדוקציה פולינומית שאומרת שאם יש קליקה ב 𝐺-אז
בעזרת פונקצית הרדוקציה ,יש לנו גם קליקה ב .𝐺‾-מאחר ולא חיפשנו (חיפוש שלם) אז זה פולינומי כי אנחנו
בסה"כ עוברים על כל הצלעות בגרף והופכים אותם.
פתרון דוגמה :1
פונקצית הרדוקציה.𝑓(< 𝐺, 𝑘 >) =< 𝐺‾, 𝑘 > :
הרדוקציה פולינומית :כדי לחשב את 𝑓 יש לעבור על כל זוג קודקודים ב ,𝐺-אם הקודקודים שכנים ב ,𝐺-לא
תהיה ביניהם צלע ב 𝐺‾-ואם הקודקודים לא שכנים ב 𝐺-תהיה ביניהם צלע ב.𝐺‾-
הם שכנים בזמן קבוע ,הכי קל :לעבור על מטריצת השכנויות ולהפוך כל ביט).
תקפות הרדוקציה :התקפות נובעת מהלמה הבאה:
למה :עבור גרף )𝐸 ,𝐺 = (𝑉,קבוצת הקודקודים )𝐺(𝑉 ∈ 𝑆 היא קליקה ב 𝐺-אם"ם 𝑆 היא קבוצה ב"ת ב.𝐺‾-
הוכחת הלמה:
● כיוון א' :נניח ש 𝑆-היא קליקה ב ,𝐺-אזי כל הצלעות האפשרויות של זוגות קודקודים מ 𝑆-קיימות ב,𝐺-
לכן ב 𝐺‾-כל הצלעות הללו לא קיימות ,מכאן ש 𝑆-היא קבוצה בלתי תלויה ב.𝐺‾-
● כיוון ב' :נניח ש 𝑆-היא קבוצה בלתי תלויה ב ,𝐺‾-אזי כל הצלעות האפשרויות של זוגות קודקודים מ 𝑆-לא
קיימות ב ,𝐺‾-לכן ב 𝐺-כל הצלעות הללו קיימות ,מכאן ש 𝑆-היא קליקה ב.𝐺-
∎
דור עזריה
|| 134חישוביות
(
) ) )|𝑥|( 𝑂 𝑝1(|𝑥|) + ( 𝑝2( 𝑝1הוא פולינומי.
2
סיבוכיות זמן ריצה :זמן הריצה של המכונה 𝑀 הוא )
1
∎
דור עזריה
|| 135חישוביות
הערה לסיבוכיות של ההוכחה :מכונה המריצה מכונה אחרת עולה לנו יותר זמן ,כי יש לנו סרט נוסף שכותבים בו
את הקונפיגורציה של המכונה כדי שנדע לסמלץ אותה ולמדנו שהסרט הנוסף הזה הוא עד גודל ריבועי.
לכן תמיד שיש מכונה שמריצה מכונה נוספת אנחנו נוסיף לסיבוכיות שלה "בריבוע".
משפטים נוספים
משפט :1אם 𝐿1≤𝑃𝐿2ו 𝐿2 ∈ 𝑁𝑃-אז גם 𝑃𝑁 ∈ .𝐿1
תרגיל :1הוכיחו את משפט .1
פתרון תרגיל :1להשלים.
הערה :גם כאן לא נשתמש במסקנה מן המשפט כדי להוכיח ששפות אינן שייכות ל.𝑁𝑃-
לא נעסוק בשפות שהוכח עליהן שהן לא שייכות ל.𝑁𝑃-
⋆
משפט :2אם 𝑃 ∈ 𝐿1ו 𝐿2-היא שפה כלשהי ששונה מ ∅-וגם מ ,Σ -אז .𝐿1≤𝑃𝐿2
תרגיל :2הוכיחו את משפט .2
פתרון תרגיל :2להשלים.
הערה :אינטואיטיבית ,אם , 𝐿1≤𝑃𝐿2אז 𝐿2קשה לפחות כמו ( 𝐿1במובן של קיום אלגוריתם מהיר לשפה).
אם יש אלגוריתם מהיר לבדיקת השייכות ל ,𝐿2-אז אפשר לבנות בעזרתו (ובעזרת הרדוקציה הפולינומית)
אלגוריתם מהיר לבדיקת השייכות ל.𝐿1-
דור עזריה
|| 136חישוביות
דור עזריה
|| 137חישוביות
שפות NPשלמות
תזכורתRE-Complete :
שפה 𝐿2היא שלמה ב 𝑅𝐸-אם:
𝐸𝑅 ∈ ( 𝐿2שייכת למחלקה). .1
.2לכל שפה 𝐸𝑅 ∈ 𝐿1מתקיים ש( 𝐿1 ≤ 𝐿2 :קשה ביותר במחלקה).
חשוב :השפות השלמות ב 𝑅𝐸-הן הקשות ביותר במחלקה 𝐸𝑅.
שפות NPקשות ( :)NPHשפה 𝐻𝑃𝑁 ∈ 𝐿2קשה אם לכל 𝑃𝑁 ∈ 𝐿1קיימת רדוקציה פולינומית .𝐿1≤𝑃𝐿2
דור עזריה
|| 138חישוביות
פסוקים ספיקים
הגדרה :פסוק נקרא ספיק אם יש לפחות השמה אחת של ערכי אמת למשתנים של הפסוק שבה ערך האמת של
הפסוק הוא 𝑒𝑢𝑟𝑡.
תרגיל :הפסוק )𝑦 ∨ 𝑥¬( ∧ )𝑦¬ ∨ 𝑥( = )𝑦 ϕ(𝑥,הוא פסוק מעל המשתנים 𝑥 ו .𝑦-האם הוא ספיק?
תשובה :בהחלט .הנוסחה מקבילה לשער 𝑅𝑂𝑁𝑋.
דור עזריה
|| 139חישוביות
כל הבעיות שעבורן קיים מוודא בזמן פולינומי) .בעיה זו משמשת בהוכחות רבות עבור
בעיות -NPשלמות אחרות.
משפט Cook-Levin
משפט .𝑆𝐴𝑇 ∈ 𝑁𝑃𝐶 :כלומר ,השפה 𝑇𝐴𝑆 היא 𝑃𝑁-שלמה.
רעיון ההוכחה :צריך להוכיח שני דברים:
.𝑆𝐴𝑇 ∈ 𝑁𝑃 .1
.2לכל שפה 𝑃𝑁 ∈ 𝐿 מתקיים ש.𝐿≤𝑃𝑆𝐴𝑇 :
דור עזריה
|| 140חישוביות
מה אנחנו יודעים על 𝐿? :לא הרבה .אנחנו יודעים שהיא ב .𝑁𝑃-כלומר ,יש לה מכונה לא דטרמיניסטית מכריעה
𝑘
𝑁 שרצה בזמן ) 𝑛(𝑂 פולינומי ל 𝑘-טבעי כלשהו.
איך תיראה הרדוקציה? :הרדוקציה תקבל כקלט מילה 𝑤 מעל האלפבית של 𝐿.
הרדוקציה תבנה (בזמן פולינומיאלי ב )|𝑤|-פסוק בתחשיב הפסוקים שיהיה ספיק אם"ם 𝐿 ∈ 𝑤.
כלומר ,הפסוק ייבנה כך שהוא יהיה ספיק אם"ם יש ל 𝑁-חישוב מקבל על 𝑤.
תמונה של מסלול חישוב :נניח אם כן שיש ל 𝐿 ∈ 𝑁𝑃-מכונה א"ד מכריעה 𝑁 שזמן הריצה שלה על מילה 𝑤
𝑘
חסום על-ידי 𝑛 כאשר )|𝑤| = 𝑛( ל 𝑘-טבעי כלשהו (קבוע).
𝑘+1 𝑘
𝑛 על הסרט שלה (מניחים של 𝑁-יש סרט יחיד). בתוך 𝑛 צעדים 𝑁 יכולה להגיע לכל היותר לריבוע ה-
מטריצת :tableauנשתמש בטבלה הזאת (קונספטואלית) כדי לייצר פסוק (לא כחלק מהבניה).
𝑘 𝑘
( ( ) )
תמונה של ריצת 𝑁 על 𝑤 באחד ממסלולי החישוב היא מטריצה (𝑢𝑎𝑒𝑙𝑏𝑎𝑡) מסדר - 𝑛 + 1 × 𝑛 + 2
● השורה הראשונה מתאימה לקונפיגורציה ההתחלתית.
● השורה ה 𝑖-מתאימה לקונפיגורציה ה 𝑖 − 1-בחישוב.
𝑘 𝑘
● השורה האחרונה (ה )𝑛 + 1-מתאימה לקונפיגורציה ה.𝑛 -
הנחות :לשם הנוחות ,נניח שכל קונפיגורציה מתחילה ומסתיימת ב.#-
.1בכל העמודה הראשונה ובכל העמודה האחרונה במטריצה
מופיע הסמל .#
𝑘 𝑘
( ( ) )
.2נרחיב את המטריצה לסדר . 𝑛 + 1 × 𝑛 + 4
.3לשם הנוחות של האינדקסים בהמשך נניח שהיא מסדר
𝑘 𝑘
𝑛 + 1 × 𝑛 + 1גם נניח שאם מגיעים לקונפיגורציה עוצרת (קבלה או דחייה) ,מעתיקים אותה ( ( ) )
לשורות שתחתיה במטריצה.
𝑘 𝑘
( ( ) )
כך נבטיח שתמיד המטריצה היא מסדר . 𝑛 + 1 × 𝑛 + 1
ֻ
מקבלת :המטריצה תקרא מקבלת ,אם אחת השורות שלה היא קונפיגורציה מקבלת. מטריצה
כלומר ,המצב בקונפיגורציה הוא 𝑡𝑝𝑒𝑐𝑐𝑎𝑞 .כל מטריצה מקבלת של 𝑁 על 𝑤 מתאימה לחישוב מקבל של 𝑁 על 𝑤
.לכן ,השאלה האם 𝑁 מקבלת את 𝑤 שקולה לשאלה "האם יש מטריצה מקבלת של 𝑁 על 𝑤".
דור עזריה
|| 141חישוביות
אנו מעוניינים ברדוקציה פולינומית עבור 𝑇𝐴𝑆𝑃≤𝐿 .∀𝐿 ∈ 𝑁𝑃,ולכן ,לכל מילת קלט נרצה לבנות פסוק.
תחילה בהינתן מילה 𝑥 נבנה פסוק שיסתפק אמ"מ יש מסלול מקבל בעץ החישוב )𝑥(𝑁 (כלומר מטריצה .1
מקבלת) ונסביר נכונות (כלומר את תקפות הרדוקציה).
מה תעשה הרדוקציה? :הרדוקציה תבנה מ 𝑤-פסוק שערכו יהיה 𝑒𝑢𝑟𝑡 אם"ם יש מטריצה מקבלת של 𝑁 על 𝑤
איך יראה הפסוק הזה? :הסמלים שיכולים להופיע במטריצה הם סמלים מן הקבוצה } 𝐶 = 𝑄 ∪ Γ ∪ {#או
מיקום של הראש .שימו לב שגודל הקבוצה 𝐶 לא תלוי ב( 𝑤-אלא רק ב ,)𝑁-ולכן נחשב קבוע בחישוב זמן הריצה.
𝑘
הפסוק שבונה הרדוקציה :לכל 1 ≤ 𝑖, 𝑗 ≤ 𝑛 + 1ולכל סימן 𝐶 ∈ 𝑠 נגדיר משתנה 𝑠.𝑥𝑖,𝑗,
הכוונה היא ש 𝑥𝑖,𝑗,𝑠 = 𝑡𝑟𝑢𝑒 :אם"ם 𝑠 == ]𝑗[]𝑖[𝑢𝑎𝑒𝑙𝑏𝑎𝑡.
𝑘 𝑘 𝑘2
מספר המשתנים הוא ) 𝑛(𝑂 = ).𝑂(|𝑖| · |𝑗| · |𝑐|) = 𝑂(𝑛 · 𝑛 · 1
תוודא שהמעברים בין הקונפיגורציות חוקיים לפי פונקציית המעברים .δ 𝑒𝑣𝑜𝑚ϕ
𝑘
שהקונפיגורציה הסופית תכיל מצב מקבל ,אמרנו הרי שאם יש פחות מ 𝑛 -קונפיגורציות פשוט
נשכפל את הקונפיגורציה האחרונה מספר פעמים ,ולכן יספיק לוודא מצב מקבל רק בשורה 𝑡𝑝𝑒𝑐𝑐𝑎ϕ
האחרונה.
המשמעות של 𝑙𝑙𝑒𝑐 ϕהיא שבכל תא במטריצה יש סמל אחד ויחיד מתוך 𝐶. הפסוק 𝑙𝑙𝑒𝑐- ϕ
לכל 𝑗 𝑖,יש 𝑠 אחד ויחיד כך ש 𝑥𝑖,𝑗,𝑠 :הוא 𝑒𝑢𝑟𝑡 .בניסוח של פסוק נכתוב:
⋀ = 𝑙𝑙𝑒𝑐ϕ 𝑘
1≤𝑖,𝑗≤𝑛 +1
)𝑠[ (⋁𝑠∈𝐶 𝑥𝑖,𝑗, ⋀ ] ) )𝑡(⋀𝑠,𝑡,∈𝐶, 𝑠≠𝑡 (¬𝑥𝑖,𝑗,𝑠 ⋁ ¬𝑥𝑖,𝑗,
הביטוי השמאלי :לוודא שאחד מהם הוא 𝑇.
הביטוי הימני :לוודא שכל האחרים הם 𝐹.
דור עזריה
|| 142חישוביות
סיבוכיות הפסוק:
(𝑂 .𝑂(|Γ ∪ 𝑄|) + )) (
|𝑄∪|Γ
2
2
● עבור תא יחיד= 𝑂(|Γ ∪ 𝑄| ) :
𝑘2 2
𝑛(𝑂. ● עבור כל התאים במטריצה· |Γ ∪ 𝑄| ) :
- ϕהמשמעות של 𝑡𝑟𝑎𝑡𝑠 ϕהיא שהשורה הראשונה של המטריצה היא הקונפיגורציה ההתחלתית הפסוק
𝑡𝑟𝑎𝑡𝑠
של 𝑁 על 𝑤 .בכל תא בשורה הראשונה במטריצה מופיע הסמל הנכון של הקונפיגורציה ההתחלתית.
בניסוח של פסוק:
המשמעות של 𝑡𝑝𝑒𝑐𝑐𝑎 ϕהיא שיש במטריצה קונפיגורציה מקבלת. הפסוק 𝑡𝑝𝑒𝑐𝑐𝑎- ϕ
הדרישה היא שהסמל 𝑡𝑝𝑒𝑐𝑐𝑎𝑞 מופיע בשורה האחרונה:
𝑘
סיבוכיות הפסוק.𝑂(𝑛 ) :
המשמעות של 𝑒𝑣𝑜𝑚 ϕהיא לוודא שכל שורה (קונפיגורציה) מאפשרת לעבור לשורה הבאה הפסוק 𝑒𝑣𝑜𝑚- ϕ
(קונפיגורציה עוקבת) דרך פונקציית המעברים של 𝑁.
הנקודה החשובה היא :ההבדל בין שתי קונפיגורציות עוקבות מתבטאת בלכל היותר בשלושה תאים רצופים
(מיקום הראש ,והתאים שלימינו ולשמאלו) וכל השאר זהה .לכן די לוודא שכל "חלון" מסדר 2 × 3הוא חוקי לפי 𝑁.
דור עזריה
|| 143חישוביות
})𝑅 δ(𝑞1, 𝑎) = {(𝑞1, 𝑏, , })𝑅 δ(𝑞1, 𝑏) = {(𝑞2, 𝑐, 𝐿), (𝑞2, 𝑎,
לכל חלון מסדר 2 × 3יהיה ב ϕ𝑚𝑜𝑣𝑒-תת-פסוק שיאמר שששת הסמלים בחלון מהווים חלון חוקי:
כאשר הקביעה שהחלון הוא חוקי היא הפסוק הבא בזמן קבוע ) 𝑂(1לכל בדיקת חלון :2 × 3
(פסוקים כאלה מופיעים לכל iולכל jולכל חלון חוקי) שימו לב שמספר החלונות החוקיים איננו תלוי כלל ב𝑤-
(אלא רק במכונה 𝑁) ,ולכן הוא ייחשב לקבוע בחישוב זמן הריצה של הרדוקציה.
טענה :אם השורה הראשונה במטריצה היא הקונפיגורציה ההתחלתית של 𝑁 על 𝑤 ,וכל חלון מסדר 2 × 3
במטריצה הוא חלון חוקי לפי 𝑁 ,אז כל שורה בטבלה היא קונפיגורציה עוקבת לקונפיגורציה של השורה שלפניה,
בְּ חישוב של 𝑁 על 𝑤 .להשלים?
הדרכה :לכל סמל בקונפיגורציה שאיננו ,#התבוננו בחלון שבו הסמל הזה הוא הסמל האמצעי בשורה העליונה
בחלון.
דור עזריה
|| 144חישוביות
תיארנו את הרדוקציה ,והוכחנו שהיא תקפה (הוכחנו בבית) .כעת נעבור לחישוב זמן הריצה של הרדוקציה,
ונוכיח שהוא פולינומי בגודל הקלט .זה יסיים את הוכחת משפט 𝑛𝑖𝑣𝑒𝐿 .𝐶𝑜𝑜𝑘 −
סיום ההוכחה המגעילה הזאת :בזה תמה הוכחת משפט 𝑛𝑖𝑣𝑒𝐿 𝐶𝑜𝑜𝑘 −ומכאן 𝑇𝐴𝑆 היא 𝑃𝑁-שלמה!
דור עזריה
|| 145חישוביות
השפה CNF-SAT
תרגיל :הראו שכל חלקי הפסוק ϕבהוכחת משפט 𝑛𝑖𝑣𝑒𝐿 ,𝐶𝑜𝑜𝑘 −פרט ל ,ϕ𝑚𝑜𝑣𝑒-הם בצורת 𝐹𝑁𝐶.
אפשר להעביר גם את 𝑒𝑣𝑜𝑚 ϕלצורת 𝐹𝑁𝐶 .זה יגדיל את הפסוק ,אך מכיוון שהגודל של כל תת-פסוק של חלון
ב ϕ𝑚𝑜𝑣𝑒-תלוי רק במכונה 𝑁 (ולא ב ,)𝑤-אפשר להתייחס להגדלה הזו כאל כפל בקבוע.
מסקנה :גם השפה 𝑇𝐴𝑆 𝐶𝑁𝐹 −היא 𝐶𝑃𝑁:
}𝑎𝑙𝑢𝑚𝑟𝑜𝑓 𝑛𝑎𝑒𝑙𝑜𝑜𝐵 𝐹𝑁𝐶 𝑒𝑙𝑏𝑎𝑖𝑓𝑠𝑖𝑡𝑎𝑠 𝑎 𝑠𝑖 𝐶𝑁𝐹 − 𝑆𝐴𝑇 = {< ϕ > | ϕ
השפה DNF-SAT
תזכורת :פסוק בתחשיב הפסוקים הוא בצורה דיסיונקטיבית נורמלית (𝐹𝑁𝐷) ,אם:
.1הפסוק בנוי מקבוצה של פסוקיות שביניהן יש הקשר ∧
.2כל פסוקית היא קבוצה של ליטרלים שביניהם יש הקשר ∨
.3כל ליטרל הוא משתנה או שלילה של משתנה
שאלה :האם גם 𝑃 ∈ 𝑇𝐴𝑆 ?𝐶𝑁𝐹 −למה האלגוריתם הבא ל 𝐶𝑁𝐹 − 𝑆𝐴𝑇-לא מוכיח שגם 𝑇𝐴𝑆 𝐶𝑁𝐹 −
שייכת ל?𝑃-
"על קלט > < ϕכאשר ϕפסוק בצורת 𝐹𝑁𝐶: -
.1העבר את ϕלפסוק שקול ' ϕבצורת 𝐹𝑁𝐷.
.2בדוק האם ' ϕספיק .אם כן ,קבל .אחרת ,דחה".
תשובה :המעבר מ 𝐶𝑁𝐹-ל 𝐷𝑁𝐹-עלול ליצור פסוק ' ϕשגודלו אקספוננציאלי בגודל הפסוק .ϕ
שקילות CNFוDNF-
לדוגמה.ϕ = (𝑥1 ∨ 𝑥2) ∧ (¬𝑥1 ∨ ¬𝑥2) ∧ (𝑥3 ∨ 𝑥4) ∧ ... ∧ (¬𝑥𝑛−1 ∨ ¬𝑥𝑛) :
כיצד ממירים את זה לצורת 𝐹𝑁𝐷?
דור עזריה
|| 146חישוביות
סיכום הפרק
רדוקציה פולינומית :בהינתן שתי שפות ,𝐿1, 𝐿2נאמר ש 𝐿1 :ניתנת לרדוקציה פולינומית ל 𝐿2-ונסמן 𝐿1≤𝑃𝐿2
אם קיימת פונקציה 𝑓 כך ש:
𝑓 .1ניתנת לחישוב בזמן פולינומי.
𝑓 .2תקפה ,כלומר .𝑥 ∈ 𝐿1 ⇔ 𝑓(𝑥) ∈ 𝐿2
דור עזריה
|| 147חישוביות
פתרון -חלק ב' :נוכיח כי 𝐻𝑃𝑁 ∈ .𝑆𝐴𝑇2כלומר שלכל 𝑃𝑁 ∈ '𝐿 מתקיים .𝐿'≤𝑃𝑆𝐴𝑇2
מבוא :בהרצאה למדנו כי 𝐶𝑃𝑁 ∈ 𝑇𝐴𝑆 ,כלומר ש 𝑆𝐴𝑇 :שפה 𝑃𝑁-שלמה .בנוסף ,למדנו שבשפות שלמות ניתן
בעזרת רדוקציה להוכיח על שפות שלמות אחרות .כלומר ,אם כל שפה 𝑃𝑁 ∈ '𝐿 ניתנת לרדוקציה עם 𝑇𝐴𝑆,
אז כאשר נוכיח ש 𝑆𝐴𝑇≤𝑃𝑆𝐴𝑇2 :גם 𝐻𝑃𝑁 ∈ .𝑆𝐴𝑇2
● תיאור הרדוקציה :הוכחנו כי 𝐶𝑃𝑁 ∈ 𝑇𝐴𝑆 ,לכן נוכיח ברדוקציה פולינומית .𝑆𝐴𝑇≤𝑃𝑆𝐴𝑇2
דור עזריה
|| 148חישוביות
שרשרת הרדוקציות :בתרגיל זה אנחנו נוכיח שייכות של שפות למחלקה 𝐶𝑃𝑁 בעזרת שרשרת רדוקציות.
היות ו 𝑆𝐴𝑇-היא שפה 𝑃𝑁-שלמה (לפי משפט קוק לוין) אז גם שאר השפות הבאות יהיו 𝑃𝑁-שלמות.
מדובר בתרגיל גדול ,השפות שנוכיח כאן יהיו כלים לפתירת בעיות במבחנים ומטלות.
כל רדוקציה (𝑃≤) הוא תרגיל בפני עצמו (יש 6כאלה) .עבור כל שפה בשרשרת הנתונה צריך להוכיח שהיא
שייכת למחלקה 𝑃𝑁 ונעשה זאת ע"י בניית מ"ט א"ד פולינומית +הוכחת בנייה וסיבוכיות זמן ריצה.
לאחר שנוכיח שכל השפות 𝑃𝑁 ∈ 𝐿 אז נפתור כל רדוקציה פולינומית נתונה בנפרד (משמאל לימין).
נוכיח בשלבים את שרשרת הרדוקציות הבאה:
הגדרת שפות:
}𝐷𝐻𝐿 = {< 𝐺 > | 𝐺 𝑖𝑠 𝑎 𝑑𝑖𝑟𝑒𝑐𝑡𝑒𝑑 𝑔𝑟𝑎𝑝ℎ 𝑤𝑖𝑡ℎ 𝑎 𝐻𝑎𝑚𝑖𝑙𝑡𝑜𝑛𝑖𝑎𝑛 𝑝𝑎𝑡ℎ
}𝐻𝐿 = {< 𝐺 > | 𝐺 𝑖𝑠 𝑎𝑛 𝑢𝑛𝑑𝑖𝑟𝑒𝑐𝑡𝑒𝑑 𝑔𝑟𝑎𝑝ℎ 𝑤𝑖𝑡ℎ 𝑎 𝐻𝑎𝑚𝑖𝑙𝑡𝑜𝑛𝑖𝑎𝑛 𝑝𝑎𝑡ℎ
}𝑒𝑙𝑐𝑦𝑐 𝑛𝑎𝑖𝑛𝑜𝑡𝑙𝑖𝑚𝑎𝐻 𝑎 𝐻𝐶 = {< 𝐺 > | 𝐺 𝑖𝑠 𝑎𝑛 𝑢𝑛𝑑𝑖𝑟𝑒𝑐𝑡𝑒𝑑 𝑔𝑟𝑎𝑝ℎ 𝑤𝑖𝑡ℎ
}𝑒𝑙𝑐𝑦𝑐 𝑛𝑎𝑖𝑛𝑜𝑡𝑙𝑖𝑚𝑎𝐻 𝑎 𝐷𝐻𝐶 = {< 𝐺 > | 𝐺 𝑖𝑠 𝑎 𝑑𝑖𝑟𝑒𝑐𝑡𝑒𝑑 𝑔𝑟𝑎𝑝ℎ 𝑤𝑖𝑡ℎ
}𝑘 𝑒𝑧𝑖𝑠 𝑓𝑜 𝑟𝑒𝑣𝑜𝑐 𝑥𝑒𝑡𝑟𝑒𝑣 𝑎 𝑠𝑛𝑖𝑎𝑡𝑛𝑜𝑐 𝑡𝑎𝑉𝐶 = {< 𝐺, 𝑘 > |𝐺 𝑖𝑠 𝑎 𝑔𝑟𝑎𝑝ℎ 𝑡ℎ
} 𝑎𝑙𝑢𝑚𝑟𝑜𝑓 𝑛𝑎𝑒𝑙𝑜𝑜𝐵 𝐹𝑁𝐶 3 − 𝐶𝑁𝐹 − 𝑆𝐴𝑇 = {< ϕ > | ϕ 𝑖𝑠 𝑎 𝑠𝑎𝑡𝑖𝑠𝑓𝑖𝑎𝑏𝑙𝑒 3 −
}𝑎𝑙𝑢𝑚𝑟𝑜𝑓 𝑛𝑎𝑒𝑙𝑜𝑜𝐵 𝐹𝑁𝐶 𝑒𝑙𝑏𝑎𝑖𝑓𝑠𝑖𝑡𝑎𝑠 𝑎 𝑠𝑖 𝐶𝑁𝐹 − 𝑆𝐴𝑇 = {< ϕ > | ϕ
דור עזריה
|| 149חישוביות
ציור להמחשה :מגרף 𝐺 לא מכוון ,לכל צלע ניצור 2צלעות רדוקציה .𝐻𝐿≤𝑃𝐷𝐻𝐿 :1תחילה צריך להוכיח כי 𝑃𝑁 ∈ 𝐿𝐻𝐷
בגרף המכוון '𝐺 כך שכל אחת מ 2-הצלעות יוצאת לצומת וגם 𝑃𝑁 ∈ 𝐿𝐻 .עבור 𝑃𝑁 ∈ 𝐿𝐻 הוכחנו כבר בהרצאה
אחרת: קודמת ,קראנו לשפה 𝐻𝑇𝐴𝑃𝑀𝐴𝐻 = 𝐿𝐻 .צריך להוכיח
𝑃𝑁 ∈ 𝐿𝐻𝐷.
בניית מכונה ל :DHL-צריך להוכיח 𝑃𝑁 ∈ 𝐿𝐻𝐷 .לכן ,נבנה 𝑁
מ"ט א"ד פולינומית שתכריע את השפה 𝐿𝐻𝐷.
המכונה 𝑁 על קלט > 𝐺 < תבצע:
.1נחש מסלול מצומת 𝑠 לצומת 𝑡.
.2בדוק שכל צלע 𝑒 במסלול שייכת ל.𝑒 ∈ 𝐸(𝐺)-
.aאם )𝐺(𝐸 ∉ 𝑒 -דחה.
.3לכל צומת )𝐺(𝑉 ∈ 𝑖𝑣:
אם ביקרנו ב 𝑣𝑖 -יותר מפעם אחת -דחה. .a
אם לא ביקרנו ב 𝑣𝑖-בכלל -דחה. .b
.4קבל.
חשוב לשים לב שאם לא קיים ב 𝐺-מסלול המילטוני ,אז גם אם סיבוכיות זמן הריצה :נסמן ב 𝑑-את אורך המסלול.
נצרף 2צלעות ,עדיין גם בגרף '𝐺 לא יהיה מסלול המילטוני וזה ● שלב - 1כגודל הניחוש.𝑂(𝑑) :
טוב לנו ויהיה שימושי לנכונות של תקפות הפונקציה. ● שלב - 2בדיקת כל צלע על המסלול
2
) |𝐸|(𝑂 = )|𝐸| · 𝑑(𝑂.
שלב - 2aבדיקה ספציפית .𝑂(1) - ●
הוכחה :נראה רדוקציה 𝐿𝐻𝐷𝑃≤𝐿𝐻. שלב - 3מעבר על כל צומת )|𝑉|(𝑂. ●
פונקצית הרדוקציה .𝑓(< 𝐺 >) =< 𝐺' > :כאשר 𝐺 גרף לא שלב - 3a,bבדיקה ספציפית .𝑂(1) - ●
2
מכוון ו 𝐺'-גרף מכוון. סה"כ זמן הריצה הוא ) |𝐸| - 𝑂(|𝑉| +פולינומי.
הפעלת הרדוקציה :הגרף '𝐺 המכוון יהיה כמו 𝐺 (לא מכוון) רק הוכחת נכונות הבניה :נוכיח כי )𝑁(𝐿 = 𝐿𝐻𝐷.
שעבור כל 2קודקודים )𝐺(𝑉 ∈ 𝑣 𝑢,בצלע )𝐺(𝐸 ∈ )𝑣 ,(𝑢, ● 𝐿𝐻𝐷 ∈> 𝐺 < ← קיים מסלול המילטוני מכוון
נעשה 2צלעות )'𝐺(𝐸 ∈ )𝑢 .(𝑢, 𝑣), (𝑣, בגרף 𝐺 ← קיים ניחוש למסלול המילטוני מכוון
הפונקציה ניתנת לחישוב בזמן פולינומי :מעבר על כל מצומת 𝑠 לצומת 𝑡 המובילים למצב מקבל ←
הקודקודים )𝑛(𝑂 ויצירת 2צלעות )𝑛 𝑂(2ולכן סך הכל נקבל )𝑁(𝐿 ∈> 𝐺 <.
)𝑛(𝑂 -פולינומי. ● 𝐿𝐻𝐷 ∉> 𝐺 < ← לא קיים אף מסלול המילטוני
תקפות הפונקציה.< 𝐺 >∈ 𝐻𝐿 ⇔ < 𝐺' >∈ 𝐷𝐻𝐿 : מכוון בגרף 𝐺 ← לכל ניחוש של מסלול 𝑡 → 𝑠
● 𝐿𝐻 ∈> 𝐺 < ← קיים מסלול המילטוני בגרף לא המכונה 𝑁 דוחה ← )𝑁(𝐿 ∉> 𝐺 <.
מכוון 𝐺 ← לכן ,כאשר נשאיר את הצלע וניצור ממנו מ.ש.ל.
שני כיוונים ,עדיין יהיה קיים מסלול המילטוני בגרף הוכחת הרדוקציה.𝐻𝐿≤𝑃𝐷𝐻𝐿 :
המכוון '𝐺 (זה אותו המסלול שהיה ב← )𝐺-
רעיון ההוכחה :במסלול המילטוני נרצה לעבור על כל
𝐿𝐻𝐷 ∈> '𝐺 <.
הקודקודים פעם אחת בלבד.𝑓(< 𝐺 >) =< 𝐺' > .
● 𝐿𝐻 ∉> 𝐺 < ← לא קיים מסלול המילטוני בגרף
בגרף 𝐺 הלא מכוון קיים מסלול המילטוני ,נרצה בעזרת
לא מכוון 𝐺 ← לכן ,גם אם ניצור עבור כל צלע שני
רדוקציה להשליך גם על הגרף המכוון '𝐺 שיהיה בעל מסלול
כיוונים עדיין לא יהיה מסלול המילטוני בגרף מכוון '𝐺
המילטוני .ניקח כל צלע בגרף הלא מכוון 𝐺 ,ונשים במקומה שתי
← 𝐿𝐻𝐷 ∉> '𝐺 <.
צלעות מכוונות .כלומר ,לכל )𝐺(𝐸 ∈ )𝑣 (𝑢,ניצור 2צלעות
מ.ש.ל.
)'𝐺(𝐸 ∈ )𝑢 . (𝑢, 𝑣), (𝑣,
נרצה שאם ב 𝐺-יש מסלול המילטוני אז גם ב 𝐺'-יש,
ואם ב 𝐺-אין מסלול המילטוני אז גם ב 𝐺'-אין מסלול המילטוני.
דור עזריה
|| 150חישוביות
ציור להמחשה :בציור מתואר 2התרחישים (שייכות ואי שייכות). רדוקציה .𝐻𝐶≤𝑃𝐻𝐿 :2תחילה צריך להוכיח כי 𝑃𝑁 ∈ 𝐿𝐻 וגם
נשים לב שאי אפשר לבנות עבור מקרה של שייך ובניה אחרת 𝑃𝑁 ∈ 𝐶𝐻 .עבור 𝑃𝑁 ∈ 𝐿𝐻 הוכחנו כבר בהרצאה קודמת,
עבור מקרה שלא שייך ,הבנייה שלנו צריכה לעבוד לכל מקרה. קראנו לשפה 𝐻𝑇𝐴𝑃𝑀𝐴𝐻 = 𝐿𝐻.
● תרחיש ( 1שייכות -ציור עליון) :אם קיים מעגל המילטון אז בניית מכונה ל :HC-נוכיח כי 𝑃𝑁 ∈ 𝐶𝐻.
קיים מסלול המילטון. רעיון ההוכחה :אם יהיה לנו אפשרות לנחש את הפרמוטציה
● תרחיש ( 2אי שייכות -ציור תחתון) :אם לא קיים מעגל שתייצג את הסידור הנכון בגרף עבור מעגל המילטון אז ניתן
המילטון אז לא קיים מסלול המילטון. יהיה לפתור בזמן פולינומי.
אפשר לראות בציור שבאמת עבור 2התרחישים אנחנו עומדים נציג מכונה 𝐶𝐻𝑀 א"ד פולינומית המכריעה את השפה 𝐶𝐻
בדרישות ולכן תקיפות הפונקציה שנבנה תהיה נכונה וללא
הוכחה :המכונה 𝐶𝐻𝑀 על הקלט > 𝐺 < תבצע:
באגים.
.1מנחשת פרמוטציה (מסלול) על הצמתים ובודקת
שאכן מהווה מעגל המילטון.
.2אם כן ,קבל .אחרת ,דחה.
סיבוכיות זמן ריצה :אורך המעגל שצריך לנחש הוא ליניארי
(מסלול בעץ החישוב) כלומר )𝑛(𝑂 .צריך לבדוק האם הצמתים
שניחשנו שונים זה מזה ,ושבין כל שני צמתים עוקבים בסידור
קיימת קשת -עולה לנו )𝑛(𝑂 .לכן ,שתי הבדיקות הללו ניתנות
לביצוע בזמן פולינומי.
הוכחת נכונות :צריך להוכיח ש.𝐻𝐶 = 𝐿(𝑀𝐻𝐶) :
𝐶𝐻 ∈> 𝐺 < ← קיים ב 𝐺-מעגל המילטון ← ניתן ●
לתאר את המעגל ההמילטוני כסידור של צמתים ←
הוכחה :נראה רדוקציה 𝐿𝐻𝑃≤𝐶𝐻.
𝐶𝐻𝑀 תנחש סידור זה והבדיקה שלה תצליח ← קיים
פונקצית הרדוקציה.𝑓(< 𝐺 >) =< 𝐺' > :
מסלול חישוב מקבל עבור 𝐺 ← )𝐶𝐻𝑀(𝐿 ∈> 𝐺 <.
הפעלת הרדוקציה :נבנה '𝐺 כך :נבחר צומת 𝑣 בצורה
רנדומלית ונפרק אותה ל 2-צמתים 𝑢 ,𝑤,כך ש 𝑢, 𝑣 :יהיו 𝐶𝐻 ∉> 𝐺 < ← לא קיים ב 𝐺-מעגל המילטון ← לא ●
מחוברים לאותם קודקודים ש 𝑣-היה מחובר .אם לא יהיו קיים אף סידור של צמתים המתאר מעגל המילטוני ←
מחוברים אז בונים לבין עצמם .כעת נוסיף שני צמתים נוספים 𝐶𝐻𝑀 לא תצליח בניחוש ← לא קיים אף מסלול חישוב
לגרף 𝑒 𝑠,וניצור את הקשתות )𝑢 .(𝑠, 𝑤), (𝑒, מקבל עבור 𝐺 ← )𝐶𝐻𝑀(𝐿 ∉> 𝐺 <.
הפונקציה ניתנת לחישוב בזמן פולינומי :יצירת 4קודקודים ו2- מ.ש.ל. ומכאן 𝑃𝑁 ∈ 𝐶𝐻 כנדרש.
צלעות -פולינומי.
תקפות הפונקציה.< 𝐺 >∈ 𝐻𝐶 ⇔ < 𝐺' >∈ 𝐻𝐿 : הוכחת הרדוקציה.𝐻𝐶≤𝑃𝐻𝐿 :
● 𝐶𝐻 ∈> 𝐺 < ← קיים מעגל המילטוני בגרף 𝐺 כלומר
)𝑣 → 𝑦 ←(𝑣 → 𝑥....בגרף '𝐺 יהיה קיים מסלול המילטוני רעיון ההוכחה :במסלול המילטוני נרצה לעבור על כל
← )𝑒 → 𝑢 .< 𝐺' >∈ 𝐻𝐿 ←(𝑠 → 𝑤.... הקודקודים פעם אחת בלבד .אנו יודעים כי כל מעגל המילטוני
● 𝐶𝐻 ∉> 𝐺 < ← לא קיים מעגל המילטוני בגרף 𝐺 נחלק הוא מסלול המילטוני ,אבל חשוב לשים לב שלא כל מסלול
ל 2-מקרים (היה מסלול ולא היה מסלול) ← המילטוני הוא גם מעגל המילטוני! .אם ב 𝐺-יש מעגל אז הבנייה
)1היה ב G-מסלול המילטוני :אזי ב 𝐺'-נבחר איזשהו 𝑣 של '𝐺 קלה כי כל מעגל המילטון הוא מסלול המילטון .אבל,
ונפרק ל 𝑢, 𝑤-ונוסף 2קודקודים 𝑒 𝑠,שמחוברים רק ל𝑢, 𝑤- בחלק של האי-שייכות ,אם לא קיים מעגל המילטון ב 𝐺-אז זה
.כדי להגיע ל 𝑠, 𝑒-נהיה חייבים להתחיל באחד מהם ולסיים לא מחייב שלא קיים מסלול המילטון ב 𝐺'-ואנחנו נרצה לבנות
בשני ולכן נשבור את הרצף של המסלול את '𝐺 במקרה של אי שייכות כך שלא קיים בו מסלול המילטון.
)2לא היה ב G-מסלול המילטוני :אז גם עבור '𝐺 לא יהיה > '𝐺 <= )> 𝐺 <(𝑓 .הגרף 𝐺 הוא גרף לא מכוון בעל מעגל
מסלול המילטוני. המילטוני ,אנחנו נרצה לבנות '𝐺 שישמור על התכונות.
← 𝐿𝐻 ∉> '𝐺 <. כלומר ,אנחנו נרצה להפוך מעגל למסלול :ניקח קודקוד 𝑣
מ.ש.ל. ו"נפצל" אותו לשני קודקודים 𝑤 𝑢,שיהיו מחוברים לכל השכנים
דור עזריה
|| 151חישוביות
דור עזריה
|| 152חישוביות
( )
בגרף המקורי 𝐺 יש מעגל ← 𝑣1 →... → 𝑣𝑛 → 𝑣1 ונוסיף לו צלעות.(𝑣𝑖𝑛, 𝑣𝑚𝑖𝑑𝑑𝑙𝑒), (𝑣𝑚𝑖𝑑𝑑𝑙𝑒, 𝑣𝑜𝑢𝑡) ∈ 𝐸(𝐺') :
מ.ש.ל. 𝐶𝐻𝐷 ∈> 𝐺 <. ולכל צלע )𝐺(𝐸 ∈ )𝑦 (𝑥,נוסיף את )'𝐺(𝐸 ∈ )𝑛𝑖𝑦 .(𝑥𝑜𝑢𝑡,
דור עזריה
|| 153חישוביות
ציור להמחשה :נסתכל לדוגמה על הפסוק הבא: רדוקציה .3 − 𝐶𝑁𝐹 − 𝑆𝐴𝑇≤𝑃𝑉𝐶 :5תחילה צריך להוכיח
)ϕ = (𝑥1 ∨ 𝑥1 ∨ 𝑥2) ∧ (𝑥1 ∨ 𝑥2 ∨ 𝑥2) ∧ (𝑥1 ∨ 𝑥2 ∨ 𝑥2 כי 𝑃𝑁 ∈ 𝐶𝑉 וגם 𝑃𝑁 ∈ 𝑇𝐴𝑆 .3 − 𝐶𝑁𝐹 −עבור
הרדוקציה תייצר > 𝑘 < 𝐺,מ ,ϕ-כאשר 𝑘 = 𝑚 + 2𝑙 = 8 𝑃𝑁 ∈ 𝐶𝑉 הוכחנו בהרצאה ,נוכיח כי 𝑃𝑁 ∈ 𝑇𝐴𝑆 .3 −
בניית מכונה ל :3SAT-נוכיח כי 𝑃𝑁 ∈ 𝑇𝐴𝑆 .3 −
רעיון ההוכחה :נבנה 𝑁3מ"ט א"ד פולינומית שמכריעה את
השפה 𝑇𝐴𝑆 .3 − 𝐶𝑁𝐹 −אין לנו צורך לבצע בדיקה שאכן
הפסוק ϕמכיל 3ליטרלים בכל פסוקית ,אנחנו מניחים שזה
תקין .הבדיקה היחידה שיש לנו לעשות הוא עבור ההשמה
שננחש ,נרצה לבדוק שההשמה הזאת אכן מספקת את .ϕ
הוכחה :המכונה 𝑁3על הקלט > < ϕתבצע:
הוכחה :נראה רדוקציה 𝐶𝑉𝑃≤𝑇𝐴𝑆 .3 − 𝐶𝑁𝐹 −
.1נחש השמה .π
פונקצית הרדוקציה.𝑓(< ϕ >) =< 𝐺, 𝑘 > : .2נבדוק שאכן 𝑒𝑢𝑟𝑡 = ).ϕ(π
הפעלת הרדוקציה :לכל משתנה 𝑥 ב ,ϕ-ניצור צלע המחבר שני .3אם כן ,קבל .אחרת ,דחה.
קודקודים .אנחנו נסמן את שני הקודקודים האלה ב 𝑥-ו .𝑥‾-כאשר סיבוכיות זמן ריצה :נסמן ב 𝑛-את מספר המשתנים ב.ϕ-
𝐸𝑈𝑅𝑇 = 𝑥 ,וגם 𝐸𝑆𝐿𝐴𝐹 = ‾𝑥 .כל פסוקית היא שלשה של קודקודים .1שורה :1כגודל הניחוש )𝑛(𝑂 = )|.𝑂(|π
המסומנים בהתאם לשלושת הליטרלים בפסוקית הזאת .שלושת .2שורה :2הצבה לבדיקת הסיפוק )|.𝑂(|ϕ
הקודקודים האלה מחוברים ביניהם וגם מחוברים לקודקודי המשתנים סה"כ )| - 𝑂(|ϕפולינומי.
שלהם בהתאם לסימון .נסמן ב 𝑚-את המשתנים ו 𝑙-את הפסוקיות.
הוכחת נכונות :צריך להוכיח ש.3𝑆𝐴𝑇 = 𝐿(𝑁3) :
מספר הקודקודים בגרף 𝐺 הוא 𝑙 2𝑚 + 3וגם 𝑙.𝑘 = 𝑚 + 2
סיבוכיות זמן ריצה :לכל משתנה ניצור 2קודקודים עם צלע ● 𝑇𝐴𝑆 ← < ϕ >∈ 3קיימת השמה πשמספקת את
מחבר ביניהם ,לכל פסוקית ניצור 3קודקודים עם 3צלעות מקבל← הפסוק ←ϕקיים ניחוש של πשיוביל למצב
ביניהם .בנוסף ,לכל ליטרל זהה ב 2-הקבוצות נחבר בצלע. ).< ϕ >∈ 𝐿(𝑁3
● 𝑇𝐴𝑆← < ϕ >∉ 3לכל השמה ,πהיא לא תספק את סה"כ -זמן פולינומי.
תקפות הפונקציה.< ϕ >∈ 3𝑆𝐴𝑇 ⇔ < 𝐺, 𝑘 >∈ 𝑉𝐶 : ← ϕלכל ניחוש נדחה ← ).< ϕ >∉ 𝐿(𝑁3
● 𝑇𝐴𝑆 ← < ϕ >∈ 3יש השמה מספקת ל ← ϕ-נבנה ומכאן 𝑃𝑁 ∈ 𝑇𝐴𝑆 3 − 𝐶𝑁𝐹 −כנדרש.
כיסוי בגודל 𝑙:𝑘 = 𝑚 + 2 מ.ש.ל.
○ מקודקודי המשתנים ,ניקח מכל זוג את הליטרל עם ה.𝑇-
○ מקודקודי הפסוקיות ,נבחר מכל משולש שני קודקודים ,כך הוכחת הרדוקציה.3 − 𝐶𝑁𝐹 − 𝑆𝐴𝑇≤𝑃𝑉𝐶 :
שהשלישי קיבל ערך 𝑇 (חייב להיות כזה כי ההשמה עבור ϕ
רעיון ההוכחה :הרדוקציה ממירה פסוק 𝑓𝑛𝑐 3שנסמנה בϕ-
היא מספקת ,לכן חייב להיות לפחות 𝑇 אחד).
לגרף 𝐺 ומספר 𝑘 ,כך ש ϕספיק כאשר 𝐺 מכיל כיסוי קודקודים
← קיבלנו כיסוי ,כי הצלעות מקבוצת המשתנים מכוסות,
של 𝑘 קודקודים .ההמרה נעשית ללא הידיעה אם ϕספיק או
הצלעות בתוך המשולשים מכוסות והצלעות בין הקבוצות
לא .בפועל 𝐺 ,מסמלץ את .ϕהגרף מכיל כלים שמחקים (חיקוי)
מכוסות :עבור משתנים שקיבלו 𝑇 צד המשתנים וגם עבור
את המשתנים והפסוקיות של .ϕאנחנו ניצור 2קבוצות בגרף
משתנים שקיבלו 𝐹 בצד המשולשים.< 𝐺, 𝑘 >∈ 𝑉𝐶 ← .
שנבנה :קבוצת קודקודי המשתנים וקבוצת קודקודי הפסוקיות.
● 𝐶𝑉 ∈> 𝑘 ← < 𝐺,קיים כיסוי קודקודים בגודל
.1קבוצת קודקודי הפסוקיות :עבור כל פסוקית )𝑧 ∨ 𝑦 ∨ 𝑥(
𝑙 𝑘 = 𝑚 + 2בגרף 𝐺 ← כדי לכסות את כל הצלעות
,נגדיר שלושה קודקודים המחוברים ביניהם.
במשולשים (לבנות פסוקיות עם 3ליטרלים) ,הכיסוי חייב לקחת לפחות
.2קבוצת קודקודי המשתנים :עבור כל משתנה ,נגדיר שני
2קודקודים מכל משולש ← כדי לכסות את הצלעות
קודקודים מחוברים (צלע) ,עבורו ועבור ההופכי שלו.
במשתנים ,הכיסוי חייב לקחת לפחות קודקוד אחד עבור כל
לאחר מכן ,נחבר בין 2הקבוצות שהצגנו ,כלומר נחבר צלעות
משתנה ← .נבנה השמה :לכל משתנה ,נחבר שיהיה 𝑇 אם
בין ליטרלים זהים בשתי הקבוצות -כל משתנה בקבוצת
הקודקוד שלו בכיסוי ,ו 𝐹-אם השלילה בכיסוי .כיוון שהראנו
המשתנים נבחר בצלע עם אותו המשתנה שנמצא בקבוצת
שרק אחד נבחר מכל משתנה ,זו השמה חוקית ← .ההשמה
הפסוקיות .אנחנו נבחר את 𝑘 להיות 𝑙 𝑘 = 𝑚 + 2כאשר 𝑚
שבנינו מספקת :בכל משולש ,הקודקוד שלא נבחר לכיסוי
זה מספר המשתנים ו 𝑙-זה מספר הפסוקיות.
חייב להתחבר לקודקוד משתנה שכן נבחר (אחרת הצלע לא
מכוסה) ,ולכן קיבל ערך 𝑇 ומכאן ← 𝑇𝐴𝑆.< ϕ >∈ 3
דור עזריה
|| 154חישוביות
הוכחה :נראה רדוקציה 𝑇𝐴𝑆.𝑆𝐴𝑇 ≤𝑃 3 רדוקציה .𝐶𝑁𝐹 − 𝑆𝐴𝑇≤𝑃3 − 𝐶𝑁𝐹 − 𝑆𝐴𝑇 :6
לנוחות ,נסמן במקום ב .𝑆𝐴𝑇 ≤𝑃 3𝑆𝐴𝑇 -תחילה צריך להוכיח
פונקצית הרדוקציה.𝑓(< ϕ >) =< ϕ' > : כי 𝑃𝑁 ∈ 𝑇𝐴𝑆 3וגם 𝑃𝑁 ∈ 𝑇𝐴𝑆 .הוכחנו בהרצאה
𝑃𝑁 ∈ 𝑇𝐴𝑆 וגם הוכחנו ברדוקציה הקודמת כי 𝑃𝑁 ∈ 𝑇𝐴𝑆.3
הפעלת הרדוקציה :נבצע המרה בין פסוק ϕרגיל לפסוק 'ϕ
מצורת 𝐹𝑁𝐶 .3 −נסמן ב 𝑛𝑖-את מספר הליטרלים הנמצאים הוכחת הרדוקציה.𝑆𝐴𝑇 ≤𝑃 3𝑆𝐴𝑇 :
בפסוקית 𝑖𝑝 ונבצע המרה בצורה הבאה: רעיון ההוכחה :אנחנו צריכים להמיר כל פסוקית מהפסוק
.1לכל פסוקית בגודל :𝑛 ≤ 2נבחר ליטרל מהפסוקית ונשכפל המקורי 𝑇𝐴𝑆 ∈ ϕלפסוקיות בגודל 3בפסוק 𝑇𝐴𝑆.ϕ' ∈ 3
אותו עד שנגיע ל 3-ליטרלים בפסוקית. אנחנו נראה רדוקציה פולינומית מ 𝑆𝐴𝑇-ל ,3𝑆𝐴𝑇-ואז נוכל
.2לכל פסוקית בגודל :𝑛 = 3נשאיר אותו כמו שהוא. להוכיח ש 3𝑆𝐴𝑇 :היא 𝑃𝑁-שלמה .מספיק להראות איך לתרגם
.3לכל פסוקית בגודל :𝑛 ≥ 4נפצל את הפסוקית ל𝑛 − 2- פסוקית אחת לפסוק 𝐹𝑁𝐶 .3עבור פסוק כללי ,אפשר להפעיל
פסוקיות חדשות המכילות את הליטרלים הקיימים ,יחד עם את התהליך על כל פסוקית לחוד .ההמרה תתבצע בצורה
𝑛 − 3משתני עזר 𝑦 חדשים ונוספים הממלאים את הבאה:
הפסוקיות החדשות לצורה של -3ליטרלים (במידה וחסר). .1לכל פסוקית שיש בה 1או 2ליטרלים ,אנחנו נבחר אחד
מהם ונשכפל אותו בתוך הפסוקית עד שנגיע ל 3-ליטרלים.
סיבוכיות זמן ריצה :בזמן הגרוע ,עבור כל פסוקית בגודל 𝑛, .2לכל פסוקית שיש בה יותר מ 3-ליטרלים ,אנחנו נפצל אותה
נוסיף 𝑛 − 3ליטרלים ו 𝑛 − 2-פסוקיות חדשות ולכן זה לכמה פסוקיות בגודל ,3במידה ונשאר לנו שארית להשלים
מתבצע בזמן פולינומי. אז נבחר במשתנה במשתני עזר 𝑖𝑦 ונשכפל אותם עד שנגיע
ל 3-ליטרלים בכל הפסוקיות.
תקפות הפונקציה.< ϕ' >∈ 3𝑆𝐴𝑇 ⇔ < ϕ >∈ 𝑆𝐴𝑇 :
דוגמה להמחשה :נסמן ליטרל ב 𝑙-ופסוקית ב.𝑝-
● 𝑇𝐴𝑆 ∈> ← < ϕקיימת ל ϕ-השמה מספקת ← πנבנה )(𝑙1) ⇒ (𝑙1 ∨ 𝑙1 ∨ 𝑙1
השמה מספקת לכל פסוקית חדשה ← עבור המשתנים
)(𝑙1 ∨ 𝑙2) ⇒ (𝑙1 ∨ 𝑙2 ∨ 𝑙2
המקוריים ,ההשמה תיתן להם את אותו הערך )𝑙(π'(𝑙) = π
← .ההשמה מספקת ולכן יש לפחות ליטרל אחד 𝑖𝑙 שיקבל )(𝑙1 ∨ 𝑙2 ∨ 𝑙3) ⇒ (𝑙1 ∨ 𝑙2 ∨ 𝑙3
ערך 𝑇 ← עבור משתנים חדשים נבצע לכל 𝑗 ≤ 𝑖 − 2את
𝑇 = )𝑗𝑙(' πוגם נבצע לכל 𝑗 > 𝑖 − 2את 𝐹 = )𝑗𝑙('← .π עבור פסוקית 𝑝 כך ש ,𝑛 ≥ 4 :הפתרון מורכב יותר ודורש
שימוש במשתני עזר שנסמן ב.𝑦1, 𝑦2,...., 𝑦𝑛−3-
כל הפסוקיות יסתפקו ע"י המשתנים החדשים ,מלבד
הפסוקית של 𝑖𝑙 ,שתסתפק כי הוא ערך 𝑇 ← יש השמה באופן כללי ,אם הפסוקית 𝑝 מכילה 𝑛 ליטרלים:
)𝑛𝑙 ∨ 𝑝 = (𝑙1 ∨ 𝑙2 ∨...
מספקת ל.< ϕ' >∈ 3𝑆𝐴𝑇 ← ϕ'-
אז אנחנו יכולים להחליף אותה עם 𝑛 − 2פסוקיות חדשות וגם
● 𝑇𝐴𝑆 ← < ϕ' >∈ 3קיימת השמה מספקת ל ← ϕ'-נניח 𝑛 − 3משתנים חדשים בנוסף לקיימים.
בשלילה ש )𝑖𝑙(' ϕ(𝑙𝑖) = ϕלא השמה מספקת ל← ϕ-
לדוגמה ,נתבונן בפסוקית הבאה:
אז כל הליטרלים קיבלו ערך 𝐹 ← 𝑇 = )𝑖𝑦( ϕכי ההשמה
)(𝑙1 ∨ 𝑙2 ∨ 𝑙3 ∨ 𝑙4) ⇒ (𝑙1 ∨ 𝑙2 ∨ 𝑦1) ∧ (𝑦‾1 ∨ 𝑙3 ∨ 𝑙4
צריכה לספק את ' ← ϕהפסוקית האחרונה לא מסתפקת ←
סתירה ← .לכן ϕ(𝑙𝑖) = ϕ'(𝑙𝑖) ,זו השמה מספקת ל← ϕ- יש לה 𝑛 = 4ליטרלים ,איתה ניצור 𝑛 − 2 = 2פסוקיות
חדשות ונוספו לה 𝑛 − 3 = 1משתנים חדשים (.)𝑦1
𝑇𝐴𝑆 ∈> .< ϕ
ככה אנחנו נפעל לכל פסוקית שנפגוש בתהליך ההמרה כך
מ.ש.ל. שנבדיל בין פסוקיות עם לכל היותר 3ליטרלים ופסוקיות עם
לפחות 4ליטרלים.
דור עזריה
|| 155חישוביות
פתרון -שלב ב' :נוכיח כי 𝐻𝑃𝑁 ∈ 𝑇𝐴𝑆 𝐵𝐴𝐿𝐴𝑁𝐶𝐸𝐷 −בעזרת רדוקציה מ.𝑆𝐴𝑇-
תיאור הרדוקציה :אנו יודעים כי 𝐻𝑃𝑁 ∈ 𝑇𝐴𝑆 ,לכן נראה רדוקציה 𝑇𝐴𝑆 .𝑆𝐴𝑇≤𝑃𝐵𝐴𝐿𝐴𝑁𝐶𝐸𝐷 −
● פונקצית הרדוקציה .𝑓(< ϕ >) =< ϕ' > :כאשר ϕפסוק רגיל ו ϕ'-פסוק עם מספר משתנים זוגי.
● ביצוע :נבנה את הפסוק ' ϕכך שהוא מכיל את הפסוק ϕויחד איתו מחוברים 𝑛 פסוקיות (ב)AND-
טאוטולוגיות (תמיד נכונות) .כלומר ) ‾𝑦 ∨ 𝑦( ∧ .ϕ' = ϕ ∧ (𝑦 ∨ 𝑦‾ ) ∧ ...
1 1 𝑛 𝑛
דור עזריה
|| 156חישוביות
תמונת מצב
לחלק מהשפות בציור עוד לא הוכחנו שייכות אבל נוכיח בהמשך… נשים לב ש.𝐿∞, 𝐿𝑒𝑞, 𝐿 ⋆ ∈ 𝑅𝐸 ∪ 𝑐𝑜𝑅𝐸 :
Σ
דור עזריה
|| 157חישוביות
כעת נלמד כמה שפות נוספות שהם גם בעיות 𝑃𝑁-שלמות בכל מיני תחומים (גרפים ,לוגיקה ,קבוצות וכו')..
איך נוכיח על שפות נוספות? :ברגע שידועה לנו שפה 𝑃𝑁-שלמה אחת ,אפשר להוכיח על שפות נוספות שגם הן
𝑃𝑁-שלמות.
משפט
אם 𝐶𝑃𝑁 ∈ 𝐿1וגם 𝐿2מקיימת את התכונות הבאות:
.𝐿2 ∈ 𝑁𝑃 .1
,𝐿1≤𝑃𝐿2 .2כלומר 𝐿1ניתנת לרדוקציה עם .𝐿2
אז גם 𝐶𝑃𝑁 ∈ .𝐿2
השפה 3SAT
הגדרה :פסוק בתחשיב הפסוקים הוא 𝐹𝑁𝐶 3אם:
.1הפסוק 𝐹𝑁𝐶.
.2בכל פסוקית יש שלושה ליטרלים.
השפה.3𝑆𝐴𝑇 = {< ϕ > | ϕ 𝑖𝑠 𝑎 𝑠𝑎𝑡𝑖𝑠𝑓𝑖𝑎𝑏𝑙𝑒 3𝐶𝑁𝐹 𝐵𝑜𝑜𝑙𝑒𝑎𝑛 𝑓𝑜𝑟𝑚𝑢𝑙𝑎} :
כלומר ,זוהי שפת הפסוקים הספיקים ב.3𝐶𝑁𝐹-
דור עזריה
|| 158חישוביות
.2אם הליטרל החיובי נמצא בפסוקית האחרונה שנוצרה ,אז נוכל להגדיר שלכל ] 𝑗 ∈ [𝑘 − 3יתקיים
𝑇 = 𝑗𝑦 ולכן כל הפסוקיות שנוצרו יסתפקו.
דור עזריה
|| 159חישוביות
.3אם הליטרל החיובי נמצא באמצע ,כלומר בפסוקית ה ,𝑖-אז נוכל להגדיר שלכל ] 𝑗 ∈ [𝑘 − 2יתקיים
𝑇 = 𝑗𝑦 ושלכל 𝑖 − 3 ≤ 𝑗 ≤ 𝑘 − 3יתקיים 𝐹 = 𝑗𝑦 ולכן כל הפסוקיות שנוצרו יסתפקו.
מצד שני -אם הפסוק לא ספיק :נרצה להוכיח שגם צירוף הפסוקיות הבאות לא יסתפק.
מאחר והפסוקיות המקוריות לא הסתפקה ,כל הליטרלים בה שליליים.
נניח בשלילה שהוא כן ספיק ,אם כך ,בהכרח 𝑇 = 𝑦1ולכן בהכרח 𝑇 = 𝑦2ונמשיך ככה עד 𝑇 = 𝑦𝑘−3ונקבל
שהפסוקית אחרונה לא מסתפקת! -סתירה.
∎
הערה :ניתן להגדיר את 𝐹𝑁𝐶 3כך שאין פסוקיות בהן משתנה מופיע יותר מפעם אחת .במצב כזה ,עבור
פסוקית בעלת פחות מ 3-משתנים ,נצטרך לבצע את הרדוקציה אחרת .עבור פסוקית עם שני משתנים
) 𝑙 ∨ 𝑙( ניצור שתי פסוקיות חדשות.(𝑙 ∨ 𝑙 ∨ 𝑥) ∧ (𝑙 ∨ 𝑙 ∨ 𝑥‾) :
1 2 1 2 1 2
נחליף את 𝑖𝐶 בצירוף פסוקיות 𝑖𝑍 כאשר ).𝑍𝑖 = (𝑙𝑖 ∨ 𝑦𝑖,1 ∨ 𝑦𝑖,2) ∧ (𝑙𝑖 ∨ 𝑦𝑖,1 ∨ 𝑦𝑖,2) ∧ (𝑙𝑖 ∨ 𝑦𝑖,1 ∨ 𝑦𝑖,2
דור עזריה
|| 160חישוביות
השפה 2SAT
הגדרה :פסוק בתחשיב הפסוקים הוא 𝐹𝑁𝐶 2אם:
.1הפסוק 𝐹𝑁𝐶.
.2בכל פסוקית יש שני ליטרלים.
השפה.2𝑆𝐴𝑇 = {< ϕ > | ϕ 𝑖𝑠 𝑎 𝑠𝑎𝑡𝑖𝑠𝑓𝑖𝑎𝑏𝑙𝑒 2𝐶𝑁𝐹 𝐵𝑜𝑜𝑙𝑒𝑎𝑛 𝑓𝑜𝑟𝑚𝑢𝑙𝑎} :
כלומר ,זוהי שפת הפסוקים הספיקים ב.2𝐶𝑁𝐹-
משפט2𝑆𝐴𝑇 ∈ 𝑃 :
מבוא להוכחה :במקרה של פסוקית שיש בה רק שני ליטרלים ,אם ידוע לנו על אחד מהם שהוא 𝐹 אז השני חייב
להיות 𝑇 כדי שהפסוק יסתפק .מה שאומר שניתן לבנות גרף מכוון שירכז את כל התנאים של כל הפסוקיות
ולהשתמש בגרף הנ"ל כדי למצוא השמה מספקת .כך שאם השמה זו לא קיימת ,נוכל לזהות זאת ולהחזיר
תשובה שלילית.
הוכחה :נוכיח ע"י בניית גרף שייצג שקילות לוגית לפסוק .הבנייה תעשה בזמן פולינומי ,הפעולות על הגרף ייעשו
בזמן פולינומי ,סה"כ נקבל אלגוריתם פולינומי הבודק האם פסוק 𝐹𝑁𝐶 2ספיק.
הפסוק שנעסוק בו הוא 𝑚𝐶 ∧ ϕ(𝑥1,..., 𝑥𝑛) = 𝐶1 ∧ 𝐶2 ∧ ...בעל 𝑚 פסוקיות.
תזכורת :1פסוקית מהצורה )𝑗𝑙 ∨ 𝑖𝑙( שקולה לוגית לפסוק 𝑗𝑙 → 𝑖‾𝑙 ולפסוק 𝑖𝑙 → 𝑗‾𝑙.
תזכורת .¬¬𝑥 = 𝑥 :2
המשך :נייצג כל פסוקית )𝑗𝑙 ∨ 𝑖𝑙( בגרף ע"י השקילות הלוגית )𝑖𝑙 → 𝑗‾𝑙( ∧ )𝑗𝑙 → 𝑖‾𝑙(.
נרצה לבנות את הגרף )𝐸 𝐺 = (𝑉,באופן הבא:
● קבוצת הקודקודים.𝑉 = {𝑥𝑖, 𝑥‾𝑖 : 𝑖 ∈ [𝑛]} :
דור עזריה
|| 161חישוביות
הסבר בעברית (תכל'ס) לבניית הגרף שהצגנו :ניצור גרף )𝐸 𝐺 = (𝑉,עם 𝑛 2קודקודים .אינטואיטיבית ,לכל
משתנה ניצור 2קודקודים ,קודקוד ראשון לעצמו וקודקוד שני לשלילה שלו .לכל פסוקית )𝑏 ∨ 𝑎( כאשר 𝑏 𝑎,
הם ליטרלים ,ניצור צלע מכוונת )𝑏 (𝑎‾,וגם )𝑎 .(𝑏‾,הצלעות האלה אומרות בעצם שאם 𝑎 הוא 𝐹 ,אז 𝑏 חייב
להיות 𝑇 (להפך) .מכאן ,קיים צלע מכוונת )𝐺(𝐸 ∈ )𝑏 (𝑎,אם"ם קיים פסוקית .(𝑎‾, 𝑏) ∈ ϕ
.𝑣‾𝑘 → 𝑣𝑘−1
𝑣‾ → 𝑣‾ , 𝑣‾ → 𝑣‾ , ....שיגררו את קיום המסלול‾ →... → 𝑣‾ → 𝑣‾ :
2 1 2 1 3 2
, 𝑣‾𝑘 → 𝑣𝑘−1
‾
אבחנה :2לכל צלע 𝑣 → 𝑢 מתקיים :אם הקודקוד 𝑢 קיבל 𝑇 אז גם הקודקוד 𝑣 צריך לקבל 𝑇.
למה? כי )𝑣 ∨ ‾𝑢( ≡ 𝑣 → 𝑢.
ננסח קריטריון כללי :אין השמה מספקת לפסוק אם"ם קיים משתנה 𝑥 כך שקיים מעגל מכוון:
.1קיים מסלול מ 𝑥-ל 𝑥‾-בגרף.
.2קיים מסלול מ 𝑥‾-ל 𝑥-בגרף.
הוכחת הקריטריון:
● כיוון א' -אם לא קיים בגרף משתנה 𝑥 כך ש 𝑥 :וגם ‾𝑥 נמצאים שניהם על מעגל מכוון אחד ,אזי קיימת
השמה מספקת לפסוק .נניח שלא קיים קודקוד 𝑥 כך שיש מסלול מ 𝑥-לעבר ‾𝑥 ,וגם יש מסלול מ𝑥‾-
לעבר 𝑥 .נחפש קודקוד (ליטרל) שנסמן ב 𝑢‾-אשר יש ממנו מסלול אל שלילתו .כלומר 𝑢 → ,𝑢‾ →...אם
לא קיים מסלול כזה ,נבחר קודקוד כלשהו.
○ ניתן לליטרל 𝑇 = 𝑢 ולליטרל 𝐹 = ‾𝑢.
○ לכל הקודקודים שיש מסלול אליהם מ ,𝑢-ניתן ערך 𝑇 ו 𝐹-לשלילתם.
יש שתי בעיות שעלולות לצוץ בשיטה זו:
.1יש מסלול מ 𝑢-לקודקוד כלשהו 𝑤 וגם מסלול מ 𝑢-ל :𝑤‾-בגלל הסימטריה של הגרף ,מכיוון שיש
מסלול מ 𝑢-אל 𝑤 אז גם יש מסלול מ 𝑤‾-אל ‾𝑢 ,כלומר יש מעגל המכיל את 𝑢 וגם את ‾𝑢,
בסתירה להנחה.
דור עזריה
|| 162חישוביות
.2יש קודקוד שנרצה לתת לו ערך 𝑇 אבל הוא כבר קיבל ערך 𝐹 :זה יקרה אם ‾𝑤 קיבל 𝑇 .כלומר
יש מסלול מ 𝑢-אל ‾𝑤 .שוב ,בגלל הסימטריה שלה הגרף ,נובע שיש מסלול מ 𝑤-אל ‾𝑢 ,בסתירה
להנחה.
● כיוון ב' -אם קיים בגרף משתנה 𝑥 כך ש 𝑥 :וגם ‾𝑥 נמצאים שניהם על מעגל מכוון אחד ,אזי אין השמה
מספקת לפסוק .נניח שיש קודקוד 𝑥 כך שיש מסלול מ 𝑥-לעבר ‾𝑥 ,וגם יש מסלול מ 𝑥‾-לעבר 𝑥.
○ אם 𝑇 = 𝑥 אז צריך שגם 𝑇 = ‾𝑥 וזו סתירה!.
○ אם 𝑇 = ‾𝑥 אז צריך שגם 𝑇 = 𝑥 וזו גם סתירה!
המשך ההוכחה :לסיכום ,בהינתן פסוק 𝐹𝑁𝐶 2נתאר מכונה/אלגוריתם דטרמיניסטי פולינומי:
𝑇𝐴𝑆 𝑀2על קלט > < ϕתבצע:
.1בונה את הגרף הנ"ל.
.2לכל 𝑉 ∈ 𝑣 תבצע:
.aמבצעת 𝑆𝐹𝐵 (או 𝑆𝐹𝐷) מ.𝑣-
.bאם קיים מסלול מ 𝑣-אל ‾𝑣 ,מבצעת גם 𝑆𝐹𝐵 מ ,𝑣‾-אם נמצא שהמסלול מגיע חזרה אל 𝑣 -
אז דחה.
.3קבל.
נכונות הבניה :נובעת ישירות נכונות הקריטריון שהוכחנו.
2
סיבוכיות זמן ריצה :סיבוכיות של 𝑆𝐹𝐷 היא ) 𝑛 𝑂(|𝑉| + |𝐸|) = 𝑂(𝑛 +ונבצע את ה 𝐷𝐹𝑆-למשך |𝑉| = 𝑛
3
פעמים .סה"כ נקבל ) 𝑛(𝑂 -זמן פולינומי.
∎
הסבר תכל'ס :נסתמך בשיטת הבדיקה הבאה :לפי בדיקת קיימות המסלול ‾𝑥 → 𝑥 או/גם 𝑥 → ‾𝑥 בגרף 𝐺,
אנחנו יכולים להכריע האם ההשמה מספקת את ϕאו לא .קיום המסלול מצומת אחת לאחר יכולה להתבצע
באלגוריתמים טריוויאלים לחיפוש בגרף כמו 𝑆𝐹𝐵 או 𝑆𝐹𝐷 .שני האלגוריתמים האלה הם בזמן פולינומי
)𝐸 𝑂(𝑉 +ולכן אפשר להוכיח בצורה הזאת כי 𝑃 ∈ 𝑇𝐴𝑆.2
דור עזריה
|| 163חישוביות
}𝑟𝑒𝑣𝑜𝑐 𝑥𝑒𝑡𝑟𝑒𝑣 𝑒𝑑𝑜𝑛 𝑉𝐸𝑅𝑇𝐸𝑋 − 𝐶𝑂𝑉𝐸𝑅 = {< 𝐺, 𝑘 > | 𝐺 𝑖𝑠 𝑎𝑛 𝑢𝑛𝑑𝑖𝑟𝑒𝑐𝑡𝑒𝑑 𝑔𝑟𝑎𝑝ℎ 𝑡ℎ𝑎𝑡 ℎ𝑎𝑠 𝑎 𝑘 −
חלק ב' :נוכיח כי 𝐻𝑃𝑁 ∈ 𝐶𝑉 בעזרת רדוקציה 𝐶𝑉𝑃≤𝑇𝐴𝑆 .3לכל פסוק 𝐹𝑁𝐶 ,ϕ ∈ 3יש לבנות זמן פולינומי
בגודל של ,ϕגרף לא מכוון 𝐺 ומספר טבעי 𝑘 ,כך שב 𝐺-יש 𝐶𝑉 בגודל 𝑘 אם ורק אם ϕספיק.
בהינתן פסוק 𝐹𝑁𝐶 3עם 𝑛 משתנים ו 𝑚-פסוקיות ,כאשר כל פסוקית 𝑖 φהיא פסוקית עם 3ליטרלים וגם כל
ליטרל הוא מהצורה 𝑘𝑥 = 𝑗𝑖𝑙 או 𝑘‾𝑥 = 𝑗𝑖𝑙 .נבנה את הגרף הבא )𝐸 :𝐺 = (𝑉,
● קבוצת הקודקודים:
}.𝑉 = {𝑥𝑖| 1 ≤ 𝑖 ≤ 𝑛} ∪ {𝑥‾𝑖| 1 ≤ 𝑖 ≤ 𝑛} ∪ {𝑙𝑗𝑟| 1 ≤ 𝑗 ≤ 𝑚 , 1 ≤ 𝑟 ≤ 3
צומת לכל משתנה צומת שלילה לכל משתנה לכל פסוקית ,jניצור שלושה צמתים
דור עזריה
|| 164חישוביות
דור עזריה
|| 165חישוביות
○ נניח ש ,< 𝐺, 𝑘 >∈ 𝑉𝐶 :בגרף יש תת-קבוצה של קודקודים 𝑆 שהיא כיסוי קודקודים בגודל
𝑛 𝑘 = 2𝑚 +בדיוק .נשתמש ב 𝑆-הנ"ל כדי למצוא השמה המספקת את הפסוק .ϕ
ראשית ,כדי לכסות צלעות של משולש ,צריך לבחור לפחות שני קודקודים ,וכדי לכסות צלע בין
משתנה לשלילתו צריך לפחות קודקוד אחד .מכיוון ש ,|𝑆| = 2𝑚 + 𝑛 :נובע ש 𝑆-אכן מכיל
לפחות קודקוד אחד מכל צלע של משתנה ושלילתו ,ולפחות 2קודקודים מכל משולש של
פסוקית .נגדיר השמה מספקת ל ϕ-באופן הבא :ההשמה תתן 𝑇 לליטרלים שנבחרו ל 𝑆-מתוך
הצלעות בין משתנה ושלילתו ,ו 𝐹-לאחרים .ההשמה הנ"ל חייבת להיות השמה מספקת -
אחרת ,נקבל שיש משולש שכל הצלעות שיוצאות ממנו לא מגיעות לקודקוד כלשהו ב ,𝑆-וזאת
סתירה לכך ש 𝑆-היא כיסוי קודקודים של 𝐺 .נרצה להראות שיש לפחות ליטרל אחד חיובי בכל
פסוקית ,מה שיגרור שהפסוק ספיק .נניח בשלילה שהיא לא מספקת את הפסוק -אם כך ,יש
לפחות פסוקית אחת שלא מסתפקת .מכאן שכל הליטרלים בה שליליים .בדיוק שני קודקודים
מכל משולש נבחרו .נתבונן בקודקוד שלא נבחר בפסוקית זו .כדי שהליטרל בפסוקית
שקודקוד זה מייצג לא יסתפק -הקודקוד שמייצג את ליטרל זה בחלק העליון לא נבחר אל 𝑆.
מאחר וגם הקודקוד בפסוקית לא נבחר אליה ,הצלע ביניהם לא מכוסה ,סתירה.
∎
תרגיל :הוכיחו :קבוצת צמתים 𝑈 בגרף לא מכוון 𝐺 היא כיסוי קודקודים ב ,𝐺-אם"ם 𝑈\𝑉 היא קבוצה ב"ת ב.𝐺-
פתרון:
● כיוון א' :נניח ש 𝑆-היא קבוצה בלתי תלויה ב ,𝐺-אזי אין צלעות המחברות שני קודקודים ב ,𝑆-כלומר ,כל
צלעות הגרף נוגעות בלכל היותר קודקוד אחד מ .𝑆-אזי הקבוצה 𝑆\𝑉 נוגעת בלפחות קודקוד אחד
מכל צלע בגרף ,כלומר 𝑆\𝑉 היא כיסוי קודקודים.
● כיוון ב' :נניח ש 𝑉\𝑆-היא כיסוי קודקודים ב ,𝐺-אזי כל צלע ב 𝐺-היא בעלת לפחות קודקוד אחד
בקבוצה 𝑆\𝑉 .מכאן שאין צלעות שחלות על שני קודקודים מ ,𝑆-כלומר 𝑆 היא קבוצה בלתי תלויה.
∎
דור עזריה
|| 166חישוביות
דור עזריה
|| 167חישוביות
תרגיל ממבחן
יהי }𝐶𝑙𝑖𝑞𝑢𝑒𝐼𝑆 = {< 𝐺, 𝑘1, 𝑘2 > | 𝐺 𝑖𝑠 𝑎 𝑔𝑟𝑎𝑝ℎ 𝑤𝑖𝑡ℎ 𝑎 𝐶𝑙𝑖𝑞𝑢𝑒 𝑜𝑓 𝑠𝑖𝑧𝑒 𝑘1 𝑂𝑅 𝑎𝑛 𝐼𝑆 𝑜𝑓 𝑠𝑖𝑧𝑒 𝑘2
סווגו את 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶 ל.𝑁𝑃𝐶/𝑁𝑃/𝑃-
פתרון .𝐶𝑙𝑖𝑞𝑢𝑒𝐼𝑆 ∈ 𝑁𝑃𝐶 :צריך להראות 𝑃𝑁 ∈ 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶 וגם 𝐻𝑃𝑁 ∈ 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶.
נוכיח כי 𝑃𝑁 ∈ 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶 ,נציג הוכחה של חלק זה ב 2-שיטות.
נבנה 𝑁 מ"ט א"ד פולינומית המכריעה את השפה 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶. .1
.2נוכיח ביחס 𝐿𝑅.
שיטה - 1בניית מכונה :המכונה 𝑁 על הקלט > < 𝐺, 𝑘1, 𝑘2תבצע:
.1נחש קבוצת קודקודים 𝑆1בגודל 𝑘1וקבוצת קודקודים 𝑆2בגודל .𝑘2
.2בדוק האם הקבוצה 𝑆1היא קליקה ,אם כן -קבל.
.3בדוק האם הקבוצה 𝑆2היא בלתי תלויה ,אם כן -קבל.
.4אחרת ,דוחה.
שיטה - 1סיבוכיות זמן ריצה :המכונה 𝑁 היא פולינומית ,הניחוש חסום פולינומית ).2|𝑉(𝐺)| ≥ (𝑘1 + 𝑘2
2 2
בנוסף ,הבדיקה של 𝑆1לקליקה חסום ב ,𝑂(𝑘1 )-הבדיקה של 𝑆2לב"ת חסום ב.𝑂(𝑘2 )-
סך הכל ,פולינומי (ריבועי) בקלט.
שיטה - 1הוכחת נכונות הבניה:
● 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶 ∈> ← < 𝐺, 𝑘1, 𝑘2קיימת קליקה בגודל 𝑘1או קבוצה ב"ת בגודל ← 𝑘2קיים ניחוש כזה
והמכונה 𝑁 תנחש נכון ותקבל ← )𝑁(𝐿 ∈> .< 𝐺, 𝑘1, 𝑘2
● 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶 ∉> ← < 𝐺, 𝑘1, 𝑘2לא קיימת קליקה בגודל 𝑘1ולא קבוצה ב"ת בגודל ← 𝑘2לכל ניחוש,
המכונה 𝑁 תדחה ← )𝑁(𝐿 ∉> .< 𝐺, 𝑘1, 𝑘2
שיטה - 2הגדרת היחס :נגדיר את היחס 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶𝑅 .עבור 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶𝑅 ∈ )𝑦 (𝑥,נגדיר את > 𝑥 =< 𝐺, 𝑘1, 𝑘2
| | | |
ונגדיר את העד 𝑦 =< 𝑆1, 𝑆2 > :כאשר . 𝑆1 = 𝑘1 , 𝑆2 = 𝑘2
שיטה - 2היחס חסום פולינומית :העד 𝑦 חסום פולינומית ב.2|𝑉(𝐺)|-
שיטה - 2היחס ניתן להכרעה פולינומית :המכונה המוודאת 𝑉 על קלט )> (< 𝐺, 𝑘1, 𝑘2 >, < 𝑆1, 𝑆2תוודא:
.1האם 𝑆1קליקה ,אם כן -קבל.
.2האם 𝑆2ב"ת ,אם כן -קבל.
.3אחרת -דחה.
2
שיטה - 2המכונה המוודאת חסום פולינומי :הבדיקה של 𝑆1לקליקה חסום ב ,𝑂(𝑘1 )-הבדיקה של 𝑆2לב"ת
2
חסום ב .𝑂(𝑘2 )-סך הכל ,פולינומי (ריבועי) בקלט.
דור עזריה
|| 168חישוביות
סיכום שלב :1הוכחנו 𝑃𝑁 ∈ 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶 ב 2-שיטות )1 :בניית מכונה א"ד )2 .יחס 𝐿𝑅.
סיכום :הוכחנו 𝑃𝑁 ∈ 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶 בעזרת בנית מ"ט א"ד פולינומית וגם בדרך אחרת עם יחס 𝐿𝑅.
בשלב השני ,הוכחנו 𝐻𝑃𝑁 ∈ 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶 בעזרת הרדוקציה הפולינומית 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶𝑃≤𝐸𝑈𝑄𝐼𝐿𝐶.
ומכאן 𝐶𝑃𝑁 ∈ 𝑆𝐼𝑒𝑢𝑞𝑖𝑙𝐶.
∎
דור עזריה
|| 169חישוביות
}𝑡 𝑜𝑡 𝑠 𝑚𝑜𝑟𝑓 𝐻𝐴𝑀𝑃𝐴𝑇𝐻 = {< 𝐺, 𝑠, 𝑡 > | 𝐺 𝑖𝑠 𝑎 𝑑𝑖𝑟𝑒𝑐𝑡𝑒𝑑 𝑔𝑟𝑎𝑝ℎ 𝑤𝑖𝑡ℎ 𝑎 𝐻𝑎𝑚𝑖𝑙𝑡𝑜𝑛𝑖𝑎𝑛 𝑝𝑎𝑡ℎ
דור עזריה
|| 170חישוביות
טיפול בצלעות:
אם 𝑖𝑥 מופיע בפסוקית 𝑗𝑐 ,נוסיף 2צלעות מהקבוצה אם 𝑖𝑥 מופיע בפסוקית 𝑗𝑐 ,נוסיף 2צלעות מהקבוצה
ה-𝑗-ית בשרשרת לקודקוד הפסוקית ה 𝑗-ביהלום ה-𝑗-ית בשרשרת לקודקוד הפסוקית ה 𝑗-ביהלום
(המשתנה) ה ,𝑥𝑖-אבל ברוורס. (המשתנה) ה.𝑥𝑖-
תקפות:
● 𝑇𝐴𝑆 ϕ ← < ϕ >∈ 3ספיק ← אם
נתעלם לרגע מקודקודי הפסוקיות ,נשים
לב שביהלומים קיים מסלול המילטוני:
נתחיל מ 𝑠-ונטייל לאורך כל יהלום עד
שנגיע ל ← .𝑡-ביהלום ה ,𝑖-הוא מטייל
משמאל לימין או מימין לשמאל ,תלוי
בערך של 𝑖𝑥 (כלומר 𝐹 ← .)𝑇/קודקודי
הפסוקיות יכולים להשתלב במסלול בעזרת בניית 2הצלעות שסיפקנו להם מהיהלומים ← .מצד אחד,
אם 𝑇 = 𝑖𝑥 ונמצא בפסוקית 𝑗𝑐 ,אז אפשר לעשות מסלול הלוך וחזור (אל הצומת 𝑗𝑐 וחזרה לשרשרת
בכיוון הנכון) .מצד שני ,אם 𝑇 = 𝑖‾𝑥 ונמצא בפסוקית 𝑗𝑐 ,אז אפשר לעשות מסלול הלוך וחזור (אל
הצומת 𝑗𝑐 וחזרה לשרשרת בכיוון הנכון) אבל בכיוון ההפוך< 𝐺 >∈ 𝐻𝐴𝑀𝑃𝐴𝑇𝐻 ← .
● 𝐻𝑇𝐴𝑃𝑀𝐴𝐻 ∈> 𝐺 < ← קיים מסלול אוילר בגרף 𝐺 ← אם המסלול נורמלי ,אז הוא מטייל מ𝑠-
בזיגזגים לאורך היהלומים ← קיימת השמה מספקת עבור .< ϕ >∈ 3𝑆𝐴𝑇 ← .ϕ
∎
דור עזריה
|| 171חישוביות
}𝑡 = 𝑖𝑦𝑆𝑈𝐵𝑆𝐸𝑇 − 𝑆𝑈𝑀 = {< 𝑆, 𝑡 > | 𝑆 = {𝑥1,.., 𝑥𝑛}, ∃{𝑦1,.., 𝑦𝑘} ⊆ 𝑆, Σ
○ בפסוקית 𝑖𝑐 קיים 𝑖‾𝑥 אם"ם בשורה 𝑖𝑧 ובעמודה 𝑖𝑥 יהיה .1ביתר השורה עבור יתר הפסוקיות יהיה .0
באגף הימני של המשתנים :נרפד ב.0-
באגף השמאלי של הפסוקיות :בשורות 𝑗𝑔 ℎ𝑖,בעמודה ה 𝑐𝑗-יהיה 1וביתר הפסוקיות יהיה .0
דור עזריה
|| 172חישוביות
תרגיל ( 3עוד לא סיימנו להוכיח) :הוכיחו שהיא ניתנת לחישוב בזמן פולינומי .הוכיחו שהרדוקציה תקפה.
פתרון :3יש לנו בדיוק 𝑚 𝑛 +משתנים ,כל אחד מהם בדיוק באורך 𝑚 .𝑛 +סה"כ )𝑚 × 𝑛(𝑂 -פולינומי.
מסקנה 𝑆𝑈𝐵𝑆𝐸𝑇 − 𝑆𝑈𝑀 :היא 𝑃𝑁-שלמה.
דור עזריה
|| 173חישוביות
מספר כרומטי 2אם ורק אם הוא דו-צדדי ,ותכונה זו ניתנת לזיהוי בזמן ליניארי במספר הקשתות.
תקפות הרדוקציה:
● נניח ש ϕ-ספיק ונרצה להוכיח שהגרף הוא צביע .לכל פסוקית יש לפחות ליטרל אחד חיובי .ניקח ליטרל
אחד חיובי כזה ובהתאמה לאיור משמאל? ,נצבע אותו בירוק ,את הקודקוד תחתיו באדום ואת
הקודקוד תחתיו בכחול .את יתר השורה העליונה נבצע באדום .את יתר השורה האמצעית נצבע בכחול.
ואת יתר הקודקודים הנותרים בשורה התחתונה נצבע בהתאמה לאיור .סה"כ לכל 'תוספת' של פסוקית
תהיה השמה מספקת .ההשמות מכבדות זו את זה.
● נניח שישנו גרף בצורה הזו ונרצה לבנות ל ϕ-השמה מספקת .תחילה נשים לב שההשמות חוקיות -לכל
ליטרל יהיה בדיוק ערך אחד )ירוק או אדום( ,משום שהם מחוברים ל . 𝐵 -בנוסף ,לכל משתנה תהיה
השמה אחת בדיוק שהפוכה לשלילה שלו -משום שבין כל משתנה ושלילתו יש צלע .ניקח צביעה כלשהי
ונקבע השמה באופן הבא -כל ליטרל שבירוק יהיה 𝑇 .נותר להראות שכל פסוקית מסתפקת .נניח
בשלילה שישנה פסוקית שלא מסתפקת ,אם כך כל הקודקודי המייצגים את הליטרלים שלה הם
באדום .אם כך ,כל קודקודי האמצע הם כחולים בהכרח ,משום שלכל אחד מהם שכן כחול ושכן ירוק.
סתירה.
דור עזריה
|| 174חישוביות
הסבר :אנחנו עושים רדוקציה 𝑅𝑂𝐿𝑂𝐶𝑝≤𝑇𝐴𝑆 ,𝐶𝑁𝐹 −נעזר ברדוקציות שכבר הוכחנו בקורס ככלי לפתרון
הבעיה שלנו .נעביר לצורת 𝑇𝐴𝑆 3בעזרת 𝑇𝐴𝑆 ,𝐶𝑁𝐹 − 𝑆𝐴𝑇≤𝑝3 − 𝐶𝑁𝐹 −לאחר מכן ,נעביר לצורת
𝑅𝑂𝐿𝑂𝐶 3בעזרת 𝑅𝑂𝐿𝑂𝐶 3 − 𝐶𝑁𝐹 − 𝑆𝐴𝑇≤𝑝3ואז נבחר 𝑘 = 3שיתאים לבעיה 𝑅𝑂𝐿𝑂𝐶.
פונקצית הרדוקציה שלנו היא ) .𝑓(< ϕ >) = (𝑔(ℎ(ϕ)), 3כאשר > 𝐺 <= )) 𝑔(ℎ(ϕכלשהו.
פתרון:
נסמן ב ℎ-את פונקצית הרדקוציה של 𝑇𝐴𝑆 .𝐶𝑁𝐹 − 𝑆𝐴𝑇≤𝑝3 − 𝐶𝑁𝐹 −
נסמן ב 𝑔-את פונקצית הרדקוציה של 𝑅𝑂𝐿𝑂𝐶.3 − 𝐶𝑁𝐹 − 𝑆𝐴𝑇≤𝑝3
פונקצית הרדוקציה.𝑓(< ϕ >) = (𝑔(ℎ(ϕ)), 3) :
תקפות:
● 𝑇𝐴𝑆 ,ℎ(< ϕ >) =< ϕ' >∈ 3 − 𝐶𝑁𝐹 − 𝑆𝐴𝑇 ← < ϕ >∈ 𝐶𝑁𝐹 −מהתקפות של ← ℎ
𝑅𝑂𝐿𝑂𝐶 ,𝑔(ℎ(< ϕ >)) = 𝑔(< ϕ' >) =< 𝐺 >∈ 3מהתקפות של 𝑔 ←
𝑅𝑂𝐿𝑂𝐶 ∈ ).(𝑔(ℎ(< ϕ >)), 3
● 𝑅𝑂𝐿𝑂𝐶 ∈ ) ← 𝑔(ℎ(< ϕ >)) ∈ 3𝐶𝑂𝐿𝑂𝑅 ← (𝑔(ℎ(< ϕ >)), 3לפי התקפות של 𝑔 נקבל כי
𝑇𝐴𝑆 ← ℎ(< ϕ >) ∈ 3 − 𝐶𝑁𝐹 −לפי התקפות של ℎנקבל כי 𝑇𝐴𝑆 .< ϕ >∈ 𝐶𝑁𝐹 −
∎
דור עזריה
|| 175חישוביות
דור עזריה
|| 176חישוביות
דור עזריה
|| 177חישוביות
● 𝑒𝑢𝑞𝑖𝑙𝐶𝑑𝑛𝐴𝑚𝑎𝐻 ∈ ) ← (< 𝐺 >, 1יש ב 𝐺-מסלול המילטוני וגם קליקה בגודל ← 1
𝐻𝑇𝐴𝑃𝑀𝐴𝐻 ∈> 𝐺 <.
∎
תרגיל - 4תרגול 7
נתונה השפה:
}𝑇 = )𝑗𝑥(𝐿log𝑛 = {ϕ| ϕ ℎ𝑎𝑠 𝑎 𝑠𝑎𝑡𝑖𝑠𝑓𝑦𝑖𝑛𝑔 𝑎𝑠𝑠𝑖𝑔𝑛𝑚𝑒𝑛𝑡 π, 𝑎𝑛𝑑 ∃𝑖 𝑠. 𝑡. ∀𝑗∉[𝑖+1,𝑖+2,...,𝑖+log𝑛]π
האם השפה ב 𝑃-או ב?𝑁𝑃𝐶-
בשפת בני אנוש :קיימת ל ϕ-השמה מספקת ,כך שכל המשתנים מקבלים 𝑇 חוץ מרצף של )𝑛( logמשתנים
שיכולים לקבל מה שבא להם 𝑇 או 𝐹.
)𝑛(log2
2אופציות ,כי הסבר לפתרון :אם יש לנו )𝑛( log2משתנים שאפשר לשחק איתם איך שבא לנו ,אז יש לנו
לכל אחד מה-log2(𝑛)-ים יש 2אפשרויות .{𝑇, 𝐹} :בדרך כלל אמרנו שאנחנו לא יכולים לבדוק השמה מספקת
)𝑛(log2 𝑛
2אופציות ,ולפי חוקי לוג כי יש לנו לעבור על 2אופציות שזה אקספוננציאלי ,אבל עכשיו יש לנו
)𝑛(𝑎log
𝑎 כלומר יש לנו 𝑛 אופציות וזה אכן פולינומי! .לכן.𝐿log𝑛 ∈ 𝑃 , 𝑛=
פתרון .𝐿log𝑛 ∈ 𝑃 :נבנה מ"ט דטרמיניסטית מכריעה עבור 𝑛.𝐿log
𝑀 על קלט ϕתבצע:
● עבור )𝑛(: 0 ≤ 𝑖 ≤ 𝑛 − log
○ עבור כל השמה של המשתנים בסדר רציף )𝑛(:𝑥𝑖+1, 𝑥𝑖+2,..., 𝑥𝑖+log
■ אם ההשמה הנוכחית +כל שאר המשתנים קיבלו 𝑇 -קבל.
● דחה.
)𝑛(log
← 2סה"כ נבדוק )𝑛 · 𝑛(𝑂 סיבוכיות זמן ריצה :עבור כל 𝑖 ,מספר ההשמות האפשריות הוא 𝑛 =
3
השמות ← בדיקה של השמה אחת )𝑛(𝑂 ← זמן הריצה של המכונה הוא ) 𝑛(𝑂 -פולינומי.
נכונות הבניה :נובעת ישירות מהבניה.
∎
דור עזריה
|| 178חישוביות
דור עזריה
|| 179חישוביות
דור עזריה
|| 180חישוביות
כעת נותר להראות כי 𝐻𝑃𝑁 ∈ 𝑇𝐴𝑆 𝑁𝐴𝐸 − 3 − 𝐶𝑁𝐹 −על ידי שתי רדוקציות:
𝑇𝐴𝑆 3 − 𝐶𝑁𝐹 − 𝑆𝐴𝑇≤𝑝𝑁𝐴𝐸 − 4 − 𝐶𝑁𝐹 − 𝑆𝐴𝑇≤𝑝𝑁𝐴𝐸 − 3 − 𝐶𝑁𝐹 −
דור עזריה
|| 181חישוביות
○ אם 𝐹 = )𝑤( ,πבכל פסוקית יש משתנה "מהמקוריים" שקיבל 𝑇 ולכן ההשמה מספקת גם
את . ϕ
○ אם 𝑇 = )𝑤( ,πאז ניקח את ההופכה שלה ‾
,πולפי האבחנה שהצגנו ,גם ההשמה הזאת
מספקת את 'ϕ
← 𝑇𝐴𝑆 .ϕ ∈ 3 − 𝐶𝑁𝐹 −
← בכל מקרה ,נקבל השמה 𝐸𝐴𝑁 מספקת ל← (𝑥1 ∨ 𝑥2 ∨ 𝑤𝑖) ∧ (𝑤‾ 𝑖 ∨ 𝑥3 ∨ 𝑥4)-
𝑇𝐴𝑆 .ϕ' ∈ 𝑁𝐴𝐸 − 3 − 𝐶𝑁𝐹 −
● 𝑇𝐴𝑆 ← ϕ' ∈ 𝑁𝐴𝐸 − 3 − 𝐶𝑁𝐹 −קיימת השמה 𝐸𝐴𝑁 מספקת לכל פסוקית
) ← (𝑥1 ∨ 𝑥2 ∨ 𝑤𝑖) ∧ (𝑤‾ 𝑖 ∨ 𝑥3 ∨ 𝑥4בה"כ ניתן להניח ש ← 𝑤𝑖 = 𝑇 :לכן 𝑥1או 𝑥2קיבלו 𝐹 ←
לכן 𝐹 = 𝑖 ‾𝑤 ← וגם 𝑥3או 𝑥4קיבלו 𝑇 ← ההשמה 𝐸𝐴𝑁 מספקת את )← (𝑥1 ∨ 𝑥2 ∨ 𝑥3 ∨ 𝑥4
𝑇𝐴𝑆 .ϕ ∈ 𝑁𝐴𝐸 − 4 − 𝐶𝑁𝐹 −
∎
דור עזריה
|| 182חישוביות
תכונה :2בכל צביעה של צמתים 𝑑 𝑎, 𝑏, 𝑐,כך ש 𝑎 = 𝑏 :וגם 𝑑 = 𝑐 ,ניתן להרחיב לצביעה יחידה של 𝑊 כולו.
הגדרת השפה:
}𝑔𝑛𝑖𝑟𝑜𝑙𝑜𝑐 3 − 𝑃𝐿𝐴𝑁𝐴𝑅 − 𝐶𝑂𝐿𝑂𝑅 = {< 𝐺 > | 𝐺 𝑖𝑠 𝑎 𝑝𝑙𝑎𝑛𝑎𝑟 𝑔𝑟𝑎𝑝ℎ 𝑎𝑛𝑑 ℎ𝑎𝑠 𝑎 𝑣𝑎𝑙𝑖𝑑 3 −
תרגיל :הוכיחו 𝐻𝑃𝑁 ∈ 𝑅𝑂𝐿𝑂𝐶 .3 − 𝑃𝐿𝐴𝑁𝐴𝑅 −
פתרון :נפתור ברדוקציה.3𝐶𝑂𝐿𝑂𝑅≤𝑃3 − 𝑃𝐿𝐴𝑁𝐴𝑅 − 𝐶𝑂𝐿𝑂𝑅 :
בעצם אנחנו רוצים לקחת גרף
ולהפוך אותו למישורי וגם לשמור
על תכונת הצביעות.
תיאור הרדוקציה (לא פורמלי):
נצייר את הגרף במישור .בכל
מקום שיש חיתוך בין שתי
צלעות ,נכניס את הגרף 𝑊
שראינו ,כך:
דור עזריה
|| 183חישוביות
במקרה שיש לנו כמה חיתוכים באותו הצלע אז נבצע כמה העתקות של 𝑊:
תקפות הרדוקציה:
● 𝑅𝑂𝐿𝑂𝐶 ← < 𝐺 >∈ 3קיימת -3צביעה לגרף 𝐺 ← הקודקודים המקוריים יישארו עם אותם צבעים
← בכל עותק של 𝑊 ,נבצע את הקודקודים החיצוניים כך שקודקודים נגדיים יהיו באותו צבע ← לפי
תכונה ,2זה משרה צביעה על כל שאר הקודקודים ← יש -3צביעה חוקית ל← .𝐺'-
𝑅𝑂𝐿𝑂𝐶 .< 𝐺' >∈ 3 − 𝑃𝐿𝐴𝑁𝐴𝑅 −
● 𝑅𝑂𝐿𝑂𝐶 ← < 𝐺' >∈ 3 − 𝑃𝐿𝐴𝑁𝐴𝑅 −יש -3צביעה חוקית ל ← 𝐺'-לפי תכונה ,1בכל עותק של
𝑊 הקודקודים הנגדיים קיבלו את אותו הצבע ← כל זוג קודקודים שהיה מחובר בצלע בגרף המקורי,
קיבל צבע שונה כל אחד ← הצביעה על הקודקודים המקוריים היא צביעה חוקית ←
𝑅𝑂𝐿𝑂𝐶.< 𝐺 >∈ 3
טריק חשוב" :משפט ארבעת הצבעים" מבטיח שלכל גרף מישורי יש -4צביעה.
כלומר ,השפה 𝑃 ∈ 𝑅𝑂𝐿𝑂𝐶 4 − 𝑃𝐿𝐴𝑁𝐴𝑅 −כי בעזרת המשפט ,אפשר לבנות מ"ט דטרמיניסטית
שבהינתן גרף 𝐺 ,מספיק לה לבדוק כי 𝐺 מישורי ,אם כן ,אז בהכרח קיים -4צביעה ל.𝐺-
הערה חשובה :אם ביקשו ממנו גרף 𝑘-צביע כאשר בגרף יש רק 𝑛 קודקודים כך ש 𝑘 ≥ 𝑛 :אז קיימים יותר
צבעים מקודקודים ולכן אפשר לפתור באופן דטרמיניסטי ובזמן פולינומי מקרים פרטיים כאלה.
דור עזריה
|| 184חישוביות
דור עזריה
|| 185חישוביות
הוכחה :נניח ש .𝑃 = 𝑁𝑃 :אזי קיים אלגוריתם דטרמיניסטי פולינומי 𝑀 המכריע את 𝑇𝐴𝑆 .𝐶𝑁𝐹 −
נתאר אלגוריתם 𝑇𝐴𝑆 𝑆𝑒𝑎𝑟𝑐ℎדטרמיניסטי המחזיר השמה מספקת לפסוק 𝐹𝑁𝐶 נתון ,או מחזיר את המחרוזת
"לא קיימת השמה מספקת" .נגדיר השמה לפסוק כמילה מעל } ,{0, 1כך שהמקום ה 𝑖-במילה יהיה ערך האמת
של המשתנה ה.𝑖-
האלגוריתם 𝑇𝐴𝑆 𝑆𝑒𝑎𝑟𝑐ℎעל קלט ϕכאשר ϕהוא פסוק 𝐹𝑁𝐶 עם 𝑛 משתנים ,תבצע:
.1סמלץ את 𝑀 על הקלט .ϕ
.aאם 𝑀(ϕ) = 0אז החזר "לא קיימת השמה מספקת".
.bאחרת ,המשך לשלב .2
.2אתחל השמה ריקה.π = ε :
.3כל עוד 𝑛 > 0תבצע:
.aהצב ערך ' '0במשתנה בעל האינדקס הנמוך ביותר של ϕונקבל את הפסוק .ϕ0
.bסמלץ את ריצת 𝑀 על הקלט :ϕ0
אם 𝑀(ϕ0) = 1אז בצע: .i
π = 0 · π .1
ϕ = ϕ0 . 2
אחרת ,אם 𝑀(ϕ0) = 0אז בצע: .ii
π = 1 · π .1
ϕ = ϕ0 . 2
.𝑛 = 𝑛 − 1 .c
.4החזר את ההשמה .π
סיבוכיות זמן ריצה :נסמן ב 𝑡(·)-את הסיבוכיות של הריצה של 𝑀 ,על פי ההנחה 𝑡(·) ,הוא פולינום.
האלגוריתם 𝑇𝐴𝑆 𝑆𝑒𝑎𝑟𝑐ℎקורא ל 𝑀-כ 𝑛-פעמים ,לכן הסיבוכיות היא ))𝑛(𝑡 · 𝑛(𝑂 -פולינומית.
נשים לב שבכל שלב חישוב האלגוריתם "יורד" רמה אחת בעץ הבינארי שציירנו ,ו 𝑀-מכוון אותו בכל צומת
לאיזה בן לרדת .עומק העץ הוא 𝑛 כך שהסיבוכיות של האלגוריתם שלנו היא אכן ))𝑛(𝑡 · 𝑛(𝑂.
דור עזריה
|| 186חישוביות
פתרון:
הרעיון :נוריד קודקודים וכל פעם שהאלגוריתם 𝐸𝑈𝑄𝐼𝐿𝐶𝑀 יחזיר 𝐸𝑆𝐿𝐴𝐹 ,זה היה קודקוד נחוץ ולכן נחזיר אותו.
● בדיקה ראשונית ,אם הקלט > 𝑘 < 𝐺,שייך לשפה 𝐸𝑈𝑄𝐼𝐿𝐶.
● בכל שלב נוריד קודקוד ,ואת כל הצלעות החלות בו ,יהי '𝐺 הגרף המתקבל לאחר ההורדה.
● נבדוק אם > 𝑘 < 𝐺',בשפה 𝐸𝑈𝑄𝐼𝐿𝐶 ,אם כן ,נמשיך ,אחרת נחזור אל 𝐺.
● נעצור כאשר גודל הגרף '𝐺 הוא בדיוק 𝑘 קודקודים.
● נחזיר את קבוצת הקודקודים של '𝐺.
האלגוריתם 𝐸𝑈𝑄𝐼𝐿𝐶 𝑆𝑒𝑎𝑟𝑐ℎעל קלט > 𝑘 < 𝐺,כאשר 𝐺 הוא גרף ו 𝑘-טבעי ,תבצע:
.1סמלץ את 𝐸𝑈𝑄𝐼𝐿𝐶𝑀 על קלט > 𝑘 .< 𝐺,
.aאם ,𝑀𝐶𝐿𝐼𝑄𝑈𝐸(< 𝐺, 𝑘 >) = 0החזר "לא קיים".
.bאחרת ,עבור לשלב .2
.2הגדר קבוצת קודקודים ריקה }{ = 𝑆.
.3עבור |)𝐺(𝑉| ≤ 𝑛 ≤ 1בצע:
.aהוצא קודקוד 𝑛𝑣 והגדר }𝑛𝑣{\.𝐺𝑛 = 𝐺𝑛−1
.bסמלץ את ריצת 𝐸𝑈𝑄𝐼𝐿𝐶𝑀 על > 𝑘 .< 𝐺𝑛,
אם 𝑀𝐶𝐿𝐼𝑄𝑈𝐸(< 𝐺𝑛, 𝑘 >) = 0אז: .i
.𝑆 = 𝑆 ∪ {𝑣𝑛} .1
.𝐺𝑛−1 = 𝐺𝑛 ∪ {𝑣𝑛} .2
.𝑛 = 𝑛 + 1 .c
.4החזר את ההשמה 𝑆.
דור עזריה
|| 187חישוביות
פתרון א' :היות ו ,𝐻𝐴𝑀𝑃𝐴𝑇𝐻 ∈ 𝑁𝑃𝐶-קיום אלגוריתם דטרמיניסטי פולינומי מעיד כי 𝑃 ∈ 𝐻𝑇𝐴𝑃𝑀𝐴𝐻 וגם
כל שאר השפות ב 𝑁𝑃-מרדוקציה .לכן.𝑃 = 𝑁𝑃 ,
פתרון ב':
הרעיון:
● בדיקה ראשונית ,אם הקלט > 𝐺 < בשפה 𝐻𝑇𝐴𝑃𝑀𝐴𝐻.
● בכל שלב נוריד צלע ונקבל את '𝐺.
● נבדוק אם > '𝐺 < בשפה ,אם כן ,נמשיך ,אחרת נחזור אל 𝐺.
● נעצור כאשר כמות הצלעות בגרף '𝐺 היא בדיוק .𝑛 − 1
● נשתמש בקבוצת הצלעות שנותרה כדי להחזיר את הסידור של הקודקודים על המסלול ההמילטוני
בגרף.
אלגוריתם 𝐻𝑇𝐴𝑃𝑀𝐴𝐻 𝑆𝑒𝑎𝑟𝑐ℎעל קלט > 𝐺 < כאשר 𝐺 הוא גרף ,תבצע:
.1סמלץ את 𝐻𝑇𝐴𝑃𝑀𝐴𝐻𝑀 על קלט > 𝐺 <:
.aאם - 𝑀𝐻𝐴𝑀𝑃𝐴𝑇𝐻(< 𝐺 >) = 0החזר "לא קיים מסלול המילטוני".
.bאחרת ,המשך לשלב .2
.2נגדיר קבוצת צלעות ריקה }{ = 𝑆.
.3עבור |)𝐺(𝐸| ≤ 𝑚 ≤ 1בצע:
.aהוצא צלע 𝑚𝑒 והגדר }𝑚𝑒{\.𝐺𝑚 = 𝐺𝑚−1
.bסמלץ את ריצת 𝐻𝑇𝐴𝑃𝑀𝐴𝐻𝑀 על קלט > 𝑚𝐺 <.
אם 𝑀𝐻𝐴𝑀𝑃𝐴𝑇𝐻(< 𝐺𝑚 >) = 0אז: .i
.𝑆 = 𝑆 ∪ {𝑒𝑚} .1
.𝐺𝑚−1 = 𝐺𝑚 ∪ {𝑒𝑚} .2
.𝑚 = 𝑚 + 1 .c
.4החזר את 𝑆.
דור עזריה
|| 188חישוביות
אז אחרי כמעט 4שנים של לימודים אינטנסיביים של 12שעות למידה ביום ,גם אני
מסיים את התואר .זה הקורס האחרון שלי .חשוב לי להגיד שאין דבר העומד בפני
הרצון .התחלתי את התואר בזלזול רב וחוסר רצון ללמוד ,בנוסף יש לי הרבה קשיי
למידה ולוקח לי זמן להבין דברים .עם הזמן תפסתי את עצמי ברצינות והתחלתי
לקחת את ענייני הסיכומים ברצינות כדי להוכיח לעצמי שאני יכול הכל .אם יש לכם
מטרה שאולי מרגישה לכם בהתחלה מאוד מטופשת כמו האופן שבו אני סיכמתי כל
קורס ,אני ממליץ לכם דווקא כן ללכת עליה ולהלחם עליה כי בסוף הדרך זה נותן
את הסיפוק הגדול ביותר (וגם אחלה של תוסף לרזומה).
בהצלחה לכולנו בהמשך ,זה רק ההתחלה! 😀
וכן ,נותר רק לכתוב בפעם האחרונה :חלאס.
דור עזריה