You are on page 1of 45

‫יחידה ‪2‬‬

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


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

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

‫‪ ‬מכונה עם כמות קבועה של זיכרון (בפרט‪ ,‬לא יכולה לזכור את הקלט)‬


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

‫‪q0‬‬ ‫‪ ‬המצבים מתוארים ע"י עיגול המכיל את שם המצב‪.‬‬

‫‪ ‬פונקציית המעברים מתוארת ע"י חצים בין המצבים‪ ,‬כאשר בסמוך לחץ יופיעו אותיות‬
‫‪a‬‬ ‫המעבר‪.‬‬
‫‪q0‬‬ ‫‪q1‬‬

‫‪ ‬המצבים המקבלים מסומנים ע"י עיגול נוסף מסביב למצב‪.‬‬

‫‪q3‬‬

‫‪ ‬מצב שאין ממנו מעבר אל מצב מקבל נקרא "בור" או "מצב מלכודת" או "מצב דוחה"‪.‬‬

‫‪ ‬נסמן את המצב ההתחלתי על ידי חץ שנכנס אליו בלי מקור‪ .‬בדרך כלל נקרא ‪q0‬‬
‫‪q0‬‬
‫דטרמניסטי‬ ‫אוטומט סופי‬
‫נבנה אוטומט עבור שפת כל המילים באורך אי זוגי‬
‫נניח שהא"ב שלנו הוא }𝑏‪Σ = {𝑎,‬‬

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


‫‪q0‬‬
‫‪a,b‬‬
‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬ ‫‪q4‬‬ ‫‪q5‬‬ ‫‪q6‬‬ ‫…‬

‫אינסופי!‬
‫נשים לב שיש דמיון בין כל המצבים הזוגיים– אם הקלט בהמשך הוא‬
‫אי זוגי‪ ,‬אז המילה בשפה‪ ,‬ואם הקלט זוגי‪ -‬המילה לא בשפה‪.‬‬
‫כמו כן‪ ,‬כל המצבים האי זוגיים דומים‪.‬‬
‫שפת המילים באורך אי זוגי‬

