opora

frantisek.plesicek
from frantisek.plesicek More from this publisher
10.02.2019 Views

KAPITOLA 3. REGULÁRNÍ JAZYKY 37 (a) je-li A → xB v P 1 , pak A → xB je v P 5 (b) je-li A → x v P 1 , pak A → xS 5 a A → x jsou v P 5 (c) S 5 → S 1 a S 5 → ɛ jsou v P 5 . Nyní je třeba dokázat tvrzení: Derivace S 5 ⇒ G5 + x 1 S 5 ⇒ G5 + x 1 x 2 S 5 ⇒ G5 + . . . ⇒ G5 + x 1 x 2 . . . x n−1 S 5 ⇒ G5 + x 1 x 2 . . . x n−1 x n existuje tehdy a jen tehdy, když existují derivace S 1 ⇒ G1 + x 1 , S 1 ⇒ G1 + x 2 , . . . , S 1 ⇒ G1 + x n . Z tohoto tvrzení, jehož důkaz ponecháme jako cvičení, bezprostředně plyne L(G 5 ) = (L(G 1 )) ∗ . Protože G 5 je gramatika typu 3, je i jazyk L(G 5 ) typu 3. ✷ 3.3.2 Regulární výrazy Obvyklou notací pro reprezentaci regulárních množin jsou regulární výrazy. Definice 3.10 Regulární výrazy nad Σ a regulární množiny, které označují, jsou rekurzívně definovány takto: (1) ∅ je regulární výraz označující regulární množinu ∅, (2) ε je regulární výraz označující regulární množinu {ε}, (3) a je regulární výraz označující regulární množinu {a} pro všechny a ∈ Σ, (4) jsou-li p, q regulární výrazy označující regulární množiny P a Q, pak (a) (p + q) je regulární výraz označující regulární množinu P ∪ Q, (b) (pq) je regulární výraz označující regulární množinu P · Q, (c) (p ∗ ) je regulární výraz označující regulární množinu P ∗ . (5) Žádné jiné regulární výrazy nad Σ neexistují. Konvence 3.1 Při používání regulárních výrazů stanovujeme následující konvence. 1. Regulární výraz p + značí regulární výraz pp ∗ . 2. Abychom minimalizovali počet používaných závorek, stanovujeme priority operátorů: ∗ a + (iterace – nejvyšší priorita), · (konkatenace), + (alternativa). Příklad 3.15 1. 01 odpovídá {01}. 2. 0 ∗ odpovídá {0} ∗ . 3. (0 + 1) ∗ odpovídá {0, 1} ∗ . 4. (0 + 1) ∗ 011 značí množinu řetězců nad {0, 1} končících 011. 5. (a+b)(a+b+0+1) ∗ značí množinu řetězců nad {a, b, 0, 1} začínající symbolem a nebo b. Nyní jsme si definovali regulární výrazy. K tomu, abychom byli schopni odvodit všechny rovnice nad regulárními výrazy, potřebujeme sadu axiomů. Takovou sadou je Kleeneho algebra.

KAPITOLA 3. REGULÁRNÍ JAZYKY 38 Definice 3.11 Kleeneho algebra sestává z neprázdné množiny se dvěma význačnými konstantami 0 a 1, dvěma binárními operacemi + a · a unární operací ∗ , které splňují následující axiomy: a + (b + c) = (a + b) + c asociativita + [A.1] a + b = b + a komutativita + [A.2] a + a = a idempotence + [A.3] a + 0 = a 0 je identitou pro + [A.4] a(bc) = (ab)c asociativita · [A.5] a1 = 1a = a 1 je identitou pro · [A.6] a0 = 0a = 0 0 je anihilátorem pro · [A.7] a(b + c) = ab + ac distributivita zleva [A.8] (a + b)c = ac + bc distributivita zprava [A.9] 1 + aa ∗ = a ∗ [A.10] 1 + a ∗ a = a ∗ [A.11] b + ac ≤ c ⇒ a ∗ b ≤ c [A.12] b + ca ≤ c ⇒ ba ∗ ≤ c [A.13] V A.12 a A13 reprezentuje ≤ uspořádání definované takto: a ≤ b ⇐⇒ def a+b = b. Příklad 3.16 Příklady Kleeneho algeber (1) Třída 2 Σ∗ všech podmnožin Σ ∗ s konstantami ∅ a {ε} a operacemi ∪, . a ∗. (2) Třída všech regulárních podmnožin Σ ∗ s konstantami ∅ a {ε} a operacemi ∪, . a ∗. (3) Třída všech binárních relací nad množinou X s konstantami v podobě prázdné relace a identity a ∪, kompozicí relací a reflexivním tranzitivním uzávěrem kompozice jako operacemi. (4) Kleeneho algebry matic. Poznámka 3.3 Axiomy A.12 a A.13 lze nahradit následujícími ekvivalentními vztahy (důkaz viz [3]): ac ≤ c ⇒ a ∗ c ≤ c [A.14] ca ≤ c ⇒ ca ∗ ≤ c [A.15] Některé užitečné teorémy Kleeneho algebry, které lze odvodit z jejich axiómů jsou následující: Důkaz: viz [3]. (1) 0 ∗ = 1 (2) 1 + a ∗ = a ∗ (3) a ∗ = a + a ∗ (4) a ∗ a ∗ = a ∗ (5) a ∗∗ = a ∗ (6) (a ∗ b) ∗ a ∗ = (a + b) ∗ pravidlo „vynořování“ [R.16] (7) a(ba) ∗ = (ab) ∗ a pravidlo posuvu [R.17] (8) a ∗ = (aa) ∗ + a(aa) ∗ Pro stručnost uvádíme pouze důkazy prvních dvou teorémů, ostatní (1) 0 ∗ = 1: 0 ∗ A.10 = 1 + 00 ∗ A.7 = 1 + 0 A.4 = 1. (2) 1 + a ∗ = a ∗ – pro stručnost neuvádíme použití A.1, A.2: (a) 1 + a ∗ ≤ a ∗ : i. A.10: a ∗ = 1 + aa ∗ ii. A.3: a ∗ + a ∗ = 1 + aa ∗

