¿Por qué la NFA se llama no determinista?


14

Tengo esta pregunta [algo graciosa] en mente. ¿Por qué el autómata finito no determinista se llama no determinista mientras definimos las transiciones para las entradas? Bueno, aunque hay transiciones múltiples y épsilon , están definidas, lo que significa que la máquina es determinista para esas transiciones. Lo que significa que es determinista.


12
No determinista como se usa en informática teórica es diferente de aleatorio.
adrianN

10
Es la elección entre las transiciones que no es determinista.
reinierpost

¿Qué es un NFA? (Para los no iluminados entre nosotros)
DarcyThomas

@DarcyThomas, la primera introducción que tuve fue swtch.com/~rsc/regexp/regexp1.html . Es una buena lectura, no es el propósito del artículo presentar NFA, pero hace un buen trabajo al hablar de expresiones regulares.
Comodín el

Respuestas:


22

"Determinista" significa "si coloca el sistema en la misma situación dos veces, se garantiza que tomará la misma decisión en ambas ocasiones".

"No determinista" significa "no determinista", o en otras palabras, "si coloca el sistema en la misma situación dos veces, podría o no tomar la misma decisión en ambas ocasiones".

Un autómata finito no determinista (NFA) puede tener múltiples transiciones fuera de un estado. Esto significa que hay múltiples opciones para lo que podría hacer en esa situación. No está obligado a elegir siempre el mismo; en una entrada, podría elegir la primera transición, y en otra entrada podría elegir la misma transición.

Aquí puede pensar en "situación" como "en qué estado se encuentra la NFA, junto con qué símbolo se lee a continuación de la entrada". Incluso cuando ambos son iguales, un NFA aún puede tener múltiples transiciones coincidentes que se pueden sacar de ese estado, y puede elegir arbitrariamente cuál tomar. Por el contrario, un DFA solo tiene una transición coincidente que se puede tomar en esa situación, por lo que no tiene otra opción: siempre seguirá la misma transición siempre que esté en esa situación.


"Puede elegir arbitrariamente cuál tomar". Entonces, ¿tiene básicamente una naturaleza probabilística?
Trilarion

@Trilarion, no, depende de si lleva o no al estado de aceptación. De hecho, el FA probabilístico es una generalización para NFA.
rus9384

"No determinista" significa "no determinista", o en otras palabras, "si coloca el sistema en la misma situación dos veces, podría o no tomar la misma decisión en ambas ocasiones". con esto quiere decir que la máquina puede aceptar y rechazar la misma cadena en dos casos diferentes.
Madhusoodan P

3
@MadhusoodanP Su intuición es correcta de lo que se escribió aquí, y eso nos lleva a lo que falta en esta respuesta: Al analizar los NFA siempre consideramos todas las rutas de ejecución posibles . Mientras cualquier camino en esa máquina conduzca a un estado de aceptación, consideramos que la entrada es aceptada. Por lo tanto, no se trata de la probabilidad, se trata simplemente de si se puede alcanzar un estado de aceptación o no. Esta intuición se vuelve más clara al pensar en cómo los NFA se reducen a DFA: tenemos que simular todas las ejecuciones posibles del NFA, lo que conduce a la explosión exponencial en la construcción.
ComicSansMS

3
Una forma de visualizarlo es asumir que, donde se pueden elegir múltiples transiciones, la NFA toma todas las transiciones. Se crea una estructura en forma de árbol de todos los estados alcanzados por una cadena de entrada, y si alguna de las ramas termina en un estado de aceptación, se acepta la cadena. En otras palabras, con un DFA, usted pregunta "¿es el estado alcanzado por mi entrada un estado de aceptación?", Mientras que con un NFA, está preguntando "¿ algún estado al que pueda llegar mi entrada es un estado de aceptación?".
Harrison Paine

8

Tome este autómata por ejemplo, es un NFA y acepta la cadena . Para ser más pedante, acepta cadenas que terminan en 10 .011010