‫}𝑏 ‪Σ = {𝑎,‬‬

‫‪a,b‬‬

‫‪a,b‬‬
‫‪q0‬‬ ‫‪q1‬‬
= { , ,A, B,C,D}

q3 )‫(צירוף תקין‬
AA, AB…
q1
q4 q5
q0 AA, AB…
)‫(צירוף תקין‬
q2
‫הגדרה פורמלית‬

‫אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה‪:‬‬


‫)𝐹 ‪(𝑄, Σ, 𝛿, 𝑞0 ,‬‬
‫כאשר‪:‬‬
‫∑= א"ב שפת הקלט‬
‫𝑄= קבוצה סופית לא ריקה של מצבים‬
‫‪ = 𝑞0‬מצב התחלתי (איבר ב𝑄)‬
‫𝐹 = קבוצת מצבים מקבלים (תת קבוצה של 𝑄 )‬
‫𝛿 = פונקציית מעברים‬
‫פונקציית מעברים‬

‫פונקציית המעברים מוגדרת כך‪. 𝛿: 𝑄 × ∑ → 𝑄 :‬‬


‫כלומר‪ ,‬הפונקציה מקבלת כקלט מצב מתוך 𝑄 ואות מהא"ב ומחזירה‬
‫מצב מתוך 𝑄‪ .‬מכיוון שהאוטומט דטרמיניסטי‪ ,‬לכל מצב 𝑄 ∈ ‪ q‬ולכל‬
‫אות ∑ ∈ 𝜎 מוגדר מעבר יחיד‪.‬‬

‫לדוגמא‪𝛿: (𝑞,𝜎) = 𝑞 ′ :‬‬


‫הפונקציה מגדירה שאם נמצאים במצב 𝑞 וקוראים את האות 𝜎 אז‬
‫עוברים למצב ‪.𝑞′‬‬
‫אוטומט סופי דטרמיניסטי‬
‫‪ ‬את פונקציית המעברים 𝛿 ניתן להגדיר ע"י טבלה‪.‬‬

‫טבלת פונקציית המעברים‪:‬‬ ‫‪b‬‬ ‫‪a‬‬


‫‪a‬‬ ‫‪q3‬‬ ‫דוגמא ‪:‬‬ ‫‪‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫𝛿‬ ‫‪a‬‬ ‫‪b‬‬ ‫‪b‬‬ ‫‪a‬‬ ‫‪b‬‬
‫‪a,b‬‬
‫‪a,b‬‬ ‫‪q4‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q4‬‬
‫‪q1‬‬ ‫‪q4‬‬ ‫‪q2‬‬
‫‪q2‬‬ ‫‪q3‬‬ ‫‪q4‬‬ ‫}𝑏 ‪∑ = {𝑎,‬‬
‫‪q3‬‬ ‫‪q4‬‬ ‫‪q4‬‬ ‫} ‪𝑄 = {𝑞0 , 𝑞1 , 𝑞2 , 𝑞3 , 𝑞4‬‬
‫‪q4‬‬ ‫‪q4‬‬ ‫‪q4‬‬ ‫מצב התחלתי‪q0 :‬‬
‫}‪𝐹 = {𝑞3‬‬
‫אס"ד פשוט‬
 = { a, b} q0
a
q1
b
q2
a
q3
b a b
a,b
a,b q4
𝛿 a b
q0 q1 q4
aba: a b a
q1 q4 q2
q2 q3 q4
q3 q4 q4 aaba: a a b a
q4 q4 q4
‫אס"ד פשוט‬
 = { a, b} q0
a
q1
b
q2
a
q3
b a b
a,b
a,b q4
𝛿 a b
q0 q1 q4
aba: a b a
q1 q4 q2
q2 q3 q4
q3 q4 q4 aaba: a a b a
q4 q4 q4
‫אס"ד פשוט‬
 = { a, b} q0
a
q1
b
q2
a
q3
b a b
a,b
a,b q4
𝛿 a b
q0 q1 q4
aba: a b a
q1 q4 q2
q2 q3 q4
q3 q4 q4 aaba: a a b a
q4 q4 q4
‫אס"ד פשוט‬
 = { a, b} q0
a
q1
b
q2
a
q3
b a b
a,b
a,b q4
𝛿 a b
q0 q1 q4
aba: a b a
q1 q4 q2
q2 q3 q4
q3 q4 q4 aaba: a a b a
q4 q4 q4
‫אס"ד פשוט‬
 = { a, b} q0
a
q1
b
q2
a
q3
b a b
a,b
a,b q4
𝛿 a b
q0 q1 q4
aba: a b a
q1 q4 q2
q2 q3 q4
q3 q4 q4 aaba: a a b a
q4 q4 q4
‫אס"ד פשוט‬
 = { a, b} q0
a
q1
b
q2
a
q3
b a b
a,b
a,b q4
𝛿 a b
q0 q1 q4
aba: a b a
q1 q4 q2
q2 q3 q4
q3 q4 q4 aaba: a a b a
q4 q4 q4
‫אס"ד פשוט‬
 = { a, b} q0
a
q1
b
q2
a
q3
b a b
a,b
a,b q4
𝛿 a b
q0 q1 q4
aba: a b a
q1 q4 q2
q2 q3 q4
q3 q4 q4 aaba: a a b a
q4 q4 q4
‫שפת האוטומט‬
‫הרחבה של פונקציית המעברים למילים‬
‫𝑄 ⟶ ∗‪𝛿 ∗: 𝑄 × Σ‬‬ ‫נגדיר‬
‫∗ 𝛿 מוגדר באופן רקורסיבי‪:‬‬
‫𝑞 = 𝜀‪𝛿 ∗ 𝑞,‬‬
‫)𝜎‪𝛿 ∗ 𝑞,𝑤𝜎 = 𝛿(𝛿 ∗ 𝑞,𝑤 ,‬‬
‫שפת האוטומט‬

‫‪ ‬קבוצת המילים שהאוטומט מקבל‪.‬‬


‫‪ ‬עבור אוטומט 𝐴 נסמן ב )𝐴(𝐿 את שפת האוטומט‪.‬‬

‫מילה ∗ ‪ 𝑤 ∈ Σ‬מתקבלת על ידי אוטומט סופי דטרמיניסטי אם ורק אם ‪. 𝛿 ∗ 𝑞0 ,𝑤 ∈ F‬‬ ‫‪‬‬

‫‪ ‬לכן השפה שאוטומט ‪ A‬מקבל היא ‪𝐿(𝐴) = 𝑤 𝛿 ∗ 𝑞0 ,𝑤 ∈ F‬‬

‫מהו גודל שפת האוטומט של האס"ד הפשוט‬


‫}𝑎𝑏𝑎{ = )𝐴(𝐿‬ ‫שראינו בשקופיות הקודמות הקודמת?‬
‫‪|𝐿(𝐴)| = 1‬‬
‫שפה רגולרית‬

‫שפה ‪ L‬הינה רגולרית אם ורק אם קיים אוטומט סופי‬


‫דטרמיניסטי ‪ A‬המקיים ‪L(A)= L‬‬
∀𝜎 ∈ Σ

∀𝜎 ∈ Σ
q0 q1

∀𝜎 ∈ Σ

q0
‫עוד דוגמא‬

‫‪ ‬שפת המילים שמסתיימות ב‪ a‬מעל הא"ב }‪.{a,b‬‬

‫𝑏‬ ‫𝑎‬
‫𝑏‬

‫‪q0‬‬ ‫‪q1‬‬
‫𝑎‬
‫דוגמא נוספת‬
‫}𝑏 ‪∑ = {𝑎,‬‬

‫פתרון לא נכון!‬
‫𝑏‬
‫𝑎‬ ‫איפה הטעות?‬

‫𝑎‬ ‫‪𝑎,b‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫האם המילה ‪ baaa‬בשפה?‬


‫ال‬
‫𝑏‬
‫דוגמא מתקדמת‬
‫}𝑏 ‪∑ = {𝑎,‬‬

‫قبل االخير هو ‪a‬‬

‫פתרון נכון‬
‫משפט הסגירות‬
‫תהיינה ‪ L1 ,L2‬שפות רגולריות‪ ,‬ויהיו ‪ 𝐴1 ,𝐴2‬אס"דים שמקבלים את השפות ‪ L1 ,L2‬בהתאמה‪.‬‬

‫משפט‪:‬‬
‫) ‪𝐿(𝐴) = 𝐿(𝐴1 ) ∩ 𝐿(𝐴2‬‬ ‫קיים אס"ד ‪ A‬המקיים‬

‫באופן דומה‪ ,‬קיים אס"ד עבור כל אחת מהפעולות הבינאריות האחרות (איחוד‪ ,‬הפרש‪,‬‬
‫הפרש סימטרי) על )‪ L(A1‬ו )‪. L(A2‬‬

‫מכאן נובע תכונת הסגירות‪:‬‬

‫השפות הרגולריות סגורות תחת חיתוך‪ ,‬איחוד והפרש‪.‬‬


‫דוגמאות‬

‫𝑤 = ‪ 𝐿1‬היא רגולרית‪ ,‬וגם השפה } ∗ ‪𝐿2 = 𝑤01 𝑤 ∈ 0,1‬‬ ‫‪ ‬השפה }‪𝑤 𝑚𝑜𝑑 2 = 0‬‬
‫היא רגולרית‪.‬‬
‫‪ ‬ממשפט הסגירות אפשר להסיק שהשפות הבאות גם רגולריות‪:‬‬
‫‪𝐿1 ∩ 𝐿2 ‬‬
‫‪𝐿1 ∪ 𝐿2 ‬‬
‫‪𝐿1 − 𝐿2 ‬‬
‫הוכחת הסגירות‪ -‬אוטומט מכפלה‬

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


