opora
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY83 (i) Jestliže l ≥ k, pak pro všechna Z ∈ Γ 1 a α ∈ Γ ∗ 1 taková, že |α| = m − k δ 1 ([q, X 1 . . . X k α], a, Z) obsahuje ([r, β], γZ) kde βγ = Y 1 . . . Y l α a |β| = m. (ii) Je-li l < k, pak pro všechna Z ∈ Γ 1 a α ∈ Γ ∗ 1 taková, že |α| = m − k δ 1 ([q, X 1 . . . X k α], a, Z) obsahuje ([r, Y 1 . . . Y l αZ], ɛ) b) Pro všechna q ∈ Q, Z ∈ Γ 1 a α ∈ Γ ∗ 1 taková, že |α| < m δ 1 ([q, α], ɛ, Z) = {([q, α, Z], ɛ)} Tato pravidla vedou k naplnění vyrovnávací paměti (obsahuje m symbolů). (4) q 1 = [q 0 , Z 0 , Z m−1 1 ]. Vyrovnávací paměť obsahuje na počátku symbol Z 0 na vrcholu a m − 1 symbolů Z 1 na dalších místech. Symboly Z 1 jsou speciální znaky pro označení dna zásobníku. (5) F 1 = {[q, α] | q ∈ F, α ∈ Γ ∗ 1} Lze ukázat, že (q, aw, X 1 . . . X k X k+1 . . . X n ) ⊢(r, w, Y 1 . . . Y l X k+1 . . . X n ) P platí, právě když ([q, α], aw, β) ⊢ + P 1 ([r, α ′ ], w, β ′ ) kde αβ = X 1 . . . X n Z m 1 α ′ β ′ = Y 1 . . . Y l X k+1 . . . X n Z1 m |α| = |α ′ | = m a mezi těmito dvěma konfiguracemi automatu P 1 není žádná konfigurace, ve které by druhý člen stavu (vyrovnávací paměť) měl délku m. Tedy relace platí, právě když (g 0 , w, Z 0 ) ⊢(q, ɛ, α) P pro q ∈ F, α ∈ Γ ∗ ([q 0 , Z 0 , Z m−1 1 ], w, Z 1 ) ∗ ⊢ P 1 ([q, β], ɛ, γ) kde |β| = m a βγ = αZ m 1 . Tedy L(P ) = L(P 1 ). Definice 4.21 Nechť P = (Q, Σ, Γ, δ, q 0 , Z 0 , F ) je zásobníkový nebo rozšířený zásobníkový automat. Řetězec w je přijímán s vyprázdněním zásobníku, jestliže platí (q 0 , w, Z 0 ) ⊢ + (q, ɛ, ɛ), q ∈ Q. Označme L ɛ (P ) množinu všech řetězců, které jsou přijímány zásobníkovým automatem P s vyprázdněním zásobníku. Věta 4.12 Nechť L je jazyk přijímaný zásobníkovým automatem P = (Q, Σ, Γ, δ, q 0 , Z 0 , F ), L = L(P ). Lze zkonstruovat zásobníkový automat P ′ takový, že L ɛ (P ′ ) = L. Důkaz: Opět budeme konstruovat automat P ′ tak, aby simuloval automat P . Kdykoli automat P dospěje do koncového stavu, přejde do speciálního stavu q ɛ , který způsobí vyprázdnění zásobníku. Musíme však uvážit situaci, kdy automat P je v konfiguraci s prázdným zásobníkem, nikoliv však v koncovém stavu. Abychom zabránili případům, že automat P ′ přijímá řetězec, který nemá být přijat, přidáme ✷
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY84 k zásobníkové abecedě automatu P ′ znak, jenž bude označovat dno zásobníku a může být vybrán pouze tehdy, je-li automat P ′ ve stavu q ɛ . Formálně vyjádřeno, nechť P = (Q ∪ {q ɛ , q ′ }, Σ, Γ ∪ {Z ′ }, δ ′ , q ′ , Z ′ , ∅), kde symbolem ∅ vyznačujeme, že P přijímá řetězec s vyprázdněním zásobníku. Zobrazení δ nyní definujeme takto: (1) Jestliže δ(q, a, Z) obsahuje (r, γ), pak δ ′ (q, a, Z) obsahuje (r, γ) pro všechna q ∈ Q, a ∈ Σ ∪ {ɛ} a Z ∈ Γ. (2) δ(q ′ , ɛ, Z ′ ) = {(q 0 , Z 0 Z ′ )}. První přechod zásobníkového automatu P ′ uloží do zásobníku řetězec Z 0 Z ′ , kde Z ′ je speciální znak označující dno zásobníku, a přejde do počátečního stavu automatu P . (3) Pro všechna q ∈ F a Z ∈ Γ ∪ {Z ′ } obsahuje δ ′ (q, ɛ, Z) prvek (q ɛ , ɛ). (4) Pro všechna Z ∈ Γ ∪ {Z ′ } je δ(q ɛ , ɛ, Z) = {(q ɛ , ɛ)}. Nyní zřejmě platí právě když (q ′ , w, Z ′ ) ⊢ P ′ (q 0 , w, Z 0 Z ′ ) ⊢ n P ′ (q, ɛ, Y 1 . . . Y r ) ⊢ P ′ (q ɛ , ɛ, Y 2 . . . Y r ) ⊢ r−1 P ′ (q ɛ, ɛ, ɛ) kde Y r = Z ′ , (q 0 , w, Z 0 ) ⊢ n (q, ɛ, Y 1 . . . Y r−1 ) P pro q ∈ F a Y 1 . . . Y r−1 ∈ Γ ∗ . Tudíž L ɛ (P ′ ) = L(P ). Předchozí věta platí také obráceně ✷ Věta 4.13 Nechť P = (q, Σ, Γ, δ, q 0 , Z 0 , ∅) je zásobníkový automat přijímající vyprázdněním zásobníku. Lze zkonstruovat zásobníkový automat P ′ takový, že L(P ′ ) = L ɛ (P ). Důkaz: Zásobníkový automat P ′ konstruujeme tak, že má speciální symbol Z ′ na dně zásobníku. Jakmile je tento symbol ze zásobníku odstraněn, přechází automat P ′ do nového koncového stavu q f : F ′ = {q f }. Formální konstrukci automatu P ′ nebudeme provádět. ✷ 4.11 Ekvivalence bezkontextových jazyků a jazyků přijímaných zásobníkovými automaty Nejdříve ukážeme, jak lze zkonstruovat nedeterministický syntaktický analyzátor jazyka generovaného bezkontextovou gramatikou, který pracuje metodou shora– dolů. L 2 = L P L 2 ⊆ L P Věta 4.14 Nechť G = (N, Σ, P, S) je bezkontextová gramatika. Z gramatiky G můžeme zkonstruovat zásobníkový automat R takový, že L ɛ (R) = L(G). Důkaz: Zásobníkový automat R konstruujeme tak, aby vytvářel levou derivaci vstupního řetězce v gramatice G. Nechť R = ({q}, Σ, N ∪ Σ, δ, S, ∅), kde δ je definováno takto: (1) Je-li A → α pravidlo z P , pak δ(q, ɛ, A) obsahuje (q, α).
- Page 33 and 34: KAPITOLA 3. REGULÁRNÍ JAZYKY 32 V
- Page 35 and 36: KAPITOLA 3. REGULÁRNÍ JAZYKY 34 D
- Page 37 and 38: KAPITOLA 3. REGULÁRNÍ JAZYKY 36 V
- Page 39 and 40: KAPITOLA 3. REGULÁRNÍ JAZYKY 38 D
- Page 41 and 42: KAPITOLA 3. REGULÁRNÍ JAZYKY 40 3
- Page 43 and 44: KAPITOLA 3. REGULÁRNÍ JAZYKY 42 3
- Page 45 and 46: KAPITOLA 3. REGULÁRNÍ JAZYKY 44 V
- Page 47 and 48: KAPITOLA 3. REGULÁRNÍ JAZYKY 46 3
- Page 49 and 50: KAPITOLA 3. REGULÁRNÍ JAZYKY 48 P
- Page 51 and 52: KAPITOLA 3. REGULÁRNÍ JAZYKY 50 3
- Page 53 and 54: KAPITOLA 3. REGULÁRNÍ JAZYKY 52 C
- Page 55 and 56: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 57 and 58: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 59 and 60: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 61 and 62: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 63 and 64: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 65 and 66: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 67 and 68: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 69 and 70: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 71 and 72: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 73 and 74: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 75 and 76: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 77 and 78: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 79 and 80: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 81 and 82: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 83: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 87 and 88: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 89 and 90: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 91 and 92: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 93 and 94: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 95 and 96: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 97 and 98: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 99 and 100: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 101 and 102: Kapitola 5 Turingovy stroje Cílem
- Page 103 and 104: KAPITOLA 5. TURINGOVY STROJE 102 5.
- Page 105 and 106: KAPITOLA 5. TURINGOVY STROJE 104
- Page 107 and 108: KAPITOLA 5. TURINGOVY STROJE 106 L:
- Page 109 and 110: KAPITOLA 5. TURINGOVY STROJE 108 St
- Page 111 and 112: KAPITOLA 5. TURINGOVY STROJE 110 p
- Page 113 and 114: KAPITOLA 5. TURINGOVY STROJE 112
- Page 115 and 116: KAPITOLA 5. TURINGOVY STROJE 114 -
- Page 117 and 118: KAPITOLA 5. TURINGOVY STROJE 116 5.
- Page 119 and 120: KAPITOLA 5. TURINGOVY STROJE 118 D
- Page 121 and 122: KAPITOLA 5. TURINGOVY STROJE 120 5.
- Page 123 and 124: KAPITOLA 5. TURINGOVY STROJE 122 5.
- Page 125 and 126: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 127 and 128: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 129 and 130: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 131 and 132: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 133 and 134: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY84<br />
k zásobníkové abecedě automatu P ′ znak, jenž bude označovat dno zásobníku a<br />
může být vybrán pouze tehdy, je-li automat P ′ ve stavu q ɛ . Formálně vyjádřeno,<br />
nechť<br />
P = (Q ∪ {q ɛ , q ′ }, Σ, Γ ∪ {Z ′ }, δ ′ , q ′ , Z ′ , ∅), kde<br />
symbolem ∅ vyznačujeme, že P přijímá řetězec s vyprázdněním zásobníku. Zobrazení<br />
δ nyní definujeme takto:<br />
(1) Jestliže δ(q, a, Z) obsahuje (r, γ), pak δ ′ (q, a, Z) obsahuje (r, γ) pro všechna<br />
q ∈ Q, a ∈ Σ ∪ {ɛ} a Z ∈ Γ.<br />
(2) δ(q ′ , ɛ, Z ′ ) = {(q 0 , Z 0 Z ′ )}. První přechod zásobníkového automatu P ′ uloží<br />
do zásobníku řetězec Z 0 Z ′ , kde Z ′ je speciální znak označující dno zásobníku,<br />
a přejde do počátečního stavu automatu P .<br />
(3) Pro všechna q ∈ F a Z ∈ Γ ∪ {Z ′ } obsahuje δ ′ (q, ɛ, Z) prvek (q ɛ , ɛ).<br />
(4) Pro všechna Z ∈ Γ ∪ {Z ′ } je δ(q ɛ , ɛ, Z) = {(q ɛ , ɛ)}.<br />
Nyní zřejmě platí<br />
právě když<br />
(q ′ , w, Z ′ ) ⊢ P<br />
′ (q 0 , w, Z 0 Z ′ )<br />
⊢ n P ′ (q, ɛ, Y 1 . . . Y r )<br />
⊢ P<br />
′ (q ɛ , ɛ, Y 2 . . . Y r )<br />
⊢ r−1<br />
P ′ (q ɛ, ɛ, ɛ) kde Y r = Z ′ ,<br />
(q 0 , w, Z 0 ) ⊢<br />
n (q, ɛ, Y 1 . . . Y r−1 )<br />
P<br />
pro q ∈ F a Y 1 . . . Y r−1 ∈ Γ ∗ . Tudíž L ɛ (P ′ ) = L(P ).<br />
Předchozí věta platí také obráceně<br />
✷<br />
Věta 4.13 Nechť P = (q, Σ, Γ, δ, q 0 , Z 0 , ∅) je zásobníkový automat přijímající<br />
vyprázdněním zásobníku. Lze zkonstruovat zásobníkový automat P ′ takový, že<br />
L(P ′ ) = L ɛ (P ).<br />
Důkaz: Zásobníkový automat P ′ konstruujeme tak, že má speciální symbol Z ′ na<br />
dně zásobníku. Jakmile je tento symbol ze zásobníku odstraněn, přechází automat<br />
P ′ do nového koncového stavu q f : F ′ = {q f }. Formální konstrukci automatu P ′<br />
nebudeme provádět.<br />
✷<br />
4.11 Ekvivalence bezkontextových jazyků a jazyků<br />
přijímaných zásobníkovými automaty<br />
Nejdříve ukážeme, jak lze zkonstruovat nedeterministický syntaktický analyzátor<br />
jazyka generovaného bezkontextovou gramatikou, který pracuje metodou shora–<br />
dolů.<br />
L 2 = L P<br />
L 2 ⊆ L P<br />
Věta 4.14 Nechť G = (N, Σ, P, S) je bezkontextová gramatika. Z gramatiky G<br />
můžeme zkonstruovat zásobníkový automat R takový, že L ɛ (R) = L(G).<br />
Důkaz: Zásobníkový automat R konstruujeme tak, aby vytvářel levou derivaci<br />
vstupního řetězce v gramatice G. Nechť R = ({q}, Σ, N ∪ Σ, δ, S, ∅), kde δ je<br />
definováno takto:<br />
(1) Je-li A → α pravidlo z P , pak δ(q, ɛ, A) obsahuje (q, α).