Está en la página 1de 5

Asignatura: Teoría de la Computación

Unidad 1: Lenguajes Regulares


Tema 2: Autómatas con salidas

Autómatas finitos con salidas

Importancia y aplicación de los autómatas finitos


Los Autómatas finitos constituyen un modelo útil para muchos tipos importantes de
hardware y software. Por ejemplo:

1. Software para el diseño y la verificación del comportamiento de circuitos digitales.

2. El analizador léxico de un compilador típico, es decir es el componente del compilador


que descompone el texto inicial en unidades lógicas tales como identificadores,
palabras reservadas y signos de puntuación.

3. Software para explorar grandes corpus de texto, como conjuntos de páginas Web, o
para descubrir las apariciones de ciertas palabras, frases u otros patrones.

4. Software para comprobar la corrección de cualquier tipo de sistemas que tengan un


número finito de estados diferentes (Por ejemplo: protocolos de comunicación,
protocolos de procesamiento de información).

La ventaja de tener solo un número finito de estados es que el sistema se puede


implementar con un número fijo de recursos. Por ejemplo podría hacerse una implementación
de hardware con un circuito, o mediante un programa sencillo a partir de un conjunto
limitados de datos.

Los siguientes son ejemplos de subproblemas aplicados al problema de la compilación de


un lenguaje de compilación o cualquier lenguaje formal que pueden ser reconocidos por AF:

1. Se quiere reconocer las palabras reservadas del lenguaje de programación C. Por


ejemplo: main, for, while, if, else, etc.

2. Se quiere reconocer los nombres de variables válidos en el lenguaje de programación C

3. Se quiere reconocer las expresiones numéricas llamadas “literales numéricas” con la


separación de la parte entera y la parte decimal separada por coma “,”. Por ejemplo,
son válidos los siguientes literales: 57, +0, -2665e+7, 13,41, -,4E-7, 0,2E-2, 00e0, 10E-6, -
34002205,33 . La letra e y E se refiere a un exponente y va seguido de un número entero.
Con base a estos ejemplos, elabore un AF para reconocer el lenguaje de estas literales
numéricas. Además, suponga que no existe límite en el número de dígitos consecutivos
en ninguna parte de la expresión (límite de precisión).

4. Se quiere reconocer cadenas alfanuméricas de fechas en formato dd-mm-aaaa

En las sesiones anteriores se hizo una revisión teórica de los autómatas finitos. Se
presentaron los diferentes tipos de autómatas: determinista, no determinista y con transiciones
nula. En este tema se presentan los autómatas finitos con salida, los cuales son autómatas
finitos que son capaz de generar una salida adicional, en lugar de tener la salida binaria “si

Prof. Hilda Contreras Teoría de la Computación - Pregrado 1


acepto” o “no acepto” al problema de decisión sobre una cadena w en Σ* que está en el
lenguaje L.

Estos tipos de autómatas son muy utilizados en la vida real en problemas de cálculo
matemático, transformación, traducción, contador, definición de protocolos, etc. Ellos
proveen un valor agregado de mayor utilidad práctica que los autómatas finitos. Sin embargo,
todas estas máquinas (AFD, AFND, AFND-ε, y AF con salida) son equivalentes, en el sentido de
que reconocen el mismo tipo de lenguajes, pues poseer este valor agregado no los hace más
o menos poderosa que los AF (todos reconocen el tipo de lenguajes regulares según la
jerarquía de Chomsky).

Definición de un Autómata con Salida:

Un AF con salida esta definido como:

AFS = (Q, Σ, ∆, q0, δ, λ)


• Q es el conjunto finito de estados
• Σ es el alfabeto del lenguaje
• ∆ es el alfabeto de salida
• q0 es el estado inicial
• δ es la función de transición
• λ es la función de salida (estado o transición)

No existe el conjunto de estados finales F, porque ahora la respuesta no es 'acepta' o 'no


acepta' sino que es una cadena formada por los símbolos del alfabeto de salida ∆ a través de
una función de transformación de salida λ.

Existen 2 tipos de autómatas finitos con salida, según la función de transición de salida que
se aplique:
A) La Máquina de Moore: una salida asociada a cada estado
B) La Máquina de Mealy: una salida asociada a cada transición

