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É AUTOMATY80<br />
Definice 4.19 Platí-li pro řetězec w ∈ Σ ∗ relace (q 0 , w, Z 0 ) ⊢ ∗ (q, ɛ, α) pro nějaké<br />
q ∈ F a α ∈ Γ ∗ , pak říkáme, že řetězec w je přijímán zásobníkovým automatem<br />
P . Množinu L(P ) všech řetězců přijímaných zásobníkovým automatem P , který<br />
nazýváme jazykem přijímaným zásobníkovým automatem.<br />
Příklad 4.20 Uvažujme jazyk L = {0 n 1 n | n ≥ 0}. Zásobníkový automat P ,<br />
který přijímá jazyk L, má tvar<br />
kde<br />
P = ({q 0 , q 1 , q 2 }, {0, 1}, {Z, 0}, δ, q 0 , Z, {q 0 })<br />
δ(q 0 , 0, Z) = {(q 1 , 0Z)}<br />
δ(q 1 , 0, 0) = {(q 1 , 00)}<br />
δ(q 1 , 1, 0) = {(q 2 , ɛ)}<br />
δ(q 2 , 1, 0) = {(q 2 , ɛ)}<br />
δ(q 2 , ɛ, Z) = {(q 0 , ɛ)}<br />
a pracuje tak, že kopíruje všechny nuly ze vstupního řetězce do zásobníku. Objevíli<br />
se na vstupu symbol 1, pak odstraňuje jednu nulu ze zásobníku. Kromě toho<br />
požaduje, aby všechny nuly předcházely všechny jedničky. Například pro vstupní<br />
řetězec 0011 realizuje automat P tyto přechody:<br />
(q 0 , 0011, Z) ⊢ (q 1 , 011, 0Z)<br />
⊢ (q 1 , 11, 00Z)<br />
⊢ (q 2 , 1, 0Z)<br />
⊢ (q 2 , ɛ, Z)<br />
⊢ (q 0 , ɛ, ɛ)<br />
Ukažme, že skutečně platí L(P ) = L. Z definice funkce přechodů δ a relace ⊢<br />
plyne (q 0 , ɛ, Z) ⊢ 0 (q 0 , ɛ, Z) a tedy ɛ ∈ L(P ). Dále platí<br />
což dohromady implikuje<br />
(q 0 , 0, Z) ⊢ (q 1 , ɛ, 0Z)<br />
(q 1 , 0 i , 0Z) ⊢ i (q 1 , ɛ, 0 i+1 Z)<br />
(q 1 , 1, 0 i+1 Z) ⊢ (q 2 , ɛ, 0 i Z)<br />
(q 2 , 1 i , 0 i Z) ⊢ i (q 2 , ɛ, Z)<br />
(q 2 , ɛ, Z) ⊢ (q 0 , ɛ, ɛ)<br />
(q 0 , 0 n 1 n , Z) 2n+1<br />
⊢ (q 0 , ɛ, ɛ) pro n ≥ 1<br />
a tedy L ⊆ L(P ).<br />
Dokázat opačnou inkluzi L(P ) ⊆ L, tj. dokázat, že zásobníkový automat nepřijímá<br />
jiné řetězce, než 0 n 1 n , n ≥ 1, je obtížnější. Příjme-li zásobníkový automat P<br />
vstupní řetězec, pak musí projít posloupností stavů q 0 , q 1 , q 2 , q 0 .<br />
Jestliže platí (q 0 , w, Z) ⊢ i (q 1 , ɛ, α), pak w = 0 i a α = 0 i Z. Podobně, jestliže<br />
(q 2 , w, α) ⊢ i (q 2 , ɛ, β) pak w = 1 i a α = 0 i β. To však znamená, že relace (q 1 , w, α) ⊢<br />
(q 2 , ɛ, β) platí, právě když w = 1 a α = 0β a relace (q 2 , w, Z) ⊢ ∗ (q 0 , ɛ, ɛ) platí,<br />
právě když w = ɛ. Tedy, jestliže platí (q 0 , w, Z) ⊢ i (q 0 , ɛ, α) pro nějaké i > 0, pak<br />
w = 0 n 1 n , i = 2n + 1 a α = ɛ, tj. L(P ) ⊆ L.