Autómata finito no determinista

En este ejemplo, δ(q0,b)=q0 y δ(q0,b)=q1. Por lo tanto, se trata de un autómata finito no determinista, que reconoce la expresión regular (a|b)*b+.

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.

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.

Definición formal

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:

\delta:Q\times\Sigma\to\mathcal{P}(Q)

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

\delta:Q\times\{\Sigma\cup\epsilon\}\to\mathcal{P}(Q)

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.

Funcionamiento

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 sólo 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.

Implementación

Hay muchas formas de implementar una AFND:

AFND-ε

Propiedades

Para todo p,q\in Q,, se escribe p\stackrel{\epsilon}{\rightarrow}q si y solo si a q se pude llegar desde p, yendo a lo largo de cero o más flechas \epsilon. En otras palabras, p\stackrel{\epsilon}{\rightarrow}q si y sólo si existe q_{1}, q_{2},\cdots q_{k}\in Q donde k\geq 0 tal que

q_{1}\in T(p,\epsilon), q_{2}\in T(q_{1},\epsilon),\cdots q_{k}\in T(q_{k-1},\epsilon), q\in T(q_{k},\epsilon).

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

\,E(\{p\}) = \{ q\in Q : p\stackrel{\epsilon}{\rightarrow}q\}.

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

E(P) = \bigcup\limits_{p\in P}E(\{p\}).

Las transiciones epsilon son transitive, ya que puede demostrarse que para todo q_{0}, q_{1}, q_{2}\in Q y P\subset Q, si q_{1}\in E(\{q_{0}\}) y q_{2}\in E(\{q_{1}\}), entonces q_{2}\in E(\{q_{0}\}).

Del mismo modo, si q_{1}\in E(P) y q_{2}\in E(\{q_{1}\}) entonces q_{2}\in E(P) 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:

  1. p0 \in E({q0})
  2. pi \in E(T(pi-1, xi )) para i = 1, ..., n
  3. pn \in F.

Aplicación

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:

Ejemplo

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

0
1
ε
S0
{}
{}
{S1, S3}
S1
{S2}
{S1}
{}
S2
{S1}
{S2}
{}
S3
{S3}
{S4}
{}
S4
{S4}
{S3}
{}

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:

(1^*(01^*01^*)^*) \cup  (0^*(10^*10^*)^*)

Véase también

Referencias

  1. Chakraborty, Samarjit (17 de marzo de 2003). «Formal Languages and Automata Theory. Regular Expressions and Finite Automata». Computer Engineering and Networks Laboratory. Swiss Federal Institute of Technology (ETH) Zürich (en inglés): 17. Consultado el 30 de marzo de 2010.

Bibliografía

This article is issued from Wikipedia - version of the Friday, May 08, 2015. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.