Definire alcune funzioni di base:
pni:Nn→N:(x1,x2,…,xn)↦xi
D'ora in poi userò per indicare ( x 1 , x 2 , … , x n )xn¯(x1,x2,…,xn)
Definisci una composizione:
Funzioni fornite
- ciascuno con firma N k → Ng1,g2,…,gmNk→N
- f:Nm→N
Costruisci la seguente funzione:
h:Nk→N:xk¯↦h(xk¯)=f(g1(xk¯),g2(xk¯),…,gm(xk¯))
Definire la ricorsione primitiva:
Funzioni fornite
- f:Nk→N
- g:Nk+2→N
Costruisci la seguente funzione (a tratti):
h:Nk+1→N:(xk¯,y+1)↦{f(xk¯),g(xk¯,y,h(xk¯,y)),y+1=0y+1>0
Tutte le funzioni che possono essere eseguite utilizzando composizioni e ricorsività primitiva su funzioni di base , sono chiamate ricorsive primitive . Si chiama così per definizione. Mentre esiste un collegamento con funzioni che si richiamano da soli, non è necessario provare a collegarli tra loro. Potresti considerare la ricorsione un omonimo.
Questa definizione e costruzione di cui sopra è stata costruita da Gödel (anche poche altre persone erano coinvolte) nel tentativo di catturare tutte le funzioni che sono calcolabili, cioè esiste una macchina di Turing per quella funzione. Si noti che il concetto di una macchina di Turing non era ancora stato descritto, o era almeno molto vago.
(Un) per fortuna, qualcuno chiamato Ackermann è arrivato e ha definito la seguente funzione:
- Ack:N2→N
- Ack(0,y)=y+1
- Ack(x+1,0)=Ack(x,1)
- Ack(x+1,y+1)=Ack(x,Ack(x+1,y))
Questa funzione è calcolabile, ma non c'è modo di costruirla usando solo le costruzioni sopra! (vale a dire non è ricorsiva primitiva) Ciò significa che Gödel e la sua posse non è riuscito a catturare tutte le funzioni calcolabili nella loro costruzione!Ack
Gödel ha dovuto espandere la sua classe di funzioni in modo potrebbe essere costruito. Lo ha fatto definendo quanto segue:Ack
Minimizzazione illimitata
- g:Nk→N
- IF [f(xk¯,y)=0 AND f(xk¯,z) is defined ∀z<y AND f(xk¯,z)≠0]
g(xk¯)=y
g(xk¯)
g((x1,x2,…,xk))f
Tutte le funzioni che possono essere costruite con tutte le costruzioni sopra definite sono chiamate ricorsive . Ancora una volta, il nome ricorsivo è solo per definizione e non ha necessariamente una correlazione con le funzioni che si definiscono. Davvero, consideralo un omonimo.
Ack
Ack
Se sei incuriosito, potresti provare ad aumentare la classe di Gödel. Puoi provare a definire il "contrario" della minimizzazione illimitata. Cioè, massimizzazione illimitata , ovvero la funzione che trova la radice più grande. Tuttavia, potresti scoprire che calcolare quella funzione è difficile (impossibile). Puoi leggere il Problema Beaver occupato , che tenta di applicare la massimizzazione illimitata.