You are on page 1of 82

‫מערכת שידורים לאומית‬

‫מודלים חישוביים‬
‫פרק ‪ : 1‬אוטומט סופי דטרמיניסטי‬
‫שם המורה‪ :‬ריקי יפה‬
‫שם מורה בודק‪ :‬ויקטוריה צורי‬
‫תודה לויקטוריה צורי על האישור להשתמש בחומרים שלה‬

‫‪2‬‬
‫מודלים חישוביים‬

‫למה צריך את זה?!‬


‫למה נלמד במסגרת מדעי המחשב!!‬

‫‪3‬‬
‫מודלים חישוביים‬
‫תורת החישוביות היא הבסיס למדעי המחשב‪ ,‬והיא עוסקת ביכולות החישוב של מחשב ‪,‬‬
‫במודלי החישוב השונים ובפונקציות הניתנות לחישוב במסגרתם‪.‬‬
‫השאלה הבסיסית בתורת החישוביות היא‪:‬‬
‫מה מחשבים יכולים לחשב‪ ,‬ומה לא?‬

‫**תורת החישוביות‪ ,‬התאוריה המתמטית של מדעי המחשב מהווה בסיס הכרחי בלמידת תורת האלגוריתמים ושפות תיכנות‬

‫‪4‬‬
‫מודלים חישוביים‬
‫תורת האוטומטים ( או "מודלים חישוביים" כפי שנקרא אצלנו) היא החלק הראשון של תורת‬
‫החישוביות"‪ ,‬המגדיר סוג של מודל חישובי‪(,‬מודל מתמטי‪-‬פורמלי ) במטרה להגדיר את‬
‫יכולות המחשב‬

‫‪5‬‬
‫מודלים חישוביים‬
‫מה נלמד בקורס ‪:‬‬
‫• אוטומט כמודל חישובי (הבנת מושג האוטומט הסופי על כל צורותיו והקשר שלו‬
‫למדעי המחשב ולשפות תכנות )‬
‫‪ ‬אוטומט סופי דטרמניסטי מלא ‪ /‬דטרמניסטי לא מלא ‪ /‬לא דטרמניסטי‬
‫‪‬אוטומט מחסנית דטרמניסטי ‪ /‬לא דטרמניסטי‬
‫‪‬מכונות טיורינג‬

