Bc. Jan Kaláb <[email protected]>
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.
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ý.
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 z ∈ L₁ a |z| ≥ k, pak lze z napsat ve tvaru: z = uvwxy, vx ≠ ε, |vwx| ≤ k a pro všechna i ≥ 0 je uvⁱwxⁱy ∈ L1.
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ý.
G = ({A, S, T}, {a, b, c, d}, P, A)
K jazyku L₂ lze sestavit bezkontextovou gramatiku, tudíž je bezkontextový.
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ů.
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.
Mějme gramatiku G₅ = ({S, A, B, C}, {a, b, c}, P, S), kde
P:
Převeďte gramatiku G₅ algoritmicky 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 G₅ algoritmicky 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: