Funcția recursivă primitivă

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

În teoria calculabilității , funcțiile recursive primitive sunt o clasă de funcții care pot fi definite prin aplicarea unui număr finit de ori de recursivitate și compoziție din anumite funcții de bază (funcții zero, funcție succesor și funcții selectabile sau proiective) și constituie un pas fundamental în construirea unei formalizări complete a calculabilității.

Funcțiile recursive primitive sunt un subset restrâns de funcții recursive (acestea din urmă corespund exact funcțiilor calculabile ). Clasa mai largă de funcții recursive este definită prin adăugarea posibilității de a avea funcții parțiale și introducerea unui operator de căutare nerestricționat.

Multe dintre funcțiile studiate de obicei în teoria numerelor și aproximările funcțiilor cu valoare reală sunt primitive recursive, cum ar fi adunarea , diviziunea , factorialul , exponențialul , găsirea celui de-al n-lea număr primar și multe altele (Brainerd și Landweber, 1974). De fapt, este dificil să proiectăm o funcție care este recursivă totală, dar nu recursivă primitivă, chiar dacă unele dintre ele sunt cunoscute, cum ar fi funcția Ackermann . Prin urmare, studiind acest tip special de funcții, este posibil să descoperim proprietăți care au consecințe de anvergură.

Funcțiile recursive primitive pot fi calculate de mașini care se termină întotdeauna , în timp ce funcțiile recursive necesită sisteme cu aceeași putere de calcul ca mașinile Turing .

Definiție

Definim primitivul recursiv o funcție care face parte din funcțiile de bază sau poate fi obținută pornind de la acestea prin aplicarea compoziției și recursivității primitive de un număr finit de ori; echivalent, întregul funcțiilor recursive primitive este definit ca cel mai mic set care conține funcțiile recursive de bază și care este închis prin compoziție și recursivitate primitivă.

Funcțiile recursive variază de la natural la natural: . În general, iau un tuplu de ca argumente numerele naturale și returnează un număr natural. O funcție care necesită argumente pe care le spune - aer .

Funcții de bază

Definiți următoarele ca funcții de bază :

  • Funcțiile zero , care iau n argumente (cu ), și care returnează întotdeauna 0. Ele sunt deci funcții constante .
  • Funcția succesorală , care ia un argument și returnează următorul număr
  • Funcțiile de proiecție (numite și funcții selective sau funcții de identitate), pe care le iau subiecte ( ) și returnează -alea dintre ele ( ).

Luăm ca trei axiome faptul că toate sunt recursive primitive.

Compoziție și recursivitate

Este posibil să se obțină funcții recursive primitive care sunt mai complexe decât cele de bază, prin aplicarea următorilor operatori la acesta din urmă:

  • Operatorul de compoziție (sau substituție ):
de sine este o funcție a argumente, e toate sunt funcții a argumente, apoi funcția la subiecte:
se obține prin compoziție (sau substituție ) din Și
  • Operatorul de recursiune primitiv :
de sine este o funcție a argumente, e este o funcție a argumente, apoi funcția la argumente definite după cum urmează:
se obține prin recursivitate primitivă din Și

Rețineți că, datorită funcțiilor de proiecție, putem ocoli rigiditatea aparentă a numărului de argumente ale funcțiilor menționate mai sus, deoarece, datorită compoziției, putem trece orice subset de argumente.

Exemple

Plus

Funcția Adăugați ( ) ca funcție recursivă poate fi definită prin recursivitate primitivă pornind de la funcția de bază Succesor În felul următor:

Scădere

Pentru a defini funcția de scădere ( ) ca funcție recursivă ne bazăm pe definiția funcției recursive Predecesor , la rândul său definit de recursivitate primitivă pornind de la funcția de bază Identitate :

Apoi obținem funcția Subtraction ( ):

Multiplicare

Funcția de multiplicare ( ) ca funcție recursivă poate fi definită cu ajutorul funcției de adăugare deja definite ( ) și precis:

Factorială

Funcția factorială ( ) ca funcție recursivă poate fi definită cu ajutorul funcției deja definite Multiplicare ( ) și precis:

Limitări

Deși toate funcțiile primitive recursive sunt totale, există funcții totale care nu sunt primitive recursive: un exemplu este funcția Ackermann , care este calculabilă, totală, dar nu primitivă recursivă.

Prin urmare, deoarece există funcții care nu pot fi descrise de acest formalism, nu este adecvat să se reprezinte care sunt funcțiile computabile intuitiv. Extinderea funcțiilor primitive recursive care reprezintă toate funcțiile calculabile (adică are aceeași expresivitate a mașinii Turing ), este cea a funcțiilor recursive .

Bibliografie

  • Giorgio Ausiello, Fabrizio d'Amore, Giorgio Gambosi; FrancoAngeli Editor: Limbi, modele, complexitate (2003) ( ISBN 88-464-4470-1 )
  • Brainerd, WS, Landweber, LH (1974), Theory of Computation , Wiley, ISBN 0471095850

Elemente conexe

linkuri externe