Autómata con salida de Moore1:

La función de transición de salida esta asociada al estado actual, es decir λ: Q Æ ∆

En la Máquina de Moore una entrada de longitud n≥0 a1a2…an, la salida de M es de longitud


n+1, tal que λ(q0)λ(q1)…λ(qn) es la secuencia de estados de q0,q1,… qn tal que δ(qi-1,ai) = qi
para 1≤i≤n.
Nota: Para es estado inicial se defina que la λ(q0) = ε

Entonces, un AFD puede ser visto como un caso particular de la Máquina de Moore donde el
alfabeto de salida es {0,1} y el estado q es de aceptación si y solo si λ(q) = 1.

Ejemplo: Realizar un autómata para determinar o calcular el residuo de la división entera de 3


(modulo 3) de un número decimal expresado en binario.

Si m se divide entre 3 y su resultado es x y su residuo es p, entonces es claro que x * 3 + p = m


X * 3 es múltiplo de 3, y p llamado el módulo de 3 y es un valor entero, tal que p pertenece a
los posible valores { 0, 1, 2 }.

1
El nombre “Máquina de Moore” viene de su promotor: Edward F. Moore, pionero en el estudio de Autómatas, 1956.

Prof. Hilda Contreras Teoría de la Computación - Pregrado 2


Moore resolvió este problema en los años 50 y determinó que para tres residuos posibles
necesitaba 3 estados.

1
Decimal Binario Decimal 0
de m de m de p 0 1 2
0 0 0 inicio
q0 q1 q2
1 1 1
2 10 2 1 0
3 11 0
0 1
4 100 1
5 101 2
6 110 0
7 111 1

El autómata con salida definido por AFS = (Q, Σ, ∆, q0, δ, λ), donde los conjuntos Q = {q0,q1,q2},
Σ = {0,1} y ∆ = {0,1,2}. La función de transición de salida esta definida por la formula λ(qi) = i, es
decir:
λ
q0 0
q1 1
q2 2

Para el número decimal 11, expresado en binario como 1011 el autómata con salida de Moore
anterior se ejecuta como un AFD salvo que en cada paso de transición se ejecuta la función
de salida también, comportándose de la siguiente forma:

δˆ(q0,1011) = δ(δˆ(q0,101),1) =… = δ(δ(δ(δ(δˆ(q0,ε),1),0),1),1) Æ δˆ(q0,ε) = q0


= δ(δ(δ(δ(q0,1),0),1),1) λ(q0) = 0
= δ(δ(δ(q1,0),1),1) λ(q1) = 1
= δ(δ(q2,1),1) λ(q2) = 2
= δ(q2,1) λ(q2) = 2
= q2 λ(q2) = 2

La salida que es el resultado del autómata anterior corresponde a λ(q2) = 2 (q2 es el estado
que alcanza el autómata al terminar de procesar la cadena de entrada), es decir 2 es el
residuo de la división entera de 11 entre 3. Sin embargo, el autómata muestra toda la
secuencia de salida: 01222, el último símbolo del alfabeto de salida es el que soluciona el
problema.

Autómata con salida de Mealy2:

La función de transición de salida esta asociada con la transición, es decir λ: Q x Σ Æ ∆

En la Máquina de Mealy para una entrada de longitud n≥0 a1a2…an, la salida de M es de


longitud n, tal que λ(q0,a1), λ(q1,a2) …λ(qn-1,an) donde q0,q1,… qn es la secuencia de estados de
tal que δ(qi-1,ai) = qi para 1≤i≤n.
Nota: la entrada de la cadena vacía en cualquier estado λ(q, ε) = ε

2
El nombre "Máquina de Mealy" viene dado por G. H. Mealy, un pionero de las máquinas de estados, quien escribió Un
Método para sintetizar Circuitos Secuenciales, 1955

Prof. Hilda Contreras Teoría de la Computación - Pregrado 3


Ejemplo: Realizar un autómata para reconocer las cadenas binarias que terminan en 00 o en
11, y que de cómo salida las palabras “si” o “no” cuando respectiva la cadena sea aceptada
o no.

0/no AFS = (Q, Σ, ∆, q0, δ, λ), donde los conjuntos


