¿Se puede determinar si el lenguaje L se encuentra en NP?

15

Dado un lenguaje L definido por una máquina de Turing que lo decide, ¿es posible determinar algorítmicamente si L se encuentra en NP?

txwikinger
fuente
Reetiquetado a la teoría de la complejidad. No estoy seguro de qué tiene que ver esto con NP-Completeness.
Aryabhata
1
FWIW, a pesar de los votos en el sitio de la propuesta, creo que esta pregunta está más dentro del alcance que la de factorización precisamente porque la pregunta sobre factorización estaría cubierta en la mayoría de los cursos de introducción de complejidad, pero esta ni siquiera está cubierta en muchos niveles de posgrado. cursos de complejidad
Joshua Grochow
1
¿No está esto cubierto en cursos introductorios sobre computabilidad como una aplicación típica del teorema de Rice?
Moritz
3
Moritz: aunque la respuesta sí / no a esta pregunta está cubierta por el Teorema de Rice, vea mi respuesta a continuación para obtener resultados más interesantes. Tal vez, txwikinger, ¿debería cambiar la pregunta a "¿Cuál es la complejidad del conjunto {i: L (M_i) está en NP}?"
Joshua Grochow
Secundaré la respuesta de Joshua aquí. La respuesta puede ser obvia cuando el lenguaje es especificado por una máquina de Turing, pero la respuesta es la misma (y tal vez no tan evidente) si permitimos que el idioma se especifique en algún formato arbitrario.
Anand Kulkarni

Respuestas:

24

No. Primero, según el Teorema de Rice, esta es una propiedad de TM que depende solo del lenguaje que computan, por lo que no puede ser computable.

Pero, más que eso, se sabe que el conjunto de índices de (es decir, el conjunto de TM que calculan idiomas en N P ) es Σ 0 3 -completo ( Σ 0 3 en la jerarquía aritmética de computabilidad, no el jerarquía polinómica).nortePAGnortePAGΣ30 0Σ30 0

Preguntas como esta fueron investigadas por primera vez por Hajek . Para obtener más información, consulte, por ejemplo, este artículo de Ken Regan.

Algunas pepitas más del periódico de Hajek:

  • El conjunto de índices de es Σ 0 3 -completo.PAGΣ30 0
  • es Π 0 2 -completo{yo:PAGL(METROyo)nortePAGL(METROyo)}Π20 0
  • Hay una máquina de Turing total (se detiene en todas las entradas) tal que P L i = N P L i pero la declaración " P L i = N P L i " es independiente (donde L i = L ( M i ) ) . Del mismo modo para relativizaciones donde P N P .METROyoPAGLyo=nortePAGLyoPAGLyo=nortePAGLyoLyo=L(METROyo)PAGnortePAG
Joshua Grochow
fuente
1
Aquí la pregunta parece ser un problema de decisión prometedora (se promete que el lenguaje dado será decidido por un TM, no solo reconocido) en lugar de un problema de decisión total. ¿Seguirá siendo aplicable el teorema de Rice aquí entonces? Recuerde que la prueba del teorema de Rice emplea la indecidibilidad de la detención, por lo que la indecidibilidad es esencial allí.
Zeyu
2
En la pregunta formulada, el lenguaje L fue "dado por una máquina que lo decide". Así fue realmente: dada una máquina de Turing M, ¿se puede determinar si L (M) está en NP? Si el lenguaje L no fuera especificado por una TM, sino simplemente dado como un subconjunto de los números naturales, ¿qué significaría decidir algorítmicamente si L está en NP? En particular, ¿cómo podemos pensar que L es una entrada a un algoritmo cuando L no es dada por una descripción finita?
Joshua Grochow
1
Sí, lo sé. Pero en el Teorema de Rice es posible que la TM no decida un lenguaje, es decir, no computa una función total.
Zeyu
2
Es una heurística general que, dada una propiedad semántica de las máquinas de Turing, como "M define un lenguaje NP", primero se debe tratar de expresar esta propiedad en lógica de primer orden. Esto coloca la propiedad en un nivel de la Jerarquía aritmética; la heurística es que la propiedad generalmente está completa para ese nivel de la jerarquía. Me gustaría preguntar si hay algunos contraejemplos notables de esta heurística.
Andy Drucker
2
Reduciendo a la Jerarquía Polinómica, es menos probable que las cosas se comporten tan bien. Por ejemplo, considere la propiedad "C es un circuito booleano de tamaño mínimo (para la función que calcula)". Este problema es NP-duro y se puede colocar en la Jerarquía polinómica, pero está abierto si está completo para el nivel en el que reside naturalmente. (Tales resultados son conocidos para algunas clases restringidas de circuitos, por ejemplo, DNF; vea la encuesta de dos partes "Completitud en la jerarquía polinómica" por Schaefer y Umans.)
Andy Drucker
5

