Uploaded by gerina7233

comp

advertisement
‫ים‬
‫י‬
‫ב‬
‫ו‬
‫יש‬
‫יםח‬
‫ל‬
‫ד‬
‫ו‬
‫מ‬
‫ות‬
‫י‬
‫כ‬
‫ו‬
‫ב‬
‫י‬
‫ס‬
‫ותו‬
‫י‬
‫ב‬
‫ו‬
‫יש‬
‫ח‬
‫ה‬
‫צ‬
‫ר‬
‫מ‬
‫ן‬
‫מ‬
‫ר‬
‫פ‬
‫ו‬
‫הק‬
‫נ‬
‫ר‬
‫ו‬
‫'א‬
‫פ‬
‫ו‬
‫ר‬
‫פ‬
‫ן‬
‫ת‬
‫ו‬
‫הד‬
‫י‬
‫א‬
‫|מ‬
‫ת‬
‫ל‬
‫ג‬
‫ר‬
‫ת‬
‫מ‬
‫ב‬
‫‘‬
‫צ‬
‫י‬
‫י‬
‫לד‬
‫א‬
‫י‬
‫נ‬
‫ד‬
‫ט‬
‫ד‬
‫י‬
‫מ‬
‫רש‬
‫ס‬
‫י‬
‫דק‬
‫י‬
‫ו‬
‫ד‬
‫מודלים חישוביים‪ ,‬סיבוכיות | ‪67521‬‬
‫נכתב ע“י דויד קיסר‪-‬שמידט ודניאל דייצ’ב‬
‫‪ 4‬בפברואר ‪2023‬‬
‫מרצה | אורנה קופרמן‬
‫מצאתם שגיאה? ספרו לנו! שלחו לנו מייל לאחת מהכתובות שכאן‪:‬‬
‫‪daniel.deychev@mail.huji.ac.il‬‬
‫‪david.keisarschm@mail.huji.ac.il‬‬
‫‪c‬‬
‫‪ ,‬כל הזכויות שמורות לדויד קיסר‪-‬שמידט ודניאל דייצ’ב‬
‫למרות‬
‫שאין‬
‫לנו‬
‫באמת‬
‫זכויות‬
‫ואין‬
‫להתייחס‬
‫לכיתוב‬
‫בשורה‬
‫הקודמת‬
‫ברצינות‬
‫‪2‬‬
‫תוכן העניינים‬
‫תוכן העניינים‬
‫תוכן העניינים‬
‫‪I‬‬
‫‪II‬‬
‫‪1‬‬
‫‪2‬‬
‫‪6‬‬
‫מבוא‬
‫‪9‬‬
‫מודלים חישוביים‬
‫‪9‬‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫‪1.1‬‬
‫פעולות על שפות ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪14‬‬
‫‪1.2‬‬
‫תכונות סגור של השפות הרגולריות ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪14‬‬
‫אוטומט סופי אי‪-‬דטרמינסטי )‪(NFA‬‬
‫‪2.1‬‬
‫‪17‬‬
‫שקילות בין ‪ NFA‬ל‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DFA-‬‬
‫‪19‬‬
‫‪3‬‬
‫למת הניפוח לשפות רגולריות‬
‫‪22‬‬
‫‪4‬‬
‫משפט מייהיל‪-‬נרוד )‪(Myhill Nerode‬‬
‫‪25‬‬
‫‪4.1‬‬
‫‪5‬‬
‫מזעור אוטומטים ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫שפות חסרות הקשר‬
‫‪5.1‬‬
‫‪27‬‬
‫‪32‬‬
‫למת הניפוח לשפות ח“ה ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪35‬‬
‫‪ III‬חישוביות‬
‫‪37‬‬
‫מכונת טיורינג‬
‫‪37‬‬
‫‪6‬‬
‫‪7‬‬
‫‪6.1‬‬
‫ספרנים )‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Enumerators‬‬
‫‪42‬‬
‫‪6.2‬‬
‫התזה של ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Church, Turing‬‬
‫‪43‬‬
‫‪6.3‬‬
‫תרגום אלגוריתמים למ“ט ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪44‬‬
‫‪6.4‬‬
‫אי כריעות ובעיית העצירה ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪45‬‬
‫רדוקציות‬
‫‪7.1‬‬
‫‪49‬‬
‫רדוקציות מיפוי ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪ IV‬סיבוכיות‬
‫‪49‬‬
‫‪55‬‬
‫‪8‬‬
‫מחלקות סיבוכיות זמן ‪P, NP, EXP -‬‬
‫‪55‬‬
‫‪9‬‬
‫שלמות ב‪) NP-‬המחלקה ‪(NPC‬‬
‫‪58‬‬
‫‪59‬‬
‫‪ 10‬רדוקציות פולינומיאליות‬
‫‪ 10.1‬בעיית ה‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Subset Sum-‬‬
‫‪3‬‬
‫‪65‬‬
‫תוכן העניינים‬
‫תוכן העניינים‬
‫‪67‬‬
‫‪ 11‬מחלקות סיבוכיות זכרון‬
‫‪ 11.1‬בעיות הריקנות והאוניברסליות ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪ 12‬סיבוכיות זכרון תת‪-‬לינארית‬
‫‪70‬‬
‫‪75‬‬
‫‪ 12.1‬רדוקציה תת‪-‬לינארית ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪76‬‬
‫‪ 12.2‬משפט אימרמן ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪80‬‬
‫‪ 13‬חומר נוסף וצעדים להמשך‬
‫‪81‬‬
‫‪ V‬תרגולים‬
‫‪83‬‬
‫‪ 14‬תרגול ‪ - 1‬אוטומט סופי דטרמיניסטי‬
‫‪83‬‬
‫‪ 15‬תרגול ‪ - 2‬אוטומט סופי אי‪-‬דטרמיניסטי‬
‫‪88‬‬
‫‪ 16‬תרגול ‪ - 3‬ביטויים רגולריים ולמת הניפוח‬
‫‪90‬‬
‫‪ 17‬תרגול ‪ - 4‬למת הניפוח ומשפט מייהיל‪-‬נרוד‬
‫‪92‬‬
‫‪ 18‬תרגול ‪ - 5‬שפות חסרות הקשר‬
‫‪96‬‬
‫‪ 19‬תרגול ‪ - 6‬מכונת טיורינג‬
‫‪98‬‬
‫‪ 20‬תרגול ‪ - 7‬תכונות סגור של ‪R, RE, coRE‬‬
‫‪101‬‬
‫‪ 21‬תרגול ‪ - 8‬רדוקציה ומשפט רייס‬
‫‪104‬‬
‫‪ 22‬תרגול ‪ - 9‬רדוקציות מיפוי ו‪NP-‬‬
‫‪108‬‬
‫‪ 23‬תרגול ‪ - 10‬שלמות ב‪NP-‬‬
‫‪110‬‬
‫‪ 24‬תרגול ‪ - 11‬שלמות ב‪coNP-‬‬
‫‪113‬‬
‫‪ 25‬תרגול ‪ - 12‬משפט סביץ’‬
‫‪118‬‬
‫‪ 25.1‬השפה ‪119 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TQBF‬‬
‫‪122‬‬
‫‪ 26‬תרגול ‪ - 13‬משפטי ההירככיה‬
‫‪ 26.1‬משפט ההירככיה בזמן ‪122 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪ 26.2‬משפט ההירככיה במקום ‪123 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪ VI‬רשימת הגדרות ומשפטים‬
‫‪126‬‬
‫‪ 27‬הגדרות‬
‫‪126‬‬
‫‪ 28‬משפטים‬
‫‪134‬‬
‫‪4‬‬
‫תוכן העניינים‬
‫תוכן העניינים‬
‫‪ VII‬נספחים‬
‫‪139‬‬
‫‪ 29‬מחלקות חישוביות‬
‫‪139‬‬
‫‪ 30‬מחלקות סיבוכיות זמן‬
‫‪139‬‬
‫‪ 31‬סיכום מחלקות וסגירויות‬
‫‪140‬‬
‫‪5‬‬
‫שבוע ‪1‬‬
‫חלק ‪I‬‬
‫מבוא‬
‫הקדמה‬
‫בגדול‪ ,‬בחישוביות יש לנו מחשב‪ ,‬שזו מכונה שעושה מה שאומרים לה‪ ,‬ואנחנו רוצים לברר‪:‬‬
‫מה המחשב יכול לפתור )ומה לא( ובכמה משאבים?‬
‫כפי שמרמז השם‪ ,‬לקורס שלושה חלקים‪:‬‬
‫‪ .1‬מודלים חישוביים ‪ -‬בפרט נדבר על אוטומט‪ ,‬שיעזור לנו לפרמל מה זה חישוב ובכלל מה זה מחשב )ואז נגיע למכונות‬
‫טיורינג(‪.‬‬
‫‪ .2‬חישוביות ‪ -‬החלק הראשון בשאלה‪ :‬מה מחשבים יכולים לפתור?‬
‫‪ .3‬סיבוכיות ‪ -‬החלק השני של השאלה‪ :‬כמה עולה לפתור את הבעיה? נתמקד גם בחסמים תחתונים‪ ,‬כדי לדעת כמה‬
‫צריך להתאמץ כדי לפתור את הבעיה‪.‬‬
‫נרצה לסקור את המושגים מעט יותר לעומק‪.‬‬
‫סיבוכיות‬
‫תורת הגרפים‬
‫הגדרה ‪ .0.1‬יהי ‪ G = hV, Ei‬גרף לא מכוון‪ .‬מעגל‪/‬מסלול אוילר הוא מעגל‪/‬מסלול ב‪ G-‬שעובר בכל צלעות הגרף‪,‬‬
‫בכל צלע בדיוק פעם אחת‪.‬‬
‫דוגמה ‪ . .0.1‬האם בגרף הבא יש מעגל אוילר? התשובה היא שכן‪ ,‬והפתרון הוא להתחיל מהקודקוד ‪ X‬וללכת לפי החצים‪:‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪5‬‬
‫‪X‬‬
‫‪6‬‬
‫‪7‬‬
‫שאלה כיצד אפשר לבדוק האם יש מעגל אוילר בגרף?‬
‫אוילר הציע את האלגוריתם הבא‪:‬‬
‫‪1‬‬
‫נעבור על כל הקודקודים ונבדוק שהדרגה שלהם זוגית‪ ,‬אם זה נכון‪ ,‬יש מעגל בגרף‪,‬‬
‫אחרת אין‪ .‬זהו אלגוריתם שרץ בזמן לינארי‪.‬‬
‫‪1‬זה גם היה האלגוריתם הראשון שהומצא אי פעם למעשה‪.‬‬
‫‪6‬‬
‫הרצאה ‪1‬א‬
‫שבוע ‪1‬‬
‫הגדרה ‪ .0.2‬יהי ‪ G = hV, Ei‬גרף לא מכוון‪ .‬מעגל‪/‬מסלול המילטון הוא מעגל‪/‬מסלול ב‪ G-‬שעובר בכל קודקודי הגרף‪,‬‬
‫בכל קודקוד בדיוק פעם אחת‪.‬‬
‫דוגמה ‪ . .0.2‬האם בגרף מהדוגמה הקודמת יש מעגל המילטון? התשובה היא שכן‪ .‬מתי אין? נגיד בגרף הבא‪ ,‬כי לא משנה‬
‫איזה מסלול נבחר נצטרך לעבור פעמיים בקודקוד ‪.X‬‬
‫‪X‬‬
‫שאלה כיצד אפשר לבדוק האם יש מעגל המילטון בגרף?‬
‫אלגוריתם נאיבי יעבור על כל האפשרויות ב‪ ,O (|V |!)-‬כי יש !| ‪ |V‬דרכים לסדר את כל הקודקודים‪ .‬כמובן לא כל הדרכים‬
‫לסדר קבילות‪ ,‬אך במקרה הגרוע זו כמות האפשרויות עליהן נעבור‪ .‬האם ידועה דרך טובה יותר? התשובה היא שלא!‬
‫מדהים‪ ,‬שאלות דומות מאוד‪ ,‬אבל אחת לא מצליחים לפתור ביעילות ואת האחרת כן‪.‬‬
‫נרצה אם כך‪:‬‬
‫‪ .1‬להוכיח שאי אפשר לפתור את הבעיות ביעילות‪.‬‬
‫‪ .2‬לסווג בעיות אלגוריתמיות למחלקות סיבוכיות‪.‬‬
‫‪ .3‬להוכיח קושי ‪ -‬להפסיק לחפש אלגוריתם יעיל‪ .‬לאחר מכן נשתמש בקירובים‪.‬‬
‫קריפטוגרפיה ‪ -‬פירוק ראשוניים‬
‫נוכל לנצל קושי חישובי לטובתנו‪ .‬למשל בקריפטוגרפיה‪:‬‬
‫דוגמה ‪ .0.3‬נניח שנתון לנו מספר ‪ N‬וידוע לנו שקיימים ראשוניים ‪ p, q‬טבעיים כך ש‪ .N = p · q-‬בהינתן ‪ p, q‬קל לחשב‬
‫‬
‫את ‪ N‬בזמן ‪ .O log2 N‬אמנם‪ ,‬בהינתן ‪ ,N‬האם אפשר לחשב את ‪ ?p, q‬באופן כללי‪ ,‬אנחנו לא מכירים אלגוריתם שיכול‬
‫לבצע את זה בזמן שאינו אקספוננציאלי‪.‬‬
‫√‬
‫את האלגוריתם הבא ‪ -‬נעבור על כל המספרים עד ‪N‬‬
‫נציע√‬
‫‬
‫‪ ,O‬שזה לינארי‪ ,‬האמנם? זה לינארי בגודל המספר‪ ,‬ולא בגודל ייצוג המספר במחשב‪ .‬גודל הייצוג הוא ‪ log N‬ואילו‬
‫‪N‬‬
‫√‬
‫‪1‬‬
‫‪ N = 2 2 log N‬שזה אספוננציאלי ב‪.log N -‬‬
‫ואם המספר ראשוני ומחלק את ‪ N‬נעצור‪ .‬הסיבוכיות היא‬
‫יחד עם זאת אנחנו לא מצליחים להוכיח שזו בעיה קשה‪.‬‬
‫נתון האלגוריתם הבא‪:‬‬
‫‪ .1‬לכל מספר בין ‪ 1‬ל‪:x-‬‬
‫)א( הדפס ∗‪.‬‬
‫מה סיבוכיות האלגוריתם?‬
‫‪ ,x = 11‬אז האלגוריתם לינארי באורך הקלט‬
‫התשובה היא‪ ,‬שזה תלוי‪ .‬אם הקלט ‪ x‬נתון בייצוג אונארי‪ ,‬כלומר }‪. . . 1‬‬
‫‪| {z‬‬
‫‪ .x‬אבל‪ ,‬אם האלגוריתם נתון בייצוג בינארי‪ ,‬כלומר בבסיס ‪ ,2‬אז אורך הקלט הוא ‪ log x‬ולכן סיבוכיות האלגוריתם !‬
‫פעמים ‪x‬‬
‫היא אקספוננציאלית‪ .‬כלומר‪ ,‬וזו נקודה חשובה‪ ,‬האלגוריתם אקספוננציאלי באורך הקלט שהוא אורך היצוג של המספר!‬
‫‪7‬‬
‫שבוע ‪1‬‬
‫חישוביות‬
‫בעיית ריצוף האריחים‬
‫דוגמה ‪ .0.4‬נרצה למצוא אלגוריתם לבעיה הבאה‪.‬‬
‫קלט מספר סופי של אריחים‪ ,‬כאשר כל אריח מוגדל על ידי רביעיה ) ‪ (li , ri , ui , di‬שמסמלת צבעים לצלעות הריבוע‪ ,‬כאשר‬
‫יש מספר סופי של צבעים )לא בהכרח רק ‪.(4‬‬
‫פלט האם ניתן לרצף באופן חוקי ריבוע ‪ n × n‬לכל ‪ .n ≥ 1‬כאשר ריבוע חוקי מקיים שלכל זוג צלעות סמוכות‪ ,‬יש צבע‬
‫זהה )ואסור לסובב את האריחים(‪.‬‬
‫למשל‪ ,‬האם ניתן לרצף בדוגמה הבאה? )באיור הצבע של הצלע הוא הצלע של הרביע של אותה צלע(‬
‫‪C‬‬
‫‪A‬‬
‫‪B‬‬
‫ניתן‪ ,‬נוכל לרצף כך למשל‪:‬‬
‫‪..‬‬
‫‪.‬‬
‫···‬
‫‪A‬‬
‫‪4‬‬
‫‪A‬‬
‫‪C‬‬
‫‪3‬‬
‫‪A‬‬
‫‪C‬‬
‫‪B‬‬
‫‪2‬‬
‫‪A‬‬
‫‪C‬‬
‫‪B‬‬
‫‪A‬‬
‫‪1‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫ולמעשה אפשר לבצע זאת לכל ‪ n × n‬על ידי השלמת האלכסונים באיור‪.‬‬
‫שאלה כיצד נבדוק האם ניתן לבנות ריבוע כזה?‬
‫תשובה אין אלגוריתם! לא ניתן לעבור על כל האפשרויות‪ ,‬היות שיש אינסוף אפשרויות ‪ -‬האינסוף מגיע מגודל הריבוע ‪-‬‬
‫לכל ‪ n ∈ N‬ולא עבור גודל ספציפי‪.‬‬
‫בעיית העצירה‬
‫דוגמה ‪ .0.5‬נתונה תכנית מחשב ‪ P‬אותה הרצנו על הקלט ‪ .x‬התכנית לא עצרה‪ .‬נרצה לענות על השאלה ‪ -‬מדוע? נרצה‬
‫אולי לכתוב אלגוריתם שיבדוק עבורנו האם התכנית שלנו תעצור או לא‪.‬‬
‫אם כך‪ ,‬נגדיר את הבעיה הבאה‪:‬‬
‫קלט תכנית מחשב ‪) P‬קוד( וקלט ‪ x‬לתכנית‪.‬‬
‫פלט האם ‪ P‬עוצרת על ‪.x‬‬
‫האלגוריתם המתבקש הוא להריץ את התכנית על הקלט‪ ,‬ואם היא עוצרת להחזיר אמת ואחרת שקר‪ .‬אמנם אם היא לא‬
‫עוצרת‪ ,‬התכנית שלנו לא תעצור‪ ,‬ולא נחזיר דבר‪.‬‬
‫נוכל להוכיח בהמשך שאין אלגוריתם שפותר אותה‪.‬‬
‫‪8‬‬
‫‪1‬‬
‫שבוע ‪1‬‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫חלק ‪II‬‬
‫מודלים חישוביים‬
‫‪1‬‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫כדי להגדיר אוטומט נזדקק להגדרות הבאות‪:‬‬
‫הגדרה ‪ .1.1‬אלפבית ‪) Σ‬א“ב( הוא קבוצה סופית של אותיות )אובייקטים(‪.‬‬
‫הגדרה ‪ .1.2‬מילה בא“ב ‪ Σ‬היא סדרה סופית של אותיות שנסמנה ב‪ w = w1 w2 · · · wn -‬כך שכל אות ב‪ .Σ-‬המילה‬
‫הריקה מסומנת ב‪ ε-‬ולא מכילה אף אות‪.‬‬
‫‪S i‬‬
‫נסמן ב‪ Σ∗ -‬את כל המילים מכל אורך מעל ‪ ,Σ‬כלומר ‪ ,Σ = {ε} ∪ · Σ‬כאשר ‪ Σ‬היא קבוצת כל המילים מאורך‬
‫∗‬
‫‪i‬‬
‫‪i∈N‬‬
‫‪ ,i‬ונגדיר }‪.Σ0 = {ε‬‬
‫הגדרה ‪ .1.3‬שפה מעל א“ב ‪ Σ‬היא קבוצה של מילים ∗‪.L ⊆ Σ‬‬
‫!‬
‫שפה יכולה להיות קבוצה אינסופית‪ ,‬אך מילה היא תמיד באורך סופי‪ .‬אלפבת הוא תמיד קבוצה סופית‪.‬‬
‫בנפנוף ידיים נאמר כי ”אוטומט הוא מחשב עם זכרון מוגבל“‪ .‬זהו מודל מתמטי שמתאר לנו חישוב ויהווה עבורנו תשתית‬
‫תאורטית להמשך‪ .‬פורמלית‪:‬‬
‫הגדרה ‪ .1.4‬אוטומט )‪ (Automaton‬סופי דטרמינסטי )‪ (DFA‬הוא חמישיה ‪ A = hQ, Σ, δ, q0 , F i‬כאשר‪:‬‬
‫ˆ ‪ Q‬קבוצת המצבים )קבוצה סופית(‪.‬‬
‫ˆ ‪ Σ‬הא“ב‪.‬‬
‫ˆ ‪ δ : Q × Σ → Q‬פונקציית מעברים‪.‬‬
‫ˆ ‪ q0‬מצב התחלתי‪.‬‬
‫ˆ ‪ F‬קבוצת המצבים המקבלים‪.‬‬
‫דוגמה ‪ .1.1‬נתון עט דיגיטלי‪ .‬ניתן לתת לעט שש פקודות ‪ .ON, OFF, U, D, L, R‬נאמר כי סדרת פקודות היא חוקית‪ ,‬אם‬
‫היא מציירת קו רקיע משמאל לימין )‪.(Skyline‬‬
‫קו רקיע‬
‫•‬
‫קו רקיע מוגדר להיות רצף המקיים‪:‬‬
‫‪U‬‬
‫‪ .1‬מתחיל ב‪.ON-‬‬
‫‪OFF‬‬
‫‪R‬‬
‫•‬
‫‪R‬‬
‫•‬
‫•‬
‫‪U‬‬
‫‪D‬‬
‫•‬
‫•‬
‫‪U‬‬
‫‪ .2‬מסתיים ב‪.OFF-‬‬
‫•‬
‫‪ .3‬באמצע רק פקודות ‪ U, D, R‬ואחרי ‪ U‬לא יבוא‬
‫‪D‬‬
‫‪R‬‬
‫•‬
‫‪R‬‬
‫•‬
‫‪R‬‬
‫•‬
‫‪U‬‬
‫•‬
‫‪U‬‬
‫•‬
‫‪U‬‬
‫ישר ‪ D‬ולהפך‪.‬‬
‫‪ON‬‬
‫האוטומט המתאים לקוי רקיע נראה כבאיור הבא‪:‬‬
‫‪9‬‬
‫‪1‬‬
‫שבוע ‪1‬‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫‪U‬‬
‫‪q2‬‬
‫‪U OFF‬‬
‫‪R‬‬
‫‪OFF‬‬
‫‪q1‬‬
‫‪q4‬‬
‫‪R OFF‬‬
‫‪R‬‬
‫‪ON‬‬
‫‪q0‬‬
‫‪D‬‬
‫‪q3‬‬
‫‪D‬‬
‫אל המצב ‪ q4‬מגיעים ברגע שקוראים ‪ ,OFF‬והוא מצב מקבל‪ ,‬ולכן נסמנו בעיגול כפול‪ .‬המצב ההתחלתי‪ ,q0 ,‬מסומן בחץ‬
‫שנכנס אליו‪ .‬מצב זה יצפה לראות ‪.ON‬‬
‫נבחין כי תזוזה ‪ ,R‬לא משנה את מצבנו באוטומט‪ ,‬אבל‪ ,‬אם ביצענו ‪ ,U/D‬השתנה המצב ‪ -‬יש מצב אחד ) ‪ (q2‬שבו אסור‬
‫לנו לבצע אחריו ‪ D‬ומצב שני ) ‪ (q3‬בו אסור לבצע אחריו ‪.U‬‬
‫אנחנו נסיים ריצה על קלט במצב מקבל אם“ם הקלט חוקי‪.‬‬
‫עבור אוטומט זה‬
‫} ‪Q = {q0 , q1 , q2 , q3 , q4‬‬
‫}‪Σ = {OFF, ON, U, D, L, R‬‬
‫‪δ (q1 , U) = q2 . . . . . .‬‬
‫} ‪F = {q4‬‬
‫נשים לב שלא הגדרנו בציור מה עושה האוטומט אם במצב ‪ q0‬הוא מקבל לדוגמה ‪ ,D‬והוא פשוט נתקע‪ .‬זה בגלל‬
‫שמבחינתו מצב זה לא חוקי )אסור להתחיל עם משהו שהוא לא ‪ ,(ON‬ולכן אפשר להגיד שאם אנחנו נמצאים במצב‪,‬‬
‫ומקבלים קלט שאין חץ שמתאים אליו‪ ,‬אז נוסיף מצב מיוחד‪ ,‬שנסמנו ‪ ,q5‬שהוא מצב שאינו מקבל‪ ,‬ואליו נעבור‪.‬‬
‫נגדיר שכשאנחנו‬
‫מגיעים ל‪ q -‬אנחנו נשאר בו לנצח לא משנה מה הקלט הבא‪ ,‬וכך נבטיח שנסיים במצב לא‪-‬מקבל !‬
‫על כל קלט לא חוקי‪.‬‬
‫‪5‬‬
‫לדוגמה‪ ,‬בגלל שבשום שלב אסור לנו לקרוא ‪ ,L‬אם נקבל בקלט ‪ L‬אז נכנס ל‪ q5 -‬ונישאר במצב לא‪-‬מקבל זה לנצח‪.‬‬
‫מצב כזה כמו ‪ q5‬נקרא ”בור דוחה“‪ ,‬ונפרט על כך שוב בהמשך‪.‬‬
‫דוגמה לאוטומט‬
‫נביט באוטומט הבא‪ ,‬עם המצב ההתחלתי ‪:q0‬‬
‫}‪Σ = {0, 1‬‬
‫} ‪Q = {q0 , q1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪δ‬‬
‫‪q1‬‬
‫‪q0‬‬
‫‪q0‬‬
‫‪q0‬‬
‫‪q1‬‬
‫‪q1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪q0‬‬
‫‪q1‬‬
‫‪1‬‬
‫} ‪F = {q0‬‬
‫האיור המתאים לאוטומט יראה כבאיור הנ“ל‪.‬‬
‫‪10‬‬
‫‪1‬‬
‫שבוע ‪1‬‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫הגדרה ‪ .1.5‬ריצה של אוטומט ‪ A‬על מילה ‪ w = w1 w2 . . . wn‬מעל ‪ Σ‬זו סדרה של מצבים ‪ r = r0 , r1 , . . . , rn‬כך‬
‫שמתקיים‪:‬‬
‫‪ - r0 = q0 .1‬הריצה תמיד מתחילה ב‪.q0 -‬‬
‫‪ .2‬לכל ‪ i ≥ 0‬מתקיים ) ‪ - ri+1 = δ (ri , wi+1‬הריצה מכבדת את ‪.δ‬‬
‫הגדרה ‪ .1.6‬יהי אוטומט ‪ A‬מילה ‪ w‬וריצה ‪ r‬של ‪ w‬על ‪.A‬‬
‫∈ ‪ rn‬נאמר כי ‪ r‬דוחה )‪.(Rejecting‬‬
‫ˆ ‪ r‬ריצה מקבלת )‪ (Accepting‬אם ‪ ,rn ∈ F‬אחרת כאשר ‪/ F‬‬
‫ˆ ‪ A‬מקבל את ‪ w‬אם הריצה )יש ריצה אחת( של ‪ A‬על ‪ w‬היא מקבלת‪.‬‬
‫ˆ השפה של האוטומט ‪ A‬מוגדרת להיות } הריצה של ‪ A‬על ‪ w‬מקבלת| ∗‪.L (A) = {w ∈ Σ‬‬
‫דוגמה ‪ .1.2‬ריצה של האוטומט ‪ A‬מהדוגמא הקודמת על ‪ 011‬היא ‪.q0 , q0 , q1 , q0‬‬
‫השפה של האוטומט היא }מספר האחדות ב‪ w-‬זוגי | ‪ ,L (A) = {w = w1 . . . wn‬ניתן להוכיח זאת באינדוקציה‪.‬‬
‫כפי שראינו בדוגמה של קו הרקיע‪ ,‬באוטומטים שלנו הפונק’ ‪ δ‬לא בהכרח שלמה‪ .‬אבל ניתן להשלים אותה על ידי‬
‫הוספת מצב שנקרא ”בור דוחה“‪ .‬כל מצב אחר יוכל להצביע אליו‪ ,‬אבל לא ניתן יהיה לצאת ממנו‪ ,‬מלבד לחזור‬
‫לעצמו‪ .‬כך במקרים בהם ‪ δ‬לא מוגדרת‪ ,‬נגדיר אותה להיות הבור הדוחה‪ .‬נדגיש שכל ריצה שתגיע אליה‪ ,‬לא תהיה !‬
‫ריצה מקבלת‪ .‬מכאן אנו מסיקים שזה לא משנה אם ‪ δ‬שלמה או חלקית‪.‬‬
‫דוגמה לאוטומט‬
‫נביט באוטומט הבא‪ ,‬שנסמנו ‪.A2‬‬
‫השפה של האוטומט היא‪:‬‬
‫‪1‬‬
‫‪‬‬
‫‪ ‬יש ב‪ w-‬לפחות ‪ 1‬אחד‬
‫‪‬‬
‫‪‬‬
‫∗‬
‫‪L (A2 ) = w ∈ Σ‬‬
‫ואחרי ה‪ 1-‬האחרון‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫יש מספר זוגי של ‪0‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪0‬‬
‫‪0‬‬
‫‪q2‬‬
‫‪1‬‬
‫‪q1‬‬
‫‪q0‬‬
‫‪0, 1‬‬
‫נראה בתרגול כיצד להוכיח שזו אכן השפה‪.‬‬
‫דוגמה לאוטומט‬
‫נביט בשפה הבאה‪ ,‬ונצייר אוטומט‪ ,A3 ,‬שמתאים לשפה‪.‬‬
‫‪0, 1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫}‪ w‬מכילה את הרצף ‪L3 = {w | 001‬‬
‫‪q3‬‬
‫לא קשה להשתכנע שזה אכן אוטומט שמתאים לשפה‪.‬‬
‫‪1‬‬
‫‪q2‬‬
‫‪0‬‬
‫‪q0‬‬
‫‪q1‬‬
‫‪1‬‬
‫סימון בהינתן מילה ‪ w‬ואות ‪ ,a‬נסמן את מספר ה‪-a-‬ים ב‪ w-‬בתור ‪.#a w‬‬
‫‪11‬‬
‫הרצאה ‪1‬ב‬
‫‪1‬‬
‫שבוע ‪1‬‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫הגדרה ‪ .1.7‬יהי ‪ A = hQ, Σ, δ, q0 , F i‬אוטומט‪ .‬נגדיר ‪ δ ∗ : Q × Σ∗ → Q‬באופן הבא‪:‬‬
‫‪‬‬
‫‪q‬‬
‫‪w=ε‬‬
‫‪w = w′ · σ, w′ ∈ Σ∗ , σ ∈ Σ‬‬
‫= )‪δ ∗ (q, w‬‬
‫)‪δ (δ (q, w ) , σ‬‬
‫∗‬
‫‪′‬‬
‫)‪ δ ∗ (q, w‬מתאר למעשה את המצב אליו נגיע אם היינו רצים על אוטומט ‪ A‬עם מילה ‪ ,w‬אם היינו מתחילים מהמצב‬
‫‪ ,q‬כלומר מדובר בהפעלה חוזרת של ‪ ,δ‬במילים אחרות‪” ,‬סגור“‪ .‬שימו לב כי ‪ δ : Q × Σ → Q‬אבל ‪: Q × Σ∗ → Q‬‬
‫∗‬
‫‪! .δ‬‬
‫דוגמה לאוטומט‬
‫‪b‬‬
‫‪a‬‬
‫נביט בשפה הבאה מעל הא“ב }‪:Σ = {a, b‬‬
‫‪q0‬‬
‫‪q1‬‬
‫‪a‬‬
‫}‪ #a w‬אי‪-‬זוגי וגם ‪ w‬מסתיימת ב‪L = {w | b-‬‬
‫‪b‬‬
‫‪a‬‬
‫נגדיר לה אוטומט‪ ,A ,‬באמצעות ציור‬
‫‪b‬‬
‫‪q2‬‬
‫אינטואיטיבית ‪ q0‬הוא המצב אליו תמיד נגיע כש‪ #a w-‬זוגי‪ ,‬ולכן ‪ .δ (q0 , b) = q0‬אם ‪ #a w‬הופך לאי‪-‬זוגי‪ ,‬אנחנו עוברים‬
‫ל‪ ,q1 -‬ומשם אם אנחנו מקבלים גם ‪ b‬אנחנו עוברים ל‪ q2 -‬שהוא מצב מקבל )כי אנחנו רוצים שמילה תסתיים ב‪ .(b-‬אם‬
‫אנחנו מקבלים עוד ‪ ,a‬אז ‪ #a w‬הופך לזוגי ואנחנו חוזרים ל‪ .q0 -‬כלומר המשמעות של כל מצב היא‪:‬‬
‫‪ #a w - q0 .1‬זוגי‪.‬‬
‫‪ #a w - q1 .2‬אי‪-‬זוגי ו‪ w-‬מסתיימת ב‪.a-‬‬
‫‪ #a w - q2 .3‬אי‪-‬זוגי ו‪ w-‬מסתיימת ב‪.b-‬‬
‫טענה‪ .‬בסימוני הדוגמה הקודמת‪.L (A) = L ,‬‬
‫הוכחה‪ .‬תהי ∗‪ .w ∈ Σ‬הרעיון הוא לאפיין את השפה לפי המקרים שראינו קודם‪.‬‬
‫אם כך‪ ,‬נוכיח את הטענות הבאות‪:‬‬
‫)‪: (i‬‬
‫∈ ‪.(w‬‬
‫אם ‪ δ ∗ (q0 , w) = q0‬אזי ‪ #a w‬זוגי )כלומר ‪/ L‬‬
‫)‪: (ii‬‬
‫∈ ‪.(w‬‬
‫אם ‪ δ ∗ (q0 , w) = q1‬אזי ‪ #a w‬אי‪-‬זוגי ו‪ w-‬מסתיימת ב‪) a-‬כלומר ‪/ L‬‬
‫)‪ : (iii‬אם ‪ δ ∗ (q0 , w) = q2‬אזי ‪ #a w‬אי‪-‬זוגי ו‪ w-‬מסתיימת ב‪) b-‬כלומר ‪.(w ∈ L‬‬
‫כלומר חילקנו )חלוקה זרה!( את כל המילים ב‪ w ∈ Σ∗ -‬לפי המצב )‪ δ ∗ (q0 , w‬בו הן יסיימו‪ ,‬לכן אם נוכיח את הטענות‬
‫הללו נוכל להסיק ש‪ δ ∗ (q0 , w) = q2 -‬אם“ם ‪ 2 .w ∈ L‬בנוסף‪ ,‬מכיוון ש‪ F = {q2 }-‬ינבע ש‪ δ ∗ (q0 , w) ∈ F -‬אם“ם ‪.w ∈ L‬‬
‫נוכיח את הטענות הללו באינדוקציה על |‪.|w‬‬
‫בסיס )‪ :(|w| = 0‬מהיות ‪ |w| = 0‬נובע ‪ .w = ε‬לכן ‪q0‬‬
‫הגדרת ∗ ‪δ‬‬
‫=‬
‫∗‬
‫∗‬
‫)‪ δ (q0 , w) = δ (q0 , ε‬ואכן ‪ #a ε‬זוגי‪ .‬טענות )‪(ii), (iii‬‬
‫∗‬
‫מתקיימות באופן ריק‪ ,‬כי אין אף מילה באורך ‪ 0‬עבורה ‪.δ (q0 , w) 6= q0‬‬
‫‪2‬הקורא הסקרן מוזמן לוודא שהלוגיקה נכונה‪ ,‬ושבזכות החלוקה הזרה הוכחת ששלושת הגרירות הללו הופכת כל גרירה לדו‪-‬כיוונית )כלומר לאם‬
‫ורק אם(‪.‬‬
‫‪12‬‬
‫‪1‬‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫שבוע ‪1‬‬
‫צעד )‪ :(w ⇒ w · σ‬נניח שהטענה נכונה עבור מילה ‪ ,w‬ונוכיח שהיא נכונה עבור ‪ .w · a, w · b‬נחלק למקרים לפי האות‬
‫שבאה אחרי ‪ w‬ובכל חלוקה נחלק שוב למקרים לפי הערך שמקבלת ∗ ‪:δ‬‬
‫נסתכל על ‪:w · a‬‬
‫)‪ : (i‬נניח כי ‪ .δ ∗ (q0 , w · a) = q0‬אז } ‪ ,δ ∗ (q0 , w) ∈ {q1 , q2‬כי אי אפשר להגיע מ‪ q0 -‬לעצמו‪ ,‬לכן לפני שרצנו על ‪ a‬היינו‬
‫או ב‪ q1 -‬או ב‪ .q2 -‬מהיות } ‪ ,δ ∗ (q0 , w) ∈ {q1 , q2‬מהנחת האינדוקציה בהכרח ‪ #a w‬אי‪-‬זוגי‪ ,‬ולכן )‪ #a (w · a‬זוגי‪ ,‬כנדרש‪.‬‬
‫)‪ : (ii‬נניח כי ‪ .δ ∗ (q0 , w · a) = q1‬אז בהכרח ‪ ,δ ∗ (q0 , w) = q0‬כי לא יתכן שלפני שרצנו על ‪ a‬היינו ב‪ q2 -‬כי אי אפשר‬
‫להגיע ממנו ל‪ ,q1 -‬ולא יתכן שהיינו ב‪ q1 -‬כי ‪ .δ (q1 , a) 6= q1‬כלומר בהכרח היינו קודם ב‪.q0 -‬‬
‫לכן מהנחת האינדוקציה ‪ #a w‬זוגי‪ ,‬ולכן )‪ #a (w · a‬אי‪-‬זוגי‪ ,‬וכמובן ‪ w · a‬מסתיימת ב‪ ,a-‬כנדרש‪.‬‬
‫)‪ : (iii‬נניח כי ‪ .δ ∗ (q0 , w · a) = q2‬מצב זה לא אפשרי כי לא משנה באיזה מצב היינו אחרי שרצנו על ‪ ,w‬אין מצב ‪q‬‬
‫עבורו ‪) δ (q, a) = q2‬הסתכלו על הציור של האוטומט והשתכנעו בכך(‪ .‬לכן אין מה להוכיח‪.‬‬
‫ההוכחה עבור ‪ w · b‬מתבצעת באופן דומה‪ ,‬והיא הושארה כתרגיל לסטודנט המשקיע החכם היפה והחסון‪.‬‬
‫הערה על ההוכחה | חלוקה למקרים וגרירה של טענות‬
‫בגלל שזו נקודה מבלבלת מעט‪ ,‬נרצה להבהיר‪ .‬אנחנו למעשה הוכחנו ‪ 3‬תתי‪-‬טענות שאפשר לסכמן לשתי טענות כך‪:‬‬
‫∈ ‪.w‬‬
‫‪ .1‬אם } ‪ δ ∗ (q0 , w) ∈ {q0 , q1‬אזי ‪/ L‬‬
‫‪ .2‬אם ‪ δ ∗ (q0 , w) = q2‬אזי ‪.w ∈ L‬‬
‫כידוע בלוגיקה אם ‪ A → B‬אזי ‪) ¬B → ¬A‬אם טענה ‪ A‬גוררת את ‪ B‬אז ”לא ‪ “B‬גורר ”לא ‪ ,(“A‬וזה משהו‬
‫שמשתמשים בו כבר בקורסים בסיסיים במתמטיקה‪.‬‬
‫∗‬
‫∈ ‪ w‬אזי לא מתקיים } ‪ .δ (q0 , w) ∈ {q0 , q1‬כלומר‪ ,‬אם ‪w ∈ L‬‬
‫במקרה שלנו‪ ,‬מטענה ‪ 1‬נובע אם לא מתקיים ‪/ L‬‬
‫∈ )‪ .δ ∗ (q0 , w‬כלומר אם ‪ w ∈ L‬אזי ‪.δ ∗ (q0 , w) = q2‬‬
‫אזי } ‪/ {q0 , q1‬‬
‫בטענה ‪ 2‬ראינו ש‪ δ ∗ (q0 , w) = q2 -‬אזי ‪ ,w ∈ L‬כלומר משתי הטענות יחד הראינו ש‪ w ∈ L-‬אם“ם ‪.δ ∗ (q0 , w) = q2‬‬
‫דוגמה ‪ .1.3‬אין אוטומט ‪ DFA‬ששפתו היא }‪!L = {w | #a w = #b w‬‬
‫אם ננסה לבנות אוטומט‪ ,‬אז אנחנו נתחיל ממצב התחלתי בו קראנו אפס ‪ a‬ואפס ‪ ,b‬ועכשיו אם נקרא ‪ a‬נרצה מצב שזוכר‬
‫ש‪ a-‬מופיע פעם אחת יותר מ‪ ,b-‬ואם שוב נקרא ‪ a‬נרצה לזכור שפעמיים‪ ,‬וכן הלאה‪ ,‬ונקבל משהו שהוא אינסופי‪ .‬מהדוגמה‬
‫הזו אנחנו מבינים שיש שפות שיש להן אוטומט ויש שפות שאין להן )כרגע לא נוכיח שאין לשפה הזו אין אוטומט(‪ .‬מכאן‬
‫מגיעה ההגדרה הבאה‪.‬‬
‫הגדרה ‪ .1.8‬נסמן ב‪ REG-‬את מחלקת השפות הרגולריות והיא מוגדרת ע“י‬
‫}קיים ‪ A DFA‬עבורו ‪REG = {L ⊆ Σ∗ | L (A) = L‬‬
‫נאמר כי שפה ‪ L‬היא רגולרית אם ‪. L ∈ REG‬‬
‫‪13‬‬
‫‪1‬‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫‪1.1‬‬
‫שבוע ‪2‬‬
‫‪1.1‬‬
‫פעולות על שפות‬
‫פעולות על שפות‬
‫הגדרה ‪) .1.9‬פעולות על שפות( תהי ‪ Σ‬א“ב ותהיינה ∗‪ L, L1 , L2 ⊆ Σ‬שפות‪ .‬נגדיר את הפעולות הבאות‪:‬‬
‫‪ .1‬איחוד‪.L1 ∪ L2 = {w | w ∈ L1 ∨ w ∈ L2 } :‬‬
‫‪ .2‬שרשור )‪.L1 · L2 = {w1 · w2 | w1 ∈ L1 , w2 ∈ L2 } :(concatination‬‬
‫‪ .3‬כוכב )‪∀i ∈ [k] , wi ∈ L} :(kleene − star‬‬
‫‪.L∗ = {w1 · . . . · wk | k ≥ 0‬‬
‫האם ‪ L1 , L2‬חייבות להיות מעל אותו א“ב? התשובה היא שלא‪ ,‬אבל תמיד נניח שכן כי אם הן לא מעל אותו א“ב‬
‫נסתכל פשוט על א“ב שהוא האיחוד שלהן‪.‬‬
‫!‬
‫הערה‬
‫בהגדרה של ∗‪ ,L‬אפשרנו את המקרה ‪ k = 0‬כדי שיתקיים ∗‪ .ε ∈ L‬באופן כללי המשמעות של ∗‪ L‬היא שרשור סופי‬
‫של מספר כלשהו )יתכן אפס( של מילים ב‪.L-‬‬
‫דוגמה ‪ .1.4‬נגדיר }‪ .Σ = {1, 2, 3, 4‬נגדיר }‪ .L1 = {1, 333} , L2 = {22, 4444‬אזי‪:‬‬
‫‪.L1 ∪ L2 = {1, 22, 333, 4444} .1‬‬
‫‪ .L1 · L2 = {122, 14444, 33322, 3334444} .2‬אם ‪ ε‬היה ב‪ L1 -‬לדוגמה‪ ,‬אז גם ‪ 22‬היה ב‪ L1 · L2 -‬למשל‪.‬‬
‫‪ L∗1 = {ε, 1, 333, 1 1, 1 1 1, 13331, 333 333 1 333, . . .} .3‬ולמעשה יש בקבוצה זו אינסוף מילים‪ .‬נשים לב שלדוגמה‬
‫∈ ‪.13313‬‬
‫‪/ L∗1‬‬
‫שאלה מתי ∗‪ L‬סופית?‬
‫תשובה עבור ∅ = ‪ L‬ועבור }‪ L = {ε‬מתקיים }‪ .L∗ = {ε‬בכל מקרה אחר‪ L∗ ,‬היא אינסופית‪ ,‬ולמעשה עוצמתה היא ‪.ℵ0‬‬
‫‪ 1.2‬תכונות סגור של השפות הרגולריות‬
‫כפי שהמספרים הטבעיים סגורים לפעולת הכפל‪ ,‬אבל לא לחילוק‪ ,‬נרצה לראות לאילו פעולות השפות הרגולריות סגורות‪,‬‬
‫ולאילו לא‪.‬‬
‫סגירות למשלים‬
‫שפות רגולריות סגורות למשלים‬
‫משפט ‪ .1.1‬תהי ‪ .L ∈ REG‬אזי ‪.L = Σ∗ \L ∈ REG‬‬
‫הוכחה‪ .‬מהיות ‪ L ∈ REG‬קיים ‪ A = hQ, Σ, δ, q0 , F i DFA‬עבורו ‪ .L (A) = L‬נסתכל על האוטומט‬
‫‪A′ = hQ, Σ, δ, q0 , Q\F i‬‬
‫כלומר הפכנו את המצבים המקבלים ללא‪-‬מקבלים ולהפך‪ .‬עכשיו כל מילה שהייתה ב‪ L (A)-‬לא נמצאת ב‪ L (A′ )-‬ולהפך‪.‬‬
‫כלומר‪ ∀w ∈ Σ∗ ,‬הריצה של ‪ A‬על ‪ w‬מגיעה ל‪ Q\F1 -‬אם“ם ‪ A1‬דוחה את ‪ .w‬לכן ‪.L (A′ ) = L‬‬
‫‪14‬‬
‫הרצאה ‪2‬א‬
‫‪1‬‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫‪1.2‬‬
‫שבוע ‪2‬‬
‫תכונות סגור של השפות הרגולריות‬
‫סגירות לאיחוד‬
‫שפות רגולריות סגורות לאיחוד‬
‫משפט ‪ .1.2‬תהיינה ‪ .L1 , L2 ∈ REG‬אזי ‪.L1 ∪ L2 ∈ REG‬‬
‫רעיון ההוכחה‬
‫ניקח אוטומט שמתאים ל‪ L1 -‬ואחד שמתאים ל‪ ,L2 -‬ונריץ את שניהם בו זמנית על מילה באמצעות בנייה של אוטומט‬
‫מכפלה‪ .‬אם אחד האוטומטים באוטומט המכפלה יסיים במצב מקבל‪ ,‬נכריע שהאוטומט הגיע למצב מקבל‪.‬‬
‫‪A1 = hQ1 , Σ, δ1 , s1 , F1 i‬‬
‫שני ‪-DFA‬ים עבורם‬
‫הוכחה‪ .‬יהיו‬
‫‪A2 = hQ2 , Σ, δ2 , s2 , F2 i‬‬
‫) ‪.L (A) = L (A1 ) ∪ L (A2‬‬
‫‪L (A1 ) = L1‬‬
‫‪L (A2 ) = L2‬‬
‫‪ .‬נבנה ‪ A = hQ, Σ, δ, s0 , F i DFA‬עבורו‬
‫כדי ש‪ A-‬יסמלץ את ‪ A1 , A2‬יחד‪ ,‬נגדיר אותו להיות אוטומט המכפלה‪:‬‬
‫‪Q = Q1 × Q2‬‬
‫‪s = hs1 , s2 i‬‬
‫‪δ (hq1 , q2 i , σ) = hδ1 (q1 , σ) , δ2 (q2 , σ)i‬‬
‫} ‪F = (F1 × Q2 ) ∪ (Q1 × F2 ) = {(q1 , q2 ) | q1 ∈ F1 ∨ q2 ∈ F2‬‬
‫נשים לב שהגדרנו את ‪ F‬כפי שהגדרנו‪ ,‬כי אם מילה נמצאת ב‪ w ∈ L1 ∪ L2 -‬אז ‪ w ∈ L1‬או ‪ .w ∈ L2‬אם לדוגמה ‪w ∈ L1‬‬
‫אז הריצה שלה על ‪ A1‬תסתיים במצב מקבל‪ ,‬אך יכול להיות שהריצה על ‪ A2‬תסתיים במצב לא מקבל‪ .‬כדי ש‪ A-‬יקבל‬
‫את השפה ‪ L1 ∪ L2‬ובפרט את ‪ ,w‬אנחנו צריכים שאפילו אם רק אחד המצבים ‪ q1 , q2‬הוא מצב מקבל‪ ,‬אז באוטומט ‪A‬‬
‫המצב ) ‪ (q1 , q2‬יהיה מקבל‪.‬‬
‫נוכיח ש‪.L (A) = L (A1 ) ∪ L (A2 )-‬‬
‫תהי ∗‪ .w = w1 w2 · · · wn ∈ Σ‬תהי ‪ r = r0 , r1 , . . . , rn+1‬הריצה של ‪ A‬על ‪ .w‬נסמן‬
‫‬
‫‪q1i+1 = δ1 q1i , wi‬‬
‫‪q10 = s1‬‬
‫‬
‫‪ . i+1‬נשים לב שהריצות של ‪ A1 , A2‬על ‪ w‬הן‬
‫‪,0‬‬
‫≤‬
‫‪i‬‬
‫שלכל‬
‫לב‬
‫נשים‬
‫‪.‬‬
‫‪q2 = δ2 q2i , wi‬‬
‫‪q20 = s2‬‬
‫‪q1i , q2i‬‬
‫= ‪ .∀i, ri‬בסימונים שלנו‪,‬‬
‫‪r1 = q10 , q11 , . . . , q1n‬‬
‫‪r2 = q20 , q21 , . . . , q2n‬‬
‫‪.‬‬
‫עתה‪ w ∈ L (A) ,‬אם“ם ‪ r‬מקבלת אם“ם ‪ hq1n , q2n i ∈ F‬אם“ם ‪ q1n ∈ F1‬או ‪ q2n ∈ F2‬אם“ם ‪ r1‬מקבלת או ‪ r2‬מקבלת‬
‫אם“ם ) ‪ w ∈ L (A1‬או ) ‪ w ∈ L (A2‬אם“ם ) ‪.w ∈ L (A1 ) ∪ L (A2‬‬
‫כלומר ) ‪ ,L (A) = L (A1 ) ∪ L (A2‬כנדרש‪.‬‬
‫בהוכחה הנחנו ש‪ A1 , A2 -‬הם מעל אותו א“ב‪ .‬זה בסדר כי כפי שאמרנו פעם‪ ,‬בהקשר של פעולות על שפות‪ ,‬אפשר‬
‫פשוט להסתכל על ‪ Σ‬שהוא איחוד הא“בים שלהם )ואז בכל אחד מהאוטומטים אם‬
‫תשתנה(‪.‬יש מעבר על אות שלא !‬
‫נמצאת ב‪-‬א“ב המקורי‪ ,‬ניכנס פשוט לבור דוחה‪ ,‬וכך השפה של האוטומט לא‬
‫דוגמה )אוטומט מכפלה( נגדיר }‪ .Σ = {a‬נסתכל על האוטומטים ‪ A1 , A2‬הבאים‪ ,‬ונגדיר עבורם אוטומט מכפלה‪ .‬נשים‬
‫}‪L (A1 ) = {w | |w| ≡ 0 mod 2‬‬
‫לב ש‪-‬‬
‫‪ 3 .‬להלן ניתן לראות ציורים המתאימים לאוטומטים ‪ A1, A2‬וכן לאוטומט‬
‫}‪L (A2 ) = {w | |w| ≡ 0 mod 3‬‬
‫המכפלה ‪ .A‬אכן לא קשה להשתכנע ש‪.L (A) = L (A1 ) ∪ L (A2 )-‬‬
‫{‬
‫}‬
‫‪. i | ai ∈ L‬‬
‫‪3‬הערת צד‪ :‬שפה ∗}‪ L ⊆ {a‬מגדירה תת‪-‬קבוצה של המספרים הטבעיים‪:‬‬
‫המספרים הראשוניים‪ ,‬ועוד כל מיני שאלות מעניינות‪.‬‬
‫‪15‬‬
‫אפשר לשאול האם יש אוטומט שמגדיר את כל‬
‫‪1‬‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫‪1.2‬‬
‫שבוע ‪2‬‬
‫תכונות סגור של השפות הרגולריות‬
‫דוגמה לאוטומט מכפלה עבור איחוד‬
‫‪q1 , s 3‬‬
‫‪a‬‬
‫‪q1‬‬
‫‪q2‬‬
‫‪A1‬‬
‫‪a‬‬
‫‪q2 , s 2‬‬
‫‪a‬‬
‫‪a‬‬
‫‪a‬‬
‫‪s2‬‬
‫‪q2 , s 1‬‬
‫‪a‬‬
‫‪s1‬‬
‫‪a‬‬
‫‪s3‬‬
‫‪q1 , s 1‬‬
‫‪A‬‬
‫‪A2‬‬
‫‪a‬‬
‫‪a‬‬
‫‪a‬‬
‫‪q1 , s 2‬‬
‫‪a‬‬
‫‪q2 , s 3‬‬
‫סגירות לחיתוך‬
‫שפות רגולריות סגורות לאיחוד‬
‫משפט ‪ .1.3‬תהיינה ‪ .L1 , L2 ∈ REG‬אזי ‪.L1 ∩ L2 ∈ REG‬‬
‫הוכחה‪ .‬נגדיר אוטומט מכפלה כמו קודם‪ ,‬רק שהפעם המצבים המקבלים שלו יהיו‬
‫} ‪F = F1 × F2 = {(q1 , q2 ) | q1 ∈ F1 ∧ q2 ∈ F2‬‬
‫כי אנחנו רוצים שמילה תתקבל רק אם היא ב‪ L1 -‬וגם ב‪ .L2 -‬המשך ההוכחה הוא באותו אופן כמו עבור איחוד‪.‬‬
‫סגירות לשרשור‬
‫שפות רגולריות סגורות לשרשור‬
‫משפט ‪ .1.4‬תהיינה ‪ .L1 , L2 ∈ REG‬אזי ‪.L1 · L2 ∈ REG‬‬
‫היינו רוצים לנסות להגדיר אוטומט ‪ A‬כמו בהוכחות הקודמות‪ ,‬שמורכב איכשהו מ‪ .A1 , A2 -‬לצערנו‪ ,‬להגדיר אוטומט מכפלה‬
‫לא יעבוד כי אנחנו לא רצים כאן במקביל‪ .‬בהינתן מילה ‪ w = w1 · w2‬כאשר ‪ w1 ∈ L1 , w2 ∈ L2‬יכלנו אולי לנסות איכשהו‬
‫ש‪ A-‬יריץ את ‪ ,A1‬ואז ברגע שהיה מסיים לרוץ על ‪ w1‬היינו ממשיכים את הריצה מ‪ A2 -‬על ‪ ,w2‬אך אין לנו ממש דרך‬
‫∈ ‪ w‬איך נדע לזהות‬
‫לעשות את זה ‪ -‬איך בהינתן מילה ‪ w ∈ L1 · L2‬נדע כיצד ניתן לפרק אותה ל‪ ?w1 · w2 -‬אם ‪/ L1 · L2‬‬
‫שזה המצב?‬
‫היינו שמחים‪ ,‬אם היה אפשר‪ ,‬לבנות מנגנון שקופץ מהמצבים המקבלים של ‪ A1‬למצב ההתחלתי של ‪ - A2‬אבל לא ברור‬
‫איך בדיוק קופצים‪ .‬כלומר‪ ,‬היינו רוצים לעבור על כל הפירוקים האפשריים של ‪ w‬לשתי מילים ‪ ,w1 , w2‬ולבדוק האם‬
‫‪ ,w1 ∈ L1 , w2 ∈ L2‬כלומר היינו מריצים את ‪ w1‬על ‪ ,A1‬ואם היינו מגיעים למצב מקבל היינו קופצים למצב ההתחלתי‬
‫של ‪ A2‬וממשיכים לרוץ משם על המשך המילה‪.w2 ,‬‬
‫הבעיה היא שבאוטומט סופי דטרמיניסטי אין לנו איך לעבור על כל האפשרויות‪ ,‬אין לנו דרך לנחש בדיוק איזה פירוק הוא‬
‫הנכון‪ .‬בשביל זה אנחנו צריכים מושג חדש ‪ -‬אוטומט סופי אי‪-‬דטרמיניסטי‪.‬‬
‫ספוילר‪ :‬נראה שאוטומטים סופיים אי‪-‬דטרמיניסטיים הם בעלי אותו כוח הבעה כמו סופיים דטרמיניסטיים‪ ,‬כלומר‬
‫הם שקולים‪ .‬אנו נבנה אוטומט סופי אי‪-‬דטרמיניסטי שמקבל שרשור של שתי שפות‪ ,‬ומכך נסיק ש‪! .L · L ∈ REG-‬‬
‫‪2‬‬
‫‪16‬‬
‫‪1‬‬
‫‪2‬‬
‫‪2‬‬
‫אוטומט סופי אי‪-‬דטרמינסטי )‪(NFA‬‬
‫שבוע ‪2‬‬
‫אוטומט סופי אי‪-‬דטרמינסטי )‪(NFA‬‬
‫אוטומט סופי אי‪-‬דטרמינסטי הוא מודל שהגו בשנת ‪ 1959‬רבין ‪ 4‬וסקוט‪ ,‬והוא מוגדר כך‪:‬‬
‫הגדרה ‪ .2.1‬אוטומט סופי אי‪-‬דטרמינסטי )‪ (NFA‬הוא חמישיה ‪ A = hQ, Σ, δ, Q0 , F i‬כאשר‪:‬‬
‫ˆ ‪ Q‬קבוצת המצבים )קבוצה סופית(‪.‬‬
‫ˆ ‪ Σ‬הא“ב‪.‬‬
‫ˆ ‪ δ : Q × (Σ ∪ {ε}) → 2Q‬פונק’ מעברים‪.‬‬
‫ˆ ‪ Q0 ⊆ Q‬קבוצת המצבים ההתחלתיים‪.‬‬
‫ˆ ‪ F‬קבוצת המצבים המקבלים‪.‬‬
‫הרעיון הוא שעכשיו אנחנו מאפשרים למילה לעבור כמה מסלולי ריצה‪ ,‬ואנחנו אומרים שאוטומט מקבל מילה אם קיים‬
‫למילה מסלול ריצה כלשהו שמסתיים במצב מקבל )גם אם יש ריצה דוחה‪ ,‬זה לא משנה לנו כל עוד יש ריצה אחת לפחות‬
‫שהיא מקבלת(‪.‬‬
‫העובדה שיש כמה מסלולי ריצה מתבטאת בהגדרה בכמה דרכים‪:‬‬
‫‪ .Q0 ⊆ Q .1‬יכולים להיות כמה מצבים התחלתיים‪ ,‬ולא רק אחד‪ .‬כלומר ריצות שונות לא בהכרח יתחילו מאותו מצב‪.‬‬
‫‪ .δ : Q × (Σ ∪ {ε}) → 2Q .2‬אנחנו יכולים לעבור ממצב כלשהו לכמה מצבים‪ ,‬ולא רק למצב יחיד‪.‬‬
‫‪ .δ : Q × (Σ ∪ {ε}) → 2Q .3‬יש לנו עכשיו מעברים מיוחדים בשם ”מעברי ‪ .“ε‬מעבר אפסילון אומר שכתוב על קשת‬
‫את המילה ‪ ,ε‬שזה אומר שאנחנו יכולים לעבור ממצב למצב‪ ,‬בלי להתקדם בקריאה ‪ -‬כלומר בלי לקרוא אות נוספת‪.‬‬
‫הרעיון הוא שאם יש מילה כמו ‪ ,0100‬אז אפשר לחשוב עליה גם בתור ‪ 010ε0‬או ‪ ,ε0100‬כלומר אפשר להוסיף‬
‫אפסילונים בכל מקום בלי לשנות את המילה‪ ,‬ולכן נוכל לעבור ”בחינם“ על קשתות שכתוב עליהן ‪.ε‬‬
‫הבהרנו רעיונית מהי ריצה על האוטומט‪ ,‬אך עכשיו נגדיר פורמלית מהי ריצה ומהי ריצה מקבלת‪:‬‬
‫הגדרה ‪ .2.2‬ריצה של ‪ A NFA‬על מילה ‪ w = w1 w2 . . . wn‬מעל ‪ Σ‬זו סדרה של מצבים ‪ ,r = r0 , r1 , . . . , rm‬עבור‬
‫‪ ,m ≥ n‬כך שניתן לכתוב את ‪ w‬כ‪ ,(xi ∈ Σ ∪ {ε}) w′ = x1 x2 . . . xm -‬וכך שמתקיים‪:‬‬
‫‪ - r0 ∈ Q0 .1‬הריצה מתחילה ממצב התחלתי כלשהו‪.‬‬
‫‪ .2‬לכל ‪ i ≥ 0‬מתקיים ) ‪.ri+1 ∈ δ (ri , xi+1‬‬
‫הגדרה ‪ .2.3‬יהיו ‪ ,A NFA‬מילה ‪ w‬וריצה ‪ r‬של ‪ w‬על ‪ .A‬נאמר כי‪:‬‬
‫ˆ ‪ r‬ריצה מקבלת אם ‪.rm ∈ F‬‬
‫ˆ ‪ A‬מקבל את ‪ w‬אם קיימת ריצה מקבלת של ‪ A‬על ‪.w‬‬
‫ˆ השפה של ‪ A‬היא } ‪ A‬מקבלת את ‪.L (A) = {w ∈ Σ∗ |w‬‬
‫הערה כשאנחנו אומרים שניתן לכתוב את ‪ w‬כ‪ ,w′ -‬הכוונה היא שאם נוריד מ‪ w′ -‬את כל האפסילונים‪ ,‬נקבל את ‪.w‬‬
‫הערה בהגדרה של ריצה ‪ m ≥ n‬בגלל מעברי ‪.ε‬‬
‫‪4‬מיכאל רבין היה חבר סגל באוניברסיטה העברית‪ ,‬וקיבל פרס טיורינג על המודל הזה‪.‬‬
‫‪17‬‬
‫‪2‬‬
‫שבוע ‪2‬‬
‫אוטומט סופי אי‪-‬דטרמינסטי )‪(NFA‬‬
‫נמחיש את כל הדברים הללו בדוגמאות הבאות‪:‬‬
‫דוגמה ל‪NFA-‬‬
‫נרצה לבנות ‪ A NFA‬עבור השפה‬
‫‬
‫∗‬
‫‪ w‬מכילה את התת‪-‬מילה ‪L = w ∈ {0, 1} | 011‬‬
‫‪0, 1‬‬
‫ב‪ NFA-‬מימין אנחנו רואים שאם ‪ w ∈ L‬אז יש ריצה‬
‫‪0, 1‬‬
‫‪1‬‬
‫‪q3‬‬
‫בה ‪ w‬בשלב כלשהו עוברת מ‪ q0 -‬ל‪ q1 -‬ואז ל‪ q2 -‬ואז‬
‫‪q2‬‬
‫‪1‬‬
‫‪q1‬‬
‫‪0‬‬
‫‪q0‬‬
‫ל‪ q3 -‬ונשארת שם‪ .‬ולמעשה ‪ w ∈ L‬אם“ם יש ריצה של‬
‫‪ A‬על ‪ w‬שמסתיימת ב‪ ,q3 -‬לכן ‪.L (A) = A‬‬
‫הערה נשים לב שבדוגמה הקודמת מתקיים למשל } ‪ ,δ (q0 , 0) = {q0 , q1‬זה מבטא פורמלית שיש יותר ממצב אחד אליו אפשר‬
‫לעבור‪.‬‬
‫דוגמה ל‪ NFA-‬עם מעברי ‪ε‬‬
‫‪s0‬‬
‫‪ε‬‬
‫‪1‬‬
‫‪0‬‬
‫‪s1‬‬
‫‪s2‬‬
‫‪0, 1‬‬
‫‪0‬‬
‫נסתכל על ה‪ NFA-‬לעיל‪ .‬נשים לב שהמילה ‪ 0‬נמצאת בשפה של האוטומט‪ ,‬כי נוכל לעבור מעבר ‪ ε‬מ‪ s0 -‬ל‪ ,s1 -‬ואז‬
‫לקרוא את ‪ 0‬ולעבור מ‪ s1 -‬ל‪ s0 -‬ולסיים שם )‪.(0 = ε0‬‬
‫גם ‪ 00‬בשפה כי נוכל בדומה לדוגמה הקודמת לחשוב על ‪ 00‬בתור ‪ ,ε0ε0‬ואז נלך במסלול‬
‫‪0‬‬
‫מעבר ‪ε‬‬
‫מעבר ‪ε‬‬
‫‪0‬‬
‫‪s0 −−−→ s1 → s0 −−−→ s1 → s0‬‬
‫גם ‪ 1000‬בשפה‪ :‬נלך במסלול‬
‫‪0‬‬
‫מעבר ‪ε‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪s0 → s2 → s1 → s0 −−−→ s1 → s0‬‬
‫‪ 10‬לא בשפה לעומת זאת‪ :‬בכל ריצה אנחנו נהיה חייבים לעבור מ‪ s0 -‬ל‪ ,s2 -‬ומשם או שנשאר ב‪ s2 -‬או שנעבור ל‪s1-‬‬
‫‪ -‬כך או כך באף ריצה לא נסיים במצב מקבל‪.‬‬
‫‪18‬‬
‫אוטומט סופי אי‪-‬דטרמינסטי )‪(NFA‬‬
‫‪2‬‬
‫‪2.1‬‬
‫‪2.1‬‬
‫שבוע ‪2‬‬
‫שקילות בין ‪ NFA‬ל‪DFA-‬‬
‫שקילות בין ‪ NFA‬ל‪DFA-‬‬
‫עכשיו נראה שלכל ‪ NFA‬יש ‪ DFA‬שמקבל את אותה שפה‪ ,‬ולהפך‪ .‬אם היינו פילוסופים‪ ,‬היינו יכולים לדבר על איך שזה‬
‫בעצם אומר שאין משמעות לבחירה חופשית )מעל מרחב מצבים סופי(‪ ,‬וכל בחירה אפשר למדל עם דטרמיניזם‪ .‬אבל אנחנו‬
‫לא פילוסופים אז נוותר על הדיון ביינתים‪ .‬מכך גם נסיק בסוף ששפות רגולריות סגורות לשרשור )היזכרו בטענה ‪.(1.4‬‬
‫לפני שננסח את המשפט ונוכיח אותו‪ ,‬אנחנו צריכים הגדרה דומה ל‪ δ ∗ -‬עבור ‪ .NFA‬כפי שב‪ δ ∗ DFA-‬אומרת לנו מה המצב‬
‫אליו נגיע אחרי קריאה של מילה‪ ,‬ב‪ NFA-‬היא תגיד לנו מהי קבוצת המצבים אליהם אפשר להגיע אחרי קריאת מילה‪.‬‬
‫הגדרה ‪ .2.4‬יהי ‪ .NFA A = hQ, Σ, δ, Q0 , F i‬נגדיר ‪ δ ∗ : 2Q × Σ∗ → 2Q‬באופן הבא‪:‬‬
‫‪w=ε‬‬
‫‪w = σ, σ ∈ Σ‬‬
‫‪w = w′ · σ, w′ ∈ Σ∗ , σ ∈ Σ‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪S‬‬
‫‪‬‬
‫‪‬‬
‫‪S‬‬
‫∗‬
‫)‪δ (S, w) = {t | ∃s ∈ S : t ∈ δ (s, σ)} = s∈S δ (s, σ‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫)‪δ ∗ (δ ∗ (S, w′ ) , σ‬‬
‫בהגדרה זו לא התחשבנו במעברי ‪ ,ε‬זה כי כל‬
‫‪ NFA‬אפשר לכתוב ללא מעברי ‪) ε‬ראו משפט ‪ 15.1‬בתרגול(‪ .‬לשם !‬
‫נוחות אפשר גם לחשוב ש‪ δ -‬מטפלת גם במעברי ‪.ε‬‬
‫∗‬
‫שקילות ‪ NFA‬ו‪DFA-‬‬
‫משפט ‪ .2.1‬לכל ‪ A NFA‬יש ‪ A′ DFA‬כך ש‪.L (A) = L (A′ )-‬‬
‫רעיון ההוכחה‬
‫נבנה ל‪ A-‬אוטומט ‪ A′ DFA‬בו כל מצב הוא תת‪-‬קבוצה של המצבים ב‪ ,A-‬לכן המצב ההתחלתי יוכל להיות קבוצת‬
‫המצבים ההתחלתיים ב‪ .A-‬פונק’ המעברים תהיה כל המצבים אליהם אפשר להגיע מתת הקבוצה הנוכחית באמצעות‬
‫קריאה של אות‪ .‬כך ינבע ש‪ A′ -‬מגיע למצב ‪) S‬בריצה היחידה שלו( אחרי קריאת מילה ‪ w‬אם“ם ‪ A‬יכול להגיע‬
‫לבדיוק כל המצבים ב‪ S-‬אחרי קריאת ‪.w‬‬
‫חשוב להבין‪ S :‬היא מצב ב‪ ,A′ -‬ובו זמנית היא קבוצת מצבים ב‪.A-‬‬
‫הוכחה‪ .‬יהי ‪ .NFA A = hQ, Σ, Q0 , δ, F i‬נבנה ‪ A′ = hQ′ , Σ, q0′ , ρ, F ′ i DFA‬כך ש‪ .L (A) = L (A′ )-‬נניח בה“כ שב‪A-‬‬
‫אין מעברי ‪) ε‬בתרגול‪ ,15.1 ,‬ראינו כיצד להיפטר מהם(‪ .‬נגדיר‬
‫‪Q′ = 2 Q‬‬
‫‪q0′ = Q0‬‬
‫}∅ =‪F ′ = {S ⊆ Q | S ∩ F 6‬‬
‫ונגדיר ‪ ρ : Q′ × Σ → Q′‬ע“י )‪δ (s, σ‬‬
‫‪S‬‬
‫= )‪.ρ (S, σ‬‬
‫‪s∈S‬‬
‫נציין שהגדרנו את ‪ F‬כך כי מספיק שיש ריצה אחת מקבלת על ה‪ NFA-‬כדי שנקבל את המילה‪ .‬להגדיר } ‪ F ′ = {F‬זו‬
‫דרישה חזקה מדי כי אז אנחנו דורשים שריצה על ‪ w‬מגיעה לכל המצבים המקבלים ב‪.A-‬‬
‫אנו נראה שמתקיים‬
‫המצב ש‪ A′ -‬מגיע אליו אחרי קריאת ‪w‬‬
‫קבוצת המצבים ש‪ A-‬יכול להיות בה באחת הריצות שלו על ‪w‬‬
‫↓‬
‫↓‬
‫)‪δ ∗ (Q0 , w‬‬
‫=‬
‫‪19‬‬
‫)‪ρ∗ (q0′ , w‬‬
‫הרצאה ‪2‬ב‬
‫‪2‬‬
‫אוטומט סופי אי‪-‬דטרמינסטי )‪(NFA‬‬
‫‪2.1‬‬
‫שבוע ‪3‬‬
‫שקילות בין ‪ NFA‬ל‪DFA-‬‬
‫ומכך ינבע כרצוי‪:‬‬
‫∅ =‪ρ∗ (q0′ , w) ∩ F 6‬‬
‫)‪ρ∗ (q0′ ,w)=δ ∗ (Q0 ,w‬‬
‫⇒⇐‬
‫יש ריצה מקבלת של ‪ A‬על ‪w‬‬
‫↓‬
‫∅ =‪δ ∗ (Q0 , w) ∩ F 6‬‬
‫)‪w ∈ L (A‬‬
‫⇒⇐‬
‫) ‪⇐⇒ ρ∗ (q0′ , w) ∈ F ′ ⇐⇒ w ∈ L (A′‬‬
‫תהי ∗‪ .w ∈ Σ‬נראה כי )‪ ρ∗ (q0′ , w) = δ ∗ (Q0 , w‬באינדוקציה על |‪:k = |w‬‬
‫בסיס )‪ :(k = 0‬מהיות ‪ |w| = 0‬בהכרח ‪ .w = ε‬אכן )‪Q0 = δ ∗ (Q0 , ε‬‬
‫הגדרת ‪A′‬‬
‫= ‪q0′‬‬
‫= )‪.ρ∗ (q0′ , ε‬‬
‫צעד )‪:(k ⇒ k + 1‬‬
‫)‪δ (s, σ) = δ ∗ (Q0 , w · σ‬‬
‫[‬
‫הגדרת ‪ρ‬‬
‫=‬
‫ה”א‬
‫)‪ρ∗ (q0′ , w · σ) = ρ (ρ∗ (q0′ , w), σ) = ρ (δ ∗ (Q0 , w), σ‬‬
‫)‪s∈δ ∗ (Q0 ,w‬‬
‫כאשר המעבר האחרון נכון כי )‪δ (s, σ‬‬
‫‪S‬‬
‫)‪s∈δ ∗ (Q0 ,w‬‬
‫היא קבוצת כל המצבים אליהם אפשר להגיע אם נתחיל ממצב ב‪δ ∗ (Q0 , w)-‬‬
‫ונעשה צד נוסף אחרי קריאה של ‪ ,σ‬שאלה בדיוק כל המצבים אליהם אפשר להגיע בקריאה של ‪ w · σ‬כשמתחילים ממצב‬
‫ב‪ ,q0 -‬שזה בדיוק )‪.δ ∗ (Q0 , w · σ‬‬
‫דוגמה ‪) .2.1‬הבנייה בהוכחה( נסתכל על האוטומט ‪ A‬הבא‪ ,‬שמתאים לשפה‬
‫}האות האחרונה כבר הופיעה ברישא שלא כוללת את האות האחרונה | ‪L = {w‬‬
‫∈ ‪ .010 ∈ L, 110‬נשים לב ש‪ ρ ({s0 , s4 } , 1) = {s0 , s2 , s4 }-‬כי בקריאה של ‪ 1‬אפשר להגיע מ‪ s0 -‬ל‪s0 -‬‬
‫מתקיים למשל ‪/ L‬‬
‫ומ‪ s4 -‬ל‪ .s2 , s4 -‬באופן דומה הגדרנו את יתר המעברים‪ .‬יש מצבים נוספים‪ ,‬כדוגמת } ‪ q ′ = {s0 , s1 , s2 , s3 , s4‬שלא ציירנו‪,‬‬
‫כי הם ”לא רלוונטיים לאוטומט“ שכן אין איך להגיע אליהם מהמצב ההתחלתי‪.‬‬
‫כמו כן‪ ,‬נשים לב שהמצב } ‪ {s0 , s2 , s4‬הוא מצב מקבל כי ‪) s2‬שהוא מצב מקבל ב‪ NFA-‬המתאים( נמצא בו‪.‬‬
‫‪5‬‬
‫דוגמה לבנייה בהוכחה | מימין ‪ NFA‬ומשמאל ה‪ DFA-‬המתאים לו‬
‫‪0‬‬
‫‪0, 1‬‬
‫‪s1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪s0‬‬
‫‪0‬‬
‫‪s2‬‬
‫‪1‬‬
‫‪1‬‬
‫} ‪{s1 , s2 , s4‬‬
‫‪0, 1‬‬
‫‪0, 1‬‬
‫} ‪{s1 , s2 , s3‬‬
‫‪0‬‬
‫‪0, 1‬‬
‫} ‪{s1 , s4‬‬
‫‪1‬‬
‫} ‪{s0 , s3‬‬
‫‪0‬‬
‫‪0‬‬
‫‪s4‬‬
‫} ‪{s1 , s3‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪s3‬‬
‫‪1‬‬
‫} ‪{s0 , s2 , s4‬‬
‫‪1‬‬
‫} ‪{s0 , s4‬‬
‫ראינו בהוכחה של המשפט הקודם‪ ,‬שלכל ‪ A NFA‬בעל ‪ n‬מצבים‪ ,‬אנחנו יכולים למצוא ‪ A′ DFA‬עם לכל היותר ‪ 2n‬מצבים‪.‬‬
‫‪5‬הפעולה של לבנות ‪ DFA‬השקול ל‪ NFA-‬נקראית גם ”לחרצן“‪ .‬אוטומט דטרמיניסטי נקרא ”עצמיון חרצני“‪ :‬עצמיון ‪ -‬אוטומט‪ ,‬חרצני ‪-‬‬
‫דטרמיניסטי‪ .‬לעשות דטרמיניזציה‪ ,‬כלומר לחרצן‪ ,‬זה לגרום לאוטומט להיות נחרץ בדעתו‪.‬‬
‫‪20‬‬
‫הרצאה ‪3‬א‬
‫‪2‬‬
‫אוטומט סופי אי‪-‬דטרמינסטי )‪(NFA‬‬
‫‪2.1‬‬
‫שבוע ‪3‬‬
‫שקילות בין ‪ NFA‬ל‪DFA-‬‬
‫‪2n‬‬
‫כלומר מצאנו חסם עליון ‪ .NFA −→ DFA -‬עתה נרצה למצוא חסם תחתון‪.‬‬
‫אנו נראה שבאופן כללי אין פולינום ‪ p‬שבהינתן ‪ NFA‬עם ‪ n‬מצבים ניתן לייצר ‪ DFA‬שקול עם לכל היותר )‪ p (n‬מצבים‪.‬‬
‫‪2n‬‬
‫→‪ - NFA −‬החסם העליון הוא ‪ 2n‬וגם התחתון הוא ‪.2n‬‬
‫כלומר ‪DFA‬‬
‫‪2n‬‬
‫אם כך‪ ,‬נראה שיש סדרת שפות‪ ,Ln , n ∈ N ,‬כך שהפער בין כמות המצבים ב‪ NFA-‬שמקבל את השפה ל‪ DFA-‬המינימלי‬
‫שמקבל את השפה הוא אקספוננציאלי‪.‬‬
‫טענה ‪ .2.1‬נגדיר‬
‫‬
‫∗‬
‫במקום ה‪-n-‬י מהסוף מופיע ‪ .∀n ∈ N, Ln = w ∈ {0, 1} | 0‬אזי קיים ‪ NFA‬עם ‪ n + 1‬מצבים‬
‫המקבל את ‪ ,Ln‬וכל ‪ DFA‬המקבל את ‪ Ln‬מכיל לפחות‬
‫‪n‬‬
‫‪ 2‬מצבים‪.‬‬
‫הוכחה‪ .‬לא קשה לראות שה‪ NFA-‬הבא מקבל את השפה ושיש לו רק ‪ n + 1‬מצבים‪:‬‬
‫‪0, 1‬‬
‫‪0, 1 ... 0, 1‬‬
‫‪sn‬‬
‫‪s2‬‬
‫‪0, 1‬‬
‫‪s1‬‬
‫‪0‬‬
‫‪s0‬‬
‫עכשיו נניח בשלילה שקיים ‪ ,Dn = h{0, 1} , Q, q0 , δ, F i ,DFA‬עבורו ‪ L (Dn ) = Ln‬ויש ל‪ Dn -‬פחות מ‪ 2n -‬מצבים‪ .‬בגלל שב‪Dn -‬‬
‫‪n‬‬
‫יש פחות מ‪ 2n -‬מצבים‪ ,‬ויש ‪ 2n‬מילים באורך ‪ n‬מעל }‪ ,Σ = {0, 1‬אז מעקרון שובך היונים‪ ,‬יש שתי מילים }‪w1 , w2 ∈ {0, 1‬‬
‫כך ש‪ w1 6= w2 -‬ו‪ Dn -‬מגיע לאותו מצב אחרי קריאת ‪ w1‬ואחרי קריאת ‪ .w2‬כלומר‪.q := δ ∗ (q0 , w1 ) = δ ∗ (q0 , w2 ) ,‬‬
‫מהיות ‪ w1 6= w2‬קיים ‪ 1 ≤ i ≤ n‬עבורו ]‪ 6 .w1 [i] 6= w2 [i‬נניח בה“כ ‪.w1 [i] = 0, w2 [i] = 1‬‬
‫נשים לב שמהאות ה‪ i-‬אנחנו עוברים ‪ n − i‬מצבים עד שאנחנו מגיעים ל‪ .q-‬היות שהריצות של המילים מתלכדות ב‪,q-‬‬
‫נרצה להוסיף לכל אחת מהן סיפא כדי שהאות ה‪-i-‬ית ב‪ w1 , w2 -‬תהפוך לאות ה‪-n-‬ית מהסוף‪ .‬כלומר אנחנו נרצה לשרשר‬
‫ל‪ w1 , w2 -‬מילה באורך ‪) i − 1‬לא משנה איזו(‪ ,‬ככה שכל אחת מהמילים המשורשרות תגיע לאותו מצב‪ ,‬אבל אחת תתקבל‬
‫ע“י האוטומט והאחרת לא ‪ -‬שכן במילה האחת יש ‪ 0‬במקום ה‪-n-‬י מהסוף ובאחרת יש ‪ .1‬זו כמובן סתירה‪ ,‬כי מצב לא‬
‫יכול להיות גם מקבל וגם לא מקבל‪.‬‬
‫נבחר ‪ .x = 1i−1‬נסתכל על )‪ .s = δ ∗ (q, x‬אם ‪ s ∈ F‬אז ‪ Dn‬מקבל את ‪ - w2 · x‬בסתירה לנכונות ‪ Dn‬כי ב‪ w2 · x-‬האות‬
‫∈ ‪ ,s‬אבל אז ‪ Dn‬לא מקבל את ‪) w1 · x‬כי הריצה היחידה של ‪ w1 · x‬על ‪ Dn‬מגיעה ל‪.(s-‬‬
‫ה‪-n-‬ית מהסוף היא ‪ .1‬לכן ‪/ F‬‬
‫זו סתירה לנכונות ‪ Dn‬כי ב‪ w1 · x-‬האות ה‪-n-‬ית מהסוף היא ‪.0‬‬
‫]‪w1 [i‬‬
‫‪|w1 [i+1],...,w1 [n]|=n−i‬‬
‫‪0‬‬
‫]‪w1 [1],...,w1 [i−1‬‬
‫‪|w1 [i],...,w1 [n],x[1],...,x[i−1]|=n‬‬
‫‪◦s‬‬
‫‪i−1‬‬
‫◦‬
‫◦‬
‫‪q0‬‬
‫‪q‬‬
‫‪|w2 [i],...,w2 [n],x[1],...,x[i−1]|=n‬‬
‫]‪w2 [1],...,w2 [i−1‬‬
‫‪|w2 [i+1],...,w2 [n]|=n−i‬‬
‫‪1‬‬
‫]‪w2 [i‬‬
‫אין זה אומר שלכל ‪ NFA‬נדרש מספר אקספוננציאלי של מצבים כדי לעבור ל‪ .DFA-‬אלא רק שבאופן‬
‫‪ .DFA‬כללי לא ניתן !‬
‫להתחייב לכמות שהיא לא אקספוננציאלית‪ .‬למשל‪ ,‬אוטומט עם מצב אחד‪ ,‬הוא גם ‪ NFA‬וגם‬
‫‪6‬הסימון ]‪ w [i‬הוא האות ה‪ i-‬ב‪.w-‬‬
‫‪21‬‬
‫‪3‬‬
‫‪3‬‬
‫שבוע ‪3‬‬
‫למת הניפוח לשפות רגולריות‬
‫למת הניפוח לשפות רגולריות‬
‫טענה ‪ .3.1‬אין ‪ DFA‬עבור }‪.L = {0n 1n | n ≥ 0‬‬
‫הוכחה‪ .‬נניח בשלילה שקיים ‪ A = hΣ, Q, q0 , δ, F i DFA‬עבורו ‪ .L (A) = L‬יהי |‪ .p = |Q‬נתבונן במילה ‪.w = 0p 1p ∈ L‬‬
‫הריצה של ‪ A‬על ‪ w‬מקבלת‪ ,‬ונסמנה ‪ .r = q0 , q1 , . . . , q2p‬מעקרון שובך היונים‪ ,‬ברישא ‪ q0 , . . . , qp‬יש מעגל‪ .‬כלומר‪ ,‬יש‬
‫‪ 0 ≤ l < j ≤ p‬כך ש‪ 7 .ql = qj -‬נשים לב שאם נוסיף לאמצע את המילה עוד עותקים של האותיות שרצות במעגל‪ ,‬אז נקבל‬
‫שהריצה תסתיים באותו מצב‪ ,‬כי אנחנו נרוץ עד ‪ ,ql‬נסתובב במעגל כמה פעמים שאנחנו רוצים )אפילו אם נסתובב ‪ 0‬פעמים‬
‫זה בסדר(‪ ,‬כלומר נוכל לנפח את המילה כאוות נפשנו‪ ,‬ואז נמשיך מ‪ qj -‬ל‪ qp -‬ונסיים את הריצה‪ .‬מכאן שיש ל‪ A-‬ריצה‬
‫∈ ‪ 0p−(j−l) 1p‬בסתירה לכך ש‪.L (A) = L-‬‬
‫מקבלת גם על ‪) 0p−(j−l) 1p‬כלומר דילגנו על המעגל(‪ .‬עם זאת‪/ L ,‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪q2p‬‬
‫‪1 1 ... 1 1‬‬
‫‪qp‬‬
‫‪0‬‬
‫‪0 0 ... 0 0‬‬
‫‪0 0 ... 0 0‬‬
‫‪ql = qj‬‬
‫‪q0‬‬
‫הערה‪ .‬באיור ניתן לראות שלכאורה ‪ ql‬שולח את האות ‪ 0‬לשני מצבים שונים ‪ -‬פעם אחת לתוך המעגל ופעם אחת לכיוון‬
‫‪ .q2p‬אפשר לחשוב שזו סתירה כי אוטומט ‪ DFA‬לא יכול להעביר אות לכמה מצבים‪ .‬אז ראשית‪ ,‬מי שזה מפריע לו יכול‬
‫לדמיין שמדובר ב‪ NFA-‬ולא ‪) DFA‬הרי ראינו שבהקשר של שפות רגולריות השניים שקולים(‪ .‬שנית‪ ,‬הציור הוא רק ציור‬
‫שנועד לתת אינטואיציה ‪ -‬למעשה המצב ‪ ql‬תמיד שולח את האות ‪ 0‬לאותו מצב‪ ,‬פשוט בציור זה נראה כמו מצב אחר‪.‬‬
‫המצבים מ‪ qj -‬עד ‪ qp‬חייביות להיות למעשה על המעגל עצמו‪ ,‬ואז ברגע שאנחנו קוראים את האות ‪ 1‬אנחנו משתחררים‬
‫בשלב מסויים מהמעגל ומגיעים ל‪) q2p -‬יכול להיות ש‪ q2p -‬גם הוא נמצא על המעגל‪ ,‬אך אין חובה לכך(‪.‬‬
‫נכליל את הרעיון מההוכחה‪ ,‬בו אנחנו מראים ששפה היא לא רגולרית באמצעות מציאת מעגלים וניפוח מילים לפי המעגלים‬
‫שמצאנו‪.‬‬
‫למת הניפוח לשפות רגולריות‬
‫משפט ‪ .3.1‬תהי ‪ .L ∈ REG‬אזי קיים ‪) p ≥ 1‬קבוע הניפוח( כך שלכל מילה ‪ ,w ∈ L‬אם ‪ |w| ≥ p‬אז קיימת חלוקה‬
‫‪ w = x · y · z‬כך שמתקיים‪:‬‬
‫‪.|xy| ≤ p .1‬‬
‫‪|y| > 0 .2‬‬
‫)‪.(y 6= ε‬‬
‫‪.∀i ≥ 0, xy i z ∈ L .3‬‬
‫מהיות ‪ ,L ∈ REG‬קיים ‪ ,A = hΣ, Q, q0 , δ, F i ,DFA‬עבורו‬
‫הוכחה‪ .‬ההוכחה תהיה דומה להוכחה בדוגמה הקודמת‪.‬‬
‫‪ .L (A) = L‬נבחר |‪ .p = |Q‬נתבונן במילה ‪ w = w1 . . . wn ∈ L‬עבורה ‪ .|w| ≥ p‬נסמן את הריצה של ‪ A‬על ‪ w‬בתור‬
‫‪ .q0 , . . . , qn‬מעקרון שובך היונים‪ ,‬קיים בריצה מצב שחוזר על עצמו בקריאת ‪ p‬האותיות הראשונות‪ .‬כלומר‪ ,‬קיימים‬
‫‪ 0 ≤ l < j ≤ p‬כך ש‪.qj = ql -‬‬
‫נגדיר ‪:x = w1 . . . wl , y = wl+1 . . . wj , z = wj+1 . . . wn‬‬
‫‪wj+1‬‬
‫‪w‬‬
‫‪wj‬‬
‫‪wl+1‬‬
‫‪w‬‬
‫‪w‬‬
‫‪n‬‬
‫‪1‬‬
‫‪l‬‬
‫‪qn‬‬
‫→‪q0 −−‬‬
‫→‪. . . −‬‬
‫→‪q −−−→ . . . −−→ qj −−−→ . . . −−‬‬
‫|‬
‫‪{z‬‬
‫‪}|l‬‬
‫‪{z‬‬
‫}‬
‫‪{z‬‬
‫|}‬
‫‪z‬‬
‫‪y‬‬
‫‪7‬חשוב לשים לב שאחרי קריאת ‪ p‬אותיות אנו מבקרים ב‪ p + 1-‬מצבים‪.‬‬
‫‪22‬‬
‫‪x‬‬
‫‪3‬‬
‫שבוע ‪3‬‬
‫למת הניפוח לשפות רגולריות‬
‫נבדוק שמתקיימים התנאים‪:‬‬
‫‪ .1‬אכן ‪ |xy| ≤ p‬שכן ‪.j ≤ p‬‬
‫‪ |y| > 0 .2‬כי ‪.l < j‬‬
‫‪i‬‬
‫‪ .3‬לכל ‪ ,i‬הריצה של ‪ xy z‬היא ‪ q0 , . . . , ql , (ql+1 . . . , qj ) , qj+1 . . . qn‬וזו ריצה מקבלת כי ‪ ,qn ∈ F‬שכן ‪ xyz ∈ L‬והריצה‬
‫‪i‬‬
‫של המילה הזו מסתיימת ב‪.qn -‬‬
‫הערה‬
‫אם ‪ L‬סופית‪ ,‬אפשר לקחת את קבוע הניפוח ‪ p‬להיות גדול ממש מאורך המילה הארוכה ביותר ב‪ ,L-‬ואז למת‬
‫הניפוח מתקיימת באופן ריק )כי אף מילה ‪ w ∈ L‬לא מקיימת ‪ .(|w| ≥ p‬כמו כן‪ ,‬ההוכחה הייתה עובדת גם על‬
‫‪ .NFA‬נבחין כי הבחירה של ‪ p‬איננה חייבת להיות מספר המצבים‪ .‬המטרה שלנו היא למצוא מעגל‪ ,‬זה אומר‬
‫שמספיק לבחור את הקוטר של הגרף ‪.1+‬‬
‫∗‬
‫דוגמה ‪ .3.1‬נביט ב‪ -‬במקום הלפני‪-‬אחרון מופיע ‪w ∈ {0, 1} | 0‬‬
‫‬
‫= ‪.L‬‬
‫נבחר ‪ p = 3‬ונקבל כי ‪ w = xyz‬כאשר‬
‫‪ .x = ε, |y| = 1, |z| = |w| − 1‬אכן מתקיים‪:‬‬
‫‪.|xy| = 1 ≤ 3 = p .1‬‬
‫‪.|y| = 1 > 0 .2‬‬
‫‪ .3‬לכל ‪ i ≥ 0‬המילה ‪ xy i z ∈ L‬מכיוון ש‪ |w| ≥ 3-‬חייב להתקיים ש‪ |z| ≥ 2-‬לכן האות הלפני האחרונה ב‪ xy i z-‬היא‬
‫האות הלפני אחרונה ב‪.z-‬‬
‫!‬
‫למת הניפוח היא חד כיוונית ‪ -‬יש שפות שמקיימות את הלמה אך אינן רגולריות‪.‬‬
‫למת הניפוח אומרת שאם השפה רגולרית אז מתקיימים התנאים בלמה‪ .‬זה אומר שאם שפה לא מקיימת את התנאים בלמה‪,‬‬
‫היא בהכרח לא רגולרית‪ .‬כלומר‪:‬‬
‫מסקנה | שלילת למת הניפוח‬
‫מסקנה ‪ .3.1‬תהי ∗‪ .L ∈ Σ‬נניח שלכל ‪ p ≥ 1‬קיימת מילה ‪ w ∈ L‬המקיימת ש‪ |w| ≥ p-‬אבל לכל חלוקה ‪,w = x · y · z‬‬
‫∈ ‪.L‬‬
‫∈ ‪ .xy i z‬אזי ‪/ REG‬‬
‫אם ‪ |xy| ≤ p‬ו‪ |y| > 0-‬אז קיים ‪ i ≥ 0‬כך ש‪/ L-‬‬
‫∈ }‪ ,L1 = {0n 1n | n ≥ 0‬בצורה יותר פשוטה מבהוכחה של טענה ‪.3.1‬‬
‫דוגמה ‪ .3.2‬נראה באמצעות המסקנה ש‪/ REG-‬‬
‫הוכחה‪ .‬יהי ‪ .p ≥ 1‬נתבונן במילה ‪.w = 0p 1p ∈ L1‬‬
‫‪8‬‬
‫נשים לב כי ‪ .|w| ≥ p‬תהי ‪ w = xyz‬חלוקה המקיימת ‪|xy| ≤ p‬‬
‫∈ ‪ xy i z‬ונסיים‪ .‬מהיות ‪ 1 |xy| ≤ p‬לא מופיע ב‪ ,xy-‬כלומר‬
‫ו‪ .|y| > 0-‬נראה שקיים ‪ i ≥ 0‬כך ש‪/ L-‬‬
‫|‪|xy‬‬
‫‪ .xy = 0‬לכן‬
‫∈ ‪.xy 2 z = 0p 0j 1p = 0p+j 1p‬‬
‫‪ y = 0j‬עבור ‪ j‬כלשהו‪ ,‬ונשים לב ש‪ j ≥ 1-‬כי ‪ .|y| > 0‬לכן ‪/ L‬‬
‫‬
‫∗‬
‫∈ ‪.L2 = w ∈ {0, 1} | #0 w = #1 w‬‬
‫דוגמה ‪ .3.3‬נראה כי ‪/ REG‬‬
‫הוכחה‪ .‬יכולנו בטעות לומר שבגלל ש‪ L1 ⊆ L2 -‬אז ‪ L2‬לא רגולרית‪ .‬אולם זה לא טיעון נכון‪ :‬זה ששפה לא רגולרית מוכלת‬
‫בשפה כלשהי‪ ,‬לא אומר שהיא עצמה לא רגולרית‪ .‬לדוגמה‪ ,‬כל השפות מוכלות ב‪ ,Σ∗ -‬כולל השפות הלא‪-‬רגולריות‪ ,‬אך ∗‪Σ‬‬
‫היא דווקא כן רגולרית‪.‬‬
‫מה כן נוכל לעשות? נסתכל על‬
‫∗ ∗‬
‫‪.L3 = 0 1‬‬
‫‪9‬‬
‫קל להשתכנע שזו שפה רגולרית‪ ,‬ומתקיים ‪ .L1 = L2 ∩ L3‬אם בשלילה ‪L2‬‬
‫הייתה רגולרית‪ ,‬אז מסגירות של שפות רגולריות לחיתוך היינו מקבלים ש‪ L1 -‬רגולרית‪ ,‬אך הראינו בדוגמה הקודמת שזה‬
‫לא נכון ‪ -‬סתירה‪.‬‬
‫נוכיח עם למת הניפוח‪ .‬נניח בשלילה ש‪ L-‬רגולרית ולכן מקיימת את למת הניפוח‪ .‬נביט במילה ‪ w = 0p 1p‬ונכתוב ‪w = xyz‬‬
‫∈ ‪.xy 2 z‬‬
‫עם ‪ .|xy| ≤ p, |y| > 0‬לכן ‪ x = 0j , y = 0k , z = 0l 1p‬עבור ‪ k > 0, j + k < p‬ולכן ‪/ L‬‬
‫‪8‬זה החלק המאתגר בשימוש בלמה ‪ -‬בחירת המילה ‪.w‬‬
‫‪9‬היזכרו בהגדרה של ביטויים רגולריים מהתרגול‬
‫‪23‬‬
‫הרצאה ‪3‬ב‬
‫‪3‬‬
‫שבוע ‪3‬‬
‫למת הניפוח לשפות רגולריות‬
‫∈ }‪.L = {0n 1m | n > m‬‬
‫דוגמה ‪ .3.4‬נראה כי ‪/ REG‬‬
‫הוכחה‪ .‬נשתמש בלמת הניפוח )רק שהפעם ננפח למטה‪ ,‬כלומר ‪ .(i = 0‬יהי ‪ .p ≥ 1‬נתבונן במילה ‪ .w = 0p+1 1p ∈ L‬אכן‬
‫‪ .|w| ≥ p‬תהי ‪ w = xyz‬חלוקה המקיימת ‪ |xy| ≤ p‬ו‪ .|y| > 0-‬לכן בהכרח ‪ y = 0j‬עבור ‪ .j ≥ 1‬נבחר ‪ i = 0‬ונקבל כי‬
‫∈ ‪.L‬‬
‫∈ ‪ ,xy i z = xz = 0p+1−j 1p‬שכן מהיות ‪ j > 1‬נובע כי ‪ .p + 1 − j ≤ p‬לכן מלמת הניפומ ‪/ REG‬‬
‫‪/ L2‬‬
‫∈ }‪ q ∨ q = 1‬ראשוני | ‪.L = {aq‬‬
‫דוגמה ‪ .3.5‬נראה כי ‪/ REG‬‬
‫הוכחה‪ .‬יהי ‪ .p ≥ 1‬יהי ‪ q > p‬ראשוני‪ .‬נתבונן במילה ‪ .w = aq ∈ L‬אכן ‪ .|w| ≥ p‬תהי ‪ w = xyz‬חלוקה המקיימת ‪|xy| ≤ p‬‬
‫‪|y| = m‬‬
‫ו‪ .|y| > 0-‬נסמן )‪|z| = q − (n + m‬‬
‫‪ i = q + 1‬ונקבל )‪z = q + mq = q (m + 1‬‬
‫‪q+1‬‬
‫‪ .|x| = n‬אזי )‪ . xy i z = n + m · i + q − (n + m) = q + m (i − 1‬נבחר‬
‫‪ . xy‬נשים לב ש‪ q ≥ 2-‬כי הוא ראשוני‪ .‬בנוסף‪ ,‬מהיות ‪ m = |y| > 0‬נובע‬
‫∈ ‪.L‬‬
‫∈ ‪ xy q+1 z‬ולכן לפי למת הניפוח ‪/ REG‬‬
‫‪ m + 1 ≥ 2‬ולכן )‪ q (m + 1‬פריק‪ ,‬כלומר ‪/ L‬‬
‫‬
‫∗‬
‫∈ ‪ w‬פלינדרום | }‪.L = w ∈ {0, 1‬‬
‫דוגמה ‪/ REG .3.6‬‬
‫הוכחה‪ .‬בהינתן ‪ p ≥ 1‬נתבונן במילה ‪ .w = 0p 10p‬נבחין כי ‪ |w| ≥ p‬וכי ‪ .w ∈ L‬עתה לכל חלוקה ‪ w = xyz‬כך ש‪|xy| ≤ p-‬‬
‫וגם ‪ |y| > 0‬קיים ‪ j > 0‬עבורו ‪ .y = 0j ∈ 0+‬לכן‬
‫‪xy 2 z = 0p+j 10p‬‬
‫ומכיוון ש‪ j ≥ 1-‬נקבל שהיא לא בשפה‪ ,‬כי בחצי הראשון שלה אין אחדות‪ ,‬אך בחצי השני יש אחד‪.‬‬
‫‪n 2‬‬
‫‪o‬‬
‫∈ ‪.L = 1n | n ≥ 0‬‬
‫דוגמה ‪) .3.7‬מהתרגול( ‪/ REG‬‬
‫‪2‬‬
‫הוכחה‪ .‬יהי ‪ .p ≥ 1‬נתבונן במילה ‪ .w = 1p ∈ L‬אכן ‪ .|w| ≥ p‬תהי ‪ w = xyz‬חלוקה המקיימת ‪ |xy| ≤ p‬ו‪ .|y| > 0-‬לכן‬
‫‪ x = 1j , y = 1k , z = 1l‬כאשר ‪.k > 0, j + k ≤ p, j + k + l = p2‬‬
‫ננסה לנפח ב‪ .i = 2-‬אזי‬
‫‪+k‬‬
‫‪2‬‬
‫‪ ,xy 2 z = 1j 1k 1k 1l = 1p‬אבל מתקיים‬
‫‪2‬‬
‫)‪p2 < p2 + k ≤ p2 + p < p2 + 2p + 1 = (p + 1‬‬
‫∈ ‪.L‬‬
‫∈ ‪ .xy 2 z‬לכן לפי למת הניפוח ‪/ REG‬‬
‫ולכן ‪ p2 + k‬אינו ריבוע של מספר שלם‪ ,‬ולכן ‪/ L‬‬
‫‪24‬‬
‫‪ 4‬משפט מייהיל‪-‬נרוד )‪(Myhill Nerode‬‬
‫‪4‬‬
‫שבוע ‪4‬‬
‫משפט מייהיל‪-‬נרוד )‪(Myhill Nerode‬‬
‫הגדרה ‪ .4.1‬לכל שפה ∗‪ L ⊆ Σ‬נגדיר יחס ∗‪ ∼L ⊆ Σ∗ × Σ‬כך שלכל ∗‪ x, y ∈ Σ‬מתקיים ‪ x ∼L y‬אם“ם לכל מילה‬
‫∗‪ z ∈ Σ‬מתקיים ‪ x · z ∈ L‬אם“ם ‪ .y · z ∈ L‬נסמן ב‪ [w]-‬את מחלקת השקילות של ‪ w‬ב‪ .L-‬יחד זה נקרא יחס‬
‫מייהיל‪-‬נרוד )‪.(MN‬‬
‫הערה‪ .‬בהגדרה ‪ z‬נקרא זנב מפריד‪.‬‬
‫הרצאה ‪4‬א‬
‫טענה ‪ .4.1‬לכל שפה ‪ L‬היחס ‪ ∼L‬הוא יחס שקילות‪.‬‬
‫הוכחה‪ .‬נוכיח את שלושת התנאים‪.‬‬
‫‪ .1‬רפקליסיביות‪ :‬לכל ∗‪ x ∈ Σ‬מתקיים ‪ - x ∼L x‬ברור‪.‬‬
‫‪ .2‬סימטרי‪ :‬לכל ∗‪ x1 , x2 ∈ Σ‬מתקיים ‪ x1 ∼L x2‬אם“ם ‪) x2 ∼L x1‬כי התנאי בהגדרה סימטרי(‪.‬‬
‫‪ .3‬טרנזיטיביות‪ :‬נוכיח כי לכל ∗‪ ,x1 , x2 , x3 ∈ Σ‬אם ‪ x1 ∼L x2‬ו‪ x2 ∼L x3 -‬אז ‪ .x1 ∼L x3‬נניח בשלילה ש‪x1 6∼L x3 -‬‬
‫אזי קיימת ∗‪ z ∈ Σ‬כך שבה“כ ‪ x1 z ∈ L‬נשאל‪ ,‬האם ‪ ?x2 z ∈ L‬אם כן אז ‪ x2 6∼L x3‬בסתירה להנחה‪ .‬אחרת‪,‬‬
‫‪ x1 6∼L x2‬בסתירה להנחה‪.‬‬
‫∗‬
‫דוגמה ‪ .4.1‬נביט ב‪.L = (0 + 1) 0 (0 + 1)-‬‬
‫∈ ‪ 10‬אבל ‪ 00 ∈ L‬ולכן ‪.0 6∼L 1‬‬
‫האם ‪ ?0 ∼L 1‬נבחין כי ‪ 0‬זנב מפריד‪ ,‬שכן ‪/ L‬‬
‫האם ‪ ?1 ∼L 11‬לכל ∗‪ z ∈ Σ‬מתקיים כי ‪ 11 · z ∈ L‬אם“ם ‪ z ∈ L‬אם“ם ‪.1 · z ∈ L‬‬
‫נבחין כי ‪ 01 6∼L 10‬שכן ‪ ε‬מפריד ביניהם‪.‬‬
‫נרשום את מחלקות השקילות של ‪ L‬ב‪ - Σ∗ -‬סה“כ יש ‪ 4‬מחלקות שקילות עבור שפה זו )השתכנעו שזה נכון(‪ .‬החצים‬
‫האדומים הם זנבות מפרידים בין מחלקות השקילות‪.‬‬
‫מחלקות השקילות של ‪L‬‬
‫אותן מחלקות שקילות בבחירה ספציפית של נציגים‬
‫‪1‬‬
‫‪1‬‬
‫‪0 + Σ∗ 10 ϵ + 1 + Σ∗ 11‬‬
‫‪ϵ‬‬
‫‪ϵ‬‬
‫]‪[ϵ‬‬
‫‪ϵ‬‬
‫‪ϵ‬‬
‫‪ϵ‬‬
‫‪ϵ‬‬
‫‪Σ∗ 00‬‬
‫]‪[0‬‬
‫‪ϵ‬‬
‫‪ϵ‬‬
‫‪Σ∗ 01‬‬
‫]‪[00‬‬
‫‪1‬‬
‫]‪[01‬‬
‫‪1‬‬
‫אבחנה אם ‪ x3 ∼L x4 ,x1 ∼L x2‬ו‪ z-‬מפריד בין ‪ x1‬ל‪ x3 -‬אזי ‪ z‬מפריד בין ‪ x2‬ל‪ .x4 -‬בפרט בין כל האיברים במחלקות‬
‫השקילות ] ‪.[x1 ] , [x3‬‬
‫משפט מייהיל‪-‬נרוד‬
‫משפט ‪ .4.1‬תהי ∗‪ .L ⊆ Σ‬אזי ‪ L ∈ REG‬אם“ם יש ל‪ ∼L -‬מספר סופי של מחלקות שקילות‪.‬‬
‫הוכחה‪ :⇒ .‬נניח כי ל‪ ∼L -‬יש מספר סופי של מחלקות שקילות‪ .‬נגדיר ‪ A = hΣ, Q, q0 , δ, F i DFA‬כך ש‪ L (A) = L-‬באופן‬
‫הבא‪:‬‬
‫‪25‬‬
‫‪ 4‬משפט מייהיל‪-‬נרוד )‪(Myhill Nerode‬‬
‫שבוע ‪4‬‬
‫ˆ ‪ Q‬היא קבוצת כל מחלקות השקילות ב‪) ∼L -‬מההנחה ‪ Q‬אכן סופית(‪.‬‬
‫ˆ ]‪.q0 = [ε‬‬
‫ˆ ]‪.δ ([w] , σ) = [w · σ‬‬
‫ˆ }‪F = {[w] : w ∈ L‬‬
‫נבחין כי ההגדרה של ‪ δ‬לא תלויה בבחירת הנציג‪ .‬כלומר‪ ,‬אם ‪ y ∼L w‬אז לכל ‪ σ ∈ Σ‬מתקיים ‪ ,yσ ∼L wσ‬שכן אם ‪z‬‬
‫מפריד בין ‪ yσ‬ל‪ wσ-‬אז ‪ σz‬מפריד בין ‪ y‬ל‪ w-‬בסתירה לכך ש‪ .y ∼L w-‬לכן )‪.δ ([y] , σ) = δ ([w] , σ‬‬
‫באופן דומה‪ ,‬גם הגדרת ‪ F‬לא תלויה בבחירת הנציג‪ ,‬שכן אם ‪ w ∼L y‬אז ‪.wε = w ∈ L ⇐⇒ yε = y ∈ L‬‬
‫נוכיח שלכל ∗‪ w ∈ Σ‬מתקיים כי ]‪ δ ∗ (q0 , w) = [w‬ואז מהגדרת ‪ F‬נקבל כי ‪ w ∈ L‬אם“ם ‪ .δ ∗ (q0 , w) ∈ F‬נעשה זאת‬
‫באינדוקציה על האורך |‪.|w‬‬
‫∗‬
‫בסיס‪ (|w| = 0) :‬בהכרח ‪ .w = ε‬אכן ]‪.δ (q0 , ε) = [ε‬‬
‫צעד‪ :‬מתקיים כי‬
‫)‪δ ∗ (q0 , u · σ) = δ (δ ∗ (q0 , u) , σ‬‬
‫]‪ = δ ([u] , σ) = [u · σ‬הנחת האינדוקציה‬
‫⇐‪ :‬נניח ש‪ L-‬רגולרית‪ .‬לכן קיים ‪ A = hΣ, Q, q0 , δ, F i DFA‬כך ש‪ .L = L (A)-‬נראה שיש ל‪ ∼L -‬מספר סופי של מחלקות‬
‫שקילות‪ .‬כדי לעשות זאת‪ ,‬נראה שמספר מחלקות השקילות חסום על ידי מספר המצבים‪.‬‬
‫∗‬
‫נגדיר יחס ∗‪ ∼A ⊆ Σ∗ × Σ‬כך‪ :‬לכל ∗‪ x, y ∈ Σ‬נאמר כי ‪ .δ (q0 , x) = δ ∗ (q0 , y) ⇐⇒ x ∼A y‬נבדוק מה מתקיים‪:‬‬
‫‪ .1‬האם ‪?x ∼A y ⇒ x ∼L y‬‬
‫‪ .2‬האם ‪?x ∼L y ⇒ x ∼A y‬‬
‫נטען כי ‪ 1‬נכון‪ .‬שכן אם ‪ x ∼A y‬אז לכל ∗‪ z ∈ Σ‬מתקיים כי‬
‫)‪δ ∗ (q0 , yz) = δ ∗ (δ ∗ (q0 , y) , z) = δ ∗ (δ ∗ (q0 , x) , z) = δ ∗ (q0 , xz‬‬
‫ולכן ‪ yz ∈ L ⇐⇒ xz ∈ L‬שזה אם“ם ‪.y ∼L x‬‬
‫נשים לב כי ‪ 2‬לא נכון‪ .‬אפשר להסתכל כדוגמה נגדית על אוטומט עם כמה מצבים‪ ,‬שכולם מקבלים‪ .‬במקרה כזה‪ ,‬יש‬
‫מחלקת שקילות אחת והיא ∗‪ ,Σ‬לכן ‪ .∀x, y ∈ Σ∗ , x ∼L y‬אולם לא כל המילים בהכרח מסיימות את ריצת באותו מצב‬
‫)הן כן כולן יסיימו במצב מקבל‪ ,‬כי כל המצבים מקבלים(‪ ,‬ולכן לא בהכרח ‪.x ∼A y‬‬
‫מ‪ 1-‬אנו מסיקים כי‬
‫|‪ ≤ |Q‬מספר המצבים הישיגים = ‪#‬מספר מחלקות השקילות של ‪# ≤ ∼A‬מספר מחלקות השקילות של ‪∼L‬‬
‫שכן אם ]‪ [w‬מחלקת שקילות ב‪ ∼A -‬אזי היא חלק ממחלקת שקילות ב‪) ∼L -‬כלומר ‪” ∼A‬מעדן“ את ‪ .(∼L‬קיבלנו אם כך‬
‫כי מספר מחלקות השקילות של ‪ ∼L‬סופי‪.‬‬
‫מסקנה‪ .‬תהי ‪ .L ∈ REG‬אזי כמות המצבים המינימלית של ‪ DFA‬המקבל את ‪ L‬היא מספר מחלקות השקילות ‪.∼L‬‬
‫הוכחה‪ .‬בתחילת ההוכחה של משפט מייהיל‪-‬נרוד בנינו אוטומט בו |‪ |Q‬היא מספר מחלקות השקילות של ‪ .∼L‬בסוף ההוכחה‬
‫הראינו כי |‪ ≤ |Q‬ממספר מחלקות השקילות של ‪ ,∼L‬כנדרש‪.‬‬
‫‪26‬‬
‫‪ 4‬משפט מייהיל‪-‬נרוד )‪(Myhill Nerode‬‬
‫‪4.1‬‬
‫שבוע ‪4‬‬
‫מזעור אוטומטים‬
‫∗‬
‫דוגמה ‪ .4.2‬נמחיש את האוטומט ‪ A‬מההוכחה באמצעות השפה מהדוגמה הקודמת )‪ .L = (0 + 1) 0 (0 + 1‬נשים לב שלמשל‬
‫אכן ]‪.δ ([00] , 1) = [001] = [01‬‬
‫‪0‬‬
‫]‪[00‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫]‪[0‬‬
‫‪0‬‬
‫‪1‬‬
‫]‪[ϵ‬‬
‫‪1‬‬
‫]‪[01‬‬
‫סיווג שפות באמצעות ‪MN‬‬
‫באמצעות משפט מייהיל‪-‬נרוד )‪ (MN‬נוכל לסווג האם ‪ L ∈ REG‬או לא‪.‬‬
‫דוגמה ‪ .4.3‬נביט בשפה }‪ .L = {0n 1n : n ≥ 0‬נטען כי ‪ L‬לא רגולרית‪ .‬נראה שיש לה אינסוף מחלקות שקילות‪ .‬לכל ‪j, i ≥ 0‬‬
‫∈ ‪ .0j 1j ∈ L, 0j 1i‬נציין שגם ‪ 1j , 01j+1 , . . .‬זנבות מפרידים‪.‬‬
‫כך ש‪ i 6= j-‬נטען כי ‪ .0i 6∼ 0j‬אכן ‪ 1j‬זנב מפריד כי ‪/ L‬‬
‫∈ ‪.L‬‬
‫מכאן ש‪ [0] , [00] , [000] , . . .-‬הן כולן מחלקות שקילות שונות‪ ,‬ויש אינסוף כאלה‪ .‬כלומר ‪/ REG‬‬
‫‬
‫דוגמה ‪ .4.4‬נביט ב‪ .L = 0i 1j : gcd (i, j) 6= 1 -‬נטען כי ‪ L‬איננה רגולרית‪ .‬נראה שעבור שני ראשוניים ‪ p1 6= p2‬מתקיים‬
‫כי ‪ .0p1 6∼L 0p2‬למשל ‪ 1p1‬זנב מפריד‪ .‬מכיוון שיש אינסוף מספרים ראשוניים‪ ,‬נובע שיש ל‪ ∼L -‬אינסוף מ“ש‪.‬‬
‫‪4.1‬‬
‫מזעור אוטומטים‬
‫נבחין כי באמצעות מייהיל‪-‬נרוד נוכל לנסות ”למזער“ אוטומט‪ .‬למשל‪ ,‬אם מספר מחלקות השקילות קטן ממספר המצבים‪,‬‬
‫הרצאה ‪4‬ב‬
‫נדע בוודאות שיש אוטומט קטן יותר‪.‬‬
‫נראה אלגוריתם שבהינתן ‪ A = hΣ, Q, q0 , δ, F i DFA‬מחזיר ‪ A′ DFA‬השקול ל‪ ,A-‬כך שלכל ‪ A′′ DFA‬אם ) ‪L (A) = L (A′′‬‬
‫אז | ‪ .|A′ | ≤ |A′′‬כלומר ‪ A′‬הוא אוטומט מינימלי שמתאר את השפה‪ ,‬וכל אוטומט מינימלי אחר הוא איזומורפי אליו )אותו‬
‫דבר עד כדי שינוי שמות(‪.‬‬
‫נרצה להגדיר סדרה של‬
‫מתקיים כי ‪(s2 , z) ∈ F‬‬
‫‪...‬‬
‫יחסים ‪ ,(∼i )i=0 ⊆ Q × Q‬כך‬
‫∗ ‪.(⋆) δ ∗ (s1 , z) ∈ F ⇐⇒ δ‬‬
‫‪s‬‬
‫ש‪ s1 ∼i s2 -‬עבור ‪ s1 , s2 ∈ Q‬אם“ם לכל‬
‫∗‬
‫‪ z ∈ Σ‬כך ש‪|z| ≤ i-‬‬
‫בניסוח שקול‪ ,‬לכל מצב ‪ s‬נגדיר ) ‪ L (A‬השפה של ‪ A‬כש‪ s-‬מצב התחלתי‪ .‬אזי ‪ s1 ∼i s2‬אם“ם ‪.L (As1 )∩Σ≤i = L (As2 )∩Σ≤i‬‬
‫ככל ש‪ i-‬גדל ככה יותר קשה להסכים על מילים ‪ -‬מספר מחלקות השקילות של ‪ ∼i+1‬גדולה או שווה ממספר מחלקות‬
‫השקילות של ‪.∼i‬‬
‫אם נגדיר את ‪ ∼i‬באמצעות )⋆(‪ ,‬נקבל הגדרה נחמדה אך שלא שימושית למחשב שרוצה לחשב את ‪ ∼i+1‬באמצעות‬
‫‪ .∼i‬לכן‪ ,‬אנו נגדיר את ‪ ∼i‬בצורה אחרת‪ ,‬שיותר ”שימושית“ למחשב‪ ,‬ונראה שהגדרה זו שקולה להגדרה ב‪.(⋆)-‬‬
‫!‬
‫תיאור אלגוריתם המזעור‬
‫נרצה להגדיר את ‪ ∼i‬באופן כזה שגם יקיים את )⋆( וגם ניתן יהיה לחשב את המעבר מ‪ ∼i -‬ל‪ ∼i+1 -‬בזמן פולינומיאלי‪ .‬נגדיר רקורסיבית‪:‬‬
‫בסיס‪ s1 ∼0 s2 :‬אם“ם ‪.s2 ∈ F ⇐⇒ s1 ∈ F‬‬
‫צעד‪ s1 ∼i+1 s2 :‬אם“ם ‪ s1 ∼i s2‬וגם לכל ‪ σ ∈ Σ‬מתקיים )‪.δ (s1 , σ) ∼i δ (s2 , σ‬‬
‫האלגוריתם שלנו יחשב את ‪ ∼i+1‬באמצעות ‪ ∼i‬והוא יעצור כאשר ‪ ,∼i =∼i+1‬כי אז נדע שמדובר בנקודת שבת‪ .‬מחלקות השקילות של‬
‫היחס ‪ ∼:=∼i+1‬מגדירות אוטומט )כפי שראינו בהוכחה של משפט מייהיל‪-‬נרוד( ואנו נטען שזהו אוטומט שקול ומינימלי‪.‬‬
‫‪27‬‬
‫‪ 4‬משפט מייהיל‪-‬נרוד )‪(Myhill Nerode‬‬
‫‪4.1‬‬
‫שבוע ‪4‬‬
‫מזעור אוטומטים‬
‫ראשית‪ ,‬נשים לב שהתהליך עוצר שכן ‪ ,∼i+1 ⊆∼i‬כי אם שני מצבים מסכימים על מילים באורך קטן מ‪ i + 1-‬הם בפרט‬
‫מסכימים על מילים באורך קטן מ‪ .i-‬לכן‪ .. . . ⊆∼2 ⊆∼1 ⊆∼0 ⊆ Q × Q ,‬מכאן שאם ‪ ,∼i+1 6=∼i‬אז כדי לקבל את ‪∼i+1‬‬
‫‪2‬‬
‫הורדנו מ‪ ∼i -‬לפחות איבר אחד ב‪ ,Q × Q-‬ולכן אחרי לכל היותר |‪ |Q × Q| = |Q‬איטרציות אנחנו נעצור ונקבל ‪.∼i =∼i+1‬‬
‫בניסוח שקול‪ ,‬בגלל שמדובר ביחס שקילות‪ ,‬נשים לב ש‪ ∼i+1 -‬לוקח את מחלקות השקילות של ‪ ∼i‬ומפריד אותן למחלקות‬
‫שקילות קטנות יותר‪ .‬בגלל שיש רק |‪ |Q‬מצבים‪ ,‬יכולות להיות לכל היותר |‪ |Q‬מחלקות שקילות שונות‪ ,‬לכן בהכרח בשלב‬
‫מסויים‪ ,‬אחרי לכל היותר |‪ |Q‬איטרציות‪ ∼i+1 ,‬כבר לא יפצל את ‪ ∼i‬ונקבל ‪ .∼i =∼i+1‬לכן נקבל חסם אף יותר הדוק‬
‫על כמות האיטרציות עד עצירה ‪.|Q| -‬‬
‫שנית‪ ,‬נשים לב שהמעבר מ‪ ∼i -‬ל‪ ∼i+1 -‬ניתן לחישוב בזמן פולינומיאלי‪ .‬בהינתן ‪ ∼i‬אפשר פשוט לעבור על כל זוג מצבים‬
‫‪ s1 , s2 ∈ Q‬ולבדוק האם מתקיים ש‪ s1 ∼i s2 -‬וגם לכל אות ‪ σ ∈ Σ‬מתקיים )‪.δ (s1 , σ) ∼i δ (s2 , σ‬‬
‫לסיום‪ ,‬נוכיח טענה שיחד עם מה שאמרנו קודם תעזור לנו להראות שהאלגוריתם שתיארנו עוזר לבנות אוטומט שקול מינימלי‬
‫לאוטומט המקורי‪.‬‬
‫טענה ‪ .4.2‬לכל ‪ 0 ≤ i‬ולכל ‪ s1 , s2 ∈ Q‬מתקיים‬
‫‪∀ |w| ≤ i, δ ∗ (s1 , w) ∈ F ⇔ δ ∗ (s2 , w) ∈ F ⇐⇒ s1 ∼i s2‬‬
‫כלומר ‪ s1 ∼i s2‬אם“ם ‪.L (As1 ) ∩ Σ≤i = L (As2 ) ∩ Σ≤i‬‬
‫הוכחה‪ .‬נוכיח באינדוקציה על ‪.i‬‬
‫∗‬
‫∗‬
‫בסיס )‪ :(i = 0‬המילה היחידה מאורך ‪ 0‬היא ‪ .w = ε‬מההגדרה‪ s1 ∼0 s2 ,‬אם“ם ‪.δ (s1 , ε) = s1 ∈ F ⇔ δ (s2 , ε) = s2 ∈ F‬‬
‫צעד )‪ :(i ⇒ i + 1‬נניח שהטענה נכונה עבור ‪ .i‬נוכיח אותה עבור ‪.i + 1‬‬
‫∗‬
‫∗‬
‫אנו צריכים להראות ש‪ s1 ∼i+1 s2 -‬אם“ם לכל ∗‪ w ∈ Σ‬עבורה ‪ |w| ≤ i + 1‬מתקיים ‪.δ (s1 , w) ∈ F ⇔ δ (s2 , w) ∈ F‬‬
‫בכיוון הראשון‪ ,‬נניח כי ‪ .s1 ∼i+1 s2‬תהי ∗‪ w ∈ Σ‬עבורה ‪ .|w| ≤ i + 1‬אם ‪ |w| < i + 1‬אז מכך ש‪) s1 ∼i s2 -‬שכן‬
‫מההנחה ‪ .(s1 ∼i+1 s2‬לכן‪ ,‬מה“א ‪ .δ ∗ (s1 , w) ∈ F ⇔ δ ∗ (s2 , w) ∈ F‬אם ‪ |w| = i + 1‬אז ‪ w = σy‬עבור ‪ σ ∈ Σ‬ו‪.y ∈ Σi -‬‬
‫מהגדרת ‪ ,∼i+1‬מתקיים ‪ .s′1 = δ (s1 , σ) ∼i δ (s2 , σ) = s′2‬לכן מה“א ‪ .δ ∗ (s′1 , y) ∈ F ⇔ δ ∗ (s′2 , y) ∈ F‬אבל‬
‫)‪δ ∗ (s′1 , y) = δ ∗ (δ (s1 , σ) , y) = δ ∗ (s1 , w‬‬
‫)‪δ ∗ (s′2 , y) = δ ∗ (δ (s2 , σ) , y) = δ ∗ (s2 , w‬‬
‫לכן ‪.δ ∗ (s1 , w) ∈ F ⇔ δ ∗ (s2 , w) ∈ F‬‬
‫בכיוון השני‪ ,‬נניח שלכל ∗‪ w ∈ Σ‬עבורה ‪ |w| ≤ i + 1‬מתקיים ‪) δ ∗ (s1 , w) ∈ F ⇔ δ ∗ (s2 , w) ∈ F‬כלומר ‪ s1 , s2‬מסכימות‬
‫על מילים שאורכן עד ‪ .(i + 1‬נראה כי ‪ .s1 ∼i+1 s2‬נניח בשלילה כי ‪ .s1 6∼i+1 s2‬לכן ‪ s1 6∼i s2‬או שקיימת ‪ σ ∈ Σ‬עבורה‬
‫)‪.δ (s1 , σ) 6∼i δ (s2 , σ‬‬
‫∗‬
‫∗‬
‫∗‬
‫∈ )‪ - δ (s2 , y‬בסתירה‬
‫אם ‪ s1 6∼i s2‬אז מה“א קיימת ‪ y ∈ Σ‬עבורה ‪ |y| ≤ i‬כך שמתקיים )בה“כ( ‪ δ (s1 , y) ∈ F‬אבל ‪/ F‬‬
‫לכך ש‪ s1 , s2 -‬מסכימות על מילים שאורכן עד ‪.i + 1‬‬
‫אם קיימת ‪ σ ∈ Σ‬עבורה )‪ ,δ (s1 , σ) 6∼i δ (s2 , σ‬אז מה“א קיימת ∗‪ y ∈ Σ‬עבורה ‪ |y| ≤ i‬וגם )בה“כ( ‪δ ∗ (δ (s1 , σ) , y) ∈ F‬‬
‫∈ )‪ ,δ ∗ (δ (s2 , σ) , y‬לכן ‪ s1 , s2‬לא מסכימות על ‪ ,σy‬בסתירה לכך ש‪ s1 , s2 -‬מסכימות על מילים שאורכן עד ‪.i + 1‬‬
‫אבל ‪/ F‬‬
‫הערה נשים לב שהטענה שהוכחנו זה עתה גם גוררת שהאלגוריתם יתכנס אחרי לכל היותר |‪ |Q‬איטרציות )כפי שכבר אמרנו(‪.‬‬
‫אלגוריתם המינימיזציה‬
‫משפט ‪ .4.2‬יהי ‪.A = hΣ, Q, q0 , δ, F i DFA‬‬
‫הוא היחס שהתקבל מהאלגוריתם הקודם‪.‬‬
‫יהיו } ‪ S = {S1 , . . . , Sk‬מחלקות השקילות של ∼‪ ,‬כאשר ∼‬
‫‪′‬‬
‫‪′‬‬
‫נגדיר ‪ A = hS, Σ, [q0 ] , δ , SF i‬כאשר } ‪SF = {Si ∈ S | Si ⊆ F‬‬
‫ו‪ .δ ′ ([q] , σ) = [δ (q, σ)]-‬אזי ‪ A′‬הוא אוטומט מינימלי לשפה )‪.L (A‬‬
‫הוכחה‪ .‬הושארה כתרגיל לסטודנט המשקיע החכם היפה והחסון )ראו תרגיל בית(‪.‬‬
‫‪28‬‬
‫‪ 4‬משפט מייהיל‪-‬נרוד )‪(Myhill Nerode‬‬
‫‪4.1‬‬
‫שבוע ‪5‬‬
‫מזעור אוטומטים‬
‫∗‬
‫דוגמה ‪ .4.5‬נביט ב‪ L = (0 + 1) 0 (0 + 1)-‬ובאוטומט ‪ A‬הבא שעבורו ‪:L (A) = L‬‬
‫‪s4‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪s5‬‬
‫‪0‬‬
‫‪s3‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪s1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪s0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪s2‬‬
‫ננסה למזער אותו באמצעות האלגוריתם‪ .‬נבחין כי מחלקות השקילות של ‪ ∼0‬הן } ‪ - {s0 , s1 , s2 } , {s3 , s4 , s5‬עבור מצבים‬
‫אלה יש הסכמה על ‪.ε‬‬
‫עתה נרצה הסכמה על ‪ ε‬וגם על מילים באורך ‪ .1‬נבחין כי‬
‫))‪s0 ∼1 s1 ⇐⇒ s0 ∼0 s1 ∧ (δ (s0 , 0) ∼0 δ (s1 , 0) ∧ δ (s0 , 1) ∼0 δ (s1 , 1‬‬
‫∈ ‪ s1‬ולכן )‪ δ (s0 , 0) 6∼0 δ (s1 , 0‬כלומר ‪.s0 6∼1 s1‬‬
‫נבחין כי ‪/ F 6∼0 s3 ∈ F‬‬
‫נבחין כי ‪ ,s0 ∼1 s2‬ואפשר להמשיך ולבדוק את כל השקילויות ואז נקבל שמחלקות השקילות של ‪ ∼1‬הן‬
‫} ‪{s0 , s2 } , {s1 } , {s3 , s5 } , {s4‬‬
‫חישוב ‪ ∼2‬מראה ש‪ ,∼2 =∼1 -‬כלומר המ“ש של ‪ ∼2‬הן גם } ‪ .{s0 , s2 } , {s1 } , {s3 , s5 } , {s4‬בגלל ש‪ ,∼2 =∼1 -‬הגענו לנקודת‬
‫שבת ונסיים את האלגוריתם ונדע שקיבלנו עכשיו אוטומט מינימלי שמוגדר באמצעות מחלקות שקילות אלה‪.‬‬
‫)אי‪(-‬מזעור ‪NFA‬‬
‫ראינו שניתן למזער ‪ DFA‬בזמן פולינומיאלי‪ .‬מה לגבי ‪ ?NFA‬אם נתון לנו ‪ A DFA‬עם ‪ k‬מצבים‪ ,‬ואנחנו רוצים לדעת האם‬
‫יש ‪ NFA‬עם פחות מצבים‪ ,‬נוכל לעבור על כל ה‪-NFA-‬ים עם ‪ i‬מצבים‪ ,‬כאשר ‪ ,1 ≤ i ≤ k‬ולראות האם הם שקולים ל‪.A-‬‬
‫יש כמות סופית של ‪ NFA‬עם כאלה לכן האלגוריתם עובד והוא יעצור‪ ,‬אך זמן הריצה שלו הוא אקספוננציאלי‪.‬‬
‫כדי לחקור את הבעיה הזו‪ ,‬נסתכל על שתי שאלות בסיסיות על אוטומטים‪:‬‬
‫‪ .1‬בעיית הריקנות‪ :‬בהינתן אוטומט ‪ ,A‬האם ∅ = )‪?L (A‬‬
‫‪ .2‬בעיית האוניברסליות‪ :‬בהינתן אוטומט ‪ ,A‬האם ∗‪?L (A) = Σ‬‬
‫פתרון‪) .‬בעיית הריקנות( נשים לב ש‪ L (A) 6= ∅-‬אם“ם יש מילה שמתקבלת אם“ם בגרף של האוטומט יש מסלול מ‪Q0 -‬‬
‫ל‪ .F -‬על כן‪ ,‬ניתן להכריע את בעיית הריקנות בזמן פולינומיאלי באמצעות אלגוריתמים שמחפשים מסלולים בגרפים‪) .‬זה נכון‬
‫גם עבור ‪ DFA‬וגם עבור ‪.(NFA‬‬
‫‬
‫פתרון‪) .‬בעיית האוניברסיליות( נשים לב ש‪ L (A) = Σ∗ -‬אם“ם ∅ = )‪ L (A‬אם“ם ∅ = ‪ ,L A‬כאשר ‪ A‬הוא האוטומט‬
‫‬
‫שמקבל את כל המילים ש‪ A-‬לא‪ .‬ראינו בבעיית הריקנות כיצד להכריע האם ∅ = ‪ ,L A‬לכן אנו מסיקים שניתן להכריע‬
‫גם את בעיית האוניברסליות‪ .‬צריך רק להסביר כיצד ניתן לבנות את ‪.A‬‬
‫‪29‬‬
‫הרצאה ‪5‬א‬
‫‪ 4‬משפט מייהיל‪-‬נרוד )‪(Myhill Nerode‬‬
‫‪4.1‬‬
‫שבוע ‪5‬‬
‫מזעור אוטומטים‬
‫עבור ‪ DFA‬פשוט ניקח אוטומט שזהה ל‪ A-‬פרט לכך שהמצבים המקבלים בו הם ‪ - Q\F‬כלומר תפקידי המצבים המקבלים‬
‫והדוחים התחלפו‪ ,‬וזה יהיה ‪.A‬‬
‫עבור ‪ NFA‬אי אפשר סתם להחליף את המצבים הדוחים והמקבלים ‪ -‬זה לא יהיה נכון כפי שמומחש בדוגמה הבאה‪:‬‬
‫)‪L(A) = Σ∗ 6= Σ∗ \ L(A‬‬
‫‪a, b‬‬
‫}”‪L(A) = {w ∈ Σ∗ | w starts with ”a‬‬
‫‪a, b‬‬
‫‪a‬‬
‫‪a, b‬‬
‫‪a‬‬
‫‪a, b‬‬
‫‪a‬‬
‫‪b‬‬
‫‪a‬‬
‫‪b‬‬
‫‪a, b‬‬
‫‪a, b‬‬
‫בהינתן ‪ A NFA‬עם ‪ n‬מצבים‪ ,‬כדי לפתור עבורו בעיית האוניברסליות נפעל לפי האלגוריתם הבא‪:‬‬
‫‪ .1‬נבצע דטרמיניזציה ל‪ A-‬ונקבל ‪ DFA‬שקול ‪) .A′‬יש בו לכל היותר ‪ 2n‬מצבים(‬
‫‪ .2‬נבצע דואליזציה ל‪ A′ -‬ונקבל את ‪) .A′‬בו יש גם לכל היותר ‪ 2n‬מצבים‪ ,‬וזמן הריצה של הדואליזציה פולינומיאלי ב‪(2n -‬‬
‫‪ .3‬נבדוק את הריקנות של ‪) A′‬זה פולינומיאלי ב‪.(2n -‬‬
‫כלומר קיבלנו אלגוריתם פולינומיאלי ב‪ ,2n -‬כלומר אקספוננציאלי ב‪ .n-‬בעתיד נראה שלא ניתן להשיג זמן ריצה יותר טוב‪,‬‬
‫אך כרגע ניקח זאת כנתון‪) .‬הדבר הזה נקרא ‪ ,ALLNFA‬כאמור נדבר על הדברים האלה רק בהמשך(‬
‫אנו נראה שאין פולינום ‪ ,p‬כך שבהינתן כל ‪ ,A NFA‬ניתן לייצר ‪ A‬כך ש‪ . A ≤ p (|A|)-‬כלומר שימוש בדטרמיניזציה‬
‫כדי לקבל את ‪ A‬היא דרך לגיטימית‪.‬‬
‫נמצא משפחה של שפות ‪ L1 , L2 , . . .‬כך שלכל ‪ 1 ≤ n‬מתקיים‪:‬‬
‫‪ .1‬יש ‪ An NFA‬עבור ‪ Ln‬עם )‪ O (n‬מצבים‪.‬‬
‫‪ .2‬כל ‪ An NFA‬עבור ‪ Ln‬הוא בעל לפחות ‪ 2n‬מצבים‪.‬‬
‫‪n‬‬
‫נסתכל על משפחת השפות } )‪.Ln = {ww | w ∈ (0 + 1‬‬
‫‬
‫נראה תחילה שיש ‪ An NFA‬עבור ‪ Ln = Ln‬עם )‪ O (n‬מצבים‪.‬‬
‫נשים לב ש‪ Ln -‬היא קבוצת המילים שאורכן שונה מ‪ 2n-‬או שאורכן הוא ‪ 2n‬אך הן לא מהצורה ‪ .ww‬אם כך‪ ,‬נסתכל על‬
‫ה‪ NFA-‬הבא‪:‬‬
‫‪0, 1‬‬
‫‪0, 1‬‬
‫‪0, 1‬‬
‫‪0, 1 ... 0, 1‬‬
‫‪0, 1 ... 0, 1‬‬
‫‪0, 1‬‬
‫‪0, 1‬‬
‫‪0, 1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0, 1‬‬
‫‪...‬‬
‫‪0, 1‬‬
‫‪30‬‬
‫‪0, 1‬‬
‫‪ 4‬משפט מייהיל‪-‬נרוד )‪(Myhill Nerode‬‬
‫‪4.1‬‬
‫שבוע ‪5‬‬
‫מזעור אוטומטים‬
‫החלק העליון בגרף ה‪ NFA-‬הוא בעל ‪ 2n + 2‬מצבים‪ ,‬כולם מקבלים חוץ מהמצב שלפני האחרון‪ ,‬ה‪ .2n + 1-‬חלק זה בודק‬
‫האם אורך המילה שונה מ‪ ,2n-‬ואם כן אז הוא מקבל את המילה‪.‬‬
‫החלק התחתון בגרף ה‪ NFA-‬נועד לטפל במילים מאורך ‪ 2n‬ולוודא שהם לא מהצורה ‪ .ww‬הוא מורכב משני ”מסלולים“‬
‫ אורך כל מסלול מתאים למעבר על בדיוק ‪ n‬אותיות‪ .‬כאמור‪ ,‬חלק זה בודק האם המילה היא לא מהצורה ‪- x = ww‬‬‫כלומר האם יש אינדקס ‪ i‬כך ש‪:x [i] 6= x [n + i]-‬‬
‫‪1‬‬
‫‪1‬‬
‫‪n+i‬‬
‫···‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪i‬‬
‫···‬
‫‪1‬‬
‫‪0‬‬
‫בגלל שב‪ NFA-‬מילה מתקבלת אם יש עליה ריצה מקבלת כלשהי‪ ,‬אז יתקבלו כל המילים שהן באורך שונה מ‪ 2n-‬או שהן‬
‫באורך ‪ 2n‬ולא מהצורה ‪ .ww‬כלומר זה בדיוק אוטומט של השפה ‪.Ln‬‬
‫עתה נראה שכל ‪ An NFA‬עבור ‪ Ln‬הוא בעל לפחות ‪ 2n‬מצבים‪.‬‬
‫יהי ‪ NFA An‬שמזהה את ‪ Ln‬ונניח בשלילה כי ל‪ An -‬יש פחות מ‪ 2n -‬מצבים‪.‬‬
‫לכל מילה‬
‫‪n‬‬
‫)‪ u ∈ (0 + 1‬נתבונן בקבוצת המצבים‬
‫‬
‫יש ריצה מקבלת של ‪ An‬על ‪ uu‬שמבקרת ב‪ s-‬אחרי קריאת ‪good (u) = s ∈ Q | u‬‬
‫אם ל‪ An -‬יש פחות מ‪ 2n -‬מצבים אז מעקרון שובך היונים קיימים‬
‫‪n‬‬
‫= ‪ u1‬כך ש‪.good (u1 ) ∩ good (u2 ) 6= ∅-‬‬
‫)‪6 u2 ∈ (0 + 1‬‬
‫יהי ) ‪.s ∈ good (u1 ) ∩ good (u2‬‬
‫◦‬
‫◦‬
‫‪Q0‬‬
‫‪F‬‬
‫‪u2‬‬
‫‪u2‬‬
‫‪s‬‬
‫‪u1‬‬
‫‪u1‬‬
‫◦‬
‫◦‬
‫‪F‬‬
‫) ‪s ∈ δ ∗ (Q0 , u1‬‬
‫וגם‬
‫מההגדרה‬
‫) ‪s ∈ δ ∗ (Q0 , u2‬‬
‫‪) u1 u2‬ו‪ ,(u2 u1 -‬בסתירה לנכונותו‪.‬‬
‫∅ =‪δ ∗ (s, u1 ) ∩ F 6‬‬
‫∅ =‪δ ∗ (s, u2 ) ∩ F 6‬‬
‫‪Q0‬‬
‫‪ .‬לכן ∅ =‪ δ ∗ (Q0 , u1 u2 ) ∩ F 6‬ולכן ‪ An‬מקבל בטעות גם את‬
‫‪31‬‬
‫‪5‬‬
‫‪5‬‬
‫שבוע ‪5‬‬
‫שפות חסרות הקשר‬
‫שפות חסרות הקשר‬
‫נעבור לדבר על סוג חדש של שפות‪ :‬שפות חסרות הקשר )‪ ,(Context − Free Languages‬או בקיצור שפות ח“ה‪ .‬כמו ששפות‬
‫רגולריות ניתן להגדיר באמצעות אוטומטים‪ ,‬שפות חסרות הקשר ניתן להגדיר באמצעות דקדוקים חסרי הקשר‪.‬‬
‫נתחיל מלהציג את ההגדרה הפורמלית של שפות ח“ה‪ ,‬וישר נעבור לראות דוגמה כי ככה קל מאוד להבין את ההגדרה‪.‬‬
‫הגדרה ‪ .5.1‬דקדוק חסר הקשר )‪ (CFG‬הוא רביעיה ‪ G = hV, Σ, R, Si‬כאשר‪:‬‬
‫‪ - V .1‬קבוצה סופית של משתנים‪.‬‬
‫‪ - Σ .2‬קבוצה סופית של טרמינלים‪) .‬א“ב(‬
‫‪ - R .3‬קבוצה של חוקי גזירה מהצורה‬
‫∗‬
‫)‪.V → (V ∪ Σ‬‬
‫‪ - S .4‬משתנה התחלתי‪.‬‬
‫הגדרה ‪ .5.2‬אם‬
‫∗‬
‫)‪ w, u, v ∈ (V ∪ Σ‬ו‪ A → w-‬חוק בדקדוק‪ ,‬אז נגיד ש‪ uAv-‬מייצר‪/‬גוזר את ‪ uwv‬ונסמן‬
‫‪.uAv ⇒ uwv‬‬
‫∗‬
‫∗‬
‫∗‬
‫אם )‪ u, w ∈ (V ∪ Σ‬נגיד ש‪ u ⇒ w-‬אם קיימים ‪ k ≥ 1‬ו‪ u1 , . . . , uk ∈ (V ∪ Σ) -‬עבורם ⇒ ‪u = u1 ⇒ u2 ⇒ . . .‬‬
‫‪.uk = w‬‬
‫הגדרה ‪ .5.3‬השפה של ‪ G‬היא‬
‫‪o‬‬
‫∗‬
‫‪n‬‬
‫‪.L (G) = w ∈ Σ∗ | S ⇒ w‬‬
‫הגדרה ‪ .5.4‬שפה ‪ L‬תקרא שפה חסרת הקשר אם קיים ‪ G CFG‬כך ש‪ .L (G) = L-‬נסמן את קבוצת כל השפות‬
‫חסרות ההקשר בתור ‪.CFL‬‬
‫הערה‪ .‬דקדוק ח“ה נקרא חסר הקשר כי יש בצד שמאל של החוק רק משתנה יחיד‪ .‬יש גם מושג אחר‪ ,‬שלא נלמד‪ ,‬בשם‬
‫דקדוק תלוי הקשר בו חלק מהחוקים הם עם יותר ממשתנה יחיד )או אפילו עם טרמינלים( בצד שמאל של החוק‪ ,‬לדוגמה‬
‫‪.AB → 0AB‬‬
‫דוגמה‪ .‬נסתכל על הדקדוק ‪ G‬עם המשתנים }‪ ,{A, B‬הטרמינלים }‪ ,{0, 1, #‬המשתנה ההתחלתי ‪ A‬והחוקים‬
‫‪A → 0A1 | B‬‬
‫‪B→#‬‬
‫כאשר הקו האנכי | מציין ”או“ ‪ A -‬יכול ללכת ל‪ 0A1-‬או ל‪.B-‬‬
‫אנחנו מתחילים תמיד מהמשתנה ההתחלתי‪ ,‬ואז אנחנו יכולים ללכת לפי החוקים עד שנישאר עם מילה שבנוייה מטרמינלים‬
‫בלבד‪ ,‬ללא משתנים‪ .‬לדוגמה‪ ,‬שתי שרשראות גזירה אפשריות הן‪:‬‬
‫‪A → 0A1 → 0B1 → 0#1‬‬
‫‪A → 0A1 → 00A11 → 00B11 → 00#11‬‬
‫ואנחנו רואים שהשפה של ‪ G‬היא }‪.L (G) = {0n #1n | n ≥ 0‬‬
‫הערה‪ .‬בדר“כ משתנים יסומנו באותיות גדולות‪ ,‬טרמינלים באותיות קטנות‪ ,‬והמצב ההתחלתי יהיה זה שיופיע ראשון בשרשרת‬
‫גזירה‪ .‬כך נוכל לקצר את רוב הכתיבה הפורמלית ופשוט להגדיר את חוקי הדקדוק‪.‬‬
‫דוגמה‪ .‬בעיבוד שפה טבעית יש חשיבות מיוחדת לשפות ח“ה‪ .‬דקדוקים ח“ה מאוד מזכירים דקדוק של שפה טבעית‪ ,‬למשל‬
‫‪32‬‬
‫‪5‬‬
‫שבוע ‪5‬‬
‫שפות חסרות הקשר‬
‫נוכל להסתכל על דקדוק פשוט שמדמה משפטים באנגלית‪:‬‬
‫‪Noun → Adj · Noun | hat | dog | ...‬‬
‫‪Adj → red | big | very · Adj | . . .‬‬
‫עם המשתנה ההתחלתי ‪ .Noun‬ואז נוכל לקבל לדוגמה שאיבר בשפה הוא‬
‫‪Noun → Adj · Noun → Adj · Adj · Noun → big · Adj · Noun → big · red · Noun → big · red · dog‬‬
‫כמובן דקדוק זה לא מתאר באופן מושלם את השפה האנגלית‪ ,‬וזו דוגמה פשטנית‪ ,‬אך רואים שיש דמיון מובהק‪.‬‬
‫לפעמים‪ ,‬כפי שראינו כבר בדוגמה הראשונה‪ ,‬חלק מהחוקים שלנו יהיו בצורה כמו ‪ .A → 0A1‬לכן‪ ,‬המון פעמים יהיה לנו‬
‫נוח להסתכל על עץ הגזירה במקום שרשרת הגזירה‪.‬‬
‫למשל‪ ,‬בדוגמה הראשונה שראינו נוכל להסתכל על שרשרת הגזירה‪ ,‬בו המילה הנגזרת היא האיבר האחרון בשרשרת‪:‬‬
‫‪A → 0A1 → 00A11 → 00B11 → 00#11‬‬
‫או על עץ הגזירה‪ ,‬בו המילה הנגזרת מורכבת מהעלים‪:‬‬
‫‪A‬‬
‫‪1‬‬
‫‪0‬‬
‫‪A‬‬
‫‪0 A 0‬‬
‫‪B‬‬
‫‪#‬‬
‫דוגמה‪ .‬נגדיר ‪ G = h{S, A} , {0, 1} , R, Si‬כאשר קבוצת החוקים ‪ R‬היא‬
‫‪S → A1A‬‬
‫‪A → ε | 0A | 1A‬‬
‫∗‬
‫∗‬
‫וקל להשתכנע ש‪ - L (G) = (0 + 1) 1 (0 + 1) -‬כלומר המילים שמכילות את ‪ ,1‬למשל‪:‬‬
‫‪A→ε‬‬
‫‪A→1A‬‬
‫‪A→ε‬‬
‫‪A→0A‬‬
‫‪S→A1A‬‬
‫‪S −−−−−→ A1A −−−−→ 0A1A −−−−→ 0A11A −−−→ 011A −−−→ 011‬‬
‫‬
‫‬
‫∗‬
‫נסמן ב‪ L GA -‬את קבוצת המילים שנגזרות מ‪) A-‬כלומר בהן המשתנה ההתחלתי הוא ‪ ,(A‬קל לראות ש‪.L GA = (0 + 1) -‬‬
‫∗‬
‫כלומר‪ ,‬מ‪ A-‬אנחנו יכולים לגזור את כל המילים ב‪ .{0, 1} -‬למשל את המילה ‪ 1001‬נוכל לקבל כך‪:‬‬
‫‪A→ε‬‬
‫‪A→1A‬‬
‫‪A→0A‬‬
‫‪A→0A‬‬
‫‪A→1A‬‬
‫‪A −−−−→ 1A −−−−→ 10A −−−−→ 100A −−−−→ 1001A −−−→ 1001‬‬
‫נגדיר דקדוק ח“ה ‪ G‬מעל הא“ב באמצעות החוק הבא‪:‬‬
‫‪S → 0S1 | SS | ε‬‬
‫‪33‬‬
‫‪5‬‬
‫שבוע ‪5‬‬
‫שפות חסרות הקשר‬
‫אזי השפה )‪ L (G‬היא שפת הסוגריים המקוננים חוקית‪ ,‬כאשר ‪ 0‬מייצג את ( ו‪ 1-‬מייצג את )‪ .‬כלומר צירופים חוקיים של‬
‫‪0 1 0 0 1 1‬‬
‫סוגריים כגון‬
‫‪ .‬הצירוף ))(()() לא חוקי לדוגמה‪ ,‬כי יש בהתחלה ”)” ואין לפניו ”(”‪.‬‬
‫) ) ( ( ) (‬
‫∈ )‪ L (G‬שכן אחרת מסגירות של שפות רגולריות לחיתוך היינו‬
‫נשים לב כי }‪ ,L (G) ∩ 0∗ 1∗ = {0n 1n | n ≥ 0‬לכן ‪/ REG‬‬
‫מקבלים ש‪.{0n 1n | n ≥ 0} ∈ REG-‬‬
‫מסקנה ‪ CFL .5.1‬לא סגורה תחת חיתוך‪.‬‬
‫הוכחה‪ .‬הושאר כתרגיל לסטודנט המשקיע החכם היפה והחסון‪.‬‬
‫משפט ‪.REG ⊆ CFL .5.1‬‬
‫הוכחה‪ .‬יהי ‪ .A = hQ, Σ, q0 , δ, F i DFA‬נבנה ‪ G = hV, Σ, R, Si‬כך ש‪ .L (G) = L (A)-‬נגדיר‪:‬‬
‫}‪V = {Vq | q ∈ Q‬‬
‫‪S =Vq0‬‬
‫כאשר הרעיון הוא שניתן לגזור מ‪ Vq -‬את כל המילים שמתקבלות מ‪ .q-‬לכן נגדיר את אוסף החוקים ‪ R‬באופן הבא‪:‬‬
‫לכל מצב ‪ q ∈ Q‬ואות ‪ ,σ ∈ Σ‬נסמן )‪ ,s = δ (q, σ‬ונוסיף חוק‬
‫‪Vq → σVs‬‬
‫ואם ‪ ,q ∈ F‬נוסיף )בנוסף לשאר החוקים( את החוק‬
‫‪Vq → ε‬‬
‫∗‬
‫נראה שלכל מצב ‪ q ∈ Q‬וכל מילה ‪ ,w‬מתקיים ‪ Vq ⇒ w ⇐⇒ δ ∗ (q, w) ∈ F‬ונסיים‪..‬‬
‫יהי ‪ .w = σ1 σ2 . . . σk‬אזי ‪ δ ∗ (q, w) ∈ F‬אם“ם יש ריצה ‪ r0 , r1 , . . . , rk‬של ‪ A‬על ‪ w‬כך ש‪ r0 = q-‬ו‪0 ≤ ∀i < k, δ (ri , σi+1 ) = -‬‬
‫‪ ri+1‬וכן ‪) rk ∈ F‬כלומר הריצה מקבלת( אם“ם ‪.Vr0 ⇒ σ1 Vr1 ⇒ σ1 σ2 Vr2 ⇒ . . . ⇒ σ1 . . . σk Vrk ⇒ σ1 . . . σk‬‬
‫נשים לב שקיים הכלל ‪ Vrk ⇒ ε‬אם“ם ‪ rk ∈ F‬ולכן המעבר האחרון חוקי‪.‬‬
‫דוגמה ‪ .5.1‬נסתכל על האוטומט הבא )המתאים לשפת כל המילים שמופיע בהם ‪:(a‬‬
‫‪a, b‬‬
‫‪q1‬‬
‫‪b‬‬
‫‪a‬‬
‫‪q0‬‬
‫הדקדוק הח“ה המתאים לאוטומט זה הוא‬
‫‪Vq0 → aVq1 | bVq0‬‬
‫‪Vq1 → aVq1 | bVq1 | ε‬‬
‫‪34‬‬
‫‪5‬‬
‫‪5.1‬‬
‫שבוע ‪5‬‬
‫שפות חסרות הקשר‬
‫‪5.1‬‬
‫למת הניפוח לשפות ח“ה‬
‫למת הניפוח לשפות ח“ה‬
‫לא תמיד קל להבין האם שפה היא ח“ה או לא‪ .‬לדוגמה‪ ,‬נרצה לדעת להגיד האם ‪ ?L = {0n 1n 2n | n ≥ 0} ∈ CFL‬לשם‬
‫כך יש לנו כל מיני כלים‪ ,‬בדומה למה שהיה באוטומטים‪ .‬אחד הכלים הללו הוא למת הניפוח לשפות חסרות הקשר‪:‬‬
‫למת הניפוח לשפות חסרות הקשר‬
‫משפט‪ .‬תהי ‪ .L ∈ CFL‬אזי קיים ‪) p ≥ 1‬קבוע הניפוח( כך שלכל מילה ‪ ,w ∈ L‬אם ‪ |w| ≥ p‬אז קיימת חלוקה‬
‫‪ w = u · v · x · y · z‬כך שמתקיים‪:‬‬
‫‪.|vxy| ≤ p .1‬‬
‫‪|vy| > 0 .2‬‬
‫)‪.(vy 6= ε‬‬
‫‪.∀i ≥ 0, uv i xy i z ∈ L .3‬‬
‫רעיון ההוכחה‬
‫נבצע דבר דומה להוכחה של למת הניפוח לשפות רגולריות‪ ,‬בה השתמשנו בעקרון שובך היונים על מספר המצבים‬
‫באוטומט‪ .‬כאן אין מצבים‪ ,‬אך יש משתנים‪ ,‬לכן נסתכל על עץ הגזירה של הדקדוק‪ .‬נסתכל על דרגת הפיצול של‬
‫העץ‪ ,‬היא בהכרח חסומה על ידי צד ימין הארוך ביותר בחוקי הדקדוק‪ ,‬שנסמנו ב‪ .b-‬נרצה שבמסלול מהשורש לעלה‪,‬‬
‫יופיע משתנה פעמיים‪ .‬נבחין כי אם מספר העלים גדול או שווה מ‪ b|V |+1 -‬אזי גובה העץ בהכרח גדול או שווה‬
‫מ‪) |V | + 1-‬ראינו זאת במבני נתונים(‪ .‬על כן‪ ,‬עבור מילה מספיק גדולה‪ ,‬נוכל לקבל חזרתיות של משתנה‪ .‬אבחנה‬
‫חשובה נוספת היא שמספר העלים בעץ‪ ,‬הוא האורך של המילה ‪ .w‬כדי להראות את תכונת הניפוח‪ ,‬נסתכל על כללי‬
‫דקדוק שנובעים מהבנייה שלנו‪ ,‬ונראה שחייבת להיות חזרתיות‪ ,‬בדומה למעגל בגרף שראינו בלמת הניפוח לשפות‬
‫רגולריות‪.‬‬
‫הוכחה‪ .‬יהי ‪ G = hV, Σ, R, Si‬דקדוק המתאים לשפה ‪.L‬‬
‫נסמן ב‪ b-‬את האורך של צד ימין הארוך ביותר בחוקים של ‪ .G‬למשל‪ ,‬עבור סט החוקים‬
‫‪A → aaAb | bA | ε‬‬
‫הארוך ביותר הוא ‪ A → aaAb‬ואורכו הוא ‪.4‬‬
‫‪B → bAb‬‬
‫החוק‬
‫כזכור‪ ,‬גזירה של כל מילה מגדירה עץ גזירה‪ ,‬ובגלל שהחוק הארוך ביותר הוא באורך ‪ ,b‬לכל צומת בעץ יהיו לכל היותר ‪b‬‬
‫בנים‪ ,‬כלומר דרגת הפיצול של העץ היא לכל היותר ‪.b‬‬
‫אזי לכל ‪ ,k ∈ N‬אם מספר העלים בעץ הוא לפחות ‪ bk‬אז גובה העץ הוא לפחות ‪ .k‬על כן‪ ,‬נבחר‬
‫‪|V |+1‬‬
‫‪ .p = b‬תהי ‪w ∈ L‬‬
‫כך ש‪ .|w| ≥ p-‬נסתכל על עץ הגזירה הקטן ביותר של ‪ ,w‬ונשים לב שגובהו הוא לכל הפחות ‪ ,|V | + 1‬שכן מספר העלים‬
‫בו הוא לפחות |‪.b|V |+1 ≤ |w‬‬
‫מכאן שקיים מסלול מהשורש לעלה כלשהו‪ ,‬שאורכו לפחות ‪ .|V | + 1‬מסלול זה מורכב כולו ממשתנים‪ ,‬אם יש אות איפשהו‬
‫במסלול זה אומר שהגענו לסוף‪ ,‬כי אי אפשר לגזור עוד אותיות‪/‬משתנים מאות כלשהי ‪ -‬רק ממשתנה‪ .‬לכן‪ ,‬מעקרון שובך‬
‫היונים‪ ,‬יש משתנה במסלול שחוזר על עצמו פעמיים ב‪ |V | + 1-‬הרמות התחתונות במסלול )שקרובות לעלים(‪ .‬נקרא למשתנה‬
‫זה ‪ ,A‬כמתואר באיור הבא‪.‬‬
‫‪35‬‬
‫הרצאה ‪5‬ב‬
‫‪5‬‬
‫שפות חסרות הקשר‬
‫‪5.1‬‬
‫שבוע ‪5‬‬
‫למת הניפוח לשפות ח“ה‬
‫‪A‬‬
‫‪A‬‬
‫‪A‬‬
‫‪|V | + 1‬‬
‫‪A‬‬
‫‪A‬‬
‫‪z‬‬
‫‪z‬‬
‫‪y‬‬
‫‪v‬‬
‫‪x‬‬
‫‪v‬‬
‫‪y‬‬
‫‪u‬‬
‫‪u‬‬
‫‪x‬‬
‫‪y‬‬
‫‪v‬‬
‫נתבונן בחלוקה ‪ w = uvxyz‬כמו באיור )שמתקבלת מהסתכלות על החלק שהמופע הראשון של ‪” A‬אחראי לגזור“‪ ,‬ועל החלק‬
‫המופע השני ”אחראי לגזור“(‪ ,‬ונראה שמתקיימים תנאי הלמה‪:‬‬
‫∗‬
‫‪S ⇒ uAz‬‬
‫∗‬
‫)‪ . (3‬נראה שלכל ‪ 0 ≤ i‬מתקיים ‪ .uv i xy i z ∈ L‬נשים לב ש‪A ⇒ vAy -‬‬
‫∗‬
‫‪A⇒x‬‬
‫∗‬
‫∗‬
‫∗‬
‫לכן‬
‫∗‬
‫∗‬
‫∗‬
‫‪S ⇒ uAz ⇒ uvAyz ⇒ uvvAyyz ⇒ . . . ⇒ uv i Ay i z ⇒ uv i xy i z‬‬
‫בנייה זו מומחשת באיור הקודם‪.‬‬
‫)‪ . (1‬צריך להראות ש‪ .|vxy| ≤ p-‬נסתכל על העץ ונביט במופע הראשון של ‪ A‬במסלול שבחרנו )מסומן בסגול באיור הנ“ל(‪.‬‬
‫נשים לב שקודקוד זה יוצר תת‪-‬עץ שגוזר את ‪ .vxy‬בגלל ש‪ A-‬נמצא ב‪ |V | + 1-‬הרמות התחתונות במסלול בעץ המקורי‪,‬‬
‫אז גובה העץ בו ‪ A‬הוא השורש הוא לכל היותר ‪ ,|V | + 1‬לכן מספר העלים הוא לכל היותר ‪.p = b|V |+1‬‬
‫)‪ |vy| > 0 . (2‬כי בחרנו בהתחלה את עץ הגזירה להיות עץ הגזירה הקטן ביותר‪ .‬אם ‪ v, y‬שניהם היו ‪ ε‬אז היינו יכולים‬
‫לקבל עץ קטן יותר שגוזר את ‪ .w‬אנחנו יכולים לחשוב על זה כך‪ :‬ה‪ A-‬העליון גוזר את המילה ‪ ,v‬גוזר את המילה ‪,y‬‬
‫וגוזר את ‪ A‬שגוזר את המילה ‪ .x‬אם ‪ ,v = ε, y = ε‬אז ‪ A‬העליון מיותר ‪ -‬מספיק שהיינו משאירים את ‪ A‬התחתון שיגזור‬
‫את ‪ x‬והיינו מקבלים את אותה מילה ‪ w‬רק עם עץ קטן יותר‪.‬‬
‫דוגמה ‪ .5.2‬כדוגמה ללמת הניפוח נסתכל על שפת הפלינדרומים מאורך זוגי‪ .‬נבחר ‪ ,p = 3‬ובהינתן פלינדרום ‪,w = σ1 σ2 . . . σ2n‬‬
‫נסתכל על החלוקה ‪ w = uvxyz‬הבאה‪:‬‬
‫‪σn+2 . . . σ2n‬‬
‫‪ε‬‬
‫‪σn+1‬‬
‫‪σn‬‬
‫‪σ1 . . . σn−1‬‬
‫נשים לב שמהיות ‪ w‬פלינדרום מתקיים ‪ σn = σn+1‬לכן לכל ‪ ,i ≥ 0‬המילה‬
‫‪σn+2 . . . σ2n‬‬
‫‪i‬‬
‫‪σn+1‬‬
‫‪ε‬‬
‫‪σni‬‬
‫‪uv i xy i z = σ1 . . . σn−1‬‬
‫היא גם פלינדרום‪ ,‬כלומר התנאי השלישי מתקיים‪ .‬השניים הראשונים גם מתקיימים כי ‪ |vxy| = |σn εσn+1 | = 2 ≤ 3‬וכן‬
‫‪.|vy| = |σn εσn+1 | = 3 > 0‬‬
‫בזאת נסיים את דיוננו על שפות חסרות הקשר‪ ,‬אך נציין כי זה נושא רחב שאפשר להעמיק בו רבות‪.‬‬
‫‪36‬‬
‫‪6‬‬
‫שבוע ‪6‬‬
‫מכונת טיורינג‬
‫חלק ‪III‬‬
‫חישוביות‬
‫‪6‬‬
‫מכונת טיורינג‬
‫הגיע הזמן לדבר על חישוביות ‪ -‬מה המחשב יכול לעשות ומה לא‪.‬‬
‫הרצאה ‪6‬א‬
‫כשאנחנו שואלים מה מחשב יכול ולא יכול לעשות‪ ,‬אנחנו צריכים קודם להבין מהו מחשב‪ .‬כי לדוגמה ראינו שהשפה‬
‫‬
‫∗‬
‫}‪ L = w#w | w ∈ {0, 1‬היא לא ח“ה ובפרט גם לא רגולרית‪ ,‬ולכן אין אוטומט שמתאר אותה‪ .‬אבל באותו הזמן‪ ,‬קל‬
‫לכתוב בשפת התכנות החביבה עלינו תכנית מחשב קצרה שמכריעה את ‪ - L‬בודקת האם מילה נמצאת בשפה או לא‪ .‬לכן‬
‫אנו מבינים שבסטנדרטים שלנו‪ ,‬אוטומט )או דקדוק ח“ה( לא מספיק כדי לתאר מחשב כפי שהיינו רוצים‪ .‬המודל בו נשתמש‬
‫נקרא מכונת טיורינג‪.‬‬
‫במכונת טיורינג יש לנו סרט אינסופי )זכרון( הבנוי מתאים‪ ,‬וכדי לרוץ על מילת קלט כלשהי נכניס את האותיות של המילה‬
‫לתאים הראשונים בסרט‪.‬‬
‫בנוסף‪ ,‬יש למכונה ראש שיכול לנוע ימינה ושמאלה על גבי הסרט ולקרוא אות‪/‬לכתוב אות‪.‬‬
‫לסיום‪ ,‬יש למכונה מצב פנימי מתוך קבוצה סופית של מצבים פנימיים‪ ,‬לפיהם נקבל החלטות )בדומה לאוטומט(‪.‬‬
‫להלן המחשה למכונת טיורינג‪ .‬הסימון‬
‫מציין שבתא זה לא רשומה אות )תא ריק(‪.‬‬
‫↓‬
‫‪...‬‬
‫‪a‬‬
‫‪b‬‬
‫‪b‬‬
‫‪a‬‬
‫נגדיר פורמלית מהי מכונת טיורינג‪:‬‬
‫הגדרה ‪ .6.1‬מכונת טיורינג )‪ (Turing Machine‬היא שביעיה ‪ M = hQ, Σ, Γ, δ, q0 , qacc , qrej i‬כאשר‪:‬‬
‫ˆ ‪ Q‬קבוצת המצבים הפנימיים )קבוצה סופית(‪.‬‬
‫∈‬
‫ˆ ‪ Σ‬א“ב הקלט )‪/ Σ‬‬
‫(‪.‬‬
‫ˆ ‪ Γ‬א“ב העבודה )‪∈ Γ, Σ ⊆ Γ‬‬
‫(‪ .‬אלה אותיות שאפשר לכתוב על הסרט‪.‬‬
‫ˆ )}→ ‪ - δ : Q × Γ → (Q × Γ × {←,‬פונקציית מעברים‪.‬‬
‫ˆ ‪ q0‬מצב התחלתי יחיד‪.‬‬
‫ˆ ‪ qacc‬מצב מקבל יחיד‪ .‬כאשר המכונה מגיע למצב זה היא עוצרת‪.‬‬
‫ˆ ‪ qrej‬מצב דוחה יחיד‪ .‬כאשר המכונה מגיע למצב זה היא עוצרת‪.‬‬
‫הערה‪ .‬המשמעות של ‪ δ (q, a) = hq ′ , b, →i‬היא שכש‪ M -‬במצב ‪ q‬קוראת את האות ‪ ,a‬היא עוברת למצב ‪ ,q ′‬כותבת ‪b‬‬
‫במקום ‪ ,a‬ומזיזה את הראש מקום אחד ימינה‪.‬‬
‫במקרה הלא‪-‬דטרמיניסטי ‪ δ‬תהיה‬
‫)}→‪(Q×Γ×{←,‬‬
‫‪ δ : Q × Γ → 2‬כלומר נוכל להתקדם בכמה אפשרויות ולא רק אחת‪ .‬אנחנו‬
‫נניח שאנחנו במקרה הדטרמיניסטי והקורא המשקיע מוזמן לחשוב איך יראו ההגדרות במקרה הלא‪-‬דטרמיניסטי‪.‬‬
‫נציין גם שלעיתים במקום }→ ‪ {←,‬נרשום }‪.{R, L‬‬
‫הערה‪ .‬נשים לב שאם הראש הקורא נמצא על התו‬
‫זה לא אומר שהריצה תעצור‪.‬‬
‫הוא תו ככל התווים ב‪ Γ-‬ומעבר‬
‫לכך שבו אנחנו משתמשים לריפוד )וכך שהוא לא נמצא ב‪ ,(Σ-‬אין לו משמעות מיוחדת‪.‬‬
‫הערה‪ .‬נשים לב ש‪ DFA-‬הוא מקרה פרטי של מכונת טיורינג בו ‪ δ‬מאפשרת לנו להתקדם רק ימינה‪ ,‬ואנחנו עוצרים את‬
‫‪37‬‬
‫‪6‬‬
‫שבוע ‪6‬‬
‫מכונת טיורינג‬
‫הריצה ברגע שאנחנו מגיעים ל‪. -‬‬
‫הגדרה ‪ .6.2‬תהי ‪ M‬מכונת טיורינג )מ“ט(‪ .‬הקונפיגורציה של ‪ M‬בכל רגע נתון היא תיאור מלא של המצב של‬
‫המכונה‪ :‬המצב הפנימי הנוכחי‪ ,‬מיקום הראש ותוכן הסרט‪ .‬אם בסרט רשומה המילה ∗‪ w = uv ∈ Γ‬והראש נמצא‬
‫על האות הראשונה של ‪ v‬והוא המצב ‪ ,q‬נרשום את הקונפיגורציה הנוכחית של ‪ M‬בתור ‪.uqv‬‬
‫‪q‬‬
‫↓‬
‫‪v‬‬
‫‪...‬‬
‫‪u‬‬
‫הגדרה ‪ .6.3‬תהי ‪ M‬מ“ט‪ .‬הקונפיגורציה ההתחלתית של ‪ M‬על מילה ∗‪ w ∈ Σ‬היא ‪.εq0 w = q0 w‬‬
‫קונפיגורציה מקבלת היא קונפ’ שהמצב שלה הוא ‪ qacc‬וקונפיגורציה דוחה היא קונפ’ שהמצב שלה הוא ‪ .qrej‬לכל‬
‫אחת משתי קונפיגורציות אלה‪ ,‬המקבלת והדוחה‪ ,‬נקרא קונפיגורציה סופית‪/‬עוצרת‪.‬‬
‫הגדרה ‪ .6.4‬בהינתן קונפ’ ‪ uaqbv‬כאשר ‪ ,u, v ∈ Γ∗ , q ∈ Q, a, b ∈ Γ‬אם ‪ δ (q, b) = hq ′ , c, →i‬אז הקונפ’ העוקבת‬
‫היא ‪ uacq ′ v‬ונסמן ‪ .uaqbv → uacq ′ v‬אחרת‪ ,‬אם ‪ ,δ (q, b) = hq ′ , c, ←i‬אז הקונפ’ העוקבת היא ‪ uq ′ acv‬ונסמן‬
‫‪.uaqbv → uq ′ acv‬‬
‫במקרה שהקונפיגורציה היא ‪ qbv‬ו‪ ,δ (q, b) = hq , c, ←i-‬אז נגדיר את הקונפיגורציה העוקבת להיות ‪ q cv‬כי אין‬
‫‪′‬‬
‫‪′‬‬
‫לנו איך להתקדם עוד שמאלה‪.‬‬
‫אם שתי קונפיגורציות הן עוקבות‪ ,‬נאמר שהראשונה גוררת )‪ (yields‬את השנייה‪.‬‬
‫הגדרה ‪ .6.5‬תהי ‪ M‬מ“ט‪ .‬ריצה של ‪ M‬על ∗‪ w ∈ Σ‬היא סדרה של קונפ’ ‪ c0 , c1 , c2 , . . .‬כך ש‪ c0 -‬היא הקונפ’‬
‫ההתחלתית של ‪ M‬על ‪ ci+1 ,w‬עוקבת ל‪ ,ci -‬ובנוסף או שהסדרה סופית ומסתיימת בקונפ’ עוצרת או שאינה סופית‪.‬‬
‫הגדרה ‪ .6.6‬תהי ‪ M‬מ“ט‪ .‬נאמר כי ‪ M‬מקבלת את ∗‪ w ∈ Σ‬אם הריצה של ‪ M‬על ‪ w‬שמגיעה לקונפ’ מקבלת‪.‬‬
‫אחרת )אם מגיעים לקונפ’ דוחה או שהריצה לא מסתיימת אף פעם( נאמר ש‪ M -‬לא מקבלת את ‪ .w‬נסמן ב‪L (M )-‬‬
‫את קבוצת המילים ∗‪ w ∈ Σ‬ש‪ M -‬מקבלת‬
‫הערה‪ .‬המשמעות של קונפיגורציה עוקבת היא פשוט להתקדם קדימה בתהליך החישוב של מכונת הטיורינג )כמו הרצה של‬
‫עוד פקודה במחשב(‪.‬‬
‫דוגמה‪ .‬נבנה מכונת טיורינג עבורה‬
‫‬
‫∗‬
‫}‪ .L (M ) = w#w | w ∈ {0, 1‬הרעיון בבנייה הוא כזה‪:‬‬
‫)‪ (i‬אנחנו נתחיל מהאות הראשונה בקלט ונזכור אותה‪ .‬נסמן במקומה × כדי שנזכור שקראנו אותה כבר‪.‬‬
‫)‪ (ii‬עכשיו נתקדם ימינה עד ל‪) #-‬אם נגיע ל‪-‬‬
‫בלי לקרוא ‪ #‬אז נעבור למצב ‪ (qrej‬ואז נתקדם ימינה עד למקום בו אין ×‪.‬‬
‫)‪ (iii‬נשווה את האות הרשומה לאות שזכרנו‪ .‬אם האותיות שוות‪ ,‬נסמן × כדי לזכור שסיימנו עם האות הזו‪.‬‬
‫)‪ (iv‬נתקדם שמאלה עד ל‪ #-‬ואז נמשיך שמאלה עד ל‪ ×-‬הראשון שניתקל בו‪ .‬עתה נזיז את הראש מקום אחד ימינה‪ ,‬נקרא‬
‫את האות ונזכור אותה‪ .‬נסמן במקומה × כדי שנזכור שקראנו אותה כבר‪ .‬מכאן נחזור על התהליך שתיארנו עד שנסיים‬
‫עם כל האותיות בקלט‪.‬‬
‫להלן דוגמה לריצה על הקלט ‪.010#010‬‬
‫‪38‬‬
‫‪6‬‬
‫)‪(1‬‬
‫מכונת טיורינג‬
‫שבוע ‪6‬‬
‫מתחילים מהמצב ההתחלתי‬
‫···‬
‫נקרא את האות הראשונה‪ ,‬נזכור את ערכה באמצעות‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪#‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫מעבר למצב ייעודי‪ .‬נסמן × במקום האות כדי שנדע‬
‫שהיינו במקום הזה כבר‪ ,‬ונתקדם ימינה עד ל‪.#-‬‬
‫)‪(2‬‬
‫נתקדם ימינה עד ל‪.#-‬‬
‫)‪(3‬‬
‫נתקדם ימינה עד ל‪.#-‬‬
‫)‪(4‬‬
‫קראנו ‪ #‬ונתקדם עד המקום הראשון בו אין ×‪.‬‬
‫)‪(5‬‬
‫עתה הגענו לתא בו אין ×‪ .‬אם הערך בתא שונה מהערך‬
‫שזכרנו‪ ,‬נעבור ל‪ .qrej -‬במקרה שלנו‪ ,‬הערכים שווים לכן‬
‫···‬
‫‪0‬‬
‫···‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪#‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫‪#‬‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫···‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪#‬‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫···‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫‪#‬‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫נמשיך‪ :‬נסמן × בתא הנוכחי ונזוז שמאלה עד ל‪.#-‬‬
‫)‪(6‬‬
‫נזוז שמאלה עד ל‪#-‬‬
‫)‪(7‬‬
‫הגענו ל‪ ,#-‬לכן נתקדם עד שנתקל ב‪.×-‬‬
‫)‪(8‬‬
‫נתקדם עד שנתקל ב‪.×-‬‬
‫)‪(9‬‬
‫הגענו ל‪ ×-‬לכן נזוז מקום אחד ימינה‪.‬‬
‫)‪(10‬‬
‫נזכור את ערכה באמצעות מעבר למצב ייעודי‪ .‬נסמן ×‬
‫במקום האות כדי שנדע שהיינו במקום הזה כבר‪ ,‬ונתקדם‬
‫···‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫‪#‬‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫···‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫‪#‬‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫···‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫‪#‬‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫···‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫‪#‬‬
‫‪0‬‬
‫‪1‬‬
‫×‬
‫···‬
‫‪0‬‬
‫×‬
‫‪#‬‬
‫×‬
‫×‬
‫‪1‬‬
‫‪0‬‬
‫ימינה עד ל‪ .#-‬מכאן נמשיך את התהליך שתיארנו באותו‬
‫אופן‪.‬‬
‫באופן פורמלי המ“ט שלנו היא ‪ M = hQ, Σ, Γ, δ, q0 , qacc , qrej i‬כאשר } ‪ ,Σ = {0, 1, #} , Γ = {0, 1, #, ×,‬ו‪ Q, δ-‬מוגדרים‬
‫ע“י הגרף הבא‪ ,‬כאשר על כל קשת בין שני מצבים רשומה האות שצריך לקרוא כדי לעבור לאותו מצב‪ ,‬האות שנרשום בתא‬
‫‪39‬‬
‫‪6‬‬
‫שבוע ‪6‬‬
‫מכונת טיורינג‬
‫הנוכחי‪ ,‬והכיוון אליו נתקדם‪.‬‬
‫המצב ההתחלתי הוא ‪ .q0‬ממנו אפשר לעבור למצב ‪ q1‬שזוכר שקראנו ‪ 0‬או למצב ‪ q2‬הזוכר שקראנו ‪ .1‬עבור שני מצבים‬
‫אלה אנחנו זזים ימינה עד שמגיעים ל‪ #-‬ומשם עוברים למצבים מתאימים ) ‪ (q3 , q4‬שזוכרים את האות שקראנו בהתחלה‬
‫וזוכרים שצריך להתקדם עד שנתקלים בתו שאינו ×‪.‬‬
‫ברגע שמגיעים לתו שאינו ×‪ ,‬אם אין התאמה בין האות שזכרנו לאות הנוכחית עבורים ל‪ qrej -‬ומסיימים את הריצה‪ .‬אחרת‪,‬‬
‫עוברים ל‪ q5 -‬שתפקידו להחזיר אותנו עד ל‪ .#-‬משם עוברים למצב ‪ q6‬שתפקידו להתקדם שמאלה עד שניתקל ב‪ ,×-‬ואז נגיע‬
‫ל‪ q0 -‬ונתחיל את התהליך מחדש‪.‬‬
‫אחרי שנעבור מספיק איטרציות‪ ,‬נסיים לעבור על המילה ונצפה לקבל שהקונפ’ היא · · · × ‪ .× . . . × q0 # × . . .‬אז נעבור‬
‫למצב ‪ q7‬שתפקידו לוודא שאחרי ה‪ × . . . × # × . . . ×-‬לא רשומה אות נוספת )כדי שלא נקבל מילים כמו ‪ w#w0‬לדוגמה(‪.‬‬
‫)‪0 → (0, R‬‬
‫)‪1 → (1, R‬‬
‫)‪× → (×, R‬‬
‫‪q3‬‬
‫)‪0 → (0, L‬‬
‫)‪1 → (1, R‬‬
‫‪qrej‬‬
‫)‪# → (#, R‬‬
‫‪q1‬‬
‫)‪0 → (×, L‬‬
‫)‪× → (×, L‬‬
‫‪q5‬‬
‫)‪0 → (×, R‬‬
‫)‪1 → (1, L‬‬
‫)‪# → (#, L‬‬
‫‪q6‬‬
‫)‪× → (×, R‬‬
‫)‪0 → (0, R‬‬
‫‪q0‬‬
‫)‪1 → (×, R‬‬
‫)‪# → (#, R‬‬
‫‪q4‬‬
‫‪q2‬‬
‫)‪# → (#, R‬‬
‫)‪× → (×, R‬‬
‫)‪0 → (0, R‬‬
‫‪qacc‬‬
‫)‪→ ( , L‬‬
‫‪q7‬‬
‫)‪1 → (1, R‬‬
‫)‪× → (×, R‬‬
‫הגדרה ‪ .6.7‬תהי ‪ M‬מ“ט‪ .‬נאמר ש‪ M -‬מזהה את ‪ L‬אם ‪.L (M ) = L‬‬
‫הגדרה ‪ .6.8‬תהי ‪ M‬מ“ט ותהי ‪ L‬שפה‪ .‬נאמר ש‪ M -‬מכריעה )‪ (decides‬את ‪ L‬אם ‪ M‬מזהה את ‪ L‬ובנוסף היא‬
‫עוצרת על כל קלט‪.‬‬
‫הגדרה ‪ .6.9‬נסמן ב‪ RE-‬את מחלקת השפות הניתנות לזיהוי ע“י מכונת טיורינג ונסמן ב‪ R-‬את מחלקת השפות‬
‫שניתנות להכרעה ע“י מכונת טיורינג‪.‬‬
‫הערה‪ RE .‬זהו קיצור של ‪ Recursively Enumerable‬ו‪ R-‬זהו קיצור של ‪.Recursive‬‬
‫הערה‪ .‬חשוב לשים לב ש‪ M -‬לא בהכרח תעצור על קלט מסויים )או אף קלט(‪ .‬לדוגמה‪ ,‬המ“ט שפשוט זזה ימינה כל הזמן‪,‬‬
‫עד אינסוף‪ ,‬ונשארת כל הזמן במצב ‪ ,q0‬לא תעצור לעולם על אף קלט‪.‬‬
‫דוגמה ‪ .6.1‬נגדיר את ‪ L‬להיות השפה של כל תכניות המחשב )תכנית מחשב היא בעצם קוד שמקבל קומפיילר( שכתובות‬
‫ב‪ c-‬שעוצרות על הקלט ‪ .4‬אינטואיטיבית מראש אנחנו מבינים שאפשר לבנות מכונת טיורינג ‪ M‬שתקבל את השפה ‪M -‬‬
‫‪40‬‬
‫‪6‬‬
‫שבוע ‪6‬‬
‫מכונת טיורינג‬
‫פשוט תריץ את התכנית על הקלט ‪ ,4‬ואם היא תעצור היא תעבור למצב מקבל‪ ,‬ואם היא לא תעצור אז מההגדרה של ‪M‬‬
‫היא לא תקבל את התכנית‪ .‬לכן ‪ M‬מזהה את ‪) L‬כמובן לא הוכחנו כלום והכל אינטואיטיבית(‪.‬‬
‫דוגמה ‪ .6.2‬בניגוד לדוגמה הקודמת‪ ,‬אם נגדיר את ‪ L‬להיות שפת כל תכניות המחשב שכתובות ב‪ c-‬שעוצרות על כל קלט‪,‬‬
‫לא ברור איך לבנות ‪ M‬שתכריע או אף תזהה את ‪ .L‬בהמשך נראה שלא ניתן לבנות ‪ M‬כזה )ראו ‪.(21.1‬‬
‫באוטומטים הייתה לנו רק הגדרה של לזהות‪/‬לקבל שפה כלשהי‪ ,‬ובמכונות טיורינג יש לנו מושג חדש של הכרעה והוא יעניין‬
‫אותנו מאוד כפי שהבנו מהדוגמה הקודמת‪.‬‬
‫שאלה בהינתן מ“ט ‪ M‬נסתכל על ) ‪ .L = L (M‬נגדיר ̃‪ M‬באמצעות החלפת התפקידים של ‪ qacc‬ו‪ .qrej -‬האם בהכרח‬
‫ ‬
‫‪?L M̃ = Σ∗ \L = L‬‬
‫ ‬
‫∈ ‪ w‬אז ‪w ∈ L‬‬
‫∈ ‪ .w‬אבל אם ) ‪/ L (M‬‬
‫∈ ‪ w‬אבל גם ̃‪/ L M‬‬
‫תשובה לא‪ .‬אם יש מילה ‪ w‬ש‪ M -‬לא מכריעה אז ) ‪/ L (M‬‬
‫ ‬
‫ ‬
‫לכן ̃‪ .L 6= L M‬לעומת זאת‪ ,‬אם ‪ M‬כן מכריעה את ‪ L‬אז אנחנו רואים שאכן ̃‪ .L = L M‬כלומר אנחנו לא‬
‫בטוחים עדיין ש‪ RE-‬סגורה למשלים‪ ,‬אך אנחנו כן יודעים בוודאות עכשיו ש‪ R-‬סגורה למשלים‪.‬‬
‫מסקנה ‪ R .6.1‬סגורה למשלים‪.‬‬
‫הגדרה ‪ .6.10‬נגדיר‬
‫‬
‫‪.coRE = L | L ∈ RE‬‬
‫הערה ‪ coRE .6.1‬למעשה מכילה שפות שעבור כל קלט‪ ,‬אפשר לקבוע האם הוא לא בשפה‪ .‬במילים אחרות‪ ,‬אם יש לנו‬
‫בעיה מסויימת ב‪ ,coRE-‬אז נוכל לקבוע האם קלט מסויים לא מהווה פתרון לבעיה‪ .‬נעמיק על כך בהמשך‪.‬‬
‫נרצה לחקור את טיב היחסים בין ‪ R‬ו‪ RE-‬ו‪.coRE-‬‬
‫משפט ‪.R = RE ∩ coRE .6.1‬‬
‫הוכחה‪ .‬נראה הכלה דו כיוונית‪.‬‬
‫⇐‪ :‬נתחיל מ‪ .R ⊆ RE ∩ coRE-‬מההגדרה ‪ R ⊆ RE‬ובגלל ש‪ R-‬סגור למשלים אז ‪ R ⊆ coRE‬לכן ‪.R ⊆ RE ∩ coRE‬‬
‫⇒‪ :‬נראה כי ‪ .RE ∩ coRE ⊆ R‬תהי ‪ .L ∈ RE ∩ coRE‬אזי קיימת מ“ט ‪ M‬שמזהה את ‪ L‬ויש מ“ט ̂‪ M‬שמזהה את ‪.L‬‬
‫נבנה באמצעות ̂‪ M, M‬מ“ט ‪ M ′‬שמכריעה את ‪ L‬ונסיים‪.‬‬
‫אנחנו יודעים שביחד ̂‪ M, M‬מכריעות את כל המילים ‪ M -‬מכריעה את כל המילים ב‪ L-‬ו‪ M̂ -‬מכריעה את כל המילים‬
‫ב‪) L-‬פשוט כל אחת בנפרד לא בהכרח מכריעה את כל המילים ב‪ .(Σ∗ -‬לכן נרצה איכשהו להריץ את שתיהן‪ .‬הבעיה היא‬
‫שאם ננסה להריץ קודם את ‪ M‬ואז את ̂‪ ,M‬יתכן שניתקע בריצה אינסופית‪ .‬לכן נרצה לבנות אוטומט שסוג‪-‬של מריץ את‬
‫שתיהן במקביל‪ ,‬ואז ברגע שאחת מהן תסיים את ריצתה ותכריע את המילה‪ ,‬אז נעצור את הריצה של ‪.M ′‬‬
‫באופן מפורט יותר )אך עדיין לא פורמלי עד הסוף(‪ ,‬בהינתן קלט ‪ w‬המ“ט ‪ M ′‬פועלת כך‪:‬‬
‫‪ .1‬נגדיר מונה ‪ i‬ולכל ערך ‪:i = 1, 2, 3, . . .‬‬
‫)א( נריץ את ‪ M‬על ‪ i w‬צעדים‪ .‬אם ‪ M‬קיבלה את ‪ ,w‬עצור וקבל‪.‬‬
‫)ב( נריץ את ̂‪ M‬על ‪ i w‬צעדים‪ .‬אם ̂‪ M‬קיבלה את ‪ ,w‬עצור ודחה‪.‬‬
‫נשים לב ש‪ M ′ -‬עוצרת על כל קלט ‪ :w‬אם ‪ w ∈ L‬אז לריצה המקבלת ‪ r‬של ‪ M‬על ‪ w‬יש מספר סופי ‪ j‬של צעדים‪ ,‬ואז‬
‫‪ M ′‬תעצור באיטרציה ‪.j‬‬
‫אחרת‪ ,‬לריצה של ̂‪ M‬על ‪ w‬יש מספר סופי ‪ k‬של צעדים‪ ,‬ואז ‪ M ′‬תעצור באיטרציה ‪ .k‬בנוסף‪ L (M ′ ) = L (M ) ,‬כי‬
‫) ‪ w ∈ L (M ′‬אם“ם היא התקבלה בעקבות ריצה מקבלת של ‪ M‬על ‪ w‬אם“ם ) ‪.w ∈ L (M‬‬
‫‪41‬‬
‫הרצאה ‪6‬ב‬
‫‪6‬‬
‫מכונת טיורינג‬
‫‪ 6.1‬ספרנים )‪(Enumerators‬‬
‫שבוע ‪7‬‬
‫כדי להוכיח את הטענה באופן פורמלי‪ ,‬נצטרך להגדיר במפורש את ‪ ,M ′‬ונוכל לפעול בשתי שיטות‪ :‬הראשונה היא לממש‬
‫במפורש את האלגוריתם שתיארנו קודם ‪ -‬נרשום על הסרט לצד הקלט המקורי את ערכו של המונה‪ ,‬ואז נעתיק גם את‬
‫הקלט המקורי כדי שנוכל לתת ל‪ M̂ -‬לרוץ עליו‪ .‬כמו כן‪ ,‬נצטרך לרשום על הסרט מונים שיזכרו באיזו איטרציה אנחנו וכו’‪.‬‬
‫על כן‪ ,‬הסרט יראה בערך כך‪:‬‬
‫‪copy input iteration current‬‬
‫···‬
‫···‬
‫‪j‬‬
‫‪#‬‬
‫···‪···w‬‬
‫‪input‬‬
‫‪counter‬‬
‫‪#‬‬
‫‪i‬‬
‫‪#‬‬
‫···‪···w‬‬
‫הפרטים הקטנים לפתרון הושארו כתרגיל לסטודנט המשקיע החכם היפה והחסון‪.‬‬
‫במקום בנייה זו‪ ,‬אפשרות נוספת היא לבנות מכונה שמדמה ריצה על שני סרטים במקבלים‪.‬‬
‫‪ 6.1‬ספרנים )‪(Enumerators‬‬
‫נרצה להבין מה המשמעות של ‪ .RE = Recursively Enumerable‬אנו מכירים את המונח ”קבוצה בת מנייה“‪ ,‬ונראה ש‪RE-‬‬
‫היא למעשה כל השפות שניתן לסדר את איבריהן באופן אלגוריתמי‪.‬‬
‫כדי להראות זאת‪ ,‬נחקור את מושג ה‪“-‬ספרן“‪ .‬ספרן הוא למעשה מ“ט שלא מקבלת קלט‪ ,‬ואנו נראה שהוא שקול למ“ט‬
‫שמזהה שפה‪ .‬באופן )קצת( יותר פורמלי‪,‬‬
‫ספרן הוא מ“ט עם מדפסת‪ ,‬שלא מקבלת קלט‪ ,‬אך יש לה סרט פלט‪ ,‬שם היא מדפיסה מילים‪ .‬שפת הספרן מוגדרת‬
‫כ‪ E}-‬בסופו של דבר מדפיסה את ‪.L (E) = {w : w‬‬
‫הגדרה ‪ .6.11‬ספרן )‪ (Enumerator‬הוא מ“ט עם מדפסת‪ ,‬שלא מקבלת קלט‪ .‬כלומר‪ ,‬יש לה סרט פלט‪ ,‬שם היא‬
‫מדפיסה מילים‪.‬‬
‫הגדרה ‪ .6.12‬שפת הספרן מוגדרת על ידי כל המילים שהוא מדפיסת כלומר‬
‫}‪ E‬בסופו של דבר מדפיסה את ‪L (E) = {w : w‬‬
‫}קיים מספר ‪ t‬של צעדים כך ש‪ E-‬מדפיס את ‪ w‬לאחר ‪ t‬צעדים ‪= {w :‬‬
‫עתה‪ ,‬נראה את השקילות בין המונחים‪.‬‬
‫משפט ‪ .6.2‬לכל שפה ∗‪ L ⊆ Σ‬מתקיים כי ‪ L ∈ RE‬אם“ם קיים ספרן ‪ E‬כך ש‪.L (E) = L-‬‬
‫הוכחה‪ .‬נוכיח את שני הכיוונים‪.‬‬
‫⇒‪ :‬נניח שיש ספרן ‪ E‬כך ש‪ .L (E) = L-‬נייצר ‪ M‬שמזהה את ‪.L‬‬
‫בהינתן מילה ‪ ,w‬המ“ט ‪ M‬תפעל כך‪:‬‬
‫‪ M .1‬מריצה את ‪.E‬‬
‫‪ .2‬כל פעם ש‪ E-‬מדפיסה מילה ‪ M ,y‬בודקת האם ‪.y = w‬‬
‫)א( אם כן‪ ,‬היא עוצרת ומקבלת‪.‬‬
‫)ב( אם לא‪ ,‬ממשיכה להריץ את ‪.E‬‬
‫‪42‬‬
‫הרצאה ‪7‬א‬
‫‪6‬‬
‫שבוע ‪7‬‬
‫מכונת טיורינג‬
‫‪6.2‬‬
‫התזה של ‪Church, Turing‬‬
‫נבחין כי ‪ M‬מזהה את ‪ ,L‬כי אם ‪ w ∈ L‬אזי ‪ E‬ידפיס את ‪ w‬בסופו של דבר‪ ,‬ולכן ‪ M‬תעצור ותקבל‪ .‬מצד שני‪ ,‬אם‬
‫∈ ‪ w‬אזי ‪ E‬לא ידפיס את ‪ ,w‬ולכן ‪ M‬תרוץ לנצח ולא תקבל את ‪ .w‬כמו כן‪ ,‬אם ‪ E‬יעצור מבלי להדפיס את ‪M ,w‬‬
‫‪/L‬‬
‫תעצור מבלי לקבל את ‪.w‬‬
‫⇐‪ :‬היות ש‪ Σ∗ -‬בת מנייה‪ ,‬נוכל לסדר את המילים בה‪ ,‬למשל‪ ,‬בסדר לקסיקוגרפי‪ ,‬ולקבל סידור שלה ‪ .{wi }i∈N‬כאן מגיעה‬
‫תפנית מסוכנת בהוכחה‪ .‬מישהו עלול לבנות ספרן שמריץ את ‪ M‬על כל מילה‪ ,‬ובמידה שהיא מקבלת‪ ,‬להדפיס אותה‪ ,‬ואחרת‪,‬‬
‫לעבור למילה הבאה‪ .‬הבעיה היא‪ ,‬ש‪ M -‬רק מקבלת את ‪ L‬ולא מכריעה אותה‪ ,‬ולכן ייתכן שהיא לא תעצור בכלל‪ .‬על כן‪,‬‬
‫נבצע הרצה במקביל‪.‬‬
‫‪ .1‬עבור ‪.i = 1, 2, . . .‬‬
‫)א( נריץ את ‪ M‬על ‪ w1 , . . . , wi‬בדיוק ‪ i‬צעדים‪ ,‬על כל מילה בנפרד‪.‬‬
‫)ב( אם ‪ M‬מקבלת את ‪ wj‬עבור ‪ 1 ≤ j ≤ i‬במהלך הריצה‪ ,‬נדפיס אותו‪.‬‬
‫הבנייה נכונה‪ ,‬היות שאם ‪ w ∈ L‬אז ‪ w‬תודפס בסופו של דבר‪ .‬יהי ‪ w ∈ L‬אזי יש ‪ i‬כך ש‪ ,w = wi -‬ויש ‪ t‬כך ש‪ M -‬מקבלת‬
‫∈ ‪ w‬אז ‪ E‬לא תדפיס את ‪.w‬‬
‫את ‪ w‬תוך ‪ t‬צעדים‪ .‬על כן‪ w ,‬תודפס‪ ,‬בכל איטרציה }‪ .k ≥ max {i, t‬מצד שני‪ ,‬אם ‪/ L‬‬
‫נבחין כי כל מילה בשפה תודפס אינסוף פעמים‪ ,‬גם עבור שפות סופיות‪ .‬כמו כן‪ ,‬אין כאן דגש על יעילות‪ ,‬על זאת נדבר‬
‫בהמשך הקורס‪.‬‬
‫מסקנה ‪ RE .6.2‬אלה כל השפות שניתן לסדר את האיברים בהן באמצעות אלגוריתם‪.‬‬
‫‪6.2‬‬
‫התזה של ‪Church, Turing‬‬
‫אנחנו רוצים להשתכנע שאפשר לנתח מכונות טיורינג ולהסיק על תכניות מחשב באופן כללי‪ .‬כלומר נענה על השאלה‪” ,‬מהו‬
‫אלגוריתם?“‪.‬‬
‫רקע היסטורי‬
‫ב‪ 8.8.1900-‬התכנסה ועידה של מתמטיקאים שם הציג דוד‪-‬הילברט את ‪” 23‬הבעיות של הילברט“‪ ,‬להן עוד לא הוצג‬
‫פתרון‪.‬‬
‫מה שיעסיק אותנו הוא הבעיה ה‪ :10-‬לתאר אלגוריתם שבהינתן פולינום במספר משתנים יכריע האם יש לו שורש‬
‫שלם‪.‬‬
‫למשל‪ ,‬עבור ‪ 6x yz + 3xy − x − 10‬ו‪.x = 5, y = 3, z = 0-‬‬
‫‪3‬‬
‫‪2‬‬
‫‪2‬‬
‫‪3‬‬
‫בתקופותו של הילברט‪ ,‬לא הוגדר באופן פורמלי מושג ה‪“-‬אלגוריתם“‪ ,‬ולכן הילברט ניסח זאת כ‪“-‬תהליך שיכריע תוך‬
‫מספר סופי של צעדים“‪.‬‬
‫ב‪ 1970-‬הוכיחו שאין אלגוריתם‪ ,‬על ידי שימוש במכונות טיורינג‪.‬‬
‫טענה ‪ .6.1‬נגדיר }קיים ל‪ p-‬שורש שלם | ‪ H = {hpi‬אזי ‪.H ∈ RE‬‬
‫הוכחה‪ .‬נדגיש כי מכונה שמקבלת פולינום כקלט‪ ,‬מקבלת אותו כייצוג של משתנה‪-‬חזקה‪-‬אופרטור‪ ,‬למשל‪ .(x3z3 + y3) :‬נבנה‬
‫מ“ט ‪ M‬באופן הבא‪.‬‬
‫‪ .1‬אם יש ב‪ p-‬בדיוק ‪ n‬משתנים‪ ,‬נרוץ על סידור של ‪ .Zn‬אפשר לעשות זאת‪ ,‬כי היא בת מנייה‪.‬‬
‫‪ .2‬לכל השמה‪ (a1 , . . . , an ) ∈ Zn ,‬נבדוק האם היא שורש של ‪.p‬‬
‫‪ .3‬אם כן‪ ,‬נעצור ונקבל‪ .‬אחרת‪ ,‬נעבור להשמה הבאה‪.‬‬
‫‪43‬‬
‫‪6‬‬
‫מכונת טיורינג‬
‫‪6.3‬‬
‫שבוע ‪7‬‬
‫תרגום אלגוריתמים למ“ט‬
‫ברגע שנוכל לקבוע שאלגוריתם משמעותו קיום של מכונת טיורינג שמכריעה את השפה‪ ,‬נוכל לפרמל את הבעיה העשירית‪,‬‬
‫לכדי השאלה‪ ,‬האם ‪} ∈ R‬קיים ל‪ p-‬שורש שלם | ‪?H = {hpi‬‬
‫פריצת הדרך הגדולה שמאפשרת לקבוע זאת‪ ,‬היא התזה ‪ Church&Turing‬מ‪:1936-‬‬
‫ˆ ‪ Turing‬טען שהכרעה על ידי מ“ט שקולה לקיום אלגוריתם‪.‬‬
‫ˆ ‪ Church‬הגיע לכך באמצעות ‪ ,λ − calculus‬עליו לא נעמיק‪.‬‬
‫התזה היא איננה משפט‪ ,‬אלא משהו שצריך להשתכנע בו‪ .‬נעשה זאת על ידי תיאור של אלגוריתם בשלבים עוקבים‪.‬‬
‫השלב הראשון הוא ‪ ,‬מידול על ידי מ“ט ‪ .M = hΣ, Γ, . . .i‬הבעיה היא שאלגוריתמים פועלים על גרפים‪ ,‬פולינומים‪ ,‬מטריצות‪,‬‬
‫מכונות טיורינג‪ ,‬וכו ‪ ′‬ואילו מ“ט פועלות על מילים‪ .‬הפתרון לבעיה‪ ,‬הוא שניתן לקודד עצמים‪ ,‬ולכן עבור עצם ‪ A‬נוכל להסתכל‬
‫על הקידוד ‪ ,hAi‬עליו תעבוד המ“ט‪ .‬כלומר‪ ,‬לכל מ“ט יש פורמט לו היא מצפה‪ .‬על כן‪ ,‬נסיק כי אפשר למדל את האלגוריתם‬
‫עצמו כמ“ט‪ .‬למשל‪ ,‬נוכל לקודד גרף ‪ G = hV, Ei‬לפי רשימת קודקודים וצלעות שרשומות בפורמט כלשהו על הסרט‪.‬‬
‫השלב השני הוא תיאור הפעולות של המ“ט‪.‬‬
‫השלב השלישי הוא תיאור של ‪ pseudo − code‬בשפה עילית‪.‬‬
‫התזה קובעת שהשלב השני והשלישי שקולים‪ ,‬כלומר‪ pseudo − code ,‬קובע פעולות על מ“ט‪ ,‬ומכך שאפשר לקודד עצמים‬
‫ולייצג אלגוריתם כמ“ט‪ ,‬נקבל כי אלגוריתם שקול למ“ט‪.‬‬
‫‪6.3‬‬
‫תרגום אלגוריתמים למ“ט‬
‫נמחיש שניתן לקודד כל אלגוריתם על ידי קידוד של קשירות של גרף‪.‬‬
‫כלומר נבנה מ“ט שמכריעה את }‪ G‬גרף לא מכוון קשיר | ‪.CG = {hGi‬‬
‫כדי לעשות זאת‪ ,‬נסביר קודם כל כיצד נקודד את ‪ .G‬הקידוד שלנו יהיה רשימת קודקודים ממוספרים בבסיס ‪ ,2‬מופרדים‬
‫על ידי ‪ ,#‬ואחריהם‪ ,‬רשימת קשתות‪ ,‬מופרדות ב‪.$-‬‬
‫נציע את האלגוריתם הבא ב‪:pseudo − code-‬‬
‫‪Algorithm 1 Connected Graph‬‬
‫} ‪Define C = ∅, T = {v0‬‬
‫‪while T 6= ∅ do‬‬
‫) ‪v = pop(T‬‬
‫)‪push(v, C‬‬
‫‪for all u ∈ V \ (C ∪ T ) do‬‬
‫‪if E(u, v) then‬‬
‫) ‪push(u, T‬‬
‫‪if C = V then‬‬
‫‪accept‬‬
‫‪else‬‬
‫‪reject‬‬
‫‪1:‬‬
‫‪2:‬‬
‫‪3:‬‬
‫‪4:‬‬
‫‪5:‬‬
‫‪6:‬‬
‫‪7:‬‬
‫‪8:‬‬
‫‪9:‬‬
‫‪10:‬‬
‫‪11:‬‬
‫מטרתנו עכשיו היא לתאר אלגוריתם זה במכונת טיורינג‪.‬‬
‫אנו יודעים כי }‪ .Σ = {0, 1, #, $‬נציע אלפבית עבודה‪:‬‬
‫סימונים ‪Γ = Σ ∪ { } ∪ ({0, 1} × {C, T, A}) +‬‬
‫כאשר סימון הוא ביטוי מהצורה ”המכונה ‪−C‬תסמן“ או ”‪−A‬תסמן” או ” ‪−T‬תסמן“ וכו’‪ ,‬שמשמעותו היא סימון קודקודים‬
‫על ידי הפיכת התו הראשון בקידוד שלהם לתו ב‪.{h0, T /C/Ai , h1, T /C/Ai}-‬‬
‫כלומר כאשר קודקוד ‪ ,00 ∈ T‬המשמעות היא שהחלפנו את ”‪ “00‬בקידוד ”‪ .“0T 0‬נתאר את האלגוריתם לפי שלב ‪:2‬‬
‫‪44‬‬
‫‪6‬‬
‫שבוע ‪7‬‬
‫מכונת טיורינג‬
‫‪6.4‬‬
‫אי כריעות ובעיית העצירה‬
‫‪-T .1‬סמן את הקודקוד הראשון‪.‬‬
‫‪ .2‬חזור כל עוד יש קודקודים ‪-T‬מסומנים‪) .‬אתחלנו את ‪ T‬מהפסידו‪-‬קוד(‪.‬‬
‫)א( ‪-A‬סמן קודקוד ‪-T‬מסומן‪) .‬פעולת ה‪ Pop-‬בפסידו‪-‬קוד(‪.‬‬
‫)ב( עבור על רשימת הקודקודים‪ ,‬אם יש קודקוד לא מסומן‪ ,‬בדוק האם יש קשת בינו ובין הקודקוד ה‪-A-‬מסומן‪,‬‬
‫על ידי מעבר על רשימת הקשתות‪ .‬אם יש‪ ,‬אז ‪-T‬סמן את הקודקוד הנבדק‪) .‬ביצענו את הלולאה הפנימית‬
‫בפסידו‪-‬קוד(‪.‬‬
‫)ג( ‪-C‬סמן את הקודקוד ה‪ A-‬מסומן‪) .‬פעולת ה‪ Push-‬בפסידו‪-‬קוד(‪.‬‬
‫‪ .3‬אם כל הקודקודים ‪-C‬מסומנים‪ ,‬קבל‪ .‬אחרת‪ ,‬דחה‪) .‬התנאי האחרון בפסידו‪-‬קוד(‪.‬‬
‫הדוגמא שהצגנו כאן הייתה מפורטת‪ .‬לרוב נראה דוגמאות פחות מפורטות‪.‬‬
‫(‬
‫)‬
‫‪ A‬הוא ‪DFA‬‬
‫‪ .ADFA = hA, wi‬כל אוטומט אפשר לקודד בכך שנרשום את הפרמטרים‬
‫דוגמה ‪ .6.3‬נגדיר את השפה‬
‫)‪w ∈ L (A‬‬
‫שמגדירים אותו‪ :‬מצבים‪ ,‬פונק’ מעברים וכו’‪.‬‬
‫נגדיר מ“ט ‪ M‬שמכריעה את ‪ ADFA‬על ידי סמלוץ של ‪ A‬על ‪.w‬‬
‫‪ .1‬בכל צעד היא תכתוב על הסרט‪:‬‬
‫)א( מצב נכחי )מתחילה מ‪.(q0 -‬‬
‫)ב( אינדקס במילה‪.‬‬
‫‪ .2‬בכל איטרציה‪ ,‬תעדכן מצב ותגדיל אינדקס‪ ,‬על ידי חישוב ) ‪ δ (q, wi‬כאשר ‪ wi‬האות באינדקס הנוכחי ו‪ q-‬המצב הנוכחי‪.‬‬
‫‪ .3‬בסיכום הסימולציה‪ ,‬תקבל אם“ם המצב הנוכחי שייך ל‪ ,F -‬כלומר נמצא בסרט במקום שכתובים המצבים ‪.F‬‬
‫(‬
‫)‬
‫‪ A‬הוא ‪NFA‬‬
‫‪ .ANFA = hA, wi‬נגדיר מ“ט שתסמלץ תוך כדי ריצה‬
‫דוגמה ‪ .6.4‬בהמשך לדוגמא הקודמת נביט בשפה‬
‫)‪w ∈ L (A‬‬
‫את ה‪ .subest − construction-‬בכל איטרציה‪ M ,‬תכתוב על הסרט קבוצה של מצבים‪ ,‬ואינדקס‪ .‬כלומר עבור ‪ S‬על הסרט‬
‫באינדקס ‪ :i‬יתקיים ‪.δ ∗ (Q0 , w [0 . . . i]) = S‬‬
‫דרך נוחה היא להסתכל על זה כמכונה עם כמה סרטים‪ ,‬במקום תו מפריד‪ ,‬כמו שראינו בתרגול )ראו ‪.(19.1‬‬
‫‪6.4‬‬
‫אי כריעות ובעיית העצירה‬
‫נראה כיצד לקבוע האם ניתן להכריע שפה‪.‬‬
‫∈ ‪.L‬‬
‫משפט ‪ .6.3‬יש שפה ∗‪ L ⊆ Σ‬כך ש‪/ R-‬‬
‫הוכחה‪) .‬משיקולי ספירה( קיימות ‪ 2ℵ0‬שפות ∗‪ ,L ⊆ Σ‬שכן ‪.|Σ∗ | = ℵ0‬‬
‫בנוסף‪ ,‬יש רק ‪ ℵ0‬מ“ט‪ ,‬שכן כל מ“ט היא מהצורה ‪ M = hΣ, Γ, Q, q0 , δ, qacc , qrej i‬ולכן ניתן לקודד את ‪ M‬ע“י מילה‬
‫ב‪ .{0, 1, #, $}-‬כלומר קיימת העתקה‬
‫∗‬
‫}‪ f : TM → {0, 1, #, $‬חח“ע ועל‪.‬‬
‫ממשפט קנטור‪ 2ℵ0 > ℵ0 ,‬ולכן אנחנו מסיקים שיש יותר שפות ממכונות טיורינג‪ ,‬ולכן קיימת שפה ‪ L‬כך שלא קיימת מכונת‬
‫∈ ‪.L‬‬
‫טיורינג שמקבלת או מכריעה אותה‪ .‬בפרט‪/ R ,‬‬
‫‪45‬‬
‫‪6‬‬
‫מכונת טיורינג‬
‫שבוע ‪7‬‬
‫)‬
‫הגדרה ‪ .6.13‬נגדיר את השפה‬
‫‪ M‬היא מ״ט‬
‫) ‪w ∈ L (M‬‬
‫‪6.4‬‬
‫אי כריעות ובעיית העצירה‬
‫(‬
‫‪hM, wi‬‬
‫= ‪.ATM‬‬
‫נראה הוכחה שימושית יותר למשפט הקודם‪ ,‬שמצביעה על שפה שאינה כריעה‪.‬‬
‫הוכחה‪) .‬קונסטרוקטיבית(‬
‫‪10‬‬
‫נביט בשפה ‪ .ATM‬נראה שלא קיימת מכונת טיורינג שמכריעה אותה‪ .‬נראה ש‪ ATM ∈ RE-‬אבל‬
‫∈ ‪ ,ATM‬שכן ‪.coRE ∩ RE = R‬‬
‫לא ב‪ ,R-‬מכאן גם ינבע ש‪/ coRE-‬‬
‫נגדיר מ“ט ‪ M1‬שמזהה את ‪ ATM‬באופן הבא‪ .‬בהינתן ‪ M‬ו‪ ,w-‬מריצה )מסמלצת( את ‪ M‬על ‪ w‬ועונה כמותה‪.‬‬
‫אם ‪ M‬מקבלת את ‪ w‬אז ‪ M1‬תקבל את ‪ .hM, wi‬אם ‪ M1‬מקבלת את ‪ hM, wi‬אז ‪ M‬בהכרח מקבלת את ‪ .w‬ייתכן‬
‫ש‪ M1 -‬תתקע‪ ,‬זה יקרה רק אם ‪ M‬לא מקבלת את ‪.w‬‬
‫‪‬‬
‫‪acc M (w) = acc‬‬
‫= )‪ ,H (hM i , w‬ומתקיים‬
‫∈ ‪ .ATM‬נניח בשלילה שיש מ“ט ‪ H‬שמכריעה את ‪ .ATM‬אזי‬
‫נראה ש‪/ R-‬‬
‫‪rej M (w) 6= acc‬‬
‫‪ M (w) 6= acc‬אם }⊥ ‪ M (w) ∈ {rej,‬כאשר ⊥ מסמן אי‪-‬עצירה‪.‬‬
‫נבנה מ‪ H-‬מ“ט ‪ D‬המקבלת כקלט מכונה ‪ M‬ואת הקידוד שלה כמילה‪ ,‬כלומר‬
‫‪‬‬
‫‪acc M (hM i) = acc‬‬
‫= )‪D (hM i) = H (hM i , hM i‬‬
‫‪rej M (hM i) 6= acc‬‬
‫‪D‬‬
‫‪D‬‬
‫נגרום ל‪” D-‬להתבלבל“‪ .‬מ‪ D-‬נבנה מכונה ̃‪ D‬על ידי החלפת‬
‫‪ ,qrej‬כלומר‬
‫‪ qacc‬ב‪-‬‬
‫‪‬‬
‫‪rej‬‬
‫‪M (hM i) = acc‬‬
‫‪acc M (hM i) 6= acc‬‬
‫‪D E‬‬
‫̃‪D‬‬
‫מה הוא‬
‫= )‪D̃ (hM i‬‬
‫̃‪ ?D‬מתקיים כי‬
‫‪‬‬
‫‪D E‬‬
‫̃‪D E rej D̃ D‬‬
‫‪= acc‬‬
‫‪D E‬‬
‫̃‪D̃ D‬‬
‫=‬
‫̃‪acc D̃ D‬‬
‫‪6= acc‬‬
‫קיבלנו סתירה‪.‬‬
‫הוכחה זו קשורה לאלכסון של קנטור‪.‬‬
‫‪10‬ההוכחה שימושית יותר‪ ,‬כיוון שבזכות השפה ‪ ATM‬נוכל להוכיח ששפות אחרות אינן ב‪ ,R-‬באמצעות רדוקציה אלי‪ .‬זאת נראה במפורט בהמשך‪.‬‬
‫‪46‬‬
‫הרצאה ‪7‬ב‬
‫‪6‬‬
‫מכונת טיורינג‬
‫‪6.4‬‬
‫שבוע ‪7‬‬
‫אי כריעות ובעיית העצירה‬
‫האלכסון של קנטור‬
‫קנטור הוכיח ש‪ 2ℵ0 > ℵ0 -‬ע“י הנחה בשלילה שיש סידור של ‪ 2N‬שנסמנו ‪ .s1 , s2 , . . .‬נסתכל על הגריד הבא‪ ,‬כאשר‬
‫‪...‬‬
‫‪4‬‬
‫‪5‬‬
‫···‬
‫‪3‬‬
‫‪2‬‬
‫∈‪j‬‬
‫‪/ si‬‬
‫×‪‬‬
‫= )‪:si (j‬‬
‫‪1‬‬
‫)‪s1 (3‬‬
‫)‪s1 (2‬‬
‫)‪s1 (1‬‬
‫‪s1‬‬
‫)‪s2 (3‬‬
‫)‪s2 (2‬‬
‫)‪s2 (1‬‬
‫‪s2‬‬
‫)‪s3 (3‬‬
‫)‪s3 (2‬‬
‫)‪s3 (1‬‬
‫‪s3‬‬
‫)‪s4 (4‬‬
‫‪s4‬‬
‫‪..‬‬
‫‪.‬‬
‫)‪s5 (5‬‬
‫‪.‬‬
‫‪j ∈ si‬‬
‫‪‬‬
‫✓‪‬‬
‫‪s5‬‬
‫‪..‬‬
‫‪.‬‬
‫‪..‬‬
‫∈ ‪ .∀i ∈ N : i ∈ S ⇐⇒ i‬קל לראות ש‪ ,S ∈ 2N -‬וכן‪ ,‬לכל ‪ i ∈ N‬מתקיים‬
‫נתבונן בקבוצה ”דואלית לאלכסון“‪ ,S ,‬המוגדרת על ידי ‪/ si‬‬
‫∈‪S‬‬
‫∈ ‪ S‬לא נמצאת באף מקום בסידור שלנו של ‪ ,s1 , s2 , . . .‬כלומר ‪/ 2N‬‬
‫∈ ‪ ,i ∈ S ⇔ i‬ולכן ‪/ 2N‬‬
‫‪ S 6= si‬שכן מהגדרת ‪ ,S, si‬מתקיים ‪/ si‬‬
‫בסתירה להנחה‪.‬‬
‫הוכחה מסוג זה נקראית ”הוכחה בלכסון“‪.‬‬
‫בהוכחה שלנו‪ ,‬הסתכלנו על הטבלה של כל המ“ט ‪ M1 , M2 , . . .‬וניתן לעשות זאת‪ ,‬היות שיש ‪ ℵ0‬מכונות טיורינג‪ .‬מכאן אפשר להסתכל על‬
‫⟩ ‪⟨M5‬‬
‫‪...‬‬
‫⟩ ‪⟨M4‬‬
‫⟩ ‪⟨M3‬‬
‫⟩ ‪⟨M2‬‬
‫⟩ ‪⟨M1‬‬
‫)⟩ ‪M1 (⟨M1‬‬
‫)⟩ ‪M2 (⟨M2‬‬
‫)⟩ ‪M3 (⟨M3‬‬
‫)⟩ ‪M4 (⟨M4‬‬
‫‪M2‬‬
‫‪M3‬‬
‫‪M4‬‬
‫)⟩ ‪M5 (⟨M5‬‬
‫‪.‬‬
‫‪M1‬‬
‫‪M5‬‬
‫‪..‬‬
‫‪.‬‬
‫‪..‬‬
‫כאשר )‪ M (hM i‬מוגדר כאן כ‪ acc-‬בקבלה ו‪ rej-‬בכל מקרה אחר )כולל אי‪-‬עצירה(‪ .‬על כן‪ ,‬נוכל להסתכל על ‪ H‬שהיא מכונה שממלאת‬
‫את הטבלה‪ ,‬כלומר )‪ H (hM i‬מגדירה לנו האם )‪ Mi (hMj i‬מקבל או דוחה )או לא עוצר(‪ .‬עתה‪ D ,‬היא המכונה המגדירה את האלכסון‪,‬‬
‫ואז בהוכחה הגדרנו את ̃‪ D‬שהיא דואלית לאלכסון‪ ,‬וזו סתירה‪ ,‬היות ש‪ D̃-‬גם היא מ“ט ולכן אמורה להיות גם בטבלה‪ ,‬כלומר להסכים‬
‫עם האלכסון לפחות בתא אחד‪.‬‬
‫מסקנה ‪ R 6= RE .6.3‬ולכן גם ‪.coRE 6= RE‬‬
‫בעיית העצירה‬
‫ברגע שמצאנו שפה אחת שלא ב‪ ,R-‬קל למצוא נוספות‪ .‬נחקור את הבעיה הבאה‪ ,‬הקשורה לשפה שראינו לפני רגע‪.‬‬
‫הגדרה ‪ .6.14‬נגדיר את השפה } ‪ M‬עוצרת על ‪.HALTTM = {hM, wi | w‬‬
‫∈ ‪.HALTTM‬‬
‫משפט ‪/ R .6.4‬‬
‫הוכחה‪ .‬נטען שלו הייתה מכונה ‪ M2‬שמכריעה את ‪ ,HALTTM‬אז הייתה מכונה ‪ M1‬שמכריעה את ‪ ,ATM‬באופן הבא‪.‬‬
‫בהינתן ‪ ,hM, wi‬המכונה ‪ M1‬תפעל באופן הבא‪.‬‬
‫‪47‬‬
‫‪6‬‬
‫מכונת טיורינג‬
‫שבוע ‪7‬‬
‫‪6.4‬‬
‫אי כריעות ובעיית העצירה‬
‫‪ M1 .1‬מריצה את ‪ M2‬על ‪.hM, wi‬‬
‫)א( אם ‪ M2‬עצרה ודחתה‪ M1 ,‬דחתה גם‪ ,‬כי ‪.M (w) 6= acc‬‬
‫)ב( אחרת‪ ,‬אם ‪ M2‬עצרה וקיבלה‪ ,‬אז ‪ M1‬מריצה את ‪ M‬על ‪ w‬ללא חשש ששתתקע‪ ,‬ועונה כמו ‪ M‬על ‪.w‬‬
‫∈ ‪.ATM‬‬
‫מכאן ‪ M1‬מכריעה את ‪ ,ATM‬בסתירה לכך ש‪/ R-‬‬
‫בהוכחה הראנו ש‪ ,HALTTM ∈ R ⇒ ATM ∈ R-‬ולכן במקום לדבר על ‪ HALTTM‬הסתכלנו על ‪ .ATM‬דבר זה ניתן להכליל‬
‫למושג ה‪“-‬רדוקציה“‪ ,‬שם במקום לדבר על שפה אחת‪ ,‬נתבונן על שפה אחרת שאנו מכירים‪ ,‬ונגיע לסתירה לפי ההנחה על‬
‫השפה המקורית‪ .‬למעשה‪ ,‬במדעי המחשב אנחנו משתמשים לרוב ברדוקציה כדי לומר דברים טובים על שפות‪ ,‬אך כאן אנו‬
‫נעשה את הדבר ההפוך ‪ -‬נשתמש בתכונה ”רעה“ של שפה‪ ,‬כדי להוכיח תכונה של שפה אחרת‪ ,‬ברדוקציה‪.‬‬
‫‪48‬‬
‫‪7‬‬
‫שבוע ‪8‬‬
‫רדוקציות‬
‫‪ 7‬רדוקציות‬
‫‪7.1‬‬
‫רדוקציות מיפוי‬
‫נמשיך לדבר על מה מחשבים יכולים לעשות ומה לא‪ ,‬ולשם כך נציג הגדרה‪:‬‬
‫הגדרה ‪ .7.1‬נאמר כי ∗‪ f : Σ∗ → Σ‬היא פונק’ ניתנת לחישוב )‪ ,(computable − function‬אם קיימת מ“ט ‪Mf‬‬
‫שבהינתן קלט ‪ x‬עוצרת עם )‪ f (x‬על הסרט‪.‬‬
‫דוגמה ‪ f : N × N → N .7.1‬המוגדרת על ידי ‪ .f (x, y) = x + y‬הקלטים יהיו נתונים בקידוד ‪ .x#y‬אם הקלטים נתונים‬
‫באונרית‪ ,‬כלומר הם מהצורה ‪ ,11111#111‬המכונה תמחק את ‪ #‬ותזיז את ‪ y‬מקום אחד שמאלה‪ .‬אם הקלט נתון בבינארית‬
‫)או בבסיס אחר(‪ ,‬נוכל לעשות זאת על ידי חיבור ארוך‪.‬‬
‫כלומר ‪ f‬היא פונק’ ניתנת לחישוב )פנ“ל(‬
‫דוגמה ‪ f : TM → TM .7.2‬המוגדרת ע“י ‪ f (hM i) = hM ′ i‬כך ש‪ L (M ) = L (M ′ )-‬ו‪ M ′ -‬לא עוצרת על קלטים שאינם‬
‫ב‪ .L (M )-‬גם היא פנ“ל‪ ,‬שכן ‪ Mf‬תוסיף מצב ‪ ,qloop‬תשנה מעברים שהלכו ל‪ qrej -‬שילכו ל‪ qloop -‬ותוסיף חוג עצמי ל‪.qloop -‬‬
‫במילים אחרות‪ ,‬היא תערוך את הקידוד של ‪ ,hM i‬בפרט כל הופעה של ‪ qrej‬בקידוד של ‪ δ‬תוחלף ב‪.qloop -‬‬
‫הגדרה ‪ .7.2‬עבור שתי שפות ∗‪ ,A, B ⊆ Σ‬נאמר ש‪ A-‬ניתנת לרידוקציית מיפוי ל‪,(A is mapping reducible to B) B-‬‬
‫ונסמן ‪ , A ≤m B‬אם קיימת פנ“ל ∗‪ f : Σ∗ → Σ‬כך שלכל ∗‪ w ∈ Σ‬מתקיים ‪. w ∈ A ⇐⇒ f (w) ∈ B‬‬
‫במילים אחרות‪ ,‬אפשר לשאול שאלות על שייכות ל‪ B-‬במקום על שייכות ל‪ .A-‬למשל‪ ,‬אם }‪,A = {x : |x| ≤ 5} , B = {x : |x| ≤ 10‬‬
‫אזי ‪ y ∈ A‬אם“ם ‪ ,f (y) = 2y ∈ B‬לכן כדי להגיד האם ‪ y ∈ A‬מספיק להכריע האם ‪.f (y) ∈ B‬‬
‫‪B‬‬
‫‪A‬‬
‫‪f‬‬
‫‪f‬‬
‫‪f‬‬
‫‪f‬‬
‫‪f‬‬
‫שימו לב כיצד באיור הקודם‪ ,‬במיפוי‪-‬רידוקציה ‪ f‬יכולים להופיע החצים השחורים והם תקינים )החץ יוצא מ‪ A-‬אם“ם הוא‬
‫נכנס ל‪ ,(B-‬אך החצים האדומים הם בעיתיים ולא יכולים להופיע ברדוקציה‪.‬‬
‫אינטואיטיבית‪ A ≤m B ,‬גורר ש‪” A-‬קלה לחישוב“ מ‪ ,B-‬את זאת נפרמל באופן הבא‪.‬‬
‫משפט הרדוקציה ל‪R-‬‬
‫משפט‪ .‬לכל ∗‪ A, B ⊆ Σ‬אם ‪ A ≤m B‬ו‪ B ∈ R-‬אזי ‪) .A ∈ R‬ובאופן דומה עבור ‪(RE, coRE‬‬
‫‪49‬‬
‫הרצאה ‪8‬א‬
‫‪7‬‬
‫רדוקציות‬
‫‪7.1‬‬
‫שבוע ‪8‬‬
‫רדוקציות מיפוי‬
‫הוכחה‪ .‬מההנחה‪ ,‬קיימות מ“ט ‪ MB‬שמכריעה את ‪ B‬ומ“ט ‪ Mf‬שמחשבת רדוקציה מ‪ A-‬ל‪ .B-‬נבנה מ“ט ‪ MA‬שמכריעה‬
‫את ‪ .A‬בהינתן קלט ∗‪ MA ,w ∈ Σ‬מריצה את ‪ Mf‬על ‪ ,w‬ואז מריצה את ‪ MB‬על התוצאה )‪ f (w‬ועונה כמותה‪.‬‬
‫נשים לב ש‪ MA -‬עוצרת על כל קלט כי ‪ Mf , MB‬עוצרות על כל קלט‪ .‬מצד שני‪ MA ,‬נכונה כי ‪f (w) ∈ B ⇐⇒ w ∈ A‬‬
‫אם“ם ‪ MB‬מקבלת את )‪.f (w‬‬
‫הערה ‪ .7.1‬מאוד קל לזכור את המשפט על ידי הבנה של ההוכחה ‪ A ≤m B -‬גורר שיש ‪ f‬פנ“ל כך ש‪w ∈ A ⇐⇒ f (w) ∈ B-‬‬
‫לכן בהינתן ‪ B ∈ R‬וקלט ∗‪ w ∈ Σ‬אפשר לחשב את )‪ f (w‬ולבדוק אם היא ב‪ .B-‬מצד שני‪ ,‬אם ‪ ,A ∈ R‬אז בהינתן קלט‬
‫∗‪ w ∈ Σ‬עלינו להפעיל את )‪ ,f −1 (w‬ולא ידוע כיצד לחשב אותה‪ ,‬והאם היא בכלל קיימת‪.‬‬
‫∈ ‪.B‬‬
‫∈ ‪ A‬אז ‪/ R‬‬
‫מסקנה ‪ .7.1‬אם ‪ A ≤m B‬ו‪/ R-‬‬
‫הוכחה‪ .‬לכל שתי טענות ‪ ,α ⇒ β ⇐⇒ ¬β ⇒ ¬α‬ולכן המסקנה נובעת מהמשפט‪ .‬אינטואיטיבית‪ ,‬אם ‪ A‬קלה יותר מ‪B-‬‬
‫ולא ניתן להכריע אותה‪ ,‬אז גם לא ניתן להכריע שפות קשות יותר )כמו ‪.(A‬‬
‫∈ ‪.HALTTM‬‬
‫טענה ‪/ R .7.1‬‬
‫∈ ‪ .ATM‬לכן מספיק להראות ש‪ .ATM ≤m HALTTM -‬נסמן ב‪ INPUTSATM -‬את הקלטים האפשריים‬
‫הוכחה‪ .‬אנחנו יודעים ש‪/ R-‬‬
‫ל‪ ATM -‬וב‪ INPUTSHALTTM -‬את הקלטים ל‪.HALTTM -‬‬
‫נבנה אם כך ‪ f : INPUTSATM → INPUTSHALTTM‬המקיימת ‪ f (hM, wi) = hM ′ , w′ i‬כך ש‪ M -‬מקבלת את ‪ w‬אם“ם ‪M ′‬‬
‫עוצרת על ‪.w′‬‬
‫בהינתן ‪ hM, wi‬הפונקציה ‪ f‬תחזיר ‪ w′ = w‬ו‪ M ′ -‬היא כזו ש‪ .L (M ) = L (M ′ )-‬כמו כן‪ M ′ ,‬לא עוצרת על מילים שאינן‬
‫בשפה ‪ -‬איך לבנות ‪ M ′‬כזו כבר ראינו בדוגמה ‪ .7.2‬נוכיח את נכונות הרדוקציה‪ .‬מתקיים‪:‬‬
‫‪ f .1‬ניתנת לחישוב‪ ,‬שכן התיאור של ‪ M ′‬מתקבל אחרי מספר סופי של צעדים מהתיאור של ‪ M‬ו‪.w = w′ -‬‬
‫‪ ,hM, wi ∈ ATM ⇐⇒ hM ′ , w′ i ∈ HALTTM .2‬שכן אם ‪ hM, wi ∈ ATM‬אזי ‪ M ′‬עוצרת על ‪.w‬‬
‫אחרת‪ ,‬אם‬
‫∈ ‪ hM, wi‬אזי אם ‪ M‬לא עצרה על ‪ ,w‬אז ‪ M ′‬לא עצרה על ‪ w′‬ואם ‪ M‬דחתה את ‪ ,w‬אז ‪ M ′‬תגיע ל‪qloop -‬‬
‫‪/ ATM‬‬
‫ותתקע על ‪.w′‬‬
‫מכאן ‪ ,ATM ≤m HALTTM‬כנדרש‪.‬‬
‫הגדרה ‪ .7.3‬נגדיר את השפה } ‪ M‬עוצרת על ‪.HALTεTM = {hM i | ε‬‬
‫קל לראות ש‪ ,HALTεTM ∈ RE-‬אבל האם היא ניתנת להכרעה?‬
‫∈ ‪.HALTεTM‬‬
‫טענה ‪/ R .7.2‬‬
‫∈ ‪ .HALTεTM‬לשם כך נמצא פנ“ל ‪.f : INPUTSHALTTM → INPUTSHALTεTM‬‬
‫הוכחה‪ .‬נראה ש‪ HALTTM ≤m HALTεTM -‬ונסיק ‪/ R‬‬
‫נבנה מכונה ‪ Mf‬שמחשבת את הרדוקציה‪ Mf .‬תפעל כך‪:‬‬
‫בהינתן ‪ ,M, w‬המכונה ‪ Mf‬תכתוב על הסרט קידוד של מכונה‬
‫‪Mw′‬‬
‫שפועלת על קלט ‪ x‬באופן הבא‪:‬‬
‫‪ .1‬כותבת על הסרט ‪ w‬במקום ‪.x‬‬
‫‪ .2‬מריצה את ‪ M‬על ‪.w‬‬
‫נבחין שאכן כל הפעולות שביצענו ניתנות לביצוע ע“י מ“ט‪ ,‬כי רק הוספנו מצבים שמוחקים את הסרט‪ ,‬כותבים עליו את ‪w‬‬
‫ועוברים למצב ההתחלתי של ‪ .M‬בנוסף‪ M ,‬עוצרת על ‪ w‬אם“ם ‪ Mw′‬עוצרת על ‪ ,ε‬כי ‪ Mw′‬מסמלצת ריצה של ‪ M‬על ‪,w‬‬
‫וסיימנו‪.‬‬
‫‪50‬‬
‫‪7‬‬
‫רדוקציות‬
‫‪7.1‬‬
‫שבוע ‪8‬‬
‫רדוקציות מיפוי‬
‫הערה‪ .‬אפשר להוכיח בקלות ש‪ ,HALTεTM ≤m HALTTM -‬באמצעות הפונק’ ‪ .f (hM, εi) = hM, εi‬אך זה לא היה עוזר לנו‪,‬‬
‫∈ ‪ ,HALTεTM‬ומרדוקציה זו לא נוכל להסיק זאת )אנחנו רוצים רדוקציה בכיוון ההפוך(‪.‬‬
‫כי אנו רוצים להוכיח ש‪/ R-‬‬
‫הגדרה ‪ .7.4‬נגדיר את השפה }‪.REGTM = {hM i | L (M ) ∈ REG‬‬
‫∈ ‪.REGTM‬‬
‫טענה ‪/ R .7.3‬‬
‫הוכחה‪ .‬נראה ש‪ ,ATM ≤m REGTM -‬כלומר נראה שיש פנ“ל ‪ f‬שמהווה רדוקציה‪ ,‬כלומר‪:‬‬
‫‪f : INPUTS ATM → INPUTS REGTM‬‬
‫‪M′‬‬
‫‪M,w‬‬
‫כך שאם ‪ f (hM, wi) = hM ′ i‬אז ‪ M‬מקבלת את ‪ w‬אם“ם השפה של ‪ M ′‬רגולרית‪.‬‬
‫בהינתן ‪ ,M, w‬הרדוקציה ‪ f‬תחזיר ‪ M ′‬מעל א“ב }‪) {0, 1‬סתם בחרנו א“ב כלשהו( שפועלת על קלט‬
‫∗‬
‫)‪ x ∈ (0 + 1‬באופן‬
‫הבא‪:‬‬
‫‪ .1‬אם }‪ x ∈ {0n 1n | n ≥ 0‬אזי ‪ M ′‬מקבלת את ‪.x‬‬
‫‪ .2‬אחרת‪ M ′ ,‬מריצה את ‪ M‬על ‪ w‬ועונה כמוה‪.‬‬
‫נשים לב שהפונקציה ‪) f‬שמגדירה את ‪ Mf‬שמחשבת את ‪ (M ′‬ניתנת לחישוב‪.‬‬
‫נטען כי הרדוקציה נכונה‪ ,‬כלומר ‪.hM ′ i ∈ REGTM ⇐⇒ hM, wi ∈ ATM‬‬
‫אם ‪ M‬מקבלת את ‪ w‬אזי לכל‬
‫∗‬
‫)‪ x ∈ (0 + 1‬מתקיים כי ‪) M ′‬מאל א“ב }‪ ({0, 1‬תקבל את ‪ ,x‬שכן או שהיא תקבל‬
‫במקרה הראשון‪ ,‬או במקרה השני‪ .‬לכן‬
‫∗‬
‫‪′‬‬
‫)‪ L (M ) = (0 + 1‬רגולרית‪.‬‬
‫∗‬
‫‪′‬‬
‫אחרת‪ ,‬אם ‪ M‬לא מקבלת את ‪ ,w‬אזי לכל מילה )‪ x ∈ (0 + 1‬מתקיים כי ‪ M‬מקבלת את ‪ x‬אם“ם }‪x ∈ {0 1 | n ≥ 0‬‬
‫‪n n‬‬
‫כלומר אם“ם }‪) L (M ′ ) = {0n 1n | n ≥ 0‬וזו שפה לא רגולרית(‪ .‬לכן הרדוקציה נכונה‪.‬‬
‫הערה ‪ .7.2‬בהוכחה יכולנו לבחור כל שפה לא רגולרית אחרת הניתנת להכרעה‪ ,‬ולא בהכרח את }‪.{0n 1n | n ≥ 0‬‬
‫כמו שהוכחנו את משפט הרדוקציה עבור ‪ ,R‬אפשר לנסח משפטי רדוקציה דומים עבור ‪ ,RE, coRE‬אותם נוכיח בתרגול‪.‬‬
‫∈ ‪.REGTM‬‬
‫מסקנה ‪/ RE, coRE .7.2‬‬
‫∈ ‪ .ATM‬כמו כן‪ ,‬ראינו כי ‪ ,ATM ≤m REGTM‬ולכן‬
‫∈ ‪ ,ATM‬שכן ‪ ATM ∈ RE‬אבל ‪/ R‬‬
‫הוכחה‪ .‬ראשית‪ ,‬נבחין כי ‪/ coRE‬‬
‫∈ ‪ REGTM‬ממשפט הרדוקציה ל‪.coRE-‬‬
‫‪/ coRE‬‬
‫∈ ‪ .ATM‬אם כך‪ ,‬נראה כי ‪.ATM ≤m REGTM‬‬
‫∈ ‪ ATM‬כי ‪/ coRE‬‬
‫∈ ‪ .REGTM‬ידוע ש‪/ RE-‬‬
‫נותר להוכיח ש‪/ RE-‬‬
‫נשים לב שלכל שתי שפות ‪ ,A, B‬מתקיים כי ‪ A ≤m B‬אם“ם ‪.A ≤m B‬‬
‫שכן‪ ,‬אם ∗‪ f : Σ∗ → Σ‬היא כזו‬
‫∈ ‪ ,w‬כלומר הרדוקציה היא עם אותה פנ“ל‪.‬‬
‫∈ )‪/ A ⇐⇒ f (w‬‬
‫ש‪ w ∈ A ⇐⇒ f (w) ∈ B-‬אזי ‪/ B‬‬
‫‪′‬‬
‫מכאן נובע כי מספיק להראות ש‪ .ATM ≤m REGTM -‬נבנה ‪ f (M, w) = M ′‬כך ש‪ M -‬מקבלת את ‪ w‬אם“ם ) ‪ L (M‬לא‬
‫רגולרית‪ .‬על קלט‬
‫∗‬
‫)‪ x ∈ (0 + 1‬המכונה ‪ M ′‬תפעל כך‪.‬‬
‫‪ .1‬אם }‪ x ∈ {0n 1n | n ≥ 0‬אזי ‪ M ′‬מריצה את ‪ M‬על ‪ w‬ועונה כמוה‪.‬‬
‫‪ .2‬אחרת‪ M ′ ,‬דוחה את ‪.x‬‬
‫לכן אם ‪ M‬מקבלת את ‪ w‬אזי }‪ ,L (M ′ ) = {0n 1n | n ≥ 0‬כי אז כל המילים }‪ x ∈ {0n 1n | n ≥ 0‬תתקבלה בשלב ‪.2‬‬
‫אחרת‪ ,‬אם ‪ M‬לא מקבלת את ‪ w‬אז ∅ = ) ‪ L (M ′‬והיא רגולרית‪.‬‬
‫‪51‬‬
‫‪7‬‬
‫רדוקציות‬
‫‪7.1‬‬
‫שבוע ‪8‬‬
‫רדוקציות מיפוי‬
‫ניזכר בבעיית ריצוף האריחים )‪ .(0.4‬אמרנו שאין אלגוריתם שיודע להגיד האם לכל ‪ n ∈ N‬ניתן לרצף באופן חוקי ריבוע‬
‫בגודל ‪,n × n‬‬
‫‪11‬‬
‫ועכשיו יש לנו הכלים להוכיח זאת‪ .‬קודם נתאר פורמלית את הבעיה‪:‬‬
‫הגדרה ‪ .7.5‬נגדיר את השפה }יש ריצוף חוקי ‪ ,TILE = {hT, H, V, t0 i : ∀n ≥ 1 n × n‬כאשר ‪ T‬מתאר את קבוצת‬
‫האריחים )קבוצה סופית(‪ H ⊆ T × T ,‬היא קבוצת תנאי השכנות האופקיים ו‪ V ⊆ T × T -‬היא קבוצת תנאי השכנות‬
‫האנכיים‪ ,‬ו‪.t0 ∈ T -‬‬
‫ריצוף חוקי ‪ n × n‬הוא ‪ f : {1, . . . , n} × {1, . . . , n} → T‬כך ש‪ f (1, 1) = t0 -‬ובנוסף מתקיימים האילוצים האנכיים‬
‫והאופקיים‪:‬‬
‫‪(f (i, j) , f (i + 1, j)) ∈ H‬‬
‫‪(f (i, j) , f (i, j + 1)) ∈ V‬‬
‫‪1 ≤ ∀i ≤ n − 1‬‬
‫‪1 ≤ ∀j ≤ n‬‬
‫‪1 ≤ ∀i ≤ n‬‬
‫‪1 ≤ ∀j ≤ n − 1‬‬
‫נשים לב ש‪ TILE ∈ coRE-‬כי ‪ TILE ∈ RE‬שכן ‪ TILE‬היא קבוצת האריחים )והחוקים( כך שקיים ‪ n ≥ 1‬כך שאין‬
‫ריצוף חוקי ‪ .n × n‬אנחנו אכן יכולים לבנות מ“ט ‪ M‬שמזהה את ‪ M - TILE‬תעבור על כל ‪ n‬ותנסה את כל הריצופים‬
‫האפשריים‪ ,‬שכן יש‬
‫‪n2‬‬
‫| ‪ |T‬אפשרויות‪ .‬אם יש ריצוף חוקי‪ ,‬היא תעבור ל‪ n-‬הבא‪ .‬אם אין ריצוף חוקי‪ ,‬היא תקבל את‬
‫קבוצת האריחים‪ .‬קל להשתכנע מהתיאור הזה שאכן ‪ .L (M ) = TILE‬נשים לב שאם יש ריצוף חוקי לכל ‪ n‬אז ‪ M‬לא‬
‫תעצור ולכן אנחנו יכולים להסיק רק ‪.TILE ∈ RE‬‬
‫∈ ‪ ,TILE‬אך קודם עלינו לבצע הבחנה חשובה‪:‬‬
‫אנו נראה שמתקיים ‪/ RE‬‬
‫הבחנה הגדרה שקולה ל‪ TILE-‬היא קבוצת כל הרביעיות ‪ hT, H, V, t0 i‬כך שקיים ריצוף חוקי של כל ‪) N × N‬ולא סתם‬
‫שיש ריצוף חוקי ‪ n × n‬לכל ‪.(n‬‬
‫הכיוון הראשון של השקילות קל‪ ,‬אם יש ריצוף חוקי של ‪ N × N‬אז בפרט לכל ‪ n‬יש ריצוף חוקי ‪) n × n‬פשוט נסתכל על‬
‫הריבוע ‪ n × n‬בריצוף החוקי של ‪.(N × N‬‬
‫למה הכיוון השני נכון? זה נובע מהלמה של קניג )‪:(K önig‬‬
‫הלמה של קניג‬
‫משפט‪ .‬בעץ מכוון אינסופי עם דרגת פיצול סופית )כלומר כל קודקוד הוא מדרגה סופית(‪ ,‬יש מסלול אינסופי‪.‬‬
‫אם לכל ‪ n‬יש ריצוף חוקי ‪ ,n × n‬אז אנחנו יכולים לבנות עץ עם אינסוף רמות בו הרמה ה‪ k-‬היא כל הריצופים החוקיים‬
‫בגודל ‪ ,k × k‬כך שכל איבר ‪ R‬ברמה ה‪ k − 1-‬מחברים בקשת לאיברים ‪ R′‬ברמה ה‪ k-‬כך שהריצוף של ‪ R′‬מתקבל מהריצוף‬
‫‪ R‬באמצעות הוספת אריחים בשורה ה‪ k-‬והעמודה ה‪ .k-‬למשל‪ ,‬נוכל לקבל עץ כזה )אין משמעות לשמות האריחים‪ ,‬זו רק‬
‫דוגמה(‪:‬‬
‫‪11‬ניתן להכריע זאת לכל בחירה של ‪ n‬ספציפי‪ ,‬למשל ע“י מעבר על כל האפשרויות‪ ,‬אך לא ניתן להכריע זאת לכל ה‪-n-‬ים‪ ,‬כי יש אינסוף כאלה‪.‬‬
‫‪52‬‬
‫הרצאה ‪8‬ב‬
‫‪7‬‬
‫רדוקציות‬
‫‪7.1‬‬
‫שבוע ‪8‬‬
‫רדוקציות מיפוי‬
‫‪..‬‬
‫‪.‬‬
‫‪t0‬‬
‫···‬
‫‪1‬‬
‫‪1‬‬
‫‪..‬‬
‫‪.‬‬
‫···‬
‫‪t4‬‬
‫‪t3‬‬
‫‪2‬‬
‫‪t2‬‬
‫‪t0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪1‬‬
‫‪..‬‬
‫‪.‬‬
‫···‬
‫‪t2‬‬
‫‪t1‬‬
‫‪2‬‬
‫‪t1‬‬
‫‪t0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪1‬‬
‫‪..‬‬
‫‪.‬‬
‫‪..‬‬
‫‪.‬‬
‫‪...‬‬
‫···‬
‫‪t2‬‬
‫‪t4‬‬
‫‪t5‬‬
‫‪3‬‬
‫‪t3‬‬
‫‪t2‬‬
‫‪t1‬‬
‫‪2‬‬
‫‪t1‬‬
‫‪t1‬‬
‫‪t0‬‬
‫‪1‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫ושימו לב כיצד בסגול אנחנו רואים שהריצוף הוא תת‪-‬ריצוף של הבן בעץ‪.‬‬
‫בעץ הזה‪ ,‬שהוא אינסופי וקשיר )כי מההנחה לכל ‪ n‬יש ריצוף חוקי(‪ ,‬כל קודקוד הוא מדרגה סופית ‪ -‬כל קודקוד מתחבר‬
‫רק לריצופים תקינים שנמצאים ברמה מתחתיו ומכילים אותו‪ ,‬ויש כמובן רק כמות סופית‪ .‬לכן‪ ,‬מהלמה של קניג יש מסלול‬
‫אינסופי‪ ,‬והמסלול הזה מגדיר לנו ריצוף חוקי של ‪.N × N‬‬
‫למה צריך את הלמה של קניג? למה אי אפשר להסיק ישירות שקיים ריצוף חוקי של ‪ ?N × N‬יכול להיות שהייתם‬
‫רוצים לבוא ולהגיד ”בגלל שיש ריצוף חוקי עבור ‪ n = 1‬נשתמש בו‪ ,‬ואז לשורה והעמודה הבאה נוסיף אריחים הריצוף‬
‫חוקי של ‪ n = 2‬ואז נוסיף אריחים מריצוף חוקי של ‪ n = 3‬וכן הלאה‪ ...‬הבעיה בכך היא שבלי הלמה של קניג לא !‬
‫ניתן היה להניח שכל אחד מהריצופים שדיברנו עליהם כאן‪ ,‬מוכלים אחד בשני‪.‬‬
‫∈ ‪.TILE‬‬
‫עכשיו אנחנו מוכנים להוכיח ש‪/ RE-‬‬
‫∈ ‪) HALTεTM‬ראינו ש‪∈ RE\R-‬‬
‫נשים לב ש‪/ RE-‬‬
‫‪.(HALTεTM‬‬
‫לכן‪ ,‬מספיק להראות ש‪≤m TILE-‬‬
‫‪ε‬‬
‫‪.HALTTM‬‬
‫כלומר‪ ,‬בהינתן מ“ט ‪ M‬אנחנו רוצים לבנות ‪ ,hT, H, V, t0 i‬כך ש‪ hT, H, V, t0 i-‬הוא ריצוף חוקי של ‪ N × N‬אם“ם ‪ M‬לא‬
‫עוצרת על ‪.ε‬‬
‫∗‬
‫∗‬
‫הרעיון הוא להשתמש בקונפיגורציות של ‪ .M‬כל קונפ’ ניתן לתאר כמילה ב‪ ,Γ · (Q × Γ) · Γ -‬אנחנו הולכים להשתמש‬
‫בקונפ’ כדי לרצף את כל המרחב ‪ -‬כל פונק’ תהווה שורה‪ ,‬ונשים קונפ’ עוקבות אחת מעל השנייה )עוד מעט נראה בדיוק‬
‫איך זה יעבוד(‪.‬‬
‫‪q0‬‬
‫↓‬
‫היא ‪. . .‬‬
‫‪ .(q0 , a) ab‬ואם נניח ש‪δ (q0 , a) = (q1 , b, →)-‬‬
‫למשל הקונפ’ המתאימה לסרט הבא‪:‬‬
‫‪a a b‬‬
‫‪...‬‬
‫אז הקונפ’ העוקבת היא ‪. . .‬‬
‫‪ ,b (q1 , a) b‬ואז סמנטית שתי השורות הראשונות בטבלת הריצוף תהיינה‪:‬‬
‫‪..‬‬
‫‪.‬‬
‫···‬
‫‪b‬‬
‫)‪(q1 , a‬‬
‫‪b‬‬
‫‪2‬‬
‫···‬
‫‪b‬‬
‫‪a‬‬
‫)‪(q0 , a‬‬
‫‪1‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫···‬
‫‪4‬‬
‫פורמלית‪ ,‬יהיו לנו ‪ 3‬סוגים מרצפות‪:‬‬
‫‪53‬‬
‫‪7‬‬
‫שבוע ‪10‬‬
‫רדוקציות‬
‫)‬
‫‪ .1‬מרצפות השורה הראשונה ‪-‬‬
‫‪(q0 ,‬‬
‫∗‬
‫∗‬
‫= ‪ t0‬ו‪-‬‬
‫∗‬
‫רדוקציות מיפוי‬
‫‪7.1‬‬
‫= ‪ .t1‬בגלל שהקלט של האוטומט הוא המילה הריקה‪,‬‬
‫‪..‬‬
‫‪.‬‬
‫‪...‬‬
‫) ‪ (q0 ,‬זו אכן הקונפ’ ההתחלתית‪ ,‬לכן נרצה לרצף את השורה הראשונה בתור‬
‫‪ .2‬ריפוד ‪ -‬לכל ‪ c ∈ Γ‬נגדיר אריח‬
‫∗‬
‫‪c‬‬
‫‪c‬‬
‫∗‬
‫···‬
‫‪t1‬‬
‫‪t1‬‬
‫‪t1‬‬
‫‪t0‬‬
‫···‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪. 1‬‬
‫‪.‬‬
‫‪ .3‬מרצפות שמתאימות לתזוזה של הראש ‪ -‬עבור המעבר )‪) δ (q, a) = (q ′ , b, L‬עבור ‪ (q 6= qacc , qrej‬נגדיר אריח‬
‫‪b‬‬
‫)‪(q′ ,L‬‬
‫∗‬
‫)‪(q,a‬‬
‫ אריח זה מציין שאנחנו מעבירים את הראש לאריח שמשמאלנו במצב ‪ .q ′‬כמו כן‪ ,‬כן לכל ‪ c ∈ Γ‬נגדיר אריח‬‫)‪(q′ ,c‬‬
‫∗ ‪ -‬זהו אריח המקבל את הראש‪.‬‬
‫)‪(q′ ,L‬‬
‫‪c‬‬
‫באופן דומה עבור תזוזה של הראש ימינה נגדיר אריחים‬
‫)‪(q′ ,R‬‬
‫‪′‬‬
‫‪b‬‬
‫∗‬
‫)‪(q,a‬‬
‫)‪(q ,c‬‬
‫ולכל ‪ c ∈ Γ‬נגדיר אריח‬
‫∗‬
‫)‪. (q′ ,R‬‬
‫‪c‬‬
‫ראשית נשים לב שיש כמות סופית של מרצפות ‪ 2 -‬סוגים של מרצפות שורה ראשונה‪ |Γ| ,‬מרצפות ריפוד ועוד כמות סופית‬
‫של מרצפות המתאימות לתזוזה של הראש‪ ,‬שכן עבור תזוזה מסויימת‪ ,‬יש |‪ 1 + |Γ‬מרצפות‪ ,‬והיות ש‪ Γ, Q-‬סופיות‪ ,‬נקבל כי‬
‫יש מספר סופי של מרצפות כנ“ל‪.‬‬
‫כמו כן‪ ,‬אנו רואים שאכן מרצפות אלה מתארות לנו קונפיגורציות עוקבות של מ“ט‪ .‬למשל‪:‬‬
‫‪...‬‬
‫‪3‬‬
‫···‬
‫∗‬
‫∗ ∗‬
‫‪2‬‬
‫···‬
‫∗‬
‫∗ ∗‬
‫‪1‬‬
‫···‬
‫‪...‬‬
‫‪...‬‬
‫‪...‬‬
‫) ‪(q2 ,‬‬
‫‪b‬‬
‫‪b‬‬
‫)‪(q2 , R) (q2 , R‬‬
‫∗ ∗‬
‫∗ ∗‬
‫···‬
‫‪b‬‬
‫‪b‬‬
‫∗‬
‫) ‪(q1 ,‬‬
‫‪b‬‬
‫) ‪(q1 ,‬‬
‫‪b‬‬
‫)‪(q1 , R) (q1 , R‬‬
‫···‬
‫‪b‬‬
‫∗‬
‫) ‪(q0 ,‬‬
‫···‬
‫) ‪(q0 ,‬‬
‫∗‬
‫∗‬
‫∗‬
‫∗‬
‫∗‬
‫משפט ‪ M .7.1‬לא עוצרת על ‪ ε‬אם“ם יש ריצוף חוקי של רבע המישור‪.‬‬
‫הוכחה‪ .‬בכיוון האחד‪ ,‬אם ‪ M‬לא עוצרת על ‪ ε‬אז יש סדרת קונפיגורציות חוקית אינסופית‪ ,‬ובה ניתן להשתמש כדי לרצף‬
‫את רבע המישור‪ .‬בכיוון השני‪ ,‬אם יש ריצוף חוקי של רבע המישור‪ ,‬ריצוף זה מתאר בדיוק את הריצה של ‪ M‬על ‪ ε‬ובגלל‬
‫שהריצוף אינסופי‪ M ,‬לא עוצרת אף פעם על ‪.ε‬‬
‫∈ ‪ HALTεTM‬ומצאנו רדוקציה ‪.HALTεTM ≤m TILE‬‬
‫∈ ‪ TILE‬שכן ‪/ RE‬‬
‫מסקנה ‪/ RE .7.3‬‬
‫‪54‬‬
‫הרצאה ‪9‬א‬
‫‪8‬‬
‫שבוע ‪10‬‬
‫מחלקות סיבוכיות זמן ‪P, NP, EXP -‬‬
‫חלק ‪IV‬‬
‫סיבוכיות‬
‫חקרנו מחלקות שונות כגון ‪ R, RE, coRE‬ועתה נרצה להתמקד ב‪ .R-‬אנו נסתכל על בעיות שניתנות להכרעה‪ ,‬ונרצה לסווג‬
‫אותן לפי קושי במובן מסויים‪ .‬קושי ניתן לאפיין בכמה דרכים‪ ,‬למשל‪:‬‬
‫‪ .1‬שייכות לקבוצת מודלים חישוביים ‪ CFL, REG -‬וכו’‪.‬‬
‫‪ .2‬משאבים שדרושים להכרעה ‪ -‬זמן‪ ,‬זכרון‪ ,‬אקראיות‪ ,‬מקביליות וכו’‪.‬‬
‫אנו נתמקד באפיון השני ‪ -‬משאבים ובפרט זמן וזכרון‪.‬‬
‫כך למשל‪ ,‬נוכל לשאול מהו זמן הריצה )במובן של כמות הפעולות שצריך לבצע( שצריך כדי להכריע האם מילה כלשהי‬
‫‬
‫נמצאת בשפה ‪ .L = 0k 1k | k ≥ 0‬ראינו כבר מ“ט שמכריעה אותה )למעשה זה היה על שפה מאוד דומה‪ ,‬ראו דוגמה ‪(6‬‬
‫באמצעות שימוש בתהליך איטרטיבי‪:‬‬
‫עבור מילה באורך ‪ ,n‬אנחנו מבצעים לכל היותר‬
‫‪n‬‬
‫‪2‬‬
‫איטרציות כאשר באיטרציה ה‪ i-‬אנחנו משווים את האיבר ה‪ i-‬לאיבר‬
‫ה‪ ,i + n2 -‬ובגלל שצריך לזוז מהאיבר ה‪ i-‬לאיבר ה‪ ,i + n2 -‬כל איטרציה עולה לנו בערך‬
‫‬
‫‪.O n2‬‬
‫‪8‬‬
‫‪n‬‬
‫‪2‬‬
‫פעולות‪ ,‬לכן זמן הריצה הוא‬
‫מחלקות סיבוכיות זמן ‪P, NP, EXP -‬‬
‫הגדרה ‪ .8.1‬תהי ‪ .t : N → N‬נגדיר מחלקה‬
‫‪‬‬
‫‪ ‬קיימת מ”ט דטרמיניסטית חד‪-‬סרטית‬
‫‪‬‬
‫שמכריעה את ‪ L‬ועוצרת על כל‬
‫‪‬‬
‫‪‬‬
‫קלט ‪ w‬תוך ))|‪ O (t (|w‬צעדים‬
‫∗‪L ⊆ Σ‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫= ))‪TIME (t (n‬‬
‫‬
‫‬
‫על כן אנחנו יכולים להגיד ש‪ ,L = 0k 1k | k ≥ 0 ∈ TIME n2 -‬ולמעשה ניתן למצוא אלגוריתם חכם יותר‬
‫‪12‬‬
‫עם סיבוכיות‬
‫זמן ריצה )‪ O (n log n‬ולהסיק )‪ .L ∈ TIME (n log n‬למעשה זוהי דוגמה לתופעה כללית יותר‪:‬‬
‫משפט ‪ .8.1‬אם ניתן להכריע שפה ‪ L‬בזמן )‪ o (n log n‬אזי ‪ L‬רגולרית‪) .‬כאשר מדובר על סימון ‪ o‬קטן ולא ‪ O‬גדול(‬
‫ניזכר שבתרגול ‪) 6‬משפט ‪ (19.1‬ראינו שמ“ט עם שני סרטים )ובאופן כללי גם מ“ט עם כמה סרטים( שקולה למ“ט עם סרט‬
‫אחד‪.‬‬
‫בפרט‪ ,‬מהבנייה בהוכחה אנחנו מסיקים שלכל מ“ט דטר’ רב‪-‬סרטית שרצה בזמן ))‪ ,O (t (n‬יש מ“ט דטר’ שקולה שרצה‬
‫‬
‫בזמן )‪.O t2 (n‬‬
‫בגלל שאנו הולכים לדבר על זמני ריצה פולינומיאליים ואקספוננציאליים‪ ,‬לא תעניין אותנו המעלה של הפולינום‪ ,‬ולכן לא‬
‫ישנה לנו כמה סרטים יש במ“ט שלנו‪.‬‬
‫‪12‬הרעיון של האלגוריתם הוא למחוק חצי מהאותיות בכל איטרציה ואז לצופף את האותיות שנשארו‪ ,‬אולם אין זה קורס באלגוריתמים ולכן לא‬
‫נעמיק בכך‪.‬‬
‫‪55‬‬
‫‪8‬‬
‫שבוע ‪10‬‬
‫מחלקות סיבוכיות זמן ‪P, NP, EXP -‬‬
‫הגדרה ‪ .8.2‬נגדיר מחלקה ‪ ,PTIME‬או בקיצור ‪ ,P‬ע“י‬
‫‬
‫‪TIME ni‬‬
‫[‬
‫= ‪PTIME‬‬
‫‪i≥0‬‬
‫הגדרה ‪ .8.3‬נגדיר מחלקה ‪ ,EXPTIME‬או בקיצור ‪ ,EXP‬ע“י‬
‫‪ i‬‬
‫‪TIME 2n‬‬
‫[‬
‫= ‪EXPTIME‬‬
‫‪i≥0‬‬
‫הערה‪ P .‬היא מחלקת השפות שניתן להכריע בזמן פולינומיאלי‪ ,‬ובגלל שלא משנה מהי דרגת הפולינום‪” ,‬מותר“ לנו להשתמש‬
‫במ“ט רב‪-‬סרטית‪ EXP .‬היא מחלקת השפות שניתן להכריע בזמן מעריכי‪.‬‬
‫הגדרה ‪ .8.4‬מכונת טיורינג אי‪-‬דטרמיניסטית היא שביעיה ‪ M = hQ, Σ, Γ, δ, q0 , qacc , qrej i‬המוגדרת באותו אופן כמו‬
‫במ“ט רגילה‪ ,‬רק ש‪ δ-‬יכולה להעביר אותנו לכמה קונפיגורציות שונות בכל צעד‪ ,‬כלומר }‪.δ : Q × Γ → 2Q×Γ×{R,L‬‬
‫הגדרה ‪ .8.5‬נאמר שמ“ט אי‪-‬דטרמיניסטית )א“ד( ‪ M‬מקבלת מילה ‪ w‬אם יש ריצה של ‪ M‬המסתיימת ב‪.qacc -‬‬
‫אחרת‪) ,‬כלומר כל הריצות דוחות או לא עוצרות( נאמר ש‪ M -‬דוחה את ‪ .w‬לסיום נאמר ש‪ M -‬מכריעה שפה ‪L‬‬
‫אם ‪ L (M ) = L‬ובנוסף ‪ M‬עוצרת על כל מילה ‪ w‬בכל הריצות האפשריות שלה‪.‬‬
‫הגדרה ‪ .8.6‬זמן הריצה של מ“ט אי‪-‬דטר’ ‪ M‬על מילה ‪ w‬מסומן ב‪ t (|w|)-‬והוא מוגדר להיות זמן הריצה של הריצה‬
‫הכי ארוכה מבין כל הריצות האפשריות של ‪ M‬על ‪.w‬‬
‫הגדרה ‪ .8.7‬תהי ‪ .t : N → N‬נגדיר מחלקה‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫קיימת מ”ט א”ד חד‪-‬סרטית‬
‫∗‪L ⊆ Σ‬‬
‫שמכריעה את ‪ L‬ועוצרת על כל‬
‫קלט ‪ w‬תוך ))|‪ O (t (|w‬צעדים בכל ריצה אפשרית‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫= ))‪NTIME (t (n‬‬
‫הגדרה ‪ .8.8‬נגדיר מחלקה ‪ ,NPTIME‬או בקיצור ‪ ,NP‬ע“י‬
‫‬
‫‪NTIME ni‬‬
‫[‬
‫= ‪NPTIME‬‬
‫‪i≥0‬‬
‫משפט ‪.P ⊆ NP ⊆ EXP .8.2‬‬
‫הוכחה‪ .‬מ“ט דטר’ היא מקרה פרטי של מ“ט א“ד לכן כמובן ‪ .P ⊆ NP‬כמו כן‪ ,‬אנו ראינו בתרגול ‪) 6‬ראו משפט ‪(20.1‬‬
‫שלכל מ“ט א“ד הרצה בזמן ))‪ O (t (n‬יש מ“ט דטר’ שקולה שרצה בזמן ))‪ ,2O(t(n‬ולכן ‪.NP ⊆ EXP‬‬
‫על אף שהראינו ש‪ ,P ⊆ NP ⊆ EXP-‬לא ידוע האם מדובר בהכלות ממש או בשוויונות‪ .‬בפרט השאלה האם ‪P = NP‬‬
‫היא שאלה מפורסמת שאין עליה תשובה )וגם האם ‪NP = EXP‬‬
‫נותרה‪.P‬ללא תשובה כיום(‪ .‬כן יודעים ש‪! P 6= EXP-‬‬
‫ולכן אם ‪ P = NP‬אז בהכרח ‪ NP 6= EXP‬ואם ‪ NP = EXP‬אז ‪6= NP‬‬
‫‪56‬‬
‫‪8‬‬
‫מחלקות סיבוכיות זמן ‪P, NP, EXP -‬‬
‫שבוע ‪10‬‬
‫הכוח של שימוש במ“ט א“ד ינבע בעיקר מהיכולת שלה לבצע ניחושים‪ ,‬כפי שניתן לראות בדוגמה הבאה‪:‬‬
‫דוגמה‪ .‬נסתכל על }‪ ,COMPOSITE = {x ∈ N | 1 < ∃p, q ∈ N, x = pq‬כאשר ‪ x‬נתון בייצוג בינארי‪.‬‬
‫√‬
‫‪ COMPOSITE ∈ EXP‬כי אנחנו יכולים לעבור על כל האיבר מ‪ 1-‬עד ‪x‬‬
‫נשים לב ש‪-‬‬
‫ולבדוק האם הם מחלקים את ‪ .x‬על אף‬
‫שסיבוכיות האלגוריתם איננה אקספוננציאלית ביחס ל‪ ,x-‬חשוב לזכור שסיבוכיות האלגוריתם נמדדת ביחס לאורך הקלט‪ ,‬לכן‬
‫√‬
‫‪ x‬הוא אקספוננציאלי באורך הקלט שהוא ‪.log x‬‬
‫בנוסף‪ COMPOSITE ∈ NP ,‬כי אנחנו יכולים להגדיר מ“ט א“ד שמכריעה את השפה בזמן פולינומיאלי‪ ,‬בכך שבהינתן ‪x‬‬
‫המ“ט תנחש ‪ 1 < p < x − 1‬ותקבל את ‪ x‬אם“ם ‪ p‬מחלק את ‪) x‬ואלגוריתם זה כמובן פולינומיאלי באורך הקלט(‪ .‬כיצד‬
‫ניתן להגריל ‪ p‬שכזה? למ“ט שלנו יהיה מצב ‪ q‬שאחראי לכתוב במיקום כלשהו בסרט מספר כלשהו באופן לא דטרמיניסטי‪,‬‬
‫כלומר‬
‫}‪i‬לסיים את הכתיבה‪i , h‬לכתוב ‪i , h1‬לכתוב ‪δ (q, ) = {h0‬‬
‫וכך אנחנו יכולים לקבל כל מספר ‪ .p‬כמובן התיאור הזה מעט פשטני וצריך לדאוג שלא נכתוב מספר ארוך עד אינסוף‬
‫וחסרים פרטים קטנים‪ ,‬אך באנו רק להציג את הרעיון הכללי ולהראות שזה אכן אפשרי‪.‬‬
‫הערה‪ .‬לא מזמן גילו שלמעשה ‪ .COMPOSITE ∈ P‬זו תוצאה יחסית חדשה‪ ,‬והיא מהווה דוגמה לאובייקט שחשבנו שאין‬
‫לו פתרון יעיל‪ ,‬אך לבסוף התברר שכן‪ .‬לא נלמד את האלגוריתם בו השתמשו כי הוא מסובך‪.‬‬
‫דוגמה‪ .‬כדוגמאות קונקרטיות לבעיות ב‪( NP-‬וב‪ ,P-‬נסתכל על מסלולי המילטון ומסלולי אוילר )הזכרו בהגדרות ‪ .(0.2,0.1‬נגדיר‬
‫)‬
‫‪ G‬גרף מכוון‬
‫‪ D − ST − HamPATH = hG, s, ti‬כאשר ‪ D‬מציין שהגרף מכוון )‪ (Directed‬ו‪ST-‬‬
‫יש מסלול המילטון מ‪ s -‬ל‪t -‬‬
‫מציין שהמסלול מתחיל מקודקוד ‪ s‬ומסתיים ב‪ .t-‬באותו אופן ניתן להגדיר בעיות אנלוגיות עבור גרפים לא מכוונים‪ ,‬עבור‬
‫מסלולי אוילר‪ ,‬עבור גרפים בהם לא משנה איפה מתחילים ואיפה מסיימים‪ ,‬והאם מדובר במסלול או במעגל‪.‬‬
‫ראינו בתחילת הקורס שיש אלגוריתם יעיל שמכריע האם בגרף יש מעגל אוילר ולכן ‪.D − ST − EULPATH ∈ P‬‬
‫לעומת זאת‪ ,‬עבור הבעיה של מסלולי המילטון‪ ,‬המצב שונה‪ .‬אנו יודעים ש‪ D − ST − HAMPATH ∈ EXP-‬כי אנחנו פשוט‬
‫יכולים לעבור על כל המילים )איברים( ב‪ V n -‬ולבדוק האם אחד מהם הוא מסלול המילטון שמתחיל ב‪ s-‬ומסתיים ב‪,t-‬‬
‫וכמובן מעבר על כל האפשרויות יקח זמן אקספוננציאלי‪.‬‬
‫כמו כן‪ D − ST − HAMPATH ∈ NP ,‬כי נוכל לבנות מ“ט א“ד שמכריעה אותה בזמן פולינומיאלי באופן הבא‪ :‬בהינתן‬
‫‪ hG, s, ti‬נפעל באופן הבא‪ :‬ננחש מילה אחת ‪ π ∈ V n‬ונקבל אם“ם ‪ π‬היא מסלול המילטון מ‪ s-‬ל‪ .t-‬הגרלה ובדיקה שתיהן‬
‫פעולות שיקחו לנו זמן פולינומיאלי‪ ,‬לכן המכונה אכן רצה בזמן פולינומיאלי‪.‬‬
‫שימו לב‪ :‬כמות הניחושים האפשריים היא אקספוננציאלית‪ ,‬אך כמות הפעולות שמבצעים על כל ניחוש היא פולינומיאלית ‪-‬‬
‫זה הכוח של מ“ט א“ד‪.‬‬
‫?‬
‫האם ‪ ?D − ST − HAMPATH ∈ P‬לא יודעים‪ .‬יתכן שיש תכונה מתמטית מעניינת שטרם גילה האדם שבה ניתן להשתמש‬
‫כדי להראות שכן‪ ,‬אך ביינתים זו שאלה פתוחה‪.‬‬
‫‪ P‬היא מחלקת השפות שניתן להכריע בזמן פולינומיאלי‪ ,‬בעוד ‪ NP‬היא מחלקת השפות שניתן להכריע בזמן פולינומיאלי‬
‫ע“י מ“ט א“ד‪ .‬בגלל שהמון פעמים השימוש שלנו באי‪-‬דטרמיניזם יהיה כדי לנחש פתרון ואז רק לבדוק האם הוא‬
‫מתאים או לא‪ ,‬אז אינטואיטיבית ניתן לחשוב על ‪ P‬כמחלקת הבעיות שניתן לפתור בזמן פולינומיאלי‪ ,‬ועל ‪ NP‬כמחלקת !‬
‫הבעיות שניתן לבדוק האם פתרון כלשהו הוא נכון בזמן פולינומיאלי‪.‬‬
‫נפרמל את האינטואיציה לגבי ‪ NP‬מההערה הקודמת‪.‬‬
‫הרצאה ‪9‬ב‬
‫‪57‬‬
‫‪9‬‬
‫שבוע ‪10‬‬
‫שלמות ב‪) NP-‬המחלקה ‪(NPC‬‬
‫הגדרה ‪ .8.9‬מוודא לשפה ‪ L‬הוא מ“ט דטר’ ‪ V‬כך שעבורה מתקיים‬
‫}קיים ‪ c‬כך ש‪ V -‬מקבלת את )‪L = {w | (w, c‬‬
‫הערך ‪ c‬נקרא סרטיפיקט‪/‬עד‪.‬‬
‫הרעיון הוא ש‪ V -‬יודעת לוודא האם ”פתרון לבעיה“ הוא נכון‪ .‬במקרה של מסלול המילטון‪ ,‬אנחנו יכולים להגדיר מוודא ‪V‬‬
‫שבהינתן גרף )שהוא ‪ w‬המילה עליה רצים( ובהינתן מסלול )זהו הסרטיפיקט ‪ (c‬פשוט בודק האם המסלול המילטוני המתחיל‬
‫ב‪ s-‬ומסתיים ב‪ ,t-‬ואם כן אז הוא מקבל את המילה ואחרת דוחה‪ .‬כלומר‪,‬‬
‫}‪ G‬גרף ‪ π ,‬מסלול המילטון מ‪ s -‬ל‪L (V ) = {hG, s, t, πi | t -‬‬
‫אפיון המחלקה ‪NP‬‬
‫משפט ‪ L ∈ NP .8.3‬אם“ם יש ל‪ L-‬מוודא דטרמיניסטי ‪ V‬שרץ בזמן פולינומיאלי ב‪.w-‬‬
‫הוכחה‪ .‬בתרגול )ראו ‪.(22.1‬‬
‫הקלט של ‪ V‬הוא זוג )‪ (w, c‬כאשר ‪ w‬היא המילה שאנחנו בודקים‬
‫)אחרת ו‪c-‬לא היאנוכלהעד‪.‬לעבורכדיעלש‪V -‬כולו(‪.‬תיחשב כמוודא פולינומיאלי !‬
‫ב‪ ,w-‬אז האורך של העד ‪ c‬צריך להיות פולינומיאלי ב‪w-‬‬
‫‪9‬‬
‫שלמות ב‪) NP-‬המחלקה ‪(NPC‬‬
‫אנו רוצים להגיד האם לאלגוריתם יש פתרון פולינומיאלי או לא‪ .‬לצערנו‪ ,‬לאנושות אין דרך לעשות זאת כיום‪ ,‬לכן נשתמש‬
‫בדבר הכי טוב הבא‪ :‬המושג של ‪-NP‬שלמות‪ .‬מושג זה יגיד שאם שפה ‪ L ∈ NP‬היא ‪-NP‬שלמה‪ ,‬אז אנחנו לא בהכרח יודעים‬
‫להגיד אם היא פולינומיאלית‪ ,‬אבל אם היא זה אומר שכל שפה ב‪ NP-‬היא פולינומיאלית‪:‬‬
‫הגדרה ‪ .9.1‬שפה ‪ L‬תקרא ‪-NP‬שלמה )‪ (NPC‬אם‪:‬‬
‫‪.L ∈ NP .1‬‬
‫‪ .2‬אם ‪ L ∈ P‬אזי ‪.P = NP‬‬
‫בקצרה | על חשיבות המושג ‪-NP‬שלמות‬
‫מההגדרה אנו מבינים שהשפות שהן ‪-NP‬שלמות הן שפות שאם נפתור אותן בזמן יעיל‪ ,‬אנחנו נפתור בזמן יעיל את‬
‫כל השפות ב‪ NP-‬באשר הן! זהו קונספט עוצמתי למדי‪ .‬זה אומר שאם יש לנו בעיה שהראינו שהיא ‪-NP‬שלמה אבל‬
‫לא הצלחנו להראות שהיא ‪ ,P‬אם הבוס שלנו בעבודה ישאל ”בטוח אין אלגוריתם יעיל?“ אז לא נדע לענות לו‪ ,‬אבל‬
‫נוכל לפחות לומר ”לא ידוע‪ ,‬אבל אם כן יש אלגוריתם יעיל אז נצליח לפתור ביעילות את כל שאר הבעיות ב‪,NP-‬‬
‫בעוד ששאר האנושות טרם פתרה אותן ביעילות“‪ ,‬ובתקווה זה ישכנע אותו‪.‬‬
‫להראות ששפה היא ב‪ NP-‬נותן לנו חסם עליון על קושי השפה‪ ,‬ולהראות שהיא ‪-NP‬שלמה נותן חסם תחתון‪.‬‬
‫כדוגמה‪ ,‬נסתכל על השפה הראשונה שהראו שהיא ‪-NP‬שלמה )הוכח ע“י קוק ולוין בשנות ה‪ - (70-‬שפת הנוסחאות הספיקות‪.‬‬
‫‪58‬‬
‫‪10‬‬
‫שבוע ‪11‬‬
‫רדוקציות פולינומיאליות‬
‫הגדרה ‪ .9.2‬משתנה בוליאני‪/‬פסוקי הוא משתנה שמקבל ערכים מ‪) {T, F}-‬אמת‪/‬שקר(‪ .‬קבוצת משתנים בוליאניים‬
‫תסומן בדר“כ בתור } ‪.X = {x1 , . . . , xn‬‬
‫נוסחה בוליאנית‪/‬פסוקית מוגדרת באופן רקורסיבי‪:‬‬
‫‪ .1‬כל משתנה בוליאני הוא נוסחה בוליאנית‪.‬‬
‫‪ .2‬אם ‪ φ1 , φ2‬נוסחאות בוליאניות אז גם ‪.¬φ1 , φ1 ∧ φ2 , φ1 ∨ φ2‬‬
‫בהינתן השמה }‪ f : X → {T, F‬למשתני הנוסחה‪ ,‬ניתן לחשב את ערך הנוסחה )אמת‪/‬שקר(‪ .‬נאמר שנוסחה ‪ Θ‬ספיקה‬
‫אם יש השמה שמספקת אותה )כלומר השמה כך ש‪ Θ-‬תקבל את הערך ”אמת“(‪.‬‬
‫הגדרה ‪ .9.3‬נאמר שנוסחה ‪ Θ‬היא ב‪ (Conjunctive Normal Form) CNF-‬אם ‪ Θ‬היא מהצורה‬
‫‬
‫‬
‫‪1‬‬
‫‪2‬‬
‫‪km‬‬
‫‪l11 ∨ l12 . . . ∨ l1k1 ∧ . . . ∧ lm‬‬
‫‪∨ lm‬‬
‫‪. . . ∨ lm‬‬
‫‬
‫כך ש‪ lij -‬היא ליטרל‪ ,‬כלומר } ‪.lij ∈ {x1 , . . . , xn , x1 , . . . , xn‬‬
‫הגדרה ‪ .9.4‬נגדיר את השפה }‪ Θ‬נוסחה ספיקה ב‪.SAT = {hΘi | CNF -‬‬
‫דוגמה‪ .‬בהינתן } ‪ X = {x1 , x2‬והנוסחה ) ‪) φ = (x1 ∨ x2 )∧(x1‬נשים לב שנוסחה זו היא ב‪ ,(CNF-‬נוכל להציב ‪x1 = T, x2 = F‬‬
‫‬
‫ולקבל שהערך של ‪ φ‬הוא ‪. T ∨ F ∧ (T) = F ∧ T = F‬‬
‫בפרט נראה שבהנתן השמה ונוסחת ‪ ,CNF‬אפשר לבדוק אם הערך המתקבל הוא ‪ T, F‬בזמן פולינומיאלי‪ ,‬בפרט‬
‫אפשר לעשות‬
‫אקספוננציאלי‪.‬זאת בזמן לינארי‪ .‬כמו כן‪ ,‬כל נוסחא בוליאנית ניתנת לתרגום לנוסחת ‪ CNF‬שקולה‪ ,‬במחיר של ניפוח !‬
‫משפט קוק‪-‬לוין‬
‫משפט‪.SAT ∈ NPC .‬‬
‫הוכחה‪ .‬לכל נוסחה‪ ,‬בהינתן השמה כלשהי למשתני הנוסחה‪ ,‬ניתן לבדוק בזמן פולינומיאלי האם ההצבה נותנת ‪ T‬או ‪ ,F‬ולכן‬
‫‪ ,SAT ∈ NP‬כי יש לה מוודא פולינומיאלי‪ .‬נותר להראות ש‪ SAT ∈ P-‬אם“ם ‪ .P = NP‬לפני שנוכל לעשות זאת נצטרך‬
‫להכיר נושא חדש ‪ -‬רדוקציות פולינומיאליות‪.‬‬
‫‪10‬‬
‫רדוקציות פולינומיאליות‬
‫רדוקציות פולינומיאליות הן מקרה פרטי של רדוקציות מיפוי‪.‬‬
‫הרצאה ‪10‬א‬
‫הגדרה ‪ f : Σ∗ → Σ∗ .10.1‬היא פונקציה ניתנת לחישוב בזמן פולינומיאלי אם קיימת מ״ט ‪ Mf‬שעל קלט ‪ x‬עוצרת‬
‫תוך מספר פולינומיאלי של צעדים עם )‪ f (x‬על הסרט‪.‬‬
‫הגדרה ‪ .10.2‬עבור ∗‪ A, B ⊆ Σ‬נאמר ש‪ A-‬ניתנת לרדוקציה פולינומיאלית ל‪ B-‬ונסמן ‪ A ≤p B‬אם קיימת ∗‪f : Σ∗ → Σ‬‬
‫פונק ‪ ′‬ניתנת לחישוב בזמן פולינומיאלי‪ ,‬כך ש‪.w ∈ A ⇐⇒ f (w) ∈ B-‬‬
‫נבחין כי היות ש‪ Mf -‬עוצרת לאחר מספר פולינומיאלי של צעדים‪ ,‬זה גורר ש‪ f (x)-‬באורך פולינומיאלי ב‪.x-‬‬
‫‪59‬‬
‫!‬
‫‪10‬‬
‫שבוע ‪11‬‬
‫רדוקציות פולינומיאליות‬
‫משפט הרדוקציה הפולינומיאלית‬
‫משפט‪ .‬לכל ∗‪ A, B ⊆ Σ‬אם ‪ A ≤p B‬ו‪ B ∈ P-‬אזי ‪.A ∈ P‬‬
‫הוכחה‪ .‬בהנתן ‪ Mf‬שמחשבת את הרדוקציה‪ ,‬ו‪ MB -‬שמכריעה את ‪ B‬בזמן פולינומיאלי‪ ,‬נבנה ‪ MA‬שמכריעה את ‪ A‬בזמן‬
‫פולינומיאלי‪ .‬בהנתן ∗‪ w ∈ Σ‬המכונה ‪ MA‬תריץ את ‪ Mf‬וכך תחשב בזמן פולינומיאלי את )‪ ,f (w‬תריץ את ‪ MB‬על )‪f (w‬‬
‫בזמן פולינומיאלי ב‪ |f (w)|-‬וידוע ש‪ |f (w)|-‬פולינומיאלי ב‪.|w|-‬‬
‫עכשיו נראה מה התחליף שלנו לקבוע שאין אלגוריתם פולינומיאלי שפותר בעיה‪ ,‬בפרט זו הגדרה שקולה לשלמות ב‪.NP-‬‬
‫הגדרה ‪ .10.3‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-NP‬קשה )‪ (NPH‬אם לכל שפה ‪ L′ ∈ NP‬מתקיים ‪.L′ ≤p L‬‬
‫הגדרה ‪ .10.4‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-NP‬שלמה )‪ (NPC‬אם‪:‬‬
‫‪) .1‬חסם עליון( ‪.L ∈ NP‬‬
‫‪) .2‬חסם תחתון( ‪.L ∈ NPH‬‬
‫טענה ‪ .10.1‬אם ‪ L ∈ NPH‬ו‪ L ∈ P-‬אזי ‪.P = NP‬‬
‫הוכחה‪ .‬תהי ‪ .L′ ∈ NP‬מכיוון ש‪ L-‬היא ‪-NP‬קשה‪ L′ ≤p L ,‬ולכן אם ‪ L ∈ P‬גם ‪.L′ ∈ P‬‬
‫טענה ‪ .10.2‬תהי ‪ .L′′ ∈ NPH‬אם ‪ L′′ ≤p L‬אזי ‪L ∈ NPH‬‬
‫הוכחה‪ .‬תהי ‪ L′ ∈ NP‬אזי ‪ L′ ≤p L′′ ≤p L‬ולכן מטרנזיטיביות נובע ‪.L′ ≤p L‬‬
‫על כן מספיק שנמצא שפה ‪-NP‬קשה אחת ונקבל כלי להוכחת ‪-NP‬קשיות לשפות אחרות‪.‬‬
‫טענה ‪ .10.3‬אם ‪ A ∈ P‬אז ‪ A ≤p B‬לכל ∗‪.B 6= ∅, Σ‬‬
‫הוכחה‪ .‬נבנה ‪ f : INPUTSA → INPUTSB‬כך ש‪ Mf .w ∈ A ⇐⇒ f (w) ∈ B-‬תפעל כך‪ .‬בהנתן ‪ ,w‬היא תבדוק בזמן‬
‫∈ ‪ .ws ∈ B, wn‬אם ‪ w ∈ A‬נחזיר ‪ ,ws‬ואחרת נחזיר‬
‫פולינומיאלי האם ‪ .w ∈ A‬מכך ש‪ B-‬לא טריוויאלית‪ ,‬קיימות ‪/ B‬‬
‫‪.wn‬‬
‫משפט קוק‪-‬לוין‬
‫הגדרה ‪ Θ} .10.5‬נוסחא ספיקה ב‪.3SAT = {hΘi | 3CNF-‬‬
‫הגדרה ‪ .10.6‬יהי ‪ G = hV, Ei‬גרף‪ .‬נאמר כי ‪ S ⊆ V‬היא ‪-k‬קליקה )או ‪-k‬קליק( בגרף אם ‪ |S| = k‬ו‪E (v1 , v2 )-‬‬
‫לכל ‪.v1 , v2 ∈ S‬‬
‫הגדרה ‪ G} .10.7‬גרף לא מכוון שיש בו קליקה בגודל ‪.CLIQUE = {hG, ki | k‬‬
‫מסקנה ‪) .3SAT, CLIQUE ∈ NP .10.1‬קל להשתכנע שזה נכון באמצעות מוודא(‬
‫אם נראה ש‪) 3SAT ∈ NPC-‬זאת נוכיח בהמשך( אז נסיק שגם ‪:CLIQUE ∈ NPC‬‬
‫משפט‪.3SAT ≤p CLIQUE .‬‬
‫‪60‬‬
‫‪10‬‬
‫שבוע ‪12‬‬
‫רדוקציות פולינומיאליות‬
‫הוכחה‪ .‬נבנה רדוקציה ‪ .f‬בהינתן ‪ Θ = c1 ∧ c2 ∧ . . . ∧ cm‬כאשר ‪ ci = li1 ∨ li2 ∨ li3‬ו‪:lij ∈ {x1 , . . . , xn , x1 , . . . , xn }-‬‬
‫‪ f‬תחזיר ‪ G = hV, Ei‬ו‪ ,k = m-‬כך ש‪-‬‬
‫‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪V = l11 , l12 , l13 , . . . , lm‬‬
‫‪, lm‬‬
‫‪, lm‬‬
‫)‪E = V × V \ (A ∪ B‬‬
‫} ‪ v1 , v2‬הם משתנה ושלילתו | ) ‪A = {(v1 , v2‬‬
‫} ‪ v1 , v2‬ליטרלים של אותה פסוקית ‪ ci‬עבור ‪ i‬כלשהו | ) ‪B = {(v1 , v2‬‬
‫נשים לב כי ‪ .|V | = 3m‬בהגדרה של ‪ E‬אנו מורידים את הצלעות ב‪ A, B-‬שנחשבות ”רעות“‪.‬‬
‫הרדוקציה פולינומיאלית כי יש ‪ 3m‬קודקודים‪ ,‬ועוברים על‬
‫‪2‬‬
‫)‪ (3m‬קשתות אפשריות עבור בניית ‪.E‬‬
‫נוכיח כי הרדוקציה נכונה‪ ,‬כלומר ‪ Θ ∈ 3SAT‬אם“ם ‪.(G, m) ∈ CLIQUE‬‬
‫⇐‪ :‬נניח ש‪ Θ-‬ספיקה‪ .‬תהי ‪ng : X → {T, F}o‬כך ש‪ g-‬מספקת את ‪ ,Θ‬כלומר בכל פסוקית ‪ ci‬יש לפחות ליטרל אחד‬
‫ש‪ g-‬מספקת‪ .‬נטען ש‪⊆ V -‬‬
‫‪liji‬‬
‫‪jm‬‬
‫‪ S = l1j1 , l2j2 , . . . , lm‬היא ‪-m‬קליקה‪ .‬אכן‪ ,‬לכל ‪ u1 , u2 ∈ S‬מתקיים כי ‪ (u1 , u2 ) ∈ E‬כי‬
‫הם מזוהים עם ליטרלים מפסוקיות שונות שלא מזוהים עם משתנה ושלילתו‪ ,‬כי ‪ g‬היא השמה‪ ,‬אז לכל }‪ i ∈ {1, . . . , n‬או‬
‫שרק ליטרלים עם ‪ xi‬מופיעים ב‪ S-‬או רק כאלה עם ‪) xi‬לא יתכן שגם ‪ xi‬הוא אמת וגם ‪ xi‬הוא אמת(‪.‬‬
‫⇒‪ :‬נניח שיש ב‪-m G-‬קליק ‪ .S‬בהכרח לכל פסוקית ‪ ci‬יש ב‪ S-‬לכל היותר נציג אחד שהוא מהצורה‬
‫‪,li1 , li2 , li3‬‬
‫כי קודקודים‬
‫שמזוהים עם ליטרלים מאותה פסוקית‪ ,‬אין בהם קשת‪ .‬מכיוון ש‪ ,|S| = m-‬אז יש לכל פסוקית בדיוק נציג אחד‪ .‬לכל‬
‫משתנה ‪ xi ∈ X‬הקודקודים שבקליק שמזוהים עם ‪ x1‬או ‪ ,x1‬הם כולם מזוהים עם ‪ x1‬או כולם מזוהים עם ‪ ,x1‬כי ‪S‬‬
‫קליק וב‪ G-‬אין קשתות בין קודקודים שמזוהים עם משתנה ושלילתו‪ .‬לכן ‪ S‬משרה השמה }‪ .g : X → {T, F‬כמו כן‪g ,‬‬
‫מספקת כי ל‪ S-‬נציג בכל פסוקית‪.‬‬
‫דוגמה‪ .‬להמחשת הגרף מההוכחה‪ .Θ = (x1 ∨ x1 ∨ x2 ) ∧ (x1 ∨ x2 ∨ x2 ) ∧ (x1 ∨ x2 ∨ x2 ) .‬נשים לב ש‪ Θ-‬ספיקה כי נוכל‬
‫לבחור בהשמה המקבל ‪ .x1 = F, x2 = T‬נבנה את הגרף הבא‪:‬‬
‫‪x2‬‬
‫‪x2‬‬
‫‪x1‬‬
‫‪l23‬‬
‫‪l22‬‬
‫‪l21‬‬
‫‪l33 x2‬‬
‫‪x2 l13‬‬
‫‪l32 x2‬‬
‫‪x1 l12‬‬
‫‪l31 x1‬‬
‫‪x1 l11‬‬
‫נשים לב כיצד למשל ‪ l13‬מחובר ל‪ l21 -‬בקשת‪ ,‬כי הם לא מאותה פסוקית ‪ l13 ) ci‬הוא מ‪ c1 -‬ו‪ l21 -‬הוא מ‪ (c2 -‬והם לא משתנה‬
‫ושלילתו ) ‪ x2‬הוא לא השלילה של ‪ .(x1‬ולעומת זאת‪ l31 ,‬לא מחובר ל‪ l33 -‬כי הם מאותה פסוקית ‪.c3‬‬
‫משפט קוק לוין‬
‫משפט‪ ,3SAT ∈ NPH .‬כלומר לכל ‪ L ∈ NP‬מתקיים ‪.L ≤p 3SAT‬‬
‫‪61‬‬
‫הרצאה ‪10‬ב‬
‫‪10‬‬
‫שבוע ‪12‬‬
‫רדוקציות פולינומיאליות‬
‫רעיון ההוכחה‬
‫הרדוקציה שנבנה תיקח מ“ט א“ד ‪ M‬שמכריעה את ‪ ,L‬ולכל מילה ‪ w‬הרדוקציה תסתכל על הקונפיגורציות בריצה‬
‫של ‪ M‬על ‪ ,w‬ותבנה מהן נוסחה )שתהיה נוסחת ‪ CNF‬אך נראה שניתן להפוך כל נוסחה כזו לנוסחת ‪(3 − CNF‬‬
‫שתהיה ספיקה אם“ם תיאור הריצה של ‪ M‬על ‪ w‬היא חוקית ומקבלת‪.‬‬
‫לשם כך נבדוק ארבעה דברים בנוסחה‪:‬‬
‫שהקונפ’ הראשונה היא ההתחלתית‪ ,‬שהקונפ’ האחרונה מקבלת‪ ,‬שכל הקונפ’ עוקבות זו לזו‪ ,‬שתיאור הקונפ’ תקין‬
‫)אין כמה אותיות באותו תא‪/‬כמה מצבים במקביל(‪.‬‬
‫מכך אנו מסיקים שאכן יש ריצה מקבלת של ‪ M‬על ‪ w‬אם“ם הנוסחה ספיקה‪.‬‬
‫הוכחה‪ .‬נניח ש‪ ,w ∈ L-‬אזי יש סדרה ‪ c0 , c1 , . . . , cm‬של קונפ ‪ ′‬כך ש‪ c0 -‬הקונפ ‪ ′‬ההתחלתית של ‪ ,M‬ולכל ‪0 ≤ i ≤ m − 1‬‬
‫מתקיים ‪ ci+1‬עוקבת ל‪ ,ci -‬ו‪ cm -‬קונפ ‪ ′‬מקבלת‪ .‬היות ש‪ M -‬עוצרת לאחר )|‪ t (|w‬צעדים‪ ,‬נקבל כי )|‪ .m ≤ t (|w‬יתר על‬
‫כן‪ ,‬לכל ‪ ,i‬התאים מעבר לתא ה‪ t (|w|) + 1-‬הם כולם‬
‫‪ ,‬והראש הקורא לא מגיע אליהם‪.‬‬
‫נתאר קונפ ‪ ′‬על ידי מילה ב‪ .#Γ∗ QΓ∗ #-‬אזי ניתן לייצג ריצה של ‪ M‬על ‪ w‬על ידי טבלה ‪ T‬שבכל כתובת שלה יש אותיות‬
‫בקבוצה }‪ .S = Γ ∪ Q ∪ {#‬נסמן |‪ n = |w‬ולכן מימדי הטבלה הם )‪:(t (n) + 3) × t (n‬‬
‫‪ t (n) + 3‬הוא האורך הדרוש לתאור קונפ ‪ ′‬שמשתמשת ב‪ t (n)-‬תאים לכל היותר‪ ,‬שכן נצטרך עוד שני ‪-#‬ים ועוד מצב ‪.q ∈ Q‬‬
‫)‪ t (n‬מסמל את גובה‪ ,‬ובפרט את מספר הקונפ ‪ ′‬העוקבות‪.‬‬
‫מכאן‪ ,‬הנוסחה ‪ φ‬תגיד אם אפשר למלא טבלה )‪ (t (n) + 3) × t (n‬באותיות מ‪ S-‬באופן שמתאר ריצה מקבלת חוקית‪ .‬לכן‪,‬‬
‫עלינו להגדיר את משתני הנוסחה בצורה מתאימה‪ .‬תהי ‪ g : {1, . . . , t (n) + 3} × {1, . . . , t (n)} → S‬הפונקציה המעתיקה‬
‫את הכניסה במטריצה לאיבר הנמצא בה‪.‬‬
‫לכל ‪ 1 ≤ i ≤ t (n) + 3‬ו‪ 1 ≤ j ≤ t (n)-‬ואות ‪ s ∈ S‬נגדיר משתנה ‪ .xi,j,s = 1g(i,j)=s‬אזי השמה ‪ g‬למשתנים משרה טבלה‬
‫‪ T‬כך ש‪.T [i, j] = s ⇐⇒ g (xi,j,s ) = True-‬‬
‫נגדיר אם כך‬
‫‪φ = φcell ∨ φinit ∨ φacc ∨ φmove‬‬
‫כאשר‪:‬‬
‫‪ φcell‬מציינת שהשמה מספקת אכן מתארת מטריצה ‪ -‬בפרט היא קובעת שבכל משבצת יש בדיוק אות אחת‪ .‬למשל‪ ,‬בהנתן‬
‫המשתנים ‪ x4,2,a , x4,2,b‬והשמה ‪ g‬המקיימת ) ‪ .g (x4,2,a ) = True = g (x4,2,b‬נקבל כי ‪ g‬לא מתארת מטריצה‪ ,‬היות שהאיבר‬
‫‪ 4, 2‬לא מוגדר היטב ‪ -‬זה כאילו רשום בו גם ‪ a‬וגם ‪ .b‬על כן‪ ,‬בדוגמה זו‪ ,‬נבחר ) ‪,φcell = (x4,2,a ∨ x4,2,b ) ∧ (x4,2,a ∨ x4,2,b‬‬
‫וזה יבטיח לנו שבתא ‪ 4, 2‬תהיה רשומה אות אחת ואות אחת בלבד‪.‬‬
‫לכן במקרה הכללי‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪! ‬‬
‫‪‬‬
‫_ ‪‬‬
‫^‬
‫‪‬‬
‫‪‬‬
‫‪(xi,j,s ) ∧ ‬‬
‫‪(xi,j,s1 ∨ xi,j,s2 )‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪s ,s ∈S‬‬
‫‪‬‬
‫‪ | s∈S {z‬‬
‫‪} | 1 2‬‬
‫‪{z‬‬
‫}‬
‫אין יותר מאות אחת‬
‫יש לפחות אות אחת‬
‫^‬
‫= ‪φcell‬‬
‫‪1≤i≤t(n)+3‬‬
‫)‪1≤j≤t(n‬‬
‫‪ φinit‬מציינת שהשורה הראשונה במטריצה מקודדת את ‪ - c0‬כלומר‬
‫‪∧ . . . ∧ xt(n)+3,1,#‬‬
‫‪φinit = x1,1,# ∧ x2,1,q0 ∧ x3,1,w1 ∧ x4,1,w2 ∧ . . . ∧ xn+2,1,wn ∧ xn+3,1,‬‬
‫‪62‬‬
‫‪10‬‬
‫שבוע ‪12‬‬
‫רדוקציות פולינומיאליות‬
‫‪ φacc‬מציינת שבאחת הקומות יש קונפ ‪ ′‬מקבלת ‪ -‬כלומר שאיפשהו מופיע ‪ qacc‬לכן‬
‫_‬
‫‪xi,j,qacc‬‬
‫= ‪φacc‬‬
‫‪1≤i≤t(n)+3‬‬
‫)‪1≤j≤t(n‬‬
‫‪ φmove‬מציינת שהקונפ’ עוקבות זו לזו ‪ -‬מסתבר שניתן לתאר זאת באמצעות הסתכלות על חלונות בגודל ‪ 3 × 2‬בטבלה‬
‫ובדיקה האם הם חוקיים )כי במעבר מקונפ’ לקונפ’ משתנים רק ‪ 3‬תאים‪ ,‬כפי שניתן לראות בהמשך(‪ ,‬לכן‬
‫^‬
‫)‪legal (i, j‬‬
‫= ‪φmove‬‬
‫‪1≤i≤t(n)+1‬‬
‫‪1≤j≤t(n)−1‬‬
‫כאשר )‪ legal (i, j‬מציין חלון בגודל ‪ 3 × 2‬שמתחיל ב‪ ,(i, j)-‬וחוקי‪ .‬במפורש ‪ -‬תהיה לנו קבוצה סופית ‪ W‬של חלונות‬
‫חוקיים בגודל ‪ ,3 × 2‬ואנחנו נדרוש שלפחות אחד מהחלונות האלה החוקיים האלה יתאר את החלון הנוכחי‪ ,‬כלומר‪:‬‬
‫_‬
‫‪xi,j,s1 ∧ xi+1,j,s2 ∧ xi+2,j,s3 ∧ xi,j+1,s4 ∧ xi+1,j+1,s5 ∧ xi+2,j+1,s6‬‬
‫= )‪legal (i, j‬‬
‫‪(s1 ,s2 ,s3 ,s4 ,s5 ,s6 )∈W‬‬
‫נותר להגיד מי הם כל החלונות החוקיים ‪ ,W‬ולשם כך צריך להסתכל על מעברים ימינה ושמאלה‪:‬‬
‫לכל מעבר )‪ ,δ (q, a) = (q ′ , b, R‬ולכל ‪ ,c1 , . . . , c6 ∈ Γ‬כלומר עבור מעבר מהצורה‬
‫‪c1 c2 c3 b q ′ c4 c5 c6‬‬
‫‪c1 c2 c3 q a c 4 c5 c6‬‬
‫נוסיף את החלונות בגודל ‪ 3 × 2‬הבאים‪:‬‬
‫‪q ′ c4 c5‬‬
‫‪a c 4 c5‬‬
‫וכן החלון הקבוע‬
‫‪c1 c2 c3‬‬
‫‪c1 c2 c3‬‬
‫‪,‬‬
‫‪b q ′ c4‬‬
‫‪q a c4‬‬
‫‪,‬‬
‫‪c3 b q ′‬‬
‫‪c3 q q‬‬
‫‪,‬‬
‫‪c2 c3 b‬‬
‫‪c2 c3 q‬‬
‫‪ .‬היות ש‪ Γ ∪ Q-‬סופי‪ ,‬נקבל כי הוספנו מספר סופי של חלונות‪.‬‬
‫לכל מעבר )‪ ,δ (q, a) = (q ′ , b, L‬כלומר‬
‫‪c1 c2 q ′ c3 b c 4 c5 c6‬‬
‫‪c1 c2 c3 q a c 4 c5 c6‬‬
‫נוסיף חלונות בדומה למקרה הקודם‪.‬‬
‫ניואנס קטן שצריך להתייחס אליו הוא המקרה שאנו מנסים להתקדם שמאלה כאשר הראש הקורא מצביע על התא הראשון‪,‬‬
‫‪′‬‬
‫ובמקרה זה פשוט צריך להוסיף את החלון ‪ , ## qq ab‬ובאופן כללי צריך להוסיף חלונות המתחשבים ב‪ #-‬עבור המקרים בהם‬
‫אנו מסתכלים על קצה הטבלה‪.‬‬
‫מכך שהחלונות מתייחסים לשתי קונפיגורציות שבאות אחת אחרי השנייה‪ ,‬נסיק כי ‪ φmove‬באמת מייצגת קונפיגורציות עוקבות‪.‬‬
‫נשים לב ש‪ legal (i, j)-‬לא ב‪ ,CNF-‬אבל אפשר להמיר אותה לנוסחא ב‪ .CNF-‬היות שאורכה קבוע‪ ,‬לכן אפשר להעביר‬
‫אותה‪ ,‬בזמן פולינומיאלי‪ ,‬היות שהניפוח האקספוננציאלי הוא על קבוע‪ ,‬ולכן גם קבוע‪ .‬קיבלנו אפוא נוסחת ‪ CNF‬אך אנחנו‬
‫רוצים נוסחא ב‪ ,3CNF-‬לכן בלמה הבאה )‪ (10.1‬נראה ש‪.SAT ≤p 3SAT-‬‬
‫לסיום ההוכחה‪ ,‬נראה כי ‪ M‬מקבלת את ‪ φ ⇐⇒ w‬ספיקה‪.‬‬
‫⇐‪ :‬נניח ש‪ M -‬מקבלת את ‪ ,w‬אזי יש ריצה מקבלת‪ ,‬לכן המטריצה שמתארת אותה משרה השמה מספקת את ‪.w‬‬
‫⇒‪ :‬נניח ש‪ φ-‬ספיקה‪ .‬תהי ‪ g‬השמה מספקת‪ .‬מ‪ φcell -‬אנחנו מבינים ש‪ g-‬מתארת מטריצה‪ .‬מ‪ φinit -‬אנחנו יודעים שהשורה‬
‫הראשונה במטריצה מתאת קונפ ‪ ′‬התחלתית של ‪ M‬על ‪ .w‬מ‪ φmove -‬אנחנו יודעים שמעבר בין שורות במטריצה מתאים למעבר‬
‫בין קונפ ‪ ′‬עוקבות‪ .‬מ‪ φacc -‬אנחנו יודעים שסדרת הקונפ ‪ ′‬העוקבות מגיעה לקונפ ‪ ′‬מקבלת‪ .‬סך הכל‪ M ,‬מקבלת את ‪.w‬‬
‫כמובטח‪ ,‬נראה כי ‪.SAT ≤p 3SAT‬‬
‫הרצאה ‪11‬א‬
‫‪63‬‬
‫‪10‬‬
‫רדוקציות פולינומיאליות‬
‫שבוע ‪12‬‬
‫למה ‪.SAT ≤p 3SAT .10.1‬‬
‫הוכחה‪ .‬נבנה רדוקציה באופן הבא‪:‬‬
‫בנייה‪ :‬בהינתן קלט ‪ hϕi‬כאשר ‪ ϕ‬היא נוסחת ‪ ,CNF‬הרדוקציה תבנה נוסחת ‪ 3CNF‬שנסמן ‪ ϕ′‬המוגדרת באופן הבא‪ :‬לכל‬
‫פסוקית ‪ ct‬ב‪:ϕ-‬‬
‫‪ .1‬אם ‪ ct‬מכילה בדיוק ‪ 3‬ליטרלים‪ ,‬נוסיף אותה ל‪.ϕ′ -‬‬
‫‪ .2‬אם ‪ ct‬מכילה פחות מ‪ 3-‬ליטרלים‪ ,‬נשכפל את אחד הליטרלים עד שיהיו לנו שלושה‪ .‬כך למשל הפסוקית ‪ l1‬תהפוך‬
‫ל‪.l1 ∨ l1 ∨ l1 -‬‬
‫‪t‬‬
‫‪ y1t , . . . , yk−1‬ונוסיף את הפסוקיות‬
‫‪ .3‬אם ‪ ct‬מכילה יותר מ‪ 3-‬ליטרלים‪ ,ct = (l1 ∨ . . . ∨ lk ) ,‬נוסיף משתנים חדשים‬
‫הבאות ל‪:ϕ′ -‬‬
‫ ‬
‫‬
‫‬
‫ ‬
‫‬
‫ ‬
‫‪t‬‬
‫‪t‬‬
‫‪t‬‬
‫‪t‬‬
‫‪l1 ∨ y1t ∨ y1t ∧ l2 ∨ y1t ∨ y2t ∧ l3 ∨ y2t ∨ y3t ∧ . . . ∧ lk−1 ∨ yk−2‬‬
‫‪∨ yk−1‬‬
‫‪∧ lk ∨ yk−1‬‬
‫‪∨ yk−1‬‬
‫חישוביות‪ :‬לכל פסוקית‪ ,‬הרדוקציה רושמת לפלט מספר פולינומיאלי של פסוקיות מגודל ‪ ,3‬לכן הרדוקציה רצה בזמן‬
‫שפולינומיאלי ב‪.hϕi-‬‬
‫נכונות‪ :‬ראשית‪ ,‬נניח כי ‪ .hϕi ∈ CNF − SAT‬נסמן את המשתנים ב‪ ϕ-‬ע“י ‪ x1 , . . . , xn‬ותהי ‪ a‬השמה מספקת עבור ‪.ϕ‬‬
‫נוכיח כי ‪ hϕ′ i ∈ 3 − SAT‬בכך שנבנה השמה מספקת ‪ b‬עבור ‪) ϕ′‬וברור ש‪ ϕ′ -‬היא נוסחת ‪ .(3 − CNF‬ראשית‪ b ,‬תסכים‬
‫עם ‪ a‬על ההשמות של ‪ .x1 , . . . , xn‬נסתכל על פסוקית ) ‪ ct = (l1 ∨ . . . ∨ lk‬ב‪ .ϕ-‬בגלל ש‪ ct -‬מסופקת ע“י ‪ ,a‬קיים ‪ i‬עבורו‬
‫‪t‬‬
‫‪ y1t , . . . , yi−1‬וערך ‪FALSE‬‬
‫הליטרל ‪ li‬מקבל ערך אמת בהשמה של ‪ .a‬לכן נגדיר שההשמה ‪ b‬תיתן ערך ‪ TRUE‬למשתנים‬
‫‪t‬‬
‫‪ .yit , . . . , yk−1‬נשים לב שהשמה זו מספקת את כל הפסוקיות בבנייה שלנו שנגזרות מ‪ ,ct -‬וזה נכון לכל ‪ ,ct‬לכן‬
‫למשתנים‬
‫ההשמה ‪ b‬מספקת את כל ‪.ϕ′‬‬
‫בכיוון השני‪ ,‬נניח כי ‪ hϕ′ i‬מסופקת ע“י איזשהי השמה ‪ .b‬נסתכל על ההשמה ‪ a‬שהיא הצמצום של ‪ b‬למשתנים ‪.x1 , . . . , xn‬‬
‫נראה ש‪ a-‬השמה מספקת עבור ‪ ϕ‬ונסיים‪.‬‬
‫נסתכל על כל פסוקית ) ‪ ct = (l1 ∨ . . . ∨ lk‬ב‪ .ϕ-‬נניח בשלילה ש‪ a-‬לא מספקת את ‪ .ct‬אז אף אחד מבין ‪ l1 ∨ . . . ∨ lk‬לא‬
‫מסופק ע“י ‪ .b‬עם זאת‪ ,‬היות ש‪ b-‬מספקת את הפסוקיות המתאימות ב‪:ϕ′ -‬‬
‫‬
‫ ‬
‫‬
‫‬
‫ ‬
‫ ‬
‫‪t‬‬
‫‪t‬‬
‫‪t‬‬
‫‪t‬‬
‫‪∨ yk−1‬‬
‫‪∧ lk ∨ yk−1‬‬
‫‪∨ yk−1‬‬
‫‪l1 ∨ y1t ∨ y1t ∧ l2 ∨ y1t ∨ y2t ∧ l3 ∨ y2t ∨ y3t ∧ . . . ∧ lk−1 ∨ yk−2‬‬
‫אז בגלל ש‪ b-‬לא מספקת את ‪) l1 , . . . , lk‬כלומר הם כולם עם ערך ‪ (FALSE‬היא בהכרח מספקת את‬
‫‬
‫ ‬
‫‬
‫‬
‫ ‬
‫ ‬
‫‪t‬‬
‫‪t‬‬
‫‪t‬‬
‫‪t‬‬
‫‪y1t ∨ y1t ∧ y1t ∨ y2t ∧ y2t ∨ y3t ∧ . . . ∧ yk−2‬‬
‫‪∨ yk−1‬‬
‫‪∨ yk−1‬‬
‫‪∧ yk−1‬‬
‫ונשים לב כי מהפסוקית הראשונה והאחרונה אנו מסיקים ש‪ b-‬חייבת לתת ערך ‪ TRUE‬ל‪ y1 -‬ו‪ FALSE-‬ל‪ .yk−1 -‬מהפסוקית‬
‫‪t‬‬
‫ממשיך‪ .‬אנו מסיקים‬
‫השנייה והלפני‪-‬אחרונה אנו מסיקים ש‪ y2 -‬חייב לקבל ‪ TRUE‬ו‪ yk−1 -‬חייב לקבל ‪ ,FALSE‬וכך התהליך ‬
‫‪t‬‬
‫‪t‬‬
‫‪ , yit ∨ yi+1‬בסתירה להנחה‬
‫‪ ,yi+1‬ולכן ‪ b‬לא מספקת את‬
‫שחייב להיות ‪ i‬כך ש‪ b-‬נותנת ערך ‪ TRUE‬ל‪ yit -‬ו‪ FALSE-‬ל‪-‬‬
‫ש‪ b-‬מספקת את ‪ .ϕ′‬לכן בהכרח ‪ a‬מספקת את ‪.ϕ‬‬
‫‪64‬‬
‫‪10‬‬
‫רדוקציות פולינומיאליות‬
‫‪10.1‬‬
‫שבוע ‪12‬‬
‫בעיית ה‪Subset Sum-‬‬
‫‪ 10.1‬בעיית ה‪Subset Sum-‬‬
‫הגדרה ‪ .10.8‬בעיית ה‪ Subset Sum-‬מוגדרת באופן הבא‪.‬‬
‫ˆ קלט קבוצה )ייתכן עם חזרות( של מספרים טבעיים } ‪ A = {a1 , . . . , an‬ומספר יעד ‪.s ∈ N‬‬
‫ˆ פלט האם יש ‪ B ⊆ A‬כך ש‪ai -‬‬
‫‪P‬‬
‫‪ai ∈B‬‬
‫= ‪.s‬‬
‫נגדיר את שפת בעיית ה‪ Subset Sum-‬על ידי‬
‫)‬
‫‪ai = s‬‬
‫‪P‬‬
‫‪ai ∈B‬‬
‫(‬
‫‪hA, si | ∃B ⊆ A :‬‬
‫= ‪.SS‬‬
‫משפט‪SS ∈ NPC .‬‬
‫הוכחה‪ .‬מתקיים כי ‪ SS ∈ NP‬כי מ“ט יכולה לנחש מהו ‪ B‬ולבדוק‪ .‬או באופן שקול‪ ,‬יש לה מוודא פולינומיאלי )העד הוא‬
‫‪ .(B‬נבחין שהסיבוכיות פולי’ לא משנה מהו בסיס הספירה‪.‬‬
‫נוכיח כי ‪ .SS ∈ NPH‬על ידי כך שנראה ש‪ .3SAT ≤p SS-‬נבנה ‪ f : φCNF → INPUTSSS‬כך שלכל ‪ Θ ∈ 3CNF‬מתקיים‬
‫ש‪ Θ-‬ספיקה אם“ם ‪.hA, si ∈ SS‬‬
‫תהי ‪ Θ‬מעל } ‪ {x1 , . . . , xn‬עם ‪ m‬פסוקיות ‪ .c1 , . . . , cm‬נייצר )‪ 2 (n + m‬מספרים בבסיס ‪ 10‬ובכל אחד מהם יהיו ‪n + m‬‬
‫ספרות‪ .‬לכל משתנה ‪ xi‬יהיו שני מספרים ‪ fi , ti‬שיקבעו לפי ערך האמת של ‪ ,xi‬וגם לכל פסוקית ‪ cj‬נייצר שני מספרים‬
‫‪ qj , pj‬כריפוד‪.‬‬
‫במספרים ‪ ti , fi‬עבור ‪ 1 ≤ i ≤ n‬הספרה ה‪-i-‬ית היא ‪ 1‬וכל השאר אפס‪ ,‬כלומר הם מסמנים את המשתנה ‪ .xi‬עבור‬
‫‪ 1 ≤ j ≤ m‬הספרה ה‪ n + j-‬ב‪ ti -‬היא ‪ 1‬אם ‪ xi‬מופיע חיובי ב‪ ,cj -‬והספרה ה‪ n + j-‬ב‪ fi -‬היא ‪ 1‬אם ‪ xi‬מופיע שלילי‬
‫ב‪ .cj -‬ההצגה היא עשרונית‪.‬‬
‫עבור ‪ 1 ≤ j ≤ m‬הגדרת ‪ pj , qj‬בספרה ה‪ n + j-‬היא ‪ 1‬וכל השאר ‪.0‬‬
‫כמו כן‪ ,‬מספר היעד ‪ s‬יהיה מספר בעל ‪ n + m‬ספרות כך שלכל ‪ 1 ≤ i ≤ n‬הספרה ה‪ i-‬היא ‪ ,1‬ולכל ‪ 1 ≤ j ≤ m‬הספרה‬
‫ה‪ n + j-‬היא ‪ ,3‬כלומר }‪. . 3‬‬
‫‪ .s = 1| .{z‬למשל עבור ‪ n = 3‬ו‪ m = 2-‬נקבל ‪ - s = 11133‬כלומר ‪ s‬הוא המספר אחת‬
‫‪. . 1} 3| .{z‬‬
‫‪ m‬פעמים ‪ n‬פעמים‬
‫עשר אלף‪ ,‬מאה שלושים ושלוש‪.‬‬
‫נשים לב שאם נסכום איברים בתתי קבוצות של } ‪ {t1 , f1 , . . . , tn , fn , p1 , q1 , . . . , pm , qm‬בשיטה של סכום ארוך‪ ,‬אנו נשים‬
‫לב שאין לנו ‪ - carry‬אין מספרים שצריך לזכור ולסחוב איתנו בחישוב‪ ,‬כפי שניתן לראות בדוגמה למטה‪ .‬זה אומר שהסכום‬
‫של כל עמודה בלתי‪-‬תלוי בעמודות האחרות )קרי‪ ,‬לא יתכן מצב שלמשל סכום האיברים בעמודה הימנית ביותר יהיה ‪16‬‬
‫ואז נצטרך לסחוב ‪ 1‬בחישוב של העמודה הבאה(‪.‬‬
‫עתה נראה שהרדוקציה נכונה‪:‬‬
‫⇐‪ :‬תהי ‪ φ‬ספיקה ותהי ‪ f‬השמה מספקת‪ .‬נכניס ל‪ B-‬את המספרים הבאים‪.‬‬
‫לכל ‪ ,1 ≤ i ≤ n‬אם ‪ ,f (xi ) = True‬נכניס את ‪ .ti‬אם ‪ ,f (xi ) = False‬נכניס את ‪ .fi‬כלומר עד כה קיבלנו סכום שממלא‬
‫את ‪ n‬הספרות הראשונות של ‪ s‬באחדות‪ ,‬כרצוי‪.‬‬
‫היות שכל פסוקית מכילה ‪ 3‬ליטרלים‪ ,‬אנחנו רוצים לקבל ‪ 3‬סך הכל מהפסוקית‪ .‬לכן נוסיף ריפוד במידת הצורך‪ .‬כלומר‪,‬‬
‫לכל ‪ ,1 ≤ j ≤ m‬אם ‪ f‬מספקת ‪ 3‬ליטרלים‪ ,‬לא נכניס את ‪ ,qj , pi‬אם היא מספקת ‪ 2‬ליטרלים‪ ,‬נכניס רק את ‪ ,pi‬ואם‬
‫‪P‬‬
‫‪.‬‬
‫היא מספקת ליטרלי אחד‪ ,‬נכניס את ‪ .pi , qj‬לכן ‪ai = s‬‬
‫‪ai ∈B‬‬
‫‪P‬‬
‫= ‪ .s‬מובטח שלכל ‪1 ≤ i ≤ n‬‬
‫⇒‪ :‬אם ‪ hA, si ∈ SS‬אז נגדיר את }‪ f : X → {False, True‬באופן הבא‪ .‬יהי ‪ B‬כך ש‪B-‬‬
‫בדיוק אחד מתוך ‪ ti , fi‬בתוך ‪) B‬כי הספרות ‪ 1, . . . , n‬ב‪ B-‬הן ‪ .(1‬נגדיר ‪ f (xi ) = True‬אם ‪ ti ∈ B‬ו‪f (xi ) = False-‬‬
‫אם ‪ .fi ∈ B‬אזי ‪ f‬אכן מספקת‪ ,‬כי כדי להגיע ל‪ ,3-‬אז לכל פסוקית ‪ ,cj‬נתרם לפחות ‪ 1‬מהליטרלים של ‪.X‬‬
‫דוגמה ‪) .10.1‬הבנייה בהוכחה( עבור ) ‪ Θ = (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x2‬המספרים‬
‫‪65‬‬
‫‪10‬‬
‫רדוקציות פולינומיאליות‬
‫‪10.1‬‬
‫שבוע ‪12‬‬
‫הם )אנו מזכירים שצריך להתייחס לשורות בטבלה כמספרים(‪:‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪3‬‬
‫‪1 2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1 0‬‬
‫‪t1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1 0‬‬
‫‪f1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0 1‬‬
‫‪t2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0 1‬‬
‫‪f2‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0 0‬‬
‫‪t3‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0 0‬‬
‫‪f3‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0 0‬‬
‫‪p1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0 0‬‬
‫‪q1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0 0‬‬
‫‪p2‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0 0‬‬
‫‪q2‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0 0‬‬
‫‪p3‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0 0‬‬
‫‪q3‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0 0‬‬
‫‪p4‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0 0‬‬
‫‪q4‬‬
‫‪3‬‬
‫‪3‬‬
‫‪3‬‬
‫‪3‬‬
‫‪1‬‬
‫‪1 1‬‬
‫‪s‬‬
‫‪66‬‬
‫בעיית ה‪Subset Sum-‬‬
‫‪ 11‬מחלקות סיבוכיות זכרון‬
‫‪11‬‬
‫שבוע ‪12‬‬
‫מחלקות סיבוכיות זכרון‬
‫הגדרה ‪ .11.1‬תהי ‪ M‬מ“ט דטרמינסטית‪ ,‬חד סרטית‪ ,‬העוצרת על כל קלט‪ .‬סיבוכיות הזכרון של ‪ M‬היא פונקציה‬
‫‪ s : N → N‬כך שעל כל קלט באורך ‪ M ,n‬משתמשת לכל היותר ב‪ s (n)-‬תאים‪ .‬במקרה זה נאמר ש‪ M -‬רצה‬
‫בשטח )‪.s (n‬‬
‫עבור מ“ט א“ד סיבוכיות הזכרון )‪ s (n‬היא כמות התאים המקסימלית ש‪ M -‬צריכה על פני כל הריצות האפשריות‬
‫שלה על מילה באורך ‪.n‬‬
‫הגדרה ‪ .11.2‬תהי ‪ .s : N → N‬נגדיר מחלקה‬
‫‪‬‬
‫‪ ‬קיימת מ”ט דטרמיניסטית חד‪-‬סרטית‬
‫‪‬‬
‫עם סיבוכיות זכרון )‪s (n‬‬
‫‪‬‬
‫‪‬‬
‫שמכריעה את ‪L‬‬
‫‪‬‬
‫‪ ‬קיימת מ”ט אי‪-‬דטרמיניסטית חד‪-‬סרטית‬
‫‪‬‬
‫עם סיבוכיות זכרון )‪s (n‬‬
‫‪‬‬
‫‪‬‬
‫שמכריעה את ‪L‬‬
‫∗‪L ⊆ Σ‬‬
‫∗‪L ⊆ Σ‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫= ))‪SPACE (s (n‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫= ))‪NSPACE (s (n‬‬
‫עולה השאלה‪ ,‬מה הקשר בין ‪.TIME, SPACE‬‬
‫הרצאה ‪11‬ב‬
‫משפט‪ .‬לכל פונקציה ‪ f : N → N‬מתקיים ))‪.TIME (f (n)) ⊆ SPACE (f (n‬‬
‫הוכחה‪ .‬אם מ“ט ‪ M‬עוצרת תוך )‪ f (n‬צעדים‪ ,‬היא עוברת בלכל היותר )‪ f (n‬תאים )במקרה הקיצוני היא תתקדם כל הזמן‬
‫ימינה(‪.‬‬
‫אך האם ההכלה השנייה נכונה?‬
‫משפט‪ .‬לכל פונקציה ‪ f : N → N‬מתקיים‬
‫‬
‫))‪.SPACE (f (n)) ⊆ TIME 2O(f (n‬‬
‫הוכחה‪ .‬נבחין שמכונה דטר ‪ ′‬שעוצרת‪ ,‬לא מבקרת באותה קונפ ‪ ′‬פעמיים‪ ,‬כי אחרת‪ ,‬הייתה נכנסת ללולאה‪ ,‬ולא עוצרת‪ .‬נשאל‪,‬‬
‫כמה קונפ ‪ ′‬שונות יש למוכנה עם סיבוכיות זכרון )‪ ?s (n‬כל קונפ ‪ ′‬ניתנת לתיאור כמילה ב‪-‬‬
‫)‪Q × s (n) × Γs(n‬‬
‫תוכן‬
‫↓‬
‫הסרט‬
‫מיקום‬
‫↓‬
‫↓‬
‫לראש‬
‫מצב‬
‫אבל ‪ |Q| = c1‬קבוע ו‪ |Γ| = c2 -‬גם קבוע‪ ,‬לכן מספר הקונפ ‪ ′‬הוא לכל היותר‬
‫))‪= 2log c1 · 2log(s(n)) · 2s(n) log c2 = 2O(s(n‬‬
‫מכך שאין כפילויות‪ ,‬המכונה עוצרת לאחר לכל היותר ))‪ 2O(s(n‬צעדים‪.‬‬
‫‪67‬‬
‫)‪s(n‬‬
‫‪c1 · s (n) · c2‬‬
‫שבוע ‪12‬‬
‫‪ 11‬מחלקות סיבוכיות זכרון‬
‫הגדרה ‪ .11.3‬נגדיר‬
‫‬
‫‬
‫‪SPACE nk‬‬
‫[‬
‫= ‪PSPACE‬‬
‫‪k∈N‬‬
‫‪NSPACE nk‬‬
‫[‬
‫= ‪NPSPACE‬‬
‫‪k∈N‬‬
‫מסקנה ‪ PTIME ⊆ PSPACE .11.1‬ו‪.NPTIME ⊆ NPSPACE-‬‬
‫אבל מה היחס בין ‪ ?NP, PSPACE‬הטענה הבאה תיתן אינטואיציה‪.‬‬
‫טענה ‪.SAT ∈ SPACE (n) .11.1‬‬
‫הוכחה‪ .‬נבנה מ“ט דטרמינסטית ‪ M‬שרצה בשטח לינארי‪ .‬היא תעבור על כל ההשמות האפשריות‪ ,‬ותקבל אם אחת מהן‬
‫מספקת את הנוסחא‪ ,‬רק שבכל שלב‪ ,‬היא תחזיק רק השמה אחת על הסרט ‪ -‬לכן סיבוכיות זמן הריצה יהיה אקספוננציאלי‬
‫אך סיבוכיות הזכרון תהיה לינארית‪.‬‬
‫תהי }⊥{ ∪ ‪ g : 2X → 2X‬פונקציה שממפה השמות להשמות עוקבות באופן שמכסה את כל‬
‫‪X‬‬
‫‪ ,2‬כלומר קיים סידור‬
‫|‪ f1 , f2 , f3 , . . . f2|X‬של ‪ ,2X‬כך שלכל השמה ‪ fi‬יתקיים ‪ g (fi ) = fi+1‬ו‪ .g (f2|X| ) =⊥-‬היא ניתנת לחישוב בשטח לינארי‬
‫)למשל סידור לקסיקוגרפי(‪.‬‬
‫בהנתן נוסחא ‪ φ‬מעל ‪ .X‬תהי ‪ g‬פונקציה שעוברת על כל ההשמות‪ M .‬תפעל באופן הבא‪.‬‬
‫‪ M .1‬כותבת על הסרט את ‪.f1‬‬
‫‪ M .2‬משערכת את ‪ φ‬לפי הנוסחא שרשומה על הסרט‪.‬‬
‫)א( אם השתערכה ל‪ ,T-‬מקבלת‪.‬‬
‫)ב( אם השתערכה ל‪ ,F-‬היא מחשבת את ) ‪ - g (fi‬אם ⊥= ) ‪ g (fi‬היא דוחה ואחרת חוזרת ל‪.2-‬‬
‫משפט‪.NP ⊆ PSPACE .‬‬
‫הוכחה‪ .‬תהי ‪ .L ∈ NP‬אזי קיים מוודא פולינומיאלי ל‪ .L-‬כלומר קיימת מ“ט דטרמינסטית ‪ ,V‬שרצה בסיבוכיות פול‬
‫‪′‬‬
‫)‪ ,t (n‬כך ש‪ V }-‬מקבלת את ‪ .L = {w | ∃c ∈ Σ∗ : w‬נבנה מכונה ‪ M‬שמכריעה את ‪ L‬בזכרון פול ‪ .′‬בהנתן מילה ‪ ,w‬יהי‬
‫‪ c1 , . . . , ck‬סידור של כל המילים ב‪ .Σt(|w|) -‬המכונה עוברת על כל העדים ומריצה את ‪ V‬על ) ‪ (w, ci‬על כל עד ‪ .ci‬כל‬
‫ההרצות משתמשות באותו זכרון‪ .‬מכיוון ש‪ V -‬רצה בזמן פולינומיאלי )|‪ ,t (|w‬היא משתמשת בזכרון פולינומיאלי )|‪.t (|w‬‬
‫אם יש עד ‪ ci‬כך ש‪ V -‬מקבלת את ) ‪ ,(w, ci‬אזי המכונה עוצרת ומקבלת‪ ,‬ואחרת היא עוצרת ודוחה‪ .‬על כן סיבוכיות הזכרון‬
‫שלה היא מעבר על כל העדים‪ ,‬והרצה של ‪ .V‬מכיוון ש‪ V -‬רץ בזמן פולינומיאלי‪ ,‬מתקבל סך הכל זכרון פולינומיאלי‪ ,‬בפרט‬
‫ב‪.O (t (|w|))-‬‬
‫מסקנה ‪.P ⊆ NP ⊆ PSPACE ⊆ NPSPACE .11.2‬‬
‫‪68‬‬
‫‪ 11‬מחלקות סיבוכיות זכרון‬
‫שבוע ‪12‬‬
‫הגדרה ‪ .11.4‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-NPSPACE‬קשה )‪ (NPSPACE − H‬אם לכל שפה ‪ L′ ∈ NPSPACE‬מתקיים‬
‫‪.L′ ≤p L‬‬
‫‪′‬‬
‫‪′‬‬
‫נאמר ש‪ L-‬היא ‪-PSPACE‬קשה )‪ (PSPACE − H‬אם לכל שפה ‪ L ∈ PSPACE‬מתקיים ‪.L ≤p L‬‬
‫הגדרה ‪ .11.5‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-PSPACE‬שלמה )‪ (PSPACE − C‬אם‪:‬‬
‫‪) .1‬חסם עליון( ‪.L ∈ PSPACE‬‬
‫‪) .2‬חסם תחתון( ‪.L ∈ PSPACE − H‬‬
‫והגדרה דומה מתקבלת עבור ‪.NPSPACE‬‬
‫הערה | על ההגדרה‬
‫למה הגדרנו שפה ‪-PSPACE‬קשה באמצעות רדוקציה פולינומאילית בזמן )‪ (L′ ≤p L‬ולא פולינומיאלית במקום?‬
‫נשים לב שכל שפה ‪ L′ ∈ PSPACE‬ניתן להוריד ברדוקציה בסיבוכיות מקום פולינומיאלית לכל שפה לא טריוויאלית‬
‫‪ - L‬כי אם ‪ L′ ∈ PSPACE‬אז יכלנו לקחת רדוקציה שפשוט פותרת את ‪ ,L′‬כלומר בניית הרדוקציה הייתה נעשית‬
‫באמצעות לקיחת מ“ט ‪ M‬שפותרת את ‪ L′‬בסיבוכיות מקום פולינומיאלית )וקיימת כזו מההנחה ‪(L′ ∈ PSPACE‬‬
‫∈ ‪ w′‬שנבחר‬
‫ואז אם ‪ M‬מקבלת מילה כלשהי‪ ,‬אז הרדוקציה תחזיר מילה ‪ ,w ∈ L‬ואחרת תחזיר מילה כלשהי ‪/ L‬‬
‫מראש )קיימות כאלה מילים מההנחה ש‪ L-‬לא טריוויאלית(‪.‬‬
‫כלומר‪ ,‬כדי שההגדרה תהיה מעניינת ויהיה בכלל על מה לדבר‪ ,‬צריך רדוקציה שפולינומיאלית בזמן ולא במקום‪.‬‬
‫)בפרט כל רדוקציה שחזקה יותר מ‪ ,P-‬כמו למשל רדוקציה ב‪ ,PSPACE-‬לא תיתן לנו מידע לגבי בעיות ב‪.(P-‬‬
‫נותר להבין מה הקשר בין ‪ .NPH, PSPACE − H‬בפרט נרצה לדעת האם ‪) NP = PSPACE‬למעשה זה לא ידוע!(‪.‬‬
‫הערה‪ .‬נניח שיש לנו שפה ‪ L‬שהיא ‪-NPSPACE‬קשה‪ .‬אם ‪ L ∈ NP‬אז ‪ ,NP = PSPACE‬ואם ‪ L ∈ P‬אז ‪.P = PSPACE‬‬
‫כיום לא ידוע אם קיימת שפה כזו‪.‬‬
‫‪69‬‬
‫‪ 11‬מחלקות סיבוכיות זכרון‬
‫‪11.1‬‬
‫‪11.1‬‬
‫שבוע ‪13‬‬
‫בעיות הריקנות והאוניברסליות‬
‫בעיות הריקנות והאוניברסליות‬
‫ניזכר בבעיות הריקנות והאוניברסליות )ראו ‪:(4.1‬‬
‫הרצאה ‪12‬א‬
‫הגדרה ‪ .11.6‬נגדיר‬
‫}‪ A‬הוא ‪ NFA‬כך ש‪EMPTYNFA = {hAi : L (A) = ∅ -‬‬
‫}‪ A‬הוא ‪ NFA‬כך ש‪ALLNFA = {hAi : L (A) = Σ∗ -‬‬
‫מתקיים ‪ EMPTYNFA ∈ P‬כי ‪ EMPTYNFA ∈ P‬שכן אנחנו יכולים לבדוק באמצעות אלגוריתם ‪ BFS‬האם יש מסלול למצב‬
‫מקבל )ו‪ P-‬סגורה למשלים(‪.‬‬
‫∗‬
‫כמו כן‪) ALLDFA ∈ P ,‬שימו לב‪ DFA :‬ולא ‪ (NFA‬כי עבור ‪ A DFA‬מתקיים ‪ A ∈ ALLDFA‬אם“ם ‪ L (A) = Σ‬אם“ם‬
‫‬
‫∅ = ‪ L A‬אם“ם ‪ ,A ∈ EMPTYNFA‬ובגלל שהבנייה של ‪ A‬מתקבלת מהחלפת המצב הדוחה והמקבל אז האלגוריתם‬
‫פולינומיאלי‪.‬‬
‫בנייה זו לא עובדת עבור ‪) NFA‬היזכרו בדיון לאחר ‪ ,(4.1‬לכן ננסה לראות מה כן אפשר להגיד על ‪ - ALLNFA‬בפרט נראה‬
‫כי ‪.ALLNFA ∈ NPSPACE‬‬
‫נשים לב שעבור ‪ A NFA‬ניתן לבדוק האם )‪ w ∈ L (A‬בזמן פולי’‪:‬‬
‫נגדיר ‪ Aw DFA‬עבורו }‪) L (Aw ) = {w‬בגרף של ‪ Aw‬יהיה מסלול ישיר מהמצב ההתחלתי למצב המקבל שמתאים ל‪,w-‬‬
‫ובהינתן כל ”סטייה“ מהמילה ‪ w‬אנחנו ניכנס לבור דוחה(‪ .‬ניתן בזמן פולי’ לחשב אוטומט מכפלה של ‪ ,A, Aw‬ואז באמצעות‬
‫השפה של אוטומט המכפלה אפשר להכריע כי )‪ w ∈ L (A‬אם“ם ∅ =‪.L (A) ∩ L (Aw ) 6‬‬
‫טענה שגויה‬
‫∈ ‪ w‬כך ש‪ |w|-‬פולינומיאלי ב‪.A-‬‬
‫טענה‪) .‬שגויה!( אם ∗‪ L (A) 6= Σ‬אז יש מילה )‪/ L (A‬‬
‫לו טענה זו הייתה נכונה היינו מסיקים ממנה כי ‪ ,ALLNFA ∈ NP‬כי אפשר בזמן פולינומיאלי האם )‪.w ∈ L (A‬‬
‫נראה )כהעשרה( דוגמה נגדית לטענה הנ“ל‪:‬‬
‫נגדיר משפחת ‪-NFA‬ים ‪ A1 , A2 , . . .‬כך שלכל ‪ i ≥ 1‬מתקיים ש‪ ,L (Ai ) 6= Σ∗ -‬הגודל של ‪ Ai‬פולי’ ב‪ ,i-‬וכן אורך המילה‬
‫הקצרה ביותר שלא ב‪ L (Ai )-‬אקספוננציאלי ב‪.A-‬‬
‫תהי ‪ p1 , p2 , . . .‬סדרת המספרים הראשוניים )קרי‪ .(p1 = 2, p2 = 3, p3 = 5, . . . ,‬לכל ‪ i‬נגדיר ‪ Ai NFA‬מעל הא“ב }‪Σ = {a‬‬
‫כך ש‪-‬‬
‫‪mod pi‬‬
‫‪mod p2 ∨ . . . ∨ k 6= 0‬‬
‫‪mod p1 ∨ k 6= 0‬‬
‫‬
‫= ‪L (Ai ) = ak | k = 0 ∨ k‬‬
‫‪6 0‬‬
‫ניתן להגדיר ‪ Ai‬כזו עם ‪ i + 1‬מצבים התחלתיים } ‪ {q0 , . . . , qi‬כך שמ‪ q0 -‬נקבל את ‪ ,ε‬ומ‪) qj -‬לכל ‪ (1 ≤ j ≤ i‬נעבור‬
‫בלולאה עם ‪ pj‬מצבים שכולם מקבלים למעט ‪ - qj‬לכן מ‪ qj -‬אנו מקבלים מילים מהצורה ‪ ak‬כך ש‪ .k 6= 0 mod pj -‬מספר‬
‫המצבים ב‪ Ai -‬הוא ‪ 1 + p1 + p2 + . . . + pi‬וידוע ש‪ pi -‬הוא )‪) O (i log i‬ראו משפט צ’בישב מתורת המספרים האלמנטרית(‪,‬‬
‫ולכן הגודל של ‪ Ai‬אכן פולי’ ב‪.i-‬‬
‫‪i‬‬
‫‪Q‬‬
‫∈ ‪ ak‬שכן ‪ k 6= 0‬וכן ‪ k ≡ 0 mod p‬לכל } ‪ .p ∈ {p1 , . . . , pi‬לכן ∗‪.L (Ai ) 6= Σ‬‬
‫= ‪ .k‬נשים לב ש‪/ L (Ai )-‬‬
‫יהי ‪pk‬‬
‫‪k=1‬‬
‫עתה‪ ,‬נסתכל על מספר ‪ x‬כך ש‪ .x < k-‬אזי ישנו מספר ראשוני } ‪ p ∈ {p1 , . . . , pi‬כך ש‪) p ∤ x-‬כלומר ‪ p‬לא מופיע בפירוק‬
‫של ‪ x‬לראשוניים(‪ ,‬ולכן ‪ x 6= 0 mod p‬ולכן ) ‪ ,ax ∈ L (Ai‬לכן ‪ ak‬היא המילה הקצרה ביותר שאינה ב‪ ,L (Ai )-‬וכמובן ‪k‬‬
‫אקספוננציאלי ב‪ ,i-‬לכן סיימנו‪.‬‬
‫‪70‬‬
‫‪ 11‬מחלקות סיבוכיות זכרון‬
‫‪11.1‬‬
‫שבוע ‪13‬‬
‫בעיות הריקנות והאוניברסליות‬
‫אז מה כן אפשר להגיד אם הטענה הקודמת שגויה?‬
‫טענה נכונה‬
‫∈ ‪ w‬כך ש‪.|w| ≤ 2|Q| -‬‬
‫טענה‪) .‬נכונה!( אם ∗‪ L (A) 6= Σ‬אז יש מילה )‪/ L (A‬‬
‫הוכחה‪ w .‬עד לחוסר הריקנות של ‪ .A‬כזכור כאן ‪ A‬לא מתקבל ע“י סתם החלפת המצבים שכן הוא ‪ ,NFA‬אלא‬
‫למשל באמצעות ה‪ .Subset Construction-‬לכן ‪ w‬כתוב על מסלול פשוט מ‪) Q0 -‬המצב ההתחלתי ב‪ (A-‬ל‪ F ′ -‬ב‪,A-‬‬
‫ואורך מסלול זה הוא לכל היותר |‪.2|Q‬‬
‫טענה ‪.ALLNFA ∈ NPSPACE .11.2‬‬
‫הוכחה‪ .‬מהטענה הקודמת‪ ,‬אנו מסיקים שכדי להראות ש‪ ,ALLNFA ∈ NPSPACE -‬מספיק לעבור על כל המילים ‪ w‬שאורכן‬
‫∈ ‪ .w‬אולם |‪ 2|Q‬הוא גודל אקספוננציאלי‪ ,‬ולכן כדי להשתמש בכמות זכרון פולי’ לא‬
‫קטן מ‪ ,2|Q| -‬ולבדוק האם )‪/ L (A‬‬
‫נשמור את כל המילה ‪ w‬אלא נבצע מעין ‪ On − the − fly Subset Construction‬באמצעות מ“ט א“ד ‪ ,M‬שתנחש כל פעם‬
‫אות נוספת‪ ,‬ותראה לאילו מצבים היא מובילה אותנו‪ .‬אם בשלב מסויים‪ ,‬אחרי רצף אותיות ‪ ,σ1 , . . . , σk‬אנחנו מגיעים‬
‫למצב ש‪ ,S ∩ F = ∅-‬זה אומר שאין ריצה מקבלת של ‪ A‬על ‪ ,w = σ1 · . . . · σk‬ולכן נקבל את המילה‪.‬‬
‫קונקרטית‪ ,‬בהינתן ‪ M ,A NFA‬תפעל כך‪:‬‬
‫‪ .1‬נאתחל ‪c = 0‬‬
‫‪.S := Q0 ,‬‬
‫‪ .2‬כל עוד |‪:c ≤ 2|Q‬‬
‫)א( אם ∅ = ‪ S ∩ F‬אז נעצור ונקבל‪.‬‬
‫)ב( אחרת‪ ,‬ננחש )באמצעות הא“ד של ‪ (M‬אות ‪ σ ∈ Σ‬ונבצע השמה )‪ ,S := δ (S, σ‬ונבצע ‪.c + +‬‬
‫‪ .3‬אם הגענו לשלב זה )כלומר לא קיבלנו את המילה בשלב ‪ ,(2‬נדחה את המילה‪.‬‬
‫∈ ‪ w‬כך ש‪ ,|w| ≤ 2|Q| -‬ולכן יש ריצה של ‪ M‬שתנחש את ‪ w‬ותקבל‬
‫נכונות‪ :‬ראינו שאם ∗‪ L (A) 6= Σ‬אז יש מילה )‪/ L (A‬‬
‫את ‪ .A‬אם ∗‪ L (A) = Σ‬אז כמובן כל ריצה של ‪ M‬תדחה‪.‬‬
‫זכרון‪ :‬בכל רגע נתון אנחנו שומרים רק את ‪ c - c, S‬הוא מספר הקטן מ‪ 2|Q| -‬ולכן צריך רק |‪ |Q‬תאים כדי לייצג אותו‬
‫)בבינארית למשל(‪ S ⊆ Q ,‬ולכן ‪ ,|S| ≤ Q‬ולכן ‪ c, S‬דורשים כמות זכרון פולי’‪.‬‬
‫הערה‪ .‬אלגוריתם זה רץ בזמן שאינו פולי’ )אלא אקספוננציאלי( ולכן לא הכנסנו את השפה ל‪.NP-‬‬
‫בתרגול נוכיח את משפט סביץ’ שיעזור לנו להסיק ‪ PSPACE = NPSPACE‬ובפרט נסיק ‪.ALLNFA ∈ PSPACE‬‬
‫‪′‬‬
‫משפט סביץ‬
‫‬
‫משפט‪ .‬לכל פונקציה )‪ S (n) ∈ Ω (log n‬מתקיים )‪.NPSPACE (S (n)) ⊆ SPACE S 2 (n‬‬
‫הוכחה‪ .‬ראו משפט ‪ 25‬מהתרגול‪.‬‬
‫מסקנה ‪.ALLNFA ∈ PSPACE .11.3‬‬
‫הוכחה‪ .‬ממשפט סאביץ’ נובע ‪ PSPACE = NPSPACE‬ולכן הדרוש מתקיים‪.‬‬
‫‪71‬‬
‫‪ 11‬מחלקות סיבוכיות זכרון‬
‫‪11.1‬‬
‫שבוע ‪13‬‬
‫בעיות הריקנות והאוניברסליות‬
‫טענה ‪.ALLNFA ∈ PSPACE − H .11.3‬‬
‫הוכחה‪ .‬תהי ‪ .L ∈ PSPACE‬נרצה להראות ש‪ ,L ≤p ALLNFA -‬ולשם כך נראה באופן שקול כי ‪ - L ≤p ALLNFA‬אותה‬
‫∈‪w‬‬
‫∈ )‪/ L ⇔ f (w‬‬
‫רדוקציה ‪ f‬מתאימה ל‪ L ≤p ALLNFA -‬כי אם ‪ w ∈ L ⇔ f (w) ∈ ALLNFA‬אז באופן שקול ‪/ ALLNFA‬‬
‫כלומר ‪.w ∈ L ⇔ f (w) ∈ ALLNFA‬‬
‫על כן‪ ,‬אנו רוצים לבנות פונק’ ‪ f‬הניתנת לחישוב בזמן פולי’‪ ,‬שבהינתן מילה‬
‫∈ ‪.w‬‬
‫∗‪/ L ⇔ L (A) = Σ′‬‬
‫∗‬
‫‪ w ∈ Σ‬מחזירה ‪ A NFA‬כך ש‪-‬‬
‫‪13‬‬
‫מהיות ‪ ,L ∈ PSPACE‬קיימת מ“ט דטר’ ‪ M‬שמכריעה את ‪ L‬בשטח פולי’ )‪.s (n‬‬
‫ברעיון ההוכחה‪ ,‬נבנה את ‪ A‬כך שיקבל קלט ‪ x‬אם“ם מתקיים אחד התנאים הבאים‪:‬‬
‫‪ x .1‬לא קידוד חוקי של ריצה של ‪ M‬על ‪.w‬‬
‫‪ x .2‬קידוד של ריצה דוחה של ‪ M‬על ‪.w‬‬
‫הא“ב של ‪ A‬הוא }‪.Σ′ = Γ ∪ (Q × Γ) ∪ {#‬‬
‫‪14‬‬
‫כל קונפ’ תקודד ע“י רצף אותיות באופן הבא‪.#γ1 γ2 . . . (q, γi ) . . . γs(n) # :‬‬
‫∗‬
‫∈ ‪ w‬אז אין אף ריצה מקבלת‪ ,‬ולכן תמיד אחד מבין התנאים ‪ 1, 2‬חייב להתקיים‪ ,‬לכן לכל ) ‪ A ,x ∈ (Σ′‬תקבל‬
‫אם ‪/ L‬‬
‫את ‪) x‬אפילו אם ‪ x‬במקרה מקודד באופן חוקי את הריצה של ‪ M‬על ‪ w‬עדיין נקבל אותה כי אין ריצה מקבלת מההנחה‬
‫∈ ‪ .(w‬מנגד אם ‪ w ∈ L‬אז כן יש ‪ x‬שמתאר ריצה חוקית מקבלת של ‪ M‬על ‪ ,w‬ולכן לא נקבל אותו‪ .‬כלומר‬
‫‪/ L‬‬
‫∈ ‪ w‬כנדרש‪.‬‬
‫∗‪/ L ⇔ L (A) = Σ′‬‬
‫כדי להשלים את ההוכחה נותר לתאר איך בדיוק ה‪ A NFA-‬תעשה את מה שאנחנו רוצים‪ .‬נסמן ‪.w = a1 a2 . . . an‬‬
‫כדי לבדוק שמילה ‪) x‬לא( מתארת ריצה חוקית מקבלת נבדוק ארבעה דברים ‪ -‬ש‪ x-‬מתארת קונפ’ חוקיות‪ ,‬שהקונפ’ הראשונה‬
‫היא ההתחלתית‪ ,‬שכל הקונפ’ ש‪ x-‬מקודדת עוקבות זו לזו ושהריצה מקבלת‪:‬‬
‫‪ .1‬הריצה מקבלת ‪ -‬פשוט נבדוק האם יש אות ב‪ {qrej } × Γ-‬המופיעה ב‪ ,x-‬אם כן נקבל )ואחרת נדחה(‪.‬‬
‫‪ .2‬קונפ’ חוקיות ‪ -‬נבדוק האם ‪ x‬היא מהצורה‬
‫‪2‬‬
‫‪1‬‬
‫)‪#σ11 σ21 . . . σs(n‬‬
‫)‪#σ12 σ22 . . . σs(n‬‬
‫‪#...‬‬
‫לשם כך ניקח מצב התחלתי ‪ q#‬שמצפה לקרוא ‪) #‬אם הוא קורא משהו אחר הוא מעביר לבור מקבל(‪ ,‬והוא יעביר‬
‫אותנו למצב ‪ q1‬שיצפה לראות אות ב‪ ,Γ ∪ (Q × Γ)-‬והוא יעביר אותנו למצב ‪) q2‬אלא אם שוב קראנו משהו אחר ואז‬
‫הוא יעבירנו לבור מקבל( וכך נמשיך עד ל‪ qs(n) -‬שיעבירנו ל‪ q# -‬ומשם נמשיך באותו תהליך‪ .‬כמו כן‪q# , q2 , . . . , qs(n) ,‬‬
‫‪1‬‬
‫‪2‬‬
‫)‪.(#σ11 σ21 . . . σs(n‬‬
‫)‪#σ12 σ22 . . . σs(n‬‬
‫יהיו מקבלים )רק ‪ q1‬לא כי זה אומר ש‪ x-‬אכן מהצורה ‪# . . .‬‬
‫‪ .3‬קונפ’ ראשונה התחלתית ‪ -‬באופן דומה לסעיף הקודם )וגם בדומה לאוטומט ‪ Aw‬שראינו קודם( פשוט נבדוק ש‪x-‬‬
‫מתחילה ב‪) #a1 a2 . . . an . . . #-‬כאשר אורך מחרוזת זו הוא ‪ ,(s (n) + 2‬כמתואר באיור הבא‪:‬‬
‫} {\ ‪Σ′‬‬
‫}‪Σ′ \{#‬‬
‫} {\ ‪Σ′‬‬
‫}) ‪Σ′ \{(q0 , a1‬‬
‫} ‪Σ′ \{an‬‬
‫‪#‬‬
‫‪...‬‬
‫‪. . . an‬‬
‫‪13‬כאשר ‪ Σ‬היא הא“ב של השפה ‪ L‬ו‪ Σ′ -‬היא הא“ב של ‪.A‬‬
‫‪14‬כאשר ‪ Γ, Q‬הם א“ב העבודה וקבוצת המצבים של ‪ M‬בהתאמה‪.‬‬
‫‪72‬‬
‫} ‪Σ′ \{a2‬‬
‫‪a2‬‬
‫) ‪(q0 , a1‬‬
‫‪#‬‬
‫‪ 11‬מחלקות סיבוכיות זכרון‬
‫‪11.1‬‬
‫שבוע ‪13‬‬
‫בעיות הריקנות והאוניברסליות‬
‫‪ .4‬קונפ’ עוקבות ‪ -‬בדומה למה שהיה ב‪ ,SAT-‬נסתכל על חלונות ונוודא תקינות‪ .‬נסמן ב‪ next (σi−1 , σi , σi+1 )-‬את‬
‫הערך שאנחנו מצפים לראות במקום ה‪ i-‬בקונפ’ העוקבת לקונפ’ הנוכחית‪ .‬כך למשל‬
‫)‪δ (q, a) = (q ′ , d, L‬‬
‫‪‬‬
‫‪b‬‬
‫)‪δ (q, a) = (q ′ , d, R‬‬
‫)‪(q ′ , b‬‬
‫= )‪next ((q, a) , b, c‬‬
‫וכן‬
‫)‪δ (q, b) = (q ′ , d, L‬‬
‫‪‬‬
‫‪d‬‬
‫)‪δ (q, b) = (q ′ , d, R‬‬
‫‪d‬‬
‫= )‪next (a, (q, b) , c‬‬
‫כדי לממש זאת ב‪ ,NFA-‬יהיה לנו חוג עצמי שינסה לנחש מתי תבוא הפרה‪ ,‬ואז יהיו לנו כ‪ |Σ′ | -‬מצבים שכל אחד‬
‫‪3‬‬
‫מהם יזכור על איזו שלשה ‪ σi−1 , σi , σi+1‬אנחנו מסתכלים כרגע‪ .‬אז היא תקרא כ‪ s (n)-‬אותיות עד שתגיע לאות‬
‫‪ σi′‬שנמצאת במיקום ה‪ i-‬בקונפ’ הבאה‪ ,‬ותבדוק האם ‪ - next (σi−1 , σi , σi+1 ) = σi′‬אם כן היא תדחה את המילה‬
‫ואחרת תקבל‪ ,‬כמתואר באיור הבא‪ .‬שימו לב שמשמעות החצים למטה וה‪ · · · -‬הן שיש לנו עוד מסלולים כמו השניים‬
‫שציירנו ‪ -‬מסלול אחד לכל שלשת אותיות‪.‬‬
‫‪Σ′‬‬
‫) ‪next(σ1 , σ2 , σ3‬‬
‫‪...‬‬
‫)‪s(n‬‬
‫‪...‬‬
‫‪σ3‬‬
‫‪σ2‬‬
‫‪Σ′ σ 1‬‬
‫) ‪Σ′ \next(σ1 , σ2 , σ3‬‬
‫‪Σ′‬‬
‫) ‪Σ′ \next(σ1′ σ2′ , σ3′‬‬
‫‪σ1′‬‬
‫) ‪next(σ1′ σ2′ , σ3′‬‬
‫‪. . . s(n) . . .‬‬
‫‪σ3′‬‬
‫‪σ2′‬‬
‫‪...‬‬
‫‪...‬‬
‫‪...‬‬
‫‪Σ′‬‬
‫‪73‬‬
‫‪ 11‬מחלקות סיבוכיות זכרון‬
‫‪11.1‬‬
‫שבוע ‪13‬‬
‫בעיות הריקנות והאוניברסליות‬
‫דוגמאות לרדוקציות‬
‫עתה כשיש לנו שפה שהיא ‪-PSPACE‬קשה‪ ,‬אנחנו יכולים להשתמש ברדוקציה כדי להראות ששפות נוספות הן ‪-PSPACE‬קשות‪.‬‬
‫נראה לכך כמה דוגמאות‪.‬‬
‫דוגמה ‪ A1 } .11.1‬ו‪-NFA A2 -‬ים כך ש‪.CONTNFA = {hA1 , A2 i | L (A1 ) ⊆ L (A2 ) -‬‬
‫‬
‫נשים לב כי ‪ A ⊆ B‬אם“ם ∅ = ‪ A ∩ B‬כלומר ) ‪ L (A1 ) ⊆ L (A2‬אם“ם ∅ = ) ‪ L (A1 ) ∩ L (A2‬אם“ם ∅ = ‪,L A1 × A2‬‬
‫כאשר ‪ A1 × A2‬הוא אוטומט מכפלה ו‪ A2 -‬מתקבל מה‪ .Subset − Construction-‬נשים לב כי | ‪A1 × A2 = |Q1 | · 2|Q2‬‬
‫שזה אקספוננציאלי‪ ,‬אבל אנחנו יכולים לבצע ‪ On The Fly Subset − Construction‬בדומה למה שעשינו בטענה ‪ ,11.2‬ומכך‬
‫להסיק ‪.CONTNFA ∈ PSPACE‬‬
‫נראה ש‪ CONTNFA ∈ PSPACE − H-‬באמצעות רדוקציה ‪.ALLNFA ≤ CONTNFA‬‬
‫‪15‬‬
‫כלומר‪ ,‬נמצא רדוקציה ‪ f‬שבהינתן ‪NFA‬‬
‫∗‬
‫‪ A‬תחזיר זוג ‪-NFA‬ים ‪ A1 , A2‬כך ש‪ L (A) = Σ∗ -‬אם“ם ) ‪ .L (A1 ) ⊆ L (A2‬מכך ש‪ L (A) ⊆ Σ -‬מתקיים‬
‫∗‬
‫‪L (A) = Σ‬‬
‫אם“ם )‪ ,Σ∗ ⊆ L (A‬לכן נוכל לבחור את ‪ A1‬להיות אוטומט עם מצב יחיד ומקבל )כלומר ∗‪ (L (A1 ) = Σ‬ו‪ ,A2 = A-‬לכן‬
‫מתקיים ∗‪ L (A) = Σ‬אם“ם ) ‪ L (A1 ) ⊆ L (A2‬כנדרש‪ .‬נשים לב כמובן שרדוקציה זו אכן פולי’‪.‬‬
‫דוגמה ‪ DFA D1 } .11.2‬ו‪ NFA A2 -‬כך ש‪.CONTDFA,NFA = {hD1 , A2 i | L (D1 ) ⊆ L (A2 ) -‬‬
‫שפה זו יותר קלה מ‪-‬‬
‫‪ CONTNFA‬לכן היא גם ב‪ .PSPACE-‬כמו כן‪ ,‬אותה רדוקציה מהדוגמה הקודמת עובדת גם כאן‪ ,‬לכן ∈ ‪CONTDFA,NFA‬‬
‫‪.PSPACE − H‬‬
‫דוגמה ‪ NFA A1 } .11.3‬ו‪ DFA D2 -‬כך ש‪.CONTNFA,DFA = {hA1 , D2 i | L (A1 ) ⊆ L (D2 ) -‬‬
‫גם שפה זו ב‪ ,PSPACE-‬אולם הפעם לא נוכל להראות ‪ CONTNFA,DFA ∈ PSPACE − H‬באמצעות הרדוקציה הקודמת‪.‬‬
‫הרדוקציה לא עובדת כאן כי אז בחרנו את ‪) A2‬שכאן נקרא ‪ (D2‬להיות ה‪ ,A NFA-‬אבל בגלל ש‪ D2 -‬חייב להיות ‪,DFA‬‬
‫אז הרדוקציה לא תקינה )אנחנו שמים ‪ NFA‬במקום שבו אנו מצפים לקבל ‪.(DFA‬‬
‫‬
‫למעשה‪ ,‬בעיה זו קללה אינה ‪-PSPACE‬קשה‪ .‬מסתבר ש‪ ,CONTNFA,DFA ∈ P-‬כי ניתן להכריע האם ∅ = ‪,L A1 × D2‬‬
‫בזמן פולי’ )שכן הפעם ‪ D2‬מתקבל פשוט מהחלפת המצב המקבל והדוחה‪ ,‬כי ‪ D2‬הוא ‪.(DFA‬‬
‫דוגמה ‪ DFA D} .11.4‬וקיים ‪ DFA‬שקול עם לכל היותר ‪ k‬מצבים | ‪.MINDFA = {hD, ki‬‬
‫נשים לב שלא משנה אם ‪ k‬מיוצג בבינארית או אונארית שכן אם ‪ |D| < k‬נוכל לקבל את המילה ישר‪ ,‬ואם |‪ k ≤ |D‬אז‬
‫גודל הקלט עדיין יותר גדול מהיצוג של ‪ k‬בכל בסיס‪.‬‬
‫מתקיים ‪ MINDFA ∈ P‬כפי שראינו באלגוריתם המזעור )ראו משפט ‪.(4.2‬‬
‫דוגמה ‪ NFA D} .11.5‬וקיים ‪ NFA‬שקול עם לכל היותר ‪ k‬מצבים | ‪.MINNFA = {hD, ki‬‬
‫אפשר להראות כי )‪ MINNFA ∈ NPSPACE ( = PSPACE‬באמצעות בחירת עד שיהיה ‪ NFA‬שקול קטן )ובפרט גודלו‬
‫פולינומיאלי(‪ ,‬אך לא נפרט על כך לעומק‪.‬‬
‫∗‬
‫נראה כי ‪ .MINNFA ∈ PSPACE − H‬נראה ‪ .ALLNFA ≤ MINNFA‬נשים לב של‪ A-‬יש מצב יחיד אם“ם ‪.L (A) = ∅∨L (A) = Σ‬‬
‫לכן‪ ,‬בהינתן ‪ ,A NFA‬הרדוקציה ‪ f‬תבדוק האם ∅ = )‪) L (A‬זו בעיית הריקנות וראינו שאותה ניתן לפתור בזמן פולי’‬
‫גם עבור ‪-NFA‬ים( ‪ -‬אם לא אז ‪ f‬תחזיר ‪ ,hA, 1i‬ואחרת ‪ f‬תחזיר ‪ hB, 1i‬כאשר ‪ B‬הוא אוטומט המתאר שפה שאנחנו‬
‫יודעים שאינה טריוויאלית‪ ,‬כמו למשל }‪.L = {w : |w| = 1‬‬
‫∈ ‪ hB, 1i‬כי )‪ L (B‬אינה שפה טריוויאלית ולכן לא ניתנת‬
‫∈ ‪ ,A‬אם ∅ = )‪ L (A‬אז אכן ‪/ MINNFA‬‬
‫נשים לב שאם ‪/ ALLNFA‬‬
‫לתיאור באמצעות מצב יחיד‪ .‬אם ∅ =‪ L (A) 6‬עדיין )‪ L (A‬אינה טריוויאלית ולכן לא ניתנת לתיאור באמצעות מצב יחיד‬
‫∈ ‪.hA, 1i‬‬
‫ולכן ‪/ MINNFA‬‬
‫אם ‪ A ∈ ALLNFA‬כמובן ‪.hA, 1i ∈ MINNFA‬‬
‫‪15‬על אף שהראינו רק ש‪ ,ALLNFA ∈ PSPACE − H-‬לפי משפט אימרמן מתקיים ))‪ NSPACE (S (n)) = coNSPACE (s (n‬לכל ‪,s (n) ≥ log n‬‬
‫ובפרט ‪ .NPSPACE = coNPSPACE‬לכן ‪.ALLNFA ∈ PSPACE − H‬‬
‫‪74‬‬
‫הרצאה ‪12‬ב‬
‫‪12‬‬
‫סיבוכיות זכרון תת‪-‬לינארית‬
‫‪12‬‬
‫שבוע ‪14‬‬
‫סיבוכיות זכרון תת‪-‬לינארית‬
‫אנו מעוניינים לדבר על סיבוכיות תת‪-‬לינארית‪ .‬בגלל שבמודל הנוכחי של מ“ט אנחנו נצטרך כמות לינארית של זמן וזכרון‬
‫רק כדי לקרוא את הקלט‪ .‬כלומר‪ ,‬כל מ“ט שרצה בזמן תת‪-‬לינארי אפילו לא תספיק לסיים לקרוא את הקלט‪.‬‬
‫‪16‬‬
‫זמן‬
‫תת‪-‬לוגריתמי‪ ,‬לא מעניין במודל המ“ט‪ ,‬היות שאין לנו גישת ‪ random − access‬לזכרון‪.‬‬
‫על כן‪ ,‬נגדיר מודל חדש של מ“ט עם כמה סרטים )וגם כמה ראשים קוראים(‪:‬‬
‫סרט קלט לקריאה בלבד )עליו רשומה מילת הקלט ולא ניתן לכתוב על סרט זה‪ ,‬רק לקרוא ממנו( וסרט עבודה לקריאה‬
‫וכתיבה‪ .‬נראה בהמשך שבמשרנים )יוגדר בהמשך( יהיה גם סרט פלט לכתיבה בלבד ‪ -‬כל פעם שאנחנו כותבים לסרט הפלט‬
‫אות הראש הקורא של הסרט זז ימינה‪ ,‬הוא לא יכול לזוז שמאלה‪ ,‬ואם לא כותבים לתוכו אות אז הוא נשאר במקום‪.‬‬
‫···‬
‫סרט קלט לקריאה בלבד‬
‫···‬
‫סרט עבודה לקריאה וכתיבה‬
‫···‬
‫סרט פלט לכתיבה וכתיבה‬
‫עתה עבור מ“ט דטרמיניסטית פונק’ המעברים ‪ δ‬תחליט‪ ,‬על סמך המצב הנוכחי‪ ,‬האות הרשומה בסרט הקלט והאות הרשומה‬
‫בסרט העבודה‪ ,‬לאן להזיז את כל אחד מהראשים שלה‪ ,‬מה לכתוב ולאיזה מצב לעבור‪.‬‬
‫הגדרה ‪ .12.1‬סיבוכיות הזכרון של מ“ט ‪ M‬היא פונקציה ‪ s : N → N‬כך שעל כל קלט באורך ‪ M ,n‬משתמשת‬
‫לכל היותר ב‪ s (n)-‬תאים בסרט העבודה‪.‬‬
‫הגדרה ‪ .12.2‬נגדיר את המחלקות‬
‫)‪L = LOGSPACE = SPACE (log n‬‬
‫)‪NL = NLOGSPACE = NSPACE (log n‬‬
‫כאשר )‪ SPACE (log n) , NSPACE (log n‬מוגדרים מעל מכונות טיורינג עם שני סרטים )קלט ועבודה(‪.‬‬
‫?‬
‫הערה | על ‪L = NL‬‬
‫?‬
‫?‬
‫בדומה ל‪ ,P = NP-‬גם הבעיה ‪ L = NL‬היא בעיה פתוחה‪ .‬ברור ש‪ ,L ⊆ NL-‬אך לא ידוע האם הכיוון השני נכון‪.‬‬
‫סימון ‬
‫ממשפט סאביץ’ )שנכון גם עבור סיבוכיות לוגריתמית( נובע ש‪,NL = NSPACE (log n) ⊆ SPACE log2 n = L2 -‬‬
‫ויותר מזה אנחנו לא יודעים‪ .‬יתכן שיום יבוא ויוכיחו ש‪ L2 = L-‬ומכך נסיק ‪.NL = L‬‬
‫דוגמה‪ .EQ = {0n 1n | n ≥ 0} ∈ L .‬ניתן להכריע שפה זו בסיבוכיות זכרון לוגריתמית‪ ,‬בכך שנשתמש בסרט העבודה כמונה‪,‬‬
‫ונספור בבסיס ‪ b ≥ 2‬כמה אפסים יש‪ ,‬ואז נספור כמה אחדות יש באותו בסיס ‪ ,b‬ואז נראה אם יצא אותו דבר‪ .‬בגלל‬
‫שאנחנו סופרים בבסיס קבוע‪ ,‬נצטרך רק כמות לוגריתמית של זכרון‪.‬‬
‫‪16‬יש שפות שלא צריך לקרוא את כל המילים בהן במלואן כדי להכריע אותן‪ ,‬כמו למשל שפת המילים שמתחילות ב‪ ,a-‬אך שפות אלה משעממות‪.‬‬
‫‪75‬‬
‫הרצאה ‪13‬א‬
‫‪12‬‬
‫סיבוכיות זכרון תת‪-‬לינארית‬
‫‪12.1‬‬
‫שבוע ‪14‬‬
‫···‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫···‬
‫‪0‬‬
‫‪1‬‬
‫‪#‬‬
‫‪1‬‬
‫‪1‬‬
‫‪ 12.1‬רדוקציה תת‪-‬לינארית‬
‫סרט קלט לקריאה בלבד‬
‫סרט עבודה לקריאה וכתיבה‬
‫רדוקציה תת‪-‬לינארית‬
‫בדומה לדיון על ‪ ,P, NP‬אנו רוצים לדבר על שפות שנחשוב ”קשות“‪ .‬בסיבוכיות זמן וזכרון השתמשנו עד עכשיו ברדוקצה‬
‫” ‪ ,“≤p‬אך עבור סיבוכיות זכרון תת‪-‬לינארית נצטרך רדוקציה חדשה‪.‬‬
‫הגדרה ‪ .12.3‬משרן‪/‬מתמר לוגריתמי )‪ ,log − space Transducer‬או בקיצור ‪ (LST‬הוא מ“ט ‪ M‬בעלת שלושה סרטים‬
‫)קלט‪ ,‬עבודה ופלט( שמחשבת פונק’ בשטח לוגריתמי‪ .‬כלומר‪ M ,‬מתחילה עם מילת קלט ‪ w‬על סרט הקלט‪ ,‬ומסיימת‬
‫עם )‪ f (w‬על סרט הפלט‪ ,‬כך שסרט העבודה השתמש ב‪ O (log |w|)-‬תאים‪.‬‬
‫הגדרה ‪ .12.4‬נאמר שפונק’ ∗‪ f : Σ∗ → Σ‬היא חשיבה בשטח לוגריתמי אם קיים משרן לוגריתמי שמחשב אותה‪.‬‬
‫הגדרה ‪ .12.5‬יהיו ∗‪ .A, B ⊆ Σ‬נאמר ש‪ A ≤logspace B-‬אם יש פונק’ חשיבה בשטח לוגריתמי ‪ f‬כך שלכל ∗‪w ∈ Σ‬‬
‫מתקיים ‪.w ∈ A ⇔ f (w) ∈ B‬‬
‫דוגמה ‪ .12.1‬דוגמה לפונק’ חשיבה בשטח לוגריתמי‪ :‬פונק’ שמעבירה גרף ממושקל ‪ hV, E, wi‬כאשר ‪ w : E → N‬לגרף לא‬
‫ממושקל ‪ G′ = hV, E ′ i‬כך ש‪ (v, v ′ ) ∈ E ′ -‬אם“ם ‪ (v, v ′ ) ∈ E‬וגם ‪.w (v, v ′ ) ≥ 8‬‬
‫אם נרצה לחשב את הפונק’ הזו‪ ,‬תחילה נעתיק את כל הקודקודים לסרט הפלט‪ ,‬ואז פשוט נעבור בסרט הקלט על כל‬
‫הצלעות‪ ,‬נרשום כל צלע באופן זמני על סרט העבודה כדי לזכור אותה‪ ,‬נסתכל בסרט הקלט האם משקל הצלע גדול מ‪8-‬‬
‫ואם כן נרשום אותה בסרט הפלט‪.‬‬
‫עכשיו אנחנו יכולים להגדיר קשיות ושלמות‪:‬‬
‫הגדרה ‪ .12.6‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-NL‬קשה )‪ (NLH‬אם לכל שפה ‪ L′ ∈ NL‬מתקיים ‪ .L′ ≤logspace L‬הגדרה‬
‫דומה מתקבלת עבור ‪.L‬‬
‫הגדרה ‪ .12.7‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-NL‬שלמה )‪ (NLC‬אם‪:‬‬
‫‪) .1‬חסם עליון( ‪.L ∈ NL‬‬
‫‪) .2‬חסם תחתון( ‪.L ∈ NLH‬‬
‫והגדרה דומה מתקבלת עבור ‪.L‬‬
‫משפט הרדוקציה ל‪NL, L-‬‬
‫משפט‪ .‬לכל ∗‪ A, B ⊆ Σ‬אם ‪ B ≤logspace A‬ו‪ A ∈ L-‬אזי ‪) .B ∈ L‬ובאופן דומה עבור ‪(NL‬‬
‫‪76‬‬
‫‪12‬‬
‫שבוע ‪14‬‬
‫סיבוכיות זכרון תת‪-‬לינארית‬
‫‪ 12.1‬רדוקציה תת‪-‬לינארית‬
‫הוכחה שגויה‬
‫היינו רוצים להשתמש באותה הוכחה כמו למשפטי הרדוקציה הקודמים‪ ,‬אך זו כבר לא תעבוד‪ .‬ננסה להוכיח באותה‬
‫שיטה ונראה איפה היא נכשלת‪:‬‬
‫תהי ‪ MA‬מ“ט שמכריעה את ‪ A‬בשטח לוגריתמי‪ .‬תהי ‪ Mf‬מ“ט שמחשבת בשטח לוגריתמי את הרדוקציה ‪ f‬מ‪B-‬‬
‫ל‪ .A-‬נבנה ‪ MB‬שמכריעה את ‪ B‬בשטח לוגריתמי כך‪:‬‬
‫בהינתן ‪ MB ,w‬תריץ את ‪ ,Mf‬מחשבת את )‪ ,f (w‬ואז מריצה את ‪ MA‬על )‪.f (w‬‬
‫מה הבעיה בהוכחה זו? האורך של )‪ f (w‬הוא לא בהכרח לוגריתמי באורך הקלט )ראו דוגמה ‪ !(12.1‬על כן‪ ,‬אנחנו‬
‫לא יכולים לכתוב את )‪ f (w‬על סרט העבודה ולהשתמש בו‪.‬‬
‫הוכחה‪ .‬נגדיר את ‪ MA , Mf‬כמו בהוכחה השגויה‪ ,‬רק שעכשיו נגדיר את ‪ MB‬בצורה אחרת שכן תוביל להוכחה נכונה‪ :‬הרעיון‬
‫הוא שבכל פעם ש‪ MB -‬רוצה לקרוא את האות ה‪ i-‬ב‪ f (w)-‬היא תחשב את כל )‪ f (w‬מחדש‪ ,‬ולא תכתוב את כל )‪f (w‬‬
‫אלא רק תחכה ש‪ Mf -‬תגיע לאות ה‪ i-‬ואז תכתוב אותה )ורק אותה(‪ .‬פורמלית בהינתן קלט ‪ w‬המכונה ‪ MB‬תפעל כך‪:‬‬
‫‪ MB .1‬תבצע סימלוץ חכם לריצה של )‪ f (w‬על ‪ MA‬בכך שהיא תגדיר כמה משתנים שישמרו אצל ‪ MB‬על סרט העבודה‪:‬‬
‫)א( משתנה ‪ i‬שמציין את המקום של הראש הקורא של ‪ MA‬בסרט הקלט‪.‬‬
‫)ב( משתנה ‪ σ‬שיחזיק את האות ה‪ i-‬ב‪.f (w)-‬‬
‫)ג( אזור שלם שמוקדש לסימלוץ סרט העבודה של ‪) MA‬שיגדל בהתאם לצורך‪ ,‬אך בטוח יהיה מגודל לוגריתמי(‪.‬‬
‫‪ i .2‬הוא האינדקס של האות שמעניינת אותנו כרגע ב‪ ,f (w)-‬לכן נריץ את ‪) Mf‬בלי לכתוב את הפלט שלה( עד שהיא‬
‫תכתוב את האות ה‪-i-‬ית‪ ,‬שנסמן ב‪ σ-‬ואותה נשמור באופן זמני על סרט העבודה‪.‬‬
‫כדי לזכור באיזו אות ‪ Mf‬נמצאת‪ ,‬אנו יכולים להשתמש במונה שיהיה רשום על סרט העבודה של ‪ ,MB‬שאורכו‬
‫כמובן לוגריתמי באורך הקלט‪ .‬כמו כן‪ ,‬גם נצטרך להשתמש במקום לוגריתמי כדי לסמלץ את סרט העבודה של ‪.Mf‬‬
‫‪ .3‬נחשב את פונק’ המעברים של ‪ ,δA (q, σ) ,MA‬כאשר ‪ q‬זה המצב הנוכחי של ‪ MA‬בסימלוץ‪ ,‬ומצב זה רשום על סרט‬
‫העבודה המסומלץ של ‪ MA‬שאנחנו שומרים בסרט העבודה של ‪.MB‬‬
‫‪ .4‬נעדכן את ‪ i‬ואת סרט העבודה המסומלץ בהתאם ל‪ ,δA (q, σ)-‬ואם } ‪ q ∈ {qacc , qrej‬אז נעצור את הריצה ונקבל‪/‬נדחה‬
‫בהתאם לערך של ‪ ,q‬ואחרת נחזור ל‪ 2-‬ונמשיך בתהליך‪.‬‬
‫נשים לב ש‪ Mf ∈ L-‬ולכן ‪) Mf ∈ P‬הזכרו במשפט ‪ (11‬ובגלל ש‪ P ⊆ PSPACE-‬אז ‪ Mf ∈ PSPACE‬ולכן |)‪ |f (w‬פולינומיאלי‬
‫ב‪ .w-‬מכאן נובע ש‪ i-‬הוא לוגריתמי ב‪ ,w-‬ובגלל שגם כל שאר המשתנים ש‪ MB -‬שומרת הם לוגריתמיים‪ ,‬אנחנו מקבלים‬
‫שסה“כ ‪ MB‬רצה בסיבוכיות מקום לוגריתמית‪.‬‬
‫דוגמה‪ .‬נגדיר את השפה‪:‬‬
‫}‪ G‬גרף מכוון ויש מסלול מ‪ s-‬ל‪PATH = {hG, s, ti | t -‬‬
‫זו בעיה שראינו שניתן לפתור בזמן פולינומיאלי‪ ,‬אך האלגוריתמים שראינו‪ ,‬כמו למשל ‪ ,BFS‬הם בעלי סיבוכיות זכרון לינארית‪.‬‬
‫טענה ‪.PATH ∈ NL .12.1‬‬
‫הוכחה‪ .‬המכונה תנחש מסלול מ‪ s-‬ל‪ t-‬שאורכו לא עולה על | ‪ .|V‬לשם כך‪ ,‬המכונה תשמור מונה לכמות הצעדים שהיא כבר‬
‫עשתה וגם היא תשמור את הקודקוד בו היא נמצאת כרגע‪:‬‬
‫ˆ נאתחל ‪ v := s‬ו‪.c := 0-‬‬
‫‪77‬‬
‫‪12‬‬
‫שבוע ‪14‬‬
‫סיבוכיות זכרון תת‪-‬לינארית‬
‫‪ 12.1‬רדוקציה תת‪-‬לינארית‬
‫ˆ כל עוד | ‪:c ≤ |V‬‬
‫ ננחש קודקוד ‪ v ′‬כך ש‪.(v, v ′ ) ∈ E-‬‬
‫ניחוש זה יהיה כמובן לא דטרמיניסטי וניתן לממש אותו בכך שלמשל נעבור על ‪ E‬וכל פעם שנראה צלע מהצורה‬
‫) ‪ (v, v ′‬נטיל מטבע ונחליט האם לבחור בצלע זו או להתקדם לצלע הבאה )ואם עברנו על כל ‪ E‬נבחר את הצלע‬
‫האחרונה מהצורה ) ‪.((v, v ′‬‬
‫ אם ‪ v ′ = t‬נעצור ונקבל‪ ,‬ואחרת נגדיר ‪ v := v ′‬ונבצע ‪.c + +‬‬
‫ˆ נעצור ונדחה‪.‬‬
‫נכונות‪ :‬יש מסלול מ‪ s-‬ל‪ t-‬אם“ם יש מסלול כזה באורך ≥ | ‪ |V‬אם“ם קיים חישוב מקבל של המכונה‪.‬‬
‫סיבוכיות‪ :‬המכונה שומרת רק שני ”משתנים“‪ :‬קודקוד ‪ v ∈ V‬הדורש | ‪ log |V‬תאים‪ ,‬ומונה ‪ c‬שדורש | ‪ log |V‬תאים כי‬
‫תמיד | ‪.c < |V‬‬
‫טענה ‪.PATH ∈ NLC .12.2‬‬
‫רעיון ההוכחה‬
‫עלינו להראות כי ‪ .PATH ∈ NLH‬כלומר לכל ‪ B ∈ NL‬נראה כי ‪ .B ≤logspace PATH‬כלומר‪ ,‬עלינו למצוא פונק’‬
‫חשיבה בשטח לוגריתמי ‪ f‬כך ש‪.f (w) ∈ PATH ⇔ w ∈ B-‬‬
‫לשם כך‪ f ,‬תבנה גרף ‪ G‬מהקונפ’ של ‪) MB‬מ“ט המתאימה ל‪ (B-‬כך שבין קונפ’ אחת לאחרת תעבור קשת‬
‫אם“ם הראשונה עוקבת של השנייה‪ ,‬ואז יהיה מסלול מהקונפ’ ההתחלתית לקונפ’ המקבלת אם“ם ‪ ,w ∈ B‬כלומר‬
‫‪ .f (w) ∈ PATH ⇔ w ∈ B‬רק צריך לדאוג שהבנייה של הגרף תעשה בסיבוכיות מקום לוגריתמית‪.‬‬
‫הוכחה‪ .‬מהיות ‪ B ∈ NL‬קיימת מ“ט עם שני סרטים ‪ MB‬שמכריעה את ‪ B‬בסיבוכיות מקום לוגריתמית‪ .‬נוכל להניח בה“כ‬
‫של‪ MB -‬יש קונפ’ מקבלת יחידה‪ ,‬שכן ניתן לבנות מ“ט שלאחר שהיא מגיעה למצב ”מקבל“ היא מוחקת את כל הסרט‪,‬‬
‫מעבירה את הראש הקורא לתחילת הסרט‪ ,‬ואז עוברת למצב המקבל ומסיימת את הריצה‪.‬‬
‫נסמן ב‪ s-‬את הקונפ’ ההתחלתית וב‪ t-‬את הקונפ’ המקבלת )היחידה!(‪.‬‬
‫בשביל לתאר כל קונפ’ של ‪ ,MB‬אנחנו צריכים לתאר את המצב של סרט העבודה‪ ,‬ואת המיקום של הראש של סרט הקלט‪.‬‬
‫נוכל לתאר זאת באמצעות הא“ב }‪ Γ ∪ (Q × Γ) ∪ {0, 1, $‬באופן הבא‪:‬‬
‫)‪log2 (n‬‬
‫}‬
‫)‪γ1 γ2 . . . (q, γi ) . . . γs(n) $ (0 + 1‬‬
‫‪{z‬‬
‫|‬
‫‪{z‬‬
‫| }‬
‫מיקום ראש סרט הקלט‬
‫תיאור סרט העבודה‬
‫נשים לב שהגודל של תאור זה הוא לוגריתמי‪.‬‬
‫הרדוקציה תעבור )למשל בסדר לקסיקוגרפי‪ ,‬שזה משהו שניתן לתאר באופן לוגריתמי( על כל המילים מעל ‪ Σ‬באורך ‪1 + 2 log n‬‬
‫ותבדוק האם הן מהצורה‬
‫‪log n‬‬
‫)‪Γi−1 · (Q × Γ) · Γlog n−i $ (0 + 1‬‬
‫)עבור ‪ i‬כלשהו( וכל מילה שמתאימה לצורה הזו‪ ,‬נעתיק לסרט הפלט‪.‬‬
‫כך אנחנו מקבלים שעל סרט הפלט רשומות כל המילים שמקודדות קונפ’‪ ,‬והן מהוות את רשימת הקודקודים‪.‬‬
‫עתה צריך לייצר את רשימת הקשתות‪ .‬לשם כך‪ ,‬נעבור על כל זוגות המילים מאורך ‪ ,1 + 2 log n‬נבדוק האם הן עוקבות‬
‫)ראינו המון פעמים איך עושים את זה(‪ ,‬ואם כן תעתיק אותן לסרט הפלט וכך תתווסף קשת לרשימת הקשתות‪.‬‬
‫לסיום‪ ,‬נרשום על סרט הפלט את ‪) s‬הקונפ’ ההתחלתית( ואת ‪) t‬הקונפ’ המקבלת(‪.‬‬
‫ברור שרדוקציה זו נכונה‪ ,‬וכבר פירטנו לאורך ההוכחה מדוע היא לוגריתמית‪ ,‬ולכן סיימנו‪.‬‬
‫‪78‬‬
‫‪12‬‬
‫סיבוכיות זכרון תת‪-‬לינארית‬
‫‪ 12.1‬רדוקציה תת‪-‬לינארית‬
‫שבוע ‪14‬‬
‫טענה ‪ .12.3‬נניח כי ‪ .A ≤logspace B‬אזי ‪.A ≤p B‬‬
‫הוכחה‪ .‬בדומה להוכחות קודמות שראינו‪ ,‬נשים לב שאם ‪ A ≤logspace B‬אז יש רדוקציה מ‪ A-‬ל‪ B-‬שעובדת בסיבוכיות מקום‬
‫לוגריתמית‪ ,‬ולכן מס’ הקונפ’ האפשריות שיכולות להיות לה הוא פולינומיאלי‪ ,‬ולכן היא בהכרח רצה למשך זמן פולינומיאלי‪,‬‬
‫כלומר ‪.A ≤p B‬‬
‫מסקנה ‪NL ⊆ PTIME .12.1‬‬
‫הוכחה‪ .‬תהי ‪.B ∈ NL‬‬
‫מתקיים ‪ B ≤logspace PATH‬לכן ‪.B ≤p PATH‬‬
‫לכן מהיות ‪ PATH ∈ PTIME‬נובע כי‬
‫‪.B ∈ PTIME‬‬
‫דוגמאות לרדוקציות‬
‫עתה נסתכל על השפה‬
‫}‪ A‬הוא ‪ NFA‬ו‪EMPTYNFA = {hAi | L (A) 6= ∅ -‬‬
‫קל לראות ש‪) EMPTYNFA ∈ PTIME-‬פשוט צריך לבדוק האם יש מסלול ממצב התחלתי של ‪ A‬למצב מקבל(‪ ,‬אך מה ניתן‬
‫להגיד עליה בהקשרים תת‪-‬לינאריים?‬
‫טענה ‪.EMPTYNFA ∈ NLC .12.4‬‬
‫הוכחה‪ .‬ראשית‪ EMPTYNFA ∈ NL ,‬כי נוכל להסתכל על מ“ט א“ד שתנחש ריצה מקבלת על מילה ‪ -‬בגלל שאי אפשר‬
‫לשמור מילה בכל אורך‪ ,‬לא נשמור את כל המילה אלא פשוט נעבור ממצב למצב וננחש כל פעם אות נוספת להתקדם לפיה‪.‬‬
‫כדי שלא נרוץ לנצח‪ ,‬נשמור גם מונה שיבדוק באורך המסלול שאנחנו הולכים בו קטן מ‪.|Q|-‬‬
‫לחלופין כדי להוכיח זאת יכלנו להראות ש‪.EMPTYNFA ≤logspace PATH-‬‬
‫עתה נראה ש‪ .EMPTYNFA ∈ NLH-‬לשם כך נראה ש‪:PATH ≤logspace EMPTYNFA -‬‬
‫בהינתן ‪ hG, s, ti‬כאשר ‪ ,G = hV, Ei‬נחזיר ‪NFA‬‬
‫‪i‬‬
‫‪F‬‬
‫‪δ,‬‬
‫‪Q0 ,‬‬
‫‪Q,‬‬
‫‪Σ,‬‬
‫}‪{t‬‬
‫‪δ‬‬
‫}‪{s‬‬
‫‪V‬‬
‫}‪{a‬‬
‫‪h‬‬
‫=‪A‬‬
‫כאשר ‪ a‬היא אות כלשהי ו‪ δ-‬מוגדרת כך ש‪.(q, q ′ ) ∈ E ⇔ q ′ ∈ δ (q, a) -‬‬
‫ניכר שרדוקציה זו עובדת בשטח לוגריתמי )בכל רגע נתון אנחנו צריכים לשמור מעט מאוד דברים(‪ ,‬וכן הרדוקציה נכונה כי‬
‫יש מסלול מ‪ s-‬ל‪ t-‬ב‪ G-‬אם“ם יש מסלול ממצב התחלתי ב‪ A-‬למצב מקבל אם“ם ‪.A ∈ EMPTYNFA‬‬
‫בנוסף‪ EMPTYNFA ∈ NL ,‬כי ‪) NL = coNL‬ראו ‪.(12.2‬‬
‫כדוגמה נוספת‪ ,‬נעבור להסתכל על השפה‬
‫הרצאה ‪13‬ב‬
‫‪‬‬
‫‪ G ‬גרף ממושקל עם משקולות חיוביים ממש‬
‫‪‬‬
‫ויש מסלול במשקל לפחות ‪ b‬מ‪ s -‬ל‪t -‬‬
‫‪‬‬
‫‪‬‬
‫כאשר המשקלים טבעיים ו‪b ∈ N -‬‬
‫טענה ‪.BBPATH ∈ NLC .12.5‬‬
‫‪79‬‬
‫‪hG, s, t, bi‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫= ‪BBPATH‬‬
‫‪12‬‬
‫שבוע ‪14‬‬
‫סיבוכיות זכרון תת‪-‬לינארית‬
‫משפט אימרמן‬
‫‪12.2‬‬
‫הוכחה‪ .‬ראשית ‪ ,BBPATH ∈ NL‬שכן השפה ניתן להכרעה ע“י מ“ט א“ד שפועלת בשטח לוגריתמי שבכל רגע נתון שומרת‬
‫קודקוד נוכחי במסלול ומשקל מצטבר של המסלול‪ ,‬וכל הזמן בודקת האם הגענו ל‪ ,t-‬והאם המשקל שלנו הגיע ל‪ ,b-‬ובגלל‬
‫שהמשקולות כולם גדולים מ‪ 0-‬וטבעיים‪ ,‬אנחנו לא צריכים להסתכל על מסלולים שאורכם גדול מ‪ b-‬ולכן תמיד נעצור את‬
‫הריצה‪ .‬בגלל שזה דומה לדברים שכבר ראינו‪ ,‬יתר הפרטים הקטנים הושארו לקורא‪.‬‬
‫עתה נראה ש‪ .BBPATH ∈ NLH-‬לשם כך נראה כי ‪ .PATH ≤logspace BBPATH‬בהינתן ‪ hG, s, ti‬כאשר ‪G = hV, Ei‬‬
‫הרדוקציה תחזיר ‪ hG′ , s, t, 0i‬כאשר ‪ G′ = hV, E, wi‬כך ש‪ .∀e ∈ E, w (e) = 1-‬ניכר שבנייה זו לוגריתמית‪ ,‬שכן אנחנו‬
‫בעיקר מעתיקים דברים לסרט הפלט‪ ,‬ולמעשה כמעט אין שימוש לסרט העבודה‪ .‬הבנייה נכונה כי כמובן יש מסלול מ‪ s-‬ל‪t-‬‬
‫ב‪ G-‬אם“ם יש מסלול באורך לפחות ‪ 0‬מ‪ s-‬ל‪ t-‬ב‪ G-‬אם“ם יש מסלול ממשקל לפחות ‪ 0‬מ‪ s-‬ל‪ t-‬ב‪.G′ -‬‬
‫הערה‪ .‬אם היינו עוברים להסתכל על הבעיה ‪ ,BBSPATH‬שזו אותה בעיה כמו ‪ BBPATH‬רק עם הדרישה שהמסלול יהיה‬
‫פשוט‪ ,‬נקבל כבר ש‪ ,BBSPATH ∈ NPC-‬שכן אם נסתכל על המקרה הפרטי של מסלול פשוט מ‪ s-‬ל‪ t-‬שיש בו ‪|V | − 1‬‬
‫קשתות‪ ,‬אנו נקבל מסלול המילטון )וזו‪ ,‬ראינו‪ ,‬בעיה ‪-NP‬קשה(‪.‬‬
‫‪12.2‬‬
‫משפט אימרמן‬
‫משפט אימרמן הוא תוצאה חדשה וחשובה בתחום מדעי המחשב‪ ,‬ממנה נובע ש‪.NL = coNL-‬‬
‫משפט אימרמן‬
‫משפט‪ .‬לכל פונק’ ‪ s (n) ≥ log n‬מתקיים ))‪.NSPACE (s (n)) = coNSPACE (s (n‬‬
‫הוכחה‪ .‬על אף שההוכחה לא הכי מסובכת‪ ,‬מפאת קוצר זמן‪ ,‬לא נוכיח את המשפט‪.‬‬
‫מסקנה ‪.NL = coNL .12.2‬‬
‫הוכחה‪ .‬עבור ‪ s (n) = log n‬אנו מקבלים ממשפט אימרמן ‪.NL = NSPACE (log n) = coNSPACE (log n) = coNL‬‬
‫כלומר כיום אנו יודעים שמתקיים‬
‫‪coEXPTIME‬‬
‫‪coNPSPACE‬‬
‫‪k‬‬
‫‪k‬‬
‫‪EXPTIME‬‬
‫⊆‬
‫‪NPSPACE‬‬
‫=‬
‫=‬
‫‪coPSPACE‬‬
‫‪coP‬‬
‫‪coNL‬‬
‫‪k‬‬
‫‪k‬‬
‫‪k‬‬
‫‪PSPACE‬‬
‫⊆‬
‫‪NP‬‬
‫‪coNP‬‬
‫בנוסף אנו יודעים ש‪ PTIME 6= EXPTIME-‬ובתרגול נראה כי ‪.NL 6= PSPACE‬‬
‫‪80‬‬
‫⊆‬
‫‪P‬‬
‫⊆‬
‫‪NL‬‬
‫⊆‬
‫‪L‬‬
‫‪13‬‬
‫‪13‬‬
‫חומר נוסף וצעדים להמשך‬
‫שבוע ‪14‬‬
‫חומר נוסף וצעדים להמשך‬
‫לסיום‪ ,‬נעבור בקצרה על כמה דברים שלא למדנו ושווה לדעת‪ ,‬ונציין כמה קורסי המשך הנוגעים בדברים שלמדנו‪ .‬אנו נדבר‬
‫בעיקר על אוטומטים אך אפשר להכליל את המושגים הללו גם למכונות טיורינג‪.‬‬
‫חומר נוסף‬
‫שפות ממושקלות‬
‫בקורס שלנו במובן מסויים שפה הייתה פונק’ } ‪ - L : Σ∗ → {T, F‬אנחנו לוקחים את כל המילים ב‪ Σ∗ -‬ומחליטים האם‬
‫הם בשפה או לא‪.‬‬
‫יש כל מיני דרכים ”להתעלל“ במבנה הזה ולהגיע לתאוריות חדשות‪ .‬למשל‪ ,‬נוכל למפות מילים למספרים ובמובן מסויים‬
‫לתת להן ”ציון“ ‪ ,L : Σ∗ → N -‬או אפילו ]‪.L : Σ∗ → [0, 1‬‬
‫זאת ניתן לעשות באמצעות אוטומטים ממושקלים‪ .‬שפות כאלה נקראות שפות ממושקלות‪.‬‬
‫באוטומט ממושקל א“ד המשקל של מילה יהיה המשקל המינימלי על פני כל הריצות האפשריות‪.‬‬
‫בדוגמה הבאה ניתן לראות מימין אוטומט דטר’ שסופר כמה ‪-b‬ים מופיעים במילה‪ ,‬ומשמאל אוטומט א“ד עם שני מסלולים‬
‫שהאחד סופר כמה ‪-b‬ים מופיעים במילה והשני כמה ‪-a‬ים‪ ,‬ולכן המשקל של כל מילה ‪ w‬יהיה }‪.min {#a w, #b w‬‬
‫}‪cost (w) = min {#a w, #b w‬‬
‫‪cost (w) = #b w‬‬
‫‪a, 0‬‬
‫‪b, 1‬‬
‫‪a, 1‬‬
‫‪b, 0‬‬
‫‪a, 0‬‬
‫‪b, 1‬‬
‫נשים לב שאי אפשר לבנות אוטומט דטר’ ששפתו היא }‪ .min {#a w, #b w‬כלומר בעולם הזה ה‪ Subset Construction-‬לא‬
‫עובד‪ ,‬ואין שקילות בין ‪ DFA‬ל‪ .NFA-‬למעשה‪ ,‬הבעיה של ”להכריע האם בהינתן ‪ NFA‬יש לו ‪ DFA‬שקול“‪ ,‬היא בעיה‬
‫פתוחה עד היום במדעי המחשב‪.‬‬
‫כשאנו מדברים על ]‪ L : Σ∗ → [0, 1‬אנחנו מדברים על אוטומטים עם הסתברות‪ ,‬כך שבכל שלב אנחנו יכולים לעבור ממצב‬
‫כלשהו למצב אחר בהסתברות כלשהית בהתאם לאות הנוכחית‪ ,‬וכך שסכום ההסתברויות יסכם ל‪ .1-‬דבר זה מזכיר תהליך‬
‫החלטה מרקובי‪ ,‬רק שיש גם תלות באות הנוכחית שאנו קוראים‪.‬‬
‫מילים רציפות ואינסופיות‬
‫אצלנו כל מילה הורכבה מכמות כלשהי של אותיות‪ ,w = σ1 . . . σn :‬כלומר יכלנו לתאר מילה באמצעות פונק’ ‪.w : {1, . . . , n} → Σ‬‬
‫זהו אובייקט דיסקרטי‪ ,‬אבל לעתים נרצה לתאר אובייקטים רציפים‪) w : R → Σ :‬או למשל‬
‫]‪t ∈ [0, 2‬‬
‫למשל‪ ,‬נרצה לתאר מילה שהיא ”שרשור“ של אותיות ‪ σt‬כך ש‪ ,0 ≤ t ≤ 4-‬כך ש‪t ∈ (2, 3) -‬‬
‫]‪t ∈ [3, 4‬‬
‫→ ]‪.(w : [0, 4‬‬
‫‪Σ‬‬
‫‪‬‬
‫‪a‬‬
‫‪‬‬
‫‪‬‬
‫‪.σt = b‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪a‬‬
‫כך אפשר למשל לתאר באמצעות מילה כל מיני דברים רציפים כמו מהירות של מכונית לאורך הזמן )בין ‪ 0‬ל‪ 2-‬המהירות‬
‫הייתה ‪ 50‬קמ“ש‪ ,‬בין ‪ 2‬ל‪ 3-‬היא הייתה ‪ 70‬קמ“ש וכו’(‪.‬‬
‫על מילים כאלה אנו רצים באמצעות ”‪ ,”Real − Time Automata‬שהם אוטומטים שמחליטים לאיזה מצב לעבור בהתאם‬
‫ל‪“-‬אינדקס“ הרציף ‪ t‬ובהתאם ל‪) .σt -‬למשל האוטומט יגדיר שאם אנחנו במצב ‪ q1‬ו‪ t ∈ [2, 3]-‬ו‪ σt = a-‬אז נעבור למצב ‪(q2‬‬
‫אם נחזור לעולם הדיסקרטי‪ ,‬אז נוכל להסתכל על ‪ Σω‬במקום ∗‪ ,Σ‬שהיא מגדירה לנו מילים אינסופיות‪ .‬כלומר‪,w : N → Σ ,‬‬
‫ואז נוכל למשל להגדיר שפה ‪ L‬להיות שפת כל המילים בהן יש אינסוף ‪-a‬ים‪.‬‬
‫‪81‬‬
‫‪13‬‬
‫חומר נוסף וצעדים להמשך‬
‫שבוע ‪14‬‬
‫אוטומט שפועל על מילים אינסופיות יראה כמו אוטומט רגיל‪ ,‬ונאמר שהוא מקבל מילה אם בריצה על המילה הוא מבקר‬
‫אינסוף פעמים במצב מקבל‪.‬‬
‫אוטומטים מעל עצים‪/‬גרפים‬
‫נוכל להסתכל על גרף עץ שבכל קודקוד שלו רשומה אות‪ ,‬ונוכל להגדיר אוטומט שפונק’ המעברים שלו תגיד לנו בהינתן‬
‫מצב נוכחי ואות שרשומה בעץ‪ ,‬לאילו מצבים לעבור עבור כל אחד מהילדים של אותו קודקוד בעץ‪.‬‬
‫התמרת קלט פלט‬
‫במציאות בדר“כ אנחנו לא סתם לוקחים קלט ואומרים עליו ”כן‪/‬לא“ כפי שעשינו בהכרעה של שפות )בפרט עם מכונות‬
‫טיורינג(‪ .‬הרבה פעמים מעניין אותנו לקבל קלט‪ ,‬לבצע עליו חישוב‪ ,‬ולהוציא פלט מורכב כלשהו‪ .‬במודל הזה‪ ,‬כל פעם שאנחנו‬
‫קוראים אות נוספת מהמילה )שיכולה להיות גם מילה אינסופית‪ ,‬שזה נפוץ במציאות( נוציא אות פלט‪.‬‬
‫כך למשל נוכל לקבל כקלט את מה שקורה סביב המכונית האוטונומית שלנו‪ ,‬ולהוציא כפלט החלטה מה לעשות‪ .‬מערכות‬
‫כאלה נקראות ‪.Reactive Systems‬‬
‫קורסי המשך‬
‫ˆ קורס מתקדם באוטומטים )בהקשר של כל מה שראינו לפני רגע(‬
‫ˆ סיבוכיות‬
‫ מוזמנים לעשות גוגל על המושג ‪ Complexity Zoo‬ולראות כמה מחלקות סיבוכיות מסוגים שונים יש ‪ -‬אפשר‬
‫להוסיף אקראיות‪ ,‬מקביליות‪ ,‬קוונטיזציה וכו’‪.‬‬
‫ˆ קריפטוגרפיה‬
‫ קריפטוגרפיה מבוססת על זה שאנחנו יכולים ליצור בעיות קשות ”והרעים" לא יכולים לפתור אותן‪.‬‬
‫ˆ חישוב קוונטי‬
‫ מחשבים קוונטים הם מחשבים שיודעים לדבר לא רק בביטים של ‪ ,0/1‬אלא יש להם ביט נוסף שבבת אחת‬
‫תופס מספר אקספוננציאלי של מצבים‪ ,‬ולכן אפשר לשאול מה קורה למחלקות הסיבוכיות שלמדנו כשמוסיפים‬
‫קוונטיזציה )ומה קורה למחלקות אחרות(‪.‬‬
‫ˆ קורסים באלגוריתמים‬
‫ בקשר לאקראיות‪ ,‬מקביליות וקוונטיזציה אפשר לשאול אילו אלגוריתמים יעילים ניתן ליצור עם היכולות החדשות‬
‫האלה‪.‬‬
‫ˆ תורת המשחקים‬
‫ תכניות מחשב בסביבה ”עוינת“ ‪ -‬מה קורה כשאנחנו רוצים לתכנן תכנית שמבצעת אסטרטגיה מנצחת במשחק‬
‫שלנו מול הסביבה‪ .‬למשל אם הסביבה מנסה לייצר באג ואנחנו רוצים לדאוג שהתכנית תמשיך לרוץ באופן תקין‪,‬‬
‫וזה קשור לאימות מערכות‪ .‬בעיית העצירה היא לא כריעה‪ ,‬אז בפרט בעיה של אימות מערכות היא קשה אף‬
‫יותר‪ ,‬אך עדיין יש כלים שמאפשרים לנו להגיד דברים על אימות‪.‬‬
‫‪82‬‬
‫‪ 14‬תרגול ‪ - 1‬אוטומט סופי דטרמיניסטי‬
‫שבוע ‪1‬‬
‫חלק ‪V‬‬
‫תרגולים‬
‫‪ 14‬תרגול ‪ - 1‬אוטומט סופי דטרמיניסטי‬
‫מוטיבציה‬
‫בקורס אנחנו לוקחים צעד אחד אחורה ומנסים להבין מה הוא בכלל מחשב‪ .‬במקום לקחת רעיון ולממש אותו בקוד‪ ,‬נגדיר‬
‫פורמלית מחשב‪.‬‬
‫תזכורת ‪ -‬קבוצות ויחסים‬
‫∈ ‪,(A = {x : x‬‬
‫מעבר לתכונות בסיסיות על קבוצות שאנחנו מכירים‪ ,‬כמו איחוד )‪ ,(A ∪ B‬חיתוך )‪ ,(A ∩ B‬משלים )}‪/ A‬‬
‫ושוויון )‪ ,(A = B ⇔ A ⊆ B ∧ B ⊆ A‬ראינו בקורסי עבר שאפשר גם להגדיר יחסים‪:‬‬
‫תזכורת | יחסים‬
‫הגדרה ‪ .14.1‬יחס בין שתי קבוצות ‪ S, T‬הוא תת‪-‬קבוצה ‪.R ⊆ S × T‬‬
‫יחס ‪ R ⊂ A × A‬יקרא‪:‬‬
‫‪ .1‬רפלקסיבי‪ :‬אם ‪.∀a ∈ A, (a, a) ∈ R‬‬
‫‪ .2‬סימטרי‪ :‬אם ‪.∀a, b ∈ A, (a, b) ∈ R ⇔ (b, a) ∈ R‬‬
‫‪ .3‬טרנזטיבי‪ :‬אם ‪.∀a, b, c ∈ A, (a, b) , (b, c) ∈ R ⇒ (a, c) ∈ R‬‬
‫הגדרה ‪ .14.2‬יחס המקיים את ‪ 1, 2, 3‬נקרא יחס שקילות‪.‬‬
‫אם ‪ R‬יחס שקילות‪ ,‬נוכל להגדיר לכל ‪ a ∈ A‬את מחלקת השקילות שלו להיות }‪.[a]R = {b ∈ A : (a, b) ∈ R‬‬
‫נשים לב שמחלקות השקילות של ‪ A‬מחלקות את ‪ A‬חלוקה זרה‪.‬‬
‫≤∈ )‪ (5, 3‬ולכן הוא לא סימטרי‪ .‬נשים לב שבמקום ≤∈ )‪(3, 5‬‬
‫דוגמה ‪ ≤⊆ N × N .14.1‬הוא יחס‪ .‬מתקיים ≤∈ )‪ (3, 5‬אך ‪/‬‬
‫אנו כותבים בקיצור ‪.3 ≤ 5‬‬
‫דוגמה ‪ .14.2‬יהי ‪ G = hV, Ei‬גרף לא‪-‬מכוון‪ .‬נגדיר יחס ‪ ∼⊆ V × V‬באופן הבא‪ ∀u, v ∈ V :‬נאמר כי ‪ u ∼ v‬אם“ם יש‬
‫מסלול מ‪ u-‬ל‪ .v-‬לא קשה להשתכנע שזהו יחס שקילות‪ ,‬ומחלקות השקילות של ∼ הם בדיוק רכיבי הקשירות של ‪.G‬‬
‫תזכורת | עוצמות‬
‫הגדרה ‪ .14.3‬העוצמה של קבוצה ‪ ,A‬המסומנת |‪ ,|A‬היא מדד לגודל שלו‪ .‬עבור קבוצות סופיות |‪ |A‬היא פשוט‬
‫כמות האיברים ב‪ .A-‬עבור קבוצות אינסופיות‪ ,‬ראינו בקורסי עבר שיש עוצמות שונות‪ ,‬כדוגמת ‪.ℵ0‬‬
‫הגדרה ‪ .14.4‬אנו אומרים כי |‪ |A| ≤ |B‬אם יש העתקה חד‪-‬חד ערכית מ‪ A-‬ל‪ ,B-‬ואומרים ש‪ |A| < |B|-‬אם לא‬
‫קיימת העתקה על מ‪ A-‬ל‪.B-‬‬
‫דוגמה ‪ .14.3‬ראינו ש‪ ,|Q| = |Z| = |N| = ℵ0 -‬אבל ‪ .|R| = |[0, 1]| = 2ℵ0‬ההוכחה לכך ש‪ |R| 6= |N|-‬הייתה בעזרת‬
‫האלכסון של קנטור‪ .‬שווה לחזור על הוכחה זו‪ ,‬כי אנחנו נשתמש בטכניקת הוכחה זו בהמשך הקורס‪.‬‬
‫‪83‬‬
‫שבוע ‪1‬‬
‫‪ 14‬תרגול ‪ - 1‬אוטומט סופי דטרמיניסטי‬
‫שפות‬
‫על שפה )ראו הגדרה ‪ ,(1.3‬ניתן לבצע כל מיני פעולות‪:‬‬
‫‪17‬‬
‫‪ .1‬חיתוך‪.L1 ∩ L2 :‬‬
‫‪ .2‬איחוד‪.L1 ∪ L2 :‬‬
‫‪ .3‬שרשור‪.L1 · L2 = {w1 · w2 | w1 ∈ L1 , w2 ∈ L2 } :‬‬
‫‪ .4‬משלים‪.L = Σ∗ \L :‬‬
‫הערה ‪ .14.1‬נבחין כי‬
‫∗‬
‫‪.L ∈ 2Σ‬‬
‫דוגמה ‪ .14.4‬נסתכל על } ∗‪ .L = {ww | w ∈ Σ‬אז‬
‫‬
‫‪ n‬אי‪-‬זוגי או ‪ n‬זוגי וגם ‪L = x1 · · · xn | x1 · · · xn/2 6= xn/2+1 · · · xn‬‬
‫ומהי ‪ ?L · L‬אולי תתפתו לומר } ∗‪ ,{wwww | w ∈ Σ‬אך בשרשור אנו לא חייבים לשרשר את אותה מילה לעצמה‪ ,‬לכן‬
‫} ∗‪L · L = {wwxx | w, x ∈ Σ‬‬
‫טענה ‪ .14.1‬תהי ∅ =‪ Σ 6‬א“ב‪ .‬אזי ‪.|Σ∗ | = ℵ0‬‬
‫הוכחה‪ .‬נוכל לסדר את המילים ב‪ Σ∗ -‬תחילה לפי אורכן‪ ,‬ונשבור שוויונות באמצעות סידור לפי סדר לקסיקוגרפי )סידור לפי‬
‫אורך ולקסיקוגרפיה ידוע גם בתור ‪ .(minlex order‬הצלחנו לסדר את המילים ולכן זו קבוצה בת‪-‬מנייה‪.‬‬
‫הערה ‪ .14.2‬יש‬
‫∗‬
‫‪ 2Σ‬שפות מעל ‪.Σ‬‬
‫הגדרנו מהי שפה רגולרית )ראו הגדרה ‪ ,(1.8‬אך האם כל השפות רגולריות?‬
‫טענה ‪ .|REG| = ℵ0 .14.2‬קרי‪ ,‬יש ‪ ℵ0‬שפות רגולריות‪.‬‬
‫הוכחה‪ .‬מצד אחד‪ ,‬כל שפה סופית היא רגולרית‬
‫‪18‬‬
‫ויש ‪ ℵ0‬שפות סופיות לכן |‪ .ℵ0 ≤ |REG‬מצד שני‪ ,‬שפה רגולרית היא שפה‬
‫שיש אוטומט שמקבל אותה‪ ,‬לכן |קבוצת כל האוטומטים| ≤‪ .‬אוטומט הוא חמישייה ‪ .A = hQ, Σ, δ, q0 , F i‬בגלל ש‪Q, Σ, F -‬‬
‫כולן סופיות‪ ,‬גם כמות האפשרויות לפונק’ ‪ δ‬היא סופית‪ ,‬ולכן כל אוטומט ניתן לתאר באמצעות אוסף סופי של סימנים‪,‬‬
‫ואפשר לתאר אותו באמצעות מחרוזת בינארית סופית )של אפסים ואחדות(‪ .‬יש ‪ ℵ0‬מחרוזות בינאריות סופיות‪ ,‬ולכן‬
‫‪| = ℵ0‬קבוצת כל האוטומטים| ≤ |‪ℵ0 ≤ |REG‬‬
‫ולכן ‪.|REG| = ℵ0‬‬
‫מסקנה‬
‫בגלל שיש ‪= 2ℵ0‬‬
‫∗‬
‫‪ 2Σ‬שפות‪ ,‬ורק ‪ ℵ0‬שפות רגולריות‪ ,‬נובע שיש שפות שאינן רגולריות‪.‬‬
‫‪17‬שפות הן למעשה קבוצות‪ ,‬לכן מראש מוגדרות עליהן פעולות כמו איחוד וחיתוך‪.‬‬
‫‪18‬נוכיח בתרגיל‪.‬‬
‫‪84‬‬
‫שבוע ‪1‬‬
‫‪ 14‬תרגול ‪ - 1‬אוטומט סופי דטרמיניסטי‬
‫אוטומטים‬
‫ניזכר בפונק’ ∗ ‪ δ‬שהגדרנו בהרצאה‪:‬‬
‫הגדרה‪ .‬יהי ‪ A = hQ, Σ, δ, q0 , F i‬אוטומט‪ .‬נגדיר ‪ δ ∗ : Q × Σ∗ → Q‬באופן הבא‪:‬‬
‫‪w=ε‬‬
‫‪‬‬
‫‪q‬‬
‫‪w = w′ · σ, w′ ∈ Σ∗ , σ ∈ Σ‬‬
‫)‪δ (δ ∗ (q, w′ ) , σ‬‬
‫= )‪δ ∗ (q, w‬‬
‫דוגמה ‪ .14.5‬נסתכל על הציור של האוטומט שלמטה‪ .‬עבורו מתקיים‬
‫‪q1‬‬
‫הגדרת האוטומט‬
‫=‬
‫)‪δ (q0 , a‬‬
‫הגדרת האוטומט‬
‫=‬
‫)‪δ (δ (q1 , b) , a‬‬
‫הגדרת ∗ ‪δ‬‬
‫=‬
‫)‪δ (δ (δ ∗ (q1 , ε) , b) , a‬‬
‫‪a, b‬‬
‫הגדרת ∗ ‪δ‬‬
‫=‬
‫)‪δ (δ ∗ (q1 , b) , a‬‬
‫הגדרת ∗ ‪δ‬‬
‫=‬
‫)‪δ ∗ (q1 , ba‬‬
‫‪b‬‬
‫‪a‬‬
‫‪q2‬‬
‫‪a‬‬
‫‪q0‬‬
‫‪q1‬‬
‫‪b‬‬
‫תרגיל הוכיחו שהשפה הבאה‪ ,‬מעל הא“ב }‪ ,Σ = {0, 1, . . . , 9, #‬היא רגולרית‪:‬‬
‫‬
‫∗‬
‫‪ a‬מופיע ב‪L = x#a | x ∈ {0, . . . , 9} , a ∈ {0, . . . , 9} , x -‬‬
‫אנחנו רוצים לבנות אוטומט שמבחין בין מילים ב‪ L-‬למילים שלא ב‪ .L-‬אם היינו רוצים לכתוב קוד שעושה את זה‪ ,‬כנראה‬
‫היינו רצים על המילה בלולאה וכל פעם שאנחנו נתקלים בספרה חדשה היינו מוסיפים אותה למערך עזר‪ .‬ברגע שהיינו נתקלים‬
‫בתו ‪ ,#‬היינו יוצאים מהלולאה‪ ,‬מסתכלים על התו הבא‬
‫‪19‬‬
‫ובודקים האם הוא במערך ששמרנו‪ .‬כלומר‪ ,‬אנחנו צריכים סוג של‬
‫זכרון‪ .‬נרצה לעשות דבר דומה בבנייה של האוטומט‪ ,‬לכן נבנה המון מצבים שונים‪ ,‬שכל אחד זוכר אילו ספרות כבר ראינו‪,‬‬
‫והאם כבר הגענו ל‪ #-‬או לא‪.‬‬
‫אם כך‪ ,‬נגדיר ‪ ,A = hΣ, Q, δ, q0 , F i ,DFA‬שלב שלב‪.‬‬
‫ראשית ‪ Q‬יוגדר כך‪:‬‬
‫‬
‫‬
‫} ‪Q = 2{0,...,9} × {1, 2} ∪ {qacc , qsink‬‬
‫כאן }‪ 2{0,...,9‬נועד לזכור אילו ספרות ראינו לפני שפגשנו ‪ {1, 2} ,#‬נועד לזכור האם פגשנו כבר ‪ 1) #‬אם לא פגשנו את ‪#‬‬
‫ו‪ 2-‬אם כן(‪ qsink ,‬הוא בור דוחה אליו נשלח את כל המילים הלא‪-‬חוקיות ו‪ qacc -‬הוא המצב המקבל היחיד אליו נשלח את‬
‫המילה ברגע שנסיק שהיא ב‪ .L-‬אם כך‪ ,F = {qacc } ,‬ובנוסף ‪q0 = h∅, 1i‬‬
‫כדי לוודא שהגדרת ‪ Q‬ברורה‪ ,‬נציג דוגמה‪ :‬המצב ‪ h{0, 6, 8} , 1i‬אומר שעד עכשיו פגשנו את הספרות ‪ ,0, 6, 8‬אבל לא ראינו‬
‫עדיין את ‪.#‬‬
‫‪19‬ואם אין תו הבא היינו מחזירים שהמילה לא בשפה‪.‬‬
‫‪85‬‬
‫שבוע ‪1‬‬
‫‪ 14‬תרגול ‪ - 1‬אוטומט סופי דטרמיניסטי‬
‫עתה נגדיר את ‪ .δ‬כפי שאמרנו קודם‪ ,‬כל פעם שאנחנו פוגשים ספרה‪ ,‬אנחנו רוצים לעבור למצב שיוסיף ”למערך“‬
‫הזכרון שלנו את העובדה שפגשנו את אותה ספרה‪ ,‬וברגע שנפגוש את ‪ #‬נרצה לעבור ממצב ‪ hC, 1i‬ל‪ .hC, 2i-‬לכן‪ ,‬עבור‬
‫}‪ i ∈ {1, 2} , C ∈ 2{0,...,9‬ו‪ σ ∈ Σ-‬נגדיר‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫⟩‪⟨C, 2‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫⟩‪⟨C ∪ {σ} , 1‬‬
‫‪i=1∧σ =#‬‬
‫}‪i = 1 ∧ σ ∈ {0, . . . , 9‬‬
‫‪‬‬
‫‪‬‬
‫‪qacc‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪q‬‬
‫‪sink‬‬
‫‪i=2∧σ ∈C‬‬
‫∈ ‪i=2∧σ‬‬
‫‪/C‬‬
‫= )‪δ (⟨C, i⟩ , σ‬‬
‫נשים לב שהמקרה האחרון מכסה את המצב שבו יש ‪ #‬פעמיים‪ .‬כמו כן‪ ,‬אם אין אף תו אחרי ה‪ #-‬או אם אין ‪ ,#‬אז‬
‫אנחנו לא נגיע ל‪ qacc -‬כרצוי‪.‬‬
‫נגדיר בנוסף ‪ ∀σ ∈ Σ, δ (qsink , σ) = qsink‬כדי ש‪ qsink -‬אכן יהיה בור דוחה‪ ,‬ונגדיר ‪ ∀σ ∈ Σ, δ (qacc , σ) = qsink‬כי אם‬
‫הגענו ל‪ qacc -‬זה אומר שקראנו כבר ‪ ,x#a‬אבל אם אנחנו נקרא אות נוספת אז המילה בהכרח לא בשפה )ב‪ L-‬לא יכול‬
‫להיות שיש שתי אותיות אחרי ה‪ ,(#-‬ולכן נרצה להיכנס לבור הדוחה‪.‬‬
‫לפני שנוכיח ש‪ ,L (A) = L-‬נוכיח טענת עזר‪.‬‬
‫טענת עזר‬
‫טענה‪ .‬תהי‬
‫∗‬
‫}‪ .w ∈ {0, . . . , 9‬נגדיר }‪ σ‬מופיעה ב‪ .S (w) = { σ ∈ {0, . . . , 9}| w-‬אזי ‪.δ ∗ (q0 , w) = hS (w) , 1i‬‬
‫הוכחה‪ .‬נוכיח באינדוקציה על אורך המילה |‪.n = |w‬‬
‫בסיס )‪ :(n = 0‬מהיות ‪ |w| = 0‬בהכרח ‪ .w = ε‬לכן ∅ = )‪ S (w‬ולכן‬
‫‪q0 = h∅, 1i = hS, 1i‬‬
‫הגדרת ∗ ‪δ‬‬
‫)‪δ ∗ (q0 , w) = δ ∗ (q0 , ε‬‬
‫=‬
‫צעד )‪ :(n ⇒ n + 1‬נניח את נכונות הטענה עבור ‪ .n‬תהי‬
‫∗‬
‫}‪ w = x · σ ∈ {0, . . . , 9‬מילה מאורך ‪.n + 1‬‬
‫מהנחת האינדוקציה‪ .δ ∗ (q0 , x) = hS (x) , 1i ,‬נשים לב כי }‪ .S (x · σ) = S (x) ∪ {σ‬אזי‬
‫‪δ (δ ∗ (q0 , x) , σ) = δ (hS (x) , 1i , σ) = hS (x) ∪ {σ} , 1i = hS (w) , 1i‬‬
‫הגדרת ∗ ‪δ‬‬
‫=‬
‫)‪δ ∗ (q0 , w) = δ ∗ (q0 , x · σ‬‬
‫כנדרש‪.‬‬
‫טענה‪ .‬עבור האוטומט ‪ A‬שהגדרנו‪ ,‬מתקיים ‪.L (A) = L‬‬
‫הוכחה‪ .‬נוכיח ש‪ L (A) ⊆ L-‬ו‪.L ⊆ L (A)-‬‬
‫)‪ :L ⊆ L (A) (i‬תהי ‪ .w ∈ L‬אזי ‪ w = x#σ‬כאשר‬
‫∗‬
‫}‪ σ ∈ {0, . . . , 9} ,x ∈ {0, . . . , 9‬ו‪ σ-‬מופיעה ב‪ .x-‬לכן‬
‫)‪δ ∗ (q0 , w) =δ (δ ∗ (q0 , x#) , σ‬‬
‫)‪ =δ (δ (δ ∗ (q0 , x) , #) , σ‬הגדרת ∗ ‪δ‬‬
‫)‪ =δ (δ (hS (x) , 1i , #) , σ‬טענת עזר‬
‫)‪ =δ (hS (x) , 2i , σ‬הגדרת ‪δ‬‬
‫‪ =qacc‬הגדרת ‪δ‬‬
‫כלומר ‪ δ ∗ (q0 , w) ∈ F‬ולכן )‪ w ∈ L (A‬ולכן )‪.L ⊆ L (A‬‬
‫)‪ :L (A) ⊆ L (ii‬היות ש‪ L-‬מכילה מילים מתבנית ידועה‪ ,‬נראה כי כל תבנית אחרת‪ ,‬לא מתקבלת על ידי האוטומט‪.‬‬
‫תהי )‪ w ∈ L (A‬ונחלק למקרים לפי ‪ .w‬יהי‬
‫∗‬
‫}‪ x ∈ {0, . . . , 9‬ו‪.σ ∈ {0, . . . , 9}-‬‬
‫‪86‬‬
‫שבוע ‪1‬‬
‫‪ 14‬תרגול ‪ - 1‬אוטומט סופי דטרמיניסטי‬
‫מקרה ‪.1‬‬
‫∈ ‪.w‬‬
‫∈ ‪ ,w‬ואכן ‪/ L‬‬
‫‪ w‬לא מכילה את ‪ :#‬לכן מטענת העזר‪ ,‬הריצה לעולם לא תוכל להגיע ל‪ qacc -‬ולכן )‪/ L (A‬‬
‫מקרה ‪.2‬‬
‫‪ :w = x#‬לכן‬
‫‪δ ∗ (q0 , w) = δ ∗ (q0 , x#) = δ (δ ∗ (q0 , x) , #) = δ (hS (x) , 1i , #) = hS (x) , 2i‬‬
‫∈ ‪.w‬‬
‫∈ ‪ w‬וגם ‪/ L‬‬
‫∈ )‪ ,δ ∗ (q0 , w‬לכן )‪/ L (A‬‬
‫כלומר ‪/ F‬‬
‫מקרה ‪.3‬‬
‫‪ w = x#y‬כאשר ‪ :|y| > 1‬נקבל‬
‫)‪δ ∗ (q0 , w) = δ ∗ (hS (x) , 2i , y‬‬
‫∈ ‪.w‬‬
‫ומהיות ‪ |y| > 1‬לאחר קריאת שתי האותיות הראשונות אנו נגיע ל‪ qsink -‬ואז נתקע שם‪ .‬לכן )‪/ L (A‬‬
‫מקרה ‪.4‬‬
‫‪ w = x#σ‬כאשר ‪ σ‬לא ב‪ :x-‬לכן כמו קודם‬
‫‪δ ∗ (q0 , w) = δ ∗ (hS (x) , 2i , σ) = qsink‬‬
‫∈ ‪.w‬‬
‫ולכן שוב )‪/ L (A‬‬
‫∈ ‪ ,w‬וראינו שאם הוא כן מהצורה‪,‬‬
‫עברנו על כל המקרים‪ ,‬לכן נסיק שאם ‪ w‬הוא לא מהצורה ‪ ,x#σ‬ו‪ σ-‬ב‪ ,x-‬אז )‪/ L (A‬‬
‫אז )‪ ,w = x#σ ∈ L (A‬מה שגורר שאם )‪ w ∈ L (A‬אז ‪ w‬כן מקיים את התנאי‪ ,‬כלומר ‪ .L (A) ⊆ L‬ולכן ‪L (A) = L‬‬
‫כנדרש‪.‬‬
‫‪87‬‬
‫‪15‬‬
‫שבוע ‪2‬‬
‫תרגול ‪ - 2‬אוטומט סופי אי‪-‬דטרמיניסטי‬
‫‪ 15‬תרגול ‪ - 2‬אוטומט סופי אי‪-‬דטרמיניסטי‬
‫הסרת מעברי ‪ ε‬מ‪NFA-‬‬
‫ראינו שב‪ NFA-‬אפשר לבצע צעדים בלי לקרוא אות נוספת ‪ -‬קראנו לזה מעברי ‪ .ε‬אנו נראה שלכל ‪ NFA‬יש ‪ NFA‬שקול‬
‫)קרי‪ ,‬שמקבל אותה שפה( ללא מעברי ‪ .ε‬דבר זה היה שימושי עבורנו בהוכחה שלכל ‪ NFA‬יש ‪ DFA‬שקול )ראו משפט‬
‫‪ ,(2.1‬כי שם השתמשנו בפונק’ מעברים מורחבת‪ ,ρ∗ ,‬שהניחה שאין מעברי ‪.ε‬‬
‫נציין‪ ,‬למי שלא הכי הבין‪ ,‬שהרעיון בהוכחה ההיא היה שאנחנו מנסים לדמות זכרון בתוך ה‪ - DFA-‬אנחנו מנסים לזכור‬
‫באילו מצבים אנחנו היינו יכולים להיות ב‪ .NFA-‬מאוד דומה למה שעשינו בתרגול הקודם‪.‬‬
‫הערה למה צריך מעברי ‪ ε‬אם כך? כי הם עוזרים לקצר את הכתיבה ולהפוך אותה ליותר אלגנטית ופחות מסורבלת‪.‬‬
‫הסרת מעברי אפסילון מ‪NFA-‬‬
‫משפט ‪ .15.1‬לכל ‪ A NFA‬עם מעברי ‪ ε‬יש ‪ B NFA‬שקול ללא מעברי ‪.ε‬‬
‫הוכחה‪ .‬יהי ‪ .NFA A = hQ, Σ, δ, Q0 , F i‬לכל מצב ‪ q ∈ Q‬נגדיר‬
‫}ניתן להגיע מ‪ q-‬ל‪ s-‬רק עם מעברי ‪E (q) = {s | ε‬‬
‫נשים לב שכמוסכמה )‪ q ∈ E (q‬כי‪ +‬ניתן להגיע מ‪ q-‬לעצמו*במסלול באורך ‪ .0‬בגלל שהמסלול מאורך ‪ ,0‬הוא מורכב רק‬
‫‪S‬‬
‫‪S‬‬
‫= )‪ .η (q, σ‬בתרגיל נראה שאכן‬
‫‪ B = Q, Σ, η,‬כאשר )‪E (s‬‬
‫‪E (q) , F‬‬
‫ממעברי ‪ .ε‬נגדיר את ‪ B‬להיות‬
‫‪q∈Q0‬‬
‫)‪s∈δ(q,σ‬‬
‫)‪.L (A) = L (B‬‬
‫נשים לב שלכל ‪ q ∈ Q‬ניתן לחשב את )‪ E (q‬בזמן )|‪ O (|Q| + |Σ‬באמצעות הרצת ‪ DFS‬מ‪ q-‬על הגרף של האוטומט‪ .‬לכן‬
‫את כל הקבוצות מהצורה )‪ E (q‬ניתן לחשב יחד בזמן פולינומיאלי של ))|‪.O (|Q| (|Q| + |Σ‬‬
‫סגירויות של שפות רגולריות‬
‫הוכחנו בעבר כבר כמה סגירויות‪ ,‬אך ‪ NFA‬מאפשר לנו להוכיח בקלות סגירויות נוספות‪ ,‬כי אנחנו יודעים שלכל ‪ NFA‬יש‬
‫‪ DFA‬שקול‪ .‬נראה גם הוכחה יותר קלה לסגירות לאיחוד שמשתמשת ב‪.NFA-‬‬
‫טענה ‪ .15.1‬תהיינה ‪ .L1 , L2 ∈ REG‬אזי ‪.L1 ∪ L2 ∈ REG‬‬
‫‪A1 = hQ, Σ, q0 , δ, F i‬‬
‫ה‪-DFA-‬ים המתאימים ל‪ .L1 , L2 -‬עד כאן‪ ,‬ההוכחה דומה למה שראינו בהרצאה‪.‬‬
‫הוכחה‪ .‬יהיו‬
‫‪A2 = hS, Σ, s0 , η, Gi‬‬
‫אבל‪ ,‬באמצעות ‪ NFA‬נוכל לפשט אותה‪ .‬הדרך לעשות זאת היא פשוט לחבר את האוטומטים‪.‬‬
‫נניח בה“כ ∅ = ‪ ,Q ∩ S‬אחרת נוכל לשנות את השמות של המצבים‪ .‬נגדיר ‪ A NFA‬שיריץ במקביל את ‪ ,A1 , A2‬כלומר‬
‫‪ A = hQ ∪ S, Σ, {q0 , s0 } , α, F ∪ Gi‬כאשר‬
‫‪q∈Q‬‬
‫‪‬‬
‫})‪{δ (q, σ‬‬
‫‪q∈S‬‬
‫})‪{η (q, σ‬‬
‫= )‪α (q, σ‬‬
‫)‪ :L1 ∪ L2 ⊆ L (A‬תהי ‪ .x = σ1 . . . σm ∈ L1 ∪ L2‬אזי ‪ x ∈ L1 ∨ x ∈ L2‬ונניח בה“כ כי ‪ .x ∈ L1‬אזי הריצה של ‪A1‬‬
‫על ‪ x‬מקבלת‪ .‬קרי‪ ,‬קיימת סדרת מצבים ‪ r0 , . . . , rm ∈ Q‬עבורה ‪ r0 = q0 , rm ∈ F‬וכן ‪.0 ≤ ∀i ≤ m, δ (ri , σi+1 ) = ri+1‬‬
‫לכן מהגדרת ‪ A‬זוהי גם ריצה של ‪ A‬על ‪ .w‬נשים לב שאכן } ‪ r0 = q0 ∈ {q0 , s0‬וכן ‪ rm ∈ F ⊆ F ∪ G‬לכן זו ריצה‬
‫מקבלת‪ .‬לכן )‪.x ∈ L (A‬‬
‫‪88‬‬
‫‪15‬‬
‫שבוע ‪2‬‬
‫תרגול ‪ - 2‬אוטומט סופי אי‪-‬דטרמיניסטי‬
‫‪ :L (A) ⊆ L1 ∪ L2‬תהי )‪ .x = σ1 . . . σm ∈ L (A‬אזי קיימת ריצה מקבלת של ‪ A‬על ‪ ,y‬שנסמנה ‪ .r0 , . . . , rm‬כלומר‪,‬‬
‫‪ r0 ∈ {q0 , s0 } , rm ∈ F ∪ G‬ו‪ ri+1 = α (ri , σi+1 )-‬לכל ‪ .i‬נשים לב שבהכרח ‪ rm ∈ F‬או ‪ .rm ∈ G‬נניח בה“כ ‪.rm ∈ F‬‬
‫מהגדרת ‪ α‬ומהעובדה ש‪ ,Q ∩ S = ∅-‬נובע שהדרך היחידה לעבור מ‪ rm−1 -‬ל‪ rm -‬היא אם ‪) rm−1 ∈ Q‬כי ל‪ α-‬יש אותם‬
‫מעברים כמו ‪ A1 , A2‬ו‪ .(Q ∩ S = ∅-‬בתהליך אינדוקטיבי אנו מסיקים כי ‪ r0 = q0‬וכל המצבים בריצה נמצאים ב‪ ,Q-‬כלומר‬
‫זו ריצה תקינה ומקבלת ב‪ A1 -‬ולכן ‪ x ∈ L1‬ובפרט ‪.x ∈ L1 ∪ L2‬‬
‫טענה ‪ .15.2‬תהיינה ‪ .L1 , L2 ∈ REG‬אזי ‪.L1 · L2 ∈ REG‬‬
‫‪A1 = hQ, Σ, q0 , δ, F i‬‬
‫ה‪-DFA-‬ים המתאימים ל‪ .L1 , L2 -‬כאן הרעיון הוא לשרשר את שני האוטומטים‪ ,‬על‬
‫הוכחה‪ .‬יהיו‬
‫‪A2 = hS, Σ, s0 , η, Gi‬‬
‫ידי הוספת מעבר ‪ ε‬מ‪ F -‬ל‪ .s0 -‬כמו קודם נניח בה“כ ∅ = ‪ .Q ∩ S‬נגדיר ‪ A NFA‬שיריץ את ‪ A1‬על מילה ‪,w = w1 · w2‬‬
‫ינחש מתי מסתיימת ‪ w1 ∈ L1‬ויעבור לרוץ מ‪ .A2 -‬כלומר‪ A = hQ ∪ S, Σ, {q0 } , α, Gi ,‬כאשר‬
‫‪q ∈ Q, σ ∈ Σ‬‬
‫‪q ∈ S, σ ∈ Σ‬‬
‫‪q ∈ F, σ = ε‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫})‪{δ (q, σ‬‬
‫‪‬‬
‫‪‬‬
‫})‪α (q, σ) = {η (q, σ‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫} ‪{s‬‬
‫‪0‬‬
‫)‪ :L1 · L2 ⊆ L (A‬יהי ‪ .w ∈ L1 · L2‬אזי ‪ w = x · y‬עבור ‪ x ∈ L1 , y ∈ L2‬כלשהם‪ .‬לכן הריצה של ‪ A1‬על ‪ x‬מקבלת‬
‫והריצה של ‪ A2‬על ‪ y‬מקבלת‪ ,‬לכן הריצה של ‪ A‬על ‪ w = x · y‬מקבלת‪ ,‬מההגדרה של ‪ ,A‬שכן לאחר שנקרא את ‪ ,x‬נוכל‬
‫לעבור ל‪ s0 -‬במעבר ‪ ,ε‬ומשם נמשיך לרוץ על ‪ y‬עד שנגיע למצב מקבל‪.‬‬
‫‪ :L (A) ⊆ L1 · L2‬יהי )‪ .w ∈ L (A‬תהי ‪ t0 , . . . , tm‬ריצה מקבלת של ‪ A‬על ‪ .w‬בהכרח ‪ t0 = q0‬ו‪ .tm ∈ G ⊆ S-‬מהגדרת‬
‫‪ α‬בלתי אפשרי לעבור מ‪ S-‬ל‪ Q-‬ב‪ .A-‬לכן‪ ,‬חייב להיות מעבר ‪ ε‬מ‪ F -‬ל‪ ,s0 -‬וזה מעבר ה‪ ε-‬היחיד לכן ‪.|w| = m − 1‬‬
‫לכן קיים |‪ 0 ≤ k ≤ |w‬כך ש‪ tk ∈ F -‬ו‪ .tk+1 = s0 -‬לכן הריצות ‪ t0 , . . . , tk‬ו‪ tk+1 , . . . , tm -‬מקבלות ב‪ A1 , A2 -‬בהתאמה‪.‬‬
‫מכאן‪ ,‬אם נבחר ‪ x = w1 · . . . · wk , y = wk+1 · . . . · · · wm−1‬נקבל ‪ w = x · y‬וגם ‪ ,x ∈ L1 , y ∈ L2‬כלומר ‪w ∈ L1 · L2‬‬
‫כנדרש‪.‬‬
‫היזכרו בהגדרה ‪ 1.9‬של מהי ∗‪.L‬‬
‫טענה ‪ .15.3‬תהי ‪ .L ∈ REG‬אזי ‪.L∗ ∈ REG‬‬
‫הוכחה‪ .‬יהי ‪ DFA A = hΣ, Q, δ, q0 , F i‬המתאים ל‪ .L-‬נבנה ‪ A′ NFA‬עבורו ∗‪ .L (A′ ) = L‬רעיון אחד הוא לחבר את‬
‫המצבים המקבלים ב‪ F -‬ל‪ ,q0 -‬ככה שהאוטומט החדש ירוץ במעגל על ‪ .A‬הבעיה ברעיון זה היא שאם ‪ ε 6= L‬אז גם‬
‫∈ ‪ .ε‬כדי לטפל בבעיה זו‪ ,‬נוסיף מצב התחלתי חדש‪ .‬נגדיר‬
‫) ‪/ L (A′‬‬
‫‪A′ = hQ ∪ {qstart } , Σ, δ ′ , {qstart } , {qstart }i‬‬
‫כאשר ‪ qstart‬הוא מצב חדש‪ ,‬ו‪ δ ′ -‬מוגדרת לכל } ‪ q ∈ Q ∪ {qstart‬ולכל ‪ σ ∈ Σ‬באופן הבא‪:‬‬
‫‪q∈Q‬‬
‫‪‬‬
‫})‪{δ (q, σ‬‬
‫‪q = qstart‬‬
‫∅‪‬‬
‫‪q ∈ Q\F‬‬
‫‪q∈F‬‬
‫‪q = qstart‬‬
‫= )‪δ ′ (q, σ‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫∅‬
‫‪‬‬
‫‪‬‬
‫} ‪δ ′ (q, ε) = {qstart‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫} ‪{q‬‬
‫‪0‬‬
‫את ההוכחה שאכן ∗‪ ,L (A′ ) = L‬נשאיר לסטודנט המשקיע החכם היפה והחסון )זה יופיע גם בתרגיל(‪.‬‬
‫‪89‬‬
‫‪16‬‬
‫שבוע ‪3‬‬
‫תרגול ‪ - 3‬ביטויים רגולריים ולמת הניפוח‬
‫‪ 16‬תרגול ‪ - 3‬ביטויים רגולריים ולמת הניפוח‬
‫ביטויים רגולריים‬
‫דרך נוחה לתאר שפות היא באמצעות ביטויים רגולריים )שימו לב שההגדרה של ביטוי רגולרי היא רקורסיבית(‪:‬‬
‫הגדרה ‪ .16.1‬נאמר כי ‪ t‬הוא ביטוי רגולרי )‪ (Regular Expression‬מעל א“ב ‪ Σ‬אם ‪ t‬הוא אחד מהבאים‪:‬‬
‫‪ ∅ .1‬או ‪ ε‬או ‪.a ∈ Σ‬‬
‫‪ r ∪ s, r · s .2‬או ∗‪ ,r‬כאשר ‪ r, s‬הם ביטויים רגולריים‪.‬‬
‫הגדרה ‪ .16.2‬יהי ‪ r‬ביטוי רגולרי‪ .‬השפה של ‪ ,r‬שנסמנה )‪ ,L (r‬מוגדרת באופן הבא‪:‬‬
‫‪.∀a ∈ Σ, L (a) = {a} ,L (ε) = {ε} ,L (∅) = ∅ .1‬‬
‫∗‬
‫‪L (r · s) = L (r) · L (s) , L (r∗ ) = L (r) .2‬‬
‫∗‬
‫‪.L (r ∪ s) = L (r) ∪ L (s) ,‬‬
‫∗‬
‫דוגמה ‪ .Σ = {a, b} .16.1‬נתבונן בביטוי )‪ .(a ∪ b) · bb · (a ∪ b‬ביטוי זה מייצג את שפת כל המילים שיש להן ‪ bb‬באמצע‪.‬‬
‫משפט ‪ L ∈ REG .16.1‬אם“ם קיים ביטוי רגולרי ‪ r‬עבורו ‪.L (r) = L‬‬
‫הוכחה‪ :⇒ .‬יהי ‪ r‬ביטוי רגולרי‪ .‬נוכיח באינדוקציה על אורך סדרת היצירה של ‪ r‬כי )‪ L (r‬רגולרית‪:‬‬
‫בסיס‪ :‬אנו יודעים שכל שפה סופית היא רגולרית‪ ,‬לכן אם ‪ r = ∅, ε, a ∈ Σ‬אז )‪ L (r‬רגולרית‪.‬‬
‫צעד‪ :‬מתכונות הסגירות לשפות רגולריות‪ ,‬אם ‪ L1 , L2 ∈ REG‬אז ‪ .L1 ∪ L2 , L1 ∩ L2 , L∗1 ∈ REG‬לכן‪ ,‬אם ‪ r, s‬ביטויים‬
‫רגולריים‪ ,‬מהנחת האינדוקציה ‪ L (r) , L (s) ∈ REG‬לכן ‪.L (r ∪ s) , L (r ∩ s) , L (r∗ ) ∈ REG‬‬
‫⇐‪ :‬נניח ש‪ .L ∈ REG-‬נראה שקיים ביטוי רגולרי ‪ r‬עבורו ‪ .L (r) = L‬נתאר אלגוריתם שבהינתן ‪ NFA‬מחזיר ביטוי רגולרי‬
‫‪ r‬המתאים לשפה של האוטומט‪ .‬בגלל שמדובר בתהליך מסובך וסזיפי‪ ,‬נתאר אותו על דוגמה בלבד‪.‬‬
‫האלגוריתם משתמש בסוג חדש של אוטומט הנקרא ‪) GNFA − Generalized NFA‬ראו איור דוגמה בסוף ההוכחה(‪:‬‬
‫הגדרה ‪ NFA .16.3‬מוכלל )‪ (GNFA‬הוא כמו ‪ NFA‬רק שעל הצלעות לא רשומות אותיות ב‪ ,Σ-‬אלא ביטויים‬
‫רגולריים מעל ‪.Σ‬‬
‫לשם פשטות‪ ,‬נדרוש מה‪ GNFA-‬את התכונות הבאות‪:‬‬
‫‪20‬‬
‫לאוטומט מצב התחלתי יחיד ממנו רק יוצאות צלעות‪ ,‬מצב דוחה‬
‫יחיד אליו רק נכנסות צלעות‪ ,‬והמצב ההתחלתי והמצב המקבל שונים זה מזה‪ .‬לדוגמה‪:‬‬
‫‪aa‬‬
‫∗‬
‫‪ab‬‬
‫∗‪a‬‬
‫‪ab ∪ ba‬‬
‫‪qstart‬‬
‫∗)‪(aa‬‬
‫∅‬
‫‪qacc‬‬
‫‪ab‬‬
‫‪b‬‬
‫‪20‬ראינו כבר כיצד בה“כ ניתן לדרוש את התכונות הללו‪ ,‬וזה תרגיל טוב לחזור על הנימוקים‪.‬‬
‫‪90‬‬
‫‪16‬‬
‫שבוע ‪3‬‬
‫תרגול ‪ - 3‬ביטויים רגולריים ולמת הניפוח‬
‫הרעיון של האלגוריתם יהיה כדלקמן‪:‬‬
‫נתחיל עם ‪ A DFA‬שמקבל את השפה‪ .‬נתרגם את ‪ A‬ל‪ GNFA-‬עם שני מצבים נוספים ‪ -‬מצב התחלתי יחיד ומצב מקבל‬
‫יחיד )עם מעברי ‪ ε‬מתאימים(‪ .‬לאחר מכן‪ ,‬נתחיל להוריד מצבים מה‪ GNFA-‬ולשנות קשתות באמצעות הוספת ביטויים‬
‫רגולרים‪ ,‬עד שנשאר עם שני מצבים בלבד‪ ,‬כך שבשלב זה על הצלע ביניהם יהיה רשום ביטוי רגולרי ‪ r‬השקול ל‪ .A-‬כל‬
‫פעם שאנחנו מורידים מצב‪ ,‬אנחנו רוצים שהשפה של האוטומט תישאר אותה שפה‪.‬‬
‫החלק המתוחכם הוא להבין איך בדיוק מורידים מצבים‪ .‬כאמור‪ ,‬בגלל שהפורמליקה מסובכת‪ ,‬אנו רק נראה דוגמה‪:‬‬
‫שלב ‪ - 2‬הוספת מצב התחלתי ‪ s‬ומצב מקבל ‪a‬‬
‫שלב ‪1‬‬
‫‪b‬‬
‫‪b‬‬
‫‪a‬‬
‫‪a‬‬
‫‪1‬‬
‫‪2‬‬
‫‪2‬‬
‫‪a‬‬
‫‪b‬‬
‫‪1‬‬
‫‪a‬‬
‫‪b‬‬
‫‪ε‬‬
‫‪a‬‬
‫‪s‬‬
‫‪a‬‬
‫‪a‬‬
‫‪b‬‬
‫‪ε‬‬
‫‪b‬‬
‫‪ε‬‬
‫‪3‬‬
‫‪3‬‬
‫שלב ‪ - 4‬מוציאים את ‪2‬‬
‫שלב ‪ - 3‬מוציאים את ‪1‬‬
‫צריך לטפל בכל המעברים שנגעו ל‪.1-‬‬
‫צריך לטפל בכל המעברים שנגעו ל‪.2-‬‬
‫לדוגמה‪ :‬ל‪ 2-‬הייתה לולאה עצמית ‪2 → 1 → 2 :aa‬‬
‫לדוגמה‪ :‬כדי להגיע מ‪ s-‬ל‪ 3-‬צריך לעבור ל‪ ,2-‬ואז אפשר‬
‫לכן נוסיף ללולאה העצמית המקורית של ‪ 2‬את ‪ ,aa‬ונקבל‬
‫להשאר בלולאה העצמית שלו‪ ,‬ואז לעבור ל‪ .3-‬לכן על‬
‫‪(aa) ∪ b‬‬
‫הקשת מ‪ s-‬ל‪ 3-‬נרשום‬
‫∗‬
‫)‪a ((aa) ∪ b‬‬
‫‪aa ∪ b‬‬
‫‪2‬‬
‫‪ε‬‬
‫‪a‬‬
‫‪a‬‬
‫‪s‬‬
‫‪ab‬‬
‫‪a‬‬
‫‪ba ∪ a‬‬
‫‪(ba ∪ a)(aa ∪ b)∗ ∪ ε‬‬
‫‪b‬‬
‫‪ε‬‬
‫∗)‪a(aa ∪ b‬‬
‫‪s‬‬
‫‪a(aa ∪ b)∗ ab ∪ b‬‬
‫‪3‬‬
‫‪3‬‬
‫‪bb‬‬
‫‪(ba ∪ a)(aa ∪ b)∗ ab ∪ bb‬‬
‫שלב ‪ - 5‬מוציאים את ‪3‬‬
‫עכשיו צריך להוסיף לקשת מ‪ s-‬ל‪ a-‬את הביטוי שמתאר את כל הדרכים להתחיל ב‪ s-‬לעבור ל‪ 3-‬ולהישאר כמה‬
‫שרוצים בלולאה העצמית‪ ,‬ואז לעבור ל‪.a-‬‬
‫‪s‬‬
‫‪a‬‬
‫∗)‪(a(aa ∪ b)∗ ab ∪ b)((ba ∪ a)(aa ∪ b)∗ ab ∪ bb)∗ ((ba ∪ a)(aa ∪ b)∗ ∪ ε) ∪ a(aa ∪ b‬‬
‫‪91‬‬
‫‪17‬‬
‫תרגול ‪ - 4‬למת הניפוח ומשפט מייהיל‪-‬נרוד‬
‫שבוע ‪4‬‬
‫‪ 17‬תרגול ‪ - 4‬למת הניפוח ומשפט מייהיל‪-‬נרוד‬
‫למת הניפוח‬
‫תזכורת‬
‫הגדרה ‪ .17.1‬תהי ‪ .g : N → N‬נגדיר )‪ ω (g‬באופן הבא )קבוצת הפונק’ שחסומות מלמטה ע“י ‪ g‬אסימפטוטית(‪:‬‬
‫})‪ω (g) = {f : N → N | ∀c ∈ N ∃N ∈ N : ∀n > N : cg (n) ≤ f (n‬‬
‫‬
‫‬
‫)‪f (n‬‬
‫∞=‬
‫‪= f : N → N | lim‬‬
‫)‪n→∞ g (n‬‬
‫‪o‬‬
‫ראינו כי השפה‬
‫‪2‬‬
‫‪an | n ∈ N‬‬
‫‪n‬‬
‫אינה רגולרית‪ .‬כשעשינו זאת הסתמכנו על העובדה שניתן לנפח מילה כך שתתקבל מילת‬
‫בין הערך הנוכחי בסדרה לערך הבא‪ .‬זה התאפשר כי ההפרשים בין האיברים היו לא קבועים‪.‬‬
‫מכאן נובעת טענה מעניינת‪ ,‬אך לפני שנציג אותה ונוכיח אותה‪ ,‬נוכיח טענת עזר קטנה שתעזור לנו בהמשך‪:‬‬
‫למה ‪ .17.1‬תהי )‪ f ∈ ω (n‬אזי לכל ‪ k ∈ N‬קיים ‪ k, N ∈ N‬קיים ‪ n > N‬כך ש‪ .f (n + 1) − f (n) > k-‬כלומר סדרת‬
‫ההפרשים לא חסומה מלעל‪.‬‬
‫הוכחה‪ .‬נניח בשלילה‪ .‬אזי קיימים ‪ k, N ∈ N‬כך שלכל ‪ n > N‬מתקיים כי ‪ .f (n + 1) − f (n) ≤ k‬בפרט קיים ‪M ∈ N‬‬
‫כך ש‪ f (n + 1) − f (n) ≤ M -‬לכל ‪ .n ∈ N‬אזי‬
‫‪f (2) − f (1) ≤ M ⇐⇒ f (2) ≤ f (1) + M‬‬
‫ולכן באינדוקציה על ‪ n‬נקבל כי‬
‫)‪f (n + 1) − f (n) ≤ M ⇐⇒ f (n + 1) ≤ M + f (n‬‬
‫)‪f (n + 1) ≤ nM + f (1‬‬
‫הנחת האינדוקציה‬
‫≤‬
‫כלומר אנו מקבלים כי‬
‫)‪f (n‬‬
‫‪n−1‬‬
‫)‪f (1‬‬
‫≤‬
‫‪M+‬‬
‫‪n‬‬
‫‪n‬‬
‫‪n‬‬
‫‬
‫נבחין כי ‪= 0‬‬
‫)‪f (1‬‬
‫‪n‬‬
‫‪+‬‬
‫‪n−1‬‬
‫‪n M‬‬
‫‬
‫‪ lim‬ולכן היא חסומה מלעל ולכן גם‬
‫∞→‪n‬‬
‫)‪f (n‬‬
‫‪n‬‬
‫חסומה מלעל‪ ,‬בסתירה לכך ש‪= ∞-‬‬
‫טענה ‪ .17.1‬תהא ‪ f : N → N‬מונוטונית עולה כך ש‪ .f (n) ∈ ω (n)-‬אזי השפה‬
‫)‪f (n‬‬
‫‪n→∞ n‬‬
‫‪. lim‬‬
‫‬
‫‪ Lf = af (n) | n ∈ N‬לא רגולרית‪.‬‬
‫הוכחה‪ .‬נניח בשלילה ש‪ Lf -‬רגולרית ויהי ‪ p > 0‬קבוע הניפוח שלה‪ .‬ניקח ‪ N = k = p‬ונביט במילה )‪ af (n‬עבור ‪.n > p‬‬
‫מכך ש‪ f -‬מונוטונית עולה ממש נובע כי ‪ f (n) ≥ n > p‬ולכן ‪.|w| ≥ p‬‬
‫נכתוב ‪ w = xyz‬כאשר ‪ x = al , y = am , z = as‬ומתקיים )‪ ,l + m + s = f (n‬וכמובן ש‪ l + m ≤ p-‬ו‪ .m > 0-‬נביט במילה‬
‫‪xy 2 z = f (n) + m‬‬
‫‪92‬‬
‫‪17‬‬
‫שבוע ‪4‬‬
‫תרגול ‪ - 4‬למת הניפוח ומשפט מייהיל‪-‬נרוד‬
‫עבור ‪ .n > N‬מתקיים כי‬
‫‪m>0‬‬
‫‪f (n) < f (n) + m ≤ f (n) + p‬‬
‫אבל נבחין כי מהלמה אכן יש ‪ n > N‬כך ש‪ f (n + 1) − f (n) > k = p-‬כלומר )‪ f (n) < f (n) + m < f (n + 1‬ולכן‬
‫‪ xy 2 z‬לא בשפה‪.‬‬
‫משפט מייהיל‪-‬נרוד‬
‫בהרצאה ראינו את משפט מייהיל‪-‬נרוד‪ ,‬וראינו שאם היה אוטומט לשפה‪ ,‬אז ‪ x ∼L y‬היו מגיעות לאותו מצב‪ ,‬ולכן לא ניתן‬
‫היה להפריד ביניהן‪.‬‬
‫דוגמה ‪.17.1‬‬
‫‬
‫∗‬
‫‪ w‬מסתיימת ב‪ .L = w ∈ {a, b} | a -‬קל לראות שהיא רגולרית‪ ,‬למשל מסגירות לשרשור כי ‪.Σ∗ · {a} = L‬‬
‫נרצה להראות כי היא רגולרית באמצעות מייהיל‪-‬נרוד‪ .‬נכוון לשתי מחלקות שקילות ‪ -‬מילים בשפה ומילים שאינן בשפה‪.‬‬
‫במקום לומר שמילה מסתיימת ב‪ a-‬פשוט נאמר שהיא ב‪.L-‬‬
‫אם ∗‪ x, y ∈ Σ‬שתיהן מסתיימות ב‪ a-‬אזי‬
‫‪xz ∈ L ⇐⇒ (z = ε ∨ z ∈ L) ⇐⇒ yz ∈ L‬‬
‫כלומר ‪.x ∼L y‬‬
‫אם ∗‪ x, y ∈ Σ‬שתיהן לא מסתיימות ב‪ a-‬אזי‬
‫‪xz ∈ L ⇐⇒ z ∈ L ⇐⇒ yz ∈ L‬‬
‫כלומר ‪.x ∼L y‬‬
‫∈ ‪ x ∈ L, y‬אזי ‪ z = ε‬מפריד בין ‪ x, y‬ולכן ‪ .x 6∼L y‬כלומר היחס ‪ ∼L‬משרה שתי מחלקות‬
‫אם ∗‪ x, y ∈ Σ‬כך ש‪/ L-‬‬
‫שקילות על ∗‪ .Σ‬על כן‪ ,‬ממשפט מייהיל‪-‬נרוד נובע כי ‪ L‬רגולרית‪.‬‬
‫דוגמה ‪ w} .17.2‬מאורך שאינו חזקה של ‪ L = {w | 2‬מעל }‪ .Σ = {a‬ראינו כי‬
‫‪ n‬‬
‫}‪ L′ = a2 | n ∈ N ∪ {0‬איננה רגולרית‪,‬‬
‫ולכן בהכרח ‪ L = Σ∗ \L′‬איננה רגולרית מסגירות למשלים‪ .‬גם כאן נוכיח זאת באמצעות מייהיל‪-‬נרוד‪ .‬נרצה להראות שיש‬
‫אינסוף מחלקות שקילות‪ .‬נרצה להראות שניתן למצוא אינסוף זוגות שניתן להפריד ביניהם‪ ,‬ככה שהם לא מתלכדים‪ .‬יהיו‬
‫‪ m > n‬טבעיים‪ .‬נביט במילים‬
‫‪n‬‬
‫‪n‬‬
‫‪m‬‬
‫‪ .y = a2 , x = a2‬נבדוק מה קורה כשמשרשרים להן זנב ב‪ z = a2 -‬מתקיים כי‬
‫‪|xz| = 2n + 2n = 2n+1‬‬
‫‬
‫‪|yz| = 2m + 2n = 2n 2m−n + 1 = even · odd‬‬
‫∈ ‪ xz‬ולכן ‪ z‬מפריד אותן‪ .‬כלומר ‪ x ∼L y‬במחלקות שקילות‬
‫על כן |‪ |yz‬איננה חזקה של שתיים‪ .‬מכאן ‪ yz ∈ L‬אבל ‪/ L‬‬
‫‪n‬‬
‫‪m‬‬
‫‪ y = a2nh, x =i a2‬נמצאות במחלקות שקילות זרות ביחס ‪ .∼L‬לכן יש אינסוף‬
‫שונות‪ .‬על כן‪ ,‬לכל ‪ m > n‬נדע‪ o‬שהמילים‬
‫מחלקות שקילות כנ“ל‪ .‬למשל‪| i ∈ N ∪ {0} ,‬‬
‫‪i‬‬
‫‪a2‬‬
‫קבוצה לא סופית‪.‬‬
‫שאלות חזרה‬
‫תרגיל ‪ .17.1‬יהא ‪ DFA A = hQ, {0, 1} , q0 , δ, F i‬עם ‪ |Q| = r‬מצבים‪ .‬נתון ש‪ .w = 0r 1r ∈ L (A)-‬מה מהבאים נכון‬
‫בהכרח?‬
‫‪.L (0∗ 1∗ ) ⊆ L (A) .1‬‬
‫‪93‬‬
‫‪17‬‬
‫שבוע ‪4‬‬
‫תרגול ‪ - 4‬למת הניפוח ומשפט מייהיל‪-‬נרוד‬
‫‪.L (A) ⊆ L (0∗ 1∗ ) .2‬‬
‫‪ 1 .3‬לא בהכרח נכון אבל לכל ‪ i ≥ 1‬מתקיים )‪.0ir 1ir ∈ L (A‬‬
‫‪ 1 .4‬לא בהכרח נכון אבל קיים ‪ k ≥ 1‬כך שלכל ‪ i ≥ 1‬מתקיים )‪.0r+ik 1r+ik ∈ L (A‬‬
‫פתרון ‪ .1‬נעבור על כל אחת מהאפשרויות‪.‬‬
‫‪ .1‬לא נכון‪ .‬עבור ‪ r = 2‬נביט באוטומט הבא המתאים לשפה }‪ .L = {w : 2 | #0 w‬הוא מקבל את ‪ ,02 12‬אבל לא מקבל‬
‫את ‪.03‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪q0‬‬
‫‪q1‬‬
‫‪0‬‬
‫‪ .2‬לא נכון‪ .‬אותה דוגמא מהסעיף הקודם והמילה ‪.1100‬‬
‫‪ .3‬לא נכון‪ .‬עבור ‪ r = 3‬נבנה אוטומט שמקבל את ‪ 03 13‬אבל לא את‬
‫‪6 6‬‬
‫‪ .0 1‬נבנה את האוטומט הבא‪:‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪q2‬‬
‫‪q0‬‬
‫‪q1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪ .4‬נכון‪ .‬מכך ש‪ |w| = 2r > r = |Q|-‬נובע כי ב‪ A-‬יש מעגל‪ .‬נסתכל של ‪ A‬על ‪ 0r‬ועל ‪ .1r‬בכל אחת מהריצות יש מצב‬
‫שחוזר על עצמו‪ .‬לכן בריצה על ‪ 0r‬יש מעגל באורך ‪ k1‬ובריצה על ‪ 1r‬החל מהמצב שמגיעים אליו אחרי ‪ ,0r‬יש מעגל‬
‫באורך ‪ .k2‬נביט בריצה של ‪ A‬שדומה לריצה על ‪ 0r‬אבל לוקחת את המעגל ‪ i · k2‬ואת המעגל של ‪ 1r‬אבל ‪ i · k1‬ונסמן‬
‫‪ k = k1 · k2‬אזי הטענה מתקיימת‪.‬‬
‫תרגיל ‪ .17.2‬נתון ה‪ DFA-‬הבא שמצויר בסוף השאלה‪.‬‬
‫נתון כי ל‪ L (A)-‬יש ‪ 4‬מחלקות שקילות ‪ .MN‬מה הם הערכים החסרים?‬
‫‪ δ (q5 , b) = q3 .1‬ו‪.δ (q5 , a) = q2 -‬‬
‫‪ δ (q5 , b) = q2 .2‬ו‪.δ (q5 , a) = q3 -‬‬
‫‪ .3‬גם ‪ 1‬וגם ‪ 2‬אפשריות‪.‬‬
‫‪ .4‬אף תשובה מ‪ 1-‬עד ‪ 3‬לא נכונה‪.‬‬
‫‪a‬‬
‫‪b‬‬
‫‪q4‬‬
‫‪q1‬‬
‫‪q2‬‬
‫‪a‬‬
‫?‬
‫‪a‬‬
‫‪b‬‬
‫‪b‬‬
‫‪q5‬‬
‫?‬
‫‪q3‬‬
‫‪a‬‬
‫‪a‬‬
‫‪b‬‬
‫‪q0‬‬
‫‪b‬‬
‫‪94‬‬
‫‪17‬‬
‫שבוע ‪4‬‬
‫תרגול ‪ - 4‬למת הניפוח ומשפט מייהיל‪-‬נרוד‬
‫פתרון ‪ .2‬מהנתון ל‪ 4 A-‬מחלקות שקילות מייהיל‪-‬נרוד‪ .‬לכן‪ ,‬אלגוריתם הצמצום אמור לאחד מצבים עד שנשארים ‪.4‬‬
‫הצעד הראשון באלגוריתם‪:‬‬
‫} ‪F = {q1 , q2 , q3 } , Q\F = {q0 , q4 , q5‬‬
‫} ‪⇒ {q1 , q2 } , {q3‬‬
‫עתה נניח את ‪ 1‬או ‪ 2‬אזי נקבל כי ‪ Q\F‬לא משתנה‪ .‬בשניהם נקבל } ‪.{q1 , q2 } , {q3 } , {q0 , q4 , q5‬‬
‫נבצע את השלב הבא באלגוריתם‪ :‬נקבל עבור ההנחה ‪1‬‬
‫} ‪{q1 , q2 } , {q3 } , {q0 , q5 } , {q4‬‬
‫בשלב הבא באלגוריתם נבחין כי אין הפרדה נוספת‪.‬‬
‫עבור ההנחה ‪ 2‬נקבל‬
‫} ‪{q1 , q2 } , {q3 } , {q5 } , {q0 , q4‬‬
‫גם כאן בשלב הבא באלגוריתם אין הפרדה נוספת‪.‬‬
‫בשני המקרים יש ‪ 4‬מחלקות שקילות‪ .‬לכן הן ייתכנו‪ .‬על כן התשובה הנכונה היא מספר ‪ ,3‬שכן ‪ 1, 2‬אפשריות‪.‬‬
‫‬
‫∗‬
‫תרגיל ‪ .17.3‬ציירו ‪ DFA‬מינימלי לשפה )‪ w‬מסתיימת ב‪.L = w ∈ {a, b} | (2 | #a (w)) ∨ (a -‬‬
‫פתרון ‪ .3‬נמצא את כל מחלקות השקילות של השפה‪ .‬ברגע שנעשה זאת יהיה לנו ‪ DFA‬מינימלי ממייהיל‪-‬נרוד‪ .‬לכל שתי‬
‫מילים ‪ w1 , w2‬עם מספר זוגי של ‪ ,a‬שאינן מסתיימות ב‪ ,a-‬נבחין כי הן שקולות מודולו ‪ .∼L‬אם אחת מהן מכילה את‬
‫האות ‪ a‬בסופה‪ ,‬והאחרת לא‪ ,‬אז הן אינן שקולות‪ ,‬כי המילה ‪ b‬מפרידה ביניהן‪ .‬אם שתיהן מכילות את האות ‪ a‬בסוף‪ ,‬אזי‬
‫הן שקולות‪ .‬אם שתיהן מכילות את האות ‪ a‬בסוף‪ ,‬אך רק אחת עם מספר זוגי של ‪ ,a‬נקבל כי המילה ‪ b‬מפרידה ביניהן‪,‬‬
‫אם שתיהן עם מספר אי זוגי של ‪ a‬הן שקולות‪ .‬על כן המחלקות המקבלות הן‪:‬‬
‫]‪q0 = [ε‬מילים עם מספר זוגי של ‪a‬‬
‫]‪q1 = [a‬מילים שמסתיימות ב‪a-‬‬
‫ממה שאמרנו עתה‪ ,‬הן זרות‪ .‬נביט עתה במילים שלא בשפה‪ ,‬כלומר מילים עם מספר אי זוגי של ‪ a‬שמסתיימות ב‪) b-‬המילה‬
‫∈ ‪ w1 , w2‬מתקיים כי‬
‫הריקה לא שם כי היא בשפה(‪ .‬נבחין כי הן שקולות מודולו ‪ ,∼L‬שכן עבור ‪/ L‬‬
‫‪w1 z ∈ L ⇐⇒ w2 z ∈ L‬‬
‫קיבלנו אם כך את מחלקת השקילות ]‪ .q2 = [ab‬מכאן ממשפט מייהיל‪-‬נרוד האוטומט הבא הוא אוטומט ששפתו היא ‪:L‬‬
‫הוא מינימלי‪ ,‬כי ראינו שאלגוריתם המינימיזציה מחזיר אוטומט עם מספר מינימלי שהמצבים בו הן מחלקות השקילות ב‪.L-‬‬
‫‪95‬‬
‫‪18‬‬
‫שבוע ‪5‬‬
‫תרגול ‪ - 5‬שפות חסרות הקשר‬
‫‪ 18‬תרגול ‪ - 5‬שפות חסרות הקשר‬
‫דקדוקים חסרי הקשר‬
‫שפות חסרות הקשר )ח“ה( הם פורמליזציה גנרטיבית של שפות‪ .‬כלומר‪ ,‬אנחנו מגדירים את השפה בכך שאנחנו מראים איך‬
‫לייצר מילים בשפה‪ ,‬במקום לבדוק האם מילה נמצא בשפה או לא )שזו פורמליזציה דיסקרימינטיבית(‪.‬‬
‫בהרצאה הגדרנו שפות חסרות הקשר וראינו כמה דוגמות‪ .‬עתה נראה עוד כמה דוגמאות ואז נוכיח טענות בנושא‪.‬‬
‫דוגמה‪ .‬האם ניתן לבנות דקדוק ח“ה עבור‬
‫‬
‫‪ ? ai bj cj di | i, j ∈ N‬כן! נבחר בחוקים‬
‫‪S → aSd | T | ε‬‬
‫‪T → bT c | ε‬‬
‫‪.‬‬
‫תכונות סגור‬
‫טענה ‪ .18.1‬יהיו ‪ .L1 , L2 ∈ CFL‬אזי ‪.L1 ∪ L2 ∈ CFL‬‬
‫‪G1 = hV1 , Σ, R1 , S1 i‬‬
‫‪L (G1 ) = L1‬‬
‫‪ .‬נניח בה“כ כי ∅ = ‪) V1 ∩ V2‬אחרת נוכל‬
‫הוכחה‪ .‬יהיו‬
‫‪L (G2 ) = L2‬‬
‫‪G2 = hV2 , Σ, R2 , S2 i‬‬
‫∈ ‪ S‬משתנה חדש‪ .‬מכאן אנו יכולים להגדיר‬
‫לשנות את השמות של האיברים ב‪ ,V2 -‬כפי שעשינו עם אוטומטים(‪ .‬יהי ‪/ V1 ∪ V2‬‬
‫דקדוקים ח“ה עבורם‬
‫את הדקדוק הבא‪:‬‬
‫‪G = hV1 ∪ V2 , Σ, R1 ∪ R2 ∪ {S → S1 | S2 } , Si‬‬
‫נשים לב שזהו איחוד פשוט של שני הדקדוקים ‪ ,G1 , G2‬ועבורו אכן מתקיים ‪.L (G) = L1 ∪ L2‬‬
‫טענה ‪ .18.2‬יהיו ‪ .L1 , L2 ∈ CFL‬אזי ‪.L1 · L2 ∈ CFL‬‬
‫‪G1 = hV1 , Σ, R1 , S1 i‬‬
‫‪L (G1 ) = L1‬‬
‫הוכחה‪ .‬יהיו‬
‫‪G2 = hV2 , Σ, R2 , S2 i‬‬
‫משתנה חדש‪ .‬מכאן אנו יכולים להגדיר את הדקדוק הבא‪:‬‬
‫דקדוקים ח“ה עבורם‬
‫‪L (G2 ) = L2‬‬
‫∈‪S‬‬
‫‪ .‬נניח בה“כ כי ∅ = ‪ .V1 ∩ V2‬יהי ‪/ V1 ∪ V2‬‬
‫‪G = hV1 ∪ V2 , Σ, R1 ∪ R2 ∪ {S → S1 · S2 } , Si‬‬
‫נשים לב שזהו שרשור פשוט של שני הדקדוקים ‪ ,G1 , G2‬ועבורו אכן מתקיים ‪.L (G) = L1 · L2‬‬
‫ראינו ש‪ REG-‬סגורה תחת מגוון פעולות‪ .‬ראינו עכשיו שגם ‪ CFL‬סגורה תחת כל מיני פעולות‪ ,‬אך בהרצאה ראינו )מסקנה‬
‫‪ (5.1‬שהיא איננה סגורה תחת חיתוך‪ .‬מה לגבי משלים?‬
‫טענה ‪ CFL .18.3‬לא סגורה תחת משלים‪.‬‬
‫הוכחה‪ .‬לפי חוק דה מורגן‪ ,‬אם ‪ CFL‬הייתה סגורה למשלים היה מתקיים לכל ‪ L1 , L2 ∈ CFL‬ש‪L1 ∩ L2 = L1 ∪ L2 ∈ CFL-‬‬
‫אך ראינו )מסקנה ‪ (5.1‬ששפות ח“ה לא סגורות תחת חיתוך‪.‬‬
‫‪96‬‬
‫‪18‬‬
‫שבוע ‪5‬‬
‫תרגול ‪ - 5‬שפות חסרות הקשר‬
‫למת הניפוח לשפות חסרות הקשר‬
‫למת הניפוח לשפות חסרות הקשר‬
‫משפט‪ .‬תהי ‪ .L ∈ CFL‬אזי קיים ‪) p ≥ 1‬קבוע הניפוח( כך שלכל מילה ‪ ,w ∈ L‬אם ‪ |w| ≥ p‬אז קיימת חלוקה‬
‫‪ w = u · v · x · y · z‬כך שמתקיים‪:‬‬
‫‪|vy| > 0‬‬
‫‪∀i ≥ 0, uv i xy i z ∈ L‬‬
‫‪|vxy| ≤ p‬‬
‫‬
‫∗‬
‫∈ }‪.L = ww | w ∈ {a, b‬‬
‫תרגיל‪ .‬הוכיחו כי ‪/ CFL‬‬
‫פתרון‪ .‬נניח בשלילה כי ‪ .L ∈ CFL‬יהי ‪ p‬קבוע הניפוח של השפה ‪ .L‬נסתכל על ‪ .w = ap bp ap bp‬מהיות ‪ w ∈ L‬ו‪,|w| ≥ p-‬‬
‫נובע שקיימת חלוקה ‪ w = uvxyz‬כך שתנאים ‪ 1, 2, 3‬מהלמה מתקיימים‪ .‬נחלק למקרים‪:‬‬
‫‪ vxy‬מוכל כולו בחצי הראשון של ‪ :w‬נסמן ב‪ s, t-‬את מספר ה‪-a, b-‬ים ב‪ vy-‬בהתאמה )כלומר ‪ .(vy = as bt‬מתנאי ‪ 2‬של‬
‫הלמה‪ ,‬מתקיים ‪ .s + t > 0‬לפי תנאי ‪ ,3‬עבור ‪ ,i = 0‬מתקיים ‪ - ap−s bp−t ap bp = uxz ∈ L‬סתירה‪.‬‬
‫‪ vxy‬מוכל כולו בחצי השני של ‪ :w‬באופן דומה למקרה הקודם‪.‬‬
‫‪ vxy‬נמצא בחלקו בחצי הראשון של ‪ w‬ובחלק בחצי השני‪ :‬לפי תנאי ‪ 1‬של הלמה‪ .|vxy| ≤ p ,‬לכן‪ vxy ,‬נמצא בחלק‬
‫האחרון של ה‪ bp -‬בחצי הראשון של ‪ w‬ובחלק הראשון של ה‪ ap -‬בחצי השני של ‪) w‬כלומר הוא איפשהו בחלק הסגול‬
‫של ‪ .(ap bp ap bp‬נסמן ב‪ s, t-‬את מספר ה‪-a, b-‬ים ב‪ vy-‬בהתאמה )כלומר ‪ .(vy = bt as‬לפי תנאי ‪ ,3‬עבור ‪ ,i = 0‬מתקיים‬
‫‪ - ap bp−t ap−s bp = uxz ∈ L‬סתירה‪.‬‬
‫הדוגמה הקודמת נותנת לנו הוכחה נוספת ש‪ CFL-‬לא סגורה למשלים‪:‬‬
‫תרגיל‪ .‬הראו שעבור השפה מהדוגמה הקודמת מתקיים ‪.L ∈ CFL‬‬
‫פתרון‪ .‬נשים לב כי ‪ L = K1 ∪ K2‬כאשר‬
‫} ∗‪K1 = {uw | |u| = |w| ∧ u ̸= w ∈ Σ‬‬
‫}|‪K2 = {w ∈ Σ∗ | 2 ∤ |w‬‬
‫‪.‬‬
‫היות ש‪ CFL-‬סגורה תחת איחוד‪ ,‬מספיק להראות ש‪ .K1 , K2 ∈ CFL-‬קל לראות ש‪ K2 ∈ CFL-‬שכן ‪ .K2 ∈ REG‬נותר‬
‫להראות ש‪.K1 ∈ CFL-‬‬
‫יהי ‪ w ∈ K1‬ונסמן |‪) 2n = |w‬כל המילים ב‪ K1 -‬הן מאורך זוגי(‪ .‬מהגדרת ‪ ,K1‬בהכרח קיים ‪ 1 ≤ i ≤ n‬עבורו ]‪.w [i] 6= w [n + i‬‬
‫נניח בה“כ ‪ .w [i] = a, w [n + i] = b‬לכן נוכל לכתוב ‪ w = xaybz‬כאשר ∗‪ x, y, z ∈ Σ‬ו‪.|x| = i−1, |y| = n−1, |z| = n−i-‬‬
‫באופן כללי‪ ,‬נוכל להגדיר שפה ‪ K1′‬כקבוצת כל המילים מהצרה ‪ xaybz‬או ‪ xbyaz‬כך ש‪(⋆) |x| = i−1, |y| = n−1, |z| = n−i-‬‬
‫עבור ‪ n‬ועבור ‪ 1 ≤ i ≤ n‬כלשהו‪ .‬הגדרה שקולה ל‪ K1′ -‬היא קבוצת כל המילים מהצורה ‪ xaybz‬או ‪ xbyaz‬כך ש‪,|x| + |z| = |y|-‬‬
‫כי )⋆( שקול לכך ש‪.|x| + |z| = i − 1 + n − i = n − 1 = |y|-‬‬
‫נשים לב ש‪ :K1′ ⊆ K1 -‬אם ‪ w ∈ K1′‬אז ‪ w = xaybz‬כאשר )⋆( מתקיים עבור איזשהם ‪ .i, n‬מכאן שהאורך של ‪ w‬הוא‬
‫‪ 2n‬ומתקיים ‪ w [i] = a ∧ w [n + i] = b‬ולכן ‪) .w ∈ K1‬באופן דומה אם ‪(w = xbyaz‬‬
‫באופן דומה אפשר להראות הכלה בכיוון השני ולהסיק ‪ .K1′ = K1‬לכן‪ ,‬כדי להראות ש‪ ,K1 ∈ CFL-‬צריך רק לתאר דקדוק‬
‫ח“ה עבור ‪ .K1′‬נשים לב שדקדוק זה אכן מתאר את השפה‪:‬‬
‫‪S → AB | BA‬‬
‫‪A → aAa | aAb | bAa | bAb | a‬‬
‫‪B → aBa | aBb | bBa | bBb | b‬‬
‫כאשר הרעיון מאחורי הדקדוק הוא שאנחנו רוצים לקבל מילים מהצורה ‪) xaybz‬או ‪ ,(xbyaz‬תוך שאנחנו שומרים על הכלל‬
‫|‪ .|x| + |z| = |y‬לכן‪ ,‬בכל אחד מהחוקים‪ ,‬על כל אות שאנחנו מוסיפים ל‪ x-‬או ל‪ ,z-‬אנחנו מוסיפים גם אות ל‪ .y-‬בסוף‪,‬‬
‫המשתנה ‪ B‬יהפוך ל‪ b-‬במילה ‪) xaybz‬או ‪ ,xbyaz‬תלוי האם התחלנו מ‪ S → AB-‬או ‪ ,(S → BA‬וכנ“ל עבור ‪.A‬‬
‫‪97‬‬
‫‪19‬‬
‫שבוע ‪6‬‬
‫תרגול ‪ - 6‬מכונת טיורינג‬
‫‪ 19‬תרגול ‪ - 6‬מכונת טיורינג‬
‫חישוב פונקציות באמצעות מכונות טיורינג‬
‫הזזת קלט ימינה‬
‫נתאר מ“ט שבהינתן קלט ‪ w‬מסיים את הריצה כאשר המילה שרשומה על הסרט היא ‪ ,$w‬כלומר הוא מזיז את הקלט‬
‫מקום אחד ימינה‪ ,‬ושם בהתחלה ‪.$‬‬
‫)‪a → (a, R‬‬
‫‪q1‬‬
‫)‪a → ($, R‬‬
‫)‪a → (a, L‬‬
‫‪q3‬‬
‫)‪b → (b, L‬‬
‫)‪a → (b, R‬‬
‫)‪b → (a, R‬‬
‫)‪→ (b, L‬‬
‫‪q0‬‬
‫)‪b → ($, R‬‬
‫‪q2‬‬
‫)‪b → (b, R‬‬
‫ˆ המצב ההתחלתי הוא ‪ ,q0‬שרושם ‪ $‬במקום הראשון‪ ,‬מעביר אותנו למצב שזוכר האם קראנו ‪ (q1 ) a‬או ‪ (q2 ) b‬ומתקדם‬
‫ימינה‪.‬‬
‫ˆ המצב ‪ q1‬כל פעם רושם את האות שהוא אמור לזכור‪ ,‬ואז מעביר אותנו למצב מתאים שזוכר את האות שהוא קרא‬
‫עכשיו‪ ,‬וכך ממשיכים להתקדם ימינה‪.‬‬
‫ˆ ‪ q3‬הוא מצב אליו עוברים ברגע שקראנו את התו‬
‫‪ ,‬כלומר הגענו לסוף המילה‪ .‬מצב זה דואג להחזיר אותנו לתחילת‬
‫הסרט )אין חובה לחזור לתחילת הסרט‪ ,‬אך הוספנו זאת לשם נוחות(‪.‬‬
‫חישוב הגדלת ערך מספרי‬
‫נתאר מ“ט שמחשבת את הפונק’ ‪ .f (n) = n + 1‬נאמר שמ“ט מחשבת את )‪ f (w‬אם בתחילת הריצה של ‪ M‬כתוב את ‪w‬‬
‫על הסרט ובסוף הריצה הסרט מכיל רק את )‪.f (w‬‬
‫עקרונית תמיד אפשר לכתוב מכונת טיורינג שמתרגם מספר בינארי למספר עשרוני‪ ,‬לכן כקלט ל‪ f -‬ניתן מספרים בייצוג בינארי‬
‫והפלט יהיה גם בייצוג בינארי‪.‬‬
‫המכונה תפעל כך‪:‬‬
‫ˆ נתחיל במצב ‪ ,q0‬נרשום בתא הראשון של הסרט ‪ $‬ונזיז את כל הקלט מקום אחד ימינה )כדי לדעת שזה קצה הסרט(‪.‬‬
‫בגלל שמחקנו את מה שהיה בתא הראשון וסמנו ‪ ,$‬נעבור בזמן הזזת הקלט למצב ייעודי שנועד לזכור איזה תו מחקנו‪.‬‬
‫ˆ נסרוק את הסרט ימינה עד שנגיע ל‪-‬‬
‫ואז נעבור למצב ‪.q1‬‬
‫‪98‬‬
‫‪19‬‬
‫שבוע ‪6‬‬
‫תרגול ‪ - 6‬מכונת טיורינג‬
‫ˆ ב‪ q1 -‬אם המכונה קוראת את התו ‪ 1‬היא משנה אותו ל‪ 0-‬וממשיכה שמאלה‪ .‬אם היא רואה ‪ 0‬היא משנה אותו ל‪1-‬‬
‫ועוצרת‪.‬‬
‫ˆ אם ‪ M‬נתקלת בתו ‪ $‬זה אומר שהקלט היה ‪ 11 . . . 1‬ואז במקרה הזה נשנה את ה‪ $-‬ל‪ ,1-‬ואז נרשום בתא הראשון‬
‫‪ $‬ונזיז את כל תוכן הסרט מקום אחד ימינה )וכמו קודם נזכור מה היה לפני ששמנו ‪.($‬‬
‫החלק של ההזזה כאן הוא רק כדי שהפלט יראה ”נקי“ ותמיד יהיה מהצורה ]‪ $ [n + 1‬כאשר ]‪ [n + 1‬הוא הייצוג‬
‫הבינארי של ‪.n + 1‬‬
‫רובסטיות של מכונות טיורינג‬
‫הגדרנו עד כה מגוון מודלים חישוביים‪ .‬ראינו שחלקם אקספרסיביים מאחרים‪ .‬הופתענו לגלות שלדוגמה ‪ NFA‬שקול ל‪,DFA-‬‬
‫ראינו שדקדוקים ח“ה יותר ”חזקים“ מאוטומטים‪ .‬נשאלת השאלה כמה מכונות טיורינג ”חזקות“‪ ,‬והאם נוכל להפוך אותן‬
‫לחזקות יותר באמצעות שינויים ותוספות? אנו נראה שמכונת טיורינג היא מודל רובסטי למדי ‪ -‬מגוון שינויים טכניים לא‬
‫משפיעים על האקספרסיביות של המודל‪.‬‬
‫הגדרה ‪ .19.1‬נאמר ששתי מכונות חישוב ‪ N, M‬הן שקולות אם לכל ∗‪ w ∈ Σ‬מתקיים ש‪ M -‬מקבלת את ‪ w‬אם“ם‬
‫‪ N‬מקבלת את ‪ ,w‬דוחה את ‪ w‬אם“ם ‪ N‬דוחה את ‪ ,w‬לא עוצרת על ‪ w‬אם“ם ‪ N‬לא עוצרת על ‪.w‬‬
‫הגדרה ‪ .19.2‬נאמר ששני מודלים חישוביים ‪ X, Y‬הם שקולים אם לכל מכונה ב‪ X-‬יש מכונה שקולה ב‪ ,Y -‬ולכל‬
‫מכונה ב‪ Y -‬יש מכונה שקולה ב‪.X-‬‬
‫למעשה‪ ,‬כל המודלים הבאים )ועוד אחרים( שקולים למכונת טיורינג‪:‬‬
‫ˆ מ“ט שסרטה לא חסום גם משמאל‪.‬‬
‫ˆ מ“ט עם ‪ k‬סרטים‪.‬‬
‫ˆ מ“ט שיכולה לבחור להישאר במקום בנוסף לבחירה לזוז ימינה‪/‬שמאלה‪.‬‬
‫ˆ מ“ט שבמקום סרט חד‪-‬מימדי אינסופי יש לה ‪ grid‬דו‪-‬מימדי אינסופי‪.‬‬
‫ˆ מ“ט אי‪-‬דטרמיניסטית‪.‬‬
‫מכונת טיורינג עם שני סרטים‬
‫מכונת טיורינג עם ‪ 2‬סרטים היא מכונת טיורינג רגילה‪ ,‬רק‪ ,‬כמה מפתיע‪ ,‬שיש לה שני סרטים‪ .‬לכל סרט יש ראש קורא‬
‫משלו‪ .‬במצב ההתחלתי הקלט מופיע על הסרט הראשון‪ ,‬והסרט השני ריק‪ .‬פונק’ המעברים מאפשרת לנו לקרוא‪/‬לכתוב‪/‬לזוז‬
‫בשני הסרטים בו זמנים‪:‬‬
‫‪2‬‬
‫}‪δ : Q × Γ2 → Q × Γ2 × {R, L‬‬
‫הביטוי‬
‫)‪δ (q, γ1 γ2 ) = (q ′ , γ1′ γ2′ , L, R‬‬
‫משמעו שכאשר אנו במצב ‪ ,q‬והראש של הסרט הראשון מצביע על ‪ γ1‬והראש של הסרט השני מצביע על ‪ ,γ2‬אז אנחנו‬
‫עוברים למצב ‪ ,q ′‬כותבים בסרט הראשון ‪ γ1′‬במקום ‪ γ1‬וזזים שמאלה‪ ,‬וכותבים בסרט השני ‪ γ2′‬במקום ‪ γ2‬וזזים ימינה‪.‬‬
‫‪99‬‬
‫‪19‬‬
‫שבוע ‪6‬‬
‫תרגול ‪ - 6‬מכונת טיורינג‬
‫משפט ‪ .19.1‬המודל של מ“ט עם ‪ 2‬סרטים שקול למודל של מ“ט‪.‬‬
‫הוכחה בכיוון הקל‪ ,‬בהינתן מ“ט ‪ M‬נוכל לקחת מ“ט עם ‪ 2‬סרטים כאשר הסרט הראשון מדמה את ‪ M‬והסרט השני לא‬
‫עושה כלום‪.‬‬
‫‪′‬‬
‫בכיוון הקשה‪ ,‬יהי ‪ M = hQ, Σ, Γ, δ, q0 , qacc , qrej i‬מ“ט עם ‪ 2‬סרטים‪ .‬נמצא מ“ט רגילה ‪ M‬השקולה ל‪ .M -‬הרעיון בהוכחה‬
‫יהיה לסמלץ את שני הסרטים באמצעות הסרט היחיד של ‪ .M ′‬נגדיר מ“ט‬
‫‪′‬‬
‫‪′‬‬
‫‪ M ′ = Q′ , Σ, Γ′ , δ ′ , q0′ , qacc‬באופן הבא‪:‬‬
‫‪, qrej‬‬
‫כל אות ב‪ Γ′ -‬שנרשום על הסרט היחיד שלנו‪ ,‬תכיל בזמן הסימלוץ את שתי האותיות שרשומות על הסרטים של ‪ ,M‬יחד עם‬
‫‪2‬‬
‫זוג ערכים ב‪ ,{True, False} -‬שיציינו את מיקום הראש של כל סרט‪ .‬לדוגמה‪ ,‬אם בתא ה‪ i-‬בסרט רשום )‪(a, b, False, True‬‬
‫זה אומר שבסרט ‪ 1‬רשומה בתא ה‪ i-‬האות ‪ ,a‬והראש של הסרט ‪ 1‬לא מצביע על התא ה‪) i-‬כי רשום ‪ ,(False‬ובאופן דומה‬
‫בסרט ‪ 2‬רשומה בתא ה‪ i-‬האות ‪ ,b‬והראש של סרט ‪ 2‬כן מצביע על התא ה‪) i-‬כי רשום ‪ .(True‬לדוגמה‪:‬‬
‫הסרט השני ב‪M -‬‬
‫···‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫הסרט הראשון ב‪M -‬‬
‫···‬
‫‪0‬‬
‫‪b‬‬
‫‪a‬‬
‫‪b‬‬
‫‪a‬‬
‫הסרט היחיד ב‪M ′ -‬‬
‫···‬
‫)‪(a , 0 , False , False) (b , 1 , True , False) (a , 1 , False , False) (b , 0 , False , True‬‬
‫כלומר באופן פורמלי‬
‫} { ∪ ‪Γ′ = (Γ × Γ × {True, False} × {True, False}) ∪ Σ‬‬
‫כל צעד ב‪ M ′ -‬יתבצע באופן הבא‪:‬‬
‫‪ .1‬אתחול‪ :‬המכונה תתחיל לעבור על מילת הקלט‪ ,‬ותחליף כל הופעה של ‪ σ ∈ Σ‬ב‪ ,(σ, , 0, 0)-‬כאשר רק התא הראשון יסומן )‪(σ, , 1, 1‬‬
‫שכן בהתחלה שני הראשים ב‪ M -‬מצביעים על התא הראשון‪.‬‬
‫‪ .2‬סימולציה‪ M ′ :‬מקודדת במצבים שלה את המצבים של ‪ .M‬בכל צעד‪ M ′ ,‬סורקת את הסרט משמאל לימין‪ ,‬ומחפשת תא בו רשום‬
‫ביטוי מהצורה )· ‪ ,(·, ·, True,‬כך נדע שהראש הראשון מצביע על התא הזה‪ .‬ברגע שמגיעים לתא כזה‪ ,‬המכונה זוכרת את האות הנוכחית‬
‫)מקודדת אותה במצב הפנימי שלה(‪.‬‬
‫עכשיו ‪ M ′‬חוזר לתחילת הסרט‬
‫‪21‬‬
‫ומחפש תא בו רשום ביטוי מהצורה )‪ (·, ·, ·, True‬כך נדע שהראש השני מצביע על התא הזה‪ .‬ברגע‬
‫שמגיעים לתא כזה‪ ,‬המכונה זוכרת את האות הנוכחית )מקודדת אותה במצב הפנימי שלה(‪.‬‬
‫עכשיו ‪ M ′‬מוכנה לבצע החלטה )כי היא ”יודעת“ מהם ‪.(q, γ1 , γ2‬‬
‫‪ M ′‬סורקת את הסרט משמאל לימין‪ ,‬ומחפשת את המקום עליו מצביע הראש הראשון ב‪ ,M -‬וברגע שמגיעים לתא זה‪ ,‬אנחנו מעדכנים‬
‫את הסרט בהתאם ל‪ ,δ-‬בכך שנשנה את האות ”בסרט הראשון“ )האיבר הראשון במה שרשום בתא(‪ ,‬ואז מזיזים את הראש ימינה או‬
‫שמאלה בהתאם ל‪ δ-‬ומעדכנים את המיקום של הראש )מוחקים את ה‪ True-‬שהיה‪ ,‬ושמים ‪ True‬במקום החדש של הראש(‪.‬‬
‫מבצעים את אותו תהליך עבור הראש השני‪.‬‬
‫‪ .3‬עצירה‪ :‬נחזור על התהליך שתואר בשלב הסימולציה‪ ,‬עד שבסימלוץ שלנו נגיע למצב ‪ qacc‬או ‪ ,qrej‬ואם בסמלוץ ‪ M‬אף פעם לא עוצרת‬
‫אז גם ‪ M ′‬לא תעצור‪.‬‬
‫נשים לב ש‪ ,Q, Γ-‬הן סופיות ולכן המכונה שלנו תקינה‪ ,‬ומסמלצת את ‪ M ′‬באופן מושלם לכן ‪ M, M ′‬שקולות‪.‬‬
‫‪21‬ראינו בתחילת התרגול איך אפשר לדעת שאנחנו נמצאים בתחילת הסרט‪ ,‬לדוגמה באמצעות הזזת הקלט מקום אחד ימין‪ ,‬ורשימת התו ‪ $‬בתא‬
‫הראשון‪.‬‬
‫‪100‬‬
‫‪20‬‬
‫תרגול ‪ - 7‬תכונות סגור של ‪R, RE, coRE‬‬
‫שבוע ‪7‬‬
‫‪ 20‬תרגול ‪ - 7‬תכונות סגור של ‪R, RE, coRE‬‬
‫טענה ‪ .20.1‬אם ‪ L1 , L2 ∈ R‬אזי ‪.L1 ∪ L2 ∈ R‬‬
‫הוכחה‪ .‬מכך ש‪ L1 , L2 ∈ R-‬יש מ“ט ‪ M1 , M2‬המכריעות את ‪ L1 , L2‬בהתאמה‪ .‬נבנה מ“ט ‪ M‬שמכריעה את ‪ L1 ∪ L2‬באופן‬
‫הבא‪ .‬בהינתן ‪ ,w‬תשמור את ‪ w‬במקום שמור בראש הסרט‪ ,‬אחר כך תכתוב ⊥ )שיהווה חסם משמאל ל‪ (M1 -‬ואז תעתיק‬
‫את ‪ w‬לאחר ⊥ תסמלץ את ריצת ‪ M1‬על ‪ w‬החל מ‪ .⊥-‬אם ‪ M1‬קיבלה אז ‪ M‬תקבל‪ ,‬אחרת‪ ,‬תמחק את כל מה שאחרי‬
‫⊥‪ ,‬תעתיק מחדש את ‪ w‬ותסמלץ את ריצת ‪ M2‬על ‪ w‬החל מ‪ .⊥-‬אם ‪ M2‬קיבלה‪ ,‬אז ‪ M1‬תקבל‪ .‬אחרת‪ ,‬תדחה‪ .‬בכל‬
‫מקרה‪ M1 , M2 ,‬עוצרות ולכן ‪ M‬תמיד עוצרת‪.‬‬
‫טענה ‪ .20.2‬אם ‪ L1 , L2 ∈ RE‬אזי ‪.L1 ∪ L2 ∈ RE‬‬
‫הוכחה‪ .‬במקרה זה ההוכחה שהצגנו לא תעבוד‪ ,‬כי אין בהכרח מ“ט שמכריעות את ‪ ,L1 , L2‬אבל‪ ,‬נוכל להסתמך על העובדה‪,‬‬
‫שאם מילה בשפה‪ ,‬המ“ט בהכרח תעצור‪ ,‬ומכך שהמ“ט שאנו בונים לא חייבת לעצור‪ ,‬נוכל להריץ אותן בשלבים‪.‬‬
‫אם כך‪ ,‬יהיו ‪ M1 , M2‬מ“ט שמזהות את ‪ L1 , L2‬בהתאמה‪ .‬נבנה מ“ט ‪ M‬שמזהה את ‪ L1 ∪ L2‬שתפעל כך‪ .‬בהינתן ∗‪w ∈ Σ‬‬
‫‪ M‬תשמור את ‪ w‬על הסרט במקום שמור‪ ,‬אחריו ⊥‪ ,‬מיד אחריו תשמור מונה צעדים ‪ i‬שמשמעותו כמה צעדים צריך לרוץ‬
‫כעת‪ ,‬אחריו ⊥‪ ,‬ואז מונה צעדים ‪ j‬של כמה צעדים רצנו בסיבוב זה‪ ,‬אחריו ⊥ ואז דגל שמשמעותו אם מריצים את ‪M1‬‬
‫או את ‪.M2‬‬
‫כעת‪ ,‬בכל שלב‪ M ,‬תסמלץ את ‪ M1‬או ‪ M2‬בהמשך הסרט‪ ,‬במשך ‪ i‬צעדים‪ ,‬תוך שימוש ב‪ .j-‬אם תוך ‪ i‬צעדים ‪ M1‬לא‬
‫קיבלה‪ ,‬תעבור ל‪ M2 -‬ותסמלץ ‪ i‬צעדים‪ .‬אם לא קיבלה‪ ,‬תאפס את ‪ ,j‬תגדיל את ‪ ,i + 1‬תעתיק מחדש את ‪ w‬ותמשיך כך‪.‬‬
‫ריצה מקבילית‬
‫טענה ‪ .20.3‬אם ‪ L1 , L2 ∈ RE‬אזי ‪.L1 · L2 ∈ RE‬‬
‫הוכחה‪ .‬כאן ההוכחה שביצענו לאיחוד‪ ,‬לא תעבוד‪ ,‬היות שבחירה של חלוקה אחת‪ ,‬עלולה להוביל לאי עצירה‪ ,‬בעוד חלוקה‬
‫אחרת תוביל לקבלה‪ .‬על כן‪ ,‬ננסה להריץ אותם בצורה מקבילית‪.‬‬
‫יהיו ‪ M1 , M2‬מ“ט שמזהות את השפות ‪ L1 , L2‬בהתאמה‪ .‬נתאר מ“ט ‪ M3‬שמזהה את השפה } ‪.{u#v | u ∈ L1 , v ∈ L2‬‬
‫‪ M3‬תפעל כך‪ .‬תסמלץ את ריצת ‪ M1‬על ‪ .u‬אם ‪ M1‬מקבלת את ‪ u‬אז תסמלץ את ‪ M2‬על ‪ .v‬אם ‪ M2‬מקבלת‪M ,‬‬
‫תקבל‪ .‬בכל מקרה אחר ‪ M3‬תדחה או לא תעצור‪ .‬עתה מה שנותר הוא למצוא את החלוקה הנכונה‪ .‬נשתמש ב‪ M3 -‬כדי‬
‫לבנות מ“ט ‪ M‬שמזהה את ‪ .L1 · L2‬היות שכל החלוקות של ‪ w‬ל‪ L1 · L2 -‬נקבעות על ידי אינדקס |‪ ,0 ≤ i ≤ |w‬נוכל‬
‫להריץ את המכונה ‪ M3‬על כל חלוקה ‪ i‬צעדים‪ .‬על כן‪ ,‬לכל ∗‪ w ∈ Σ‬ולכל חלוקה ‪ w = u · v‬כאשר בה“כ החלוקה היא‬
‫במקום ה‪ i-‬ב‪ M3 ,w-‬תפעל על ‪ u#v‬מספר סופי ‪ k‬של צעדים‪ .‬עכשיו נוכל להגדיר את ‪.M‬‬
‫‪ M‬תשמור את ‪ w‬במקום שמור בסרט‪ ,‬אחריו ‪ 3‬מונים ‪ i, j, k‬כאשר ‪ i‬מסמן את החלוקה‪ j ,‬כמה צעדים לרוץ ו‪ k-‬כצה‬
‫צעדים רצנו עד עכשיו‪ .‬כעת‪ ,‬בכל שלב בריצה‪ M ,‬תסמלץ את ‪ M3‬על החלוקה הנוכחית במשך ‪ i‬צעדים תוך שימוש במונה‬
‫‪ .j‬אם ‪ M3‬מקבלת‪ M ,‬תקבל‪ ,‬אחרת‪ ,‬תמשיך הלאה עד מיצוי כל החלוקות במשך ‪ j‬צעדים‪ .‬לאחר מכן‪ ,‬תגדיל ‪j → j + 1‬‬
‫ותאפס את מונה החלוקות ‪ i‬ל‪ .0-‬בכל ריצה של ‪ j‬צעדים של ‪ M3‬נעזר ב‪ k-‬כדי למנות את מספר הצעדים‪.‬‬
‫נשים לב כי אם קיימת חלוקה של ‪ w‬ל‪ uv-‬כך ש‪ u ∈ L1 , v ∈ L2 -‬אז ‪ M‬תקבל את ‪ w‬מתישהו‪ .‬אחרת‪ M ,‬לא תעצור‪,‬‬
‫כלומר ‪ M‬מזהה את ‪ L1 · L2‬ולכן ‪.L1 · L2 ∈ RE‬‬
‫מכונת טיורינג אוניברסלית‬
‫עד כה אמרנו שמכונה ”מסלמצת“ מכונה אחרת‪ ,‬נרצה לנסח זאת בצורה פורמלית‪.‬‬
‫‪101‬‬
‫‪20‬‬
‫תרגול ‪ - 7‬תכונות סגור של ‪R, RE, coRE‬‬
‫שבוע ‪7‬‬
‫הגדרה ‪ .20.1‬מ“ט ‪ U‬תקרא אוניברסלית אם היא מקבלת כקלט מ“ט ‪ M‬ומילה ‪ w‬ומתנהגת בדיוק כמו ‪ M‬על ‪,w‬‬
‫כלומר מסמלצת את ‪ M‬על ‪ ,w‬כאשר היא מקבלת‪/‬דוחה‪/‬לא עוצרת בהתאם וגם מסמלצת את תוכן הסרט‪.‬‬
‫הערה ‪ .20.1‬אף אחד לא אמר שקיימת מ“ט כזו‪.‬‬
‫הבעיה הראשונה שעולה היא קידוד האלפבת ‪ -‬מכונות טיורינג שונות יכולות להכיל אלפבת שונה‪ ,‬ולכן נצטרך להיות מסוגלים‬
‫לקודד אלפבת אחד באמצעות אלפבת אחר‪ .‬בכלל‪ ,‬עלינו להיות מסוגלים לקודד את כל ‪ M‬לאלפבת של ‪.U‬‬
‫נשתמש באלפבת }‪ {0, 1, #‬ונרצה לקודד באמצעותו את ‪ .M = hQ, Σ, Γ, δ, q0 , qacc , qrej i‬נראשית נקודד את המצבים ב‪Q-‬‬
‫באמצעות מספרים בינאריים בסדר עולה‪ ,‬מופרדים על ידי ‪ .#‬לבסוף‪ ,‬נוסיף ‪ .###‬היות ש‪ Σ ⊆ Γ-‬נקודד את ‪ Γ‬ואת הקידודים‬
‫של ‪ Σ‬נשמור גם במקום בזכרון שמתאים לה‪ .‬נעשה זאת‪ ,‬באמצעות קידוד‪-‬בינארי‪ ,‬נצטרך ‪ dlog2 |Γ|e‬ביטים‪.‬‬
‫עתה‪ ,‬נקודד את פונקציית המעברים ‪ .δ‬היות ש‪ δ (q, σ) = (q ′ , σ ′ , L′ )-‬נקודד ‪ .## hqi # hσi # hq ′ i # hσ ′ i # hLi ##‬אחרי כל‬
‫המעברים נוסיף ‪ .###‬לבסוף נקודד את ‪ q0 , qacc , qrej‬לפי הקידוד הבינארי שלהם‪ ,‬מופרדים ב‪.###-‬‬
‫בזאת סיימנו את חלק הקידוד‪ .‬נבנה מ“ט ‪ U‬אוניברסלית‪ U .‬תקבל‪/‬תדחה‪/‬לא תעצור על ‪ w‬בהתאמה ל‪ M -‬ו‪ U -‬תשמור‬
‫בכל שלב את התוכן של הסרט של ‪ M‬בשלב הנוכחי‪.‬‬
‫‪ U‬תהיה מכונה עם ‪ 3‬סרטים‪ .‬בסרט הראשון יהיה שמור תיאור של ‪ ,M‬בסרט השני תתבצע סימולציה של הסרט של ‪,M‬‬
‫והסרט השלישי ישמור את המצב הנוכחי שבו ‪ M‬נמצאת וישמש גם לחישובים‪.‬‬
‫‪ U‬תפעל כך‪:‬‬
‫‪ .1‬תסרוק את סרט ‪ 1‬ותמצא את ‪.w‬‬
‫‪ .2‬תעתיק את ‪ w‬לסרט ‪ 2‬ותחזיר את הראש הקורא השני לתחילת סרט ‪ ,2‬ואת הראש הראשון לתחילת הסרט הראשון‪.‬‬
‫‪ .3‬תסרוק את סרט ‪ ,1‬תמצא את ‪ ,q0‬תעתיק לסרט ‪ ,3‬ושוב תחזיר את ראש ‪ 1‬להתחלה‪.‬‬
‫‪ .4‬בכל איטרציה‪:‬‬
‫)א( תשווה את המצב הרשום בסרט ‪ 3‬ל‪ qrej , qacc -‬ותקבל‪/‬תדחה בהתאם‪ ,‬ואחרת תמשיך לשלב הבא‪:‬‬
‫)ב( תסרוק את סרט ‪ 1‬ותמצא את תחילת התיאור של ‪.δ‬‬
‫)ג( תשווה את המצב בסרט ‪ 3‬והאות מתחת לראש בסרט ‪ 2‬לכל המעברים ב‪ δ-‬עד שתמצא את המעבר המתאים‪.‬‬
‫)ד( תחליף את האות מתחת לראש בסרט ‪ 2‬בהתאם למעבר המתאים‪ ,‬ותעביר את ראש ‪ 2‬ימינה‪/‬שמאלה בהתאם‪.‬‬
‫)ה( תחליף את המצב בסרט ‪ 3‬לפי המעבר שנמצא‪.‬‬
‫מכונת טיורינג אי‪-‬דטרמינסטית‬
‫נחקור מ“ט אי‪-‬דטרמינסטיות‪.‬‬
‫הגדרה ‪ .20.2‬מכונת טיורינג א“ד )‪ (NTM‬היא כמו ‪ TM‬עם ההבדל הבא‪:‬‬
‫∅\ }‪δ : Q\ {qacc , qrej } × Γ → 2Q×Γ×{L,R‬‬
‫הגדרה ‪ .20.3‬נאמר ש‪ NTM-‬מקבלת את ‪ w‬אם קיימת איזשהי ריצה מקבלת שלה על ‪.w‬‬
‫הגדרה ‪ .20.4‬נאמר ש‪ NTM-‬מכריעה אם כל ריצה שלה על ‪ w‬עוצרת‪.‬‬
‫בהינתן ‪ NTM‬טבעי להסתכל על עץ הריצה שלה‪.‬‬
‫‪102‬‬
‫‪20‬‬
‫תרגול ‪ - 7‬תכונות סגור של ‪R, RE, coRE‬‬
‫שבוע ‪7‬‬
‫הגדרה ‪ .20.5‬בהינתן מילה ∗‪ w ∈ Σ‬כקלט למ“ט א“ד ‪ ,N‬עץ הריצה של ‪ N‬על ‪ w‬הוא גרף ‪ TN,w = hV, Ei‬המוגדר‬
‫באופן הבא‪ .‬תהא ‪ C‬קבוצת כל הקונפ ‪ ′‬האפשריות בריצה כלשהי של ‪ N‬על ‪ .w‬נגדיר‪:‬‬
‫ˆ )}‪ ,V ⊆ C × (N ∪ {0‬כלומר כל קודקוד ‪ hc, ii‬מתאים לקונפיגורציה ‪ c‬של ‪ N‬שנמצאת ברמה ה‪ i-‬בעץ ‪.TN,w‬‬
‫ˆ שורש העץ ‪ .hq0 w, 0i‬כלומר מתאים לקונפיגורציה ההתחלתית של ‪ N‬על ‪ w‬שהיא ‪ ,q0 w‬ולא נכנסות אליה‬
‫צלעות‪.‬‬
‫ˆ )}‪(C × {i}) × (C × {i + 1‬‬
‫‪S‬‬
‫⊆ ‪ ,E‬כאשר יש צלע מ‪ hc, ii-‬ל‪ hc′ , i + 1i-‬אם ‪ c′‬קונפ ‪ ′‬עוקבת של ‪ ,c‬כלומר‬
‫‪i≥0‬‬
‫אם קיים כלל מעבר ב‪ δ-‬כך ש‪ c′ -‬היא קונפ ‪ ′‬עוקבת של ‪.c‬‬
‫הגדרה ‪ .20.6‬נאמר שענף בעץ הוא מייצג ריצה מקבלת )דוחה( עם הוא נעצר בעלה ש‪ (qrej ) qacc -‬מופיע בו‪.‬‬
‫עולה השאלה‪ ,‬האם המודל הנ“ל חזק יותר ממ“ט דטרמינסטית? קל לראות שלכל מ“ט דטרמינסטית אפשר לבנות מ“ט‬
‫אי‪-‬דטרמינסטית‪ .‬אבל מה לגבי הכיוון ההפוך?‬
‫שקילות ‪ NTM‬ו‪TM-‬‬
‫משפט ‪ .20.1‬לכל מ“ט א“ד ‪ N‬קיימת מ“ט דטרמינסטית ששקולה לה‪.‬‬
‫כדי להוכיח את המשפט‪ ,‬נרצה להשתמש במ“ט אוניברסלית‪ .‬נעשה זאת על ידי סריקה של עץ הריצה של ‪.N‬‬
‫הוכחה‪ M .‬תפעל כך‪ .‬בהינתן ∗‪ w ∈ Σ‬תבנה ‪ on − the − fly‬את עץ הריצה של ‪ N‬על ‪ w‬שלב אחר שלב‪ ,‬תוך שהיא‬
‫מבצעת חיפוש ‪ BFS‬על הקודקודים ומחפשת מצב מקבל‪ .‬אם נמצא מצב מקבל‪ M ,‬מקבלת את ‪ .w‬אם כל הענפים עצרו‬
‫במצב דוחה‪ M ,‬דוחה את ‪ .w‬אחרת‪ M ,‬תמשיך לרוץ ולא תעצור על ‪.w‬‬
‫קל לראות ש‪ M -‬מקבלת‪/‬דוחה‪/‬לא עוצרת על ‪ w‬אם“ם ‪ N‬מקבלת‪/‬דוחה‪/‬לא עוצרת בהתאמה‪.‬‬
‫הבנייה שביצענו עובדת‪ ,‬אך יחסית יקרה‪ .‬למשל‪ ,‬אם נניח של‪ N -‬יש לכל היותר ‪ k‬קונפיגורציות עוקבות לכל קונפיגורציה‪,‬‬
‫‬
‫ושהיא מבצעת ‪ t‬צעדים על קלט מסויים‪ ,‬אז הבנייה שלנו תניב מ“ט דטרמינסטית עם זמן ריצה )‪ O t2 · k t = 2O(t‬שנקבע‬
‫‬
‫לפי גודל העץ ) ‪ (k t‬ואורך הקידוד של כל ריצה ‪ . t2‬כלומר‪ ,‬מזמן ריצה פולינומיאלי‪ ,‬עברנו לזמן ריצה אקספוננציאלי‪.‬‬
‫עולה השאלה אם אפשר לבצע בנייה טובה יותר‪ .‬התשובה היא שאנחנו לא יודעים ‪ -‬זו בעיה פתוחה‪.‬‬
‫‪103‬‬
‫‪21‬‬
‫שבוע ‪8‬‬
‫תרגול ‪ - 8‬רדוקציה ומשפט רייס‬
‫‪ 21‬תרגול ‪ - 8‬רדוקציה ומשפט רייס‬
‫רדוקציות‬
‫ניזכר בהגדרה של רדוקציית מיפוי )‪ .(7.2‬הוכחנו את משפט הרדוקציה )‪ (7.1‬עבור ‪ ,R‬ועכשיו נוכיח אותה עבור ‪.RE, coRE‬‬
‫משפט הרדוקציה ל‪RE, coRE-‬‬
‫משפט‪ .‬לכל ∗‪ L1 , L2 ⊆ Σ‬אם ‪ L1 ≤m L2‬ו‪ L2 ∈ RE-‬אזי ‪ ,L1 ∈ RE‬ואם ‪ L2 ∈ coRE‬אזי ‪.L1 ∈ coRE‬‬
‫הוכחה‪ .‬נניח כי ‪ .L2 ∈ RE‬לכן קיימת מ“ט ‪ M‬שמזהה את ‪ .L2‬מההנחה‪ ,‬קיימת רדוקציה ∗‪ f : Σ∗ → Σ‬מ‪ L1 -‬ל‪.L2 -‬‬
‫נגדיר מ“ט ‪ N‬שבהינתן קלט ‪ x‬מחשבת )‪ ,y = f (x‬ומסמלצת את הריצה של ‪ M‬על ‪.y‬‬
‫נשים לב ש‪ N -‬מקבלת את ‪ x‬אם“ם ‪ M‬מקבלת את )‪ f (x‬אם“ם ‪ f (x) ∈ L2‬אם“ם ‪ .x ∈ L1‬לכן ‪ N‬מזהה את ‪ L1‬ולכן‬
‫‪.L1 ∈ RE‬‬
‫נניח כי ‪ .L2 ∈ coRE‬נשים לב ש‪ f -‬מהחלק הקודם היא גם רידוקציה מ‪ L1 -‬ל‪ ,L2 -‬לכן אותה בנייה כמו בחלק הראשון‬
‫תעבוד ותראה ש‪.L1 ∈ coRE-‬‬
‫במשפטי הרדוקציה ניתן להשתמש כדי להראות ששפות הן לא ב‪ .R/RE/ . . .-‬אנחנו כרגע יודעים ש‪ATM ∈ RE\coRE-‬‬
‫ו‪ ,ATM ∈ coRE\RE-‬וזה הכלי העיקרי שלנו להראות ששפות לא כריעות‪ .‬אולם בגלל שרדוקציות הן טרנזטיביות‪ ,‬עם כל‬
‫שפה שאנחנו מראים שהיא לא כריעה‪ ,‬אנחנו מגדילים את הארסנל שלנו‪.‬‬
‫מתקיים ‪ ,RE ∩ coRE = R‬ומכך נובע שכל שפה נמצאת באחת )ורק אחת( מהמחלקות הבאות‪.R, RE\R, coRE\R, RE ∪ coRE :‬‬
‫עם הכלים שיש לנו נוכל להגיד לגבי כל מיני שפות איפה הן נמצאות‪:‬‬
‫הגדרה ‪ .21.1‬נסמן } ∗‪.ALLTM = {hM i : L (M ) = Σ‬‬
‫טענה ‪.ALLTM ∈ RE ∪ coRE .21.1‬‬
‫לשם הוכחת הטענה‪ ,‬נוכיח שתי טענות עזר‪:‬‬
‫∈ ‪(ALLTM‬‬
‫למה ‪) ATM ≤m ALLTM .21.1‬ולכן ‪/ coRE‬‬
‫הוכחה‪ .‬נבנה את הרדוקציה באופן הבא‪ :‬עבור קלט ‪ hM, wi‬ל‪ ,ATM -‬הרדוקציה תחזיר ‪ hKi‬כאשר ‪ K‬היא מכונה שבהינתן‬
‫קלט ‪ x‬מסמלצת את הריצה של ‪ M‬על ‪ ,w‬ועונה כמוה )אם ‪ M‬מקבלת גם ‪ K‬מקבלת‪ ,‬אם ‪ M‬דוחה גם ‪ M‬דוחה‪ ,‬אם‬
‫‪ M‬לא עוצרת אז כמובן גם ‪ K‬לא תעצור(‪.‬‬
‫∈ ‪ hM, wi‬אז‬
‫נכונות‪ :‬אם ‪ hM, wi ∈ ATM‬אז ‪ K‬מקבלת כל קלט ולכן ∗‪ L (K) = Σ‬כלומר ‪ .hKi ∈ ALLTM‬אם ‪/ ATM‬‬
‫∈ ‪,hKi‬‬
‫או ש‪ M -‬נתקעת או שהיא דוחה את ‪ ,w‬בכל מקרה ‪ K‬לא מקבלת אף ‪ x‬ולכן ∗‪ ,L (K) = ∅ 6= Σ‬ולכן ‪/ ALLTM‬‬
‫לכן הרדוקציה נכונה‪.‬‬
‫חישוביות‪ :‬צריך להראות שהרדוקציה ‪ f‬ניתנת לחישוב‪ f .‬ניתנת לחישוב כי מהקידוד ‪ hM, wi‬ניתן לבנות ממ“ט חדשה ‪K‬‬
‫שתהיה מ“ט אוניברסלית בה ‪ hM, wi‬מקודדת מראש )כדי שהיא תוכל להשתמש בה(‪ .‬את האלגוריתם הזה מ“ט אכן יכולה‬
‫לממש ולכן ‪ f‬באמת ניתנת לחישוב‪.‬‬
‫שימו לב שהרדוקציה לא הריצה את ‪ M‬על ‪ ,w‬אלא רק בנתה ‪ hKi‬מ‪) hM, wi-‬ו‪ K-‬משתמשת ב‪.(M, w-‬‬
‫!‬
‫∈ ‪(ALLTM‬‬
‫למה ‪) ATM ≤m ALLTM .21.2‬ולכן ‪/ RE‬‬
‫הוכחה‪ .‬הפעם הבנייה קצת יותר טריקית‪ ,‬כי אנחנו רוצים לסמלץ ריצה של ‪ M‬על ‪ ,w‬אבל אנחנו גם רוצים לעשות משהו‬
‫אם ‪ M‬לא מקבלת את ‪ .w‬אם היא דוחה את ‪ w‬זה בסדר‪ ,‬אבל אם היא לא עוצרת‪ ,‬אנחנו בבעיה‪ .‬לכן נשתמש בטריק‪:‬‬
‫‪104‬‬
‫‪21‬‬
‫תרגול ‪ - 8‬רדוקציה ומשפט רייס‬
‫שבוע ‪8‬‬
‫נבנה את הרדוקציה באופן הבא‪ :‬עבור קלט ‪ hM, wi‬ל‪ ,ATM -‬הרדוקציה תחזיר ‪ hKi‬כאשר ‪ K‬היא מכונה שבהינתן קלט ‪x‬‬
‫מסמלצת את הריצה של ‪ M‬על ‪ w‬עבור |‪ |x‬צעדים‪ .‬אם לפני שהגענו לצעד ה‪ |x| + 1-‬המכונה ‪ M‬קיבלה את ‪ ,w‬אז ‪K‬‬
‫תדחה את ‪ .x‬אחרת‪ K ,‬תקבל את ‪.x‬‬
‫נכונות‪ :‬אם ‪ hM, wi ∈ ATM‬אז ‪ M‬לא מקבלת את ‪ w‬ולכן בפרט ‪ M‬לא תקבל את ‪ w‬אחרי |‪ |x‬צעדים )לכל ‪ ,(x‬לכן ‪K‬‬
‫מקבלת כל קלט ולכן ∗‪ L (K) = Σ‬ולכן ‪ .hKi ∈ ALLTM‬אם ‪ M‬מקבלת את ‪ w‬אז קיים ‪ n ∈ N‬כך ש‪ M -‬תקבל את ‪w‬‬
‫∈ ‪ ,hKi‬לכן‬
‫לאחר ‪ n‬צעדים‪ .‬לכן לכל ‪ x‬המקיים ‪ ,|x| > n‬המכונה ‪ K‬תדחה את ‪ ,k‬ולכן ∗‪ L (K) 6= Σ‬ולכן ‪/ ALLTM‬‬
‫הרדוקציה נכונה‪.‬‬
‫חישוביות‪ :‬הרדוקציה ‪ f‬ניתנת לחישוב מאותן סיבות כמו בטענה הקודמת‪.‬‬
‫עתה נראה שפה נוספת ונסווג גם אותה‪.‬‬
‫∈ ‪ q‬ש‪ M -‬לא מגיעה אליו אף פעם עבור אף קלט ‪.USELESS = {hM i :‬‬
‫הגדרה ‪} .21.2‬קיים מצב } ‪/ {qacc , qrej‬‬
‫טענה ‪.USELESS ∈ coRE\R .21.2‬‬
‫הוכחה‪ .‬כדי להראות ש‪ USELESS ∈ coRE-‬מספיק להראות ש‪ ,USELESS ∈ RE-‬כלומר נבנה מ“ט בהינתן קלט ‪hM i‬‬
‫מקבלת אם“ם ניתן להגיע לכל המצבים ב‪ .M -‬נגדיר את המכונה כך‪ :‬בהינתן קלט ‪ ,hM i‬המ“ט יכולה לסמלץ ריצה של‬
‫‪ M‬על כל קלט במקביל‪,‬‬
‫‪22‬‬
‫תוך שהיא זוכרת כל הזמן באילו מצבים כבר ביקרנו‪ .‬אם בשלב מסוים ביקרנו בכל מצב‪ ,‬אז‬
‫נקבל את ‪ hM i‬ואכן ‪ .hM i ∈ USELESS‬אחרת‪ ,‬לא נעצור‪ .‬כלומר אכן ‪.USELESS ∈ RE‬‬
‫∈ ‪ ,USELESS‬ואז נסיים )ישירות נובע ‪ USELESS ∈ coRE\R‬כי ‪.(RE ∩ coRE = R‬‬
‫עכשיו נרצה להראות ש‪/ RE-‬‬
‫נראה ש‪ .ATM ≤m USELESS-‬נבנה רדוקציה ‪ T‬מ‪ ATM -‬ל‪.USELESS-‬‬
‫נבנה את הרדוקציה באופן הבא‪ :‬עבור קלט ‪ hM, wi‬ל‪ T ,ATM -‬תבנה מ“ט ‪ H‬שבהינתן קלט ‪ H ,x‬מסמלצת בתוכה את‬
‫הריצה של ‪ M‬על ‪) w‬בלי להגביל את כמות הצעדים שאנחנו נרוץ(‪ .‬אם ‪ M‬מקבלת את ‪ H ,w‬עוברת למצב חדש מיוחד‪,‬‬
‫ממנו היא תטייל בין כל המצבים ולבסוף תגיע ל‪ .qacc -‬אחרת‪ ,‬אם ‪ M‬דוחה את ‪ H ,w‬דוחה‪.‬‬
‫נכונות‪ :‬אם ‪ hM, wi ∈ ATM‬אז ‪ M‬לא מקבלת את ‪ ,w‬ולכן ‪ H‬אף פעם לא מגיע למצב המיוחד‪ ,‬ולכן ‪.hHi ∈ USELESS‬‬
‫∈ ‪.hHi‬‬
‫∈ ‪ hM, wi‬אז ‪ M‬מקבלת את ‪ ,w‬ולכן ‪ H‬תמיד תעבור על כל המצבים ולכן ‪/ USELESS‬‬
‫אם ‪/ ATM‬‬
‫חישוביות‪ :‬כדי להראות שהרדוקציה ‪ T‬ניתנת לחישוב‪ ,‬צריך לתאר איך אנחנו בונים את המצב המיוחד שממנו מטיילים בין‬
‫שאר המצבים ועוברים על כולם‪ .‬הרעיון הוא למיין את כל המצבים )למעט ‪ ,q1 , . . . , qk ,(qacc , qrej‬לכתוב על הסרט תו‬
‫מיוחד @‪ ,‬ולהגדיר שבכל מצב ב‪ ,H-‬אם אנחנו נמצאים במצב כלשהו ‪ qi‬אז כשאנחנו קוראים את התו @‪ ,‬אנחנו עוברים‬
‫למצב ‪ ,qi+1‬ולא מזיזים את הראש של מכונת הטיורינג‪.‬‬
‫‪23‬‬
‫המצב המיוחד ירשום על הסרט את התו @‪ ,‬ויעבור למצב ‪,q1‬‬
‫ומשם נטייל על כל המצבים עד שנגיע ל‪ qk -‬ומשם נעבור ל‪) qacc -‬אם אנחנו רוצים שיהיה קלט עבורו גם נגיע ל‪ qrej -‬אפשר‬
‫לבחור מילת קלט מיוחדת‪ ,‬למשל ‪ ,x = ε‬ולהגדיר שעל מילת קלט זו נעבור ישר ל‪.qrej -‬‬
‫אז אנחנו רואים שאכן ניתן להגדיר מ“ט שמבצעת את כל הצעדים שתיארנו כאן‪ ,‬ולכן הרדוקציה ניתנת לחישוב‪.‬‬
‫משפט רייס )‪(Rice‬‬
‫נפרמל את הרעיון של הרדוקציות בהן נתקלנו עד כה באמצעות משפט‪ ,‬שנזקף לזכותו של הנרי גורדון רייס‪.‬‬
‫‪22‬בצורה אינקרמנטלית‪ .‬כלומר‪ ,‬נסדר את ∗‪) Σ‬היא בת מנייה אז זה אפשרי(‪ ,‬ונריץ צעד אחד של ‪ M‬על הקלט הראשון‪ ,‬ואז שני צעדים של‬
‫‪ M‬על הקלט הראשון ועל הקלט השני‪ ,‬ואז שלושה‪..‬‬
‫‪23‬ציינו בעבר שמכונת טיורינג בה יש את האופציה להשאיר את הראש במקום שקולה‪ ,‬מבחינת כוח החישוב‪ ,‬למכונת טיורינג ללא אופציה זו‪.‬‬
‫בכל מקרה‪ ,‬אם לא רוצים להשתמש בפיצ’ר הזה‪ ,‬ניתן פשוט לרשום שני תווים חדשים‪ ,@→ , @← :‬אחד ליד השני‪ ,‬ופשוט להזיז את הראש כל‬
‫הזמן ימינה ושמאלה ביניהם‪.‬‬
‫‪105‬‬
‫‪21‬‬
‫שבוע ‪8‬‬
‫תרגול ‪ - 8‬רדוקציה ומשפט רייס‬
‫הגדרה ‪ .21.3‬תכונה סמנטית של מכונות טיורינג היא קבוצה ‪ P‬של מכונות טיורינג‪ ,‬כך שמתקיימת התכונה הבאה‪:‬‬
‫לכל שתי מ“ט ‪ ,M1 , M2‬אם ) ‪ L (M1 ) = L (M2‬אז ‪.M1 ∈ P ⇔ M2 ∈ P‬‬
‫הגדרה ‪ .21.4‬תהי ‪ P‬תכונה סמנטית של מ“ט‪ .‬נאמר כי ‪ P‬אינה טריוויאלית אם קיימות שתי מ“ט ‪ ,M1 , M2‬כך‬
‫∈ ‪.M2‬‬
‫ש‪ M1 ∈ P -‬ו‪/ P -‬‬
‫הגדרה ‪ .21.5‬תהי ‪ P‬תכונה סמנטית של מ“ט‪ .‬נסמן } ‪.LP = {hM i : M ∈ P‬‬
‫אינטואיטיבית‪ P ,‬היא קבוצה של מכונות‪ ,‬אך היא מוגדרת דרך השפה שלהן‪.‬‬
‫!‬
‫למה ‪ .21.3‬תהי ∅‪ T‬מ“ט עבורה ∅ = ) ∅‪ L (T‬ותהי ‪ P‬תכונה סמנטית לא טריוויאלית של מכונות טיורינג‪ ,‬כך‬
‫∈ ‪.LP‬‬
‫∈ ∅‪ .T‬אזי ‪ ,ATM ≤m LP‬בפרט ‪/ coRE‬‬
‫ש‪/ P -‬‬
‫הוכחה‪ .‬נבנה רדוקציה ‪ f‬מ‪ ATM -‬ל‪.LP -‬‬
‫נבנה את הרדוקציה באופן הבא‪ :‬עבור קלט ‪ hM, wi‬ל‪ ,ATM -‬אנחנו צריכים לבנות ‪ f (hM, wi) = hT i‬כך‬
‫ש‪ .hM, wi ∈ ATM ⇔ hT i ∈ LP -‬מכך ש‪ P -‬סמנטית לא טריוויאלית‪ ,‬קיימת מ“ט ‪ H‬כך ש‪.H ∈ P -‬‬
‫על כן‪ ,‬בהינתן קלט ‪ hM, wi‬ל‪ ATM -‬הרדוקציה ‪ f‬תבנה מ“ט ‪ T‬הפועלת באופן הבא‪:‬‬
‫‪ .1‬בהינתן קלט ‪ T ,x‬תסמלץ את הריצה של ‪ M‬על ‪ .w‬אם היא עוצרת ודוחה‪ ,‬דחה‪ .‬אם היא מקבלת‪ T ,‬תמשיך‬
‫לשלב ‪.2‬‬
‫‪ T .2‬תסמלץ את הריצה של ‪ H‬על ‪ .x‬אם הריצה מקבלת‪ ,‬אז ‪ T‬מקבלת‪ ,‬ואם היא דוחה אז גם ‪ T‬תדחה )ואם ‪H‬‬
‫תרוץ לנצח כמובן גם ‪ T‬תרוץ לנצח(‪.‬‬
‫נכונות‪ :‬אם ‪ hM, wi ∈ ATM‬אז ‪ M‬מקבלת את ‪ ,w‬ולכן )‪ ,L (T ) = L (H‬ומהיות ‪ H ∈ P‬ו‪ P -‬היא תכונה סמנטית‪ ,‬נובע‬
‫כי ‪ T ∈ P‬ולכן ‪.hT i ∈ LP‬‬
‫∈ ∅‪T‬‬
‫∈ ‪ hM, wi‬אז ‪ T‬לא מקבלת אף מילה ולכן ) ∅‪ L (T ) = ∅ = L (T‬ומהיות ‪ P‬תכונה סמנטית וכך ש‪/ P -‬‬
‫אם ‪/ ATM‬‬
‫∈ ‪.hT i‬‬
‫∈ ‪ T‬ולכן ‪/ LP‬‬
‫נובע כי ‪/ P‬‬
‫חישוביות‪ :‬נראה ש‪ f -‬ניתנת לחישוב‪ .‬אנחנו יודעים שאנחנו יכולים לבנות מ“ט שיודעת לסמלץ ריצה של מכונת טיורינג כלשהי‬
‫על מילה‪ ,‬אז אנחנו יכולים לעשות זאת גם לריצה של ‪ M‬על ‪ w‬וגם לריצה של ‪ H‬על ‪ .x‬לכן ‪ f‬אכן ניתנת לחישוב‪.‬‬
‫משפט רייס‬
‫∈ ‪LP‬‬
‫משפט‪ .‬תהי ‪ P‬תכונה סמנטית לא טריוויאלית של מכונות טיורינג‪ .‬אזי ‪/ R‬‬
‫∈ ‪.LP‬‬
‫∈ ‪ LP‬ובפרט ‪/ R‬‬
‫∈ ∅‪ ,T‬אז מהלמה אנחנו מסיקים ש‪/ coRE-‬‬
‫הוכחה‪ .‬אם קיימת מ“ט ∅‪ T‬עבורה ∅ = ) ∅‪ L (T‬כך ש‪/ P -‬‬
‫∈ ‪.LP‬‬
‫∈ ‪ LP‬ולכן ‪/ RE‬‬
‫אחרת‪ ,‬נסתכל על השפה ‪ LP‬שהיא גם שפה של תכונה סמנטית‪ .P ,‬מהלמה אנו מסיקים כי ‪/ coRE‬‬
‫∈ ‪.LP‬‬
‫בפרט ‪/ R‬‬
‫ניכר שהחלק המשמעותי במשפט ריס הוא הלמה שלא הוכחנו ולא המשפט עצמו‪ ,‬כי היא נותנת לנו יותר מידע‪.‬‬
‫‬
‫דוגמה ‪ .21.1‬תהי ) ‪ .L = hM i : ∀w ∈ Σ∗ , w ∈ L (M ) ⇐⇒ wwR wwR ∈ L (M‬זו תכונה סמנטית לא טריוויאלית‪ ,‬וכן‬
‫∈ ‪.L‬‬
‫‪ hT∅ i ∈ L‬ולכן מהלמה ‪/ RE‬‬
‫הלמה לא אומרת לנו שום דבר לגבי הכיוון ההפוך‪.‬‬
‫מקוריים‪ .‬כלומר‪ ,‬יתכן ש‪ L ∈/ RE-‬אבל אנחנו לא יודעים אם ‪! L ∈ coRE‬‬
‫או לא‪ .‬לשם כך יש לנו כל מיני טריקים‬
‫∈ ‪.ALLTM‬‬
‫מסקנה ‪/ coRE .21.1‬‬
‫‪106‬‬
‫‪21‬‬
‫תרגול ‪ - 8‬רדוקציה ומשפט רייס‬
‫שבוע ‪8‬‬
‫∈ ∅‪ T‬לכן מהלמה של משפט‬
‫הוכחה‪ .‬קל לראות ש‪ ALLTM -‬זו תכונה סמנטית של מ“ט‪ ,‬שאיננה טריוויאלית‪ .‬בפרט‪/ ALLTM ,‬‬
‫∈ ‪.ALLTM‬‬
‫∈ ‪ .ALLTM‬לא נוכל לקבוע ישירות ממשפט רייס ש‪/ RE-‬‬
‫רייס‪/ coRE ,‬‬
‫‪107‬‬
‫‪22‬‬
‫שבוע ‪10‬‬
‫תרגול ‪ - 9‬רדוקציות מיפוי ו‪NP-‬‬
‫‪ 22‬תרגול ‪ - 9‬רדוקציות מיפוי ו‪NP-‬‬
‫עוד קצת רדוקציות מיפוי‬
‫הגדרה ‪ .22.1‬בהינתן זוג שפות ‪ ,L1 , L2‬נאמר שהן ‪-k‬מסכימות אם יש לפחות ‪ k‬מילים שונות ‪ w1 , . . . , wk‬כך שלכל‬
‫‪ 1 ≤ i ≤ k‬מתקיים ‪.wi ∈ L1 ⇔ wi ∈ L2‬‬
‫תרגיל‪ .‬נראה ש‪ − 10 L (M1 ) , L (M2 )} ∈ RE ∪ coRE -‬מסכימות | ‪ .L = {hM1 , M2 i‬האם התשובה משתנה כתלות בדרגת‬
‫ההסכמה?‬
‫פתרון‪ .‬נבצע שתי רדוקציות‪ ,‬אחת מ‪ HALTεTM -‬ואחת מ‪ .HALTεTM -‬ראינו כבר ש‪ ,HALTεTM ∈ RE\R-‬ולכן ∈ ‪HALTεTM‬‬
‫‪ ,coRE\R‬ולכן שתי הרדוקציות הללו מספיקות כדי להראות את הדרוש‪.‬‬
‫∈ ‪.L‬‬
‫נתחיל מהרדוקציה ‪ HALTεTM ≤m L‬שתראה ש‪/ coRE-‬‬
‫ˆ בנייה‪ :‬בהינתן ‪ ,hM i‬הרדוקציה מחזירה ‪ hM1 , M2 i‬כאשר ‪ M1 , M2‬מוגדרות כדלקמן‪ M1 :‬מקבלת ישר )לכל קלט(‪,‬‬
‫בעוד ש‪ M2 -‬מתעלמת מהקלט ומסמלצת ריצה של ‪ M‬על ‪ - ε‬אם ‪ M‬עוצרת אז ‪ M2‬מקבלת‪ ,‬ואחרת ‪ M2‬כמובן‬
‫רצה לנצח‪.‬‬
‫ˆ נכונות‪ :‬נניח כי ‪ .hM i ∈ HALTεTM‬אזי ‪ M‬עוצרת על ‪ ,ε‬ולכן ‪ M1 , M2‬יקבלו שתיהן כל מילה‪ ,‬כלומר ) ‪L (M1 ) = L (M2‬‬
‫ולכן הן בפרט ‪-10‬מסכימות‪.‬‬
‫∈ ‪ ,hM i‬אז ‪ M‬לא עוצרת על ‪ ε‬ולכן ‪ M2‬לא מקבלת אף מילה ולכן‬
‫בכיוון השני‪ ,‬אם ‪/ HALTεTM‬‬
‫) ‪ L (M1 ) = Σ∗ 6= ∅ = L (M2‬ובפרט הן לא ‪-10‬מסכימות‪.‬‬
‫ˆ חישוביות‪ :‬את ‪ M1‬ניתן לבנות בקלות ע“י הבחירה ‪ .q0 = qacc‬את ‪ M2‬ניתן לבנות בשני חלקים‪ :‬החלק הראשון מוחק‬
‫את מילת הקלט שרשומה על הסרט‪ ,‬והחלק השני הוא העתק של ‪ M‬כדי שנוכל לסמלץ את הריצה של ‪ M‬על ‪.ε‬‬
‫הרדוקציה עבור ‪ HALTεTM‬דומה מאוד‪ ,‬רק שעכשיו ‪ M1‬דוחה ישר במקום לקבל ישר‪ .‬כמו כן‪ ,‬לא השתמשנו בנתון שהן‬
‫‪-10‬מסכימות‪ ,‬ואותם הנימוקים היו עובדים במקרה של ‪-k‬הסכמה‪ .‬תופעה זו יכולה לקרות ברדוקציה‪ ,‬וזה עלול לאותת‬
‫שהייתה בעיה ברדוקציה‪ .‬אך במקרה שלנו‪ ,‬הרדוקציה נכונה‪.‬‬
‫האם יכולנו להשתמש במשפט רייס? נבחין כי ‪ L‬היא קבוצה של זוגות של מ“ט‪ ,‬ולא של מ“ט בלבד‪ .‬כלומר כדי‬
‫להשתמש במשפט רייס צריך להתאמץ יותר‪ ,‬אם זה בכלל אפשרי‪.‬‬
‫!‬
‫‪ NP‬והגדרות שקולות‬
‫ל‪ NP-‬יש שתי הגדרות שקולות‪.‬‬
‫ההגדרה הראשונה היא‬
‫‬
‫‪NTIME ni‬‬
‫[‬
‫= ‪NP = NPTIME‬‬
‫‪i≥0‬‬
‫כלומר ‪ NP‬היא קבוצת השפות שניתנות להכרעה בזמן פולינומיאלי ע“י מ“ט א“ד‪.‬‬
‫בהרצאה ראינו שהשימוש העיקרי שלנו באי‪-‬דטרמיניזם הוא לבצע ניחושים על פתרונות אפשריים לבעיה נתונה‪ ,‬כך למשל‬
‫בבעיה של בדיקה האם מספר הוא פריק או לא )ראו דוגמה ‪ ,(8‬ניחשנו מי מחלק אותו‪.‬‬
‫המשכנו להגדיר את המושג של מוודא )ראו הגדרה ‪ ,(8.9‬ולמעשה‪ ,‬רעיון זה מניב הגדרה שקולה ל‪ ,NP-‬כמתואר במשפט הבא‪:‬‬
‫אפיון המחלקה ‪NP‬‬
‫משפט ‪ L ∈ NP .22.1‬אם“ם יש ל‪ L-‬מוודא דטרמיניסטי פולינומיאלי‪.‬‬
‫‪108‬‬
‫‪22‬‬
‫שבוע ‪10‬‬
‫תרגול ‪ - 9‬רדוקציות מיפוי ו‪NP-‬‬
‫הוכחה‪ :⇒ .‬נניח של‪ L-‬יש מוודא דטרמיניסטי פולינומיאלי‪ .‬מכך שהוא פולינומיאלי‪ ,‬קיים ‪ k ∈ N‬כך ש‪ V -‬רצה בלכל היותר‬
‫‪k‬‬
‫|‪ |w‬צעדים‪ ,‬כאשר |‪ |w‬הוא גודל הקלט‪ .‬נגדיר מ“ט א“ד ‪ N‬עבור ‪ L‬הפועלת באופן הבא‪:‬‬
‫בהינתן קלט ‪ ,w‬ננחש עד ‪ c‬שאורכו לכל היותר‬
‫‪k‬‬
‫|‪ |w‬ונריץ את ‪ V‬על ‪ .hw, ci‬אם ‪ V‬מקבלת‪ ,‬גם ‪ N‬תקבל‪ ,‬ואחרת ‪N‬‬
‫תדחה‪ V .‬רצה בזמן פולינומיאלי ולכן כל ענף בעץ הריצות של ‪ N‬על ‪ w‬הוא באורך פולינומיאלי‪.‬‬
‫⇐‪ :‬נניח ש‪ N -‬מ“ט א“ד שרצה בזמן פולינומיאלי ומכריעה את ‪ .L‬נבנה מוודא פולינומיאלי ‪ V‬עבור ‪ :L‬בהנתן זוג ‪hw, ri‬‬
‫כאשר ‪ r‬הוא תיאור של ענף בעץ הריצה של ‪ N‬על ‪ V ,w‬מקבל את הזוג ‪ hw, ri‬אם“ם ‪ r‬הוא ריצה מקבלת של ‪ N‬על‬
‫‪ V .w‬מוודאת ש‪ r-‬הוא ריצה מקבלת באמצעות בדיקה שהקונפ’ ההתחלתית היא ‪ q0 w‬והקונפ’ האחרונה מכילה ‪ ,qacc‬וכל‬
‫הקונפ’ עוקבות זו לזו באמצעות פונקציית המעברים‪ .‬היות ש‪ N -‬רצה בזמן פולינומיאלי‪ ,‬נדע שכל ענף בעץ הריצות שלה‬
‫הוא באורך פולינומיאלי‪ ,‬ולכן |‪ |r‬פולינומיאלי ב‪.|w|-‬‬
‫‪109‬‬
‫‪23‬‬
‫שבוע ‪11‬‬
‫תרגול ‪ - 10‬שלמות ב‪NP-‬‬
‫‪ 23‬תרגול ‪ - 10‬שלמות ב‪NP-‬‬
‫טרנזיטיביות הרדוקציה הפולינומיאלית‬
‫משפט ‪ .23.1‬יהיו ‪ L ∈ NPH‬ו‪ .L ≤p J -‬אזי ‪.J ∈ NPH‬‬
‫הוכחה‪ .‬מושאר כתרגיל לסטודנט המשקיע החכם היפה והחסון‪.‬‬
‫שפות ‪ NPC‬הן השפות הכי קשות במחלקה ‪ .NP‬היות שמספיק שאחת מהן היא ב‪ ,P-‬ונקבל את השוויון ‪ ,P = NP‬כפי‬
‫שראינו בהרצאה‪.‬‬
‫בעיית כיסוי הקודקודים )‪(Vertex Cover‬‬
‫הגדרה ‪ .23.1‬יהי ‪ G = hV, Ei‬גרף‪ .‬נאמר ש‪ C ⊆ V -‬כיסוי קודקודים ב‪ G-‬אם לכל צלע ‪ e = {u, v} ∈ E‬מתקיים‬
‫כי ‪.u ∈ C ∨ v ∈ C‬‬
‫הגדרה ‪ G} .23.2‬גרף ויש בו כיסוי קודקודים בגודל לכל היותר ‪VC = {hG, ki | k‬‬
‫בקורס באלגוריתמים הראנו אלגוריתם ‪-2‬מקרב פולינומיאלי למציאת כיסוי קודקודים מינימלי‪ ,‬במקום לנסות למצוא אלגוריתם‬
‫יעיל‪ .‬נראה מדוע עשינו זאת‪.‬‬
‫בכיתה הוכחנו את משפט קוק‪-‬לוין‪ ,‬והראנו ש‪ .SAT ∈ NPC-‬בפרט‪ ,‬ראינו ש‪ .CLIQUE ∈ NPC-‬לכן‪ ,‬נוכיח את הטענה הבאה‪.‬‬
‫טענה ‪.VC ∈ NPC .23.1‬‬
‫כדי להוכיח את הטענה‪ ,‬נוכיח שתי טענות עזר‪.‬‬
‫טענה ‪.VC ∈ NP .23.2‬‬
‫הוכחה‪ .‬נראה ש‪ VC ∈ NP-‬על ידי כך שנמצא לה מוודא פולינומי ‪ V .V‬יקבל ‪ hG, ki‬ו‪ C-‬כאשר ‪ C‬הוא תת קבוצה של‬
‫קודקודים‪ V .‬יספור את |‪ |C‬ויוודא שאכן ‪ ,|C| ≤ k‬ושאכן )‪ .C ⊆ V (G‬אם כן‪ V ,‬תעבור על כל הצלעות ב‪ G-‬ותוודא‬
‫שיש לכל צלע לפחות נציג אחד ב‪ .C-‬אם כך‪ ,‬תקבל‪ .‬אחרת‪ ,‬תדחה‪ .‬הבדיקה ש‪ C-‬כיסוי קודקודים לוקחת )|‪O (|V | · |E‬‬
‫ולכן ‪ V‬מוודא פולינומיאלי‪ .‬מכאן ‪.VC ∈ NP‬‬
‫טענה ‪ .VC ∈ NPH .23.3‬בפרט‪.CLIQUE ≤p VC ,‬‬
‫למה ‪ .23.1‬יש ב‪-k G-‬קליקה ⇒⇐ יש ב‪ G-‬כיסוי קודקודים בגודל ‪n − k‬‬
‫‬
‫∈ ‪.e ∈ E (G) ⇐⇒ e‬‬
‫כאשר |)‪ n = |V (G‬ו‪ G-‬זה ‪ G‬כאשר ”הופכים“ את כל הצלעות ‪ -‬כלומר ‪/ E G‬‬
‫הוכחה‪ :⇐ .‬נניח שיש ב‪-k G-‬קליקה ונסמנה ב‪ .C-‬נביט בקבוצה ‪ .V (G) \C = C‬אזי ‪ , C = n − k‬ונראה ש‪ C-‬כיסוי‬
‫∈ ‪ .x, y‬לכן מההנחה ‪ .x, y ∈ C‬אבל ‪ C‬היא קליקה‬
‫קודקודים ב‪ .G-‬נניח בשלילה שלא‪ .‬אזי קיימת ‪ {x, y} ∈ E‬כך ש‪/ C-‬‬
‫ב‪ G-‬ולכן ‪ ,{x, y} ∈ E‬סתירה‪ .‬לכן ‪ C‬כיסוי קודקודים ב‪.G-‬‬
‫⇒‪ :‬נניח שיש ב‪ G-‬כיסוי קודקודים ‪ n − k‬ונסמנו ב‪ .S-‬נראה ש‪ S-‬היא ‪-k‬קליקה ב‪ .G-‬יהיו ‪ {x, y} ∈ S‬נוכיח כי‬
‫∈ }‪ ,{x, y‬לכן ‪ .{x, y} ∈ E‬מכך ש‪ S-‬כיסוי קודקודים ב‪ ,G-‬מתקיים כי ‪.x ∈ S ∨ y ∈ S‬‬
‫‪ .{x, y} ∈ E‬נניח בשלילה ש‪/ E-‬‬
‫בפרט‪ ,‬לפחות אחד מהם לא ב‪ .S-‬סתירה‪ .‬מכאן ‪ S‬היא ‪-k‬קליקה ב‪.G-‬‬
‫הוכחה‪) .‬הוכחת הטענה( אנחנו רוצים ‪ f‬פולינומית הממפה ‪ hG, ki 7→ hG′ , k ′ i‬כך ש‪.hG, ki ∈ CLIQUE ⇐⇒ hG′ , k ′ i ∈ VC-‬‬
‫כדי לבנות רדוקציה זו‪ ,‬נעזר בלמה‪ .‬הרדוקציה ‪ f‬תפעל כך‪ .‬בהנתן ‪ hG, ki‬תחזיר‬
‫ידי ”הפיכת“ כל הצלעות ו‪.n = |V (G)|-‬‬
‫‪110‬‬
‫‪ , G, n − k‬כאשר ‪ G‬מתקבל מ‪ G-‬על‬
‫‪23‬‬
‫שבוע ‪11‬‬
‫תרגול ‪ - 10‬שלמות ב‪NP-‬‬
‫נבחין כי ‪ f‬פולינומית שכן הפיכת הצלעות לוקחת )|)‪ ,O (|E (G‬למשל‪ ,‬אם הן נתונות כמטריצת שכנויות‪ .‬חישוב ‪n − k‬‬
‫לוקח )|)‪ O (|V (G‬ולכן סה“כ )|‪.O (|G‬‬
‫‪ f‬נכונה כי הלמה מוכיחה ש‪ hG, ki ∈ CLIQUE-‬אם“ם ‪. G, n − k ∈ VC‬‬
‫בעיית ה‪Domination − Set-‬‬
‫הגדרה ‪ .23.3‬יהא ‪ G = hV, Ei‬גרף‪ .‬נאמר ש‪ D ⊆ V -‬היא )‪ Dominating Set (DS‬ב‪ G-‬אם לכל ‪ v ∈ V‬או‬
‫ש‪ v ∈ D-‬או ש‪ v-‬חלק מצלע שהצד השני שלה ב‪ .D-‬כלומר ‪ D‬היא קבוצה של קודקודים שהמרחק של כל קודקוד‬
‫‪ v ∈ V‬ממנה לכל היותר ‪.1‬‬
‫הגדרה ‪ .23.4‬בעיית ה‪ Dominating Set-‬היא }יש ב‪ DS G-‬מגודל ‪.DS = {hG, ki | k‬‬
‫טענה ‪.DS ∈ NPC .23.4‬‬
‫כמו קודם‪ ,‬נוכיח שתי טענות עזר‪.‬‬
‫טענה ‪.DS ∈ NP .23.5‬‬
‫הוכחה‪ .‬נראה ש‪ DS ∈ NP-‬על ידי כך שנמצא לה מוודא פולינומיאלי ‪ V‬שיפעל כך‪ .‬בהנתן ‪ hG, ki‬ו‪ V .D-‬יבדוק ראשית‬
‫ש‪ D ⊆ V (G)-‬וש‪ .|D| ≤ k-‬אחרת‪ ,‬ידחה‪ .‬כעת‪ V ,‬יעבור על כל הקודקודים ב‪ ,G-‬ויבדוק לכל קודקוד ‪ u‬אם הוא ב‪.D-‬‬
‫אם לא‪ ,‬יעבור על כל הצלעות ב‪ G-‬ש‪ u-‬חלק מהן‪ ,‬ויבדוק אם הקצה השני של הצלע ב‪ .D-‬אם עבור אחד הקודקודים‬
‫ידחה‪ .‬אחרת יקבל‪.‬‬
‫התשובה היא לא‪ V ,‬‬
‫‪4‬‬
‫|‪ O (|E| · |V | · |E| · V ) = O |G‬ולכן פולינומיאלי‪.‬‬
‫נבחין כי ‪ V‬רץ בזמן‬
‫טענה ‪.DS ∈ NPH .23.6‬‬
‫הוכחה‪ .‬נוכיח ש‪ .VC ≤p DS-‬כלומר אנחנו רוצים ‪ g‬פולינומית הממפה ‪ hG, ki 7→ hG′ , k ′ i‬כך שמתקיים‬
‫‪ .hG, ki ∈ VC ⇐⇒ hG′ , k ′ i ∈ DS‬נבחין כי הבעיות מאוד דומות‪ ,‬רק שב‪ DS-‬יש לנו גם קודקודים מבודדים‪.‬‬
‫בניה‪ :‬בהנתן ‪ ,hG, ki ∈ INPUTSVC‬הרדוקציה ‪ g‬תחזיר ‪ hG′ , k ′ i‬כך ש‪ G′ -‬מתקבל מ‪ G-‬באופן הבא‪.‬‬
‫‬
‫‬
‫)‪ g ,e = {x, y} ∈ E (G‬תוסיף קודקוד חדש ‪ ve‬ושתי צלעות חדשות }‪ . x, v{x,y} , y, v{x,y‬סך הכל‪,‬‬
‫‪ve‬‬
‫‬
‫}‪x, v{x,y} , y, v{x,y‬‬
‫[‬
‫לכל צלע‬
‫∪ )‪V (G′ ) = V (G‬‬
‫)‪e∈E(G‬‬
‫[‬
‫‬
‫∪ )‪E (G′ ) = E (G‬‬
‫)‪{x,y}∈E(G‬‬
‫}‪v{x,y‬‬
‫כלומר עבור כל צלע }‪ {x, y‬כפינו משולש עם הקודקוד }‪ :v{x,y‬החיבור ‪ x − y‬הפך למשולש‬
‫⧹‬
‫‪y‬‬
‫⧸‬
‫‪−‬‬
‫‪−‬‬
‫‪−‬‬
‫‪.‬‬
‫‪x‬‬
‫לבסוף‪ g ,‬תספור את מספר הקודקודים המבודדים ב‪ G-‬ותחזיר ‪ hG′ , k ′ i‬כאשר ‪ k ′ = f + k‬עבור ‪ f‬מספר הקודקודים‬
‫המבודדים‪.‬‬
‫זמן ריצה‪ g :‬רצה בזמן פולינומיאלי‪ ,‬שכן ספירת קודקודים מבודדים זה )|)‪ ,O (|V (G‬הוספת קודקודים לכל צלע זה‬
‫)|)‪ ,O (|E (G‬והוספת שתי צלעות לכל קודקוד חדש זה )|)‪ .O (|E (G‬סך הכל )|‪.O (|G‬‬
‫‪′‬‬
‫נכונות‪ :⇐ :‬נניח שיש ב‪ C VC G-‬מגודל ‪ ,k‬כלומר ‪ .hG, ki ∈ VC‬נראה שיש ‪ D DS‬מגודל ‪ k + f‬ב‪ G -‬כאשר ‪ f‬מספר‬
‫הקודקודים המבודדים ב‪ .G-‬ראשית‪ ,‬נביט ב‪ D = C ∪ F -‬כאשר ‪ F‬קבוצת הקודקודים המבודדים‪ ,‬ונראה ש‪ D-‬היא ‪DS‬‬
‫ב‪ .G′ -‬ראשית ‪ .|D| ≤ |C| + |F | = k + f‬כעת‪ ,‬נראה ש‪ D-‬היא ‪ DS‬ב‪ .G′ -‬יהא ) ‪ .v ∈ V (G′‬אם ‪ v ∈ F‬אזי ‪ .v ∈ D‬אם‬
‫‪ ,v ∈ V (G) \F‬אזי ‪ v‬חלק מצלע מקורית ב‪ G-‬ולכן במרחק ‪ 1‬לכל היותר מ‪ ,C-‬ולכן גם מ‪ .D-‬כעת‪ ,‬עבור ‪v ∈ V (G′ ) \V‬‬
‫‪111‬‬
‫‪23‬‬
‫תרגול ‪ - 10‬שלמות ב‪NP-‬‬
‫שבוע ‪11‬‬
‫נדע ש‪ v-‬מהצורה }‪ v{x,y‬עבור )‪ x, y ∈ E (G‬ולכן מכך ש‪ C-‬הוא ‪ VC‬ב‪ ,G-‬אזי או ‪ x‬או ‪ y‬ב‪ C-‬ובפרט ב‪ .D-‬כעת‪,‬‬
‫}‪ v{x,y‬מחובר בצלע גם ל‪ x-‬וגם ל‪ y-‬ולכן במרחק ‪ 1‬לכ היותר מ‪.D-‬‬
‫⇒‪ :‬נניח שיש ב‪ D DS G′ -‬מגודל ‪ .k ′ = k + f‬נסמן ב‪ D′ \F = D-‬ונראה ש‪ D-‬הוא ‪ VC‬מגודל ≥ ‪ k‬ב‪ .G′ -‬נבחין כי‬
‫‪ k = k ′ − f‬ולכן ‪ .|D| ≤ k‬כעת נראה שבה“כ כל הקודקודים ב‪ D-‬הם מ‪ .G-‬אחרת‪ ,‬נדע שאם יש ‪ v{x,y} ∈ D‬אז הוא‬
‫נוגע רק ב‪ x, y-‬ולכן אם נחליף את }‪ v{x,y‬ב‪ x-‬או ‪ y‬נוכל רק להגדיל את מספר הצלעות ש‪ D-‬נוגעת בו‪ .‬כעת‪ ,‬עבור‬
‫)‪ ,{x, y} ∈ E (G‬נדע מכך ש‪ D′ -‬הוא ‪ ,DS‬שלכל קודקוד ב‪ G-‬הוא במרחק ‪ 1‬לכל היותר מ‪ .D-‬כלומר‪ ,‬או ש‪ x ∈ D-‬או‬
‫שיש ‪ z ∈ D‬כך ש‪ {x, z} ∈ E (G)-‬ומכך ש‪ ,D ⊆ V (G)-‬נובע כי ‪ D‬הוא כיסוי קודקודים ב‪.G-‬‬
‫‪112‬‬
‫‪24‬‬
‫שבוע ‪12‬‬
‫תרגול ‪ - 11‬שלמות ב‪coNP-‬‬
‫‪ 24‬תרגול ‪ - 11‬שלמות ב‪coNP-‬‬
‫הגדרה ‪ .24.1‬נגדיר‬
‫‬
‫‪.coNP = L | L ∈ NP‬‬
‫הגדרה ‪ .24.2‬נאמר שפה ‪ L‬היא ‪ coNPH‬אם לכל ‪ K ∈ coNP‬מתקיים ‪.K ≤p L‬‬
‫הגדרה ‪ .24.3‬נאמר ששפה ‪ L‬היא ‪ coNPC‬אם היא ‪ coNPH‬וגם ב‪.coNP-‬‬
‫הערה‪ .‬ניתן להגדיר גם )‪-(NP ∩ coNP‬שלמות‪ ,‬אך בכלל לא ידוע אם קיימות שפות כאלה‪.‬‬
‫טענה ‪ .24.1‬אם ‪ NP 6= coNP‬אזי ‪.P 6= NP‬‬
‫הוכחה‪ .‬מושאר כתרגיל לסטודנט המשקיע החכם היפה והחסון‪.‬‬
‫טענה ‪ L .24.2‬היא ‪ NPC‬אם“ם ‪ L‬היא ‪.coNPC‬‬
‫הוכחה‪ L .‬היא ‪ ,NPC‬אם“ם לכל ‪ K ∈ NP‬מתקיים ‪ K ≤p L‬אם“ם ‪ ,K ≤p L‬אם“ם לכל ‪ K ∈ coNP‬מתקיים ‪K ≤p L‬‬
‫אם“ם ‪ L‬היא ‪ .coNPH‬כמו כן‪ L ∈ NP ,‬אם“ם ‪.L ∈ coNP‬‬
‫למעשה יש שלוש אפשרויות ליחסים בין המחלקות‪:‬‬
‫‪P = NP‬‬
‫‪ P 6= NP‬אבל ‪coNP = NP‬‬
‫‪coNP 6= NP‬‬
‫‪NPC = coNPC‬‬
‫‪coNPC‬‬
‫‪P = NP = coNP‬‬
‫‪≈ NPC = coNPC‬‬
‫‪NPC‬‬
‫‪NP = coNP‬‬
‫‪coNP‬‬
‫‪P‬‬
‫‪NP‬‬
‫‪P‬‬
‫דוגמה ‪ SAT ∈ coNPC .24.1‬כי ‪ .SAT ∈ NPC‬נאמר כי ‪ φ ∈ CNF‬היא טאוטולוגיה אם לכל השמה של משתנים‪ ,‬יתקבל‬
‫‪ .True‬נאמר כי ‪ φ‬היא סתירה‪ ,‬אם כל לכל השמה יינתן ‪ .False‬נגדיר את השפות‬
‫}‪ φ‬טאוטולוגיה ב‪TAUTOLOGY = {hφi | CNF -‬‬
‫}‪ φ‬היא סתירה ב‪CONTRADICTION = {hφi | CNF -‬‬
‫‪ CONTRADICTION ≤p TAUTOLOGY‬ע“י הרדוקציה ‪ .f (hφi) = ¬φ‬בנוסף‪.CONTRADICTION = SAT ∈ coNPC ,‬‬
‫קל לראות ש‪ TAUTOLOGY ∈ coNP-‬ולכן מהרדוקציה נקבל ‪.TAUTOLOGY ∈ coNPC‬‬
‫בעיית המסלול ההמילטוני‬
‫נרחיב את בעיית המסלול המילטוני שראינו בכיתה‪:‬‬
‫‪113‬‬
‫‪24‬‬
‫שבוע ‪12‬‬
‫תרגול ‪ - 11‬שלמות ב‪coNP-‬‬
‫הגדרה ‪ .24.4‬נגדיר את הבעיות הבאות‪:‬‬
‫}‪ G‬גרף לא מכוון עם מסלול המילטוני מ‪ s -‬ל‪U − ST − HAMPATH = {hG, s, ti | t -‬‬
‫}‪ G‬גרף מכוון עם מסלול המילטוני מ‪ s -‬ל‪D − ST − HAMPATH = {hG, s, ti | t -‬‬
‫}‪ G‬גרף לא מכוון עם מסלול המילטוני | ‪U − HAMPATH = {hGi‬‬
‫}‪ G‬גרף מכוון עם מסלול המילטוני | ‪D − HAMPATH = {hGi‬‬
‫}‪ G‬גרף לא מכוון עם מעגל המילטוני | ‪U − HAMCYCLE = {hGi‬‬
‫}‪ G‬גרף מכוון עם מעגל המילטוני | ‪D − HAMCYCLE = {hGi‬‬
‫סיווג בעיית המסלול ההמילטוני‬
‫משפט ‪ .24.1‬מתקיים כי ‪.D − ST − HAMPATH ∈ NPC‬‬
‫הוכחה נטען כי ‪ .D − ST − HAMPATH ∈ NP‬נבנה לה מוודא ‪ V‬שיקבל ‪ hG, s, ti‬וקבוצת קודקודים ‪ ,C‬ויבדוק‬
‫ש‪ ,C ⊆ V (G)-‬ולאחר מכן יוודא ש‪ .|C| = n-‬אם שתי הבדיקות נכונות‪ V ,‬יעבור על זוגות קודוקודים של קודקודים ב‪C-‬‬
‫ויוודא שקיימת להם צלע ב‪ .G-‬כמו כן‪ ,‬יוודא שהקודקוד הראשון הוא ‪ s‬והאחרון הוא ‪ .t‬אם כן‪ ,‬הוא יקבל‪ ,‬אחרת ידחה‪.‬‬
‫נוכיח כי ‪ ,D − ST − HAMPATH ∈ NPH‬על ידי הרדוקציה ‪ .3SAT ≤p D − ST − HAMPATH‬כלומר נחפש פונקציה‬
‫‪ f‬חשיבה פולינומית כך ש‪-‬‬
‫‪φ 7→ f (φ) = hGφ , s, ti‬‬
‫‪φ ∈ 3SAT ⇐⇒ f (φ) ∈ D − ST − HAMPATH‬‬
‫לא מאוד מסובך לבנות רדוקציה שבהנתן ‪ φ‬עם השמה‪ ,‬מספקת‪ ,‬תיתן גרף עם מסלול המילטוני‪ .‬אך הקושי הוא לוודא‬
‫שבהנתן מסלול המילטוני‪ ,‬יש השמה מספקת‪ ,‬ולכן הבנייה מורכבת‪ .‬תהי ) ‪ φ = (a1 ∨ b1 ∨ c1 ) ∧ . . . ∧ (ak ∨ bk ∨ ck‬ונניח‬
‫שב‪ φ-‬יש ליטרלים ‪ x1 , . . . , xl , x1 , . . . , xl‬עבור ‪ l‬כלשהו‪ .‬אזי ‪ ai , bi , ci‬הם ליטרלים מהצורה ‪ .xi , xi‬נבנה ‪ Gφ‬כך שלכל‬
‫משתנה ‪ x1 , . . . , xl‬יהיה רכיב מתאים ב‪ Gφ -‬ולכל פסוקית ‪ c1 , . . . , ck‬יהיה רכיב מתאים‪ ,‬ונחווט בין הרכיבים האלה בצורה‬
‫שתמשר את תכונת הספיקות של ‪.φ‬‬
‫בנייה‪ :‬לכל משתנה ‪ xi‬מ‪ ,φ-‬עבור ‪ ,1 ≤ i ≤ l‬נגדיר מבנה יהלום ב‪) Gφ -‬ראו איור בהמשך(‪.‬‬
‫בכל יהלום‪ ,‬השורה האמצעית כוללת ‪ 3k + 3‬קודקודים ‪ 2 -‬קודקודי קצה‪ ,‬ו‪ 3k + 1-‬מרכזיים‪ .‬כמו כן‪ ,‬כל יהלום מחובר‬
‫לבא אחריו‪.‬‬
‫כמו כן‪ ,‬לכל פסוקית ‪ cj‬עבור ‪ ,1 ≤ j ≤ k‬יהיה קודקוד מתאים ב‪ Gφ -‬שנסמנו ‪.cj‬‬
‫באיור הבא ניתן לראות מימין את הקודקודים המתאימים לפסוקיות ‪ cj‬ומשמאל את היהלומים שמתאימים לכל אחד‬
‫מהמשתנים ‪ - xi‬כל אחד מחובר לזה שבא אחריו‪:‬‬
‫‪114‬‬
‫‪24‬‬
‫שבוע ‪12‬‬
‫תרגול ‪ - 11‬שלמות ב‪coNP-‬‬
‫‪s‬‬
‫‪c1‬‬
‫‪c2‬‬
‫···‬
‫···‬
‫‪x1‬‬
‫···‬
‫···‬
‫‪x2‬‬
‫‪..‬‬
‫‪..‬‬
‫‪ck‬‬
‫···‬
‫···‬
‫‪xn‬‬
‫‪t‬‬
‫כאן ‪ s‬הוא הראש ביהלום הראשון ו‪” t-‬הזנב“ ביהלום האחרון‪.‬‬
‫כאמור‪ ,‬בכל יהלום יש ‪ 3k + 1‬קודקודים בשורה )לא כולל השניים בקצוות מימין ומשמאל(‪ .‬כל שני קודקודים סמוכים‬
‫מתאימים לפסוקית ‪ ,cj‬ואחרי כל שני קודקודים כאלה מגיע ”קודקוד מפריד“‪ ,‬כמתואר באיור הבא‪ ,‬בו ניתן לראות קודקוד‬
‫מפריד שסומן בכחול‪ ,‬אחריו זוג קודקודים סמוכים המתאימים ל‪ ,c1 -‬אז קודקוד מפריד נוסף‪ ,‬אז שני קודקודים סמוכים‬
‫המתאימים ל‪ ,c2 -‬וכך הלאה‪:‬‬
‫···‬
‫‪xi‬‬
‫‪c1‬‬
‫‪c2‬‬
‫עתה נתאר כיצד נחבר בין קודקודי פסוקית ויהלומי משתנים‪.‬‬
‫לכל פסוקית ‪ ,cj‬אם ‪ xi‬מופיע ב‪ ,cj -‬נסתכל על זוג הקודקודים ביהלום של ‪ xi‬המתאימים ל‪ ,cj -‬ונחבר את הקודקודים‬
‫הללו לקודקוד של ‪ cj‬של ‪ xi‬כמתואר באיור‪ .‬ואם ‪ xi‬מופיע ב‪ ,cj -‬נחבר את הקשתות בכיוון ההפוך‪ ,‬כמתואר באיור‪:‬‬
‫‪115‬‬
‫‪24‬‬
‫שבוע ‪12‬‬
‫תרגול ‪ - 11‬שלמות ב‪coNP-‬‬
‫אם ‪ xi‬מופיע בפסוקית ‪cj‬‬
‫אם ‪ xi‬מופיע בפסוקית ‪cj‬‬
‫‪cj‬‬
‫‪cj‬‬
‫···‬
‫···‬
‫···‬
‫‪xi‬‬
‫‪cj‬‬
‫···‬
‫‪xi‬‬
‫‪cj‬‬
‫סיבוכיות‪ :‬הבנייה היא פולינומית כי לכל ‪ xi‬מוסיפים ‪ 3k + 5‬קודקודים‪ ,‬ולכל ‪ cj‬מוסיפים קודקוד‪ .‬סך הכל )‪.O (l · k‬‬
‫נכונות‪ :‬נראה ש‪ f -‬אכן רדוקציה‪ ,‬כלומר יש ב‪ Gφ -‬מסלול המילטוני בין ‪ s‬ל‪ t-‬אם“ם יש ל‪ φ-‬השמה מספקת‪.‬‬
‫⇐‪ :‬נניח שיש ל‪ φ-‬השמה מספקת‪ .‬אזי לכל ‪ 1 ≤ j ≤ k‬קיים ליטרל ב‪ cj -‬שמקבל ‪.T‬‬
‫מסלול המילטוני מ‪ s-‬ל‪ t-‬יראה כך‪ .‬נתחיל ב‪ .s-‬לכל ‪ ,1 ≤ i ≤ l‬אם ‪ xi‬מקבל ‪ T‬בהשמת האמת של ‪ ,φ‬נטייל על היהלום‬
‫של ‪ xi‬נלך ב“זיגזג“ כמתואר באיור‪ ,‬ואם ‪ xi‬קיבל ‪ ,F‬נטייל על היהלום ‪ xi‬בכיוון ההפוך ב“זגזיג“‪ ,‬כמתואר באיור‪:‬‬
‫כיוון ההליכה במסלול אם ‪ xi‬מקבל ‪” - F‬זגזיג“‬
‫כיוון ההליכה במסלול אם ‪ xi‬מקבל ‪” - T‬זיגזג“‬
‫היות שלכל ‪ ci‬לפחות ליטרל אחד שקיבל ‪ ,T‬נוכל לקחת מעקפים לכל ‪ cj‬כך‪ :‬אם ‪ xi‬מופיע ב‪ cj -‬וקיבל ‪ ,T‬אז מטיילים על‬
‫‪ ,xi‬ניתן לקחת מעקף דרך הראשון בזוג שמתאים ל‪ cj -‬ביהלום של ‪ .xi‬אם ‪ xi‬מופיע ב‪ cj -‬ו‪ xi -‬קיבל ‪ ,F‬אזי מטיילים על‬
‫‪ xi‬ככה‪ ,‬ואפשר לקחת מעקף‪ ,‬דרך ‪ cj‬מהקודקוד השני‪ ,‬בזוג המתאים ל‪ cj -‬ביהלום של ‪ .xi‬המסלול המילטוני לא מוגדר‬
‫ביחידות‪ ,‬אך בהכרח קיים‪ .‬מכאן‪ ,‬אם ‪ φ‬ספיקה‪ ,‬אזי יש ל‪ Gφ -‬מסלול המילטוני בין ‪ s‬ל‪.t-‬‬
‫⇒‪ :‬נניח שיש מסלון המילטוני מ‪ s-‬ל‪ t-‬ב‪ .Gφ -‬אם הוא ”נורמלי“‪ ,‬כלומר מטייל על היהלומים לפי הסדר‪ ,‬ואם יוצא למעקף‬
‫דרך קודקוד בזוג שמתאים ל‪ cj -‬ו‪ xi -‬אז חוזר לקודקוד הבא באותו זוג‪ ,‬אז נדע שיש השמה מספקת ל‪ ,φ-‬בדיוק לפי כיוון‬
‫הטיול על כל יהלום‪ .‬מסלול לא נורמלי‪ ,‬חייב להכיל מעבר כזה )שמתחיל מ‪ ,a1 -‬עובר ל‪ c-‬ובמקום לחזור ל‪ a2 -‬קופץ ל‪:(b2 -‬‬
‫‪116‬‬
‫‪24‬‬
‫שבוע ‪12‬‬
‫תרגול ‪ - 11‬שלמות ב‪coNP-‬‬
‫‪c‬‬
‫‪a3‬‬
‫‪a2‬‬
‫‪b2‬‬
‫‪b1‬‬
‫‪a1‬‬
‫ונניח שזה המעבר הראשון מהסוג הזה‪ ,‬נשים לב שאו ‪ a2‬או ‪ a3‬קודקודים מפרידים‪ .‬אם ‪ a2‬מפריד‪ ,‬אפשר להגיע אליו דרך‬
‫‪ a3‬או ‪ .a1‬אם ‪ a2‬לא מפריד‪ ,‬אפשר להגיע אליו דרך ‪ a3‬או ‪ a1‬או ‪ ,c‬כי אז ‪ a2‬סוג של ‪ a1‬שמתאים ל‪ .c-‬אבל זאת‬
‫אומרת שהמסלול ההמילטוני חייב להכנס ל‪ a1 -‬דרך ‪ a3‬כי כבר ביקר ב‪ a1 , c-‬ואז הוא נתקע ולעולם לא מגיע ל‪ .t-‬לכן זה‬
‫לא מסלול המילטוני בסתירה להנחה‪ .‬כלומר כל המסלולים ההמילטונים ב‪ Gφ -‬הם נורמלים‪ ,‬ולכן קיימת השמה מספקת ל‪.φ-‬‬
‫מכאן אפשר להסיק שגם כל שאר הבעיות ההמילטוניות קשות‪.‬‬
‫טענה ‪.U − ST − HAMPATH ∈ NPC .24.3‬‬
‫הוכחה‪ .‬קל לראות שהיא ב‪ .NP-‬נוכיח שהיא ב‪ NPH-‬על ידי הרדוקציה ‪.D − ST − HAMPATH ≤p U − ST − HAMPATH‬‬
‫כלומר נמצא פונק ‪ ′‬כך ש‪ f (hG, s, ti) = hG′ , s′ , t′ i ∈ U − ST − HAMPATH-‬אם“ם ‪.hG, s, ti ∈ D − ST − HAMPATH‬‬
‫דבר ראשון שאנחנו שמים לב הוא שמחיקת כיוונים לא תעבוד‪ .‬לכן נבצע את הדבר הבא‪.‬‬
‫בנייה‪ :‬בהנתן ‪ ,G = hV, Ei‬הרדוקציה תחזיר ‪ G′ = hV ′ , E ′ i‬שבנוי כך‪ .‬לכל קודקוד ‪ v‬ב‪ ,V -‬נגדיר את קודקודים חדשים‬
‫‪S‬‬
‫‪S‬‬
‫‪S‬‬
‫= ‪.E ′‬‬
‫∪}} ‪{{vin , vmid } , {vmid , vout‬‬
‫= ‪ .V ′‬כמו כן‪ ,‬נגדיר }} ‪{{uout , vin‬‬
‫‪ ,vin , vmid , vout‬כלומר } ‪{vin , vmid , vout‬‬
‫‪v∈V‬‬
‫‪(u,v)∈E‬‬
‫נגדיר ‪.s′ = sin , t′ = tout‬‬
‫‪v∈V‬‬
‫סיבוכיות‪ :‬נבחין כי הבנייה היא פולינומיאלית‪.‬‬
‫נכונות‪ :‬אם יש מסלול המילטוני ‪ s, v1 , . . . , vk−1 , t‬ב‪ ,G-‬אזי המסלול‬
‫‪sin , smid , sout , v1,in , v1,mid , v1,out , . . . , vk−1,in , vk−1,mid , vk−1,out , tin , tmid , tout‬‬
‫המילטוני בין ‪ sin‬לבין ‪ .tout‬עתה‪ ,‬נניח שיש ב‪ G′ -‬מסלול המילטוני בין ‪ sin‬ל‪ .tout -‬נניח בשלילה שיש במסלול צלע } ‪{vin , uout‬‬
‫כך שמגיעים מ‪ vin -‬ל‪ ,uout -‬ונניח שזו הצלע הראשונה מהצורה הזו במסלול‪ .‬אם כבר ביקרנו ב‪ ,vmin -‬אזי המסלול חייב היה‬
‫להגיע אליו דרך ‪ ,vout‬אבל זאת אומרת שהמסלול הגיע אליו דרך ‪ xin‬כלשהו‪ ,‬בסתירה ל‪ .(vin , uout )-‬לכן‪ ,‬היינו חייבים‬
‫לבקר ב‪ vmid -‬אחרי ‪ .uout‬אבל זה אומר שאנחנו מגיעים לשם מ‪ ,vout -‬ואז נתקעים‪ ,‬ובפרט לא יכולים להגיע ל‪ ,tout -‬סתירה‪.‬‬
‫לכן הצלעות במסלול הם מהצורה ) ‪ (vin , vmid ) , (vmid , vout‬ו‪ .(vout , uin )-‬על כן‪ ,‬המסלול ההמילטוני הוא מהצורה‬
‫‪sin , smid , sout , v1,in , v1,mid , v1,out , . . . , vk−1,in , vk−1,mid , vk−1,out , tin , tmid , tout‬‬
‫ולכן בהכרח קיים מסלול המילטוני ב‪ G-‬מהצורה ‪.s, v1 , . . . , vk−1 , t‬‬
‫טענה ‪.U − HAMPATH, D − HAMPATH, U − HAMCYCLE, D − HAMCYCLE ∈ NPC .24.4‬‬
‫הוכחה‪ .‬מושאר כתרגיל לסטודנט המשקיע החכם היפה והחסון‪.‬‬
‫‪117‬‬
‫‪25‬‬
‫תרגול ‪ - 12‬משפט סביץ’‬
‫שבוע ‪13‬‬
‫‪ 25‬תרגול ‪ - 12‬משפט סביץ’‬
‫‪′‬‬
‫משפט סביץ‬
‫‬
‫משפט‪ .‬לכל פונקציה )‪ S (n) = Ω (log n‬מתקיים )‪.NSPACE (S (n)) ⊆ SPACE S 2 (n‬‬
‫משמעות המשפט היא שדטרמיניזציה עולה לנו ניפוח פולינומיאלי של הזכרון‪.‬‬
‫אנחנו נוכיח את המשפט עבור המקרה ‪ ,S (n) ≥ n‬ולאחר מכן נסביר את המקרה בו יש סיכויות זכרון תת‪-‬לינארית‪ .‬עבור‬
‫‬
‫פונקציות זמן אנחנו יודעים ש‪ ,NTIME (t (n)) ⊆ TIME 2O(t(n)) -‬ולכן אנחנו צריכים לחסוך בזכרון‪ .‬הרעיון הוא להשתמש‬
‫ברקורסיה‪ .‬בשביל זה נגדיר את ההנחות שלנו‪.‬‬
‫הוכחה‪ .‬תהי ‪ M‬מכונה א“ד שמכריעה שפה ‪ L‬בסיבוכיות זכרון )‪.S (n‬‬
‫‪w‬‬
‫‪.Cinit‬‬
‫ˆ נניח שלכל מילה ‪ w‬יש ל‪ M -‬רק קונפ ‪ ′‬התחלתית אחת על ‪ w‬ונסמן אותה ב‪-‬‬
‫ˆ נניח שיש ל‪ M -‬רק קונפ ‪ ′‬מקבלת אחת ‪) Cacc‬בבואה לקבל‪ ,‬המכונה מוחקת את הסרט‪ ,‬הולכת עם הראש הקורא‬
‫שמאלה‪ ,‬ורק אז מקבלת(‪.‬‬
‫ˆ יהי ‪ d ≥ 1‬כזה שיש ל‪ M -‬לכל היותר )‪ 2d·S(n‬קונפ ‪ ′‬שונות על מילה באורך ‪ ,n‬יש ‪ d‬כזה‪ ,‬כי יש ל‪2O(s(n)) M -‬‬
‫קונפ ‪ ′‬שונות )הזכרו בחישוב מההרצאה הקודמת(‪.‬‬
‫המכונה ‪ M ′‬שנייצר‪ ,‬תריץ שגרה דטרמיניסטית )‪ can − yield (c1 , c2 , t‬שמחזירה ‪ true‬אם“ם ניתן להגיע ב‪ M -‬מהקונפ ‪C1 ′‬‬
‫‬
‫‪w‬‬
‫‪ .can − yield Cinit‬סיבוכיות הזכרון של ‪can − yield‬‬
‫לקונפ ‪ C2 ′‬ב‪ t-‬צעדים לכל היותר‪ M ′ .‬תריץ את )‪, Cacc , 2d·S(n‬‬
‫תהיה ‪ ,O (S (n) + log t) · log t‬ואז ‪ M ′‬תזדקק לזכרון‬
‫‬
‫‬
‫‬
‫)‪O S (n) + log 2d·S(n) log 2d·S(n) = O (S (n) + d · S (n)) d · S (n) = O S 2 (n‬‬
‫על כן מספיק לייצר את השגרה ‪ can − yield‬עם סיבוכיות הזכרון הנ“ל‪ .‬השגרה )‪ can − yield (c1 , c2 , t‬תפעל באופן הבא‪.‬‬
‫‬
‫נניח שקונפ ‪ ′‬נתונה על ידי מילה ב‪Γi QΓS(n)−i Γ∗ QΓ∗ -‬‬
‫‪ .1‬אם ‪ ,t = 1‬אז החזר ‪ true‬אם ‪ c1 = c2‬או ‪ c2‬עוקבת ל‪.c1 -‬‬
‫‪S‬‬
‫‪ .2‬אחרת‪ ,‬אם ‪ t > 1‬אז עבור על כל הקונפ ‪Γi QΓS(n)−i ′‬‬
‫‪i‬‬
‫ ‬
‫ ‬
‫‪′‬‬
‫‪ .can − yield c, c2 , 2t‬אם כן‪ ,‬החזר ‪ ,true‬אם לא‪ ,‬עבור לקונפ‬
‫‪ can − yield c1 , c, 2t‬וגם‬
‫כאלה(‪ ,‬ובדוק האם‬
‫‪ c‬הבאה‪.‬‬
‫∈ ‪) c‬למשל בסדר לקסיקוגרפי‪ ,‬ויש לכל היותר )‪2d·S(n‬‬
‫‪ .3‬דחה‪.‬‬
‫נבחין כי זו שגרה דטרמינסטית‪ ,‬היות שאנחנו בודקים ישיגות בגרף הקונפ ‪ ′‬של המכונה ‪ .M‬מבחינת סיבוכיות זכרון‪ ,‬נבחין‬
‫כי יש לנו רקורסיה בעומק ‪ ,log t‬ולאורכה‪ ,‬במחסנית הרקורסיה‪ ,‬כלומר בכל קודקוד בעץ הרקורסיה‪ ,‬שומרים שתי קונפ‬
‫‪′‬‬
‫יחד עם חסם על מספר הצעדים שהוא ≥ ‪ ,t‬כלומר נדרשים ‪ 2 · S (n) + log t‬תאים‪ .‬היות שהעומק הוא ‪ log t‬נדרשים סך‬
‫הכל ‪ O (S (n) + log t) · log t‬תאים‪.‬‬
‫עתה‪ ,‬למי שכבר למד על מחלקות סיבוכיות תת‪-‬לינאריות )ומי שלא שיחזור לחלק זה לאחר מכן(‪:‬‬
‫נסביר למה ההנחה ש‪ s (n) ≥ n-‬אינה הכרחית‪ ,‬ומספיק לדרוש ‪.s (n) ≥ log n‬‬
‫בהנחה ש‪ s (n) ≥ n-‬השתמשנו כדי לטעון שיש למכונה לכל היותר ))‪ 2O(s(n‬קונפ’‪ .‬הטיעון הזה תקף גם למכונה עם‬
‫‪ :s (n) = log n‬לכל קונפ’ אנחנו צריכים לתאר באיזה מצב אנחנו )|‪ ,|Q‬איפה נמצא הראש של סרט הקלט )‪ ,(n‬איפה נמצא‬
‫‪118‬‬
‫‪25‬‬
‫תרגול ‪ - 12‬משפט סביץ’‬
‫‪ 25.1‬השפה ‪TQBF‬‬
‫שבוע ‪13‬‬
‫הראש של סרט העבודה )‪ ,(log n‬ומהו תוכן סרט העבודה )‬
‫)‪O(log n‬‬
‫|‪ ,|Γ‬שכן אנו משתמשים ב‪ O (log n)-‬תאים(‪ ,‬כלומר כמות‬
‫האפשרויות היא‬
‫)‪O(log n‬‬
‫|‪× |Γ‬‬
‫×‬
‫‪log n‬‬
‫} ‪| {z‬‬
‫× |‪|Q‬‬
‫‪n‬‬
‫}‪|{z‬‬
‫מיקום ראש סרט הקלט‬
‫מיקום ראש סרט העבודה‬
‫ובגלל ש‪ Q, Γ-‬קבועים ו‪ ,n = 2log n -‬כמות האפשרויות היא )‪ c1 · n · log n · cc23 ·log n = 2O(log n‬עבור ‪ c1 , c2 , c3‬קבועים‬
‫כלשהם‪.‬‬
‫הערה‪ .‬למעשה מובלעות כאן הנחות כמו למשל ש‪ S (n)-‬חשיבה בסיבוכיות מקום ))‪ .O (S (n‬ניתן להתחמק מהנחה זו‪ ,‬אך‬
‫לשם פשוטות לא נפרט כאן על כך‪.‬‬
‫מסקנה ‪.PSPACE = NPSPACE .25.1‬‬
‫על כן‪ ,‬עד כה אנחנו יודעים כי‪:‬‬
‫‪coEXPTIME‬‬
‫‪coNPSPACE‬‬
‫‪k‬‬
‫‪k‬‬
‫‪EXPTIME‬‬
‫⊆‬
‫‪NPSPACE‬‬
‫=‬
‫=‬
‫‪coPSPACE‬‬
‫‪coP‬‬
‫‪k‬‬
‫‪k‬‬
‫‪PSPACE‬‬
‫⊆‬
‫‪NP‬‬
‫‪coNP‬‬
‫⊆‬
‫‪P‬‬
‫⊆‬
‫‪NLOGSPACE‬‬
‫⊆‬
‫‪LOGSPACE‬‬
‫הדבר היחיד שלא ראינו הוא ההכלה של ‪) NLOGSPACE, LOGSPACE‬אף לא ראינו מה זה בכלל(‪ .‬על נושא זה נדבר בהמשך‪.‬‬
‫‪ 25.1‬השפה ‪TQBF‬‬
‫כשדיברנו על ‪ ,SAT‬חיפשנו השמה אחת מספקת‪ .‬אבל נוכל להוסיף לה עוד כמתים‪.‬‬
‫הגדרה ‪ .25.1‬נגדיר את השפה )‪ Truth Quantified Boolean Formula (TQBF‬להיות השפה שמכילה כל נוסחה‬
‫ב‪ CNF-‬שכל המשתנים שלה מכומתים )כלומר הנוסחה היא פסוק(‪ ,‬והפסוק הוא פסוק אמת‪ .‬כלומר ביטוי מהצורה‬
‫) ‪Q1 x1 Q2 x2 . . . Qk xk : φ (x1 , . . . , xk‬‬
‫כאשר ‪ Q1 , . . . , Qk‬כמתים ב‪ {∀, ∃}-‬ו‪ φ-‬היא נוסחת ‪.CNF‬‬
‫דוגמה ‪ ∀x1 ∃x2 : (x1 ∨ x2 ) ∧ (x1 ∨ x2 ) ∈ TQBF .25.1‬פסוק אמת‪.‬‬
‫טענה ‪.TQBF ∈ PSPACE .25.1‬‬
‫הוכחה‪ .‬נבצע הליך רקורסיבי‪ .‬בהנתן ) ‪ ,Q1 x1 Q2 x2 . . . Qk xk : φ (x1 , . . . , xk‬אם אין כמתים‪ ,‬אזי ‪ k = 0‬ולכן אין משתנים‪,‬‬
‫ולכן הנוסחא מכילה קבועים‪ ,‬לכן אפשר לשערך אותה בשטח פולינומיאלי‪.‬‬
‫אחרת‪ ,‬אם הנוסחא מהצורה ‪ ,∃x ψ‬משערכים רקורסיבית את ‪ ψx←F‬ואת ‪ ,ψx←T‬ונחזיר ‪ T‬אם“ם לפחות אחד מהם החזיר‬
‫‪ .T‬אם הנוסחא מהצורה ‪ ,∀x ψ‬נחזיר ‪ T‬אם“ם שניהם מחזירים ‪.T‬‬
‫עומק הרקורסיה הוא מספר המשתנים )‪ ,(k‬ובכל רמה ברקורסיה שומרים את הנוסחא יחד עם השמה חלקית )‪ .(n‬לכן סך‬
‫הכל זכרון פולינומיאלי‪.‬‬
‫טענה ‪.TQBF ∈ PSPACE − H .25.2‬‬
‫‪119‬‬
‫‪25‬‬
‫תרגול ‪ - 12‬משפט סביץ’‬
‫‪ 25.1‬השפה ‪TQBF‬‬
‫שבוע ‪13‬‬
‫הוכחה‪ .‬תהי שפה ‪ L ∈ PSPACE‬נוכיח כי ‪ .L ≤p TQBF‬תהי ‪ M‬מ“ט דטרמינסטית שמכריעה את ‪ L‬בשטח )‪S (n‬‬
‫פולינומיאלי‪ .‬בהנתן מילה ‪ ,w‬אפשר לבנות נוסחא ‪ φ‬כך ש‪ M -‬מקבלת את ‪ w‬אם“ם ‪ φ‬היא ‪ ,True‬כפי שבצענו בהוכחת‬
‫משפט קוק‪-‬לוין‪ .‬אנחנו לא יודעים אם ‪ M‬עוצרת לאחר מספר פולינומיאלי של צעדים‪ ,‬אך היא כן משתמשת לכל היותר‬
‫במספר פולינומיאלי של תאים‪ .‬נגדיר את משתני הנוסחא באופן הבא‪:‬‬
‫‪ .1‬נקודד קונפ ‪ c ′‬על ידי המשתנים הבאים‪ .‬נניח ש‪ s-‬חסם על מספר התאים ש‪ c-‬משתמשת בהם‪ ,‬אזי לכל אות ‪a ∈ Γ‬‬
‫ו‪ 1 ≤ i ≤ s-‬נגדיר משתנה ‪ xi,a‬שערכו ‪ T‬אם“ם בתא ה‪ i-‬כתוב ‪.a‬‬
‫‪ .2‬לכל ‪ 1 ≤ i ≤ S‬נגדיר ‪ yi‬להיות אינדיקטור להאם הראש הקורא מצביע על התא ה‪.i-‬‬
‫‪ .3‬לכל מצב ‪ q ∈ Q‬נגדיר ‪ zq‬להיות אינדיקטור להאם המכונה במצב ‪.q‬‬
‫על כן הנוסחא תקבל השמה ל‪-‬‬
‫‪c = hx1,a1 , x1,a2 , . . . , x1,am , x2,a1 , . . . , x2,am , . . . , xs,a1 , . . . , xs,am , y1 , . . . , ys , zq1 , . . . , zql i‬‬
‫כאשר } ‪ .Γ = {a1 , . . . , am } , Q = {q1 , . . . , ql‬בפרט נגדיר פסוקית שמוודאה שהשמה מתארת קונפ ‪:′‬‬
‫)) ‪(yi ∧ ¬ (y1 ∨ y2 ∨ . . . ∨ yi−1 ∨ yi+1 ∨ . . . ∨ ys‬‬
‫}‬
‫_‬
‫= )‪φvalid (c‬‬
‫‪1≤i≤S‬‬
‫‪{z‬‬
‫|‬
‫הראש הקורא בתא אחד בלבד‬
‫בכל תא יש אות אחת מ‪∧ Γ-‬‬
‫יש מצב אחד ∧‬
‫כאשר ניתן לבנות נוסחא גם לשני התנאים הנוספים ב‪ ,φvalid -‬אך לא נציג אותם כאן‪ .‬נגדיר‬
‫הקונפ ‪ c1 ′‬עוקבת ל‪φmove (c1 , c2 ) = φvalid (c1 ) ∧ φvalid (c2 ) ∧ c2 -‬‬
‫גם אותה אפשר לכתוב במפורש‪ ,‬אך לא נעשה זאת‪ .‬ננסה להגדיר את ‪.φ‬‬
‫ניסיון ראשון ושגוי‪:‬‬
‫) ‪φmove (ci , ci+1‬‬
‫^‬
‫‪∃c1 ∃c2 . . . ∃ct : (c1 = cw‬‬
‫∧ ) ‪init ) ∧ (ct = cacc‬‬
‫‪1≤i≤t−1‬‬
‫אך נוסחא זו‪ ,‬רק אומרת שיש ריצה מקבלת‪ ,‬תוך ‪ t‬צעדים‪ ,‬אך הוא יכול להיות אקספוננציאלי‪ ,‬ולכן ייתכן היא הנוסחא‬
‫איננה בגודל פולינומיאלי‪ .‬כלומר ייתכן כי ‪ M‬תעצור לאחר מספר אקספוננציאלי של צעדים‪ .‬כלומר הבעיה היא שזה ש‪M -‬‬
‫מקבלת את ‪ w‬בסיבוכיות מקום פולינומיאלית‪ ,‬לא גורר ש‪ M -‬מקבלת את ‪ w‬בסיבוכיות זמן פולינומיאלית‪ .‬על כן‪ ,‬הרדוקציה‬
‫נכונה‪ ,‬אך לא פולינומיאלית‪.‬‬
‫ניסיון שני ושגוי‪:‬‬
‫יש ריצה מקונפ ‪ c ′‬ל‪ c′ -‬שאורכה ‪φ (c, c′ , k) = k‬‬
‫‬
‫ ‬
‫‬
‫ ‬
‫‪k‬‬
‫‪k‬‬
‫‪′′ ′‬‬
‫‪′′‬‬
‫‪′′‬‬
‫‪∧ φ c ,c ,‬‬
‫‪= ∃c φ c, c ,‬‬
‫‪2‬‬
‫‪2‬‬
‫נחשב את האורך של נוסחא שהפרמטר השלישי שלה הוא ‪:k‬‬
‫ ‬
‫‪k‬‬
‫‪= S (n) · k‬‬
‫‪2‬‬
‫‪ℓ (k) = S (n) + 2ℓ‬‬
‫‪120‬‬
‫‪25‬‬
‫תרגול ‪ - 12‬משפט סביץ’‬
‫‪ 25.1‬השפה ‪TQBF‬‬
‫שבוע ‪13‬‬
‫אז כאן על אף שירדנו לעומק ‪ ,log k‬במקום ‪ ,k‬קיבלנו עץ רקורסיה עם מספר אקספוננציאלי של עלים‪ ,‬ולכן כאשר ‪k‬‬
‫אקספוננציאלי‪ ,‬קיבלנו פסוק באורך אקספוננציאלי‪ .‬זה לא מפתיע היות שהשתמשנו רק בכמת ”קיים“‪.‬‬
‫ניסיון שלישי ומוצלח‪ :‬נגדיר‬
‫‬
‫ ‬
‫‪k‬‬
‫‪φ (c, c , k) = ∃c ∀c1 , c2 (((c1 = c) ∧ (c2 = c )) ∨ ((c1 = c ) ∧ (c2 = c ))) → φ c1 , c2 ,‬‬
‫‪2‬‬
‫‪′′‬‬
‫‪′‬‬
‫‪′′‬‬
‫‪′′‬‬
‫‪′‬‬
‫כלומר אנחנו מוצאים קונפ ‪ ′‬ביניים ‪ c′′‬שמבטיחה לנו שכל שתי קונפ ‪ ′‬שהן ‪ c′′ → c′‬או ‪ ,c → c′′‬גוררות ש‪-‬‬
‫ ‪ k‬‬
‫‪2‬‬
‫‪φ c1 , c 2 ,‬‬
‫מחזיר ערך אמת‪ ,‬וזה אכן שקול לדרישה ש‪ φ (c, c′ , k)-‬מחזיר ערך אמת‪ ,‬כי אז היינו יכולים לבחור קונפ ‪ ′‬ביניים כלשהי‪,‬‬
‫ובהכרח היה מקבלים את התנאי‪ ,‬וההפך גם נכון‪ ,‬מהנוסחא הרקורסיבית שראינו בפתרון הקודם‪.‬‬
‫נזכר ש‪ A ⇒ B-‬שקול ל‪ ,¬A ∨ B-‬ולכן אכן מדובר בנוסחא ב‪.TQBF-‬‬
‫בפרט‪ ,‬אנחנו כופים על ‪ φ‬להסתכל רק על ענף אחד ברקורסיה‪ ,‬במקום על שני הענפים‪ ,‬וכך לקבל מסלול באורך ‪ log k‬בעץ‬
‫בלבד‪ .‬על כן אנחנו צריכים לקודד בכל פעם קונפ ‪ ′‬ב‪ O (S (n))-‬תאים ולכן‬
‫ ‬
‫‪k‬‬
‫‪ℓ (k) = O (S (n)) + ℓ‬‬
‫‪= O (S (n)) · log k‬‬
‫‪2‬‬
‫על כן‬
‫‬
‫)‪= O (S (n)) · d · S (n) = O S 2 (n‬‬
‫‬
‫)‪d·S(n‬‬
‫‪ φ cw‬פולינומיאלי כרצוי‪.‬‬
‫‪init , cacc , 2‬‬
‫מסקנה ‪.TQBF ∈ PSPACE − C .25.2‬‬
‫‪121‬‬
‫‪26‬‬
‫שבוע ‪14‬‬
‫תרגול ‪ - 13‬משפטי ההירככיה‬
‫‪ 26‬תרגול ‪ - 13‬משפטי ההירככיה‬
‫נדבר על משפטי ההירככיה בזמן ובמקום‪ ,‬שנותנים לנו מידע על אילו מחלקות נמצאות ”מעל“ אחרות‪ ,‬במובן שמחלקה אחת‬
‫מוכלת באחרת‪.‬‬
‫‪26.1‬‬
‫משפט ההירככיה בזמן‬
‫הגדרה ‪ .26.1‬תהי ‪ t : N → N‬כך ש‪.t (n) = Ω (n log n)-‬‬
‫נאמר כי ‪ t‬היא חשיבה‪/‬ניתנת לבנייה בזמן‬
‫)‪ (Time Constructible‬אם יש מ“ט שמקבלת כקלט את ‪ n) 1n‬באונארית( ומחשבת את הייצוג הבינארי של‬
‫)‪ t (n‬בזמן ))‪.O (t (n‬‬
‫הערה‪ .‬חישבו‪ :‬למה אנחנו מגדירים את המושג של חשיבה בזמן רק עבור )‪?t (n) = Ω (n log n‬‬
‫לפני שננסח ונוכיח את משפט ההיררכיה בזמן‪ ,‬נוכיח טענת עזר‪.‬‬
‫טענה ‪ .26.1‬קיימת מ“ט ‪ S‬שבהינתן ‪ hM, t, wi‬כקלט‪ S ,‬מחשבת את הקונפ’ המתקבלת מהרצת ‪ M‬על ‪ w‬למשך ‪ t‬צעדים‪,‬‬
‫והיא עושה זאת בזמן )|‪ (t log t) · p (|hM i‬כאשר ‪ p‬הוא איזשהו פולינום שנקבע מראש‪.‬‬
‫הוכחה‪ .‬נאתחל מונה עם הערך ההתחלתי ‪ .t‬כל עוד ‪ t 6= 0‬נבדוק מה הצעד הבא שאנחנו צריכים לבצע אותו ונבצע אותו‪,‬‬
‫ואז נוריד את ערכו של ‪ t‬ב‪ .1-‬בדיקה מה הצעד שאנחנו צריכים לבצע‪ ,‬והביצוע שלו‪ ,‬דורשים כל מיני פעולות כמו מעבר על‬
‫הקלט‪ ,‬אך סה“כ הדברים האלה פולינומיאליים ב‪ .|hM i|-‬כמו כן‪ ,‬עדכון המונה שלנו יקח )‪ O (log t‬במקרה הגרוע ביותר‪,‬‬
‫ויש ‪ t‬איטרציות‪ ,‬לכן הזמן שיקח הוא )|‪.(t log t) · p (|hM i‬‬
‫אם היינו מדברים על מ“ט עם ‪ 3‬סרטים זה היה עובד והיינו מסיימים את ההוכחה‪ ,‬כי על הסרט הראשון נמצא הקידוד‬
‫ולסרוק אותו יקח כמות פולינומיאלית של צעדים‪ ,‬ובסרט העבודה נשמור את הקאונטר שלנו‪ ,‬ובסרט השלישי היינו שומרים‬
‫את הקונפ’‪.‬‬
‫אך מה קורה בסרט יחיד? ראינו כבר לסמלץ ‪ 3‬סרטים בסרט יחיד ‪ -‬מכפילים את הא“ב ב‪ 3-‬והתא ה‪ i-‬בסרט היחיד שלנו‬
‫מכיל את המידע על התא ה‪ i-‬בכל אחד משלושת הסרטים ”המסומלצים“‪ ,‬אבל עדיין יש לנו ראש קורא יחיד שצריך לעבור‬
‫על כל הסרט‪.‬‬
‫לכן נשתמש בטריק ‪ -‬כדי להימנע מסריקות מיותרות בחיפוש אחר ‪ ,hM i‬בכל שלב נזיז את הקידוד של המכונה יחד עם הראש‬
‫הקורא‪ ,‬בכיוון אליו הוא מתקדם )אם הראש זז ימינה‪/‬שמאלה‪ ,‬נזיז את כל הקידוד של המכונה מקום אחד ימינה‪/‬שמאלה‬
‫בהתאמה(‪ .‬להעתיק כל פעם את כל הקידוד יקח )|‪ ,O (|hM i‬שזה מחיר שאנחנו יכולים לסבול כי אנחנו עדיין מקבלים‬
‫)|‪ (t log t) · p̃ (|hM i‬עבור פולינום ̃‪ p‬כלשהו‪.‬‬
‫נציין שאם מדאיג אותנו החיפוש אחר המונה‪ ,‬נוכל להזיז גם אותו יחד עם ‪.hM i‬‬
‫משפט ההיררכיה בזמן‬
‫משפט‪ .‬לכל פונקציה ‪ t‬שניתנת לבנייה בזמן‪ ,‬קיימת שפה ‪ L‬שניתנת להכרעה בזמן ))‪ O (t (n‬אך לא בזמן‬
‫הערה‪ .‬שימו לב לסימוני ‪-O‬גדולה ו‪-o-‬קטנה‪.‬‬
‫הוכחה‪ .‬נגדיר‬
‫)‬
‫‪ M‬לא מקבלת את ‪ hM i #0k‬תוך )‪ t′ (n, m‬צעדים‬
‫כאשר‬
‫)‪t(n‬‬
‫)‪p(m)·log t(n‬‬
‫= )‪n = hM i #0k , m = |hM i| , t′ (n, m‬‬
‫(‬
‫‪hM i #0‬‬
‫‪k‬‬
‫=‪L‬‬
‫ובדומה לבעיית העצירה‪ ,‬אנחנו נשתמש כאן בטיעון אלכסון ‪ -‬אנחנו רוצים מכונה שדוחה את עצמה‪.‬‬
‫⋆ נתחיל בכך שנראה ש‪ L-‬כריעה בזמן ))‪.O (t (n‬‬
‫נגדיר מ“ט ‪ ,T‬שבהינתן קלט ‪ x‬המכונה תפעל כך‪:‬‬
‫‪122‬‬
‫‬
‫)‪t(n‬‬
‫))‪log(t(n‬‬
‫‬
‫‪.o‬‬
‫‪26‬‬
‫תרגול ‪ - 13‬משפטי ההירככיה‬
‫‪26.2‬‬
‫שבוע ‪14‬‬
‫משפט ההירככיה במקום‬
‫‪ .1‬נבדוק האם ‪ x‬הוא מהצורה ‪ - hM i #0k‬אם לא אז נדחה‪.‬‬
‫זמן ריצה‪) O (n) :‬עוברים על הקלט(‬
‫‪ .2‬נחשב את הייצוג הבינארי של |‪ n = |x‬ו‪.m = |hM i|-‬‬
‫זמן ריצה‪ .O (n log n) :‬כדי לחשב את הייצוג הבינארי של ‪ n‬ניתן לאתחל מונה להיות ‪ ,0‬לעבור על כל הקלט עד שמגיעים‬
‫לסופו ובכל פעם להוסיף ‪ 1‬למונה‪ m ≤ n .‬לכן לוקח פחות זמן לחשב את הייצוג של ‪.m‬‬
‫‪ .3‬נחשב )‪.t = t (n‬‬
‫זמן ריצה‪ O (t (n)) :‬כי ‪ t‬ניתנת לבנייה בזמן‪.‬‬
‫‪ .4‬נחשב‬
‫‪t‬‬
‫)‪p(m)·log(t‬‬
‫= )‪.t′ = t′ (n, m‬‬
‫זמן ריצה‪ :‬פולינומיאלי ב‪) log (t)-‬כי פעולת החילוק היא פולינומיאלית(‪.‬‬
‫‪ .5‬נסמלץ ריצה של ‪ M‬על ‪ x‬במשך ‪ t′‬צעדים‪.‬‬
‫זמן ריצה‪ O (t′ log (t′ ) · p (m)) :‬לפי טענת העזר ממקודם‪ ,‬ולמעשה‬
‫‪′‬‬
‫‪ log t ≤ log t‬לכן ·‬
‫‪t‬‬
‫)‪p(m)·log(t‬‬
‫‪′‬‬
‫‪′‬‬
‫≤ )‪t · log (t ) · p (m‬‬
‫)‪log (t) · p (m) = t = t (n‬‬
‫לכן זמן הריצה הוא ))‪O (t (n‬‬
‫‪ .6‬אם ‪ M‬מקבלת את ‪ ,x‬אז נדחה‪ ,‬ואחרת נקבל‪.‬‬
‫סה“כ בגלל ש‪ t (n) = Ω (n log n)-‬האלגוריתם כולו רץ בזמן ))‪.O (t (n‬‬
‫‬
‫‬
‫)‪t(n‬‬
‫⋆ נראה ש‪ L-‬לא כריעה בזמן‬
‫))‪.o log(t(n‬‬
‫‬
‫‬
‫)‪t(n‬‬
‫נניח בשלילה שכן קיימת מ“ט ‪ M‬שמכריעה את ‪ L‬בזמן ))‪ .r (n) = o log(t(n‬נסמן |‪ .m = |hM i‬נשים לב ש‪.n ≥ m + 1-‬‬
‫כמו כן‪,‬‬
‫‪1‬‬
‫)‪p(m‬‬
‫קבוע ולכן מהגדרת ‪ r‬קיים ‪ n‬מספיק גדול כך‬
‫ונסתכל על ההתנהגות של ‪ M‬כשהיא רצה על הקלט‬
‫)‪t(n‬‬
‫ש‪log(t(n)) -‬‬
‫·‬
‫‪1‬‬
‫)‪p(m‬‬
‫< )‪ .r (n‬יהי ‪ k ≥ 0‬כך ש‪hM i #0k = n-‬‬
‫‪.hM i #0‬‬
‫‪k‬‬
‫∈ ‪ hM i #0k‬ולכן ‪ M‬לא צריכה לקבל אותו ‪ -‬סתירה‪.‬‬
‫אם ‪ M‬מקבלת את ‪ hM i #0k‬תוך )‪ r (n‬צעדים‪ ,‬אז ‪/ L‬‬
‫אם ‪ M‬דוחה את ‪ hM i #0k‬תוך )‪ r (n‬צעדים‪ ,‬אז ‪ hM i #0k ∈ L‬ולכן ‪ M‬צריכה לקבל אותו ‪ -‬סתירה‪.‬‬
‫כלומר בכל מקרה אנחנו מגיעים לסתירה‪ ,‬ולכן לא קיימת ‪ M‬כזו‪ ,‬וסיימנו את ההוכחה‪.‬‬
‫משפט ‪ .26.1‬יהיו ‪ .1 ≤ ε1 < ε2‬אזי ) ‪.TIME (nε1 ) ⊊ TIME (nε2‬‬
‫הוכחה‪ .‬נסתכל על ‪ .t (n) = nε2‬מהיות ‪ 1 < ε2‬נובע )‪ .t (n) = Ω (n log n‬מתקיים‬
‫‬
‫‪nε 2‬‬
‫) ‪log(nε2‬‬
‫‬
‫‪ nε1 = o‬ולכן ממשפט‬
‫ההיררכיה נובע שיש שפה ב‪ TIME (nε2 )-‬שאינה ב‪.TIME (nε1 )-‬‬
‫משפט ‪.P ⊊ EXP .26.2‬‬
‫‬
‫‪2n‬‬
‫) ‪log(2n‬‬
‫‬
‫‬
‫‪2n‬‬
‫‪n‬‬
‫הוכחה‪ .‬נסמן ‪ .t (n) = 2n‬לכל ‪ k ∈ N‬מתקיים ) ‪ nk = O (2n‬ו‪-‬‬
‫‪n‬‬
‫∈ ‪.L‬‬
‫שפה ‪ L‬שניתן להכריע בזמן ‪ t (n) = 2n‬אך לא בזמן ‪ ,o 2n‬ולכן ‪ L ∈ EXP‬אך ‪/ P‬‬
‫‪26.2‬‬
‫‪=o‬‬
‫‪ .nk = o‬לכן ממשפט ההיררכיה יש‬
‫משפט ההירככיה במקום‬
‫משפט ההיררכיה במקום דומה למשפט ההיררכיה בזמן‪ ,‬רק שהוא נראה ”נקי יותר“ )אין חלוקה ב‪.(log-‬‬
‫הגדרה ‪ .26.2‬תהי ‪ s : N → N‬כך ש‪.s (n) = Ω (log n)-‬‬
‫נאמר כי ‪ s‬היא חשיבה‪/‬ניתנת לבנייה במקום‬
‫‪n‬‬
‫)‪ (Space Constructible‬אם יש מ“ט בעלת שלושה סרטים שמקבלת כקלט את ‪ n) 1‬באונארית( ומחשבת את הייצוג‬
‫הבינארי של )‪ s (n‬בסיבוכיות זכרון ))‪.O (s (n‬‬
‫‪123‬‬
‫‪26‬‬
‫תרגול ‪ - 13‬משפטי ההירככיה‬
‫‪26.2‬‬
‫שבוע ‪14‬‬
‫משפט ההירככיה במקום‬
‫טענה ‪ .26.2‬קיימת מ“ט ‪ S‬שבהינתן ‪ hM, w, s, ti‬כקלט‪ S ,‬מחשבת את הקונפ’ המתקבלת מהרצת ‪ M‬על ‪ w‬למשך ‪ t‬צעדים‪,‬‬
‫תוך ההנחה ש‪ M -‬משתמשת בלכל היותר ‪ s‬תאים )אם ‪ M‬משתמשת ביותר אז ‪ S‬תחזיר ‪ ,(False‬והיא עושה זאת תוך‬
‫שימוש ב‪ O (log |w| + s · |hM i| · log t)-‬תאים‪.‬‬
‫הוכחה‪ .‬כדי לסמלץ את ‪ M‬אנחנו צריכים את המשתנים הבאים‪:‬‬
‫‪ .1‬משתנה למצב הנוכחי‪ :‬יש |‪ |Q‬מצבים ב‪ M -‬ולכן לשמור מספר שמייצג מצב ב‪ Q-‬דורש |‪ log |Q‬תאים‪.‬‬
‫‪ .2‬משתנה למיקום הראש על גבי הסרט הקלט‪ :‬אורך הסרט הוא |‪ |w‬לכן נצטרך |‪ log |w‬תאים‪.‬‬
‫‪ .3‬מונה צעדים מ‪ 0-‬עד ‪ :t‬דורש ‪ log t‬תאים‪.‬‬
‫‪ .4‬הסרט של ‪ :M‬צריך לשמור ‪ s‬תאים‪ ,‬כל תא באורך |‪ log |Γ‬לכל היותר‪ ,‬לכן סה“כ צריך |‪ s log |Γ‬תאים‪.‬‬
‫היות ש‪ |Γ| , |Q| ≤ |hM i|-‬סה“כ אנחנו צריכים )‪ O (log |w| + s · |hM i| · log t‬תאים בשביל הסימלוץ‪.‬‬
‫לא נפרט על האופן המדויק בו הסמלוץ מתבצע‪ ,‬אך אלה פרטים שלא מסובך להשלים‪.‬‬
‫משפט ההיררכיה במקום‬
‫משפט‪ .‬לכל פונקציה ‪ s‬שניתנת לבנייה במקום‪ ,‬קיימת שפה ‪ L‬שניתנת להכרעה במקום ))‪ O (s (n‬אך לא בזמן‬
‫))‪.o (s (n‬‬
‫הוכחה‪ .‬נגדיר את השפה‬
‫)‬
‫‪ M‬לא מקבלת את ‪ hM i #0k‬תוך שימוש ב‪-‬‬
‫)‪s(n‬‬
‫‪m‬‬
‫תאים לכל היותר‬
‫כאשר |‪n = hM i #0k , m = |hM i‬‬
‫(‬
‫‪hM i #0k‬‬
‫=‪L‬‬
‫ומכאן ההוכחה דומה מאוד להוכחה של משפט ההירככיה בזמן‪.‬‬
‫משפט ‪ L ⊊ SPACE (n) .26.3‬ולכן גם ‪L ⊊ PSPACE‬‬
‫הוכחה‪ .‬נבחר ‪.s (n) = n‬‬
‫ממשפט ההירככיה במקום‪ ,‬יש שפה שניתן להכריע במקום ‪ n‬אך לא במקום )‪.o (n‬‬
‫בגלל‬
‫ש‪ SPACE (n) ⊆ PSPACE-‬נובע ש‪.L ⊊ PSPACE-‬‬
‫דוגמאות לשפות ב‪NLC-‬‬
‫הגדרה ‪ .26.3‬נגדיר‬
‫}‪ G‬הוא גרף קשירות חזקה מכוון | ‪SCC = {hGi‬‬
‫}‪ G‬הוא גרף מכוון בעל שני רכיבי קשירות | ‪2SCC = {hGi‬‬
‫טענה ‪.SCC ∈ NLC .26.3‬‬
‫הוכחה‪ .‬ניזכר כי ‪ .PATH ∈ NLC‬תחילה עלינו להראות ש‪ .SCC ∈ NL-‬נוכל לעשות זאת בשתי דרכים‪:‬‬
‫ˆ מכך ש‪) NL = coNL-‬ממשפט אימרמן( מספיק להראות ‪ .SCC ∈ NL‬נוכל לבחור באופן א“ד זוג קודקודים ‪s, t ∈ V‬‬
‫ולהריץ מכונה שפותרת את ‪ PATH‬על ‪.hG, s, ti‬‬
‫‪124‬‬
‫‪26‬‬
‫תרגול ‪ - 13‬משפטי ההירככיה‬
‫שבוע ‪14‬‬
‫‪26.2‬‬
‫משפט ההירככיה במקום‬
‫ˆ לחלופין‪ ,‬אפשר להראות ישירות ש‪ .SCC ∈ NL-‬נוכל לבנות מ“ט שעוברת על כל הזוגות ‪ u, v ∈ V‬ובודקת האם‬
‫‪ - hG, u, vi ∈ PATH‬אם לא‪ ,‬נדחה‪ ,‬ואם כן נעבור לזוג הבא‪ .‬אם ניחשנו בהצלחה מסלול לכל זוג‪ ,‬אז נקבל את‬
‫המילה‪.‬‬
‫עתה‪ ,‬נראה ש‪ .SCC ∈ NLH-‬נראה ‪ .PATH ≤logspace SCC‬בהינתן ‪ ,hG, s, ti‬הרדוקציה שלנו תבנה גרף ‪ G′‬שמתקבל מ‪G-‬‬
‫ע“י הוספת צלעות כך של‪ s-‬נכנסת צלע מכל קודקוד אחר בגרף ומ‪ t-‬יוצאת צלע לכל קודקוד‪.‬‬
‫נכונות‪ :‬בכיוון האחד‪ ,‬נשים לב שאם יש מסלול ‪ π‬מ‪ s-‬ל‪ t-‬ב‪ ,G-‬אז לכל שני קודקודים ‪ u, v ∈ G′‬יש מסלול ‪.u → s → t → v‬‬
‫בכיוון השני‪ ,‬נניח שאין מסלול בין ‪ s‬ל‪ t-‬ב‪ .G-‬זה אומר שהם לא קשירים ב‪) G′ -‬קרי‪ ,‬אין מסלול ביניהם(‪ ,‬שכן כל הצלעות‬
‫שהוספנו נכנסו ל‪ s-‬ויצאו מ‪ ,t-‬ולכן ‪ G′‬לא גרף קשירות חזקה‪.‬‬
‫חישוביות‪ :‬לסיום‪ ,‬נשים לב שכדי להוסיף את הצלעות‪ ,‬אנחנו עוברים על כל זוגות הקודקודים ואנחנו צריכים רק שטח‬
‫לוגריתמי כדי לעבוד על זוג קודקודים אחד בכל רגע נתון‪.‬‬
‫טענה ‪.2SCC ∈ NLC .26.4‬‬
‫הוכחה‪ .‬תחילה עלינו להראות ש‪ .2SCC ∈ NL-‬נוכל לעשות זאת באמצעות מ“ט שכל פעם בוחרת באופן א“ד זוג קודקודים‬
‫‪ ,u, v ∈ V‬שהם יהיו הנציגים של שני רכיבי הקשירות‪ .‬נריץ מ“ט שבודקת האם ‪ .hG, u, vi ∈ PATH‬אם היא מקבלת ‪-‬‬
‫נמשיך‪ ,‬ואחרת ‪ -‬נדחה‪.‬‬
‫נשאר לוודא שיש לכל היותר שני רכיבים‪ .‬לכל ‪ w ∈ V‬נבדוק שיש מסלול מ‪ w-‬ל‪ u-‬ומ‪ u-‬ל‪ .w-‬אם כן‪ ,‬נמשיך ל‪ w-‬הבא‪.‬‬
‫אחרת‪ ,‬נבדוק את אותו הדבר עבור ‪ .v‬אם שניהם דחו‪ ,‬נדחה )זה אומר ש‪ w-‬כנראה שייך לרכיב קשירות שלישי(‪.‬‬
‫עתה נראה ש‪ .2SCC ∈ NLH-‬נראה ‪ .SCC ≤logspace 2SCC‬הרדוקציה תעבוד כך‪ :‬בהינתן ‪ hGi‬הרדוקציה תחזיר ‪ hG′ i‬כאשר‬
‫‪ G′‬מתקבל מ‪ G-‬ע“י הוספת קודקוד מבודד‪ .‬כך‪ ,‬אם ‪ G‬קשיר כולו‪ ,‬אז ל‪ G′ -‬יש שני רכיבי קשירות ומעלה‪ ,‬ואם אינו‬
‫קשיר אז יש ל‪ G′ -‬לפחות שלושה‪.‬‬
‫כמו קודם‪ ,‬קל לראות שבנייה זו משתמשת בשטח לוגריתמי‬
‫‪125‬‬
‫‪27‬‬
‫הגדרות‬
‫חלק ‪VI‬‬
‫רשימת הגדרות ומשפטים‬
‫‪27‬‬
‫הגדרות‬
‫מודלים חישוביים‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫הגדרה‪ (1.1) .‬אלפבית ‪) Σ‬א“ב( הוא קבוצה סופית של אותיות )אובייקטים(‪.‬‬
‫הגדרה‪ (1.2) .‬מילה בא“ב ‪ Σ‬היא סדרה סופית של אותיות שנסמנה ב‪ w = w1 w2 · · · wn -‬כך שכל אות ב‪ .Σ-‬המילה הריקה‬
‫מסומנת ב‪ ε-‬ולא מכילה אף אות‪.‬‬
‫‪S‬‬
‫נסמן ב‪ Σ∗ -‬את כל המילים מכל אורך מעל ‪ ,Σ‬כלומר ‪ ,Σ∗ = {ε} ∪ · Σi‬כאשר ‪ Σi‬היא קבוצת כל המילים מאורך ‪.i‬‬
‫‪i∈N‬‬
‫הגדרה‪ (1.3) .‬שפה מעל א“ב ‪ Σ‬היא קבוצה של מילים ∗‪.L ⊆ Σ‬‬
‫הגדרה‪ (1.4) .‬אוטומט )‪ (Automaton‬סופי דטרמינסטי )‪ (DFA‬הוא חמישיה ‪ A = hQ, Σ, δ, q0 , F i‬כאשר‪:‬‬
‫ˆ ‪ Q‬קבוצת המצבים )קבוצה סופית(‪.‬‬
‫ˆ ‪ Σ‬הא“ב‪.‬‬
‫ˆ ‪ δ : Q × Σ → Q‬פונקציית מעברים‪.‬‬
‫ˆ ‪ q0‬מצב התחלתי‪.‬‬
‫ˆ ‪ F‬קבוצת המצבים המקבלים‪.‬‬
‫הגדרה‪ (1.5) .‬ריצה של אוטומט ‪ A‬על מילה ‪ w = w1 w2 . . . wn‬מעל ‪ Σ‬זו סדרה של מצבים ‪ r = r0 , r1 , . . . , rn‬כך שמתקיים‪:‬‬
‫‪ - r0 = q0 .1‬הריצה תמיד מתחילה ב‪.q0 -‬‬
‫‪ .2‬לכל ‪ i ≥ 0‬מתקיים ) ‪ - ri+1 = δ (ri , wi+1‬הריצה מכבדת את ‪.δ‬‬
‫הגדרה‪ (1.6) .‬יהי אוטומט ‪ A‬מילה ‪ w‬וריצה ‪ r‬של ‪ w‬על ‪.A‬‬
‫∈ ‪ rn‬נאמר כי ‪ r‬דוחה )‪.(Rejecting‬‬
‫ˆ ‪ r‬ריצה מקבלת )‪ (Accepting‬אם ‪ ,rn ∈ F‬אחרת כאשר ‪/ F‬‬
‫ˆ ‪ A‬מקבל את ‪ w‬אם הריצה )יש ריצה אחת( של ‪ A‬על ‪ w‬היא מקבלת‪.‬‬
‫ˆ השפה של האוטומט ‪ A‬מוגדרת להיות } הריצה של ‪ A‬על ‪ w‬מקבלת| ∗‪.L (A) = {w ∈ Σ‬‬
‫הגדרה‪ (1.7) .‬יהי ‪ A = hQ, Σ, δ, q0 , F i‬אוטומט‪ .‬נגדיר ‪ δ ∗ : Q × Σ∗ → Q‬באופן הבא‪:‬‬
‫‪w=ε‬‬
‫‪‬‬
‫‪q‬‬
‫‪w = w′ · σ, w′ ∈ Σ∗ , σ ∈ Σ‬‬
‫)‪δ (δ ∗ (q, w′ ) , σ‬‬
‫‪126‬‬
‫= )‪δ ∗ (q, w‬‬
‫‪27‬‬
‫הגדרות‬
‫הגדרה‪ (1.8) .‬נסמן ב‪ REG-‬את מחלקת השפות הרגולריות והיא מוגדרת ע“י‬
‫}קיים ‪ A DFA‬עבורו ‪REG = {L ⊆ Σ∗ | L (A) = L‬‬
‫נאמר כי שפה ‪ L‬היא רגולרית אם ‪. L ∈ REG‬‬
‫הגדרה‪) (1.9) .‬פעולות על שפות( תהי ‪ Σ‬א“ב ותהיינה ∗‪ L, L1 , L2 ⊆ Σ‬שפות‪ .‬נגדיר את הפעולות הבאות‪:‬‬
‫‪ .1‬איחוד‪.L1 ∪ L2 = {w | w ∈ L1 ∨ w ∈ L2 } :‬‬
‫‪ .2‬שרשור )‪.L1 · L2 = {w1 · w2 | w1 ∈ L1 , w2 ∈ L2 } :(concatination‬‬
‫‪ .3‬כוכב )‪∀i ∈ [k] , wi ∈ L} :(kleene-star‬‬
‫‪.L∗ = {w1 · . . . · wk | k ≥ 0‬‬
‫אוטומט סופי אי‪-‬דטרמינסטי )‪(NFA‬‬
‫הגדרה‪ (2.1) .‬אוטומט סופי אי‪-‬דטרמינסטי )‪ (NFA‬הוא חמישיה ‪ A = hQ, Σ, δ, Q0 , F i‬כאשר‪:‬‬
‫ˆ ‪ Q‬קבוצת המצבים )קבוצה סופית(‪.‬‬
‫ˆ ‪ Σ‬הא“ב‪.‬‬
‫ˆ ‪ δ : Q × (Σ ∪ {ε}) → 2Q‬פונק’ מעברים‪.‬‬
‫ˆ ‪ Q0 ⊆ Q‬קבוצת המצבים ההתחלתיים‪.‬‬
‫ˆ ‪ F‬קבוצת המצבים המקבלים‪.‬‬
‫הגדרה‪ (2.2) .‬ריצה של ‪ A NFA‬על מילה ‪ w = w1 w2 . . . wn‬מעל ‪ Σ‬זו סדרה של מצבים ‪ ,r = r0 , r1 , . . . , rm‬עבור ‪,m ≥ n‬‬
‫כך שניתן לכתוב את ‪ w‬כ‪ ,(xi ∈ Σ ∪ {ε}) w′ = x1 x2 . . . xm -‬וכך שמתקיים‪:‬‬
‫‪ - r0 ∈ Q0 .1‬הריצה מתחילה ממצב התחלתי כלשהו‪.‬‬
‫‪ .2‬לכל ‪ i ≥ 0‬מתקיים ) ‪.ri+1 ∈ δ (ri , xi+1‬‬
‫הגדרה‪ (2.3) .‬יהיו ‪ ,A NFA‬מילה ‪ w‬וריצה ‪ r‬של ‪ w‬על ‪ .A‬נאמר כי‪:‬‬
‫ˆ ‪ r‬ריצה מקבלת אם ‪.rm ∈ F‬‬
‫ˆ ‪ A‬מקבל את ‪ w‬אם קיימת ריצה מקבלת של ‪ A‬על ‪.w‬‬
‫ˆ השפה של ‪ A‬היא } ‪ A‬מקבלת את ‪.L (A) = {w ∈ Σ∗ |w‬‬
‫משפט מייהיל‪-‬נרוד‬
‫הגדרה‪ (4.1) .‬לכל שפה ∗‪ L ⊆ Σ‬נגדיר יחס ∗‪ ∼L ⊆ Σ∗ × Σ‬כך שלכל ∗‪ x, y ∈ Σ‬מתקיים ‪ x ∼L y‬אם“ם לכל מילה ∗‪z ∈ Σ‬‬
‫מתקיים ‪ x · z ∈ L‬אם“ם ‪ .y · z ∈ L‬נסמן ב‪ [w]-‬את מחלקת השקילות של ‪ w‬ב‪ .L-‬יחד זה נקרא יחס מייהיל‪-‬נרוד )‪.(MN‬‬
‫‪127‬‬
‫‪27‬‬
‫הגדרות‬
‫שפות חסרות הקשר‬
‫הגדרה‪ (5.1) .‬דקדוק חסר הקשר )‪ (CGF‬הוא רביעיה ‪ G = hV, Σ, R, Si‬כאשר‪:‬‬
‫‪ - V .1‬קבוצה סופית של משתנים‪.‬‬
‫‪ - Σ .2‬קבוצה סופית של טרמינלים‪) .‬א“ב(‬
‫‪ - R .3‬קבוצה של חוקי גזירה מהצורה‬
‫∗‬
‫)‪.V → (V ∪ Σ‬‬
‫‪ - S .4‬משתנה התחלתי‪.‬‬
‫∗‬
‫הגדרה‪ (5.2) .‬אם )‪ w, u, v ∈ (V ∪ Σ‬ו‪ A → w-‬חוק בדקדוק‪ ,‬אז נגיד ש‪ uAv-‬מייצר‪/‬גוזר את ‪ uwv‬ונסמן ‪.uAv ⇒ uwv‬‬
‫∗‬
‫∗‬
‫∗‬
‫אם )‪ u, w ∈ (V ∪ Σ‬נגיד ש‪ u ⇒ w-‬אם קיימים ‪ k ≥ 1‬ו‪ u1 , . . . , uk ∈ (V ∪ Σ) -‬עבורם ‪.u = u1 ⇒ u2 ⇒ . . . ⇒ uk = w‬‬
‫‪n‬‬
‫‪o‬‬
‫∗‬
‫הגדרה‪ (5.3) .‬השפה של ‪ G‬היא ‪.L (G) = w ∈ Σ∗ | S ⇒ w‬‬
‫הגדרה‪ (5.4) .‬שפה ‪ L‬תקרא שפה חסרת הקשר אם קיים ‪ G CFG‬כך ש‪ .L (G) = L-‬נסמן את קבוצת כל השפות חסרות‬
‫ההקשר בתור ‪.CFL‬‬
‫חישוביות‬
‫מכונת טיורינג‬
‫הגדרה‪ (6.1) .‬מכונת טיורינג )‪ (Turing Machine‬היא שביעיה ‪ M = hQ, Σ, Γ, δ, q0 , qacc , qrej i‬כאשר‪:‬‬
‫ˆ ‪ Q‬קבוצת המצבים הפנימיים )קבוצה סופית(‪.‬‬
‫∈‬
‫ˆ ‪ Σ‬א“ב הקלט )‪/ Σ‬‬
‫(‪.‬‬
‫ˆ ‪ Γ‬א“ב העבודה )‪∈ Γ, Σ ⊆ Γ‬‬
‫(‪ .‬אלה אותיות שאפשר לכתוב על הסרט‪.‬‬
‫ˆ )}→ ‪ - δ : Q × Γ → (Q × Γ × {←,‬פונקציית מעברים‪.‬‬
‫ˆ ‪ q0‬מצב התחלתי יחיד‪.‬‬
‫ˆ ‪ qacc‬מצב מקבל יחיד‪ .‬כאשר המכונה מגיע למצב זה היא עוצרת‪.‬‬
‫ˆ ‪ qrej‬מצב דוחה יחיד‪ .‬כאשר המכונה מגיע למצב זה היא עוצרת‪.‬‬
‫הגדרה‪ (6.2) .‬תהי ‪ M‬מכונת טיורינג )מ“ט(‪ .‬הקונפיגורציה של ‪ M‬בכל רגע נתון היא תיאור מלא של המצב של המכונה‪:‬‬
‫המצב הפנימי הנוכחי‪ ,‬מיקום הראש ותוכן הסרט‪ .‬אם בסרט רשומה המילה ∗‪ w = uv ∈ Γ‬והראש נמצא על האות הראשונה‬
‫של ‪ v‬והוא המצב ‪ ,q‬נרשום את הקונפיגורציה הנוכחית של ‪ M‬בתור ‪.uqv‬‬
‫‪q‬‬
‫↓‬
‫‪v‬‬
‫‪...‬‬
‫‪u‬‬
‫הגדרה‪ (6.3) .‬תהי ‪ M‬מ“ט‪ .‬הקונפיגורציה ההתחלתית של ‪ M‬על מילה ∗‪ w ∈ Σ‬היא ‪.εq0 w = q0 w‬‬
‫קונפיגורציה מקבלת היא קונפ’ שהמצב שלה הוא ‪ qacc‬וקונפיגורציה דוחה היא קונפ’ שהמצב שלה הוא ‪ .qrej‬לכל אחת‬
‫משתי קונפיגורציות אלה‪ ,‬המקבלת והדוחה‪ ,‬נקרא קונפיגורציה סופית‪/‬עוצרת‪.‬‬
‫‪128‬‬
‫‪27‬‬
‫הגדרות‬
‫הגדרה‪ (6.4) .‬בהינתן קונפ’ ‪ uaqbv‬כאשר ‪ ,u, v ∈ Γ∗ , q ∈ Q, a, b ∈ Γ‬אם ‪ δ (q, b) = hq ′ , c, →i‬אז הקונפ’ העוקבת היא‬
‫‪ uacq ′ v‬ונסמן ‪ .uaqbv → uacq ′ v‬אחרת‪ ,‬אם ‪ ,δ (q, b) = hq ′ , c, ←i‬אז הקונפ’ העוקבת היא ‪ uq ′ acv‬ונסמן ‪.uaqbv → uq ′ acv‬‬
‫במקרה שהקונפיגורציה היא ‪ qbv‬ו‪ ,δ (q, b) = hq ′ , c, ←i-‬אז נגדיר את הקונפיגורציה העוקבת להיות ‪ q ′ cv‬כי אין לנו איך‬
‫להתקדם עוד שמאלה‪.‬‬
‫אם שתי קונפיגורציות הן עוקבות‪ ,‬נאמר שהראשונה גוררת )‪ (yields‬את השנייה‪.‬‬
‫הגדרה‪ (6.5) .‬תהי ‪ M‬מ“ט‪ .‬ריצה של ‪ M‬על ∗‪ w ∈ Σ‬היא סדרה של קונפ’ ‪ c0 , c1 , c2 , . . .‬כך ש‪ c0 -‬היא הקונפ’ ההתחלתית‬
‫של ‪ M‬על ‪ ci+1 ,w‬עוקבת ל‪ ,ci -‬ובנוסף או שהסדרה סופית ומסתיימת בקונפ’ עוצרת או שאינה סופית‪.‬‬
‫הגדרה‪ (6.6) .‬תהי ‪ M‬מ“ט‪ .‬נאמר כי ‪ M‬מקבלת את ∗‪ w ∈ Σ‬אם הריצה של ‪ M‬על ‪ w‬שמגיעה לקונפ’ מקבלת‪ .‬אחרת‬
‫)אם מגיעים לקונפ’ דוחה או שהריצה לא מסתיימת אף פעם( נאמר ש‪ M -‬לא מקבלת את ‪ .w‬נסמן ב‪ L (M )-‬את קבוצת‬
‫המילים ∗‪ w ∈ Σ‬ש‪ M -‬מקבלת‬
‫הגדרה‪ (6.7) .‬תהי ‪ M‬מ“ט‪ .‬נאמר ש‪ M -‬מזהה את ‪ L‬אם ‪.L (M ) = L‬‬
‫הגדרה‪ (6.8) .‬תהי ‪ M‬מ“ט ותהי ‪ L‬שפה‪ .‬נאמר ש‪ M -‬מכריעה )‪ (decides‬את ‪ L‬אם ‪ M‬מזהה את ‪ L‬ובנוסף היא עוצרת‬
‫על כל קלט‪.‬‬
‫הגדרה‪ (6.9) .‬נסמן ב‪ RE-‬את מחלקת השפות הניתנות לזיהוי ע“י מכונת טיורינג ונסמן ב‪ R-‬את מחלקת השפות שניתנות‬
‫להכרעה ע“י מכונת טיורינג‪.‬‬
‫הגדרה‪ (6.10) .‬נגדיר‬
‫‬
‫‪.coRE = L | L ∈ RE‬‬
‫ספרנים )‪(Enumerators‬‬
‫הגדרה‪ (6.11) .‬ספרן )‪ (Enumerator‬הוא מ“ט עם מדפסת‪ ,‬שלא מקבלת קלט‪ .‬כלומר‪ ,‬יש לה סרט פלט‪ ,‬שם היא מדפיסה‬
‫מילים‪.‬‬
‫הגדרה‪ (6.12) .‬שפת הספרן מוגדרת על ידי כל המילים שהוא מדפיסת כלומר‬
‫}‪ E‬בסופו של דבר מדפיסה את ‪L (E) = {w : w‬‬
‫}קיים מספר ‪ t‬של צעדים כך ש‪ E-‬מדפיס את ‪ w‬לאחר ‪ t‬צעדים ‪= {w :‬‬
‫אי‪-‬כרעיות ובעיית העצירה‬
‫)‬
‫הגדרה‪ (6.13) .‬נגדיר את השפה‬
‫‪ M‬היא מ״ט‬
‫) ‪w ∈ L (M‬‬
‫(‬
‫‪hM, wi :‬‬
‫= ‪.ATM‬‬
‫הגדרה‪ (6.14) .‬נגדיר את השפה } ‪ M‬עוצרת על ‪.HALTTM = {hM, wi | w‬‬
‫רדוקציות‬
‫הגדרה‪ (7.1) .‬נאמר כי ∗‪ f : Σ∗ → Σ‬היא פונק’ ניתנת לחישוב )‪ ,(computable − function‬אם קיימת מ“ט ‪ Mf‬שבהינתן‬
‫קלט ‪ x‬עוצרת עם )‪ f (x‬על הסרט‪.‬‬
‫הגדרה‪ (7.2) .‬עבור שתי שפות ∗‪ ,A, B ⊆ Σ‬נאמר ש‪ A-‬ניתנת לרידוקציית מיפוי ל‪ ,(A is mapping reducible to B) B-‬ונסמן‬
‫‪ , A ≤m B‬אם קיימת פנ“ל ∗‪ f : Σ∗ → Σ‬כך שלכל ∗‪ w ∈ Σ‬מתקיים ‪. w ∈ A ⇐⇒ f (w) ∈ B‬‬
‫הגדרה‪ (7.3) .‬נגדיר את השפה } ‪ M‬עוצר על ‪.HALTεTM = {hM i | ε‬‬
‫הגדרה‪ (7.4) .‬נגדיר את השפה }‪.REGTM = {hM i | L (M ) ∈ REG‬‬
‫‪129‬‬
‫‪27‬‬
‫הגדרות‬
‫סיבוכיות‬
‫מחלקות סיבוכיות בזמן ‪P, NP, EXP -‬‬
‫הגדרה‪ (8.1) .‬תהי ‪ .t : N → N‬נגדיר מחלקה‬
‫‪‬‬
‫‪ ‬קיימת מ”ט דטרמיניסטית חד‪-‬סרטית‬
‫‪‬‬
‫שמכריעה את ‪ L‬ועוצרת על כל‬
‫‪‬‬
‫‪‬‬
‫קלט ‪ w‬תוך ))|‪ O (t (|w‬צעדים‬
‫∗‪L ⊆ Σ‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫= ))‪TIME (t (n‬‬
‫הגדרה‪ (8.2) .‬נגדיר מחלקה ‪ ,PTIME‬או בקיצור ‪ ,P‬ע“י‬
‫‬
‫‪TIME ni‬‬
‫[‬
‫= ‪PTIME‬‬
‫‪i≥0‬‬
‫הגדרה‪ (8.3) .‬נגדיר מחלקה ‪ ,EXPTIME‬או בקיצור ‪ ,EXP‬ע“י‬
‫‪ i‬‬
‫‪TIME 2n‬‬
‫[‬
‫= ‪EXPTIME‬‬
‫‪i≥0‬‬
‫הגדרה‪ (8.4) .‬מכונת טיורינג אי‪-‬דטרמיניסטית היא שביעיה ‪ M = hQ, Σ, Γ, δ, q0 , qacc , qrej i‬המוגדרת באותו אופן כמו במ“ט‬
‫רגילה‪ ,‬רק ש‪ δ-‬יכולה להעביר אותנו לכמה קונפיגורציות שונות בכל צעד‪ ,‬כלומר }‪.δ : Q × Γ → 2Q×Γ×{R,L‬‬
‫הגדרה‪ (8.5) .‬נאמר שמ“ט אי‪-‬דטרמיניסטית )א“ד( ‪ M‬מקבלת מילה ‪ w‬אם יש ריצה של ‪ M‬המסתיימת ב‪ .qacc -‬אחרת‪,‬‬
‫)כלומר כל הריצות דוחות או לא עוצרות( נאמר ש‪ M -‬דוחה את ‪ .w‬לסיום נאמר ש‪ M -‬מכריעה שפה ‪ L‬אם ‪L (M ) = L‬‬
‫ובנוסף ‪ M‬עוצרת על כל מילה ‪ w‬בכל הריצות האפשריות שלה‪.‬‬
‫הגדרה‪ (8.6) .‬זמן הריצה של מ“ט אי‪-‬דטר’ ‪ M‬על מילה ‪ w‬מסומן ב‪ t (|w|)-‬והוא מוגדר להיות זמן הריצה של הריצה הכי‬
‫ארוכה מבין כל הריצות האפשריות של ‪ M‬על ‪.w‬‬
‫הגדרה‪ (8.7) .‬תהי ‪ .t : N → N‬נגדיר מחלקה‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫קיימת מ”ט א”ד חד‪-‬סרטית‬
‫∗‪L ⊆ Σ‬‬
‫שמכריעה את ‪ L‬ועוצרת על כל‬
‫קלט ‪ w‬תוך ))|‪ O (t (|w‬צעדים בכל ריצה אפשרית‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הגדרה‪ (8.8) .‬נגדיר מחלקה ‪ ,NPTIME‬או בקיצור ‪ ,NP‬ע“י‬
‫‬
‫‪NTIME ni‬‬
‫[‬
‫= ‪NPTIME‬‬
‫‪i≥0‬‬
‫הגדרה‪ (8.9) .‬מוודא לשפה ‪ L‬הוא מ“ט דטר’ ‪ V‬כך שעבורה מתקיים‬
‫}קיים ‪ c‬כך ש‪ V -‬מקבלת את )‪L = {w | (w, c‬‬
‫הערך ‪ c‬נקרא סרטיפיקט‪/‬עד‪.‬‬
‫‪130‬‬
‫= ))‪NTIME (t (n‬‬
‫‪27‬‬
‫הגדרות‬
‫שלמות ב‪(NP − Completeness) NP-‬‬
‫הגדרה‪ (9.1) .‬שפה ‪ L‬תקרא ‪-NP‬שלמה אם‪:‬‬
‫‪.L ∈ NP .1‬‬
‫‪ .2‬אם ‪ L ∈ P‬אזי ‪.P = NP‬‬
‫הגדרה‪ (9.2) .‬משתנה בוליאני‪/‬פסוקי הוא משתנה שמקבל ערכים מ‪) {T, F}-‬אמת‪/‬שקר(‪ .‬קבוצת משתנים בוליאניים תסומן‬
‫בדר“כ בתור } ‪.X = {x1 , . . . , xn‬‬
‫נוסחה בוליאנית‪/‬פסוקית מוגדרת באופן רקורסיבי‪:‬‬
‫‪ .1‬כל משתנה בוליאני הוא נוסחה בוליאנית‪.‬‬
‫‪ .2‬אם ‪ φ1 , φ2‬נוסחאות בוליאניות אז גם ‪.¬φ1 , φ1 ∧ φ2 , φ1 ∨ φ2‬‬
‫בהינתן השמה }‪ f : X → {T, F‬למשתני הנוסחה‪ ,‬ניתן לחשב את ערך הנוסחה )אמת‪/‬שקר(‪ .‬נאמר שנוסחה ‪ Θ‬ספיקה אם‬
‫יש השמה שמספקת אותה )כלומר השמה כך ש‪ Θ-‬תקבל את הערך ”אמת“(‪.‬‬
‫הגדרה‪ (9.3) .‬נאמר שנוסחה ‪ Θ‬היא ב‪ (Conjunctive Normal Form) CNF-‬אם ‪ Θ‬היא מהצורה‬
‫‬
‫‬
‫‪1‬‬
‫‪2‬‬
‫‪km‬‬
‫‪l11 ∨ l12 . . . ∨ l1k1 ∧ . . . ∧ lm‬‬
‫‪∨ lm‬‬
‫‪. . . ∨ lm‬‬
‫‬
‫כך ש‪ lij -‬היא ליטרל‪ ,‬כלומר } ‪.lij ∈ {x1 , . . . , xn , x1 , . . . , xn‬‬
‫הגדרה‪ (9.4) .‬נגדיר את השפה }‪ Θ‬נוסחה ספיקה ב‪.SAT = {hΘi | CNF -‬‬
‫רדוקציות פולינומיאליות‬
‫הגדרה‪ f : Σ∗ → Σ∗ (10.1) .‬היא פונקציה ניתנת לחישוב בזמן פולינומיאלי אם קיימת מ״ט ‪ Mf‬שעל קלט ‪ x‬עוצרת תוך‬
‫מספר פולינומיאלי של צעדים עם )‪ f (x‬על הסרט‪.‬‬
‫הגדרה‪ (10.2) .‬עבור ∗‪ A, B ⊆ Σ‬נאמר ש‪ A-‬ניתנת לרדוקציה פולינומיאלית ל‪ B-‬ונסמן ‪ A ≤p B‬אם קיימת ∗‪f : Σ∗ → Σ‬‬
‫פונק ‪ ′‬ניתנת לחישוב בזמן פולינומיאלי‪ ,‬כך ש‪.w ∈ A ⇐⇒ f (w) ∈ B-‬‬
‫הגדרה‪ (10.3) .‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-NP‬קשה )‪ (NPH‬אם לכל שפה ‪ L′ ∈ NP‬מתקיים ‪.L′ ≤p L‬‬
‫הגדרה‪ (10.4) .‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-NP‬שלמה )‪ (NPC‬אם‪:‬‬
‫‪) .1‬חסם עליון( ‪.L ∈ NP‬‬
‫‪) .2‬חסם תחתון( ‪.L ∈ NPH‬‬
‫משפט קוק‪-‬לוין‬
‫הגדרה‪ Θ} (10.5) .‬נוסחא ספיקה ב‪.3SAT = {hΘi | 3CNF-‬‬
‫הגדרה‪ (10.6) .‬יהי ‪ G = hV, Ei‬גרף‪ .‬נאמר כי ‪ S ⊆ V‬היא ‪-k‬קליקה )או ‪-k‬קליק( בגרף אם ‪ |S| = k‬ו‪ E (v1 , v2 )-‬לכל‬
‫‪.v1 , v2 ∈ S‬‬
‫הגדרה‪ G} (10.7) .‬גרף לא מכוון שיש בו קליקה בגודל ‪.CLIQUE = {hG, ki | k‬‬
‫‪131‬‬
‫‪27‬‬
‫הגדרות‬
‫הגדרה‪ (10.8) .‬בעיית ה‪ Subset Sum-‬מוגדרת באופן הבא‪.‬‬
‫ˆ קלט קבוצה )ייתכן עם חזרות( של מספרים טבעיים } ‪ A = {a1 , . . . , an‬ומספר יעד ‪.s ∈ N‬‬
‫ˆ פלט האם יש ‪ B ⊆ A‬כך ש‪ai -‬‬
‫‪P‬‬
‫‪ai ∈B‬‬
‫= ‪.s‬‬
‫)‬
‫נגדיר את שפת בעיית ה‪ Subset Sum-‬על ידי‬
‫‪ai = s‬‬
‫(‬
‫‪P‬‬
‫‪ai ∈B‬‬
‫‪hA, si | ∃B ⊆ A :‬‬
‫= ‪.SS‬‬
‫מחלקות סיבוכיות זכרון‬
‫הגדרה‪ (11.1) .‬תהי ‪ M‬מ“ט דטרמינסטית‪ ,‬חד סרטית‪ ,‬העוצרת על כל קלט‪ .‬סיבוכיות הזכרון של ‪ M‬היא פונקציה ‪s : N → N‬‬
‫כך שעל כל קלט באורך ‪ M ,n‬משתמשת לכל היותר ב‪ s (n)-‬תאים‪ .‬במקרה זה נאמר ש‪ M -‬רצה בשטח )‪.s (n‬‬
‫עבור מ“ט א“ד סיבוכיות הזכרון )‪ s (n‬היא כמות התאים המקסימלית ש‪ M -‬צריכה על פני כל הריצות האפשריות שלה על‬
‫מילה באורך ‪.n‬‬
‫הגדרה‪ (11.2) .‬תהי ‪ .s : N → N‬נגדיר מחלקה‬
‫‪‬‬
‫‪ ‬קיימת מ”ט דטרמיניסטית חד‪-‬סרטית‬
‫‪‬‬
‫עם סיבוכיות זכרון )‪s (n‬‬
‫‪‬‬
‫‪‬‬
‫שמכריעה את ‪L‬‬
‫‪‬‬
‫‪ ‬קיימת מ”ט אי‪-‬דטרמיניסטית חד‪-‬סרטית‬
‫‪‬‬
‫עם סיבוכיות זכרון )‪s (n‬‬
‫‪‬‬
‫‪‬‬
‫שמכריעה את ‪L‬‬
‫∗‪L ⊆ Σ‬‬
‫∗‪L ⊆ Σ‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫= ))‪SPACE (s (n‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫= ))‪NPSPACE (s (n‬‬
‫הגדרה‪ (11.3) .‬נגדיר‬
‫‬
‫‬
‫‪SPACE nk‬‬
‫[‬
‫= ‪PSPACE‬‬
‫‪k∈N‬‬
‫‪NPSPACE nk‬‬
‫[‬
‫= ‪NPSPACE‬‬
‫‪k∈N‬‬
‫הגדרה‪ (11.4) .‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-NPSPACE‬קשה )‪ (NPSPACE − H‬אם לכל שפה ‪ L′ ∈ NPSPACE‬מתקיים‬
‫‪.L′ ≤p L‬‬
‫‪′‬‬
‫‪′‬‬
‫נאמר ש‪ L-‬היא ‪-PSPACE‬קשה )‪ (PSPACE − H‬אם לכל שפה ‪ L ∈ PSPACE‬מתקיים ‪.L ≤p L‬‬
‫הגדרה‪ (11.5) .‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-PSPACE‬שלמה )‪ (PSPACE − C‬אם‪:‬‬
‫‪) .1‬חסם עליון( ‪.L ∈ PSPACE‬‬
‫‪) .2‬חסם תחתון( ‪.L ∈ PSPACE − H‬‬
‫והגדרה דומה מתקבלת עבור ‪.NPSPACE‬‬
‫‪132‬‬
‫‪27‬‬
‫הגדרות‬
‫בעיות הריקנות והאוניברסליות‬
‫הגדרה‪ (11.6) .‬נגדיר‬
‫}‪ A‬הוא ‪ NFA‬כך ש‪EMPTYNFA = {hAi : L (A) = ∅ -‬‬
‫}‪ A‬הוא ‪ NFA‬כך ש‪ALLNFA = {hAi : L (A) = Σ∗ -‬‬
‫סיבוכיות זכרון תת‪-‬לינארית‬
‫הגדרה‪ (12.1) .‬סיבוכיות הזכרון של מ“ט ‪ M‬היא פונקציה ‪ s : N → N‬כך שעל כל קלט באורך ‪ M ,n‬משתמשת לכל היותר‬
‫ב‪ s (n)-‬תאים בסרט העבודה‪.‬‬
‫הגדרה‪ (12.2) .‬נגדיר את המחלקות‬
‫)‪L = LOGSPACE = SPACE (log n‬‬
‫)‪NL = NLOGSPACE = NSPACE (log n‬‬
‫כאשר )‪ SPACE (log n) , NSPACE (log n‬מוגדרים מעל מכונות טיורינג עם שני סרטים )קלט ועבודה(‪.‬‬
‫הגדרה‪ (12.3) .‬משרן‪/‬מתמר לוגריתמי )‪ ,log − space Transducer‬או בקיצור ‪ (LST‬הוא מ“ט ‪ M‬בעלת שלושה סרטים )קלט‪,‬‬
‫עבודה ופלט( שמחשבת פונק’ בשטח לוגריתמי‪ .‬כלומר‪ M ,‬מתחילה עם מילת קלט ‪ w‬על סרט הקלט‪ ,‬ומסיימת עם )‪f (w‬‬
‫על סרט הפלט‪ ,‬כך שסרט העבודה השתמש ב‪ O (log |w|)-‬תאים‪.‬‬
‫הגדרה‪ (12.4) .‬נאמר שפונק’ ∗‪ f : Σ∗ → Σ‬היא חשיבה בשטח לוגריתמי אם קיים משרן לוגריתמי שמחשב אותה‪.‬‬
‫הגדרה‪ (12.5) .‬יהיו ∗‪ .A, B ⊆ Σ‬נאמר ש‪ A ≤logspace B-‬אם יש פונק’ חשיבה בשטח לוגריתמי ‪ f‬כך שלכל ∗‪ w ∈ Σ‬מתקיים‬
‫‪.w ∈ A ⇔ f (w) ∈ B‬‬
‫הגדרה‪ (12.6) .‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-NL‬קשה )‪ (NLH‬אם לכל שפה ‪ L′ ∈ NL‬מתקיים ‪ .L′ ≤logspace L‬הגדרה דומה‬
‫מתקבלת עבור ‪.L‬‬
‫הגדרה‪ (12.7) .‬נאמר ששפה ∗‪ L ⊆ Σ‬היא ‪-NL‬שלמה )‪ (NLC‬אם‪:‬‬
‫‪) .1‬חסם עליון( ‪.L ∈ NL‬‬
‫‪) .2‬חסם תחתון( ‪.L ∈ NLH‬‬
‫והגדרה דומה מתקבלת עבור ‪.L‬‬
‫משפטי ההירככיה )מהתרגול(‬
‫הגדרה‪ (26.1) .‬תהי ‪ t : N → N‬כך ש‪ .t (n) = Ω (n log n)-‬נאמר כי ‪ t‬היא חשיבה‪/‬ניתנת לבנייה בזמן )‪(Time Constructible‬‬
‫אם יש מ“ט שמקבלת כקלט את ‪ n) 1n‬באונארית( ומחשבת את הייצוג הבינארי של )‪ t (n‬בזמן ))‪.O (t (n‬‬
‫הגדרה‪ (26.2) .‬תהי ‪ s : N → N‬כך ש‪ .s (n) = Ω (log n)-‬נאמר כי ‪ s‬היא חשיבה‪/‬ניתנת לבנייה במקום )‪(Space Constructible‬‬
‫אם יש מ“ט בעלת שלושה סרטים שמקבלת כקלט את ‪ n) 1n‬באונארית( ומחשבת את הייצוג הבינארי של )‪ s (n‬בסיבוכיות‬
‫זכרון ))‪.O (s (n‬‬
‫‪133‬‬
‫‪ 28‬משפטים‬
‫‪28‬‬
‫משפטים‬
‫מודלים חישוביים‬
‫אוטומט סופי דטרמינסטי )‪(DFA‬‬
‫משפט‪ (1.1) .‬תהי ‪ .L ∈ REG‬אזי ‪.L = Σ∗ \L ∈ REG‬‬
‫משפט‪ (1.2) .‬תהיינה ‪ .L1 , L2 ∈ REG‬אזי ‪.L1 ∪ L2 ∈ REG‬‬
‫משפט‪ (1.3) .‬תהיינה ‪ .L1 , L2 ∈ REG‬אזי ‪.L1 ∩ L2 ∈ REG‬‬
‫משפט‪ (1.4) .‬תהיינה ‪ .L1 , L2 ∈ REG‬אזי ‪.L1 · L2 ∈ REG‬‬
‫אוטומט סופי אי‪-‬דטרמינסטי )‪(NFA‬‬
‫שקילות ‪ NFA‬ו‪DFA-‬‬
‫משפט‪ (2.1) .‬לכל ‪ A NFA‬יש ‪ A′ DFA‬כך ש‪.L (A) = L (A′ )-‬‬
‫‬
‫∗‬
‫טענה‪ (2.1) .‬נגדיר במקום ה‪-n-‬י מהסוף מופיע ‪ .∀n ∈ N, Ln = w ∈ {0, 1} | 0‬אזי קיים ‪ NFA‬עם ‪ n + 1‬מצבים‬
‫המקבל את ‪ ,Ln‬וכל ‪ DFA‬המקבל את ‪ Ln‬מכיל לפחות ‪ 2n‬מצבים‪.‬‬
‫למת הניפוח לשפות רגולריות‬
‫למת הניפוח לשפות רגולריות‬
‫משפט‪ (3.1) .‬תהי ‪ .L ∈ REG‬אזי קיים ‪) p ≥ 1‬קבוע הניפוח( כך שלכל מילה ‪ ,w ∈ L‬אם ‪ |w| ≥ p‬אז קיימת‬
‫חלוקה ‪ w = x · y · z‬כך שמתקיים‪:‬‬
‫‪.|xy| ≤ p .1‬‬
‫‪|y| > 0 .2‬‬
‫)‪.(y 6= ε‬‬
‫‪.∀i ≥ 0, xy i z ∈ L .3‬‬
‫משפט מייהיל‪-‬נרוד‬
‫משפט מייהיל‪-‬נרוד‬
‫משפט‪ (4.1) .‬תהי ∗‪ .L ⊆ Σ‬אזי ‪ L ∈ REG‬אם“ם יש ל‪ ∼L -‬מספר סופי של מחלקות שקילות‪.‬‬
‫מסקנה‪ (4) .‬תהי ‪ .L ∈ REG‬אזי כמות המצבים המינימלית של ‪ DFA‬המקבל את ‪ L‬היא מספר מחלקות השקילות ‪.∼L‬‬
‫תיאור אלגוריתם המזעור‬
‫נגדיר רקורסיבית יחס ‪:∼i‬‬
‫בסיס‪ s1 ∼0 s2 :‬אם“ם ‪.s2 ∈ F ⇐⇒ s1 ∈ F‬‬
‫צעד‪ s1 ∼i+1 s2 :‬אם“ם ‪ s1 ∼i s2‬וגם לכל ‪ σ ∈ Σ‬מתקיים )‪.δ (s1 , σ) ∼i δ (s2 , σ‬‬
‫האלגוריתם שלנו יחשב את ‪ ∼i+1‬באמצעות ‪ ∼i‬והוא יעצור כאשר ‪ ,∼i =∼i+1‬כי אז נדע שמדובר בנקודת שבת‪.‬‬
‫מחלקות השקילות של היחס ‪ ∼:=∼i+1‬מגדירות אוטומט )כפי שראינו בהוכחה של משפט מייהיל‪-‬נרוד( ואנו נטען‬
‫שזהו אוטומט שקול ומינימלי‪.‬‬
‫‪134‬‬
‫‪ 28‬משפטים‬
‫אלגוריתם המינימיזציה‬
‫משפט‪ (4.2) .‬יהי ‪.A = hΣ, Q, q0 , δ, F i DFA‬‬
‫הוא היחס שהתקבל מהאלגוריתם הקודם‪.‬‬
‫יהיו } ‪ S = {S1 , . . . , Sk‬מחלקות השקילות של ∼‪ ,‬כאשר ∼‬
‫‪′‬‬
‫‪′‬‬
‫נגדיר ‪ A = hS, Σ, [q0 ] , δ , SF i‬כאשר } ‪SF = {Si ∈ S | Si ⊆ F‬‬
‫ו‪ .δ ′ ([q] , σ) = [δ (q, σ)]-‬אזי ‪ A′‬הוא אוטומט מינימלי לשפה )‪.L (A‬‬
‫שפות חסרות הקשר‬
‫מסקנה‪ CFL (5.1) .‬לא סגורה תחת שרשור‪.‬‬
‫משפט‪.REG ⊆ CFL (5.1) .‬‬
‫למת הניפוח לשפות חסרות הקשר‬
‫משפט‪ (5.1) .‬תהי ‪ .L ∈ CFL‬אזי קיים ‪) p ≥ 1‬קבוע הניפוח( כך שלכל מילה ‪ ,w ∈ L‬אם ‪ |w| ≥ p‬אז קיימת‬
‫חלוקה ‪ w = u · v · x · y · z‬כך שמתקיים‪:‬‬
‫‪.|vxy| ≤ p .1‬‬
‫‪|vy| > 0 .2‬‬
‫)‪.(vy 6= ε‬‬
‫‪.∀i ≥ 0, uv i xy i z ∈ L .3‬‬
‫חישוביות‬
‫מכונת טיורינג‬
‫מסקנה‪ R (6.1) .‬סגורה למשלים‪.‬‬
‫משפט‪.R = RE ∩ coRE (6.1) .‬‬
‫משפט‪ (6.2) .‬לכל שפה ∗‪ L ⊆ Σ‬מתקיים כי ‪ L ∈ RE‬אם“ם קיים ספרן ‪ E‬כך ש‪.L (E) = L-‬‬
‫ספרנים )‪(Enumerators‬‬
‫מסקנה‪ RE (6.2) .‬אלה כל השפות שניתן לסדר את האיברים בהן באמצעות אלגוריתם‪.‬‬
‫אי‪-‬כרעיות ובעיית העצירה‬
‫∈ ‪.L‬‬
‫משפט‪ (6.3) .‬יש שפה ∗‪ L ⊆ Σ‬כך ש‪/ R-‬‬
‫∈ ‪.HALTTM‬‬
‫משפט‪/ R (6.4) .‬‬
‫‪135‬‬
‫‪ 28‬משפטים‬
‫רדוקציות‬
‫משפט הרדוקציה ל‪R-‬‬
‫משפט‪ (7.1) .‬לכל ∗‪ A, B ⊆ Σ‬אם ‪ A ≤m B‬ו‪ B ∈ R-‬אזי ‪) .A ∈ R‬ובאופן דומה עבור ‪(RE, coRE‬‬
‫∈ ‪.B‬‬
‫∈ ‪ A‬אז ‪/ R‬‬
‫מסקנה‪ (7.1) .‬אם ‪ A ≤m B‬ו‪/ R-‬‬
‫∈ ‪.HALTTM‬‬
‫טענה‪/ R (7.1) .‬‬
‫∈ ‪.HALTεTM‬‬
‫טענה‪/ R (7.2) .‬‬
‫∈ ‪.REGTM‬‬
‫טענה‪/ R (7.3) .‬‬
‫∈ ‪.REGTM‬‬
‫מסקנה‪/ RE, coRE (7.2) .‬‬
‫סיבוכיות‬
‫מחלקות סיבוכיות בזמן ‪P, NP, EXP -‬‬
‫משפט‪ (8.1) .‬אם ניתן להכריע שפה ‪ L‬בזמן )‪ o (n log n‬אזי ‪ L‬רגולרית‪) .‬כאשר מדובר על סימון ‪ o‬קטן ולא ‪ O‬גדול(‬
‫משפט‪.P ⊆ NP ⊆ EXP (8.2) .‬‬
‫אפיון המחלקה ‪NP‬‬
‫משפט‪ L ∈ NP (8.3) .‬אם“ם יש ל‪ L-‬מוודא דטרמיניסטי ‪ V‬שרץ בזמן פולינומיאלי ב‪.w-‬‬
‫הקלט של ‪ V‬הוא זוג )‪ (w, c‬כאשר ‪ w‬היא המילה שאנחנו בודקים‬
‫)אחרת ו‪c-‬לא היאנוכלהעד‪.‬לעבורכדיעלש‪V -‬כולו(‪.‬תיחשב כמוודא פולינומיאלי !‬
‫ב‪ ,w-‬אז האורך של העד ‪ c‬צריך להיות פולינומיאלי ב‪w-‬‬
‫שלמות ב‪(NP − Completeness) NP-‬‬
‫משפט‪ SAT (9) .‬היא ‪-NP‬שלמה‪.‬‬
‫רדוקציות פולינומיאליות‬
‫משפט הרדוקציה הפולינומיאלית‬
‫משפט‪ (10) .‬לכל ∗‪ A, B ⊆ Σ‬אם ‪ A ≤p B‬ו‪ B ∈ P-‬אזי ‪.A ∈ P‬‬
‫טענה‪ (10.1) .‬אם ‪ L ∈ NPH‬ו‪ L ∈ P-‬אזי ‪.P = NP‬‬
‫טענה‪ (10.2) .‬תהי ‪ .L′′ ∈ NPH‬אם ‪ L′′ ≤p L‬אזי ‪L ∈ NPH‬‬
‫טענה‪ (10.3) .‬אם ‪ A ∈ P‬אז ‪ A ≤p B‬לכל ∗‪.B 6= ∅, Σ‬‬
‫משפט קוק‪-‬לוין‬
‫מסקנה‪.3SAT, CLIQUE ∈ NP (10.1) .‬‬
‫‪136‬‬
‫‪ 28‬משפטים‬
‫משפט‪.3SAT ≤p CLIQUE (10) .‬‬
‫משפט קוק לוין‬
‫משפט‪ ,3SAT ∈ NPH (10) .‬כלומר לכל ‪ L ∈ NP‬מתקיים ‪.L ≤p 3SAT‬‬
‫למה‪.SAT ≤p 3SAT (10.1) .‬‬
‫משפט‪SS ∈ NPC (10.1) .‬‬
‫מחלקות סיבוכיות זכרון‬
‫משפט‪ (11) .‬לכל פונקציה ‪ f : N → N‬מתקיים ))‪.TIME (f (n)) ⊆ SPACE (f (n‬‬
‫משפט‪ (11) .‬לכל פונקציה ‪ f : N → N‬מתקיים‬
‫‬
‫))‪.SPACE (f (n)) ⊆ TIME 2O(f (n‬‬
‫מסקנה‪ PTIME ⊆ PSPACE (11.1) .‬ו‪.NPTIME ⊆ NPSPACE-‬‬
‫טענה‪.SAT ∈ SPACE (n) (11.1) .‬‬
‫משפט‪.NP ⊆ PSPACE (11) .‬‬
‫מסקנה‪.P ⊆ NP ⊆ PSPACE ⊆ NPSPACE (11.2) .‬‬
‫בעיות הריקנות והאוניברסליות‬
‫טענה‪.ALLNFA ∈ NPSPACE (11.2) .‬‬
‫‪′‬‬
‫משפט סביץ‬
‫‬
‫משפט‪ (11.1) .‬לכל פונקציה )‪ S (n) ∈ Ω (log n‬מתקיים )‪.NPSPACE (S (n)) ⊆ SPACE S 2 (n‬‬
‫מסקנה‪.ALLNFA ∈ PSPACE (11.3) .‬‬
‫טענה‪.ALLNFA ∈ PSPACE − H (11.3) .‬‬
‫סיבוכיות זכרון תת‪-‬לינארית‬
‫משפט הרדוקציה ל‪L-‬‬
‫משפט‪ (12.1) .‬לכל ∗‪ A, B ⊆ Σ‬אם ‪ B ≤logspace A‬ו‪ A ∈ L-‬אזי ‪) .B ∈ L‬ובאופן דומה עבור ‪(NL‬‬
‫טענה‪.PATH ∈ NL (12.1) .‬‬
‫טענה‪.PATH ∈ NLC (12.2) .‬‬
‫‪137‬‬
‫‪ 28‬משפטים‬
‫טענה‪ (12.3) .‬נניח כי ‪ .A ≤logspace B‬אזי ‪.A ≤p B‬‬
‫מסקנה‪NL ⊆ PTIME (12.1) .‬‬
‫טענה‪.EMPTYNFA ∈ NLC (12.4) .‬‬
‫טענה‪.BBPATH ∈ NLC (12.5) .‬‬
‫משפט אימרמן‬
‫משפט אימרמן‬
‫משפט‪ (12.2) .‬לכל פונק’ ‪ s (n) ≥ log n‬מתקיים ))‪.NSPACE (s (n)) = coNSPACE (s (n‬‬
‫מסקנה‪.NL = coNL(12.2) .‬‬
‫משפטי ההירככיה )מהתרגול(‬
‫טענה‪ (26.1) .‬קיימת מ“ט ‪ S‬שבהינתן ‪ hM, t, wi‬כקלט‪ S ,‬מחשבת את הקונפ’ המתקבלת מהרצת ‪ M‬על ‪ w‬למשך ‪ t‬צעדים‪,‬‬
‫והיא עושה זאת בזמן )|‪ (t log t) · p (|hM i‬כאשר ‪ p‬הוא איזשהו פולינום שנקבע מראש‪.‬‬
‫משפט ההיררכיה בזמן‬
‫)‪ (26.1‬לכל פונקציה ‪ t‬שניתנת לבנייה בזמן‪ ,‬קיימת שפה ‪ L‬שניתנת להכרעה בזמן ))‪ O (t (n‬אך לא בזמן‬
‫משפט‪ .‬‬
‫‬
‫)‪t(n‬‬
‫))‪.o log(t(n‬‬
‫משפט‪ (26.1) .‬יהיו ‪ .1 ≤ ϵ1 < ϵ2‬אזי ) ‪.TIME (nϵ1 ) ⊊ TIME (nϵ2‬‬
‫משפט‪.P ⊊ EXP (26.2) .‬‬
‫טענה‪ (26.2) .‬קיימת מ“ט ‪ S‬שבהינתן ‪ hM, w, s, ti‬כקלט‪ S ,‬מחשבת את הקונפ’ המתקבלת מהרצת ‪ M‬על ‪ w‬למשך ‪t‬‬
‫צעדים‪ ,‬תוך ההנחה ש‪ M -‬משתמשת בלכל היותר ‪ s‬תאים )אם ‪ M‬משתמשת ביותר אז ‪ S‬תחזיר ‪ ,(False‬והיא עושה זאת‬
‫תוך שימוש ב‪ O (log |w| + s · |hM i| · log t)-‬תאים‪.‬‬
‫משפט ההיררכיה במקום‬
‫משפט‪ (26.2) .‬לכל פונקציה ‪ s‬שניתנת לבנייה במקום‪ ,‬קיימת שפה ‪ L‬שניתנת להכרעה במקום ))‪ O (s (n‬אך לא‬
‫בזמן ))‪.o (s (n‬‬
‫משפט‪ L ⊊ SPACE (n) (26.3) .‬ולכן גם ‪L ⊊ PSPACE‬‬
‫‪138‬‬
‫‪30‬‬
‫מחלקות סיבוכיות זמן‬
‫חלק ‪VII‬‬
‫נספחים‬
‫‪29‬‬
‫מחלקות חישוביות‬
‫שפה‬
‫‪30‬‬
‫תיאור‬
‫מחלקה‬
‫הפנייה‬
‫‪AT M‬‬
‫} ‪ M‬מקבלת את ‪{hM, wi | w‬‬
‫‪RE\R‬‬
‫ראו ‪6.13‬‬
‫‪HALTT M‬‬
‫} ‪ M‬עוצרת על ‪{hM, wi | w‬‬
‫‪RE\R‬‬
‫ראו ‪6.14‬‬
‫‪HALTTε M‬‬
‫} ‪ M‬עוצרת על ‪{hM i | ε‬‬
‫‪RE\R‬‬
‫ראו ‪7.3‬‬
‫‪Lq‬‬
‫כל ה‪ hM, qi-‬כך ש‪ q-‬ישיג‬
‫‪RE\R‬‬
‫ראו תרגיל ‪8‬‬
‫‪L≥n‬‬
‫}‪{hM i | |L (M )| ≥ n‬‬
‫‪RE\R‬‬
‫ראו תרגיל ‪9‬‬
‫‪USELESS‬‬
‫אוטומטים בעלי מצב שלא ניתן להגיע אליו‬
‫‪coRE\RE‬‬
‫ראו ‪21.2‬‬
‫‪L≤n‬‬
‫}‪{hM i | |L (M )| ≤ n‬‬
‫‪coRE\RE‬‬
‫ראו תרגיל ‪9‬‬
‫‪TILE‬‬
‫אריחים הניתנים לריצוף‬
‫‪coRE\RE‬‬
‫ראו ‪7.5‬‬
‫‪L=n‬‬
‫}‪ {hM i | |L (M )| = n‬כאשר ‪n 6= 0‬‬
‫‪RE ∪ coRE‬‬
‫ראו תרגיל ‪9‬‬
‫‪CFLT M‬‬
‫}‪{hM i | L (M ) ∈ CFL‬‬
‫‪RE ∪ coRE‬‬
‫ראו תרגיל ‪8‬‬
‫‪REGT M‬‬
‫}‪{hM i | L (M ) ∈ REG‬‬
‫‪RE ∪ coRE‬‬
‫ראו ‪7.2‬‬
‫מחלקות סיבוכיות זמן‬
‫שפה‬
‫תיאור‬
‫מחלקה‬
‫הפנייה‬
‫‪3SAT‬‬
‫נוסחאות ‪ 3CNF‬ספיקות‬
‫‪NPC‬‬
‫ראו ‪10‬‬
‫נוסחאות ‪ CNF‬ספיקות‬
‫‪NPC‬‬
‫ראו ‪10.1‬‬
‫‪NPC‬‬
‫ראו ‪10.1‬‬
‫‪CLIQUE‬‬
‫כל ה‪ hG, ki-‬כך ש‪ G-‬מכיל קליקה בגודל ‪k‬‬
‫‪NPC‬‬
‫ראו ‪10‬‬
‫‪VC‬‬
‫‪ hG, ki‬כך שב‪ G-‬יש כיסוי קודקודים מגודל ‪≤ k‬‬
‫‪NPC‬‬
‫ראו ‪23.1‬‬
‫‪DS‬‬
‫כל ה‪ hG, ki-‬כך שיש ב‪ DS G-‬מגודל ‪k‬‬
‫‪NPC‬‬
‫ראו ‪23.4‬‬
‫‪ hG, s, ti‬כך של‪ G-‬מסלול המילטוני מ‪ s-‬ל‪t-‬‬
‫‪NPC‬‬
‫ראו ‪24.1‬‬
‫‪NPC‬‬
‫ראו ‪24.1‬‬
‫‪NPC‬‬
‫ראו תרגיל ‪11‬‬
‫‪SAT‬‬
‫}‬
‫‪SS‬‬
‫‪D − ST − HAMPATH‬‬
‫‪ai = s‬‬
‫∑‬
‫{‬
‫‪⟨A, s⟩ | ∃B ⊆ A :‬‬
‫‪ai ∈B‬‬
‫וריאציות על מסלולים המילטוניים‬
‫‪∃I ⊆ [m] , |I| = k‬‬
‫∪‬
‫=‪U‬‬
‫‪Si‬‬
‫‪SET − COVER‬‬
‫‪PARTITION‬‬
‫‪xi‬‬
‫‪i∈I‬‬
‫∑‬
‫= ‪xi‬‬
‫‪i∈[m]\I‬‬
‫‪2 − 1 − PARTITION‬‬
‫‪xi‬‬
‫∑‬
‫∑‬
‫‪⟨x1 , . . . , xm ⟩ : ∃I ⊆ [m] :‬‬
‫‪NPC‬‬
‫ראו תרגיל ‪11‬‬
‫‪i∈I‬‬
‫‪xi = 2‬‬
‫‪i∈[m]\I‬‬
‫‪⟨U, S1 , . . . , Sm , k⟩ :‬‬
‫∑‬
‫‪⟨x1 , . . . , xm ⟩ : ∃I ⊆ [m] :‬‬
‫‪NPC‬‬
‫ראו תרגיל ‪11‬‬
‫‪i∈I‬‬
‫‪(k ≥ 3) k − Color‬‬
‫כל הגרפים שניתן לצבוע ב‪ k-‬צבעים‬
‫‪NPC‬‬
‫ראו תרגיל ‪10‬‬
‫‪3 − DNF − TAUTOLOGY‬‬
‫נוסחאות ‪ 3 − DNF‬שמסופקות ע“י כל השמה‬
‫‪coNPC‬‬
‫ראו תרגיל ‪11‬‬
‫‪TAUTOLOGY‬‬
‫}‪ φ‬טאוטולוגיה ב‪{hφi | CNF -‬‬
‫‪coNPC‬‬
‫ראו ‪24.1‬‬
‫‪CONTRADICTION‬‬
‫}‪ φ‬היא סתירה ב‪{hφi | CNF -‬‬
‫‪coNPC‬‬
‫ראו ‪24.1‬‬
‫‪139‬‬
‫‪31‬‬
‫סיכום מחלקות וסגירויות‬
‫‪31‬‬
‫סיכום מחלקות וסגירויות‬
‫נלקח מסיכומו הנהדר של מאור מזרחי‪ .‬שימו לב ‪ -‬יתכן שמה שמסומן לידו ? אינו נכון‪.‬‬
‫המחלקה‬
‫תיאור המחלקה‬
‫סגירות לפעולה‬
‫∪‬
‫∩‬
‫·‬
‫\‬
‫∗‬
‫·‬
‫‪rev‬‬
‫איחוד‬
‫חיתוך‬
‫משלים‬
‫הפרש‬
‫כוכב‬
‫שרשור‬
‫היפוך‬
‫‪REG‬‬
‫ניתן לזיהוי ע“י אוטומט‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫‪CFL‬‬
‫ניתן לכתיבה ע“י דקדוק ח“ה‬
‫✓‬
‫×‬
‫×‬
‫×‬
‫✓‬
‫✓‬
‫✓‬
‫‪RE‬‬
‫ניתן לזיהוי ע“י מ“ט‬
‫✓‬
‫✓‬
‫×‬
‫×‬
‫✓‬
‫✓‬
‫✓‬
‫‪coRE‬‬
‫המשלים ניתן לזיהו ע“י מ“ט‬
‫✓‬
‫✓‬
‫×‬
‫×‬
‫✓‬
‫✓‬
‫✓‬
‫‪R‬‬
‫ניתן להכרעה ע“י מ“ט‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫‪RE ∪ coRE‬‬
‫לא ניתן לזהות‪ ,‬וגם לא את‬
‫×‬
‫×‬
‫✓‬
‫×‬
‫×‬
‫×?‬
‫✓‬
‫המשלים‬
‫))‪TIME (f (n‬‬
‫ניתן להכריע בזמן ))‪O (f (n‬‬
‫✓‬
‫✓‬
‫✓‬
‫×‬
‫✓‬
‫אם )‪f = Ω (n‬‬
‫ע“י מ“ט דטר’‬
‫))‪NTIME (f (n‬‬
‫ניתן להכריע בזמן ))‪O (f (n‬‬
‫✓‬
‫✓‬
‫לא ידוע‬
‫×‬
‫לא ידוע‬
‫אם )‪f = Ω (n‬‬
‫ע“י מ“ט א“ד‬
‫‪P‬‬
‫ניתן להכרעה בזמן פולי’‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫ע“י מ“ט דטר’‬
‫‪EXP‬‬
‫ניתן להכרעה בזמן אקספו’‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫ע“י מ“ט דטר’‬
‫‪NP‬‬
‫ניתן להכרעה בזמן פולי’‬
‫✓‬
‫✓‬
‫לא ידוע‬
‫✓‬
‫לא ידוע‬
‫✓‬
‫✓‬
‫ע“י מ“ט א“ד‬
‫‪NPH‬‬
‫רדוקציה פולי’ מכל שפה ב‪NP-‬‬
‫×‬
‫×‬
‫לא ידוע‬
‫×‬
‫×‬
‫×‬
‫✓‬
‫‪NPC‬‬
‫‪NP ∩ NPH‬‬
‫×‬
‫×‬
‫לא ידוע‬
‫×‬
‫×‬
‫×‬
‫✓‬
‫‪coNP‬‬
‫המשלים נמצא ב‪NP-‬‬
‫✓‬
‫✓‬
‫לא ידוע‬
‫לא ידוע‬
‫✓‬
‫✓‬
‫✓‬
‫‪coNPH‬‬
‫רדוקציה פולי’ מכל שפה ב‪coNP-‬‬
‫×‬
‫×‬
‫לא ידוע‬
‫×‬
‫×‬
‫×‬
‫✓‬
‫‪coNPC‬‬
‫‪coNP ∩ coNPH‬‬
‫×‬
‫×‬
‫לא ידוע‬
‫×‬
‫×‬
‫✓‬
‫))‪SPACE (f (n‬‬
‫ניתן להכריע במקום ))‪O (f (n‬‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫אם‬
‫)‬
‫×‬
‫‪2‬‬
‫(‬
‫‪?f = Ω log n‬‬
‫אם )‪f = Ω (log n‬‬
‫אם )‪f = Ω (n‬‬
‫ע“י מ“ט דטר’‬
‫))‪NSPACE (f (n‬‬
‫ניתן להכריע במקום ))‪O (f (n‬‬
‫✓‬
‫✓‬
‫אם )‪f = Ω (log n‬‬
‫אם )‪f = Ω (n‬‬
‫אם )‪f = Ω (log n‬‬
‫ע“י מ“ט א“ד‬
‫‪PSPACE‬‬
‫ניתן להכרעה במקום פולי’‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫ע“י מ“ט דטר’‬
‫‪PSPACE − H‬‬
‫רדוקציה פולי’ מכל שפה ‪PSPACE‬‬
‫×‬
‫×‬
‫✓‬
‫×‬
‫×‬
‫×‬
‫✓‬
‫‪PSPACE − C‬‬
‫‪PSPACE ∩ PSPACE − H‬‬
‫×‬
‫×‬
‫✓‬
‫×‬
‫×‬
‫×‬
‫✓‬
‫‪NPSPACE‬‬
‫ניתן להכרעה במקום פולי’‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫ע“י מ“ט א“ד‬
‫?‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫לא ידוע )‪(L = NL‬‬
‫✓‬
‫×‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫✓‬
‫×‬
‫×‬
‫✓‬
‫×‬
‫×‬
‫×‬
‫×‬
‫‪L‬‬
‫)‪SPACE (log n‬‬
‫‪NL = coNL‬‬
‫)‪NSPACE (log n‬‬
‫✓‬
‫‪NLH‬‬
‫רדוקציה בשטח לוגריתמי מכל‬
‫×‬
‫שפה ‪NL‬‬
‫‪NLC‬‬
‫השפה המשלימה נמצאת ב‪NL-‬‬
‫×‬
‫×‬
‫✓‬
‫‪140‬‬
‫×‬
‫×‬
‫×‬
‫×‬
Download