Teoría de la complejidad computacional: ¿Cuál es la diferencia entre las máquinas de Turing deterministas y no deterministas?

Volvamos a las definiciones. En la superficie, las dos nociones de máquina de Turing se parecen mucho. Una máquina de Turing determinista es una tupla de 7

[matemáticas] (Q, \ Sigma, \ Gamma, \ delta, q_0, q_ {acc}, q_ {rej}) [/ matemáticas]

donde [matemática] Q [/ matemática] es un conjunto finito de estados , [matemática] \ Sigma [/ matemática] es el alfabeto de entrada, [matemática] \ Gamma [/ matemática] es el alfabeto de cinta (donde [matemática] \ Sigma \ subset \ Gamma [/ math], ya que el símbolo en blanco debe aparecer en [math] \ Gamma [/ math] y no es un símbolo de entrada), [math] \ delta [/ math] es la función de transición, [math] q_0 \ en Q [/ matemática] es el estado inicial y [matemática] q_ {acc} \ en Q [/ matemática] y [matemática] q_ {rej} \ en Q [/ matemática] son ​​los estados de aceptación y rechazo , respectivamente .

Una máquina de Turing no determinista es también una tupla de 7

[matemáticas] (Q, \ Sigma, \ Gamma, \ delta, q_0, q_ {acc}, q_ {rej}) [/ matemáticas]

y las entidades representan lo mismo que en lo anterior con una excepción importante:

En el caso de una máquina de Turing determinista, la función de transición tiene funcionalidad

[matemáticas] \ delta: Q \ times \ Gamma \ rightarrow Q \ times \ Gamma \ times \ {L, R \} [/ math]

Entonces, aplicando [math] \ delta [/ math] a un par de símbolo de estado [math] (q, a) [/ math] obtenemos un triple de la forma [math] (q ‘, a’, L) [ / math] o [math] (q ‘, a’, R) [/ math]. Esto debe interpretarse como: Si la máquina está en estado [matemática] q [/ matemática] y su cabeza lee el símbolo, la máquina ahora pasa al estado [matemática] q ‘[/ matemática] y reemplaza [matemática] a [ / math] por [math] a ‘[/ math] y mueve su cabeza hacia la izquierda (respectivamente, hacia la derecha).

En otras palabras, el comportamiento de una máquina de Turing determinista no es ramificado: dado un estado y un símbolo, solo es posible un siguiente paso.

Una máquina determinista de Turing acepta su entrada si puede, al aplicar la función de transición, eventualmente alcanzar el estado de aceptación [math] q_ {acc} [/ math]. Si la máquina finalmente alcanza el estado [matemática] q_ {rej} [/ matemática], la rechaza. Tenga en cuenta que, por lo tanto, una máquina para algunas cadenas de entrada no acepta ni rechaza.

En el caso de una máquina de Turing no determinista , la función de transición tiene funcionalidad

[matemáticas] \ delta: Q \ times \ Gamma \ rightarrow \ mathcal {P} (Q \ times \ Gamma \ times \ {L, R \}) [/ math]

(Aquí la notación [math] \ mathcal {P} (S) [/ math] denota el conjunto de potencia de un conjunto [math] S [/ math], es decir, la familia de todos los subconjuntos del conjunto [math] S .[/mates])

Aquí, al aplicar [math] \ delta [/ math] a un par de símbolo de estado [math] (q, a) [/ math] obtenemos un conjunto de triples donde cada triple de la forma [math] (q ‘, a ‘, L) [/ math] o [math] (q’, a ‘, R) [/ math]. Esto debe interpretarse como: Si la máquina está en estado [matemática] q [/ matemática] y su cabeza lee el símbolo, la máquina ahora puede realizar cualquiera de los pasos indicados por un triple en este conjunto. Tenga en cuenta que el conjunto de sucesores triples puede estar vacío, por lo que en algunos casos la máquina no puede continuar.

Por lo tanto, el comportamiento de una máquina de Turing no determinista es ramificado : dado un estado y un símbolo, puede ser posible más de un paso siguiente (o ninguno).

La diferencia de aceptación, por lo tanto, tiene que ser ligeramente diferente.

Una máquina de Turing no determinista acepta su entrada si puede, aplicando la función de transición, eventualmente alcanza el estado de aceptación [math] q_ {acc} [/ math]. Entonces, siempre que una elección de pasos conduzca a una eventual aceptación, entonces la máquina acepta su entrada. Si la máquina finalmente alcanza el estado [math] q_ {rej} [/ math] sin importar qué rama se elija, rechaza su entrada . En otras palabras, para que la máquina rechace su entrada, cada elección de pasos debe conducir a un eventual rechazo.

La noción de aceptación es diferente. Una TM determinista tiene un curso de acción fijo en una entrada dada, mientras que una NDTM puede “ramificarse” y decidir hacer cosas diferentes. En el último caso, acepta la entrada si, y solo si, existe una ruta de aceptación en el árbol de cálculo, es decir, si hay al menos una secuencia de opciones que conducen a un estado de aceptación. Por cierto, el no determinismo no debe confundirse con la aleatoriedad.

Llegaré a la respuesta en el largo camino.

Consideremos el problema de búsqueda HAMPATH. En HAMPATH, se nos da un gráfico dirigido G como entrada y tenemos que generar una ruta hamiltoniana (una ruta dirigida que atraviesa cada vértice en G) en G o “No” si no existe tal ruta. ¿Cómo escribirías un algoritmo para resolver este problema? Hay una solución de programación dinámica que resuelve este problema en el tiempo O * (2 ^ n) (ignorando los factores polinomiales).

