חזור לתיקייה: תרגול

13 - ביטויים רגולריים

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה
  • כללי

13 - ביטויים רגולריים

02340129

מבוא לתורת הקבוצות ואוטומטים למדמח

רשימות תרגול לקריאה בשבת

ביטויים רגולריים

הופק מתוך תקיית התואר של שקד

uni-folder.vercel.app

ביטוי רגולרי מעל א"ב Σ\SigmaΣ מוגדר בהגדרה רקורסיבית ונגדיר אותו כך:

  • כל אות σ∈Σ\sigma \in\Sigmaσ∈Σ היא ביטוי רגולרי.
  • הביטוי ∅\emptyset∅ הוא ביטוי רגולרי.
  • המילה ε\epsilonε היא ביטוי רגולרי.

אלו מקרי הבסיס. כעת, נרצה להרחיב את ההגדרה באמצעות הצעד:
יהיו r1,r2r_{1},r_{2}r1​,r2​ ביטויים רגולריים. אזי גם הביטויים הבאים רגולריים:

r1∗,r1+r2,r1⋅r2r_{1}^*, \qquad r_{1}+r_{2}, \qquad r_{1}\cdot r_{2}r1∗​,r1​+r2​,r1​⋅r2​

ראינו בהרצאה כי לכל ביטוי רגולרי יש שפה שמוגדרת עליו.

הערה

ביטויים רגולריים נקראים רגולריים מכיוון שביטוי רגולרי שקול לשפה רגולרית.

משפט

  • אם LLL שפה רגולרית, אז קיים ביטוי רגולרי rrr כך ש-L[r]=LL[r]=LL[r]=L.
  • אם rrr ביטוי רגולרי אז L[r]L[r]L[r] היא שפה רגולרית.
תרגיל

כתבו ביטוי רגולרי עבור כל אחת מהשפות הבאות: (אין צורך להוכיח נכונות)
א. שפת כל המילים מעל {a,b}\left\{ a,b \right\}{a,b} כששתי האותיות האחרונות זהות.
ב. השפה המשלימה לשפה מסעיף א'

פתרון א':

(a+b)∗⋅(aa+bb)(a+b)^* \cdot(aa+bb)(a+b)∗⋅(aa+bb)

פתרון ב':

ε+a+b+(a+b)∗⋅(ab+ba)\epsilon+a+b+(a+b)^*\cdot(ab+ba)ε+a+b+(a+b)∗⋅(ab+ba)
תרגיל

L1L_{1}L1​ היא שפת המילים מעל א"ב {a,b}\left\{ a,b \right\}{a,b} שלא מכילות את הרצף ababab.
רשמו ביטוי רגולרי והוכיחו את נכונותו.

הביטוי: b∗a∗b^*a^*b∗a∗
הוכחה:

טענה

מילה לא מכילה רצף ababab   ⟺  \iff⟺ כל האותיות bbb במילה מגיעות לפני האותיות aaa

הוכחת הטענה:
⇒: אם www מילה שבה כל האותיות bbb מגיעות לפני האותיות aaa אזי היא מהצורה b…ba…ab\dots ba\dots ab…ba…a שאינה מכילה את הרצף ababab.
⇐: אם www לא מכילה את הרצף ababab. נניח בשלילה שקיימת bbb שמגיעה אחרי aaa. לכן, www היא מהצורה __a__b__\_\_a\_\_b\_\___a__b__.
נראה באינדוקציה כי חייב להיות ababab ב-www.
∎
נראה כי מתקיים L[a∗b∗]=L1L[a^*b^*]=L_{1}L[a∗b∗]=L1​ ע"י הכלה דו כיוונית.
תהי w∈L1w \in L_{1}w∈L1​. ע"פ הגדרת L1L_{1}L1​ המילה www לא מכילה את הרצף ababab. ע"פ טענת העזר שלנו, כל ה-aaa-ים ב-www מופיעים אחרי ה-bbb-ים. לכן, הצורה של www היא: b…ba…ab\dots ba\dots ab…ba…a ואז w∈[b]∗[a]∗w \in[b]^*[a]^*w∈[b]∗[a]∗ ולכן w∈L[r]w \in L[r]w∈L[r].
תהי w∈L[r]w \in L[r]w∈L[r], אזי, מהגדרת L[r]L[r]L[r] מתקיים w=bmanw=b^ma^nw=bman כאשר n,m∈Nn,m \in \mathbb{N}n,m∈N. לכן, www היא מהצורה b…ba…ab\dots ba\dots ab…ba…a ולכן, במילה לא מופיע הרצף ababab ולכן, ע"פ הגדרת L1L_{1}L1​ מתקיים w∈L1w \in L_{1}w∈L1​.
לכן, ע"פ הכלה דו כיוונית L1=L[r]L_{1}=L[r]L1​=L[r].
∎