You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
KAPITOLA 6. MEZE ROZHODNUTELNOSTI 124<br />
• Předpokládejme, že 2 Σ∗ je spočetná. Pak dle definice spočetnosti existuje<br />
bijekce f : N ←→ 2 Σ∗ .<br />
• Uspořádejme Σ ∗ do nějaké posloupnosti w 1 , w 2 , w 3 , ..., např. ε, x, y, xx, xy,<br />
yx, yy, xxx, ... pro Σ = {x, y}. Nyní můžeme f zobrazit nekonečnou maticí :<br />
w 0 w 1 w 2 ... w i ...<br />
L 0 = f(0) a 00 a 01 a 02 ... a 0i ...<br />
L 1 = f(1) a 10 a 11 a 12 ... a 1i ...<br />
L 2 = f(2) a 20 a 21 a 22 ... a 2i ...<br />
...<br />
, kde a ij =<br />
{ 0, jestližewj ∉ L i ,<br />
1, jestližew j ∈ L i .<br />
• Uvažujme jazyk L = {w i | a ii = 0}. L se liší od každého jazyka L i = f(i),<br />
i ∈ N:<br />
– je-li a ii = 0, pak w i patří do jazyka,<br />
– je-li a ii = 1, pak w i nepatří do jazyka.<br />
• Současně ale L ∈ 2 Σ∗ , f tudíž není surjektivní, což je spor.<br />
✷<br />
6.2 Problém zastavení<br />
Problém, zda výpočet daného TS zastaví, je prvním problémem, jehož nerekurzívnost<br />
ukážeme. Za tím účelem zavedeme (s pomocí vhodného kódování TS) univerzální<br />
Turingův stroj, což je TS schopný simulovat výpočet kteréhokoli jiného stroje z<br />
jakékoliv počáteční konfigurace (stroj a konfigurace jsou vstupem univerzálního<br />
stroje). Ten bude dále důležitý nejen v důkazu nerozhodnutelnosti problému zastavení.<br />
6.2.1 Kódování TS<br />
Kódovací systém pro TS zahrnuje (1) kódování stavů (tak, aby byly odlišeny<br />
všechny stavy včetně q 0 a q F ), (2) symbolů z Γ a (3) přechodové funkce δ. Kódování<br />
stavů: Množinu stavů Q uspořádáme do posloupnosti q 0 , q F , q, p, ..., t. Stav q j<br />
zakódujeme jako 0 j , přičemž indexujeme (např.) od nuly.<br />
Kódování symbolů a příkazů L/R: Předpokládejme, že Γ = Σ ∪ {∆}. Uspořádáme<br />
Σ do posloupnosti a 1 , a 2 , ..., a n a zvolíme tyto kódy: ∆ ↦→ ε, L ↦→ 0,<br />
R ↦→ 00, a i ↦→ 0 i+2 .<br />
Přechod δ(p, x) = (q, y), kde y ∈ Γ ∪ {L, R}, reprezentujeme čtveřicí (p, x, q, y)<br />
a kódujeme zřetězením kódů p, x, q, y při použití 1 jako oddělovače, tj. jako<br />
〈p〉1〈x〉1〈q〉1〈y〉, kde 〈_〉 značí kód _.<br />
Celý TS kódujeme jako posloupnost kódů přechodů oddělených a ohraničených<br />
1.<br />
Příklad 6.2.1 q 0<br />
∆/x<br />
q F kód: 1110100010100011001<br />
6.2.2 Univerzální TS<br />
x/R<br />
Zavádí koncept „programovatelného“ stroje, který umožňuje ve vstupním řetězci<br />
specifikovat konkrétní TS (tj. program) i data, nad nimiž má tento stroj pracovat.