opora
KAPITOLA 6. MEZE ROZHODNUTELNOSTI 125 TS, který má být simulován, budeme kódovat, jak bylo uvedeno výše, vstupní řetězec budeme kódovat jako posloupnost příslušných kódů symbolů oddělených a ohraničených 1. Kód stroje a vstupního řetězce oddělíme např. #. Příklad 6.2.2 TS z předchozí strany mající na vstupu xxx: 1110100010100011001#1000100010001 Univerzální TS, který zpracuje toto zadání, můžeme navrhnout jako třípáskový stroj, který • má na 1. pásce zadání (a později výstup), • 2. pásku používá k simulaci pracovní pásky původního stroje a • na 3. pásce má zaznamenán aktuální stav simulovaného stroje a aktuální pozici hlavy (pozice hlavy i je kódována jako 0 i ). Univerzální stroj pracuje takto: 1. Stroj zkontroluje, zda vstup odpovídá zadání. Pokud ne, abnormálně zastaví. 2. Přepíše w na 2. pásku, na 3. pásku umístí kód q 0 a za něj poznačí, že hlava se nachází na levém okraji pásky. 3. Na 2. pásce vyhledá aktuální symbol pod hlavou simulovaného stroje a na 1. pásce vyhledá přechod proveditelný ze stavu zapsaného na začátku 3. pásky pro tento vstupní symbol. Pokud žádný přechod možný není, stroj abnormálně zastaví. 4. Stroj provede na 2. a 3. pásce změny odpovídající simulovanému přechodu (přepis aktuálního symbolu, změna pozice hlavy, změna řídícího stavu). 5. Pokud nebyl dosažen stav q F simulovaného stroje, přejdeme na bod 3. Jinak stroj vymaže 1. pásku, umístí na ní obsah 2. pásky a zastaví normálně (přechodem do koncového stavu). Víme, že výše uvedený stroj můžeme převést na jednopáskový univerzální TS, který budeme v dalším značit jako T U . 6.2.3 Problém zastavení TS Věta 6.2.1 Problém zastavení TS (Halting Problem), kdy nás zajímá, zda daný TS M pro daný vstupní řetězec w zastaví, není rozhodnutelný, ale je částečně rozhodnutelný. Důkaz. • Problému zastavení odpovídá rozhodování jazyka HP = {〈M〉#〈w〉 | M zastaví při w}, kde 〈M〉 je kód TS M a 〈w〉 je kód w. • Částečnou rozhodnutelnost ukážeme snadno použitím modifikovaného T U , který zastaví přijetím vstupu 〈M〉#〈w〉 právě tehdy, když M zastaví při w – modifikace spočívá v převedení abnormálního zastavení při simulaci na zastavení přechodem do q F . • Nerozhodnutelnost ukážeme pomocí diagonalizace: 1. Pro x ∈ {0, 1} ∗ , nechť M x je TS s kódem x, je-li x legální kód TS. Jinak ztotožníme M x s pevně zvoleným TS, např. s TS, který pro libovolný vstup okamžitě zastaví.
KAPITOLA 6. MEZE ROZHODNUTELNOSTI 126 2. Můžeme nyní sestavit posloupnost M ε , M 0 , M 1 , M 00 , M 01 , M 10 , M 11 , M 000 , ... zahrnující všechny TS nad Σ = {0, 1} indexované řetězci z {0, 1} ∗ . 3. Uvažme nekonečnou matici ε 0 1 00 01 10 ... M ε H Mε,ε H Mε,0 H Mε,1 H Mε,00 H Mε,01 ... M 0 H M0,ε H M0,0 H M0,1 H M0,00 H M0,01 ... M 1 H M1,ε H M1,0 H M1,1 H M1,00 H M1,01 ... M 00 H M00,ε H M00,0 H M00,1 H M00,00 H M00,01 ... M 01 H M01,ε H M01,0 H M01,1 H M01,00 H M01,01 ... ... { C, jestližeMx cyklí na y, kde H Mx,y = Z, jestližeM x zastaví na y. 4. Předpokládejme, že existuje úplný TS K přijímající jazyk HP . Pak K pro vstup 〈M〉#〈w〉 • zastaví normálně (přijme) právě tehdy, když M zastaví na w, • zastaví abnormálně (odmítne) právě tehdy, když M cyklí na w. 5. Sestavíme TS N, který pro vstup x ∈ {0, 1} ∗ : • Sestaví M x z x a zapíše 〈M x 〉#x na svou pásku. • Simuluje K na 〈M x 〉#x, přijme, pokud K odmítne, a přejde do nekonečného cyklu, pokud K přijme. Všimněme si, že N v podstatě komplementuje diagonálu uvedené matice: ε 0 1 00 01 10 ... M ε H Mε,ε H Mε,0 H Mε,1 H Mε,00 H Mε,01 ... M 0 H M0,ε H M0,0 H M0,1 H M0,00 H M0,01 ... M 1 H M1,ε H M1,0 H M1,1 H M1,00 H M1,01 ... M 00 H M00,ε H M00,0 H M00,1 H M00,00 H M00,01 ... M 01 H M01,ε H M01,0 H M01,1 H M01,00 H M01,01 ... ... 6. Dostáváme, že N zastaví na x ⇔ K odmítne 〈M x 〉#〈x〉 (definice N) ⇔ M x cyklí na x (předpoklad o K). 7. To ale znamená, že N se liší od každého M x alespoň na jednom řetězci – konkrétně na x. To je ovšem spor s tím, že posloupnost M ε , M 0 , M 1 , M 00 , M 01 , M 10 , M 11 , M 000 , ... zahrnuje všechny TS nad Σ = {0, 1}. Tento spor plyne z předpokladu, že existuje TS K, který pro daný TS M a daný vstup x určí (rozhodne), zda M zastaví na x, či nikoliv. Ukázali jsme, že jazyk HP je rekurzívně vyčíslitelný ale není rekurzívní, a tedy že problém zastavení TS je jen částečně rozhodnutelný. Z věty 5.6.3 pak plyne, že komplement problému zastavení není ani částečně rozhodnutelný a jazyk co-HP = {〈M〉#〈w〉 | M nezastaví při w} je příkladem jazyka, jenž není ani rekurzívně vyčíslitelný. S dalším příkladem takového jazyka se seznámíme v následujcích kapitolách. ✷
- 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 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: 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
- Page 141 and 142: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 143 and 144: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 145 and 146: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
- Page 147 and 148: KAPITOLA 7. SLOŽITOST 146 7.1.3 Sl
- Page 149 and 150: KAPITOLA 7. SLOŽITOST 148 Příkla
- Page 151 and 152: KAPITOLA 7. SLOŽITOST 150 • Napr
- Page 153 and 154: KAPITOLA 7. SLOŽITOST 152 7.2.4 Ne
- Page 155 and 156: KAPITOLA 7. SLOŽITOST 154 • Stro
- Page 157 and 158: KAPITOLA 7. SLOŽITOST 156 7.3.4 Uz
- Page 159 and 160: KAPITOLA 7. SLOŽITOST 158 Pokud pr
- Page 161 and 162: KAPITOLA 7. SLOŽITOST 160 7.5.1 Po
- Page 163 and 164: KAPITOLA 7. SLOŽITOST 162 7.5.4 V
- Page 165 and 166: KAPITOLA 7. SLOŽITOST 164 6. Uveď
KAPITOLA 6. MEZE ROZHODNUTELNOSTI 126<br />
2. Můžeme nyní sestavit posloupnost M ε , M 0 , M 1 , M 00 , M 01 , M 10 , M 11 , M 000 , ...<br />
zahrnující všechny TS nad Σ = {0, 1} indexované řetězci z {0, 1} ∗ .<br />
3. Uvažme nekonečnou matici<br />
ε 0 1 00 01 10 ...<br />
M ε H Mε,ε H Mε,0 H Mε,1 H Mε,00 H Mε,01 ...<br />
M 0 H M0,ε H M0,0 H M0,1 H M0,00 H M0,01 ...<br />
M 1 H M1,ε H M1,0 H M1,1 H M1,00 H M1,01 ...<br />
M 00 H M00,ε H M00,0 H M00,1 H M00,00 H M00,01 ...<br />
M 01 H M01,ε H M01,0 H M01,1 H M01,00 H M01,01 ...<br />
...<br />
{ C, jestližeMx cyklí na y,<br />
kde H Mx,y =<br />
Z, jestližeM x zastaví na y.<br />
4. Předpokládejme, že existuje úplný TS K přijímající jazyk HP . Pak K pro<br />
vstup 〈M〉#〈w〉<br />
• zastaví normálně (přijme) právě tehdy, když M zastaví na w,<br />
• zastaví abnormálně (odmítne) právě tehdy, když M cyklí na w.<br />
5. Sestavíme TS N, který pro vstup x ∈ {0, 1} ∗ :<br />
• Sestaví M x z x a zapíše 〈M x 〉#x na svou pásku.<br />
• Simuluje K na 〈M x 〉#x, přijme, pokud K odmítne, a přejde do nekonečného<br />
cyklu, pokud K přijme.<br />
Všimněme si, že N v podstatě komplementuje diagonálu uvedené matice:<br />
ε 0 1 00 01 10 ...<br />
M ε H Mε,ε H Mε,0 H Mε,1 H Mε,00 H Mε,01 ...<br />
M 0 H M0,ε H M0,0 H M0,1 H M0,00 H M0,01 ...<br />
M 1 H M1,ε H M1,0 H M1,1 H M1,00 H M1,01 ...<br />
M 00 H M00,ε H M00,0 H M00,1 H M00,00 H M00,01 ...<br />
M 01 H M01,ε H M01,0 H M01,1 H M01,00 H M01,01 ...<br />
...<br />
6. Dostáváme, že<br />
N zastaví na x ⇔ K odmítne 〈M x 〉#〈x〉 (definice N)<br />
⇔ M x cyklí na x (předpoklad o K).<br />
7. To ale znamená, že N se liší od každého M x alespoň na jednom řetězci –<br />
konkrétně na x. To je ovšem spor s tím, že posloupnost M ε , M 0 , M 1 , M 00 , M 01 ,<br />
M 10 , M 11 , M 000 , ... zahrnuje všechny TS nad Σ = {0, 1}.<br />
Tento spor plyne z předpokladu, že existuje TS K, který pro daný TS M a<br />
daný vstup x určí (rozhodne), zda M zastaví na x, či nikoliv.<br />
Ukázali jsme, že jazyk HP je rekurzívně vyčíslitelný ale není rekurzívní, a tedy<br />
že problém zastavení TS je jen částečně rozhodnutelný. Z věty 5.6.3 pak plyne,<br />
že komplement problému zastavení není ani částečně rozhodnutelný a jazyk<br />
co-HP = {〈M〉#〈w〉 | M nezastaví při w} je příkladem jazyka, jenž není ani<br />
rekurzívně vyčíslitelný. S dalším příkladem takového jazyka se seznámíme v následujcích<br />
kapitolách.<br />
✷