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í".