Autómatas
Autómatas
Autómatas
¿Qué es un autómata?
Un autómata es un modelo matemático para una máquina de estado finito, en el que
dada una entrada de símbolos, “salta” mediante una serie de estados de acuerdo a una
función de transición (que puede ser expresada como una tabla). Esta función de
transición indica a qué estado cambiar dados el estado actual y el símbolo leído.
Ejemplo
Autómata finito que podría formar parte de un analizador léxico. El trabajo de este autómata
consiste en reconocer la palabra coding, por lo que necesita siete estados, representando
cada uno de ellos la posición que dentro de dicha palabra se haya leído hasta el momento.
Haciendo la analogía con los AFDs, en un AFND puede darse cualquiera de estos
dos casos:
Toda expresión regular (que define a su vez un lenguaje regular) puede ser
expresada como un autómata finito determinista, y viceversa. Dada una expresión
regular, es posible construir un AFND-ε que reconozca dicho lenguaje, por
ejemplo mediante el algoritmo de Thompson. Luego, todo AFND-ε puede
transformarse en un AFND equivalente, así como todo AFND puede transformarse
en un AFD equivalente, mediante el método llamado construcción de conjunto
potencia. Así, por transitividad, para cualquier autómata finito no determinista
siempre existe un autómata finito determinista equivalente, y viceversa.
Normalmente en el diseño de autómatas finitos, lo primero que se hace es
construir un AFND-ε, que es el más sencillo de construir, por poseer menos
restricciones en su función de transiciones. Luego dicho autómata se reduce a un
AFND, y finalmente a un AFD, el cual por sus características deterministas ya
puede ser implementado sin problemas utilizando un lenguaje de programación.
Representación o diagrama de un AFD
Representaremos los estados del AFD mediante círculos que encierran el nombre del
estado (q0 , q1 ,...) .
La posible transición δ(qi,x)=qj
δ(qi,x)=qj
se representa mediante una flecha que empieza en qi y termina en qj con la etiqueta "x".
Los circulos de los estados de aceptación tienen el borde doble.
El estado inicial, q0, se representa con una flecha que termina en dicho estado (pero no
empieza en ningún estado).
EJEMPLO 1
Aplicaciones
1. Software para diseñar y probar el comportamiento de circuitos digitales.
2. El “analizador léxico” de un compilador típico, es decir, el componente del compilador
que separa el texto de entrada en unidades lógicas, tal como identificadores, palabras
clave y signos de puntuación.
3. Software para explorar cuerpos de texto largos, como colecciones de páginas web, o
para determinar el número de apariciones de palabras, frases u otros patrones
comúnmente conocidos como expresiones regulares.
4. Software para verificar sistemas de todo tipo que tengan un número finito de estados
diferentes, tales como protocolos de comunicaciones o protocolos para el intercambio
seguro de información.