Obsah

Úkol 2

Bc. Jan Kaláb <[email protected]>

Příklad 1

Uvažte jazyk L₁ = {wcⁱ | w ∈ {a, b}* ∧ (#a(w) = i ∨ #b(w) = i)}.

Sestavte gramatiku G₁ takovou, že L(G₁) = L₁.

G₁ = ({S, A, B}, {a, b, c}, P, S)

P:

Algoritmickým postupem převeďte gramatiku G₁ na zásobníkový automat provádějící syntaktickou analýzu zdola nahoru.

M = ({q, r}, {a, b, c}, {S, A, B, a, b, c, #}, δ, q, #, {r})

Reduce:

Shift:

Accept:

Lze jazyk L₁ přijmout deterministickým zásobníkovým automatem (DZA)? Zdůvodněte své tvrzení (formální důkaz se nepožaduje).

Nelze. Kvůli ∨ v zadání nevíme, zda použít podmínku #a(w) nebo #b(w), a nevíme tedy, zda na zasobníku počítat b nebo a.

Příklad 2

Mějme jazyky L₁ = {aⁱbʲcⁱdʲ | i, j ∈ ℕ} a L₂ = {aⁱbⁱcʲdʲ | i, j ∈ ℕ}.1) Pro každý z jazyků L₁ a L₂ dokažte, nebo vyvraťte, zda je bezkontextový.

L₁

Důkaz sporem.

Předpokládejme, že jazyk L₁ je bezkontextový. Pak podle pumping lemmatu pro bezkontextové jazyky existuje konstanta k taková, že je-li zL₁ a |z| ≥ k, pak lze z napsat ve tvaru: z = uvwxy, vxε, |vwx| ≤ k a pro všechna i ≥ 0 je uvⁱwxⁱyL1.

Zvolíme si z = uᵏvᵏwᵏxᵏyᵏ, |z| > k, i > 1, pak může dojít k následujícímu rozdělení:

Ukázali jsme, že nelze najít takové rozdělení, které by splňovalo podmínky pumping lemmatu pro bezkontextový jazyk, což je spor, a jazyk tedy není bezkontextový.

L₂

G = ({A, S, T}, {a, b, c, d}, P, A)

K jazyku L₂ lze sestavit bezkontextovou gramatiku, tudíž je bezkontextový.

Příklad 3

Mějme jazyky L₃ ∈ ℒ₃ a L₂ ∈ ℒ₂. Dokažte, že problém L₂ ⊆? L₃ je (eventuelně není) rozhodnutelný? K důkazu použijte uzávěrové vlastnosti bezkontextový a regulárních jazyků.

Příklad 4

Uvažujte jazyk L₄, který je generován gramatikou
G₄ = ({E, T, F}, {(, ), true, or, and, not}, P, E), kde

P:

Sestrojte deterministický zásobníkový automat přijímající jazyk L₄ a demonstrujte jeho funkci na přijetí řetězce (true or not(true)) and true.

Deterministický zásobníkový automat přijímající jazyk L43)

  1. δ(S, (, #)
  2. δ(S, true, ])
  3. δ(Z, or, ])
  4. δ(S, not, ])
  5. δ(N, (, ()
  6. δ(S, true, ))
  7. δ(Z, ), ))
  8. δ(Z, ), ])
  9. δ(F, and, #)
  10. δ(S, true, #)

Příklad 5

Mějme gramatiku G₅ = ({S, A, B, C}, {a, b, c}, P, S), kde

P:

Převeďte gramatiku Galgoritmicky do Chomského normální formy.

Bez ε přechodů:

Bez jednoduchých pravidel:

Vlastní gramatika (odstranění zbytečných a nedostupných symbolů):

Chomského normální forma:

G = ({S, <ACa>, <Aa>, <Ca>, A, C, a′, b′, c′}, {a, b, c}, P, S)

P:

Převeďte gramatiku Galgoritmicky do Greibachové normální formy.

Vlastní gramatika:

Odstranění levé rekurze (S < A < C):

Greibachové normální forma:

G = ({S, A, C, C′, a′, c′}, {a, b, c}, P, S)

P:

1)
0 ∈ ℕ
2)
′ značí doplněk
3)
U přechodu ve trvaru a, b / xyz považuji z za nový vrchol zásobníku.