0/si
Q = {q0,q1,q2}, Σ = {0,1} y ∆ = {“si”, “no”}. La
función de transición de salida esta definida
inicio por la siguiente tabla:
q0 q1
0/no λ 0 1
q0 no no
q1 si no
1/no 1/no
q2 no si
q2
1/si

Para la cadena 0100el autómata con salida de Mealy anterior se ejecuta como un AFD salvo
que en cada paso de transición se ejecuta la función de salida también, comportándose de
la siguiente forma:

δˆ(q0,0100) = δ(δˆ(q0,010),0) =… = δ(δ(δ(δ(δˆ(q0,ε),0),1),0),0) Æ δˆ(q0,ε) = q0


= δ(δ(δ(δ(q0,0),1),0),0) λ(q0,0) = no
= δ(δ(δ(q1,1),0),0) λ(q1,1) = no
= δ(δ(q2,0),0) λ(q2,0) = no
= δ(q1,0) λ(q1,0) = si
= q1

La salida que es el resultado del autómata anterior corresponde a λ(q1,0) = si (última


transición del autómata al terminar de procesar la cadena de entrada), es decir “si” es el
residuo de reconocer la cadena de entrada (“si” pertenece). Sin embargo, el autómata
muestra toda la secuencia de salida: nononosi, el último símbolo del alfabeto de salida es el
reconocimiento de la cadena.

Transformación de un Autómata de Mealy a un Autómata de Moore:

Hay un procedimiento para obtener una Máquina de Moore a partir de una Máquina de
Mealy. Consiste en el siguiente algoritmo que permite obtener una máquina de Moore M2 a
partir de una máquina de Mealy M1.

M1 = (Q, Σ, ∆, δ, λ, q0) un autómata de Mealy

M2 = (Qx ∆, Σ, ∆, δ’, λ’, [q0, b0]) un autómata de Moore

Los estados de M2 son pares Q x ∆, por ejemplo [q,b] con q en Q y b en ∆

δ’([q,b],a) = [ δ(q,a), λ(q,a) ]

λ(q,b) = b

Prof. Hilda Contreras Teoría de la Computación - Pregrado 4


Por ejemplo: el autómata de Mealy anterior se transforma en un Moore utilizando esta
definición.

Q = {q0, q1, q2}, ∆ = {si, no}, Σ = {0, 1}

Q x ∆ = { [q0,si], [q0,no], [q1,si], [q1,no], [q2,si], [q2,no] }

δ’([q0,si],0) = [q1,no]

δ’([q0,si],1) = [q2,no]
si no
δ’([q1,no],0) = [q1,si] 0 0
inicio [q0,si] [q1,no]
δ’([q1,no],1) = [q2,no]
0 0
δ’([q1,si],0) = [q1,si] 1 1 0

δ’([q1,si],1) = [q2,no] si
no 1 [q1,si]
δ’([q2,no],0) = [q1,no] [q2,no]
si
δ’([q2,no],1) = [q2,si] 1
[q2,si]
1
δ’([q2,si],0) = [q1,no]

δ’([q2,si],1) = [q2,si]

Ejercicios:
1.- Construir autómatas con salida para solucionar los siguientes problemas:
a) Máquina expendedora de boletos que muestre como salida el mondo introducido y el
resto. Asuma que la máquina reconoce solo las monedas de 1, 0.5 y 0.25

b) Dado un número en binario (a partir de los dígitos menos significativos) calcule la


función incremento o sucesor en binario. Puede traducirse este autómata a un circuito
lógico?

c) Dado un número en binario (a partir de los dígitos menos significativos) multiplique por 2
en binario (considere en que consiste multiplicar un número por su base).

d) Dado una cadena en el alfabeto binario {0,1} muestre su traducción o codificación


sobre el alfabeto {a,b}, tal que una a es equivalente a 2 unos seguidos y una b es
equivalente a dos ceros seguidos (Ejemplo sencillo de la codificación de caracteres,
por ejemplo el ASCII).

Referencias
[1] John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman., “Introducción a la Teoría de
Autómatas y Lenguajes Formales”. PrenticeHall, Edición antigua.

Prof. Hilda Contreras Teoría de la Computación - Pregrado 5

También podría gustarte