Vous êtes sur la page 1sur 8

Autómatas finitos [1]

Los autómatas finitos utilizan estados y transacciones o cambios entre estados en respuesta
a entradas al sistema. Resultan útiles para construir diversos tipos de software, incluyendo
el componente de análisis léxico de un compilador y sistemas para la corrección de, por
ejemplo, circuitos o protocolos.
Los autómatas finitos son de suma utilidad para muchos sistemas de software y hardware.
A continuación, enumeraremos algunos de los tipos más importantes:

 Software para diseñar y probar el comportamiento de circuitos digitales.


 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.
 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.
 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.
Ejemplos:
Para iniciar con un autómata finito no trivial más simple es un interruptor de
apagado/encendido (on/off). El dispositivo recuerda en qué estado se encuentra,
permitiendo al usuario pasar al estado contrario.

Ilustración 1 Modelo de un autómata finito de un interruptor de apagado/encendido

Esta ilustración es la representación del modelo de un autómata finito para el interruptor


(on/off). Al igual que en todos los autómatas, los estados son representados por círculos;
en el ejemplo los estados están etiquetados por “entradas”, las cuales reprendan las
influencias externas sobre el sistema. En el ejemplo son etiquetados con Pulsar, que
representa al usuario al pulsar el botón. Ambos estados representan que no importa el
estado en el que este, al pulsar el botón cambiara al otro estado.
Cada autómata se le designa como “estado inicial”, el estado en que el sistema se encuentra
inicialmente. En el ejemplo, el estado inicial es apagado (off) y, se ha marcado el estado
inicial con la palabra Inicio y una flecha a este estado.

Autómata finito determinista [1]


El autómata finito determinista consta de:

1. Un conjunto finito de estados, a menudo designado como Q.


2. Un conjunto finito de símbolos de entrada, a menudo designado como Σ.
3. Una función de transición que toma como argumentos un estado y un símbolo de entrada
y devuelve un estado. La función de transición se designa habitualmente como δ. En nuestra
representación gráfica informal del autómata, δ se ha representa mediante arcos entre los
estados y las etiquetas sobre los arcos. Si q es un estado y a es un símbolo de entrada,
entonces δ (q,a) es el estado p tal que existe un arco etiquetado a que va desde q hasta p.
4. Un estado inicial, uno de los estados de Q.
5. Un conjunto de estados finales o de aceptación F. El conjunto F es un subconjunto de Q.

Con frecuencia encontraremos referencias de un autómata finito determinista con el siguiente


acrónimo: AFD. La representación más breve de un AFD consiste en un listado de cinco
componentes anteriores. Normalmente, en las demostraciones, se definirá un AFD utilizando la
notación “quíntupla” siguiente:

A = (Q, Σ, δ, q0, F)

Donde A es el nombre del AFD, Q es su conjunto de estados, Σ son los símbolos de entrada, δ es
la función de transición, q0 es el estado inicial y F es el conjunto de estados finales.

Ejemplo:

Deseamos diseñar un AFD que acepte el lenguaje

L= {w|w tiene un número par de ceros y un número par de unos}

La tarea de los estados de este AFD es la de contar el número de ceros y el número de unos
contando en módulo 2. Es decir, el estado se emplea para recordar si el número de ceros es par
o impar hasta el momento y también para recordar si el número de unos leídos hasta el
momento es par o impar. Existen por tanto cuatro estados que pueden interpretarse de la
manera siguiente:

q0: tanto el número de ceros como el de unos leídos hasta el momento es par.

q1: el número de ceros leídos hasta el momento es par, pero el de unos es impar.

q2: el número de unos leídos hasta el momento es par, pero el de ceros es impar.

q3: tanto el número de ceros como el de unos leídos hasta el momento es impar.

El estado q0 es tanto el estado inicial como el único estado de aceptación. Es el estado inicial
porque antes de leer ninguna entrada, la cantidad de ceros y unos leídos hasta el momento es
igual a cero y cero es par. Es el único estado de aceptación porque describe de forma exacta la
condición para que una secuencia de ceros y unos pertenezca al lenguaje L. Ahora ya sabemos
cómo especificar el AFD para el lenguaje L. Así

A= ({q0, q1, q2, q3}, {0, 1}, δ, q0, {q0})

donde la función de transición δ se describe mediante el diagrama de transiciones de la Figura


