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).nn = 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 )registro2nn nO ( 1 ) .
(Com certeza, é não O ( 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 :
Dado um duplo ( M 1 , … , M n ) de máquinas de Turing, calcule a saída máxima (das máquinas de Turing que param, se executadas em ϵ ). Se nenhum deles parar, retorne 0.n( M1 1, … , Mn)ϵ
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 inn{ M′Eu} ( i = 1 , 2 , … , n )M′EunEuse 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 0n
Usando chamadas Oracle, pode-se calcular a saída máxima de n máquinas dadas. (Ou seja, o limite superior não é apertado para n .)C( n ) = max { k ∈ Z : 2k< n }nn
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> 1C(1)=−1n0>2C(2)=02n
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. n0nnC(n0)(Observe que se for finito, então C ( n 0 ) = O ( 1 ) .)n0C(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 .nn≤n0n0C
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.Q0n0C(n0)
Corrija qualquer . Dadas as n máquinas M 1 , … , M n , calcule a saída máxima da seguinte maneira.n>n0nM1,…,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,…,Mn0Q0n0Q0C(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:oiii=1,…,n′M′iQ0
TM (na entrada ϵ ):M′iϵ
- Simular sobre os n 0 máquinas ( M 1 , ... , M n 0 ) , mas em vez de chamar o oráculo, assumir as responde oracle de acordo com o i .Q0n0(M1,…,Mn0)oi
- Esta simulação pode não parar (por exemplo, se não é o que o oráculo seria realmente voltar).oi
- Se as paradas de simulação, vamos ser a potência máxima que Q 0 diz que seria dado.hiQ0
- Detalhe todas as máquinas ( M 1 , … , M n 0 ) . Se um deles alguma vez der saída h i , pare e dê saída h i .n0(M1,…,Mn0)hihi
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 ′ ) < nnn0M1,…,Mn0n′<n0M′1,…,M′n′n−(n0−n′)<nmá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 , … ,ioiQ0M′in0n′(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