A continuación, amplío un poco el punto en la respuesta de Peter tratando de llevar a cabo la eliminación del cuantificador durante más de un número constante de pasos para ver dónde falla y si se puede salvar algo de tal intento.
Intentemos amplificar P=NP por más de un número constante de veces.
Supongamos que P=NP . Por lo tanto, existe una máquina del tiempo polinómica que resuelve Ext-Circuit-SAT (¿hay una extensión satisfactoria para un circuito dado y una asignación parcial a sus entradas?).
Más formalmente, tenemos un algoritmo polytime A con tiempo de ejecución polinómico p(n)∈poly(n) st
Dado un circuito booleano φ , y una asignación parcial τ a las entradas,
A devuelve "sí" si hay una extensión de τ que satisface φ , y devuelve "no" en caso contrario.
Para repasar tiempos constantes, necesitamos eliminar el cuantificador de manera efectiva. Podemos hacer esto porque el teorema de Cook-Levin es un teorema constructivo, de hecho, proporciona un algoritmo de tiempo polinómico Cook st
Dado un DTM M recibir dos entradas, y tres números unarios n , m , y t ,
Cook(M,n,m,t) devuelve un circuito booleano de tamaño O(t2) que simula M en las entradas de longitud (n,m) para t pasos.
Intentemos usar estos para extender el argumento de P=PH para obtener un algoritmo que resuelva TQBF (en realidad TQBCircuit, es decir, un problema del circuito booleano totalmente cuantificado).
La idea del algoritmo es la siguiente: usamos repetidamente Cook en A para eliminar los cuantificadores de un circuito cuantificado dado. Hay un número lineal de cuantificadores, por lo que esperamos obtener un algoritmo de tiempo polinómico (tenemos un algoritmo con muchos pasos polinomiales utilizando la subrutina de tiempo polinomial Cook ). Al final de este proceso de eliminación del cuantificador tendremos un circuito libre de cuantificadores que se puede evaluar en tiempo polinómico (el problema del valor del circuito está en P , sea CV un algoritmo de tiempo polinómico para calcular el valor del circuito de un circuito dado) .
Sin embargo, veremos que esta idea no funciona (por la misma razón señalada por Peter).
- Sea φ un circuito cuantificado (inicializado a la fórmula cuantificada dada).
- Deje k el número de cuantificadores en φ .
Para i de k a 1 do
- Deje ψ = Qxkσ(x1,...,xk) sea la última cuantificador y la parte libre de cuantificador.
Si Q="∃" ,
- Calcular C=Cook(A,|σ|,|x1|+...+|xk−1|,p) ,
- Sustituya los bits de entrada con σ en el circuito C ,
- Reemplace ψ con C en φ .
Si Q="∀" ,
- Considere ψ como ¬∃xk¬σ ,
- Calcular C=Cook(A,|¬σ|,|x1|+...+|xk−1|,p) ,
- Sustituya los bits de entrada con ¬σ en el circuito C ,
- Reemplace ψ con ¬C en φ .
- Calcule y devuelva CV(φ) .
El algoritmo resultante parece tiempo polinómico: tenemos muchos pasos polinómicos, cada paso es computable en tiempo polinómico. Sin embargo, esto no es correcto, el algoritmo no es el tiempo polinómico.
El uso de subrutinas de tiempo polinómico en un algoritmo de tiempo polinómico es tiempo polinómico. El problema es que, en general, esto no tiene que ser cierto si los valores devueltos por las subrutinas no son de tamaño polinómico en la entrada original y asumimos que hacemos asignaciones sobre los valores que regresan de las subrutinas. (En el modelo TM tenemos que leer la salida de cualquier subrutina de tiempo polinomial bit por bit.) Aquí el tamaño del valor devuelto por el algoritmo Cook está aumentando (puede ser una potencia del tamaño de la entrada que se le da , la potencia exacta depende del tiempo de ejecución de A y está alrededor de p2(|input|), así como sabemos que A no puede ser menor que el tiempo lineal, |output|es al menos |input|2 )
El problema es similar al código simple a continuación:
- Dado x ,
- Deje n=|x|,
- Deje y=x ,
- Para i de 1 a n do
- Deje y=y|y|, (es decir, concatenación de |y| copias de y )
- Regresar y
Cada vez que ejecutamos y=y|y|cuadramos el tamaño de y . Después de n ejecuciones tendremos una y que es x2n y tiene un tamaño n2n , obviamente no es un polinomio en el tamaño de la entrada.
Supongamos que solo consideramos fórmulas cuantificadas con k(n) alternancias cuantificadoras (donde n es el tamaño total de la fórmula cuantificada).
Supongamos que A ejecuta en el tiempo p ( p . Ej., Tiempo lineal que no se ha descartado hasta ahora), y tal vez tenga un algoritmo Cook más eficiente que genere un circuito más pequeño de tamaño l(t) en lugar de t2 , entonces obtenemos un algoritmo para ExtCircuitSat que se ejecuta en el tiempo (l∘p)O(k)(n)=l(p(l(p(…(l(p(n)))))))O(k) compositions . Incluso en el caso de que tantolyperan lineales (pero con coeficiente total dea≥2) que se pueden conseguir un algoritmo que se ejecuta en tiempoΩ(n2k(n))y sik(n)=Θ(n)se seríaΩ(n2n) similar al algoritmo de fuerza bruta (e incluso esto se basó en suponer que Cook-Levin se puede realizar en algoritmos que resultan en circuitos de tamaño lineal en el tiempo de ejecución del algoritmo).