opora

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

KAPITOLA 3. REGULÁRNÍ JAZYKY 35 Řešení: V řešení příkladu si ukážeme, jak vypadají stavy na jednotlivých řádcích algoritmu 3.5. 0 ≡ δ a b 1. Neobsahuje nedostupné stavy. I: A F I B II F A E 0 3. ≡ = {{A, F }, {B, C, D, E}} II: B I E II II D II 1 5.1. ≡ = {{A, F }, {B, E}, {C, D}} C C II F I D D II A I E B II C II 5.2. 9–11. 2 ≡ = {{A, F }, {B, E}, {C, D}} = 1 ≡ = ≡ 8. Q ′ = {[A], [B], [C]}, kde [A] = {A, F }, [B] = {B, E}, [C] = {C, D} a a a b b [A] [B] [C] 1 ≡ δ a b I: A F I B II F A I E II II: B E II D III E B II C III III: C C III F I D D III A I b 3.3 Regulární množiny a regulární výrazy 3.3.1 Regulární množiny Definice 3.9 Nechť Σ je konečná abeceda. Regulární množinu nad abecedou Σ definujeme rekurzívně takto: (1) ∅ (prázdná množina) je regulární množina nad Σ (2) {ɛ} (množina obsahující pouze prázdny řetězec) je regulární množina nad Σ (3) {a} pro všechna a ∈ Σ je regulární množina nad Σ (4) jsou-li P a Q regulární množiny nad Σ, pak také P ∪ Q, P · Q a P ∗ jsou regulární množiny nad Σ (5) regulárními množinami jsou právě ty množiny, které lze získat aplikací 1–4. Třída regulárních množin je tedy nejmenší třída jazyků, která obsahuje ∅, {ɛ}, {a} pro všechny symboly a a je uzavřena vzhledem k operacím sjednocení, součinu a iterace. Příklad 3.14 L = ({a} ∪ {d}) · ({b} ∗ ) · {c} je regulární množina nad Σ = {a, b, c, d}. Ukážeme, že třída regulárních množin tvoří právě třídu L 3 , tj. třídu jazyka typu 3 Chomského hierarchie.

KAPITOLA 3. REGULÁRNÍ JAZYKY 36 Věta 3.12 Nechť Σ je konečná abeceda. Pak ∅ (1) {ɛ} (2) {a} pro všechna a ∈ Σ (3) jsou jazyky typu 3 nad abecedou Σ. Důkaz: (1) G = ({S}, Σ, ∅, S) je gramatika typu 3 pro kterou L(G) = ∅ (2) G = ({S}, Σ, {S → ɛ}, S) je gramatika typu 3 pro kterou L(G) = {ɛ} (3) G a = ({S}, Σ, {S → a}, S) je gramatika typu 3, pro kterou L(G a ) = {a} ✷ Věta 3.13 Nechť L 1 a L 2 jsou jazyky typu 3 nad abecedou Σ. Pak jsou jazyky typu 3 nad abecedou Σ. L 1 ∪ L 2 (1) L 1 · L 2 (2) L ∗ 1 (3) Důkaz: Protože L 1 a L 2 jsou jazyky typu 3, můžeme předpokládat existenci gramatik G 1 = (N 1 , Σ, P 1 , S 1 ) a G 2 = (N 2 , Σ, P 2 , S 2 ) typu 3 takových, že L(G 1 ) = L 1 a L(G 2 ) = L 2 . Bez újmy na obecnosti dále předpokládejme, že množiny N 1 a N 2 jsou disjunktní. (1) Nechť G 3 = (N 1 ∪ N 2 ∪ {S 3 }, Σ, P 1 ∪ P 2 ∪ {S 3 → S 1 , S 3 → S 2 }, S 3 ) je gramatika typu 3, kde S 3 je nový nonterminál, S 3 /∈ N 1 , S 3 /∈ N 2 . Zřejmě L(G 3 ) = L(G 1 ) ∪ L(G 2 ), poněvadž pro každou derivaci S 3 ⇒ G3 + w existuje buď derivace S 1 ⇒ G1 + w, nebo S 2 ⇒ G2 + w a naopak. Protože G 3 je gramatika typu 3, je L(G 3 ) jazyk typu 3. (2) Nechť G 4 = (N 1 ∪ N 2 , Σ, P 4 , S 1 ) je gramatika typu 3, jejíž množina přepisovacích pravidel P 4 je definována takto: (a) je-li A → xB v P 1 , pak A → xB je v P 4 (b) je-li A → x v P 1 , pak A → xS 2 je v P 4 (c) všechna pravidla z P 2 jsou v P 4 . Nyní, jestliže S 1 ⇒ G1 + w, pak S 1 ⇒ G4 + wS 2 . Je-li dále S 2 ⇒ G2 + x, pak S 2 ⇒ G4 + x a tedy S 1 ⇒ G4 + wx pro libovolné w a x. Z toho plyne L(G 1 ) · L(G 2 ) ⊆ L(G 4 ). Předpokládejme, že platí S 1 ⇒ G4 + w. Protože v P 4 nejsou žádná pravidla tvaru A → x z množiny P 1 , můžeme tuto derivaci zapsat ve tvaru S 1 ⇒ G4 + x S 2 ⇒ G4 + xy, kde w = xy, přičemž všechna pravidla použitá v derivaci S 1 ⇒ G4 + xS 2 byla odvozena podle (a) a (b). Pak ale musí existovat derivace S 1 ⇒ G1 + x a S 2 ⇒ G2 + y a tudíž L(G 4 ) ⊆ L(G 1 ) · L(G 2 ). Z toho však plyne L(G 4 ) = L(G 1 ) · L(G 2 ). (3) Nechť G 5 = {N 1 ∪ {S 5 }, Σ, P 5 , S 5 }, S 5 /∈ N 1 a množina P 5 je konstruována takto:

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