‫‪6‬‬
‫‪ ‬אוטומט כמודל חישוב‬
‫מושגים בסיסיים בתורת הקבוצות‬ ‫‪‬‬
‫הגדרת אוטומט סופי דטרמיניסטי (אס"ד) מלא‬ ‫‪‬‬
‫שלבים לבנייה של אוטומט סופי דטרמיניסטי מלא‬ ‫‪‬‬
‫תרגול‬ ‫‪‬‬

‫‪7‬‬
‫אוטומט כמודל חישובי‬
‫מודל‪ :‬ייצוג פשוט של מערכת מורכבת הכולל בתוכו את העקרונות החשובים של‬
‫המערכת‪.‬‬

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

‫‪8‬‬
‫אלגוריתם‬ ‫אוטומט כמודל חישובי‬
‫לפתרון הבעיה‬
‫בעיה חישובית‬
‫‪count = 0‬‬
‫))(‪while (c = read_char‬‬ ‫בהינתן קלט‪ ,‬מחרוזת של ביטים (סדרה של אפסים‬
‫)‪if( c == 1‬‬ ‫ואחדים לדוגמה‪.)110001010( :‬‬
‫;‪count = (count + 1) % 2‬‬ ‫הפלט הנדרש‪ ,‬האם מספר ה‪-1-‬ים בקלט הוא זוגי‬
‫‪if count % 2 == 0:‬‬
‫‪return true‬‬
‫או אי זוגי?‬
‫‪return false‬‬

‫פתרון בעזרת קוד הוא ייצוג מסורבל למדי מבחינה מתמטית‪ ,‬הוא כולל כל מני פעולות‬
‫אריתמטיות‪ ,‬ולולאות‪ ,‬משפטי תנאי‪ ,‬השוואות וזיכרון (משתנה ‪ )count‬המגביל לנו‬
‫את גודל הקלט‪.‬‬
‫האם יש דרך לבצע אבסטרקציה לבעיה‪ ,‬להיפטר מהחלקים הלא רלוונטיים ולהישאר‬
‫עם המהות של האלגוריתם?‬
‫‪9‬‬
‫‪9‬‬
‫אוטומט כמודל חישובי‬
‫אם חושבים מעט על הבעיה‪ ,‬רואים ש משתנה המונה‬
‫‪ count‬באלגוריתם יכול להיות באחד משני “מצבים”‬ ‫בעיה חישובית‬
‫אפשריים‪:‬‬ ‫בהינתן קלט‪ ,‬מחרוזת של ביטים (סדרה של אפסים ואחדים‬
‫שווה ‪ ( 0‬אם מספר ה ‪1‬ים זוגי)‪ ,‬או שווה ‪ ( 1‬אם מספר ה ‪1‬ים אי‬ ‫לדוגמה‪.)110001010( :‬‬
‫זוגי)‪.‬‬ ‫הפלט הנדרש‪ ,‬האם מספר ה‪-1-‬ים בקלט הוא זוגי או אי זוגי?‬

‫מה שקורה בכל צעד של האלגוריתם תלוי בתו הבא‬ ‫‪count = 0‬‬
‫מהקלט שקראנו‪:‬‬ ‫))(‪while (c = read_char‬‬
‫אם קראנו ‪ 0‬המצב שלנו לא משתנה‪ ,‬ואם קראנו ‪ 1‬אנחנו‬ ‫)‪if( c == 1‬‬
‫;‪count = (count + 1) % 2‬‬
‫עוברים מהמצב הנוכחי למצב השני (זוגי ← אי זוגי‪ ,‬אי‬ ‫‪if count % 2 == 0:‬‬
‫זוגי ←זוגי)‬ ‫‪return true‬‬
‫‪.‬‬ ‫‪return false‬‬

‫אנחנו מתחילים במצב של זוגי (‪ ,)0‬והפלט שלנו אמור‬


‫להיות “כן” רק אם גם סיימנו במצב של ‪.0‬‬
‫‪10‬‬
‫‪10‬‬
‫אוטומט כמודל חישובי‬
‫האם ניתן להציג את פתרון הבעיה במודל פשוט יותר?‬
‫בעיה חישובית‬
‫האיור הבא מגדיר פתרון אבסטרקטי המתאר את המהות של‬
‫האלגוריתם‪.‬‬
‫בהינתן קלט‪ ,‬מחרוזת של ביטים (סדרה של אפסים ואחדים‬
‫לדוגמה‪.)110001010( :‬‬
‫הפלט הנדרש‪ ,‬האם מספר ה‪-1-‬ים בקלט הוא זוגי או אי זוגי?‬

‫‪count = 0‬‬
‫))(‪while (c = read_char‬‬
‫)‪if( c == 1‬‬
‫;‪count = (count + 1) % 2‬‬
‫‪if count % 2 == 0:‬‬
‫‪return true‬‬
‫‪11‬‬
‫‪return false‬‬
‫‪11‬‬
‫אוטומט כמודל חישובי‬
‫מה מתואר באיור‬
‫מצבים‪ ,‬שהם עיגולים‪ ,‬נתנו להם את השמות‪q0,q1‬‬
‫מציין כי מספר האחדים זוגי ‪ q1 ,‬מציין כי מספר האחדים אי זוגי‬ ‫‪q0‬‬

‫מעברים‪ ,‬בין מצבים‪ ,‬שמתוארים על ידי חצים (“אי שינוי מצב” מתואר על ידי מעבר ממצב לעצמו) כשעל החצים יש את סימון התו‬
‫מהקלט שקראנו וגרם למעבר הזה‪.‬‬

‫מצב מקבל‪ ,‬את המצב ‪ q0‬סימנו בשני עיגולים כדי לומר שזה מצב מקבל‪ ,‬כזה שאם האלגוריתם מסיים את ריצתו בו אז התשובה של‬
‫האלגוריתם היא “כן”‪,‬‬

‫מצב ההתחלתי‪ ,‬חץ שנכנס לתוך ‪ q0‬כדי לתאר שזה המצב ההתחלתי שבו האלגוריתם מתחיל את ריצתו‪.‬‬

‫האיור הזה הוא דוגמה לאוטומט‪ ,‬וכולל את כל מרכיביו של האוטומט‪ :‬מצבים‪ ,‬מעברים‪ ,‬מצבים מקבלים ומצב התחלתי‪.‬‬

‫‪12‬‬
‫‪12‬‬
‫אוטומט כמודל חישובי‬
‫ועכשיו נשאל את עצמנו‪ ,‬מהם סוגי הבעיות שאנחנו הולכים לנסות ולפתור בעזרת‬
‫המודל?‬

‫הרבה מאוד ממה שאלגוריתמים עושים אפשר לתאר כחישוב פונקציה מסוימת‬
‫המקבלת קלט סופי‪ ,‬האלגוריתם המבצע סדרת פקודות על הקלט‪ ,‬ובסוף מוציא‬
‫פלט סופי‪.‬‬

‫‪13‬‬
‫אוטומט כמודל חישובי‬
‫הרבה מאוד ממה שאלגוריתמים עושים אפשר לתאר כחישוב פונקציה מסוימת המקבלת קלט (סופי)‪ ,‬האלגוריתם המבצע‬
‫סדרת פקודות על הקלט‪ ,‬ובסוף מוציא פלט סופי‪.‬‬

‫מהו הקלט?‬
‫קלט לאלגוריתמים במחשב‪ ,‬מיוצג על ידי סדרה סופית (“מחרוזת”) של ביטים‪ .‬או מחרוזות מעל‬
‫אוסף סופי כלשהו של סימנים (א”ב ‪ ) Σ‬סופי‬
‫נאמר כי הקלט הוא מילה מעל ‪Σ‬‬
‫מהו הפלט‪:‬‬
‫כן או לא‪.‬‬

‫‪14‬‬
‫אוטומט כמודל חישובי‬
‫ולכן ניתן להגדיר שכל בעיה שאנחנו רוצים לפתור ניתנת לתיאור בצורה הבאה‪:‬‬
‫נתונה קבוצה ‪ L‬כלשהי של מילים‪ ,‬ונתונה מילה‪ w ,‬נרצה לקבוע אם ‪ w‬שייכת ל ‪. L ( (w∈L‬‬

‫לקבוצה ‪ L‬כזו קוראים שפה‪.‬‬


‫(סדרה‬ ‫}‪,Σ = {0, 1‬‬ ‫בהינתן קלט מחרוזת של ביטים מה א"ב‬ ‫למשל‪ ,‬בדוגמה שראינו‬
‫של אפסים ואחדים לדוגמה‪.)110001010 :‬‬
‫הפלט הנדרש‪ ,‬האם מספר ה‪-1-‬ים בקלט הוא זוגי או אי זוגי?‬
‫השפה ‪ L‬מוגדרת‬

‫}‪L={w∈{0,1} |#1(w)%2=0‬‬

‫‪15‬‬
‫אוטומט כמודל חישובי‬
‫אנו נדבר על מודלים המתייחסים לאלגוריתמים שהופכים קלט סופי לפלט סופי המחזיר תשובה כן‪/‬לא‪.‬‬

‫הקלטים שלנו הן סדרות סופיות של מחרוזות (מילים) מתוך א”ב סופי ‪ .Σ‬שבכל צעד המודל שלנו קורא‬
‫את האות הבאה במחרוזת‬
‫**האוטומט קורא את הקלט שלו רק בכיוון אחד ‪ -‬כלומר‪ ,‬אנחנו הולכים על הקלט משמאל לימין‪ ,‬וברגע‬
‫שקראנו אות מהקלט היא אבודה לנצח ולא נוכל לחזור אליה‪.‬‬
‫** האלגוריתם ניתן לתיאור בתור סדרה של מצבים‪ ,‬שכל אחד נובע מקודמו ומאות הקלט שנקראה‬
‫באותו רגע‪.‬‬

‫‪16‬‬
‫‪ ‬אוטומט כמודל חישוב‬
‫‪ ‬מושגים בסיסיים בתורת הקבוצות‬
‫‪ ‬הגדרת אוטומט סופי דטרמיניסטי (אס"ד) מלא‬
‫‪ ‬שלבים לבנייה של אוטומט סופי דטרמיניסטי מלא‬
‫‪ ‬תרגול‬

‫‪17‬‬
‫מילים ושפות – מושגי יסוד‬
‫קבוצה – אוסף כלשהו ( סופי או אינסופי) של עצמים‪.‬‬
‫קבוצות‬
‫דוגמאות‪:‬‬
‫סופיות‬

‫קבוצות אין‬
‫סופיות‬
‫**יש להבחין בין קבוצות סופיות וקבוצות אינסופיות‪.‬‬
‫שימו לב‪:‬‬
‫לסדר האיברים בקבוצה אין שום חשיבות {‪}c,a,b{=}a,b,c‬‬ ‫»‬
‫קבוצה ריקה = קבוצה ללא איברים‬ ‫»‬

‫סימון‪:‬‬
‫‪18‬‬
‫מילים ושפות – מושגי יסוד‬
‫איבר יכול להיות שייך או לא שייך לקבוצה‪.‬‬

‫סימון ‪:‬‬
‫מסמן שייך לשפה‬
‫∌ מסמן לא שייך לשפה‬

‫דוגמאות‪:‬‬

‫‪19‬‬
‫מילים ושפות – מושגי יסוד‬
‫תת קבוצה‪/‬קבוצה חלקית‬

‫קבוצה חלקית ל ‪ ⇔ B‬כל אברי הקבוצה ‪ A‬נמצאים בקבוצה ‪.B‬‬ ‫‪A‬‬

‫סימון‪A⊆B :‬‬

‫דוגמאות‪:‬‬

‫{‪} aa ,aaa ,abb ,bb ,bbb{⊆ } aa , abb ,bb‬‬

‫{‪,} aa ,aaa ,abb ,bb ,bbb{⊈ } a , abb ,bb‬‬


‫כיון ש ‪ a‬לא נמצאת בקבוצה {‪.} aa ,aaa ,abb ,bb ,bbb‬‬

‫‪20‬‬
‫מילים ושפות – מושגי יסוד‬

‫שפה היא אוסף‪/‬קבוצה של מילים מעל הא"ב הנתון (מעל אלפבית ‪.)Σ‬‬
‫סימון‪L :‬‬

‫א"ב של השפה היא קבוצה סופית של תווים (אותיות או סימנים)‪.‬‬


‫סימון‪Σ :‬‬
‫מילה‪ ,‬או מחרוזת‪ ,‬היא סדרה סופית של איברי ‪Σ‬‬
‫דוגמאות לאלפבית‪:‬‬
‫‪ o‬האלפבית העברי בן ‪ 22‬אותיות (או ‪, 27‬אם מתייחסים בנפרד לאותיות הסופיות)‪.‬‬
‫‪ o‬האלפבית האנגלי בן ‪ 26‬אותיות (או ‪, 52‬אם מתייחסים בנפרד לאותיות גדולות)‪.‬‬
‫‪ o‬האלפבית העשרוני {‪}0,1,2,3,4,5,6,7,8,9‬‬
‫‪ o‬האלפבית הבינארי {‪}0,1‬‬
‫‪ o‬האלפבית { * (‪.}+ −, , , /,),‬‬

‫‪21‬‬
‫מילים ושפות – מושגי יסוד‬
‫מילה היא אוסף סופי של תווים מתוך הא"ב של השפה‪.‬‬
‫סימון‪w :‬‬
‫‪ *Σ‬קבוצת כל המילים מעל האלפבית ‪.Σ‬‬
‫דוגמאות‬
‫אם {‪ Σ = {a, b,c‬אז ‪ w= aacbcca‬מילה מעל האלפבית ‪.Σ‬‬
‫מילה ריקה = מילה ללא תווים‪ ,‬מילה באורך ‪.0‬‬
‫סימון‪ε :‬‬
‫אורך של מילה = מספר תווים שיש במילה‪.‬‬
‫סימון‪|w| :‬‬
‫‪aab|=3‬‬ ‫לדוגמא‪|ε|=0| :‬‬

‫‪22‬‬
‫מילים ושפות – מושגי יסוד‬
‫תת מילה = סדרה סופית של תווים המהווים חלק מהמילה‪.‬‬
‫דוגמאות‪:‬‬
‫‪ε, a, aa, aab, aba, ab , ba , aaba‬‬ ‫עבור ‪ w=aaba‬תת מילים אפשריות הן‪:‬‬

‫רישא של ‪ = w‬תת מילה שמהווה התחלה אפשרית ל ‪.w‬‬


‫דוגמאות‪:‬‬
‫‪ε, a, aa, aab, aaba‬‬ ‫עבור ‪ w=aaba‬רישות אפשריות הן‪:‬‬

‫סיפא של ‪ = w‬תת מילה שמהווה סיומת אפשרית של ‪.w‬‬


‫דוגמאות‪:‬‬
‫עבור ‪ w=aaba‬סיפות אפשריות הן‪ε, a, ba, aba, aaba :‬‬

‫** רישא וסיפא של מילה הן תתי המילה שלה‬


‫‪23‬‬
‫מילים ושפות – מושגי יסוד‬
‫על קבוצת כל המלים מוגדרות פעולות השרשור וחזקה‬

‫שרשור של מילים = שרשור של המילים ‪ x, y‬היא המילה המתקבלת ע"י רישום‬


‫ולאחריו ‪y‬‬ ‫‪x‬‬
‫סימון‪ x•y :‬או פשוט כ‪xy -‬‬
‫הגדרה‪ε = w • ε = ε • w :‬‬
‫דוגמאות‪:‬‬
‫‪ w1=ba w2=aa‬ו‪w2* w1 =aaba -‬‬ ‫עבור ‪w1* w2=baaa‬‬

‫חזקות של מילה ( ‪ = ) w‬שרשור של המילה עם עצמה‪.‬‬


‫‪ε= ºw‬‬ ‫הגדרה‪:‬‬

‫‪24‬‬
‫תרגול‬
‫מילים ושפות ‪ -‬מושגי יסוד‬

‫‪25‬‬
‫מילים ושפות – תרגול‬
‫משימה ‪:1‬‬
‫נתונה מילה ‪ w=01102‬מעל הא"ב }‪Σ={0,1,2‬‬
‫א‪ .‬תן דוגמא לשלוש תת מילים של ‪.w‬‬
‫תשובה‪02 ,110 ,0 :‬‬
‫ב‪ .‬מה היא רישא הכי קצרה של המילה? הכי ארוכה?‬
‫רישא הכי קצרה של כל מילה היא מילה ריקה‪.ε :‬‬
‫רישא הכי ארוכה של מילה היא המילה עצמה‪01102 :‬‬
‫ג‪ .‬תן דוגמא לשלוש סיפות של המילה‪.‬‬
‫תשובה‪1102 ,102 ,02 :‬‬
‫ד‪ .‬מהו אורך המילה?‬
‫תשובה‪w|=|01102|=5| :‬‬

‫‪26‬‬
‫מילים ושפות – תרגול‬
‫משימה ‪:2‬‬
‫נתונות שפות הבאות‪:‬‬

‫ענה על השאלות הבאות‪:‬‬

‫‪L1‬‬
‫‪L2‬‬

‫‪L3‬‬

‫‪27‬‬
‫מילים ושפות – תרגול‬
‫משימה ‪:2‬‬
‫מקרה פרטי‪,‬‬
‫הטענה נכונה‬ ‫כאשר ‪n=m‬‬
‫נתונות שפות הבאות‪:‬‬
‫הטענה נכונה‬
‫הטענה לא נכונה‬
‫המילה הקצרה ביותר בשפה‬
‫הטענה לא נכונה‬
‫היא ‪ ab‬כאשר ‪n=1‬‬
‫הטענה לא נכונה‬ ‫ענה על השאלות הבאות‪:‬‬
‫המילה הקצרה ביותר בשפה‬
‫הטענה נכונה‬
‫כאשר ‪m=n=0‬‬ ‫‪L1‬‬
‫בשפה כמות ה ‪ a‬ים צריכה להיות‬
‫הטענה לא נכונה‬ ‫שווה לכמות ה ‪ b‬ים‬
‫לכן חייב להיות לפחות ‪ b‬אחד‬ ‫‪L2‬‬
‫הטענה לא נכונה‬
‫במילה‬
‫הטענה נכונה‬ ‫‪n=2,m=0‬‬
‫‪L3‬‬
‫הטענה נכונה‬ ‫‪n=0, m=1‬‬

‫הטענה לא נכונה‬ ‫אין ‪ a‬אחרי ‪b‬‬


‫‪28‬‬
‫‪ ‬אוטומט כמודל חישוב‬
‫‪ ‬מושגים בסיסיים בתורת הקבוצות‬
‫‪ ‬הגדרת אוטומט סופי דטרמיניסטי (אס"ד) מלא‬
‫‪ ‬שלבים לבנייה של אוטומט סופי דטרמיניסטי מלא‬
‫‪ ‬תרגול‬

‫‪29‬‬
‫אוטומט כמודל חישובי‬
‫אוטומט סופי היא מכונת חישוב תאורטית המתאפיינת על ידי‪:‬‬

‫‪ - Q‬קבוצת מצבים בהן המכונה עשויה להיות‪.‬‬


‫‪ - Σ‬האלפבית שמעליו מוגדרות המילים המוזנות לאוטומט‪.‬‬
‫‪ - δ‬פונקציית מעבר‬
‫‪ - F‬קבוצת מצבי קבלה (או מצבי סיום)‪– .Q ⊆ F ,‬‬
‫‪q0 -‬מצב ההתחלה של האוטומט‪ .‬זהו מצב אשר בו האוטומט נמצא בתחילתו של כל תהליך‬
‫חישוב‪.‬‬

‫‪30‬‬
‫אוטומט כמודל חישובי – מושגים בסיסיים‬
‫מושג‬ ‫הסבר‬ ‫תיאור גרפי‬
‫מצב‬ ‫מצב בו נמצא האוטומט בכל רגע נתון‪.‬‬
‫‪q2‬‬ ‫חשוב‪ :‬בכל נקודת זמן נמצא אוטומט במצב אחד ויחיד‪.‬‬
‫מעבר‬ ‫בהתאם לאות הקלט עובד אוטומט ממצב אחד לאחר‪ .‬יתכן‬
‫‪q2‬‬ ‫‪a‬‬
‫‪q‬‬ ‫לעצמו‪.‬‬
‫‪3‬‬

‫לולאה‪/‬‬ ‫מעבר של אוטומט ממצב לעצמו כתוצאה מאות קלט‬


‫קשת עצמית‬ ‫‪a‬‬
‫‪q2‬‬
‫מצב‬ ‫מצב ממנו האוטומט מתחיל את תהליך החישוב‪ .‬לכל‬
‫התחלתי‬ ‫אוטומט יש מצב התחלתי אחד‪.‬‬
‫‪start‬‬ ‫בדרך כלל מסומן ע"י ‪q0‬‬
‫‪q0‬‬

‫‪31‬‬
‫אוטומט כמודל חישובי – מושגים בסיסיים‬
‫מושג‬ ‫הסבר‬ ‫תיאור גרפי‬

‫מצב אליו מגיע אוטומט כאשר מילה זוהתה כמילה מצב‪q‬מקבל‬


‫‪2‬‬
‫בשפה‪.‬‬
‫מסלול‬ ‫סדרת מעברים המתארת את מעבר האוטומט על המילה‬
‫‪a‬‬ ‫‪a‬‬ ‫‪b‬‬ ‫החל ממצב התחלתי ועד לסיום הקלט‪.‬‬ ‫‪q0‬‬ ‫‪q1‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫במידה וסיום הקלט קרה במצב מקבל‪ -‬המילה מתקבלת‬
‫על ידי האוטומט‪.‬‬
‫מצב מלכודת‬ ‫מצב ללא מוצא ( ללא קשתות יוצאות למצבים אחרים)‪.‬‬
‫למצב זה מגיעים כתוצאה מכך שרישא של המילה הייתה‬
‫‪a,b,c‬‬ ‫לא תקינה‪ ,‬ואין למילה בהמשך סיכוי להתקבל‪.‬‬
‫‪q2‬‬

‫‪32‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫אוטומט סופי דטרמיניסטי מלא = אוטומט עם כמות מצבים סופית‪ ,‬בו לכל זוג של‬
‫מצב ותו קלט מוגדר מעבר והוא אחד ויחד‪.‬‬
‫אוטומט סופי דטרמיניסטי מלא מתואר על ידי חמישה מרכיבים‪:‬‬
‫‪ .1‬הא"ב – אוסף סופי של אותיות הקלט של השפה אותה מקבל האוטומט‪.‬‬
‫‪ .2‬קבוצת המצבים ( (‪ – Q‬אוסף סופי של מצבי האוטומט‪.‬‬
‫‪ .3‬מצב התחלתי (‪ – ) q0∊Q‬מצב ממנו מתחיל האוטומט את תהליך החישוב‪.‬‬
‫‪ .4‬קבוצת מצבים מקבלים ((‪- F⊆Q‬קבוצת מצבים אליהם מגיעים בסוף קריאה של מילים חוקיות בשפה‪.‬‬
‫‪ .5‬פונקציית מעברים – פונקציה המתארת למצב נתון ותו קלט לאיזה מצב עובר האוטומט ביום קריאת התו‪.‬‬

‫דטרמיניסטי ‪ :‬מכל מצב באוטומט יש מעבר אחד ויחיד עבור כל תו קלט‪.‬‬


‫מלא ‪ :‬מכל מצב באוטומט עבור כל אות קלט יש מעבר‬

‫‪33‬‬
‫אוטומט סופי דטרמיניסטי מלא‬

‫‪start‬‬
‫משימה‬
‫‪0,1‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫בנה אוטומט סופי דטרמיניסטי מלא‬
‫שמקבל שפת כל המילים מעל הא"ב‬
‫‪0,1‬‬ ‫{‪ }0,1‬שאורכן זוגי‪.‬‬
‫} ‪𝐿= {𝑤 ||𝑤| % 2= 0‬‬
‫‪ - Q‬קבוצת מצבי המכונה ‪}q0 q1{ -‬‬
‫}‪Σ = {0, 1‬‬ ‫‪ - Σ‬האלפבית שמעליו מוגדרות המילים לאוטומט ‪-‬‬
‫‪ - δ‬פונקציית מעבר ‪( -‬בשקף הבא)‬
‫‪ - F‬קבוצת מצבי קבלה {‪}q0‬‬
‫‪q0 -‬מצב ההתחלה של האוטומט‪.‬‬
‫‪34‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה‬

‫טבלת מעברים‪:‬‬ ‫בנה אוטומט סופי דטרמיניסטי מלא‬


‫‪1‬‬ ‫‪0‬‬ ‫שמקבל שפת כל המילים מעל הא"ב‬
‫‪start‬‬ ‫‪q1‬‬ ‫‪q1‬‬ ‫‪q0‬‬
‫{‪ }0,1‬שאורכן זוגי‪.‬‬
‫‪q0‬‬
‫‪0,1‬‬
‫‪q1‬‬
‫‪q0‬‬ ‫‪q0‬‬ ‫‪q1‬‬ ‫} ‪𝐿= {𝑤 ||𝑤| % 2= 0‬‬

‫‪0,1‬‬ ‫שלשות של מעברים‪:‬‬


‫(‪)q0,0,q1‬‬
‫(‪)q0,1,q1‬‬
‫(‪)q1,0,q0‬‬
‫‪35‬‬
‫(‪)q1,1,q0‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪ :1‬בניית אוטומט‬

‫בנה אוטומט סופי דטרמיניסטי שמקבל‬


‫את שפת כל המילים מעל {‪∑ =}a,b,c‬‬
‫שמכילות את הרצף ‪aa‬‬

‫שלב ראשון בבניית האוטומט‬


‫‪ .1‬נימצא את המילה הקצרה ביותר בשפה‪,‬‬
‫נבנה עבורה מסלול שיוביל אותה למצב מקבל‪.‬‬

‫‪ .2‬בדיקה האם המילה הריקה (‪ )ε‬מתקבלת בשפה‪,‬‬


‫אם כן‪ ,‬מצב התחלתי הוא מצב מקבל‬
‫‪36‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫‪ .1‬האם אפסילון (‪ )ε‬בשפה?‬ ‫משימה ‪ :1‬בניית אוטומט‬
‫תשובה‪ :‬לא‬

‫‪ .2‬מהי המילה הקצרה ביותר בשפה?‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל את‬
‫תשובה‪ .aa :‬נבנה עבורה מסלול שמוביל למצב מקבל‪.‬‬ ‫שפת כל המילים מעל {‪ ∑ =}a,b,c‬שמכילות‬
‫את הרצף ‪aa‬‬

‫‪a‬‬ ‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫‪37‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪ :1‬בניית אוטומט‬

‫בנה אוטומט סופי דטרמיניסטי שמקבל את‬


‫‪a‬‬ ‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫שפת כל המילים מעל {‪ ∑ =}a,b,c‬שמכילות‬
‫את הרצף ‪aa‬‬

‫מה תפקידו של כל מצב שנוצר? מה הוא זוכר?‬

‫‪ q0‬מחכה ל‪ a‬הראשון של הרצף ‪.aa‬‬


‫‪ q1‬זוכר שהתו האחרון הוא ‪ ,a‬מחכה ל ‪ a‬השני‪.‬‬
‫‪ q2‬זוכר שהרצף ‪ aa‬היה‪.‬‬

‫‪38‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪ :1‬בניית אוטומט‬

‫בנה אוטומט סופי דטרמיניסטי שמקבל את‬


‫‪a‬‬ ‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫שפת כל המילים מעל {‪ ∑ =}a,b,c‬שמכילות‬
‫את הרצף ‪aa‬‬

‫שלב שני בבניית האוטומט‬


‫בקר בכל אחד מהמצבים שנוצרו בסעיף ‪ .2‬האם מכל מצב יש מעבר עבור כל תו בא"ב? אם לא –‬
‫תשלים‪ ,‬אחרת סמן את המצב כמטופל (‪.)٧‬‬

‫‪b,c‬‬ ‫‪b,c‬‬ ‫‪a,b,c‬‬

‫‪q0‬‬
‫‪a‬‬ ‫‪a‬‬
‫‪q1‬‬ ‫‪q2‬‬

‫‪39‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫שלבים לבנייה של אוטומט סופי דטרמיניסטי מלא‬
‫‪ .1‬מצא את מילה הקצרה ביותר בשפה‪ ,‬בנה עבורה מסלול שיוביל אותה למצב מקבל‪.‬‬
‫‪ .2‬בדוק האם המילה הריקה (‪ ) ε‬מתקבלת בשפה‪ ,‬אם כן‪ ,‬מצב התחלתי הוא מצב מקבל‬
‫‪ .3‬בקר בכל אחד מהמצבים שהוגדרו בסעיף ‪ . 1‬האם מכל מצב יש מעבר עבור כל תו בא"ב? אם לא – אשלם‪,‬‬
‫‪ .4‬טפל בכל המצבים שנוצרו לפי הנחיות בסעיף ‪ .3‬סיים את התהליך כאשר כל המצבים "מטופלים"‪.‬‬
‫‪ .5‬סמן מצבים מקבלים‪.‬‬

‫‪40‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫‪ .1‬האם אפסילון (‪ )ε‬בשפה?‬
‫תשובה‪ :‬לא‬ ‫משימה ‪2‬‬
‫‪ .2‬מהי המילה הקצרה ביותר בשפה?‬
‫תשובה‪.aa :‬‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫נבנה עבורה מסלול שמוביל למצב מקבל‬
‫המילים מעל {‪ ∑ = }a,b,c‬שמכילות את הרצף‬
‫‪ aa‬ומסתיימות ב ‪.a‬‬
‫‪a‬‬ ‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫מה הבדל בין שאלה זו לשאלה הקודמת?‬


‫אחרי שזיהינו רצף ‪ aa‬לא תמיד נוכל להישאר במצב‬
‫מקבל‪ ,‬אלא רק עבור תו ‪.a‬‬
‫אז מה עושים עבור שאר התווים בא"ב?‬

‫‪41‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫‪b,c‬‬
‫‪b,c‬‬ ‫משימה ‪2‬‬
‫‪a‬‬ ‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫המילים מעל {‪ ∑ = }a,b,c‬המכילות את הרצף‬
‫‪ aa‬ומסתיימות ב ‪.a‬‬
‫אחרי שזיהינו רצף ‪ aa‬לא תמיד נוכל להישאר במצב מקבל‪ ,‬אלא רק‬
‫עבור תו ‪ .a‬מה עושים עבור שאר התווים בא"ב?‬

‫נוסף מצב המתנה ‪.q3‬‬


‫‪b,c‬‬ ‫‪b,c‬‬
‫‪a‬‬
‫‪b,c‬‬
‫‪a‬‬

‫‪q0‬‬
‫‪a‬‬ ‫‪a‬‬ ‫‪b,c‬‬
‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫‪42‬‬
‫אוטומט סופי דטרמיניסטי מלא‬

‫משימה ‪3‬‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל את‬
‫שפת כל המילים מעל {‪ ∑ = }a,b,c‬המכילות‬
‫את הרצף ‪ aa‬ולא מסתיימות ב ‪.a‬‬

‫מה הבדל בין שאלה זו לשאלה הקודמת?‬

‫בואו נבנה את האוטומט‬

‫‪43‬‬
‫אוטומט סופי דטרמיניסטי מלא‬

‫משימה ‪3‬‬
‫‪ .1‬האם אפסילון (‪ )ε‬בשפה?‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫תשובה‪ :‬לא‬
‫המילים מעל {‪ ∑ = }a,b,c‬המכילות את הרצף‬
‫‪ .2‬נחפש את המילה הקצרה ביותר בשפה ונבנה‬ ‫‪ aa‬ולא מסתיימות ב ‪.a‬‬
‫עבורה מסלול המוביל למצב מקבל‬

‫מהי המילה הקצרה ביותר בשפה?‬


‫תשובה‪aab :‬או ‪.aac‬‬

‫‪q0‬‬
‫‪a‬‬ ‫‪a‬‬ ‫‪b,c‬‬
‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫‪44‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫‪a‬‬ ‫‪a‬‬ ‫‪b,c‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬
‫משימה ‪3‬‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫‪ .3‬בקר בכל אחד מהמצבים שנוצרו בסעיף ‪ .2‬האם מכל‬ ‫המילים מעל {‪ ∑ = }a,b,c‬המכילות את הרצף‬
‫מצב יש מעבר עבור כל תו בא"ב?‬
‫‪ aa‬ולא מסתיימות ב ‪.a‬‬
‫אם לא – תשלים‪ ,‬אחרת סמן את המצב כמטופל (‪.)٧‬‬

‫‪b,c‬‬ ‫‪b,c‬‬
‫‪a‬‬
‫‪b,c‬‬
‫‪a‬‬

‫‪a‬‬ ‫‪a‬‬ ‫‪b,c‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫‪45‬‬ ‫בעצם זה אותו אוטומט כמו בשאלה הקודמת‪ ,‬רק מצב מקבל השתנה‪.‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪4‬‬
‫‪ .1‬האם אפסילון (‪ )ε‬בשפה?‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫תשובה‪ :‬לא‬ ‫המילים מעל {‪ ∑ = }a,b,c‬המכילות לפחות‬
‫‪ .2‬מהי המילה הקצרה ביותר בשפה?‬ ‫שני ‪.a‬‬
‫תשובה‪.aa :‬‬
‫נבנה עבורה מסלול שמוביל למצב מקבל‪.‬‬

‫‪a‬‬ ‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫‪46‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪4‬‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫המילים מעל {‪ ∑ = }a,b,c‬המכילות לפחות‬
‫מה תפקידו של כל מצב באוטומט? מה הוא זוכר?‬
‫שני ‪.a‬‬
‫‪a‬‬ ‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫‪ q0‬מחכה ל‪ a‬הראשון של‪.‬‬


‫‪ q1‬זוכר שהיה ‪ a‬אחד‪.‬‬
‫‪ q2‬זוכר שהיו שני ‪ a‬לא דווקא ברצף!‬
‫‪47‬‬
‫אוטומט סופי דטרמיניסטי מלא‬

‫‪a‬‬
‫משימה ‪4‬‬
‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫המילים מעל {‪ ∑ = }a,b,c‬המכילות לפחות‬
‫‪ .3‬בקר בכל אחד מהמצבים שנוצרו בסעיף ‪ .2‬האם מכל מצב‬ ‫שני ‪.a‬‬
‫יש מעבר עבור כל תו בא"ב?‬
‫אם לא – השלם‪ ,‬אחרת סמן את המצב כמטופל (‪.)٧‬‬

‫‪b,c‬‬
‫‪b,c‬‬ ‫‪a,b,c‬‬

‫‪a‬‬ ‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫‪48‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪5‬‬
‫מה הבדל בין שאלה זו לשאלה הקודמת?‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫המילים מעל {‪ ∑ = }a,b,c‬המכילות בדיוק‬
‫כאן אחרי שקראנו מילה שמכילה ‪ 3‬פעמים‪ a‬או יותר‬ ‫פעמיים ‪.a‬‬
‫אין סיכוי להגיע למצב מקבל‪ ,‬לכן יש צורך במצב‬
‫מלכודת!‬ ‫‪ q0‬מחכה ל‪ a‬הראשון‬
‫‪ q1‬זוכר שהיה רק ‪ a‬אחד‪ ,‬מחכה ל ‪ a‬השני‪.‬‬
‫‪ q2‬זוכר שהיה פעמיים ‪.a‬‬
‫‪b,c‬‬ ‫‪a,b,c‬‬
‫‪b,c‬‬ ‫‪b,c‬‬ ‫‪ q3‬מצב מלכודת‬

‫‪a‬‬ ‫‪a‬‬ ‫‪a‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q31‬‬

‫‪49‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪6‬‬
‫‪ .1‬האם אפסילון (‪ )ε‬בשפה?‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫תשובה‪ :‬לא‬ ‫המילים מעל {‪ ∑ = }a,b,c‬שמתחילות‬
‫ומסתיימות ב ‪.a‬‬
‫‪ .2‬מהי המילה הקצרה ביותר בשפה?‬
‫תשובה‪.a :‬‬
‫נבנה עבורה מסלול שמוביל למצב מקבל‪.‬‬

‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬

‫‪50‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫‪a‬‬ ‫משימה ‪6‬‬
‫‪q0‬‬ ‫‪q1‬‬

‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬


‫‪ .3‬בקר בכל אחד מהמצבים שנוצרו בסעיף ‪.2‬‬ ‫המילים מעל {‪ ∑ = }a,b,c‬שמתחילות‬
‫ומסתיימות ב ‪.a‬‬
‫האם מכל מצב יש מעבר עבור כל תו בא"ב?‬
‫אם לא – תשלים‪ ,‬אחרת סמן את המצב כמטופל (‪.)٧‬‬

‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬

‫‪b,c‬‬

‫‪a,b,c‬‬ ‫‪q3‬‬

‫‪51‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫‪a‬‬ ‫משימה ‪6‬‬
‫‪q0‬‬ ‫‪q1‬‬

‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬


‫‪ .3‬בקר בכל אחד מהמצבים שנוצרו בסעיף ‪.2‬‬ ‫המילים מעל {‪ ∑ = }a,b,c‬שמתחילות‬
‫ומסתיימות ב ‪.a‬‬
‫האם מכל מצב יש מעבר עבור כל תו בא"ב?‬
‫אם לא – תשלים‪ ,‬אחרת סמן את המצב כמטופל (‪.)٧‬‬

‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬

‫‪b,c‬‬ ‫‪" q0,q3‬מטופלים"‪ .‬יש מכל אחד מהם מעבר עבור כל‬
‫תו בא"ב‪.‬‬
‫‪a,b,c‬‬ ‫‪q3‬‬
‫מה לגבי ‪?q1‬‬
‫‪52‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫‪a‬‬ ‫מ ‪ q1‬ממנו צריך לצאת למצב‬ ‫משימה ‪6‬‬
‫‪q0‬‬ ‫‪q1‬‬
‫אחר‪ ,‬מצב המתנה לתו ‪.a‬‬
‫‪b,c‬‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫‪a,b,c‬‬ ‫‪q3‬‬ ‫המילים מעל {‪ ∑ = }a,b,c‬שמתחילות‬
‫"קיר" שאסור לעבור אותו‬ ‫ומסתיימות ב ‪.a‬‬
‫אחורה‪ ,‬אחרת נשכח שמילה‬
‫התחילה כנדרש‪.‬‬

‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬

‫‪b,c‬‬

‫‪a,b,c‬‬ ‫‪q3‬‬

‫‪53‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫פתרון‪:‬‬ ‫משימה ‪6‬‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫‪a‬‬ ‫‪b,c‬‬ ‫המילים מעל {‪ ∑ = }a,b,c‬שמתחילות‬
‫ומסתיימות ב ‪.a‬‬
‫‪a‬‬ ‫‪b,c‬‬
‫‪q0‬‬ ‫‪q1‬‬
‫‪q2‬‬

‫‪a‬‬
‫‪b,c‬‬

‫‪a,b,c‬‬ ‫‪q3‬‬
‫‪ q0‬מחכה ל‪ a‬הראשון‬
‫‪ q1‬זוכר שמילה התחילה ב ‪ a‬ומסתיימת ב ‪.a‬‬
‫‪ q2‬מצב המתנה – מילה התחילה כנדרש‪ ,‬אך תו אחרון לא ‪a.‬‬
‫‪ q3‬מצב מלכודת‬
‫‪54‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪7‬‬
‫‪ .1‬האם אפסילון (‪ )ε‬בשפה?‬
‫כן‪ ,‬זה אומר שמצב התחלתי הוא מצב מקבל!‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫המילים מעל {‪ ∑ = }a,b,c‬שלא מתחילות ב ‪.a‬‬
‫(חוץ מהמילה הריקה)?‬ ‫‪ .2‬מהי המילה הקצרה ביותר בשפה‬
‫‪.b, c‬‬
‫נבנה עבורה מסלול שמוביל למצב מקבל‪.‬‬
‫‪b,c‬‬
‫‪q1‬‬
‫‪q0‬‬

‫‪a‬‬

‫‪a,b,c‬‬ ‫‪q2‬‬

‫‪55‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪7‬‬
‫‪ .3‬בקר בכל אחד מהמצבים שנוצרו בסעיף ‪ .2‬האם מכל מצב‬
‫יש מעבר עבור כל תו בא"ב?‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫אם לא – השלם‪ ,‬אחרת סמן את המצב כמטופל (‪.)٧‬‬ ‫המילים מעל {‪ ∑ = }a,b,c‬שלא מתחילות ב ‪.a‬‬

‫‪b,c‬‬ ‫‪" q0,q2‬מטופלים"‪ .‬מכל אחד מהם מעבר עבור כל תו בא"ב‪.‬‬


‫‪q1‬‬
‫‪q0‬‬
‫מה לגבי ‪?q1‬‬
‫המילה התחילה כנדרש‪ ,‬לא ב ‪ .a‬אז כל מילה שהתחילה כנדרש‬
‫‪a‬‬
‫תתקבל‪.‬‬
‫‪a,b,c‬‬ ‫‪q2‬‬

‫‪56‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪7‬‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫‪a,b,c‬‬ ‫המילים מעל {‪ ∑ = }a,b,c‬שלא מתחילות ב ‪.a‬‬

‫‪b,c‬‬
‫‪q1‬‬
‫‪q0‬‬

‫‪a‬‬

‫‪a,b,c‬‬ ‫‪q2‬‬

‫‪57‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪8‬‬
‫‪ .1‬האם אפסילון (‪ )ε‬בשפה?‬
‫תשובה‪ :‬לא‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫המילים מעל {‪ ∑ = }a,b,c‬שמתחילות ב ‪ab‬‬
‫‪ .2‬מהי המילה הקצרה ביותר בשפה?‬ ‫ומסתימות ב ‪.a‬‬
‫תשובה‪.aba :‬‬
‫נבנה עבורה מסלול שמוביל למצב מקבל‪.‬‬

‫‪a‬‬ ‫‪b‬‬ ‫‪a‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫‪58‬‬
‫אוטומט סופי דטרמיניסטי מלא‬

‫‪ .3‬בקר בכל אחד מהמצבים שנוצרו בסעיף ‪ .2‬האם מכל‬


‫משימה ‪8‬‬
‫מצב יש מעבר עבור כל תו בא"ב? אם לא – תשלים‪,‬‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫אחרת סמן את המצב כמטופל (‪.)٧‬‬
‫המילים מעל {‪ ∑ = }a,b,c‬שמתחילות ב ‪ab‬‬
‫ומסתימות ב ‪.a‬‬

‫‪q0‬‬
‫‪a‬‬ ‫‪b‬‬ ‫‪a‬‬
‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫"קיר" שאסור לעבור אותו אחורה‪,‬‬


‫אחרת נשכח שמילה התחילה כנדרש‪.‬‬

‫‪59‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪8‬‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫המילים מעל {‪ ∑ = }a,b,c‬שמתחילות ב ‪ab‬‬
‫ומסתימות ב ‪.a‬‬

‫‪a‬‬ ‫‪b‬‬ ‫‪a‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫‪b,c‬‬ ‫‪a,c‬‬
‫טיפול במילים שלא‬
‫‪a,b,c‬‬ ‫‪q4‬‬ ‫התחילו כנדרש‬

‫‪60‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪8‬‬
‫‪b,c‬‬ ‫‪a‬‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫‪a‬‬ ‫‪b‬‬ ‫‪a‬‬ ‫המילים מעל {‪ ∑ = }a,b,c‬שמתחילות ב ‪ab‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬ ‫ומסתימות ב ‪.a‬‬
‫‪b,c‬‬ ‫‪a,c‬‬ ‫‪b,c‬‬

‫‪a,b,c‬‬ ‫‪q4‬‬
‫מה תפקידו של כל מצב שנוצר? מה הוא זוכר?‬

‫זוכר שמילה באורך ‪0‬‬ ‫‪q0‬‬


‫זוכר שמילה התחילה ב ‪ ,a‬מחכה ל ‪.b‬‬ ‫‪q1‬‬
‫זוכר שמילה התחילה כנדרש ב ‪ ,ab‬אך לא מסתיימת ב ‪.a‬‬ ‫‪q2‬‬
‫מצב מקבל‪ ,‬זוכר שמילה מתחילה ב ‪ ab‬ומסתימת ב ‪.a‬‬ ‫‪q3‬‬
‫מצב מלכודת‪ .‬זוכר שמילה לא התחילה כנדרש‪.‬‬ ‫‪q4‬‬
‫‪61‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫‪ .1‬האם אפסילון (‪ )ε‬בשפה?‬
‫משימה ‪9‬‬
‫תשובה‪ :‬לא‬
‫‪ .2‬מהי המילה הקצרה ביותר בשפה?‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫תשובה‪.ccc :‬‬ ‫המילים מעל {‪ ∑ = }a,b,c‬שמכילות את הרצף‬
‫‪ cc‬לפחות פעמיים‪.‬‬
‫נבנה עבורה מסלול שמוביל למצב מקבל‪.‬‬

‫‪c‬‬ ‫‪c‬‬ ‫‪c‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫‪62‬‬
‫"קיר" שאסור לעבור אותו‬ ‫אוטומט סופי דטרמיניסטי מלא‬
‫אחורה‪ ,‬אחרת נשכח שהיה‬
‫רצף ‪.cc‬‬

‫‪c‬‬ ‫‪c‬‬
‫משימה ‪9‬‬
‫‪c‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫המילים מעל {‪ ∑ = }a,b,c‬שמכילות את הרצף‬
‫"קיר" שאסור לעבור אותו‬
‫אחורה‪ ,‬אחרת נשכח שהיה רצף‬ ‫‪ cc‬לפחות פעמיים‪.‬‬
‫‪ cc‬פעמיים‪.‬‬

‫מה תפקידו של כל מצב שנוצר? מה הוא זוכר?‬

‫‪ q0‬זוכר שלא היה אף רצף ‪.cc‬‬


‫‪ q1‬זוכר שהתו האחרון ‪ c‬ולא היה אף רצף ‪.cc‬‬
‫‪ q2‬זוכר שהיה רצף ‪ cc‬וגם היה ‪ c‬מהרצף השני (התו האחרון כעת‬
‫הוא ‪.)c‬‬
‫‪ q3‬מצב מקבל‪ ,‬זוכר שמילה הכילה את הרצף ‪ cc‬פעמיים‪.‬‬
‫‪63‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪9‬‬
‫‪" q0,q1,q3‬מטופלים"‪ .‬כלומר‪ ,‬יש מכל אחד מהם מעבר‬ ‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫עבור כל תו בא"ב‪.‬‬ ‫המילים מעל {‪ ∑ = }a,b,c‬שמכילות את הרצף‬
‫‪ cc‬לפחות פעמיים‪.‬‬
‫מה לגבי ‪?q2‬‬
‫‪a,b‬‬
‫‪a,b‬‬ ‫‪a,b,c‬‬

‫‪c‬‬ ‫‪c‬‬ ‫‪c‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫אם ב ‪ q2‬קוראים ‪ b‬או ‪ a‬יש צורך לעבור למצב‬


‫המתנה ‪.q4‬‬
‫‪64‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪9‬‬
‫בנה אוטומט סופי דטרמיניסטי שמקבל שפת כל‬
‫המילים מעל {‪ ∑ = }a,b,c‬שמכילות את הרצף‬
‫‪ cc‬לפחות פעמיים‪.‬‬
‫‪a,b‬‬
‫‪a,b‬‬ ‫‪a,b,c‬‬

‫‪c‬‬ ‫‪c‬‬ ‫‪c‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫אם ב ‪ q2‬קוראים ‪ b‬או ‪ a‬יש צורך לעבור‬ ‫‪c‬‬


‫‪a,b‬‬
‫למצב המתנה ‪.q4‬‬
‫‪a,b‬‬ ‫‪q4‬‬

‫‪65‬‬
‫אוטומט סופי דטרמיניסטי מלא‬

‫שפות שמתוארות על ידי חזקה‬ ‫משימה ‪10‬‬


‫בנה אוטומט סופי דטרמיניסטי לשפה‬
‫תיאור פורמלי זה אומר שהשפה חייבת להתחיל ב ‪a‬‬ ‫}‪L= { aⁿbᵏ | n≥1 k ≥1‬‬
‫ים (לפחות ‪ )1‬ואחרי זה ‪ b‬ים (לפחות ‪ .)1‬אסור‬
‫שאחרי שמופיע ‪ b‬יופיע ‪a‬‬

‫‪ - aº‬הינה המילה הריקה‪.‬‬


‫‪ - aˡ‬הינה המילה ‪a‬‬
‫‪ - a²‬הינה המילה ‪aa‬‬
‫‪...‬‬
‫‪66‬‬
‫אוטומט סופי דטרמיניסטי מלא‬

‫שפות שמתוארות על ידי חזקה‬ ‫משימה ‪10‬‬


‫בנה אוטומט סופי דטרמיניסטי לשפה‬
‫}‪L= { aⁿbᵏ | n≥1 k ≥1‬‬

‫מילים מתקבלות‪ab , aaabbb , abbb :‬‬


‫מילים שאינן מתקבלות‪a , b , abba , babb :‬‬

‫נתחיל בבניית האוטומט‬

‫‪67‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪10‬‬
‫‪ .1‬האם אפסילון (‪ )ε‬בשפה?‬
‫שפות שמתוארות על ידי חזקה‬
‫תשובה‪ :‬לא‬
‫‪ .2‬מהי המילה הקצרה ביותר בשפה?‬ ‫בנה אוטומט סופי דטרמיניסטי לשפה‬
‫}‪L= { aⁿbᵏ | n≥1 k ≥1‬‬
‫תשובה‪.ab :‬‬
‫נבנה עבורה מסלול שמוביל למצב מקבל‪.‬‬

‫‪a‬‬ ‫‪ba‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫‪68‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫משימה ‪10‬‬
‫‪a‬‬
‫שפות שמתוארות על ידי חזקה‬
‫‪ba‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫בנה אוטומט סופי דטרמיניסטי לשפה‬
‫}‪L= { aⁿbᵏ | n≥1 k ≥1‬‬
‫‪a‬‬ ‫‪b‬‬
‫‪ .3‬בקר בכל אחד מהמצבים שנוצרו בסעיף ‪ .2‬האם מכל מצב יש‬
‫מעבר עבור כל תו בא"ב? אם לא – תשלים‪ ,‬אחרת סמן את המצב‬
‫‪a‬‬ ‫‪ba‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫כמטופל (‪.)٧‬‬

‫‪b‬‬ ‫‪a‬‬

‫‪q31‬‬
‫‪a,b‬‬
‫‪69‬‬
‫דגשים לבניית אוטומט סופי דטרמיניסטי מלא‬
‫‪ .1‬בנה תחילה את המסלול למילה הקצרה ביותר המתקבלת בשפה‪.‬‬
‫‪ .2‬האם אפסילון (‪ )ε‬בשפה? אם כן‪ ,‬מצב התחלתי הוא מצב מקבל‪.‬‬
‫‪ .3‬בדוק האם המילה הריקה מתקבלת בשפה‪.‬‬
‫‪ .4‬הבדל בין המקרים של מתחיל מכיל או מסתיים‪.‬‬
‫‪ .5‬ראה האם ניתן לצמצם תנאים‪.‬‬
‫‪ .6‬באם הפתרון הינו אוטומט סופי דטרמיניסטי שלם ראה שכל מצב מטפל בכל קלט אפשרי פעם אחת בלבד‪.‬‬
‫‪ .7‬שימו לב שיכול להיות יותר ממצב מקבל אחד‪.‬‬

‫‪70‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫שפות "מיוחדות"‬

‫אוטומט מעל {‪ ∑ = }a,b‬המתאר את השפה הריקה ‪Ø‬‬


‫(אף מילה לא מתקבלת השפה)‬

‫אוטומט מעל {‪ ∑ = }a,b‬המתאר את השפה המכילה רק‬


‫את המילה הריקה‬

‫אוטומט מעל {‪ ∑ = }a,b‬המתאר את השפה המכילה‬


‫את כל המילים מלבד המילה הריקה‬

‫‪71‬‬
‫אוטומט כמודל חישוב‬ ‫‪‬‬
‫מושגים בסיסיים בתורת הקבוצות‬ ‫‪‬‬
‫הגדרת אוטומט סופי דטרמיניסטי (אס"ד) מלא‬ ‫‪‬‬
‫שלבים לבנייה של אוטומט סופי דטרמיניסטי מלא‬ ‫‪‬‬
‫‪ ‬תרגול‬

‫באו נתרגל‬
‫‪72‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫חשבו‪,‬‬ ‫תרגיל ‪1‬‬
‫איך יודעים אם מספר מתחלק‬ ‫בנה אוטומט סופי דטרמיניסטי מעל מעל‬
‫ב‪? 3 -‬‬ ‫{‪ ∑ = }8,9,…0,1‬המקבל את כל המספרים‬
‫הדצימליים המתחלקים בשלוש ללא שארית‬

‫מספר מתחלק ב‪ 3-‬אם ורק אם סכום הספרות שלו מתחלק ב‪.3-‬‬


‫לדוגמה‪ ,‬המספר ‪ 201‬מתחלק ב‪ 3-‬כי סכום הספרות הוא ‪.3=2+0+1‬‬
‫גם המספר ‪ 837‬מתחלק בשלוש כי סכום הספרות הוא ‪ ,18=8+3+7‬ו‪ 18-‬מתחלק ב‪ 3-‬כי סכום הספרות של ‪ 18‬הוא ‪ ,9=1+8‬ו‪9-‬‬
‫מתחלק בשלוש‪.‬‬

‫‪73‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫‪0,3,6,9‬‬
‫‪0,3,6,9‬‬
‫‪1,4,7‬‬ ‫תרגיל ‪1‬‬
‫‪q0‬‬ ‫בנה אוטומט סופי דטרמיניסטי מעל מעל‬
‫‪2,5,8‬‬ ‫‪qq21‬‬
‫{‪ ∑ = }8,9,…0,1‬המקבל את כל המספרים‬
‫‪2,5,8‬‬ ‫הדצימלים המתחלקים בשלוש ללא שארית‬
‫‪2,5,8‬‬

‫‪1,4,7‬‬
‫‪1,4,7‬‬ ‫קלט המתקבל יכול להיות באחד משלושה מצבים‪:‬‬
‫שארית חלוקה ב ‪ 3‬שווה ‪0‬‬
‫‪q12‬‬ ‫שארית חלוקה ב ‪ 3‬שווה ‪1‬‬
‫‪0,3,6,9‬‬ ‫שארית חלוקה ב ‪ 3‬שווה ‪2‬‬

‫‪74‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫נתונה השפה הבאה‬
‫‪L = {aⁿwbᵐ | n=m%2‬‬
‫‪W‬היא מילה מעל {‪ ∑ = }a, c‬המתחילה ב‪ c-‬מסתיימת ב‪ a -‬ו לא מכילה את הרצף ‪aac‬‬
‫תן ‪ 2‬דוגמאות שונות למילים בשפה‪.‬‬ ‫‪.I‬‬
‫‪ .II‬בנה אוטומט סופי דטרמיניסטי מלא לשפה‪.‬‬

‫פתרון‪:‬‬
‫‪ .1‬חשבו אלו ערכים האפשריים עבור ‪? n‬‬
‫‪ .2‬נבנה את האוטומט לפי שלבים‬
‫• נבנה תחילה את ‪W‬‬
‫• ניגש לפתרון הכולל‪.‬‬
‫‪75‬‬
‫אוטומט סופי דטרמיניסטי מלא‬
‫שלב ב – הפתרון הכולל‪.‬‬ ‫שלב א – נבנה אוטומט עבור ‪W‬‬
‫היא מילה מעל {‪ ∑ = }a, c‬המתחילה ב‪ c-‬מסתיימת ב‪-‬‬ ‫‪W‬‬
‫ולא מכילה את הרצף ‪aac‬‬ ‫‪a‬‬

‫‪76‬‬
‫אוטומט סופי דטרמיניסטי מלא‬

‫דף תרגילים מתוך הספר "מודלים חישוביים של חיים אברבוך‬


‫‪77‬‬
‫אוטומט סופי דטרמיניסטי מלא‬

‫דף תרגילים מתוך הספר "מודלים חישוביים של חיים אברבוך‬


‫‪78‬‬
‫אוטומט סופי דטרמיניסטי מלא‬

‫דף תרגילים מתוך הספר "מודלים חישוביים של חיים אברבוך‬


‫‪79‬‬
‫אוטומט סופי דטרמיניסטי מלא‬

‫דף תרגילים מתוך הספר "מודלים חישוביים של חיים אברבוך‬


‫‪80‬‬
‫תודה על ההקשבה‬

‫‪81‬‬
‫שימוש ביצירות מוגנות בזכויות יוצרים ואיתור בעלי זכויות‬

‫השימוש ביצירות במהלך שידור זה נעשה לפי סעיף ‪27‬א לחוק זכות יוצרים‪,‬‬
‫תשס"ח‪ .2007-‬אם הינך בעל הזכויות באחת היצירות‪ ,‬באפשרותך לבקש‬
‫מאיתנו לחדול מהשימוש ביצירה‪ ,‬זאת באמצעות פנייה לדוא"ל‬
‫‪rights@education.gov.il‬‬

‫‪82‬‬

You might also like