Ejemplo de autómata, fuente: /cs/61159/what-is-the-difference-between-following-two-finite-automata/61208

Para ver que solo necesitamos verificar si alcanza un estado de aceptación.

q01q00q11q20

Ahora en la línea roja había otra posibilidad, es decir, al leer el segundo , podría permanecer en q 0 y luego permanecer en q 0 al leer el último 0 . Los autómatas no tienen memoria, por lo que no hay forma de 'guardar' un estado y verificar más tarde si mi cadena termina con 101q0 0q0 00 010 , es como si este NFA adivinando si la cadena termina con antes de bifurcarse a un estado aceptable. El no determinismo aquí es tomar muchas decisiones y siempre tomar las correctas.10

Es más fácil construir un NFA que construir un DFA, lo bueno es que ambos son equivalentes .


Sí, conozco la parte teórica de la NFA. Pero lo que estaba preguntando era que a pesar de que hay múltiples transiciones para un solo carácter de entrada, la máquina es determinista sobre lo que todos los estados puede alcanzar (por ejemplo, creando hilos). Por lo tanto, es literalmente DFA. [¿O crees que estoy malinterpretando el significado del determinismo ]
Madhusoodan P

1
El ejemplo podría mejorarse con un NFA un poco más complicado, ya que un DFA para el mismo propósito usaría la misma cantidad de estados que su NFA y no sería particularmente complicado. Por el contrario, hacer coincidir una expresión regular más complicada puede requerir un DFA complicado y desordenado, pero ser trivial en un NFA.
supercat

@supercat, al menos sería bueno ver las transiciones . ε
rus9384

1
@Aristu Si está implementando un NFA en su lenguaje de programación favorito, los hilos son una elección terrible . Por el contrario, debe realizar un seguimiento del conjunto de estados en los que el autómata "podría estar" después de leer cada carácter de entrada. El código resultante será casi tan rápido como una implementación de DFA.
David Richerby

1
ϵ

5

La función de transición de un NFA especifica las transiciones permitidas en cualquier momento. Podría haber más de una opción, y la NFA elige una transición no determinista con el objetivo de llegar a un estado de aceptación.

Tal vez deberías esperar hasta que aprendas sobre las máquinas Turing no deterministas. El no determinismo significa lo mismo en ambos casos.


¿podría resaltar esa "transición no determinista"? Y también por favor revise mi respuesta
Madhusoodan P

Creo que nuestras dos respuestas no son súper buenas, aunque su intuición es sólida.
Yuval Filmus

3

Comience con un autómata finito. Tiene estados y estados de aceptación y transiciones.

Ahora, dele más de una regla de transición de cada estado y diga que acepta si existe un conjunto de reglas de transición seleccionadas después del hecho que conducen al estado de aceptación dada una cadena de entrada.

Una vez que tenga su cadena de entrada, hay un conjunto fijo de transiciones concretas y afirma que pasa (una a la vez) para aceptar esa cadena. Pero las transiciones que elige solo se eligen al final de la cadena . Mientras se lee la cadena, no se determina qué ruta tomar.

No es determinista. Puede elegir su camino a través del gráfico después de darle todo el problema, no mientras lee la entrada.


Ahora, formalizamos esto de manera diferente a este experimento mental, pero esto te motiva por qué obtuvo ese nombre.

Esto explica cómo obtuvo el nombre en primer lugar. Sí, puede modelar NDFA de una manera completamente determinista, pero los nombres son adhesivos . Una vez que haya llamado a algo Bob, hay un costo de comunicación para cambiarle el nombre a algo más, ya que nadie sabe de qué está hablando cuando lo llama Alice.


¡si! Estoy de acuerdo con tu explicación sobre la NFA. Pero mi pregunta es por qué no es determinista a pesar de que el conjunto de estados se define para una sola entrada
Madhusoodan P

@MadhusoodanP Se llama no determinista debido a cómo se inventó / imaginó. Y los nombres son fijos, incluso después de que definamos formas totalmente deterministas de múltiples etapas para modelarlo.
Yakk

