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 3. REGULÁRNÍ JAZYKY 26<br />

Derivaci A ⇒<br />

G<br />

a 1 a 2 . . . a n zřejmě odpovídá právě derivace A ⇒<br />

G ′ n+1 a 1 a 2 . . . a n .<br />

(4) zbývající, tzv. jednoduchá pravidla tvaru A → B, A, B ∈ N, nahradíme<br />

takto:<br />

(a) Pro každé A ∈ N sestrojíme množinu N A = {B | A ⇒ ∗ B}.<br />

(b) Množinu pravidel P ′ rozšíříme takto: Jestliže B → α je v P a není<br />

jednoduchým pravidlem, pak pro všechna A, pro něž B ∈ N A , přidáme<br />

k P ′ pravidla A → α.<br />

Bod 4b aplikuje obecný algoritmus odstranění jednoduchých pravidel bezkontextové<br />

gramatiky, který je uveden a dokázán v kapitole 4 (algoritmus 4.5). Jeho<br />

součástí je také výpočet množiny N A .<br />

✷<br />

Příklad 3.5 Na základě předchozí věty budeme transformovat pravou lineární<br />

gramatiku G = ({X, Y }, {a, b, c}, P, X), kde P obsahuje pravidla:<br />

Podle 1 budou v P ′ pravidla:<br />

X → abc | Y | ɛ<br />

Y → aY | cbX<br />

X → ɛ, Y → aY<br />

Podle 2 nahradíme pravidlo Y → cbX pravidly<br />

Y → cZ, Z → bX<br />

Podle 3 nahradíme pravidlo X → abc pravidly<br />

X → aU, U → bV, V → cW, W → ɛ<br />

Podle 4 nahradíme pravidlo X → Y . Protože N X = {X, Y } přidáme k P ′ pravidla<br />

X → aY, X → cZ<br />

Výsledná gramatika má pak tvar G ′ = ({X, Y, Z, U, V, W }, {a, b, c}, P ′ , X) kde<br />

P ′ obsahuje pravidla:<br />

X → ɛ | aY | cZ | aU<br />

Y → aY | cZ<br />

Z → bX<br />

U → bV<br />

V → cW<br />

W → ɛ<br />

Věta 3.3<br />

Každý jazyk typu 3 lze generovat pravou regulární gramatikou.<br />

Důkaz: Pravou regulární gramatiku získáme z gramatiky zkonstruované podle<br />

věty 3.2 odstraněním pravidel s prázdným řetězcem na pravé straně. Systematicky<br />

tento postup popisuje algoritmus 4.4 v kapitole 4 (níže jej ilustrujeme na příkladě).<br />

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

Saved successfully!

Ooh no, something went wrong!