Deje una cadena de entrada como . Luego, si un NFA se encuentra actualmente en el estado r (y ha leído la entrada hasta el alfabeto w i ), antes de leer el siguiente símbolo de entrada, el NFA se divide en dos NFA, uno en el estado r y otro en s , si hay una transición del tipo r ϵ → s . Si hay un ciclo del tipo r ϵ → s ϵ → q 1 . . . . ϵ → , donde q i son algunos estados de NFA, entonces no sirve de nada recordar otro NFA en el estado r hasta el punto donde se ha leído la entrada hasta el alfabeto w i .
Si un PDA (no determinista) está en estado r (y la entrada se lee hasta w i ) y existe un ciclo r ϵ , ϵ → a → s ϵ , ϵ → a → q 1 . . . . ϵ , ϵ → a
(donde la transición ϵ , ϵ → a significa que nada después de w i se lee desde la entrada, no sesacanada o se lee desde la pila y el alfabeto a se introduce en la pila) y luego antes de leer el siguiente alfabeto de entrada w i + 1 habrá PDA infinito en estados r , s , q 1 , . . . q k porque a diferencia del NFA, aunque los estados son contenidos de pila finitos, pueden ser diferentes (posibilidades infinitas), si no me equivoco.
Al igual que con NFA y PDA, el poder del no determinismo proviene de las transiciones . Así que supongo que la máquina de Turing no determinista también obtiene su no determinismo de transiciones ϵ como NFA y PDA (más como PDA). Sé que una máquina de Turing determinista puede simular una no determinista (conozco la prueba que usa la búsqueda de primer pan). Pero ahora tengo dudas sobre cómo es posible. Porque si existe un ciclo del tipo PDA anterior, en el diagrama de estado de la máquina de Turing no determinista, antes de leer el siguiente símbolo w i + 1la máquina de Turing determinista incluso cuando simula una configuración en alguna rama de la máquina de Turing no determinista (mientras que bfs) tendría que hacer un seguimiento de la máquina de Turing infinita (nuevamente los estados son finitos pero los símbolos en la cinta tienen posibilidades infinitas).
Entonces, ¿cómo se define exactamente el no determinismo en el caso de las máquinas de Turing? ¿Estoy malinterpretando algo trivial? ¿Las máquinas de Turing no deterministas usan transiciones ?
Lamento mis dudas triviales. Si algo es incorrecto, puedo actualizar mi pregunta.
Respuestas:
El no determinismo es el mismo concepto en todos los contextos: la máquina tiene varias opciones para proceder en cualquier punto dado. Sin embargo, la semántica es un poco diferente, ya que los DFA / NFA y PDA siempre definen funciones totales , mientras que las máquinas Turing (deterministas o no deterministas) en general definen funciones parciales .
Una función parcial es una definida solo en parte del dominio. Si no está definido en x, entonces escribimos f ( x ) = ⊥ . (Entonces f es realmente una función total, pero hay un elemento especial en el rango que significa que la salida no está definida.) Una máquina determinista de Turing M define una función parcial de la siguiente manera: si M se detiene en x, entonces M ( x ) es el contenido de la cinta cuando M se detiene en x ; y de lo contrario, M ( x ) = ⊥f x f(x)=⊥ f M M x M(x) M x M(x)=⊥ .
Un decisor de máquina de Turing determinista tiene dos tipos de estados de detención, aceptar y rechazar, y define una función parcial de la siguiente manera: si detiene en x en un estado de aceptación, entonces M ( x ) = 1 ; si se detiene en un estado de rechazo, entonces M ( x ) = 0 ; si no se detiene, entonces M ( x ) = ⊥ . Si M siempre se detiene, entonces decimos que acepta el lenguaje L = { x : M ( xM x M(x)=1 M(x)=0 M(x)=⊥ M L={x:M(x)=1} .
Una máquina de Turing no determinista (que siempre es un decisor) puede "ramificarse" (tener varias opciones posibles en cualquier momento) y tiene la siguiente semántica:
Dada esta definición, es de esperar que esté claro cómo simular una máquina de Turing no determinista utilizando un decisor de máquina de Turing determinista: prueba todas las ramas, verificando si alguna de ellas conduce a un estado de detención aceptable. Después de que todas las ramas se hayan detenido, puede decidir si pasar a un estado de aceptación o de rechazo. Si la máquina de Turing no determinista no se detiene en alguna rama, entonces también lo haría la determinista.
¿Qué pasa con los movimientos ? Causan problemas porque el autómata correspondiente podría nunca detenerse. Para autómatas finitos (NFA y PDA) ignoramos silenciosamente los cálculos que no se detienen. Nuestra razón para hacerlo es que los lenguajes resultantes siempre son computables, aunque el ingenuo algoritmo para simularlos de manera determinista (simulando todas las rutas de cálculo) no funciona del todo. Esto no es tan difícil para los NFA, que se pueden convertir a DFA. Sin embargo, los PDA deterministas son estrictamente más débiles que los PDA no deterministas. Sin embargo, puede demostrar que cada PDA es equivalente a uno sin ϵϵ ϵ transiciones (aunque la prueba podría pasar por gramáticas libres de contexto).
Puede simular movimientos en máquinas Turing, pero debe tener cuidado de que no haya bucles que causen cálculos que no se detengan. En algunos casos, sin embargo, podemos usar el mismo truco que el anterior. Por ejemplo, suponga que su máquina Turing tiene limitaciones de espacio: conocemos un límite superior en el espacio que usa (dependiendo de la longitud de entrada). En ese caso, cada cálculo que no se detiene necesariamente realiza un ciclo (ya que la máquina de Turing tiene muchos estados, incluido el contenido de la cinta) y, por lo tanto, si "ignoramos" los cálculos que no se detienen como se indicó anteriormente, el modelo de cálculo resultante sigue siendo computable. En términos más generales, esto funciona siempre y cuando tengamos la garantía de que cada ciclo de cálculo no se detiene. (Este es el caso de las NFA pero no de las PDA).ϵ
fuente