EDITAR: El argumento con el que había respondido no era incorrecto, pero fue un poco engañoso, ya que solo mostraba que el límite superior tenía que estar ajustado para alguna (lo que en realidad es trivial, ya que tiene que ser ajustado cuando n = 2 y el límite es 1).norten = 2
Aquí hay un argumento más preciso. Muestra que si el límite superior de
está suelto para cualquier n en particular , entonces para todos n el número de llamadas al oráculo requerido es O ( 1 ) .Iniciar sesión2nortenorte norteO ( 1 )
(Sin duda, es no , por lo que el límite superior no está suelto! Pero en realidad no prueba que aquí, y se le dio la otra respuesta al problema, no parece que vale la pena.)O ( 1 )
Considere el problema de calcular la salida máxima :
Dada una -tupla ( M 1 , ... , M n ) de las máquinas de Turing, calcule la salida máxima (de las máquinas de Turing que se detienen, si se ejecutan en ϵ ). Si ninguno de ellos se detiene, devuelve 0.norte( M1, ... , Mnorte)ϵ
Como una función de , el número del peor caso de las llamadas de Oracle requiere para calcular esta función es el mismo que el número requerido para decidir cuál de n máquinas dadas alto. (Si sé qué máquinas se detienen, puedo calcular fácilmente la salida máxima. Por el contrario, si quiero saber qué máquinas se detienen, después de la construcción en el enunciado del problema, puedo construir máquinas { M ′ i } ( i = 1 , 2 , ... , n )
, donde M ' i ejecuta todos los n máquinas dadas en paralelo, a continuación, se detiene y la salida inortenorte{ M′yo} ( i = 1 , 2 , ... , n )METRO′yonorteyosi de ellos ha detenido. La salida máxima me dirá el número que se detiene. A partir de eso puedo calcular exactamente qué detener).yo
Ahora, deje que sea el número entero más pequeño n (si lo hay) de modo que se cumpla lo siguiente:norte0 0norte
Usando llamadas al oráculo, se puede calcular la salida máxima de máquinas dadas. (Es decir, el límite superior no es ajustado para .)C( n ) = max { k ∈ Z : 2k< n }nnortenorte
Claramente , porque . De hecho, n 0 > 2 también, porque C ( 2 ) = 0 , pero es indecidible calcular la salida máxima de 2 máquinas dadas (sin llamadas de oráculo). Ahora considere mayor n :C ( 1 ) = - 1norte0 0> 1C( 1 ) = - 1norte0 0> 2C( 2 ) = 02norte
Reclamación: si es finito, entonces, para cualquier n , se puede calcular la salida máxima de n máquinas dadas en llamadas de oráculo C ( n 0 ) . norte0 0nortenorteC( n0 0)(Tenga en cuenta que si es finito, entonces C ( n 0 ) = O ( 1 ) .)norte0 0C( n0 0) = O ( 1 )
Prueba. . Lo probamos por inducción en . Los casos base son n ≤ n 0 , que mantenga por definición de n 0 y C .norten ≤ n0 0norte0 0C
Deje que sea la TM que, dadas las máquinas n 0 Turing, calcula la salida máxima utilizando solo llamadas C ( n 0 ) al oráculo.Q0 0norte0 0C( n0 0)
Arregle cualquier . Dadas las n máquinas M 1 , ... , M n , calcule la salida máxima de la siguiente manera.n > n0 0norteMETRO1, ... , Mnorte
Concéntrese en las primeras máquinas . Considere ejecutar Q 0 en estas máquinas n 0 . Tenga en cuenta que Q 0 hace llamadas C ( n 0 ) al oráculo, y solo hay n ′ = 2 C ( n 0 ) posibles respuestas del oráculo a estas llamadas. Tenga en cuenta que, por definición, n ′ = 2 C ( n 0 ) < n 0METRO1, ... , Mnorte0 0Q0 0norte0 0Q0 0C( n0 0)norte′= 2C( n0 0)norte′=2C(n0 0)< n0 0. Let denota el i º posible respuesta. Para cada i = 1 , ... , n ′ , construya una máquina M ′ i
que simule Q 0 en estas máquinas de la siguiente manera:oyoyoi = 1 , ... , n′METRO′yoQ0 0
TM (en la entrada ϵ ):METRO′yoϵ
- Simule en las máquinas n 0 ( M 1 , ... , M n 0 ) , pero en lugar de llamar al oráculo, suponga que el oráculo responde de acuerdo con o i .Q0 0norte0 0( M1, ... , Mnorte0 0)oyo
- Es posible que esta simulación no se detenga (por ejemplo, si no es lo que el oráculo realmente devolvería).oyo
- Si se detiene la simulación, vamos sea la potencia máxima que Q 0 dice que sería dado.hyoQ0 0
- Haga cola de milano todas las máquinas ( M 1 , … , M n 0 ) . Si alguna de ellas emite h i , deténgase y emita h i .norte0 0( M1, ... , Mnorte0 0)hyohyo
Ahora, en la secuencia dada de máquinas, reemplace las primeras n 0 máquinas M 1 , ... , M n 0 por estas n ′ < n 0 máquinas M ′ 1 , ... , M ′ n ′ . Devuelve el valor calculado recurriendo en esta secuencia de n - ( n 0 - n ′ ) < nnortenorte0 0METRO1, ... , Mnorte0 0norte′< n0 0METRO′1, ... , M′norte′n - ( n0 0- n′) < nmáquinas. (Tenga en cuenta que el oráculo no se llama antes de recurrir, por lo que solo se llama una vez que se alcanza el caso base).
Aquí es por qué este cálculo es correcto. Para el tal que o i es la respuesta `` correcta '' del oráculo Q 0 a las consultas, M ′ me detendría y daría la salida máxima correcta de las máquinas n 0 originales . Así, la salida máxima de las máquinas n ' ( M ' 1 , ... , M ' n ' )
es al menos la salida máxima de las máquinas n 0 ( M 1 , ... ,yooyoQ0 0METRO′yonorte0 0norte′( M′1, ... , M′norte′)norte0 0 . Por otro lado, en el paso 4, no M ' i
puede dar una salida que sea mayor que la salida máxima de ( M 1 , ... , M n 0 ) . Por lo tanto, la salida máxima de lasmáquinas n ' ( M ' 1 , ... , M ' n ' )
es igual a la salida máxima de lasmáquinas n 0 que reemplazan. QED( M1, ... , Mnorte0 0)METRO′yo( M1, ... , Mnorte0 0)norte′( M′1, ... , M′norte′)norte0 0