Autómatas Finitos: Conceptos y Aplicaciones
Autómatas Finitos: Conceptos y Aplicaciones
Nombre de la asignatura:
Lenguajes y Autómatas I
Clave de la asignatura:
SCD - 1015
SATCA 1:
2-3-5
Carrera:
Ingeniería en Sistemas Computacionales.
Profesor:
Ing. Miguel Mateos Vasconcelos Reyes
• Definiciones regulares
• Diagramas de transiciones
• Matriz de transiciones
Diagramas de transiciones
Estado inicial
Es el estado en donde el autómata inicia los cálculos.
∑ = ( Letra, Dígito, _ )
Categoría “Letra”, en donde están todas las letras mayúsculas o minúsculas del
abecedario.
Letra →(a, b, c, d, …, z, A, B, C, D, …, Z)
Categoría “Dígito”, que agrupa todos los dígitos de la notación decimal.
Dígito → (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
Letra
Dígito
Letra
q1 q2
• El primer símbolo que se lee de la cadena debe ser una letra para llegar al
estado q2, que es un estado de aceptación. Esto significa que si la cadena
consta de un solo símbolo, el diagrama acepta esta cadena. Por ejemplo, las
siguientes cadenas (w) son aceptadas: w = G, w = H, w = J.
• Los símbolos que pueden seguir en la cadena son cualquier dígito, cualquier
letra o el guion bajo. La cadena prosigue al estado q2.
• El autómata se detendrá cuando exista un fin de cadena (FDC). Si el estado en
donde se quedó el control del autómata es de aceptación, la cadena de más de
un símbolo se acepta.
• Pero, ¿qué pasa cuando el primer símbolo de la cadena no es una letra? En tal
caso se canalizaría a otro estado, el cuál sería de error debido a que el análisis
que estamos realizando solo es para identificadores válidos. Si la cadena tiene
secuencias de símbolos como 3nombre, _edad, 67mes, el autómata no la
aceptará, porque la expresión regular para nombres de identificadores válidos
no coincide con la que se ha definido.
Concatenación
• Paso 1: ER = L D
• Paso 2: ∑ = {L, D}
• Paso 3: Si presentamos L D significa que podemos recibir una letra seguida de
dígito; en consecuencia, el diagrama de transiciones sería como sigue:
L D DEL
0 1 2 3
L DEL L DEL
0 1 3 0 1 3
D DEL D DEL
2 4 2
DT1 DT2
L
L DEL
0 1 2
D
Observación: En el diagrama de la figura anterior se visualizan los 3 operadores
definidos hasta el momento (concatenación, alternativo y unario). En ésta opción el
operador unario (cero o más casos) incluye al operador alternativo; sin embargo,
puede tener las siguientes variaciones.
Opción 2ɛ
D
X → (LD)*
L D
1 2 3
D
X → D* DEL
0 1
D
D→[0-9] D DEL
CONE→D+ 0 1 2
D
S→+|- S D DEL
D →[0-9] 0 1 2 3
CNE→S?D+
D
Id = Letra (Letra|Dígito|_)*
Dígito → (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
cn→Dígito*
Abreviemos los operadores aritméticos con op-ar:
op-ar→ (+, -, *, /)
Dígito Dígito
Letra 4 7
Dígito
Dígito op-ar Dígito FDC
Letra
1 2 3 Letra Dígito 6 Letra Dígito 9
=
_
Letra op-ar Letra FDC
5 8
_ _
L
L DEL
0 1 2
Caracteres de entrada
0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 La cadena IDE
se acepta identificador
En la figura anterior se muestra la manera en que cada celda de la
matriz toma un valor según la entrada recibida. Al principio el
control se encuentra en el estado 0; al recibir cualquier letra
(independientemente de que sea mayúscula o minúscula) el control
pasa al estado (fila) número 1, en el cuál puede recibir letras o
dígitos con el operador unario. En consecuencia, en todos estos
casos el control se mantiene en el mismo estado. Cuando se recibe
el delimitador (del) o el fin de cadena (FDC), se debe asignar la
clave TOKEN correspondiente al elemento evaluado, mismo que se
encuentra en la columna CAT (conversión a token). Las celdas en
blanco indican que no existe relación entre el símbolo del alfabeto y
algún estado del DT por lo tanto, indican un error.
Sumario e interrogación S?D+
D
S D DEL
0 1 2 3
D
0 1 2 3 4 5 6 7 8 9 + - del CAT
0 2 2 2 2 2 2 2 2 2 2 1 1
1 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 La cadena CNE
se acepta Constante
numérica entera
Potencia
En este caso se utiliza el número de filas o estados cuyo número esté indicado por
el operador L(L|C)4:
del
L L|D L|D L|D L|D
0 1 2 3 4 25
L
a b …z A B …Z 0 1 2 …9 del CAT
0 1 1 1 1 1 1
1 2 2 2 2 2 2 2 2 2 2
2 3 3 3 3 3 3 3 3 3 3
3 4 4 4 4 4 4 4 4 4 4
4 5 5 5 5 5 5 5 5 5 5
La cadena IDE
5 se acepta
Otras matrices
Matriz de transiciones de los identificadores válidos de la figura 3.2
2 2 2 2 Acepta ID válido
Observaciones:
2 2 2 2 3 Error Error
5 5 5 5 Error 6 Error
8 8 8 8 Error Error 9
Cabezal de lectura
Indicado por una marca
que señala el símbolo
0 Leído de la cadena
n 1
ESTADOS
Mecanismo de control
Figura 3.4 Representación de un AF
Existen dos tipos de autómatas finitos:
Son autómatas finitos que tienen una y solo una acción por símbolo
leído de la cadena de entrada (o flujo de entrada) bajo análisis.
Cada uno de éstos símbolos pertenece al alfabeto definido, y el
examen de los mismos se realiza en orden y de manera secuencial,
un símbolo a la vez.
a
q0 q1
b
b
a
q2
a B FDC CAT
q1 q1 q2 Acepta Cadena
q0 q0 q2 Error
q1 q1 q2 Acepta Cadena
Tomando en cuenta la información anterior, calculemos las siguientes
transiciones:
1. & (q0, a)
2. & (q1, b)
3. & (q2, a)
Resultado:
4. Estado q1
5. Estado q2
6. Estado q1
Como vemos, cada transición proporciona sólo un estado a seguir. En otras palabras,
para cada par estado-símbolo existe únicamente un valor; en consecuencia, a cada
estado le daremos la notación q seguida del número del estado.
Para que el autómata de los identificadores válidos de la figura 3.2 sea determinista,
en cada estado debe existir una transición para cada símbolo del alfabeto. Si ésta no
coincide con el patrón o lexema definido para ese autómata, se genera un estado de
error. Como se observa en la figura 3.6, se agrega otro estado de “error” a donde
llegan las transiciones de cada símbolo del alfabeto que no cumple con el lexema.
Letra
Dígito
Letra
q1 q2
_ _
Dígito
Dígito
Error
_ Letra
Con una estructura similar a los AFD, los AFND tienen dos
características particulares. La primera es la ambigüedad, ya que la
transición entre un símbolo leído de la cadena de entrada y el
siguiente existen diferentes caminos a elegir. La segunda
característica es que se omite hacia que estado dirigir el control del
flujo de datos cuando se lee el carácter de entrada.
a
q0 q1
a
b a
q2
b
Figura 3.7 Diagrama de transiciones de un AFND con ∑ = {a, b}
En la tabla se determina la secuencia del recorrido en AFND para algunas
cadenas:
a b FDC
q0 {q1, q2} q2 Acepta
q1 q0 ɛ Error
q2 q1 {q0, q2} Acepta
Con base en la información anterior, calculemos las siguientes transiciones:
1. & (q0, a)
2. & (q1, b)
3. & (q2, a)
Resultado:
1. Identificar el autómata.
x x
y x
q0 q1 q2
|Q| = 3
|P(Q)| = 23 = 8
P(Q) = {ɛ, {q0}, {q1}, {q2}, {q0, q1}, {q0, q2}, {q1, q2}, {q0, q1, q2}}
4. Realizar la tabla de transiciones, integrando los elementos
obtenidos de P(Q), incluyendo el conjunto vacío, &(ɛ, ∑) = ɛ.
&({q0}, x) = {q0}
&({q0}, y) = {q1}
&({q0, q1}, x) = &({q0}, x) U &({q1}, x) = {q0} U {q1, q2} = {q0, q1, q2}
&({q0, q1}, y) = &({q0}, y) U &({q1}, y) = {q1} U ɛ = {q1}
&({q0, q1, q2}, x) = &({q0}, x) U &({q1}, x) U &({q2}, x) = {q0} U {q1, q2} U ɛ = {q0, q1, q2}
&({q0, q1, q2}, y) = &({q0}, y) U &({q1}, y) U &({q2}, y) = {q1} U ɛ U ɛ = {q1}
6. Realizar una tabla de transiciones con los conjuntos de estados
obtenidos, identificando cuales son los que tienen el estado de
aceptación del AFND y asignando a cada conjunto de estados-
símbolo el nombre Ce (conjunto de estados).
Nombre del Conjunto de
x y
conjunto estados
ɛ ɛ ɛ ɛ
Ce0 {q0} Ce0 Ce1
Ce1 {q1} Ce5 ɛ
Ce2 {q2} ɛ ɛ
Ce3 {q0, q1} Ce6 Ce1
Ce4 {q0, q2} Ce0 Ce1
Ce5 {q1, q2} Ce5 ɛ
Ce6 {q0, q1, q2} Ce6 Ce1
Así, los nombres de las agrupaciones de conjuntos que tienen los estados de
aceptación son los siguientes; Ce2, Ce4, Ce5 y Ce6.
7. Dibujar el diagrama de transiciones resultante del paso 6.
y
Ce3
x
y
x x
x x
y Ce6
x
Ce0 Ce1 Ce5
y y y
x x
x
Ce4 Ce2 ɛ
y
y
y x
Ce0 Ce1 Ce5
y
y
x
ɛ
y
Figura 3.10 AFD convertido de un AFND
x y
q0 q1 q2
y
b c
q0 q1 q2
c
Letra
Letra ;
q0 q1 q2
Dígito
y
x
Figura 3.14 AFD para aplicar la eliminación de estados.
Paso 1. Eliminar los estados que no son accesibles y los arcos que
provienen de ellos. En el caso del AFD que estamos analizando
(vea la figura 3.14), eliminamos el estado 4.
q6 q3 B2 q7 B1
q7 q7 B1 q5 B1
q8 q7 B1 q3 B2
B2 q3 q1 B1 q3 B2 Estados del
bloque 2
Se observa que en q1 el símbolo de entrada x conduce a q2, lo cual
corresponde al bloque 1; con el símbolo de entrada y se llega al estado 6, que
es el del bloque 1. Así se asigna el valor de la columna bloque para cada
símbolo-estado.
Como podemos ver, en la P n+1 los subconjuntos no son iguales a los de P n-1.
Por lo tanto, se tienen 4 subconjuntos, y esto determina la cantidad de bloques.
A continuación, se asignan los elementos a cada bloque:
y
y
y x
x
B4 B5 y