Como podemos garantir que continuamos a fazer declarações válidas e válidas sobre as classes de complexidade ao usar as máquinas de Turing da Oracle? De acordo com o meu entendimento (com base nas definições fornecidas nos livros introdutórios sobre o assunto), as máquinas Oracle Turing podem determinar o status de associação de uma string em relação a uma linguagem Oracle em uma etapa da computação. No entanto, as linguagens do oracle frequentemente usadas são comprovadamente impossíveis de resolver em tempo constante (por exemplo, um oráculo completo EXPTIME). Para mim, isso parece "abrir a porta" para as contradições e, afinal, tudo segue uma contradição.
9
Respostas:
Há várias maneiras de ver isso.
Uma é que, nas provas, a implicação é como uma função, que toma como entrada uma prova de alguma coisa e produz uma prova de outra coisa.
Podemos escrever funções que operam com valores que não temos.
Por exemplo, vamos considerar o número de parada , que não é computável. Eu posso escrever a funçãoh
.h a l t i n gPl u s O n e ( x ) = x + 1
Esta função usa como entrada o número de parada e retorna o número de parada mais um. Claramente, esta é uma função bem definida: se dermos a entrada correta, ela fornecerá a saída correta. O fato de não encontrarmos a entrada correta não a torna menos válida para uma transformação.
Também é importante perceber que, quando dizemos algo como "Não existe uma máquina de Turing que possa resolver o problema de parada", isto é, não existe uma TM que corresponda à definição padrão de uma TM que decide o problema de parada.
Um oráculo está basicamente dizendo "Suponha que temos uma TM que corresponde à definição normal, exceto também assumindo que podemos resolver algum problema". Portanto, não há contradição, já que não estamos assumindo que uma TM normal está aceitando o problema, estamos assumindo que existe uma TM especial aceitando o problema.
Numa analogia muito informal, pense assim. Se eu posso provar a você que nenhum humano sem superpotências pode voar, não há contradição dizendo que há um super-herói que pode voar.
Esses oráculos são objetos puramente lógicos. Não sabemos como construir máquinas físicas que as imitem, da maneira que podemos com as máquinas de Turing, mas, tanto quanto sabemos, não há contradição inerente entre suas definições e nossos axiomas básicos. Como objetos lógicos, esses oráculos existem. Sabemos que eles não são termos padrão de Máquinas de Turing ou Lambda-Calculus ou funções Recursivas Parciais. A tese de Church-Turing diz que não há modelo mais poderoso, mas não é um teorema, é apenas uma conjectura e é informal demais para ser realmente provado.
fonte
Então, qual é o sentido de usar um oracle TM? Eu diria que isso nos permite principalmente considerações teóricas sobre o (grau de) dureza dos problemas. O oráculo pode até ser indecidível. Nesse caso, você pode definir toda uma hierarquia de problemas indecidíveis (grau de Turing). Obviamente, se o seu oráculo é o problema de parada, você não pode converter seu oracle TM em um TM tradicional.
O conceito do oracle TM também é importante para definir uma forma forte de reduções (reduções de Turing).
fonte