KAPITOLA 3. REGULÁRNÍ JAZYKY 37<br />

(a) je-li A → xB v P 1 , pak A → xB je v P 5<br />

(b) je-li A → x v P 1 , pak A → xS 5 a A → x jsou v P 5<br />

(c) S 5 → S 1 a S 5 → ɛ jsou v P 5 .<br />

Nyní je třeba dokázat tvrzení:<br />

Derivace<br />

S 5 ⇒<br />

G5 + x 1 S 5 ⇒<br />

G5 + x 1 x 2 S 5 ⇒<br />

G5 + . . . ⇒<br />

G5 + x 1 x 2 . . . x n−1 S 5 ⇒<br />

G5 + x 1 x 2 . . . x n−1 x n<br />

existuje tehdy a jen tehdy, když existují derivace<br />

S 1 ⇒<br />

G1 + x 1 , S 1 ⇒<br />

G1 + x 2 , . . . , S 1 ⇒<br />

G1 + x n .<br />

Z tohoto tvrzení, jehož důkaz ponecháme jako cvičení, bezprostředně plyne<br />

L(G 5 ) = (L(G 1 )) ∗ . Protože G 5 je gramatika typu 3, je i jazyk L(G 5 ) typu 3.<br />

✷<br />

3.3.2 Regulární výrazy<br />

Obvyklou notací pro reprezentaci regulárních množin jsou regulární výrazy.<br />

Definice 3.10 Regulární výrazy nad Σ a regulární množiny, které označují, jsou<br />

rekurzívně definovány takto:<br />

(1) ∅ je regulární výraz označující regulární množinu ∅,<br />

(2) ε je regulární výraz označující regulární množinu {ε},<br />

(3) a je regulární výraz označující regulární množinu {a} pro všechny a ∈ Σ,<br />

(4) jsou-li p, q regulární výrazy označující regulární množiny P a Q, pak<br />

(a) (p + q) je regulární výraz označující regulární množinu P ∪ Q,<br />

(b) (pq) je regulární výraz označující regulární množinu P · Q,<br />

(c) (p ∗ ) je regulární výraz označující regulární množinu P ∗ .<br />

(5) Žádné jiné regulární výrazy nad Σ neexistují.<br />

Konvence 3.1 Při používání regulárních výrazů stanovujeme následující konvence.<br />

1. Regulární výraz p + značí regulární výraz pp ∗ .<br />

2. Abychom minimalizovali počet používaných závorek, stanovujeme priority<br />

operátorů: ∗ a + (iterace – nejvyšší priorita), · (konkatenace), + (alternativa).<br />

Příklad 3.15<br />

1. 01 odpovídá {01}.<br />

2. 0 ∗ odpovídá {0} ∗ .<br />

3. (0 + 1) ∗ odpovídá {0, 1} ∗ .<br />

4. (0 + 1) ∗ 011 značí množinu řetězců nad {0, 1} končících 011.<br />

5. (a+b)(a+b+0+1) ∗ značí množinu řetězců nad {a, b, 0, 1} začínající symbolem<br />

a nebo b.<br />

Nyní jsme si definovali regulární výrazy. K tomu, abychom byli schopni odvodit<br />

všechny rovnice nad regulárními výrazy, potřebujeme sadu axiomů. Takovou sadou<br />

je Kleeneho algebra.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!