2.6. Observe cómo cada entrada 0 hace que el estado cruce la línea de puntos horizontal. Así,
después de leer un número par de ceros siempre estaremos por encima de la línea en el
estadoq0 o q1, mientras que después de leer un número impar de ceros siempre estaremos por
debajo de la línea, en los estados q2 o q3. Por el contrario, cualquier entrada 1 hace que el
estado cruce la línea de puntos vertical. Así, después de leer un número par de unos, siempre
estaremos en la parte izquierda, en el estado q0 o el estadoq2, mientras que después de leer
un número impar de unos estaremos en la parte de la derecha, en los estados q1 o q3. Estas
observaciones constituyen una demostración informal de que los cuatro estados tienen las
interpretaciones que les hemos atribuido. Sin embargo, debemos demostrar formalmente la
corrección de las afirmaciones acerca de los estados aplicando la inducción mutua.

Ilustración 2 Diagrama de transacciones del AFD.

Ilustración 3 Tabla de transacciones para el AFD.


Autómata finito no determinista [1]
A continuación, se presentan las nociones formales asociadas con los autómatas finitos no
deterministas y la diferencia entre los AFD y los AFN. Un AFN se representa esencialmente como un
AFD:

A = (Q, Σ, δ, q0, F)

donde:

1. Q es un conjunto finito de estados.


2. Σ es un conjunto finito de símbolos de entrada.
3. q0, un elemento de Q, es el estado inicial.
4. F, un subconjunto de Q, es el conjunto de estados finales (o de aceptación).
5. δ, la función de transición es una función que toma como argumentos un estado de Q y un
símbolo de entrada de Σ y devuelve un subconjunto de Q.

Observe que la única diferencia entre un AFN y un AFD se encuentra en el tipo de valor que
devuelve δ: un conjunto de estados en el caso de un AFN y un único estado en el caso de un
AFD.

Ejemplo:

Autómatas finitos no deterministas para búsqueda de texto.

Supongamos que tenemos un conjunto de palabras, que denominaremos palabras clave, y


deseamos hallar las apariciones de cualquiera de estas palabras. En aplicaciones de este tipo, una
forma útil de proceder consiste en diseñar un autómata finito no determinista que indique,
mediante un estado de aceptación, que ha encontrado una de las palabras clave. El texto de un
documento se introduce carácter a carácter en este AFN, el cual reconoce a continuación las
apariciones de las palabras clave en dicho texto. Existe una forma simple para que un AFN reconozca
un conjunto de palabras clave.

1. Hay un estado inicial con una transición a sí mismo para cada uno de los símbolos de
entrada, por ejemplo, todos los caracteres ASCII imprimibles si estamos examinando texto.
Intuitivamente, el estado inicial representa una “conjetura” de que todavía no hemos
detectado una de las palabras clave, incluso aunque hayamos encontrado algunas de las
letras de una de esas palabras.
2. Para cada palabra clave a1a2···ak, existenk estados, por ejemplo, q1,q2,...,qk. Existe una
transición desde el estado inicial a q1 para el símbolo a1, una transición desde q1 a q2 para
el símbolo a2, etc. El estado qk es un estado de aceptación e indica que se ha encontrado la
palabra clave a1a2···ak.

Suponga que deseamos diseñar un AFN para reconocer las apariciones de las palabras web y ebay.
El diagrama de transiciones para el AFN diseñado utilizando las reglas anteriores se muestra en la
Figura 2.16. El estado 1 es el estado inicial y utilizamos Σ para definir el conjunto de todos los
caracteres ASCII imprimibles. Los estados 2 hasta 4 tienen que reconocer la palabra web, mientras
que los estados 5 hasta 8 tienen el trabajo de reconocer la palabra ebay.
Ilustración 4 AFN para buscar la palabra web y ebay

Está claro que el AFN no es un programa. Disponemos principalmente de dos posibilidades para
llevar a cabo una implementación de este AFN.

1. Escribir un programa que simule este AFN calculando el conjunto de estados en el que se
encontrará después de leer cada uno de los símbolos de entrada.
2. Convertir el AFN en un AFD equivalente utilizando la construcción de subconjuntos y a
continuación simular directamente el AFD.

Algunos de los programas de procesamiento de textos, como las formas avanzadas del comando
UNIX grep, (egrep y fgrep), realmente emplean una mezcla de estos dos métodos. Sin embargo, para
nuestros propósitos, la conversión a un AFD es fácil y está garantizado que no incrementa el número
de estados.

Ilustración 5 Tabla de transacciones para el AFN

