במקום מצב התחלתי יחיד q0, יש לנו קבוצת מצבים התחלתיים I.
במקום פונקצית מעברים δ, יש לנו יחס מעברים R⊆Q×Σ×Q. כאשר אם (q,σ,p)∈R אזי זה אומר כי ניתן לעבור מ-q ל-p ע"י קריאת σ ונסמן זאת: q⟶σp.
נשים כי אין לנו בהכרח קיום ויחידות, כלומר, מאותו מצב יכולות להיות שתי קשתות שנות עבור אותה אות(אין יחידות) ובנוסף, לא חייבת להופיע קשת מכל מצב לכל אות.
דוגמה
איך נראה שהאוטומט הזה הוא אוטומט לא דטרמיניסטי? כי אין לכל מצב קשת, נניח, אם נקבל 0 או 1 ב-q1 וגם נראה כי יש שני דרכים שבהם נוכל ללכת מ-q0 עם 1.
עבור Σ={0,1,2} - נשים לב כי לא באמת נוכל לדעת את שפת האוטומט מאוטומט סופי לא דטרמיניסטי בלבד, שכן יכולות להופיע עוד אותיות אשר להן לא יהיו קשתות
הגדרה 2 (ריצה על מילה)
ריצה של אוטומט A על מילה w=σ1…σn היא סדרה מהצורה:
S0σ1S1σ2⋯σnSn
כך ש-S0∈I ולכל 1≤i≤n מתקיים (Si−1,σi,Si)∈R.
נסמן גם: S0⟶wSn.
הגדרה 3 (שפה של אוטומט לא דטרמיניסטי)
בהנתן אוטומט סופי לא דטרמיניסטי A נגדיר את השפה שלו:
L(A)={w∈Σ∗∣∃q0∈I,∃p∈F:q0A⟶wp}
כלומר, השפה של A היא כל המילים w שעבורם קיימת ריצה מקבלת של A על w ממצב התחלתי.
דוגמה
בדוגמה שראינו ממקודם מתקיים כי השפה של A היא:
L(A)={0,1}∗∘{1}
נסתכל על אילו מסלולי ריצה יש לנו עבור w=0101:
נוכל להישאר ב-q0 במהלך כל המילה, מה שיתן לנו ריצה לא מקבלת.
נוכל לעבור ל-q1 בפעם הראשונה שאנו מקבלים 1, מה ישתן לנו ריצה שלא תתקיים. - היא לא נחשבת ריצה
נוכל לעבור ל-q1 באות האחרונה במילה וזוהי ריצה מקבלת.
מכיוון שקיימת ריצה מקבלת, המילה w בשפה.
שקילות בין NFA ל-DFA
בהרצאה ראינו כי שני המודלים שקולים ולכן:
בהנתן אוטומט סופי דטרמיניסטי A ניתן לבנות אוטומט סופי לא דטרמיניסטי A′ כך ש-L(A)=L(A′), בצורה הבאה: A=(Q,Σ,q0,δ,F) A′=(Q,Σ,{q0},δ,F)
נזכור כי פונקציה היא מקרה פרטי של יחס.
בהנתן אוטומט סופי לא דטרמיניסטי A, ניתן לבנות אוטומט סופי דטרמיניסטי AD כך ש-L(A)=L(AD) באופן הבא:
נשתמש באוטומט החזרה. הרעיון הוא שאם ב-NFA היו מספר ריצות אפשריות עבור מילה, נאחד את כל האפשרויות כך שיוצגו ע"י מצב יחיד ב-DFA.
לשם כך, נרצה שהמצבים של ה-DFA יהיו תתי קבוצות של המצבים ב-NFA. נגדיר את המצבים בדטרמינסיטי להיות קבוצת החזקה של קבוצת המצבים בלא דטרמיניסטי(ומכאן השם אוטומט החזקה)
בנייה פורמלית של אוטומט החזקה
בהנתן אוטומט סופי לא דטרמיניסטי: A=(Q,Σ,I,R,F) נגדיר AD=(QD,Σ,q0,δ,FD) כאשר:
QD=P(Q)q0=IFD={S⊆Q∣S∩F=∅}
לכל Si∈P(Q) ולכל σ∈Σ:
δ(Si,σ)={P∈QD∣∃q∈S:qA⟶σp}
כלומר, ממצב S∈P(Q) עם אות σ עוברים לכל המצבים ב-Q שהיה מעבר ממצב ב-S אליהם.
דוגמה
נבנה אוטומט סופי דטרמיניסטי עבור האוטומט הלא דטרמיניסטי שראינו קודם מעל Σ={0,1}.
כמה מצבים יהיו באוטומט החזקה?
∣P(Q)∣=∣2Q∣=2∣Q∣=22=4
זה נכון רק אם Qסופית. (והיא סופית כי זה NFA)
נשים לב כי יש לנו פה שני מצבים מיותרים {q1} ו-{∅}.
מה יקרה אם נקח Σ={0,1,2} במקום?
איך מוכיחים שפה של NFA?
באמצעות הכלה דו כיוונית. כיוון 1:L⊆L(A). לוקחים מילה מ-L ומראים ריצה מקבלת של A על המילה. כיוון 2:L(A)⊆L. מניחים שיש ריצה מקבלת של A ועל מילה ובעזרת מבנה A מסיקים על מבנה המילה.
תרגול
תרגיל
יהא A האוטומט הסופי הלא דטרמיניסטי הבא:
א. מהי השפה של A?
ב. הוכיחו שזו אכן שפתו.
פתרון א':
L={0,1}∗∘{1}∘{0,2}∗∘{2}
הוכחה: (ב')
נוכיח L=L(A) בהכלה דו כיוונית.
כיוון 1, L⊆L(A): תהא w∈L.
ממבנה L מתקיים w=u1v2 עבור u∈{0,1}∗ ו-v∈{0,2}∗.
ריצה מקבלת של A על w היא למשל ריצה שתשאר ב-q0 כל עוד קוראים u, תעבור ל-q1 כשקוראים 1, תשאר ב-q1 כל עוד קוראים v ותעבור ל-q2 כשקוראים 2.
q0uq01q1vq12q2
זו ריצה מקבלת שכן q0∈I ו-q2∈F והמעברים חוקיים ממבנה A.
לכן, מהגדרת שפת NFA מתקיים: w∈L(A).
כיוון 2, L(A)⊆L: תהא w∈L(A).
מהגדרת שפת אוטומט סופי לא דטרמיניסטי, קיימת ריצה מקבלת של A על w. ריצה כזו תתחיל מהמצב ההתחלתי היחיד q0 ותסתיים במצב המקבל היחיד q2.
כלומר קיימת q0wq2.
ממבנה A, כדי להגיע מ-q0 ל-q2 חייבים לעבור דרך q1. מ-q2 אין קשתות יוצאות ולכן לא יכולנו לעבור ב-q2 לפני המצב האחרון.
נסמן w=σ1…σn ואז הריצה תראה כך:
q0σ1S1σ2S2⋯σn−1Sn−1σnq2
ממה שהסברנו קודם, קיים 1≤i≤n−1 מינימאלי כך ש-Si=q1.
ממבנה A, עד למצב Si חייבים להשאר ב-q0. לכן, לכל 1≤k≤i מתקיים Sk=q0. לאחר מכן, כפי שהסברנו, חייבים להישאר ב-q1 כי לא ניתן לצאת מ-q2. לכן, לכל i<k<n מתקיים Sk=q1.
כדי לעבור ל-q2 חייבים לקרוא 2 ולכן σn=2.
במעבר מ-q0 ל-q1 קוראים 1. כל עוד נשארים ב-q0 קוראים 0 או 1, ובדומה, נשארים ב-q1 כל עוד קוראים 0 או 2.
לכן, w חייבת להיות {0,1}∗∘{1}∘{0,2}∗∘{2} וזה בדיוק L ולכן w∈L. ∎
תרגיל
יהא Σ א"ב כלשהו. בנו אוטומט עבור השפה:
L={uσvσw∣u,v,w∈Σ∗,σ∈Σ}
במילים: L היא שפת כל המילים מעל Σ∗ שיש בהן אות שמופיעה לפחות פעמיים.
רעיון הבניה: ננחש איזו אות σ תחזור על עצמה פעמיים. (ניחוש ⇐ NFA) פתרון:
נסמן Σ={σ1,…,σn} (אפשרי כי א"ב היא קבוצה סופית ולא ריקה)
נגדיר אוטומט סופי לא דטרמיניסטי A=(Q,Σ,I,R,F) כאשר:
הקבוצה השמאלית היא לולאות עצמיות אשר מאפשרות לקרוא את u,v,w. הקבוצה האמצעית מאפשרת לזכור שראינו σ והקבוצה הימנית מאפשרת לדעת שראינו את אותה σ פעם שנייה.