10.02.2019 Views

opora

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY68<br />

Definice 4.10 Přepisovací pravidlo tvaru A → B, A, B ∈ N se nazývá jednoduché<br />

pravidlo.<br />

Algoritmus 4.5 Odstranění jednoduchých pravidel.<br />

Vstup: Gramatika G bez ɛ-pravidel.<br />

Výstup: Ekvivalentní gramatika G ′ bez jednoduchých pravidel.<br />

Metoda:<br />

(1) Pro každé A ∈ N sestroj množinu N A = {B | A ⇒ ∗ B} takto:<br />

a) N 0 = {A}, i = 1<br />

b) N i = {C | B → C je v P a B ∈ N i−1 } ∪ N i−1<br />

c) Jestliže N i ≠ N i−1 , polož i = i + 1 a opakuj krok b). V opačném<br />

případě je N A = N i .<br />

(2) Sestroj P ′ takto: Jestliže B → α je v P a není jednoduchým pravidlem,<br />

pak pro všechna A, pro něž B ∈ N A , přidej k P ′ pravidla A → α<br />

(3) Výsledná gramatika je G = (N, Σ, P ′ , S)<br />

Příklad 4.14 Uvažujme gramatiku s přepisovacími pravidly:<br />

E → E + T | T<br />

T → T ∗ F | F<br />

F → (E) | i<br />

Tato gramatika se liší od gramatiky z příkladu 4.3 pouze jiným značením nonterminálu<br />

a generuje tudíž stejný jazyk aritmetických výrazů<br />

Po aplikování algoritmu 4.5 bude<br />

N E = {E, T, F }<br />

N T = {T, F }<br />

N F = {F }<br />

a výsledná množina přepisovacích pravidel, neobsahující jednoduchá pravidla,<br />

bude:<br />

E → E + T | T ∗ F | (E) | i<br />

T → T ∗ F | (E) | i<br />

F → (E) | i<br />

Věta 4.4 Algoritmus 4.4 převádí vstupní gramatiku G na ekvivalentní gramatiku<br />

G ′ bez jednoduchých pravidel. Důkaz: Gramatika G ′ zřejmě neobsahuje jednoduchá<br />

pravidla. Abychom ukázali, že L(G) = L(G ′ ), dokážeme že platí L(G ′ ) ⊆ L(G) a<br />

také L(G) ⊆ L(G ′ ).<br />

1. L(G ′ ) ⊆ L(G)<br />

Nechť w ∈ L(G ′ ). Pak existuje v G ′ derivace S = α 0 ⇒ α 1 ⇒ . . . ⇒ α n = w.<br />

Jestliže k derivaci α i ⇒ α<br />

G ′ i+1 bylo použito pravidla A → β, pak existuje<br />

nonterminál B (A = B případně) takový, že A ⇒ ∗ B a B ⇒ β a tedy<br />

G G<br />

A ⇒<br />

G ∗ β a α i ⇒<br />

G ∗ α i+1 . Z toho plyne, že platí S ⇒<br />

G ∗ w a w je tudíž v L(G).

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

Saved successfully!

Ooh no, something went wrong!