Académique Documents
Professionnel Documents
Culture Documents
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:
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:
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 = (Q, Σ, δ, q0, F)
donde:
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:
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.
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
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)
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:
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.