opora
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY89 (3) Jestliže δ(q, a, Z) obsahuje (r, ɛ), pak k P přidej pravidlo [qZr] → a. (4) Pro každý stav q ∈ Q přidej k P pravidlo S → [q 0 Z 0 q]. Indukcí lze opět dokázat, že pro všechna q, r ∈ Q a Z ∈ Γ platí [qZr] ⇒ m w, právě když (q, w, Z) ⊢ n (r, ɛ, ɛ). Speciální případ této ekvivalence je S ⇒ [q 0 Z 0 q] ⇒ + w, právě když (q 0 , w, Z 0 ) ⊢ + (q, ɛ, ɛ), q ∈ F . To však znamená, že L ɛ (R) = L(G). Příklad 4.24 Nechť P = ({q 0 , q 1 }, {0, 1}, {X, Z 0 }, δ, q 0 , Z 0 , ∅) kde zobrazení δ je dáno takto: δ(q 0 , 0, Z 0 ) = {(q 0 , XZ 0 )} δ(q 0 , 0, X) = {(q 0 , XX)} δ(q 0 , 1, X) = {(q 1 , ɛ)} δ(q 1 , 1, X) = {(q 1 , ɛ)} δ(q 1 , ɛ, X) = {(q 1 , ɛ)} δ(q 1 , ɛ, Z 0 ) = {(q 1 , ɛ)} Zkonstruujme gramatiku G = (N, Σ, P, S) takovou, že L(P ) = L(G). Množiny nonterminálů a terminálů mají tvar: N = {S, [q 0 Xq 0 ], [q 0 Xq 1 ], [q 1 Xq 0 ], [q 1 Xq 1 ], [q 0 Z 0 q 0 ], [q 0 Z 0 q 1 ], [q 1 Z 0 q 0 ], [q 1 Z 0 q 1 ]} Σ = {0, 1} Množina N obsahuje některé nonterminály, které jsou v gramatice G nedostupné. Abychom je nemuseli dodatečně odstraňovat, začneme konstruovat pravidla gramatiky G počínaje S-pravidly a přidávejme pouze ty nonterminály, které se objevují na pravých stranách konstruovaných pravidel. Podle bodu (4) sestrojíme S-pravidla: S → [q 0 Z 0 q 0 ] S → [q 0 Z 0 q 1 ] Nyní přidáme pravidla pro nonterminál [q 0 Z 0 q 0 ] vyplývající z δ(q 0 , 0, Z 0 ) = {(q 0 , XZ 0 )}. Pravidla pro nonterminál [q 0 Z 0 q 1 ] [q 0 Z 0 q 0 ] → 0[q 0 Xq 0 ][q 0 Z 0 q 0 ] [q 0 Z 0 q 0 ] → 0[q 0 Xq 1 ][q 1 Z 0 q 0 ] [q 0 Z 0 q 1 ] → 0[q 0 Xq 0 ][q 0 Z 0 q 1 ] [q 0 Z 0 q 1 ] → 0[q 0 Xq 1 ][q 1 Z 0 q 1 ] jsou požadována zobrazením δ(q 0 , 0, Z 0 ) = {(q 0 , XZ 0 )}. Pravidla pro zbývající nonterminály jsou: [q 0 Xq 0 ] → 0[q 0 Xq 0 ][q 0 Xq 0 ] [q 0 Xq 0 ] → 0[q 0 Xq 1 ][q 1 Xq 0 ] [q 0 Xq 1 ] → 0[q 0 Xq 0 ][q 0 Xq 1 ] [q 0 Xq 1 ] → 0[q 0 Xq 1 ][q 1 Xq 1 ] ✷
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY90 protože, δ(q 0 , 0, X) = {(q 0 , XX)}; [q 0 Xq 1 ] → 1, protože δ(q 0 , 1, X) = {(q 1 , ɛ)} [q 1 Z 0 q 1 ] → ɛ, protože δ(q 1 , ɛ, Z 0 ) = {(q 1 , ɛ)} [q 1 Xq 1 ] → ɛ, protože δ(q 1 , ɛ, X) = {(q 1 , ɛ)} [q 1 Xq 1 ] → 1, protože δ(q 1 , 1, X) = {(q 1 , ɛ)}. Povšimněme si nyní, že pro nonterminály [q 1 Xq 0 ] a [q 1 Z 0 q 0 ] nejsou definována žádná pravidla, a proto ani z nonterminálu [q 0 Z 0 q 0 ] ani z [q 0 Xq 0 ] nemohou být derivovány terminální řetězce. Odstraníme-li tedy pravidla obsahující některý z uvedených čtyř nonterminálů, dostaneme ekvivalentní gramatiku generující jazyk L(P ): S → [q 0 Z 0 q 1 ] [q 0 Z 0 q 1 ] → 0[q 0 Xq 1 ][q 1 Z 0 q 1 ] [q 0 Xq 1 ] → 0[q 0 Xq 1 ][q 1 Xq 1 ] [q 1 Z 0 q 1 ] → ɛ [q 0 Xq 1 ] → 1 [q 1 Xq 1 ] → ɛ [q 1 Xq 1 ] → 1 4.12 Deterministický zásobníkový automat V předchozím odstavci jsme ukázali, že ke každé bezkontextové gramatice lze sestrojit zásobníkový automat, který reprezentuje syntaktický analyzátor pro věty generované danou gramatikou. Tento analyzátor je obecně nedeterministický. Z hlediska aplikací teorie formálních jazyků v překladačích jsou důležité tzv. deterministické bezkontextové jazyky, které lze analyzovat deterministickými syntaktickými analyzátory. V tomto odstavci definujeme třídu zásobníkových automatů, které v každém okamžiku mohou přijít pouze do jediné konfigurace, tzv. deterministické zásobníkové automaty, a jim odpovídající deterministické jazyky. Definice 4.22 Zásobníkový automat P = (Q, Σ, Γ, δ, q 0 , Z 0 , F ) nazýváme deterministickým zásobníkovým automatem, jestliže pro každé q ∈ Q a Z ∈ Γ platí buď pro každé a ∈ Σ obsahuje δ(q, a, Z) nanejvýš jeden prvek a δ(q, ɛ, Z) = ∅, nebo δ(q, a, Z) = ∅ pro všechna a ∈ Σ a δ(q, ɛ, Z) obsahuje nejvýše jeden prvek. Protože zobrazení δ(q, a, Z) obsahuje nejvýše jeden prvek, budeme místo δ(q, a, Z) = {(r, γ)} psát δ(q, a, Z) = (r, γ). Příklad 4.25 Deterministický zásobníkový automat, který přijímá jazyk L = {wcw R | w ∈ {a, b} + }, má tvar: P = ({q 0 , q 1 , q 2 }, {a, b, c}, {Z, a, b}, δ, q 0 , Z, {q 2 }) kde zobrazení δ je definováno takto: δ(q 0 , X, Y ) = (q 0 , XY ) pro všechna X ∈ {a, b} a Y ∈ {Z, a, b} δ(q 0 , c, Y ) = (q 1 , Y ) pro všechna Y ∈ {a, b} δ(q 1 , X, X) = (q 1 , ɛ) pro všechna X ∈ {a, b} δ(q 1 , ɛ, Z) = (q 2 , ɛ)
- 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 and 84: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 85 and 86: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 87 and 88: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 89: 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
- Page 135 and 136: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 137 and 138: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 139 and 140: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY90<br />
protože, δ(q 0 , 0, X) = {(q 0 , XX)};<br />
[q 0 Xq 1 ] → 1, protože δ(q 0 , 1, X) = {(q 1 , ɛ)}<br />
[q 1 Z 0 q 1 ] → ɛ, protože δ(q 1 , ɛ, Z 0 ) = {(q 1 , ɛ)}<br />
[q 1 Xq 1 ] → ɛ, protože δ(q 1 , ɛ, X) = {(q 1 , ɛ)}<br />
[q 1 Xq 1 ] → 1, protože δ(q 1 , 1, X) = {(q 1 , ɛ)}.<br />
Povšimněme si nyní, že pro nonterminály [q 1 Xq 0 ] a [q 1 Z 0 q 0 ] nejsou definována<br />
žádná pravidla, a proto ani z nonterminálu [q 0 Z 0 q 0 ] ani z [q 0 Xq 0 ] nemohou být derivovány<br />
terminální řetězce. Odstraníme-li tedy pravidla obsahující některý z uvedených<br />
čtyř nonterminálů, dostaneme ekvivalentní gramatiku generující jazyk<br />
L(P ):<br />
S → [q 0 Z 0 q 1 ]<br />
[q 0 Z 0 q 1 ] → 0[q 0 Xq 1 ][q 1 Z 0 q 1 ]<br />
[q 0 Xq 1 ] → 0[q 0 Xq 1 ][q 1 Xq 1 ]<br />
[q 1 Z 0 q 1 ] → ɛ<br />
[q 0 Xq 1 ] → 1<br />
[q 1 Xq 1 ] → ɛ<br />
[q 1 Xq 1 ] → 1<br />
4.12 Deterministický zásobníkový automat<br />
V předchozím odstavci jsme ukázali, že ke každé bezkontextové gramatice lze sestrojit<br />
zásobníkový automat, který reprezentuje syntaktický analyzátor pro věty<br />
generované danou gramatikou. Tento analyzátor je obecně nedeterministický. Z hlediska<br />
aplikací teorie formálních jazyků v překladačích jsou důležité tzv. deterministické<br />
bezkontextové jazyky, které lze analyzovat deterministickými syntaktickými<br />
analyzátory. V tomto odstavci definujeme třídu zásobníkových automatů, které<br />
v každém okamžiku mohou přijít pouze do jediné konfigurace, tzv. deterministické<br />
zásobníkové automaty, a jim odpovídající deterministické jazyky.<br />
Definice 4.22 Zásobníkový automat P = (Q, Σ, Γ, δ, q 0 , Z 0 , F ) nazýváme deterministickým<br />
zásobníkovým automatem, jestliže pro každé q ∈ Q a Z ∈ Γ platí<br />
buď pro každé a ∈ Σ obsahuje δ(q, a, Z) nanejvýš jeden prvek a δ(q, ɛ, Z) = ∅,<br />
nebo δ(q, a, Z) = ∅ pro všechna a ∈ Σ a δ(q, ɛ, Z) obsahuje nejvýše jeden prvek.<br />
Protože zobrazení δ(q, a, Z) obsahuje nejvýše jeden prvek, budeme místo δ(q, a, Z)<br />
= {(r, γ)} psát δ(q, a, Z) = (r, γ).<br />
Příklad 4.25 Deterministický zásobníkový automat, který přijímá jazyk<br />
L = {wcw R | w ∈ {a, b} + }, má tvar:<br />
P = ({q 0 , q 1 , q 2 }, {a, b, c}, {Z, a, b}, δ, q 0 , Z, {q 2 })<br />
kde zobrazení δ je definováno takto:<br />
δ(q 0 , X, Y ) = (q 0 , XY ) pro všechna X ∈ {a, b} a Y ∈ {Z, a, b}<br />
δ(q 0 , c, Y ) = (q 1 , Y ) pro všechna Y ∈ {a, b}<br />
δ(q 1 , X, X) = (q 1 , ɛ) pro všechna X ∈ {a, b}<br />
δ(q 1 , ɛ, Z) = (q 2 , ɛ)