equivalência funcional recursiva primitiva

7

Dadas duas funções recursivas primitivas, é decidível se elas são ou não a mesma função? Por exemplo, vamos considerar os algoritmos de classificação A e B, que são recursivos primitivos. Embora existam muitos algoritmos para classificação, todos descrevem a mesma relação. Dadas duas implementações recursivas primitivas de A e B, elas podem representar a mesma função? Observe que esta pergunta não é sobre recursão irrestrita e, como tal, não é limitada pelas propriedades das máquinas de Turing.

Sei que, se você tem duas funções que são interrompidas e possui um domínio finito, pode ser comprovada a mesma função, porque você pode simplesmente tentar todas as entradas possíveis e comparar a saída de cada função. Minha confusão é quando trabalho com coisas que trabalham dizem números naturais porque eles não são finitos.

Se isso não for decidível para as funções recursivas primitivas, é possível para classes mais fracas, como as funções recursivas elementares. Eu também sei que isso é possível para coisas mais fracas, como máquinas de estados finitos e autômatos determinísticos de empilhamento. Obrigado.

44701
fonte
11
Observe que "decidível" e "pode ​​ser provado" são duas coisas muito diferentes!
Raphael

Respostas:

6

É sabido que a equivalência é indecidível mesmo para os CFGs resp. PDAs (veja até a Wikipedia ). Isso fornece uma prova de que a mesma propriedade é indecidível para cada modelo de qualquer superconjunto de CFL (por uma simples redução de caso especial ).

Como resolver o problema da palavra para qualquer CFL é claramente recursivo primitivo (em virtude do seu algoritmo de análise favorito), isso inclui o conjunto de funções / algoritmos recursivos primitivos.

Rafael
fonte
4

Não é decidível, pela prova informal relativamente direta:

Dada uma máquina de Turing arbitrária , é possível definir a seguinte função :MfM

fM(n)={0 if M does not halt in n steps on empty input1 otherwise

É um fato fundamental da recursão primitiva que é, de fato, recursiva primitiva ("simula" para etapas).fMMn

Agora a instrução

M does not halt on empty input

é equivalente a

n, fM(n)=0(n)
onde é a função que sempre retorna . A linguagem das funções que não são interrompidas é indecidível e, portanto, a equivalência acima de funções recursivas primitivas é indecidível para geral .00fM

Não é muito difícil mostrar que decidir equivalência de funções recursivas primitivas é de fato em , ou seja, exatamente tão difícil quanto determinar a não terminação de máquinas de Turing ou decidir sentenças aritméticas com um único quantificador universal não limitado (e possivelmente delimitado e ).Π10

cody
fonte