Vyčíslitelnost
Editovat
Note
|
Turingův stroj. Problém zastavení. Rozhodnutelnost a částečná rozhodnutelnost, nerozhodnutelnost. Metoda redukce, diagonalizace. IB102/IB005+IB107 |
Vyčíslitelnost se zabývá funkcemi, které je možné vyčíslit — nějakým způsobem naprogramovat.
Turingův stroj
Turingův stroj (TM) je 9-ice , kde:
-
je konečná množina stavů,
-
je konečná množina vstupních symbolů,
-
je konečná množina páskových symbolů taková, že ,
-
je levá konzová značka,
-
je symbol označující prázdné políčko,
-
je totální přechodová funkce,
-
je počáteční stav,
-
je akceptující stav,
-
je zamítající stav.
Navíc platí . Jinými slovy, TM nesmí přepsat .
Konfigurace
Konfigurace obsahuje stav, obsah pásky a index políčka, nad kterým je hlava:
Počáteční konfigurace je .
Akceptující konfigurace má tvar , kde . Podobně, zamítající konfigurace má tvar .
Krok výpočtu
Krok výpočtu je relace na konfiguracích TM :
Note
|
značí upravený , kde n-tý symbol je . |
Výpočet TM na vstupu je posloupnost konfigurací taková, že je počáteční konfigurace pro a pro všechna platí .
Stroj akceptuje slovo , právě když výpočet na je konečný a poslední konfigurace je akceptující.
Stroj zamítá slovo , právě když výpočet na je konečný a poslední konfigurace je zamítající.
Stroj cyklí slovo , právě když výpočet na je nekonečný.
Jazyk akceptovaný je .
Rozhodnutelnost
Jazyk je:
- rekurzivně spočetný
-
právě když pro nějaký . Tedy pokud , pak ho akceptuje, jinak zastaví nebo cyklí.
- rekurzivní
-
právě když pro nějaký úplný . Tedy pokud , pak ho , jinak zamítá. Nikdy necyklí.
Problém určit, zda řetěz má vlastnost , je
- rozhodnutelný
-
právě když jazyk všech řetězů s vlastností je rekurzivní.
- nerozhodnutelný
-
právě když není rozhodnutelný. Nerozhodnutelný problém může být částečně rozhodnutelný.
- částečně rozhodnutelný (semirozhodnutelný)
-
právě když jazyk všech řetězů s vlastností je rekurzivně spočetný.
Problém zastavení
Je výpočet na konečný?
Je částečné rozhodnutelný, neboť, pokud na zastaví, pak lze akceptovat.
Je však nerozhodnutelný. Důkaz se vede sporem: Kdyby HALT rozhodnutelný byl, pak existuje TM , který jej rozhoduje. Ale! Představme si TM , který interně používá a cyklí, právě když TM na vstupu zastaví, pokud dostane svůj vlastní kód jako vstup:
Když předhodíme vstup , nastane problém, protože spustí se vstupem a má proto zastavit, právě když nezastaví, takže HALT musí být nerozhodnutelný.
Metoda redukce
Nechť a jsou jazyky. Redukce jazyka na jazyk je rekurzivní (totálně vyčíslitelná) funkce taková, že .
Pokud existuje redukce z do , jazyk se redukuje na jazyk . Píšeme .
Pokud je rekurzivní (resp. rekurzivně spočetný), pak i je rekurzivní (resp. rekurzivně spočetný).
Note
|
Představ si, že je rozhodnutelný problém toho, jestli má dané restaurační zařízení v danou hodinu otevřeno či zavřeno, a je problém, zda zrovna U Valáška mají otevřeno. Jelikož je jen speciální případ , redukce jen dosadí konstantu "U Valáška" za parametr "restaurační zařízení" a tedy je rekurzivní. Tedy lze rozhodnout, zda U Valáška mají otevřeno. |
Tuto implikaci lze obměnit: Pokud rekurzivní (resp. rekurzivně spočetný) není, pak ani rekurzivní (resp. rekurzivně spočetný) není. A tohoto se využívá k důkazu toho, že nějaký problém je nerozhodnutelný. Stačí najít redukci .
Note
|
Intuitivně se na to dá dívat i tak, že je alespoň tak "těžký" jako HALT. |
Diagonalizace
Původně použita v Cantorově důkazu toho, že reálných čísel je víc než přirozených:
Note
|
Řádky jsou indexy reálných čísel. Sloupce jsou desetinná místa ve dvojkové soustavě. |
0 |
0 |
0 |
0 |
0 |
… |
|
1 |
1 |
1 |
1 |
1 |
… |
|
0 |
1 |
0 |
1 |
0 |
… |
|
1 |
1 |
0 |
0 |
1 |
… |
|
0 |
0 |
0 |
1 |
1 |
… |
|
… |
Existuje však reálné číslo , které se liší od každého čísla v tabulce, jelikož je to invertovaná diagonála.
V důkazu nerozhodnosti HALTu výše je taky diagonalizace. Jen tam sloupce jsou vstupy, řádky Turingovy stroje a buňky "zastaví/nezastaví".