1

Desde wikipedia , la mejor manera de pensar en esto es comenzar con máquinas deterministas de estados finitos (DFA). Para un DFA, cada transición está determinada únicamente por el estado actual y el símbolo de entrada que se procesará. Las máquinas de estados finitos no deterministas (NFA) son simplemente lo que obtienes cuando relajas esta regla de determinismo para permitir que las transiciones no se definan de manera única. Es lo que obtienes cuando eliminas la regla de determinismo de los DFA.


Es un poco más complicado, ya que el no determinismo también es una condición de aceptación específica.
Yuval Filmus

1

NFA y DFA se utilizan para (entre otras cosas) reconocer ciertas cadenas.

El autómata finito no determinista funciona como si tuviera influencia en sus decisiones: puede "elegir" seguir un camino o no.

Ejemplo de NFA

En la imagen de arriba, cuando se trata de la cadena "00111", observe que al encontrar el primer "1", hay dos formas posibles de seguir. Uno puede permanecer en "p" o ir a "q". Si el autómata se moviera a la "q", no aceptaría la cadena (ya que no hay bordes saliendo de la "q"). Pero la cadena puede ser aceptada por este autómata yendo a la "q" con solo el último 1, mientras permanece en "p" para todo lo demás (y eso es lo que está sucediendo).

NFA hace que parezca que los autómatas "sabían" lo que está por venir, y elige en consecuencia.

Por supuesto que no. DFA y NFA son equivalentes en términos de potencia (puede reducir NFA a DFA y hacer que DFA (probablemente) sea más simple con el uso de NFA), pero NFA es útil, ya que permite definir los mismos idiomas que DFA manteniendo los gráficos mucho más corto y más legible.

No hay nada al azar allí. La parte no determinista pone énfasis en el hecho de que hay alguna "elección" que tomar, pero la verdad es que el autómata no toma ninguna decisión.


0

Bueno, aquí está la mezcla de algunos contenidos del libro [Introducción a los idiomas y autómatas formales de Peter Linz 4E] y mi comprensión.

Considere un programa de juego donde la máquina necesita tomar la decisión para el próximo movimiento [digamos de tres en raya]. Como hay varios movimientos posibles, elegimos de manera determinista cada movimiento y evaluamos el movimiento y optamos por el mejor. Aunque el proceso de selección fue determinista y hubo muchos movimientos posibles, el movimiento final realizado fue uno único y se eligió como el mejor movimiento mientras se ocultaban todos los cálculos de movimientos probados del oponente. [Aquí asumimos que el proceso de evaluación de cada posible movimiento estaba oculto para el oponente].

Por lo tanto, solo se hizo una elección y se le da al oponente una ilusión tal que el movimiento no fue determinista.

Bueno, si aún no está convencido al preguntar que el mejor movimiento fue el producto de algunos cálculos deterministas, entonces debe considerar la máquina que realiza movimientos perfectamente aleatorios (puede ser pérdida de máquina pero es un NFA).


1
Otra forma de decir esto: para el oponente , su elección no fue determinista. Al modelar el sistema desde la vista del oponente, tu movimiento es una elección no determinista, a menos que el oponente haya descubierto el proceso determinista detrás de él.
reinierpost

@reinierpost exactamente lo que quería decir
Madhusoodan P

Un ejemplo más interesante podría ser un juego de piezas móviles de información limitada (por ejemplo, estilo "policías y ladrones"). Un jugador mueve a un ladrón alrededor de un laberinto mientras que el otro jugador mueve policías. En cualquier momento cuando un policía puede ver a un ladrón, el estado del ladrón será su ubicación, pero en cualquier turno cuando ninguno de los policías vea al ladrón, el ladrón puede hacer la transición a cualquier casilla adyacente a su posición y que los policías puedan No veo en ese momento.
supercat

@supercat Bonito, pero la transición realizada siempre es un estado único, y si ocultas el cálculo del mejor movimiento parece no determinista
Madhusoodan P
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.