You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY67<br />
Další důležitou transformací, kterou nyní popíšeme, je transformace odstraňující<br />
z gramatiky pravidla tvaru A → ɛ (ɛ je prázdný řetězec), tzv. ɛ-pravidla.<br />
Jestliže ovšem L(G) má obsahovat také prázdný řetězec, pak není možné aby<br />
G neobsahovala žádné ɛ-pravidlo. Následující definice gramatiky bez ɛ-pravidla<br />
respektuje tuto skutečnost.<br />
Definice 4.9<br />
Říkáme, že gramatika G = (N, Σ, P, S) je gramatikou bez ɛ-pravidel, jestliže<br />
buď P neobsahuje žádné ɛ-pravidlo, nebo, v případě ɛ ∈ L(G), existuje jediné<br />
ɛ-pravidlo tvaru S → ɛ a výchozí symbol S se nevyskytuje na pravé straně žádného<br />
pravidla z P .<br />
Algoritmus 4.4 Transformace na gramatiku bez ɛ-pravidel.<br />
Vstup: Gramatika G = (N, Σ, P, S)<br />
Výstup: Ekvivalentní gramatika G ′ = (N ′ , Σ ′ , P ′ , S ′ ) bez ɛ-pravidel.<br />
Metoda:<br />
(1) Sestroj N ɛ = {A | A ∈ N a A ⇒ ∗ ɛ}. Konstrukce množiny N ɛ je analogická<br />
konstrukci N t z 4.1.<br />
(2) Nechť P ′ je množina pravidel, kterou konstruujeme takto:<br />
a) Jestliže A → α 0 B 1 α 1 B 2 . . . B k α k je v P, k ≥ 0 a každé B i je v N ɛ , 1 ≤<br />
i ≤ k, avšak žádný ze symbolů řetězců α j není v N ɛ , 0 ≤ j ≤ k, pak<br />
k P ′ přidej všechna nová pravidla tvaru<br />
A → α 0 X 1 α 1 X 2 . . . X k α k<br />
kde X i je buď B i nebo ɛ. Nepřidávej ɛ-pravidlo A → ɛ, které se<br />
objeví, jsou-li všechna α i = ɛ.<br />
b) Jestliže S ∈ N ɛ pak k P ′ přidej pravidla<br />
S ′ → ɛ | S<br />
S ′ je nový výchozí symbol. Polož N ′ = N ∪ {S ′ } Jestliže S /∈ N ɛ ,<br />
pak N ′ = N a S ′ = S<br />
(3) Výsledná gramatika má tvar G ′ = (N ′ , Σ ′ , P ′ , S ′ )<br />
Příklad 4.13 Uvažujme gramatiku G = ({S}, {a, b}, P, S), kde P obsahuje pravidla<br />
S → aSbS | bSaS | ɛ. Po aplikování algoritmu 4.4 získáme gramatiku G ′<br />
bez ɛ-pravidel. G ′ = ({S ′ , S}, {a, b}, P ′ , S ′ ), kde P ′ obsahuje pravidla<br />
S ′ → S | ɛ<br />
S → aSbS | abS | aSb | ab | bSaS | baS | bSa | ba<br />
Věta 4.3 Algoritmus 4.3 převádí vstupní gramatiku G na ekvivalentní gramatiku<br />
G ′ bez ɛ-pravidel Důkaz: G ′ zřejmě neobsahuje ɛ-pravidla kromě případného<br />
pravidla S → ɛ, je-li ɛ ∈ L(G). Důkaz, že L(G) = L(G ′ ) se provede indukcí pro<br />
délku řetězce w v ekvivalenci<br />
A ⇒<br />
G ′ ∗ w právě když w ≠ ɛ ∧ A ⇒<br />
G ∗ w<br />
Jinou užitečnou transformací je odstranění pravidel tvaru A → B.<br />
✷