הדרך הנכונה להסתכל על קבוצות היא גם על ידי וקטור אינסופי. אחרי שאנו נבהלים מזה שהביאו לנו שפות אנו מבינים כי עלינו ללכסן קבוצה.
לפני שנתחיל נעשה סקירה של איך מלכסנים כאשר מדובר קבוצת קבוצות:
[...] תהי g:N→A. אנו נרצה להראות כי g אינה על.
כאשר A היא קבוצה של קבוצות, אנו יכולים להסתכל על A כך: A={B∣B⊆W}. נניח ש-W היא בת מניה.
הערה
נשים לב כי זה גם מתרחש במקרה שלנו שכן {0,1}∗ היא בת מנייה.
נשרטט לנו טבלה שכזו, בה כל עמודה היא מילה ב-w.
W={w0,w1,w2,…}
ואז, לכל אינדקס, נבדוק האם המילה נמצאת ב-g(n) ואם לא, נוסיף אותה לקבוצה שאנו יוצרים על מנת להראות כי g אינה על.
w0g(0)=g(1)=⋮w1/✓w2…
לפעמים, נוכל לצמצם את W עוד יותר כדי לוותר מראש על מקרים לא רלוונטיים. במקרה שלנו, נוכל להתמקד בקבוצה {02i∣i∈N}. השפות ב-A לאו דווקא מוכלות בקבוצה החדשה שלנו, אבל מספיק לנו לקלקל את האיברים המופיעים בה על מנת לראות שהקבוצה אינה בת מניה.
כעת, אנו ערוכים ללכסן. אנו נבנה שפה L כך ש-L∈A ו-∀i∈N:L=g(i).
L={02i∣i∈N,02i∈g(i)}
נראה את זה ויזואלית:
g(0)=g(1)=g(2)=00✓02✓✓04✓06✓✓08✓✓…………
נקבל כי: L={ε,04,…}
נקבל כי L⊆{02i∣i∈N} ולכן, L∈A: כל המילים בעלות מס' זוגי של 0.
לכל i∈N: 02i∈g(i)⟺02i∈L. כלומר, לכל i∈Ng(i) ו-L לא מסכימות על 02i ⇐ g(i)=L ולכן, g אינה על.
וקטור מייצג: אם B⊆A ו-A ב"מ, אפשר לתאר את B כווקטור:
A:B:a0בהתאמה0/1a1…a2a3…
ואז: A={1,2,3,4,5} ו-B={2,5}:
B:(0,1,0,0,1)
הערה (דרכים להוכיח ששפה היא רגולרית)
לבנות אוטומט.
לבנות ביטוי רגולרי.
להוכיח שהיא הפעלה של פעולות סגור על שפות רגולריות.
מהייל נרוד
תרגיל
נסמן B=NN. נגדיר את התומך של f להיות: Sf={n∣f(n)=0} (קבוצת כל האיברים שאינם נשלחים ל-0)
הוכיחו כי הקבוצה הבאה הינה בת מנייה
Y={f∈B∣ סופיתSf}
הערה (הבחנה)
⟺f∈Y קיים j∈N כך שלכל j′>j מתקיים f(j′)=0
נוכל להוכיח על סמך האינדקס המקסימלי ב-Sf.
נגדיר: Yi={f∣ מקבלת 0 מ-i והלאהf}.
מתקיים: Y=⋃i≥0Yi. כעת נותר לנו להראות רק כי כל קבוצה Yi היא בת מנייה.
הערה (אינטואיציה)
תהי f∈Yi אז f ניתנת לתיאור ע"י i האינדקסים הראשונים שלה.
נגדיר: gi:Yi→Ni חח"ע.
דוגמה
f(i)={2i0i≤4i>4
מספיק לנו לתאר את האיברים הראשונים של הפונקציה כוקטור:
f:(02468)000…
זהו וקטור מ-N5.
משפט (שלמדנו)
לכל i∈N: Ni בת מנייה.
שיעורי בית (חשוב)
כמובן שצריך שהכל יהיה פורמלי
לכל f∈Yi:
g(f)=(f(0),f(1),…,f(i−1))
נוכיח כעת כי g חח"ע:
יהיו f1,f2∈Yi כך ש-g(f1)=g(f2). נוכיח כי f1=f2.
אז מהגדרת g, לכל 0≤k≤i מתקיים כי f1(k)=f2(k) ולכל k≥i: f1(k)=f2(k)=0 מהשתייכותן ל-Yi.
⇐ לכל k∈N: f1(k)=f2(k) ⇐(הגדרת שוויון פונקציות) f1=f2.
לכן, g חח"ע לפי הגדרה.
הערה (שרי אמרה)
רוב השאלות על אוטומטים הן שאלות בנייה.
תרגיל
השפות L0,1,2 רגולריות מעל Σ={a,b}.
L={w#k∣w∈Σ∗,w∈Lk(mod3)}
מעל {a,b,#}. הוכיחו שהשפה רגולרית.
דוגמה: aba#15 (הערה: סולמית פה היא תו ולא מספר ה...) שייכת ל-L⟺aba∈L0.
ישנם כל מני דרכים לעשות זאת. ננסה באמצעות ε−NFA.
זוהי דרך קצת פחות טובה שכן כעת נדרש להוכיח שהשפה מתאימה.
נוכל בעוד דרכים כגון:
אוטומט מכפלה: רצים על שלושתם בו"ז ולפי המצבים המקבלים, להחליט כמה # לקרוא. ("זה פח" - שרי)
ביטויים רגולריים: נקח ri כביטוי הרגולרי עבור Li. ואז: r=r0(###)∗+r1(###)∗#+r2(###)∗##
נדרש לעוד שתי שורות נימוק ואז סיימנו.
תרגיל
הוכיחו באמצעות למת הניפוח שהשפה הבאה אינה רגולרית.
L={aibji>j}
הערה
נשים לב ש-xy2z לא יעבוד לנו עם השפה הזו ונדרש לקחת חזקה אחרת לניפוח שלנו.
נניח בשלילה כי L רגולרית.
יהי n≥1 קבוע המובטח ע"י למת הניפוח. נבחר: an+1bn. יהי xyz פירוק של המילה כך ש-∣xy∣≤n וגם y=ε. ולכן, x יהיה רצף של a-ים, y יהיה רצף של-a-ים ו-z יהיה רצף של a-ים ואז b-ים. נכתוב:
s+t≤n,t>0asatan+1−s−tbn
נבחר: i=0 ואז:
asat0an+1−s−tbn=an+1−tbn
מכיוון ש-t>0 נקבל כי n+1−t≤n ולכן, an+1−tbn∈L בסתירה ללמת הניפוח. לכן, L אינה רגולרית.
תרגיל
{aibjck∣אם 0<i אז j=k}
טענה: מתקיימים תנאי למת הניפוח החל מ-i=2.
תהי w∈L כך ש-∣w∣≥2.
aa…aib…bc…c
אם i>0 נקבע: x=ε, y=a ו-=z כל היתר.
אחרת, b…bc…c ופה ברור שניתן לנפח(כי היא רגולרית).
הערה
זוהי דוגמה לשפה שהיא אינה רגולרית אך עדיין ניתנת לניפוח.
בשאלות כאלו, נדרש לעבור על כל המילים ולהראות כי לכל מילה קיים פירוק מתאים.