Limbaj recursiv enumerabil

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Un set A se numește recursiv enumerabil atunci când există o funcție de enumerare f în care A este codomain .

Deoarece există o corespondență unu-la-unu între setul de funcții calculabile și setul de programe în orice limbaj de programare , un set este deci recursiv enumerabil dacă este posibil să-și genereze elementele printr-un program de computer (pentru Church-Turing teza limbajul de programare ales nu contează). Un set recursiv enumerabil este, de asemenea, numit semidecidabil , deoarece este posibil să se stabilească (într-un timp necuantificabil) dacă un element generic aparține lui A, dar nu este posibil să se stabilească non-apartenența unui element.

Exemplu

Fără pierderea generalității, să considerăm setul de funcții calculabile unare și pentru care domeniul și codomain setul de numere naturale . Să luăm în considerare limbajul de programare Pascal .

Întregul

A = {x | x este un număr par}

Este recursiv enumerabil, deoarece este posibil să se definească următorul program (și funcția corespunzătoare).

 var a: întreg;
 începe 
     Citeste o);
     dacă un mod 2 = 0 atunci
         scrie o)
     altceva
         scrie („2”);
 Sfârșit.

Precedent Programul dat ca intrare o mai mare valoare întreagă decât sau egal cu 0 returnează întotdeauna un element al A (se presupune că nu există limite fizice pentru reprezentarea întregi variabile , în acest caz, adică, întreg corespunde setului de numere naturale, de la 0 la plus infinit ).

Elemente conexe

Teoria automatelor : limbaje formale și gramatici formale
Ierarhia Chomsky Gramatica formală Limba Automat minim
Tipul-0 (nelimitat) Recursiv enumerabil Mașină Turing
(nelimitat) Recursiv Decider
Tipul 1 Context dependent Context dependent Automat liniar
Tipul 2 Fără context Fără context Automat cu baterie ND
Tipul 3 Regulat Regulat Stări finite
Fiecare categorie de limbă sau gramatică este un subset adecvat al categoriei imediat deasupra acesteia.