‫האיחוד\חיתוך\הפרש‪.‬‬

‫האוטומט שנבנה עבור פעולות בינאריות של שפות רגולריות מכונה‬


‫"אוטומט מכפלה"‪.‬‬

‫המצבים במכונה החדשה מורכבים מזוגות מצבים מהאוטומטים‬


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

‫הרעיון של המכונה הוא שהוא מדמה את ריצת שני האוטומטים בו‬


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

‫𝑏‬ ‫𝑎‬
‫𝑎‬

‫𝑎‬ ‫𝑏 ‪𝐿 𝐴1 = 𝑤𝑎𝑏 𝑤 ∈ 𝑎,‬‬ ‫∗‬


‫}‬
‫𝑏‬ ‫‪q2‬‬
‫‪q0‬‬ ‫‪q1‬‬
‫‪𝐴1‬‬
‫𝑏‬

‫𝑏‬ ‫𝑏‬

‫𝑎‬
‫‪𝐴2‬‬ ‫} ‪𝐿 𝐴2 = 𝑤 #𝑎𝑤 𝑚𝑜𝑑 2 = 1‬‬
‫‪p0‬‬ ‫‪p1‬‬
‫𝑎‬
‫דוגמא לבניית אוטומט מכפלה‬

‫‪ .1‬נגדיר את קבוצת המצבים החדשה ‪:Q‬‬

