10.02.2019 Views

opora

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.

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

Saved successfully!

Ooh no, something went wrong!