x
1

Autómata finito no determinista



Un autómata finito no determinista (abreviado AFND) es un autómata finito que, a diferencia de los autómatas finitos deterministas (AFD), posee al menos un estado qQ, tal que para un símbolo a ∈ Σ del alfabeto, existe más de una transición δ(q,a) posible. Lo que se descubre tras que alguien haga mal muchos autómatas finitos y lo arreglan con un nombre bonito. Todo autómata finito no determinista puede ser convertido a autómata finito determinista. Pero no al contrario.

En un AFND puede darse cualquiera de estos dos casos:

Cuando se cumple el segundo caso, se dice que el autómata es un autómata finito no determinista con transiciones vacías o transiciones ε (abreviado AFND-ε). Estas transiciones permiten al autómata cambiar de estado sin procesar ningún símbolo de entrada. Considérese una modificación al modelo del autómata finito para permitirle ninguna, una o más transiciones de un estado sobre el mismo símbolo de entrada.

Formalmente, si bien un autómata finito determinista se define como una 5-tupla (Q, Σ, q0, δ, F) donde:[1]

en un AFND la función de transición se define como:

Para el caso de los AFND-ε, se suele expresar la función de transición de la forma:

donde P(Q) es el conjunto potencia de Q. Esto significa que los autómatas finitos deterministas son un caso particular de los no deterministas, puesto que Q pertenece al conjunto P(Q).

La interpretación que se suele hacer en el cómputo de un AFND es que el automáta puede pasar por varios estados a la vez, generándose una ramificación de las configuraciones existentes en un momento dado. Asimismo, en un autómata finito no determinista podemos aceptar la existencia de más de un nodo inicial.

La máquina comienza en el estado inicial especificado y lee una cadena de caracteres pertenecientes al alfabeto. El autómata utiliza la función de transición de estados T para determinar el siguiente estado, usando el estado actual y el símbolo que acaba de leer o la cadena vacía. Sin embargo, "el estado siguiente de un AFND no solo depende de el evento de entrada actual, sino que también en un número arbitrario de los eventos de entrada posterior. Hasta que se producen estos acontecimientos posteriores no es posible determinar en qué estado se encuentra la máquina" . Cuando el autómata ha terminado de leer, y se encuentra en un estado de aceptación, se dice que el AFND acepta la cadena, de lo contrario se dice que la cadena de caracteres es rechazada. Tanto para un AFND como para un autómata finito determinista (AFD) se puede aceptar el mismo lenguaje. Por lo tanto, es posible convertir un AFND existente en un AFD para el desarrollo de una máquina tal vez más simple. Esto puede llevarse a cabo utilizando la construcción del conjunto potencia, que puede conducir a un aumento exponencial en el número de estados necesarios.

Hay muchas formas de implementar una AFND:

Para todo , se escribe si y solo si a se puede llegar desde , yendo a lo largo de cero o más flechas . En otras palabras, si y solo si existe donde tal que

Para cualquier , el conjunto de estados a los que se puede llegar a partir de p se le llama epsilon-closure o ε-closure de p y se escribe como

Para cualquier subconjunto , definir el ε-closure de P como

Para el conjunto vacío

Para cualquier subconjunto y se cumplen las propiedades:

Las transiciones epsilon son transitivas, ya que puede demostrarse que para todo y , si y , entonces .

Del mismo modo, si y entonces Sea x una cadena del alfabeto Σ∪{ε}. Un AFND-ε M acepta la cadena x si existe tanto una representación de x de la forma x1x2 ... xn, donde xi ∈ (Σ ∪{ε}), y una secuencia de estados

p0,p1, ..., pn, donde piQ, Cumpliéndose las siguientes condiciones:

Sea , la definición recursiva de es:

Para calcular  :

definiremos donde

Si

El AFND y el AFD son equivalentes en esto, ya que si un lenguaje es reconocido por el AFND, también será reconocido por un AFD, y viceversa. El establecimiento de esta equivalencia es útil porque a veces la construcción de un AFND para reconocer un lenguaje determinado es más fácil que construir un AFD para dicho lenguaje. También es importante porque el AFND se puede utilizar para reducir la complejidad del trabajo matemático necesario para establecer muchas propiedades importantes en la teoría de la computación. Por ejemplo, es mucho más fácil demostrar las siguientes propiedades utilizando un AFND que un AFD:

El ejemplo siguiente muestra un AFND M, con un alfabeto binario que determina si la entrada contiene un número par de ceros (0) o un número par de unos (1). Entonces M = (Q, Σ, T, s0, F) donde:

El diagrama de estados para M es:

M puede ser visto como la unión de dos AFDs: uno con los estados {S1, S2} y el otro con los estados {S3, S4}.

El lenguaje de M puede ser descrito por el lenguaje regular dado por la expresión regular:



Escribe un comentario o lo que quieras sobre Autómata finito no determinista (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!