La respuesta a su pregunta literal es no, como señaló Joshua Grochow.

Sin embargo, como dijo Holger, es posible verificar en tiempo lineal si la máquina de Turing no determinista "se cronometra" y se detiene después de n ^ k pasos para alguna constante k, a través de alguna forma estándar de simulación de un reloj (como el código a continuación). A menudo, cuando un artículo o libro sugiere (incorrectamente) que es posible determinar si un NTM es tiempo polinómico, esto es lo que realmente significan. ¿Quizás es por eso que hiciste la pregunta? (Tuve la misma pregunta cuando aprendí por primera vez la teoría de la complejidad y en algún lugar vi la afirmación de que es posible verificar si un TM es poli-tiempo). La verdadera pregunta es por qué uno podría desear hacer esto, lo que discuto a continuación después de explicar como .

Hay muchas formas de agregar dicha función de reloj. Por ejemplo, imagine en la entrada x de longitud n, ejecutando alternativamente una declaración del "algoritmo primario" que se está sincronizando, y luego una declaración del siguiente algoritmo, que termina en (algo cercano a) n ^ k pasos:

para i_1 = 1 a n
  para i_2 = 1 a n
...
        para i_k = 1 a n
          no-op;
regreso;

Si el código anterior regresa antes de que el algoritmo primario se detenga, entonces detenga todo el cómputo (digamos, con rechazo).

El algoritmo que decide si una NTM es de esta forma, si se interpreta como un intento de un algoritmo para decidir si su entrada es una NTM de tiempo múltiple, informará algunos falsos negativos: se garantiza que algunas NTM se detendrán en tiempo polinómico, aunque no alternan la ejecución de una declaración de un algoritmo con una declaración de un reloj como el código anterior (por lo tanto, sería rechazado a pesar de ser poli-tiempo).

Pero no hay falsos positivos. Si un NTM pasa la prueba, definitivamente se detiene en el tiempo polinómico, por lo tanto, define un lenguaje NP. Sin embargo, quizás el comportamiento de su algoritmo primario subyacente se altera si el reloj a veces se agota antes de que el algoritmo primario se detenga, lo que hace que el cálculo se rechace aunque el algoritmo primario haya aceptado si se le hubiera dado suficiente tiempo para terminar. Por lo tanto, el lenguaje decidido puede ser diferente al del algoritmo primario. Pero, y esta es la clave, si el algoritmo principal que se está ejecutando es, de hecho, un algoritmo de tiempo polinómico que se ejecuta en el tiempo p (n), y si la constante k en el reloj es lo suficientemente grande como para que n ^ k> p (n), entonces el algoritmo primario siempre se detendrá antes de que se agote el reloj. En este caso, la respuesta del algoritmo primario no se altera, por lo que el algoritmo primario y la NTM sincronizada que lo simulan deciden el mismo lenguaje NP.

¿Porque es esto importante? Esto significa que es posible "enumerar todos los lenguajes NP" (lo cual, como dije en la literatura, a menudo es inexacto, como "decidir si una NTM dada es poli-tiempo" o "enumerar todas las NTM poli-tiempo"). Más precisamente, es posible enumerar una lista infinita de NTM M_1 M_2, ..., con las propiedades que

  1. Cada M_k se ejecuta en tiempo polinómico (por ejemplo, al adjuntar un reloj ^ k-time a M_k), por lo tanto, decide un lenguaje NP y
  2. Cada idioma NP es el idioma decidido por algunos M_i en la lista.

Lo que no sucede es que cada NTM de tiempo polinómico está en la lista. Pero cada lenguaje NP tiene un número infinito de NTM que lo representan. Por lo tanto, se garantiza que cada lenguaje NP tenga al menos algunos de sus NTM representativos en la lista, específicamente todos esos NTM en un índice k lo suficientemente grande que n ^ k excede el tiempo de ejecución de M_k.

Esto es útil para hacer trucos como la diagonalización, que requieren enumerar algorítmicamente tales listas infinitas (o ilimitadas) de todos los lenguajes NP. Y, por supuesto, toda esta discusión se aplica a muchos otros tipos de máquinas además de las NTM de poli-tiempo, como las TM deterministas de poli-tiempo.

Dave Doty
fuente
3

pag(norte)

Holger
fuente
2
Eso solo funciona si se trata de un TM no determinista cronometrado . Si solo le doy un TM cronometrado (incluso uno que se ejecuta en tiempo exponencial), aún no se puede decidir si el idioma que decide está en NP. Sin embargo, si N_1, N_2, ... es una enumeración de TM con relojes exponenciales, el conjunto {i: L (N_i) está en NP} probablemente ya no sea Sigma_3 completo, ya que ya está garantizado que N_i está total, pero ciertamente no es computable.
Joshua Grochow