Espressione mu-ricorsiva esplicita per la funzione di Ackerman


15

Puoi indicarci come sviluppare la funzione di Ackerman (in realtà sono interessato a una versione proposta da Rózsa Péter e Raphael Robinson) tramite operatori mu-ricorsivi standard? Ho provato gli articoli originali di Péter e Robinson, ma l'articolo di Péter usa una lingua diversa dall'inglese e gli articoli di Robinson "Ricorsione e doppia ricorsione" e "Funzioni ricorsive primitive" non aiutano: prima sembrano più rilevanti, ma lo sono chiamato operatore a doppia ricorsione per definire la funzione di Ackerman, quindi in questo caso si cerca la definizione esplicita dell'operatore in termini mu-ricorsivi.

Il più vicino alla risposta è P. Smith in "Un'introduzione ai teoremi di Godel" (CUP, 2007) (29.4 La funzione di Ackermann-Peter è μ ricorsiva), ma si presenta con il seguente: "rendere l'argomento a tenuta stagna è piuttosto noioso ma non difficile. Non c'è niente da imparare spiegando qui i dettagli: quindi non lo faremo. ”

Ho anche provato il libro di Rózsa Péter “Funzioni ricorsive” (1967, stampa accademica). Esistono molte varianti per gli operatori di ricorsione. Di solito l'uno si riduce all'altro. Credo che ci sia un tipo di operatore di ricorsione che si adatta alla definizione della funzione di Ackerman e alla sequenza di passaggi che la riducono a operatori primitivi di riduzione e minimizzazione, ma mi sono trovato incapace di investigare fino in fondo.


1
In realtà questo non è così difficile come potrebbe sembrare all'inizio. Il trucco è lasciare che l' operatore cerchi un calcolo della funzione di Ackerman, cioè la tabella dei valori fino all'input, e quindi verificare che la tabella segua la definizione della funzione. Ciò che serve è codificare / decodificare sequenze finite e controllare la tabella. La codifica / decodifica sono esplicitamente definite in molti libri di testo, il controllo può essere effettuato da un quantificatore universale limitato su una semplice relazione tra le voci della tabella. Il quantificatore universale limitato può essere espresso come moltiplicazione limitata,μ
Kaveh

e una definizione esplicita della moltiplicazione limitata in termini di ricorsione μ può essere trovata anche nei libri di testo.
Kaveh,

@Kaveh sì, la stessa idea implementata in "Un'introduzione ai teoremi di Godel" di P. Smith. Qui vengono fornite le codifiche e l'applicazione dell'operatore di minimizzazione. La parte difficile è come generare la "tabella" come la chiami tu. Smith l'ha saltato. Quindi sembra che dovrò pensarci di più invece di aspettare soluzioni qui;) Almeno grazie per l'approvazione dell'approccio generale.
Artem Pelenitsyn,

La tabella è solo una sequenza finita in cui le voci sono indicizzate dal risultato di una funzione di associazione. dove R ( c , x , y )μc:x<Len(c)y,z<x,x=<y,z>→c<y,z>=R(c,x,y)R(c,x,y)è il rhs dell'equazione per . Ack(x,y)
Kaveh,

Risposte:


13

Rompere la funzione di Ackermann fino agli operatori elementari sarebbe davvero piuttosto lungo, ma ecco uno schizzo:

Si noti che quando si calcola modo ricorsivo, in qualsiasi punto del calcolo si ha a che fare con un'espressione della forma A ( m 1 , A ( m 2 , ... , A ( m k , z ) ... ) . una funzione di associazione biiettiva p con inversa ( π 1 , π 2 ) , possiamo codificare questo stato come p ( z , p ( kUN(m,X)UN(m1,UN(m2,...,UN(mK,z)...)p(π1,π2) (solo p ( z , 0 ) nel caso k = 0 ). Possiamo quindi definire la funzione di valutazione in un solo passaggio, dato uno stato:p(z,p(k,p(mk,,p(m2,m1))p(z,0)k=0

;e(p(z,0))=p(z,0)

