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.
la source
Réponses:
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 pA(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 ) .μ E p(z,0) z A(m,x)
la source
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)=w B(m,n,w)=2mww devrait ê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) μ μ
la source