next up previous contents
Siguiente: Autómatas finitos no-deterministas (AFND) Subir: Autómatas finitos Anterior: Autómatas finitos   Índice General

Autómatas finitos deterministas (AFD)

Un autómata finito determinista (AFD) es una quíntupla

\begin{displaymath}M=(\Sigma,Q,\delta,q_0,F) \end{displaymath}

donde

Podemos pensar de un autómata como un dispositivo que lee desde una cinta con símbolos y que realiza cambios de estados internamente:

\fbox{auto}

Dibujamos los autómatas como grafos dirigidos (no introducimos el concepto matemático de grafos formalmente), los estados representan los nodos del grafo, y dibujamos una arista atribuida con un símbolo entre dos nodos si existe una transisión correspondiente:

\fbox{compauto}

es decir, el estado inicial está marcado por una flecha y los estados finales están marcados con doble círculo.

Ejemplo: Un AFD que `acepta' las cadena de $0$s y $1$s donde los números de ceros y unos es par:

\fbox{zeroonepar}

entonces

\begin{displaymath}M=(\{0,1\},\{q_0,q_1,q_2,q_3\},\delta,q_0,\{q_0\}) \end{displaymath}

¿Cómo describimos cómodamente $\delta$?

Observamos: $\vert Q\vert<\infty$ y $\vert\Sigma\vert<\infty$, entonces podemos hacer una tabla con los estados como filas y con los símbolos como columnas:

\begin{displaymath}\delta(q_0,0)=q_3,\delta(q_0,1)=q_1,\delta(q_1,0)=\dots\end{displaymath}

o más breve una tabla:
$\delta$ $0$ $1$
$\Longrightarrow \star q_0$ $q_3$ $q_1$
$q_1$ $q_2$ $q_0$
$q_2$ $q_1$ $q_3$
$q_3$ $q_0$ $q_2$

Para definir el lenguaje aceptado por un AFD ampliamos la función $\delta$ a una función $\delta^*$ para que trabaja sobre palabras:

\begin{eqnarray*}
\delta^*:Q\times\mbox{$\Sigma^*$}&\longrightarrow & Q\\
\delt...
...\delta(q,\sigma),w)\quad \sigma\in\Sigma,
w\in\mbox{$\Sigma^*$}
\end{eqnarray*}

es decir, $\delta^*$ refleja el movimiento de la cabeza de lectura del autómata.

Un autómata finito determinista $M=(\Sigma,Q,\delta,q_0,F)$ acepta una palabra $w\in\mbox{$\Sigma^*$}$ si $\delta^*(q_0,w)\in F$ donde $\delta^*$ es la ampliación de la funcion de transición $\delta$.

O en otras palabras, $M$ acepta $w$, si $\delta^*(q_0,w)$ es un estado final del autómata.

El lenguaje aceptado por un autómata finito determinista $M$ es el conjunto de palabras aceptadas por $M$:

\begin{displaymath}L(M)=\{w\;\vert\;w\in\mbox{$\Sigma^*$}, M \mbox{ acepta } w\} \end{displaymath}

En el grafo podemos observar: si $w\in L(M)$ entonces existe un camino en el grafo desde el estado inicial $q_0$ hasta algún estado final de tal manera que podemos `leer' la palabra $w$ a lo largo de las aristas visitadas.

Ejemplo: Un autómata que acepta números reales (en Pascal):

\fbox{afdreal}

Curiosidades de C/C++:

Vemos que estámos confrontados con diferentes problemas:

Observamos, cada AFD se puede completar:

Observamos:

Dos autómatas $M_1$ y $M_2$ son equivalentes si aceptan el mismo lenguaje, $M_1\equiv M_2$ si $L(M_1)=L(M_2)$.

Dos estados $q_1$ y $q_2$ de dos autómatas $M_1$ y $M_2$ son equivalentes, es decir, $q_1\equiv q_2$, si para $q_1\in Q_1$ y $q_2\in Q_2$ $\delta^*(q_1,w)\in F_1 \Leftrightarrow \delta^*(q_2,w)\in F_2$.

Entonces dos autómatas son equivalentes si sus estados iniciales son equivalentes.


next up previous contents
Siguiente: Autómatas finitos no-deterministas (AFND) Subir: Autómatas finitos Anterior: Autómatas finitos   Índice General
© 2006, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática