Expressão mu-recursiva explícita para a função Ackerman

15

Você pode apontar como criar a função Ackerman (na verdade, estou interessado em uma versão proposta por Rózsa Péter e Raphael Robinson) por meio de operadores mu-recursivos padrão? Tentei artigos originais de Péter e Robinson, mas o artigo de Péter usa um idioma diferente dos artigos de inglês e Robinson: "Recursão e dupla recursão" e "Funções primitivas recursivas" também não ajudam: o primeiro deles parece mais relevante, mas é tão útil. chamado operador de recursão dupla para definir a função Ackerman; portanto, neste caso, é buscada uma definição explícita do operador em termos mu-recursivos.

Mais próximo da resposta está P. Smith em “Uma introdução aos teoremas de Godel” (CUP, 2007) (29.4 A função Ackermann-Peter é μ-recursiva), mas ele apresenta o seguinte: “tornar o argumento à prova d'água é bastante tedioso, embora não seja difícil. Não há nada a ser aprendido explicando os detalhes aqui: então não vamos. ”

Também experimentei o livro de Rózsa Péter, “Funções recursivas” (1967, Academic press). Existem muitas variantes para operadores de recursão fornecidas lá. Normalmente, um reduz a outro. Acredito que exista um tipo de operador de recursão que se ajuste à definição da função Ackerman e sequência de etapas que a reduza a operadores de redursão e minimização primitivos, mas não consegui investigar o caminho todo.

Artem Pelenitsyn
fonte
1
Na verdade, isso não é tão difícil quanto pode parecer à primeira vista. O truque é permitir que o operador μ procure um cálculo da função Ackerman, ou seja, a tabela de valores até a entrada e, em seguida, verifique se a tabela segue a definição da função. O que é necessário é codificar / decodificar seqüências finitas e verificar a tabela. Codificação / decodificação são definidas explicitamente em muitos livros, a verificação pode ser feita por um quantificador universal limitado em uma relação simples entre as entradas da tabela. O quantificador universal limitada pode ser expressa como a multiplicação limitada,
Kaveh
e uma definição explícita de multiplicação limitada em termos de recursão também pode ser encontrada nos livros didáticos. μ
Kaveh
@ Kaveh sim, a mesma idéia implementada em “Uma introdução aos teoremas de Godel”, de P. Smith. As codificações e a aplicação do operador de minimização são fornecidas lá. A parte complicada é como gerar a "tabela" como você escolhe. Smith pulou. Parece que vou ter que pensar mais sobre isso em vez de esperar por soluções aqui;) Pelo menos, obrigado por sua aprovação da abordagem geral.
Artem Pelenitsyn
A tabela é apenas uma sequência finita em que as entradas são indexadas pelo resultado de uma função de emparelhamento. em que 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)é o rhs da equação para . Ack(x,y)
Kaveh

Respostas:

13

Quebrar a função Ackermann até os operadores elementares seria realmente muito demorado, mas aqui está um esboço:

Observe que ao calcular recursivamente, em qualquer ponto do cálculo, você está lidando com uma expressão da forma A ( m 1 , A ( m 2 , , A ( m k , z ) ) . uma função de emparelhamento bijetivo p com inverso ( π 1 , π 2 ) , podemos codificar esse estado como p ( z , p ( kA(m,x)A(m1,A(m2,,A(mk,z))p(π1,π2) (apenas p ( z , 0 ) no caso k = 0 ). Em seguida, podemos definir a função de avaliação em uma etapa, considerando um estado: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))))

Você obtém a função de avaliação n-step usando recursão primitiva:

e 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))

Finalmente, envolva a recursão em torno de E para encontrar o ponto em que chegamos ao estado da forma p ( z , 0 ) - z será A ( m , x ) .μEp(z,0)zA(m,x)

Klaus Draeger
fonte
Obrigado! Mais uma pergunta (talvez bastante ingênua, desculpe): definições semelhantes à correspondência de padrões (f (0) = ..., f (n + 1) = ...) amplamente utilizadas, mas duvido que sejam realmente permitidas pelo definição de função mu-recursiva. São eles?
Artem Pelenitsyn
Este tipo de caso distinção (por exemplo, que definem por F ( 0 , y ) = g ( y ) e f ( x + 1 , y ) = h ( x , y ) ) é apenas um caso especial de recursão primitiva que realmente não usa o valor anterior. No cálculo de A ( x , y ) , você usaria adicionalmente funções auxiliares e os inversos 1f(x,y)f(0,y)=g(y)f(x+1,y)=h(x,y)A(x,y)π1,π2
ee(s)=f1(π1(s),π2(s)), where f1(z,0)=p(z,0) and f1(z,m+1)=f2(z,π1(m+1),π2(m+1)), where f2 you get the idea.
Klaus Draeger
7

This is a variant of the idea posted by Kaveh, but I am posting anyway since it allows you to sweep many nasty details under the rug without actually doing any handwaving.

The key fact is that the graph of the Ackermann function is primitive recursive. It's not that hard to find a very crude primitive recursive bound B(m,n,w) on the code for the table of Ackermann values needed to verify that A(m,n)=w. Don't try to get sharp bounds — the cruder the easier! Something like B(m,n,w)=2mww should be good enough, but that depends on your choice of coding scheme. Since the verification of the table values can be described by a bounded formula, it is primitive recursive.

Once you have a primitive recursive definition for the graph G(m,n,w) of the Ackermann function, simply define A(m,n)=μwG(m,n,w).

Sadly, this strategy doesn't work for all functions defined by double (or multiple) recursion. The reason it works for the Ackermann function — as you will see when trying to figure out a good B(m,n,w) — is that it grows very monotonically. For the general case, you must use Kaveh's idea and have μ look for the appropriate table of values. This is basically the same reason why the Kleene's Normal Form Theorem needs to do a projection after applying the μ operator.

François G. Dorais
fonte
1
Hi François. It's nice to see you on cstheory.
Kaveh
Hi Kaveh. Nice to finally get to answer something here!
François G. Dorais