‫‪𝑄 = { (q0, p0) , q0,p1 , q1, p0 , (q1,p1) ,‬‬


‫} )‪q2, p0 ,(q2,p1‬‬

‫‪.2‬המצב ההתחלתי הוא ‪(q0, p0) :‬‬

‫‪ .3‬פונקציית המעברים‪:‬‬

‫𝛿‬ ‫𝒂‬ ‫𝒃‬


‫)‪(q0, p0‬‬
‫‪q0,p1‬‬
‫‪q0, p0‬‬ ‫‪q1, p0‬‬
‫)‪(q1,p1‬‬
‫‪q2, p0‬‬
‫)‪(q2,p1‬‬
‫דוגמא לבניית אוטומט מכפלה‬

‫‪ .1‬נגדיר את קבוצת המצבים החדשה ‪:Q‬‬

‫‪𝑄 = { (q0, p0) , q0,p1 , q1, p0 , (q1,p1) ,‬‬


‫} )‪q2, p0 ,(q2,p1‬‬

‫‪.2‬המצב ההתחלתי הוא ‪(q0, p0) :‬‬

‫‪ .3‬פונקציית המעברים‪:‬‬

‫𝛿‬ ‫𝒂‬ ‫𝒃‬


‫)‪(q0, p0‬‬ ‫)‪(q1,p1‬‬
‫‪q0,p1‬‬
‫𝑎‬
‫‪q0, p0‬‬ ‫‪q1, p1‬‬ ‫‪q1, p0‬‬
‫)‪(q1,p1‬‬
‫‪q2, p0‬‬
‫)‪(q2,p1‬‬
‫דוגמא לבניית אוטומט מכפלה‬

‫‪ .1‬נגדיר את קבוצת המצבים החדשה ‪:Q‬‬

‫} )‪𝑄 = { (q0, p0) , q0,p1 , q1, p0 , (q1,p1) , q2, p0 ,(q2,p1‬‬

‫‪.2‬המצב ההתחלתי הוא ‪(q0, p0) :‬‬

‫‪ .3‬פונקציית המעברים‪:‬‬

‫𝛿‬ ‫𝒂‬ ‫𝒃‬


‫𝑏‬ ‫)‪(q0, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0,p1‬‬
‫𝑎‬
‫‪q0, p0‬‬ ‫‪q1, p1‬‬ ‫‪q1, p0‬‬
‫)‪(q1,p1‬‬
‫‪q2, p0‬‬
‫)‪(q2,p1‬‬
‫דוגמא לבניית אוטומט מכפלה‬

‫‪ .1‬נגדיר את קבוצת המצבים החדשה ‪:Q‬‬

‫} )‪𝑄 = { (q0, p0) , q0,p1 , q1, p0 , (q1,p1) , q2, p0 ,(q2,p1‬‬

‫‪.2‬המצב ההתחלתי הוא ‪(q0, p0) :‬‬

‫‪ .3‬פונקציית המעברים‪:‬‬

‫𝛿‬ ‫𝒂‬ ‫𝒃‬


‫𝑏‬ ‫)‪(q0, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0,p1‬‬
‫𝑎‬ ‫𝑎‬
‫‪q0, p0‬‬ ‫‪q1, p1‬‬ ‫‪q1, p0‬‬ ‫‪q1, p0‬‬
‫)‪(q1,p1‬‬ ‫‪q1, p0‬‬
‫‪q2, p0‬‬
‫)‪(q2,p1‬‬
‫דוגמא לבניית אוטומט מכפלה‬

‫‪ .1‬נגדיר את קבוצת המצבים החדשה ‪:Q‬‬

‫} )‪𝑄 = { (q0, p0) , q0,p1 , q1, p0 , (q1,p1) , q2, p0 ,(q2,p1‬‬

‫‪.2‬המצב ההתחלתי הוא ‪(q0, p0) :‬‬

‫‪ .3‬פונקציית המעברים‪:‬‬

‫𝛿‬ ‫𝒂‬ ‫𝒃‬


‫𝑏‬ ‫)‪(q0, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0,p1‬‬
‫𝑎‬ ‫𝑎‬
‫‪q0, p0‬‬ ‫‪q1, p1‬‬ ‫‪q1, p0‬‬ ‫‪q1, p0‬‬

‫𝑏‬ ‫)‪(q1,p1‬‬ ‫‪q1, p0‬‬ ‫)‪(q2,p1‬‬


‫‪q2, p0‬‬
‫‪q2, p1‬‬
‫)‪(q2,p1‬‬
‫דוגמא לבניית אוטומט מכפלה‬

‫‪ .1‬נגדיר את קבוצת המצבים החדשה ‪:Q‬‬

‫} )‪𝑄 = { (q0, p0) , q0,p1 , q1, p0 , (q1,p1) , q2, p0 ,(q2,p1‬‬

‫‪.2‬המצב ההתחלתי הוא ‪(q0, p0) :‬‬

‫‪ .3‬פונקציית המעברים‪:‬‬

‫𝛿‬ ‫𝒂‬ ‫𝒃‬


‫𝑏‬ ‫𝑎‬ ‫)‪(q0, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0,p1‬‬
‫𝑎‬ ‫𝑎‬
‫‪q0, p0‬‬ ‫‪q1, p1‬‬ ‫‪q1, p0‬‬ ‫‪q1, p0‬‬ ‫)‪(q1,p1‬‬
‫𝑏‬ ‫)‪(q1,p1‬‬ ‫‪q1, p0‬‬ ‫)‪(q2,p1‬‬
‫‪q2, p0‬‬
‫‪q2, p1‬‬
‫)‪(q2,p1‬‬
‫דוגמא לבניית אוטומט מכפלה‬

‫‪ .1‬נגדיר את קבוצת המצבים החדשה ‪:Q‬‬

‫} )‪𝑄 = { (q0, p0) , q0,p1 , q1, p0 , (q1,p1) , q2, p0 ,(q2,p1‬‬

‫‪.2‬המצב ההתחלתי הוא ‪(q0, p0) :‬‬

‫‪ .3‬פונקציית המעברים‪:‬‬

‫𝛿‬ ‫𝒂‬ ‫𝒃‬


‫𝑏‬ ‫𝑎‬ ‫)‪(q0, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0,p1‬‬
‫𝑎‬ ‫𝑎‬
‫‪q0, p0‬‬ ‫‪q1, p1‬‬ ‫‪q1, p0‬‬ ‫‪q1, p0‬‬ ‫)‪(q1,p1‬‬ ‫‪q2, p0‬‬
‫𝑏‬ ‫𝑏‬ ‫)‪(q1,p1‬‬ ‫‪q1, p0‬‬ ‫)‪(q2,p1‬‬
‫‪q2, p0‬‬
‫‪q2, p1‬‬ ‫‪q2, p0‬‬
‫)‪(q2,p1‬‬
‫דוגמא לבניית אוטומט מכפלה‬

‫‪ .1‬נגדיר את קבוצת המצבים החדשה ‪:Q‬‬

‫} )‪𝑄 = { (q0, p0) , q0,p1 , q1, p0 , (q1,p1) , q2, p0 ,(q2,p1‬‬

‫‪.2‬המצב ההתחלתי הוא ‪(q0, p0) :‬‬

‫‪ .3‬פונקציית המעברים‪:‬‬

‫𝛿‬ ‫𝒂‬ ‫𝒃‬


‫𝑏‬
‫𝑏‬ ‫𝑎‬ ‫)‪(q0, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0,p1‬‬
‫𝑎‬ ‫𝑎‬
‫‪q0, p0‬‬ ‫‪q1, p1‬‬ ‫‪q1, p0‬‬ ‫‪q1, p0‬‬ ‫)‪(q1,p1‬‬ ‫‪q2, p0‬‬
‫𝑏‬ ‫𝑏‬ ‫)‪(q1,p1‬‬ ‫‪q1, p0‬‬ ‫)‪(q2,p1‬‬
‫𝑎‬
‫‪q2, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q2, p1‬‬ ‫‪q2, p0‬‬
‫)‪(q2,p1‬‬
‫דוגמא לבניית אוטומט מכפלה‬

‫‪ .1‬נגדיר את קבוצת המצבים החדשה ‪:Q‬‬

‫} )‪𝑄 = { (q0, p0) , q0,p1 , q1, p0 , (q1,p1) , q2, p0 ,(q2,p1‬‬

‫‪.2‬המצב ההתחלתי הוא ‪(q0, p0) :‬‬

‫‪ .3‬פונקציית המעברים‪:‬‬

‫𝛿‬ ‫𝒂‬ ‫𝒃‬


‫𝑏‬
‫𝑏‬ ‫𝑎‬ ‫)‪(q0, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0,p1‬‬
‫𝑎‬ ‫𝑎‬
‫‪q0, p0‬‬ ‫‪q1, p1‬‬ ‫‪q1, p0‬‬ ‫‪q1, p0‬‬ ‫)‪(q1,p1‬‬ ‫‪q2, p0‬‬
‫𝑏‬ ‫𝑎‬
‫𝑏‬ ‫)‪(q1,p1‬‬ ‫‪q1, p0‬‬ ‫)‪(q2,p1‬‬
‫𝑎‬
‫𝑏‬ ‫‪q2, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0, p1‬‬ ‫‪q2, p1‬‬ ‫‪q2, p0‬‬
‫)‪(q2,p1‬‬ ‫‪q1, p0‬‬ ‫‪q0,p1‬‬
‫דוגמא לבניית אוטומט מכפלה‬

‫‪ .1‬נגדיר את קבוצת המצבים החדשה ‪:Q‬‬

‫} )‪𝑄 = { (q0, p0) , q0,p1 , q1, p0 , (q1,p1) , q2, p0 ,(q2,p1‬‬

‫‪.2‬המצב ההתחלתי הוא ‪(q0, p0) :‬‬

‫‪ .3‬פונקציית המעברים‪:‬‬

‫𝛿‬ ‫𝒂‬ ‫𝒃‬


‫𝑏‬
‫𝑏‬ ‫𝑎‬ ‫)‪(q0, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0,p1‬‬ ‫‪q1, p0‬‬ ‫‪q0,p1‬‬
‫𝑎‬ ‫𝑎‬
‫‪q0, p0‬‬ ‫‪q1, p1‬‬ ‫‪q1, p0‬‬ ‫‪q1, p0‬‬ ‫)‪(q1,p1‬‬ ‫‪q2, p0‬‬
‫𝑏‬ ‫𝑏‬ ‫𝑏‬ ‫)‪(q1,p1‬‬ ‫‪q1, p0‬‬ ‫)‪(q2,p1‬‬
‫𝑎‬
‫𝑎‬ ‫𝑎‬
‫‪q2, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0, p1‬‬ ‫‪q2, p1‬‬ ‫‪q2, p0‬‬
‫𝑏‬ ‫)‪(q2,p1‬‬ ‫‪q1, p0‬‬ ‫‪q0,p1‬‬
‫דוגמא לבניית אוטומט מכפלה‬

‫‪ .1‬נגדיר את קבוצת המצבים החדשה ‪:Q‬‬

‫} )‪𝑄 = { (q0, p0) , q0,p1 , q1, p0 , (q1,p1) , q2, p0 ,(q2,p1‬‬

‫‪.2‬המצב ההתחלתי הוא ‪(q0, p0) :‬‬

‫‪ .3‬פונקציית המעברים‪:‬‬

‫𝛿‬ ‫𝒂‬ ‫𝒃‬


‫𝑏‬
‫𝑏‬ ‫𝑎‬ ‫)‪(q0, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0,p1‬‬ ‫‪q1, p0‬‬ ‫‪q0,p1‬‬
‫𝑎‬ ‫𝑎‬
‫‪q0, p0‬‬ ‫‪q1, p1‬‬ ‫‪q1, p0‬‬ ‫‪q1, p0‬‬ ‫)‪(q1,p1‬‬ ‫‪q2, p0‬‬
‫𝑏‬ ‫𝑏‬ ‫𝑏‬ ‫)‪(q1,p1‬‬ ‫‪q1, p0‬‬ ‫)‪(q2,p1‬‬
‫𝑎‬
‫𝑎‬ ‫𝑎‬
‫‪q2, p0‬‬ ‫)‪(q1,p1‬‬ ‫)‪(q0, p0‬‬
‫‪q0, p1‬‬ ‫‪q2, p1‬‬ ‫‪q2, p0‬‬
‫𝑏‬ ‫)‪(q2,p1‬‬ ‫‪q1, p0‬‬ ‫‪q0,p1‬‬
‫האלגוריתם לבניית אוטומט מכפלה‬

‫‪ .1‬קבוצת המצבים ‪𝑄 = 𝑄1 × 𝑄2‬‬


‫‪ .2‬המצב ההתחלתי של האוטומט החדש מורכב משני המצבים ההתחלתיים ‪𝑞0𝐴 = (𝑞0,𝑝0) :‬‬
‫‪ .3‬עבור כל אות 𝜎 בא"ב וכל זוג מצבים )𝑝‪ (𝑞 ,‬בונים את פונקציית המעברים באופן הבא‪:‬‬
‫בודקים בפונקציית המעברים של האוטומט הראשון לאיזה מצב מגיעים ממצב 𝑞 עבור האות‬
‫𝜎‪ ,‬ובפונקציית המעברים של האוטומט השני לאיזה מצב מגיעים ממצב 𝑝 ‪.‬‬
‫מגדירים את המעבר של האות באוטומט המכפלה להיות הזוג המכיל את שני המצבים‬
‫שאליהם הגענו‪.‬‬

‫‪ - 𝛿2‬פונקציית המעברים של ‪A2‬‬ ‫‪ - 𝛿1‬פונקציית המעברים של ‪A1‬‬


‫𝛿‪ -‬פונקציית המעברים של אוטומט המכפלה‬
‫ו ‪𝛿2 : (𝑝,𝜎) → 𝑝′‬‬ ‫אם ‪𝛿1 : (𝑞,𝜎) → 𝑞′‬‬
‫אז )‪𝛿: ((𝑞 ,𝑝),𝜎) → (𝑞′ ,𝑝′‬‬
‫המשך האלגוריתם לבניית אוטומט מכפלה‬

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


‫שלהם שייכים למצבים המקבלים של ‪ 𝑄2‬וגם ‪. 𝑄1‬‬
‫עבור איחוד‪ ,‬המצבים המקבלים יהיו כל זוגות האיברים שלפחות אחד‬
‫מהם שייך למצבים המקבלים של ‪ 𝑄2‬או ‪. 𝑄1‬‬
‫באופן דומה מגדירים קבוצת מצבים מקבלים עבור שאר הפעולות‬
‫הבינריות‪.‬‬
‫באופן פורמאלי‬
‫) ‪𝐴1 = (𝑄𝐴1 , Σ, 𝛿𝐴1 , 𝑞0𝐴1 , 𝐹𝐴1‬‬ ‫יהיו שני אוטומטים ‪ 𝐴1‬ו ‪𝐴2‬‬

‫) ‪𝐴2 = (𝑄𝐴2 , Σ, 𝛿𝐴2 , 𝑞0𝐴2 , 𝐹𝐴2‬‬

‫נבנה את האוטומט מכפלה ‪:A‬‬

‫) 𝐴𝐹 ‪𝐴 = (𝑄𝐴 , Σ, 𝛿𝐴 , 𝑞0𝐴 ,‬‬


‫סגירות למשלים‬

‫)𝐴(𝐿 השפה של האוטומט‪.‬‬ ‫‪ ‬יהי 𝐴 אוטומט כלשהו ותהי‬


‫‪ ‬האם יש דרך פשוטה לשנות את האוטומט כך שהשפה תהיה )𝐴(𝐿 ?‬

‫דוגמא‪:‬‬
‫‪q1‬‬
‫𝐴‬ ‫𝑏 ‪𝑎,‬‬
‫𝑏 ‪𝑎,‬‬
‫𝑤 = 𝐴 𝐿‬ ‫}‪𝑤 𝑚𝑜𝑑 3 = 0‬‬
‫‪q0‬‬ ‫‪q2‬‬
‫𝑏 ‪𝑎,‬‬
‫אוטומט למשלים‬

‫)𝐴(𝐿 השפה של האוטומט‪.‬‬ ‫‪ ‬יהי 𝐴 אוטומט כלשהו ותהי‬


‫‪ ‬האם יש דרך פשוטה לשנות את האוטומט כך שהשפה תהיה )𝐴(𝐿 ?‬

‫דוגמא‪:‬‬
‫‪q1‬‬
‫‪𝐴′‬‬ ‫𝑏 ‪𝑎,‬‬
‫𝑏 ‪𝑎,‬‬
‫𝑤 = ‪𝐿 𝐴′‬‬ ‫}‪𝑤 𝑚𝑜𝑑 3 ≠ 0‬‬
‫‪q0‬‬ ‫‪q2‬‬
‫𝑏 ‪𝑎,‬‬

‫) 𝐴𝐹 ‪𝐴 = (𝑄𝐴 , Σ, 𝛿𝐴 , 𝑞0𝐴 ,‬‬ ‫) 𝐴𝐹 ‪𝐴′ = (𝑄𝐴 , Σ, 𝛿𝐴 , 𝑞0𝐴 , 𝑄𝐴 −‬‬


‫סגירויות נוספות‬

‫‪ ‬סגירות לשרשור‬

‫‪ ‬סגירות לקלין‬

You might also like