Úvodní stránka | Tato stránka v originále

Rekurzívně enumerable jazyk

formální jazyk L je řekl, aby byl částečně decidable nebo rekurzívně enumerable nebo Turing-rozeznatelný jestliže tam je algoritmus s vyplývajícím chováním:

Definice 1. Daný řetězec w jako vstup, algoritmické zastávky a výstupy ano jestliže a jediný jestliže w patří k jazyku L. Jestliže w nepatří k jazyku L, algoritmus jeden běží navždy, nebo zastávky a výstupy ne.

Formovat poněkud nejasný termín “algoritmus”, jeden obvykle zaměstná Turing stroje, ale několik jiných rovnocenných přístupů je možné.

Další definice ekvivalentu je to jazyk L je rekurzívně enumerable jestliže to je prázdné nebo jestliže tam je algoritmus, který vyčíslí členové jazyka v následujícím smyslu:

Definice 2. Algoritmus vezme pozitivní celé číslo, říkat n jako argument, a produkuje jako výstup řetězec v jazyce L. Pro každý řetězec s který je v L tam muset být n tak že algoritmus produkuje řetězec s.

Toto je pouze zvláštní případ pojetí rekurzívně enumerable souboru.

Rovnocennost těchto dvou definic může být viděna takto:

1 - > 2 daný algoritmus shodovat se k první definici pro jazyk L (přijal být non-se vyprázdnit), následující algoritmus vyčíslí L shodovat se ke druhé definici: Nechaný E být algoritmus, který vypočítá všechny navleče a tak ten každý řetězec se objeví nekonečně často ve výčtu. My píšeme E (n) naznačovat řetězec produkovaný algoritmem E na vstupu n. Zahrát na fixovanou strunu t v L (možný protože L non-se vyprázdnit). Následující algoritmus vyčíslí L:

Dané celé číslo n, algoritmus běhu na vstupu E (n) pro n kroky. Jestliže odpověď je ano, výstup řetězec E (n). Jinak, výstupní řetězec t.
Tento algoritmus odkázat jediné výstupní řetězce od L, a to odkázat výstupu všechny je, protože pro každý řetězec s v L my můžeme najít celé číslo n který je větší než množství kroků to potřeby přijmout to s a takový to E (n) = s.

2 - > 1 daný algoritmus shodovat se ke druhé definici pro jazyk L, následující algoritmus odpoví na otázku zda daný řetězec s patří k L ve smyslu pro první definici:

Pro všechna čísla n, začínat 1, a pokračovat po pořádku, test zda řetězec produkoval algoritmem na vstupu n je se rovnat k s. Když první takový n se nalézá, výstup ano. (jinak, pokračovat ve smyčce)

Si všimnout toho, jestliže L je nekonečný, vyjmenovávat algoritmus poskytovaný samozřejmě 2 moci být vybrán tak to to se vyhne opakováním od té doby, co my můžeme zkoušet zda řetězec produkoval pro číslo n je “už” produkován pro číslo který je méně než n. Jestliže to už je produkováno, používat výstup na vstup n + 1 místo toho (rekurzívně), ale znovu, test zda to je “nové”.

Příklady

Některé částečně decidable jazyky mají algoritmus, který vždy se zastaví a odpovědi ano nebo ne správně. Ty jazyky jsou nazývány decidable jazyky nebo rekurzivními jazyky. Některé problémy jsou rekurzívně enumerable ale ne rekurzivní. Jeden příklad je váhavý problém, který je problém:

Daný program a parametry vstupu, ten program nakonec se zastaví když běh s těmi parametry?
Formulovaný jako formální jazyk, toto jeden sestává ze všech těch řetězců, které zakódují program a parametry vstupu (shodovat se k dohodnutý-na kódování) takový že běh programu s těmi parametry nakonec se zastaví.

Další příklad je:

Daný polynomial (v několika proměnných) s celočíselnými koeficienty, je to možné najít hodnoty celého čísla pro proměnné tak že polynomial ocení k nule? (toto je Hilbert má desátý problém, více pod Matiyasevich teorémem.)

Všichni pravidelný, kontext-volný, kontextový a rekurzivní jazyky jsou rekurzívně enumerable. Některé problémy jsou tak těžké že oni nejsou dokonce rekurzívně enumerable. Jeden příklad je tento problém:
Daný program, uložit parametry a předpověď o zda to nakonec se zastaví, je ta předpověď správná?

Obecně, jestliže jazyk L je ne rekurzivní, pak jazyk sestávat ze všech řetězců spolu s ukazatelským symbolovým pořekadlem zda to je nebo je ne v L rekurzívně enumerable.

Další příklad problému, který není rekurzívně enumerable je toto:

Daný program a parametry vstupu, bude ten program běžet navždy?

Vlastnosti

Jestliže L a P být dva rekurzívně enumerable jazyky pak následující jazyky jsou rekurzívně enumerable také:

Si všimnout toho rozdíl souboru L\ \P a zvláště doplněk L potřeba ne být rekurzívně enumerable. Ve skutečnosti, jazyk L je rekurzivní jestliže a jediný jestliže L a jeho doplněk jsou oba rekurzívně enumerable.