10.02.2019 Views

opora

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

Cvičení 3.6.3 K pravé lineární gramatice, která obsahuje pravidla<br />

A → B | C<br />

B → 0B | 1B | 011<br />

C → 0D | 1C | ɛ<br />

D → 0C | 1D<br />

vytvořte pravou lineární gramatiku, jež generuje stejný jazyk. Nonterminál A je<br />

výchozím symbolem gramatiky.<br />

Cvičení 3.6.4 Vytvořte pravou regulární gramatiku, která generuje jazyk přijímaný<br />

automatem M ze cvičení 3.6.1.<br />

Cvičení 3.6.5 Vytvořte konečný automat, který přijímá jazyk generovaný gramatikou<br />

ze cvičení 3.6.3.<br />

Cvičení 3.6.6 Na základě algoritmu, jenž je „inverzní“ k algoritmu 3.3, sestrojte<br />

levou regulární gramatiku pro jazyk reálných čísel pro programovací jazyky.<br />

Automat přijímající tento jazyk je uveden v příkladě 3.1.<br />

Cvičení 3.6.7 Na základě gramatiky ze cvičení 2.4.5 vytvořte konečný deterministický<br />

automat, který přijímá jazyk čísel programovacího jazyka Pascal.<br />

Cvičení 3.6.8 Gramatika G = ({S, A n , A n−1 , . . . , A 0 }, {a, b}, P, S) s pravidly<br />

S → A n<br />

A n → A n−1 A n−1<br />

A n−1 → A n−2 A n−2<br />

.<br />

A 2 → A 1 A 1<br />

A 1 → A 0 A 0<br />

A 0 → a | b<br />

popisuje pro n ≥ 0 regulární jazyk nad abecedou {a, b}.<br />

(a) Specifikujte jazyk L(G) gramatikou typu 3.<br />

(b) Převeďte tuto gramatiku na pravou regulární gramatiku.<br />

(c) Převeďte tuto gramatiku na ekvivalentní NKA a DKA.<br />

(d) Popište jazyk specifikovaný gramatikou G ve tvaru regulárního výrazu.<br />

(e) K získanému regulárnímu výrazu vytvořte ekvivalentní rozšířený konečný<br />

automat a deterministický konečný automat.<br />

(f) Srovnejte DKA, které jste získali v (c) a (e). Ukažte, že automat přijímající<br />

jazyk L(G) nepotřebuje více než 2 n + 1 stavů.

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

Saved successfully!

Ooh no, something went wrong!