También hay una versión de verificación de HAMPATH. Aquí se nos da el gráfico G y un camino hamiltoniano candidato P como entrada y tenemos que generar “SÍ” si P es un camino hamiltoniano en G y “No” en caso contrario. Un algoritmo para este problema es realmente simple. Simplemente haga un seguimiento de los vértices que se han visitado al atravesar los bordes de P en G y al final verifique si todos los vértices se han visitado exactamente una vez. Esto se puede hacer en tiempo lineal (en el tamaño del gráfico, sin incluir el tamaño de la ruta del candidato de entrada) en el popular modelo RAM (descrito en CLRS).

Vea la diferencia entre la complejidad de resolver las versiones de búsqueda y verificación de HAMPATH. ¿Podría haber un algoritmo fácil (poli-tiempo) para resolver la versión de búsqueda de HAMPATH también? Creemos que este no es el caso (es decir, P / = NP). Decimos que HAMPATH es fácilmente verificable pero no fácilmente solucionable. Esta afirmación es válida para muchos problemas.

En este punto, uno podría verse tentado a pensar que todos los problemas son fácilmente verificables. Retrocedamos y miremos lo que se necesita para decir que un problema es fácilmente verificable. Hay dos ingredientes clave. Uno, el certificado que debe verificarse debe ser de tamaño pequeño. En HAMPATH, la ruta del candidato es el certificado. No es necesario que sea más grande que el gráfico G. Dos, el algoritmo que verifica la exactitud del certificado debe ser poli-tiempo. Ahora, considere la versión de verificación del complemento del problema HAMPATH. es decir, dado un gráfico G, tenemos que certificar que no tiene caminos hamiltonianos. Piensa en esto por un tiempo. Verá que no hay formas “naturales” de certificar esto fácilmente. Este es el problema NP vs coNP.

Ahora, llegando a la cuestión de DTM vs NTM. Los DTM se utilizan para capturar la noción de solvabilidad fácil y los NTM para capturar la verificabilidad fácil. Un NTM puede considerarse como un DTM aumentado con un chip de memoria especial llamado memoria “adivina”. Como primer paso de la computación, un NTM siempre emite la instrucción “Rellene la cinta de adivinanzas” y alguien llena la cinta de adivinanzas con el valor correcto según el problema. Para HAMPATH, se rellenará con la ruta hamiltoniana P o nada si no existe dicha ruta. El NTM puede usar el contenido de la cinta de adivinanzas durante su cálculo. Se puede demostrar que tales máquinas capturan lo que definimos como verificabilidad fácil anteriormente, lo que las hace extremadamente importantes en el estudio del problema P vs NP.

En un entorno más general, donde no hay restricciones de complejidad en el cálculo, las NTM son equivalentes en potencia a las DTM. es decir, para cada NTM, hay un DTM que puede simular el NTM. El DTM puede, dado un tiempo ilimitado, simplemente iterar a través de todos los contenidos posibles de la cinta de adivinar de una manera inteligente para encontrar el contenido “correcto” de la cinta de adivinar.

Ahora, llegando a la definición de NTM que se encuentra en los libros de texto, el contenido de la cinta de conjetura se manifiesta como opciones disponibles para la función de transición de la NTM. Cada elección realizada por la NTM durante el cálculo puede considerarse como una posible configuración de alguna ubicación de memoria en la memoria de conjetura

PD: – La presentación de P vs NP con un fuerte énfasis en búsqueda vs verificación se puede encontrar en el maravilloso libro de texto de Oded Goldreich “Complejidad computacional: una perspectiva conceptual”. Él aboga firmemente contra el uso de NTM al principio de los cursos de teoría de la complejidad para introducir el problema P vs NP, ya que tiende a desviar la atención hacia esta máquina mítica y poderosa en lugar del fenómeno natural subyacente (búsqueda vs verificación) que está tratando de capturar.

Gracias por el A2A.

More Interesting

¿Cuáles son algunas historias menos conocidas sobre Alan Turing?

¿Qué piensan los informáticos teóricos de la hipótesis del universo matemático de Max Tegmark?

¿Cómo se puede usar la función zeta de Riemann para generar números pseudoaleatorios?

¿Cuál es la banda de transición máxima permitida del filtro de paso bajo utilizado en el núcleo de reconstrucción para un CD con una frecuencia de voz máxima de 4 kHz?

¿Cuál es el propósito de aprender teoría de la computación?

Cómo aumentar la velocidad de cálculo de la función trigonométrica en una computadora

¿Qué debe incluirse en cualquier programa que use la función matemática?

¿Por qué 0 ^ 0 es igual a 1 en el estándar IEEE 754 aunque no tiene sentido?

Tengo los datos de todos mis productos (altura-ancho-longitud) pero quiero encontrar el número óptimo de cajas N y el tamaño de cada N cajas (medidas como HWL). ¿Cómo puedo hacerlo?

¿Es necesaria una buena comprensión matemática de los algoritmos de ML para crear software utilizando partes de él?

Quiero aprender matemáticas programando. ¿Cuáles son los proyectos de programación simples pero geniales que requerirían conocimiento de álgebra, cálculo, probabilidad, etc.?

¿Qué debo hacer después de completar mi B.Tech para ingresar a una carrera relacionada con las matemáticas?

¿Podría un genio aleatorio resolver el problema P vs NP o pasará a través de avances muy lentos en la ciencia por un grupo de personas que trabajan juntas?

¿Cómo debo aprender programación competitiva cuando soy malo en matemáticas?

Cómo tener éxito en informática si no soy demasiado bueno en matemáticas y nunca he hecho física