;e(p(z,p(k,p(0,c))))=p(z+1,p(k1,c))

;e(p(0,p(k,p(m+1,c))))=p(1,p(k,p(m,c)))

.e(p(z+1,p(k,p(m+1,c))))=p(z,p(k+1,p(m+1,p(m,c))))

Quindi ottieni la funzione di valutazione n-step usando la ricorsione primitiva:

ed E ( n + 1 , m , x ) = e ( E ( n , m , x ) ) .E(0,m,x)=p(x,p(1,m))E(n+1,m,x)=e(E(n,m,x))

Infine, avvolgi recursion attorno a E per trovare il punto in cui arriviamo a uno stato della forma p ( z , 0 ) - z sarà A ( m , x ) .μEp(z,0)zA(m,x)


Grazie! Un'altra domanda (forse abbastanza ingenua, scusate): definizioni simili a pattern-matching (f (0) = ..., f (n + 1) = ...) ampiamente utilizzate, ma dubito che siano davvero concesse dal definizione della funzione mu ricorsiva. Sono loro?
Artem Pelenitsyn,

Questo tipo di caso distinzione (per esempio definendo di f ( 0 , y ) = g ( y ) e f ( x + 1 , y ) = h ( x , y ) ) è un caso speciale di ricorsione primitiva che in realtà non utilizza il valore precedente. Nel calcolo di A ( x , y ) , utilizzeresti anche le funzioni ausiliarie e l'inverso πf(x,y)f(0,y)=g(y)f(x+1,y)=h(x,y)A(x,y) piuttosto se si desidera suddividere questo nel set di operazioni di base. π1,π2
Klaus Draeger,

Ad esempio, potresti tradurre la definizione di come e ( s ) = f 1 ( π 1 ( s ) , π 2 ( s ) ) , dove f 1 ( z , 0 ) = p ( z , 0 ) e f 1 ( z , m + 1 ) = f 2 ( z , π 1ee(s)=f1(π1(s),π2(s))f1(z,0)=p(z,0) , dove f 2 ... ottieni l'idea. f1(z,m+1)=f2(z,π1(m+1),π2(m+1))f2
Klaus Draeger,

7

Questa è una variante dell'idea pubblicata da Kaveh, ma sto pubblicando comunque poiché ti consente di spazzare molti dettagli cattivi sotto il tappeto senza effettivamente fare un giro a mano.

Il fatto chiave è che il grafico della funzione di Ackermann è ricorsivo primitivo. Non è così difficile trovare un limite ricorsivo primitivo molto grezzo ( m , n , w ) sul codice per la tabella dei valori di Ackermann necessari per verificare che A ( m , n ) = w . Non cercare di ottenere limiti netti: più il greggio è più facile! Qualcosa di simile a B ( m , n , w ) = 2 m w wB(m,n,w)A(m,n)=wB(m,n,w)=2mwwdovrebbe essere abbastanza buono, ma ciò dipende dalla scelta dello schema di codifica. Poiché la verifica dei valori della tabella può essere descritta da una formula limitata, è ricorsiva primitiva.

Una volta che hai una definizione ricorsiva primitiva per il grafico della funzione Ackermann, definisci semplicemente A ( m , n ) = μ wG(m,n,w) .A(m,n)=μwG(m,n,w)

Purtroppo, questa strategia non funziona per tutte le funzioni definite dalla doppia (o multipla) ricorsione. Il motivo per cui funziona per la funzione Ackermann - come vedrai quando provi a capire una buona - è che cresce molto monotonicamente. Per il caso generale, devi usare l'idea di Kaveh e fare in modo che μ cerchi la tabella di valori appropriata. Questo è fondamentalmente lo stesso motivo per cui il Teorema della forma normale di Kleene deve fare una proiezione dopo aver applicato l' operatore μ .B(m,n,w)μμ


1
Ciao francois È bello vederti su cstheory.
Kaveh,

Ciao Kaveh. Bello finalmente riuscire a rispondere a qualcosa qui!
François G. Dorais,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.