Encontrei a seguinte pergunta, que é um exercício fácil (spoiler abaixo).
Recebemos instâncias do problema de interrupção (ou seja, TMs ) e precisamos decidir exatamente quais delas serão interrompidas no . Ou seja, precisamos . Recebemos um oráculo para o problema de parada, mas temos que usá-lo um número mínimo de vezes.
Não é difícil mostrar que isso pode ser feito com .
Minha pergunta é: podemos provar um limite inferior? Há motivos para suspeitar que esse limite será muito difícil de encontrar?
A resposta para a pergunta em si (spoiler, mouse suspenso):
Considere o caso de TMs. Podemos construir um TM que executa em paralelo e pára se pelo menos dois deles pararem (caso contrário, ele ficará preso). Da mesma forma, podemos construir uma TM que pare se pelo menos um deles parar. Podemos então chamar o oráculo em . Se parar, podemos executar as máquinas em paralelo e esperar que uma pare. Podemos então chamar o oráculo no último. Se o oráculo disser "não", executamos o oráculo em . Se parar, executamos as máquinas até uma parar, e é a única que pára. Se não parar, nenhum deles será interrompido. Estender isso para máquinas é fácil.H 2 M 1 , M 2 , M 3 H 1 H 2 H 1 H 1 n
A primeira observação sobre essa questão é que parece impossível resolver usando ferramentas teóricas da informação, uma vez que confiamos crucialmente em nossa capacidade de obter informações executando as máquinas sem o oráculo.
fonte
Respostas:
O resultado pode ser encontrado em
A prova deles mostra, de fato, que seu problema não pode ser resolvido com menos de consultas a qualquer conjunto X , sem falar no próprio problema de parada. Para algumas notações, seu problema às vezes é indicado como C K n ou C H A L T n (dependendo da sua notação favorita para o problema de parada).log2n X CKn CHA L Tn
Para este e muitos resultados relacionados, consulte também:
Esta pesquisa da Gasarch
O livro Consultas vinculadas à teoria da recursão de Gasarch e Martin.
fonte
EDIT: O argumento com o qual eu respondi não estava errado, mas era um pouco enganador, pois mostrava apenas que o limite superior precisava ser apertado para alguns (o que é realmente trivial, pois precisa ser apertado quando n = 2 e o limite é 1).n n = 2
Aqui está um argumento mais preciso. Isso mostra que, se o limite superior do estiver frouxo para qualquer n específico , para todos os n, o número de chamadas oracle necessárias será O ( 1 )registro2n n n O ( 1 ) .
(Com certeza, é nãoO ( 1 ) , de modo que o limite superior é nunca solta! Mas eu realmente não provar que aqui, e dada a outra resposta para o problema, não parece vale a pena perseguir.)
Considere o problema de calcular a saída máxima :
Em função de , o pior número de chamadas oracle necessárias para calcular essa função é o mesmo que o número necessário para decidir qual das n máquinas determinadas será interrompida. (Se eu souber quais máquinas param, posso calcular facilmente a produção máxima. Por outro lado, se eu quiser saber quais máquinas param, seguindo a construção na declaração do problema, posso construir máquinas { M ′ i } ( i = 1 , 2 , … , N ) onde M ′ i executa todas as n máquinas dadas em paralelo, então pára e produz in n { M′Eu} ( i = 1 , 2 , … , n ) M′Eu n Eu se algum dia paro. A saída máxima me dirá o número que será interrompido. Daí eu posso calcular exatamente qual parada.)Eu
Agora, vamos ser o número inteiro menor n (se houver) de tal forma que mantém o seguinte:n0 0 n
Claramente , porque C ( 1 ) = - 1 . De fato, n 0 > 2 também, porque C ( 2 ) = 0 , mas é indecidível calcular a saída máxima de 2 máquinas fornecidas (sem chamadas de oracle). Agora considere n maior :n0 0> 1 C(1)=−1 n0>2 C(2)=0 2 n
Reivindicação: Se for finito, então, para qualquer n , pode-se calcular a saída máxima de n máquinas dadas em C ( n 0 ) chamadas oracle.n0 n n C(n0) (Observe que se for finito, então C ( n 0 ) = O ( 1 ) .)n0 C(n0)=O(1)
Prova. . Provamos isso por indução em . Os casos base são n ≤ n 0 , o qual, por definição, conter de n 0 e C .n n≤n0 n0 C
Seja a MT que, dadas quaisquer n 0 máquinas de Turing, calcula a saída máxima usando apenas chamadas C ( n 0 ) para o oráculo.Q0 n0 C(n0)
Corrija qualquer . Dadas as n máquinas M 1 , … , M n , calcule a saída máxima da seguinte maneira.n>n0 n M1,…,Mn
Concentre-se nas primeiras máquinas . Considere executar Q 0 nessas n 0 máquinas. Observe que Q 0 faz chamadas C ( n 0 ) ao oráculo, e há apenas n ′ = 2 C ( n 0 ) respostas possíveis pelo oráculo para essas chamadas. Observe que, por definição n ′ = 2 C ( n 0 ) < n 0M1,…,Mn0 Q0 n0 Q0 C(n0) n′=2C(n0) n′=2C(n0)<n0 . Deixe denotar o i th resposta possível. Para cada i = 1 , ... , n ' , construir uma máquina M ' i
que simula Q 0 nessas máquinas, como segue:oi i i=1,…,n′ M′i Q0
Agora, na seqüência dada de máquinas, substitua as primeiras n 0 máquinas M 1 , … , M n 0 por essas n ′ < n 0 máquinas M ′ 1 , … , M ′ n ' . Retorne o valor calculado recorrendo nesta sequência de n - ( n 0 - n ′ ) < nn n0 M1,…,Mn0 n′<n0 M′1,…,M′n′ n−(n0−n′)<n máquinas (Observe que o oráculo não é chamado antes da recorrência, de modo que o oráculo é chamado somente quando o caso base é atingido.)
Aqui está o porquê dessa computação estar correta. Para o de modo a que o i é a `` correcto '' resposta pelo oráculo Q 0 para as consultas, H ' i pararia e dar a saída máxima correcta do original n 0 máquinas. Assim, a produção máxima das n ′ máquinas ( M ′ 1 , … , M ′ n ′ ) é pelo menos a produção máxima das n 0 máquinas ( M 1 , … ,i oi Q0 M′i n0 n′ (M′1,…,M′n′) n0 . Por outro lado, na etapa 4, nenhum M ′ i
pode fornecer uma saída maior que a saída máxima de ( M 1 , … , M n 0 ) . Assim, a produção máxima das n ′ máquinas ( M ′ 1 , … , M ′ n ′ )
é igual à produção máxima das n 0 máquinas que elas substituem. QED(M1,…,Mn0) M′i (M1,…,Mn0) n′ (M′1,…,M′n′) n0
fonte