opora

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

KAPITOLA 3. REGULÁRNÍ JAZYKY 29 tím jsme platnost induktivního předpokladu dokázali pro všechna i ≥ 0. Speciálně pak platí S ⇒ ∗ w, právě když (S, w) ∗ ⊢(C, ɛ), C ∈ F a tedy L(G) = L(M). ✷ Příklad 3.9 Ke gramatice G = ({X, Y, Z, U, V, W }, {a, b, c}, P, X), kde P obsahuje pravidla X → ɛ | aY | cZ | aU Y → aY | cZ Z → bX U → bV V → cW W → ɛ sestrojíme konečný automat, který přijímá jazyk L(G). Budeme postupovat podle věty 3.6. Funkci přechodů δ reprezentujeme diagramem přechodů (obr. 3.1), v němž koncové stavy jsou vyznačeny dvojitým kroužkem a počáteční stav malou šipkou bez výstupního vrcholu. M = (Q, Σ, δ, q 0 , F ) kde Q = {X, Y, Z, U, V, W } Σ = {a, b, c} δ : viz obr. 3.1 q 0 = X F = {X, W } Obrázek 3.1: Diagram přechodů automatu M Věta 3.7 Nechť L = L(M) pro nějaký konečný automat M. Pak existuje gramatika G typu 3 taková, že L = L(G), tj. L M ⊆ L 3 .

KAPITOLA 3. REGULÁRNÍ JAZYKY 30 Důkaz: Nechť M = (Q, Σ, δ, q 0 , F ). Protože každý nedeterministický automat může být převeden na deterministický automat přijímající stejný jazyk, předpokládejme, že M je deterministický automat. Nechť G je gramatika typu 3, G = (Q, Σ, P, q 0 ), jejíž množina P přepisovacích pravidel je definována takto: (1) je-li δ(q, a) = r, pak P obsahuje pravidlo q → ar (2) je-li p ∈ F , pak P obsahuje pravidlo p → ɛ V další části probíhá důkaz zcela analogicky důkazu věty 3.6. Příklad 3.10 Na základě příkladu 3.1 sestrojíme gramatiku typu 3, která generuje jazyk zápisů čísel. Přechodová funkce deterministického konečného automatu, který přijímá tento jazyk, je v tabulce 3.1. Výsledná gramatika bude tvaru: P obsahuje pravidla G = ({q 0 , q 1 , q 2 , q 3 , q 4 , q 5 , q 6 , q 7 , q 8 }, {c, z, e, ., ♯}, P, q 0 ) q 0 → zq 8 | cq 7 | ·q 6 | e q4 q 1 → ɛ q 2 → cq 2 | ♯q 1 q 3 → cq 2 q 4 → zq 3 | cq 2 q 5 → cq 5 | e q4 | ♯q 1 q 6 → cq 5 q 7 → cq 7 | ·q 6 | e q4 | ♯q 1 q 8 → cq 7 | ·q 6 | e q4 Poznamenejme, že převod této gramatiky na gramatiku regulární je velice snadný, stačí dosadit za q 1 prázdný řetězec a odstranit pravidlo q 1 → ɛ. Věta 3.8 Třída jazyků, jež jsou přijímány konečnými automaty, je totožná s třídou jazyků typu 3 Chomského hierarchie. ✷ Důkaz: Tvrzení bezprostředně plyne z vět 3.6 a 3.7. ✷ Algoritmus konstrukce nedeterministického konečného automatu z důkazu věty 3.6 může být snadno modifikován pro převod pravé regulární gramatiky na ekvivalentní nedeterministický konečný automat. Algoritmus 3.2 Konstrukce nedeterministického konečného automatu k pravé regulární gramatice. Vstup: Pravá regulární gramatika G = (N, Σ, P, S), jejíž pravidla mají tvar A → aB a A → a, kde A, B ∈ N a a ∈ Σ, případně S → ɛ za předpokladu, že S se nevyskytuje na pravé straně žádného pravidla. Výstup: Nedeterministický konečný automat M = (Q, Σ, δ, q 0 , F ), pro který je L(M) = L(G). Metoda: (1) Položíme Q = N ∪ {q F }, kde q F reprezentuje koncový stav.

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

Důkaz: Nechť M = (Q, Σ, δ, q 0 , F ). Protože každý nedeterministický automat<br />

může být převeden na deterministický automat přijímající stejný jazyk, předpokládejme,<br />

že M je deterministický automat. Nechť G je gramatika typu 3,<br />

G = (Q, Σ, P, q 0 ), jejíž množina P přepisovacích pravidel je definována takto:<br />

(1) je-li δ(q, a) = r, pak P obsahuje pravidlo q → ar<br />

(2) je-li p ∈ F , pak P obsahuje pravidlo p → ɛ<br />

V další části probíhá důkaz zcela analogicky důkazu věty 3.6.<br />

Příklad 3.10 Na základě příkladu 3.1 sestrojíme gramatiku typu 3, která generuje<br />

jazyk zápisů čísel. Přechodová funkce deterministického konečného automatu,<br />

který přijímá tento jazyk, je v tabulce 3.1. Výsledná gramatika bude tvaru:<br />

P obsahuje pravidla<br />

G = ({q 0 , q 1 , q 2 , q 3 , q 4 , q 5 , q 6 , q 7 , q 8 }, {c, z, e, ., ♯}, P, q 0 )<br />

q 0 → zq 8 | cq 7 | ·q 6 | e q4<br />

q 1 → ɛ<br />

q 2 → cq 2 | ♯q 1<br />

q 3 → cq 2<br />

q 4 → zq 3 | cq 2<br />

q 5 → cq 5 | e q4 | ♯q 1<br />

q 6 → cq 5<br />

q 7 → cq 7 | ·q 6 | e q4 | ♯q 1<br />

q 8 → cq 7 | ·q 6 | e q4<br />

Poznamenejme, že převod této gramatiky na gramatiku regulární je velice<br />

snadný, stačí dosadit za q 1 prázdný řetězec a odstranit pravidlo q 1 → ɛ.<br />

Věta 3.8 Třída jazyků, jež jsou přijímány konečnými automaty, je totožná s třídou<br />

jazyků typu 3 Chomského hierarchie.<br />

✷<br />

Důkaz: Tvrzení bezprostředně plyne z vět 3.6 a 3.7.<br />

✷<br />

Algoritmus konstrukce nedeterministického konečného automatu z důkazu věty<br />

3.6 může být snadno modifikován pro převod pravé regulární gramatiky na ekvivalentní<br />

nedeterministický konečný automat.<br />

Algoritmus 3.2 Konstrukce nedeterministického konečného automatu k pravé<br />

regulární gramatice.<br />

Vstup: Pravá regulární gramatika G = (N, Σ, P, S), jejíž pravidla mají tvar A →<br />

aB a A → a, kde A, B ∈ N a a ∈ Σ, případně S → ɛ za předpokladu, že S<br />

se nevyskytuje na pravé straně žádného pravidla.<br />

Výstup: Nedeterministický konečný automat M = (Q, Σ, δ, q 0 , F ), pro který je<br />

L(M) = L(G).<br />

Metoda:<br />

(1) Položíme Q = N ∪ {q F }, kde q F reprezentuje koncový stav.

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

Saved successfully!

Ooh no, something went wrong!