Ventajas / Desventajas
Las ventajas y desventajas marcadas en ambos tipos de autómata estudiado, pueden ser su principal
diferencia, en uno de ellos encontramos que nos regresará a un solo tipo de estado para el tipo de
AFD y un grupo de estados en un AFN, esto se traduce a que deberemos decidir qué tipo de estos
dos usar o de que tipo será los que veremos con nuestra necesidad de utilizar un AF que requiera el
regreso de una posible solución (estado) o más posibles soluciones (estados).

Aplicaciones a la ingeniería
Máquina de Turing [2]
Su nombre se debe a Alan Mathison Turing, que fue quien introdujo el concepto en 1936 (A. M.
Turing, 1936; C. Conde, 1969; J.E. Hopcroft, 1984). Una máquina de Turing o autómata de tipo 0 es
una construcción lógica, que se puede representar intuitivamente como un dispositivo mecánico,
formado por una cinta infinita, dividida en celdas, y un cabezal de lectura/escritura que se mueve
sobre dicha cinta, avanzando una celda de cada vez. En la figura 7 se representa el caso particular
de un conjunto de símbolos en la cinta formados por 0 y 1.

Un movimiento de la máquina de Turing, depende del símbolo explorado con la cabeza, y del estado
actual en el que se encuentra la máquina, el resultado puede ser:

a) Cambio de estado

b) Imprime un símbolo en la cinta reemplazando el símbolo leído.

c) Se mueve la cabeza de la cinta a la izda, a la derecha o se para.

Pueden darse los tres fenómenos anteriores, juntos o separados.

Formalmente una máquina de Turing es un autómata, y como todo autómata está formado por una
quíntupla MT = (E, S, Q, f, g) sin embargo suele usarse la notación equivalente:

MT = (Q, Σ, Γ, δ, q0, B, F)

Ilustración 6 Esquema de máquina de Turing

donde:

 Q = {conjunto de estados}
 Γ= {conjunto de símbolos permitidos en la cinta}
 B es el símbolo blanco.
 Σ∈Γ es el subconjunto de símbolos de entrada no incluyendo el blanco.
 δ: Q ×Γ→ Q ×Γ× {I, D, S} donde es la función del siguiente movimiento, I significa movimiento
a izquierda, D significa movimiento a derecha, y S parada (stop).
 q0 ∈ Q es el estado inicial.
 F ⊂ Q es el subconjunto de estados finales

El lenguaje aceptado o reconocido por una máquina de Turing, que denotaremos por L(MT), es
el conjunto de palabras formadas con el alfabeto, que hace que la máquina de Turing se pare al
alcanzar un estado final.
En un principio la cabeza de la máquina de Turing está situada a la izquierda de la cadena a
reconocer, y su estado es el estado inicial q0.

Formalmente, el lenguaje aceptado por una máquina de Turing MT = (Q, Σ, Γ, δ, q0, B, F) es:

L(MT) = {W/W ∈ Σ* y q0W → α1pα2 p ∈ F, α1, α2 ∈ Γ*}

Una máquina de Turing reconoce un lenguaje L si es capaz de reconocer todas las sentencias de
dicho lenguaje. Si una sentencia de L es aceptada, la maquina se para, es decir alcanza un estado
final. Pero si no se acepta la sentencia, la máquina de Turing no se parará nunca.

Aplicaciones varias [2]


La teoría de autómatas proviene principalmente del campo de ingeniería Eléctrica. Claude
Elwood Shannon (1916 - 2001) un científico estadounidense, publicó varios trabajos, donde se
muestra la base de aplicación lógica matemática de circuitos combinatorios y secuenciales.
Estas fueron las bases para dar lugar a la teoría de autómatas.

Un autómata es definido como un sistema que recibe información, la transforman y produce


otra información que es transmitida al entorno.

La teoría de autómatas tiene aplicación en campos muy diversos, como:

 Lógica de circuitos secuenciales.


 Teoría de control de sistemas.
 Teoría de comunicación.
 Arquitectura de ordenadores.
 Redes conmutadoras y codificadoras.
 Teoría de los sistemas evolutivos y auto-reproductivos.
 Reconocimiento de patrones.
 Redes neuronales.
 Reconocimiento y procesado de lenguajes de programación.
 Traducción de lenguajes.
 Teoría de lenguajes formales.

Aspectos relevantes de autómatas


Bibliografía

[1] J. E. Hopcroft, R. Motwani y J. D. Ullman, Teoría de autómatas, lenguajes y computación,


Madrid: PEARSON EDUCACIÓN S.A, 2007.

[2] J. M. C. Lovelle, Lenguajes Gramaticas y Automatas, España: Universidad de Oviedo, 2001.

Vous aimerez peut-être aussi