Vyčíslitelnost
 Editovat
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í".