Expression mu-récursive explicite pour la fonction Ackerman

15

Pouvez-vous s'il vous plaît indiquer comment construire la fonction Ackerman (en fait, je suis intéressé par une version proposée par Rózsa Péter et Raphael Robinson) via des opérateurs mu-récursifs standard? J'ai essayé des papiers originaux de Péter et Robinson, mais le papier de Péter utilise une langue différente de l'anglais et les papiers de Robinson «Recursion and Double Recursion» et «Primitive Recursive Functions» n'aident pas non plus: le premier semble plus pertinent, mais est appelé opérateur de double récursion pour définir la fonction Ackerman, donc dans ce cas, une définition explicite de l'opérateur en termes mu-récursifs est recherchée.

Le plus proche de la réponse est P. Smith dans «Une introduction aux théorèmes de Godel» (CUP, 2007) (29.4 La fonction Ackermann-Peter est μ-récursive), mais il propose ce qui suit: «rendre l'argument étanche est assez fastidieux mais pas difficile. Il n'y a rien à apprendre de l'énoncé des détails ici: nous ne le ferons donc pas. »

J'ai également essayé le livre de Rózsa Péter «Fonctions récursives» (1967, Presse académique). Il existe de nombreuses variantes pour les opérateurs de récursivité qui y sont données. Habituellement, l'un se réduit à l'autre. Je crois qu'il existe un type d'opérateur de récursion qui convient à la définition de la fonction Ackerman et à la séquence d'étapes qui la réduisent à des opérateurs de récursion et de minimisation primitifs, mais je me suis trouvé incapable d'enquêter sur toute la voie.

Artem Pelenitsyn
la source
1
En fait, ce n'est pas aussi difficile que cela puisse paraître au premier abord. L'astuce consiste à laisser l' opérateur rechercher un calcul de la fonction Ackerman, c'est-à-dire le tableau des valeurs jusqu'à l'entrée, puis vérifier que le tableau suit la définition de la fonction. Ce qu'il faut, c'est encoder / décoder des séquences finies et vérifier la table. L'encodage / décodage est explicitement défini dans de nombreux manuels, la vérification peut être effectuée par un quantificateur universel borné sur une relation simple entre les entrées du tableau. Le quantificateur universel borné peut être exprimé comme une multiplication bornée,μ
Kaveh
et une définition explicite de la multiplication bornée en termes de récursivité peut également être trouvée dans les manuels. μ
Kaveh
@Kaveh oui, la même idée implémentée dans «Une introduction aux théorèmes de Godel» de P. Smith. Les codages et l'application de l'opérateur de minimisation y sont donnés. La partie délicate est de savoir comment générer la «table» comme vous le nommez. Smith l'a sauté. Il semble donc que je devrai y réfléchir plus dur au lieu d'attendre des solutions ici;) Au moins merci pour votre approbation de l'approche générale.
Artem Pelenitsyn
Le tableau est juste une séquence finie où les entrées sont indexées par le résultat d'une fonction d'appariement. 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)est le rhs de l'équation pour . Ack(x,y)
Kaveh

Réponses:

13

Décomposer la fonction Ackermann jusqu'aux opérateurs élémentaires serait vraiment assez long, mais voici un schéma:

Notez que lors du calcul récursif de , à tout moment du calcul, vous avez affaire à une expression de la forme A ( m 1 , A ( m 2 , , A ( m k , z ) ) . une fonction d'appariement bijective p avec inverse ( π 1 , π 2 ) , on peut coder cet état comme pUNE(m,X)A(m1,A(m2,,A(mk,z))p(π1,π2) (juste p ( z , 0 ) dans le cas k = 0 ). On peut alors définir la fonction d'évaluation en une étape, étant donné un état: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(k-1,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))))

Vous obtenez ensuite la fonction d'évaluation en n étapes en utilisant la récursion primitive:

et 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)) .

Enfin, enroulez -récursion autour de E pour trouver le point où nous arrivons à un état de la forme p ( z , 0 ) - z sera A ( m , x ) .μEp(z,0)zA(m,x)

Klaus Draeger
la source
Merci! Une autre question (peut-être assez naïve, désolée): les définitions de correspondance de motifs (f (0) = ..., f (n + 1) = ...) sont largement utilisées, mais je doute qu'elles soient vraiment définition de la fonction mu-récursive. Sont-ils?
Artem Pelenitsyn
Ce type de distinction de cas (par exemple, définir par f ( 0 , y ) = g ( y ) et f ( x + 1 , y ) = h ( x , y ) ) n'est qu'un cas spécial de récursion primitive qui n'utilise pas réellement la valeur précédente. Dans le calcul de A ( x , y ) , vous utiliseriez en plus des fonctions auxiliaires et les inverses 1f(x,y)f(0,y)=g(y)f(x+1,y)=h(x,y)A(x,y) un peu si vous voulez décomposer cela en un ensemble d'opérations de base. π1,π2
Klaus Draeger
Par exemple, vous pouvez traduire la définition de par e ( s ) = f 1 ( π 1 ( s ) , π 2 ( s ) ) , où f 1 ( z , 0 ) = p ( z , 0 ) et f 1 ( z , m + 1 ) = f 2 ( z , π 1ee(s)=f1(π1(s),π2(s))f1(z,0)=p(z,0) , où f 2 vous avez l'idée. f1(z,m+1)=f2(z,π1(m+1),π2(m+1))f2
Klaus Draeger
7

C'est une variante de l'idée affichée par Kaveh, mais je poste quand même car elle vous permet de balayer de nombreux détails désagréables sous le tapis sans réellement faire de la main.

Le fait clé est que le graphe de la fonction Ackermann est récursif primitif. Il n'est pas si difficile de trouver une borne récursive primitive très grossière sur le code de la table des valeurs d'Ackermann nécessaire pour vérifier que A ( m , n ) = w . N'essayez pas d'obtenir des limites précises - le plus grossier est le plus facile! Quelque chose comme B ( m , n , w ) =B(m,n,w)A(m,n)=wB(m,n,w)=2mwwdevrait être suffisant, mais cela dépend de votre choix de schéma de codage. Puisque la vérification des valeurs de table peut être décrite par une formule bornée, elle est récursive primitive.

Une fois que vous avez une définition récursive primitive pour le graphique de la fonction Ackermann, définissez simplement A ( m , n ) = μG(m,n,w)A(m,n)=μwG(m,n,w) .

Malheureusement, cette stratégie ne fonctionne pas pour toutes les fonctions définies par double (ou multiple) récursivité. La raison pour laquelle elle fonctionne pour la fonction Ackermann - comme vous le verrez en essayant de trouver un bon - est qu'elle croît de façon très monotone. Pour le cas général, vous devez utiliser l'idée de Kaveh et faire rechercher par μ la table de valeurs appropriée. C'est essentiellement la même raison pour laquelle le théorème de forme normale de Kleene doit faire une projection après avoir appliqué l' opérateur μ .B(m,n,w)μμ

François G. Dorais
la source
1
Salut François. Je suis ravi de vous voir sur cstheory.
Kaveh
Salut Kaveh. Ravi de pouvoir enfin répondre à quelque chose ici!
François