Věta 3.12 Nechť Σ je konečná abeceda. Pak<br />

∅ (1)<br />

{ɛ} (2)<br />

{a} pro všechna a ∈ Σ (3)<br />

jsou jazyky typu 3 nad abecedou Σ.<br />

Důkaz:<br />

(1) G = ({S}, Σ, ∅, S) je gramatika typu 3 pro kterou L(G) = ∅<br />

(2) G = ({S}, Σ, {S → ɛ}, S) je gramatika typu 3 pro kterou L(G) = {ɛ}<br />

(3) G a = ({S}, Σ, {S → a}, S) je gramatika typu 3, pro kterou L(G a ) = {a}<br />

✷<br />

Věta 3.13 Nechť L 1 a L 2 jsou jazyky typu 3 nad abecedou Σ. Pak<br />

jsou jazyky typu 3 nad abecedou Σ.<br />

L 1 ∪ L 2 (1)<br />

L 1 · L 2 (2)<br />

L ∗ 1 (3)<br />

Důkaz: Protože L 1 a L 2 jsou jazyky typu 3, můžeme předpokládat existenci<br />

gramatik G 1 = (N 1 , Σ, P 1 , S 1 ) a G 2 = (N 2 , Σ, P 2 , S 2 ) typu 3 takových, že L(G 1 ) =<br />

L 1 a L(G 2 ) = L 2 . Bez újmy na obecnosti dále předpokládejme, že množiny N 1 a<br />

N 2 jsou disjunktní.<br />

(1) Nechť G 3 = (N 1 ∪ N 2 ∪ {S 3 }, Σ, P 1 ∪ P 2 ∪ {S 3 → S 1 , S 3 → S 2 }, S 3 ) je<br />

gramatika typu 3, kde S 3 je nový nonterminál, S 3 /∈ N 1 , S 3 /∈ N 2 . Zřejmě<br />

L(G 3 ) = L(G 1 ) ∪ L(G 2 ), poněvadž pro každou derivaci S 3 ⇒<br />

G3 + w existuje<br />

buď derivace S 1 ⇒<br />

G1 + w, nebo S 2 ⇒<br />

G2 + w a naopak. Protože G 3 je gramatika<br />

typu 3, je L(G 3 ) jazyk typu 3.<br />

(2) Nechť G 4 = (N 1 ∪ N 2 , Σ, P 4 , S 1 ) je gramatika typu 3, jejíž množina přepisovacích<br />

pravidel P 4 je definována takto:<br />

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

(b) je-li A → x v P 1 , pak A → xS 2 je v P 4<br />

(c) všechna pravidla z P 2 jsou v P 4 .<br />

Nyní, jestliže S 1 ⇒<br />

G1 + w, pak S 1 ⇒<br />

G4 + wS 2 . Je-li dále S 2 ⇒<br />

G2 + x, pak S 2 ⇒<br />

G4 + x<br />

a tedy S 1 ⇒<br />

G4 + wx pro libovolné w a x. Z toho plyne L(G 1 ) · L(G 2 ) ⊆ L(G 4 ).<br />

Předpokládejme, že platí S 1 ⇒<br />

G4 + w. Protože v P 4 nejsou žádná pravidla<br />

tvaru A → x z množiny P 1 , můžeme tuto derivaci zapsat ve tvaru S 1 ⇒<br />

G4<br />

+<br />

x S 2 ⇒<br />

G4 + xy, kde w = xy, přičemž všechna pravidla použitá v derivaci<br />

S 1 ⇒<br />

G4 + xS 2 byla odvozena podle (a) a (b). Pak ale musí existovat derivace<br />

S 1 ⇒<br />

G1 + x a S 2 ⇒<br />

G2 + y a tudíž L(G 4 ) ⊆ L(G 1 ) · L(G 2 ). Z toho však plyne<br />

L(G 4 ) = L(G 1 ) · L(G 2 ).<br />

(3) Nechť G 5 = {N 1 ∪ {S 5 }, Σ, P 5 , S 5 }, S 5 /∈ N 1 a množina P 5 je konstruována<br />

takto:

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

Saved successfully!

Ooh no, something went wrong!