Beruflich Dokumente
Kultur Dokumente
Minimizacin de autmatas
Construccin del AFDt mnimo N a partir del AFDt M = (Q, , , q0, F)
1)
Definiciones previas:
2)
Estados accesibles:
q0 es accesible
q accesible s, (q, s) es accesible
p k q
3)
45
46
Ejemplo 1
b
b
Etapa 0 :
Etapa 1 :
q0
Ejemplo 2
b
b
a
q1
q2
q0
Por tanto = 0
AFD mnimo:
q0,q2
b
a
q0,q4
q4
q2,q4
[q1]
Etapa 0 : [q0,q2,q4]
Etapa 1 : [q0] [q2,q4]
Etapa 2 : [q0] [q2,q4]
[q1,q3]
[q1,q3]
[q1,q3]
Por tanto = 1
b
b
q0,q2
q2
b
q3
q1
Clases a nivel 1:
AFD mnimo :
q1
a
Tema 2: Lenguajes regulares
47
q1,q3
b
q0
q1
q3, q2 no equiv.
q1,q3
q3, q4 no equiv.
q1,q3
q2,q4
q2,q4
q1,q3
b
a
a,b
q1,q3
q2,q4
a
48
1)
2)
q0
q0
b
a
q1
Etapa k=1
q2
q1
q0,q2
simtrico
simtrico
simtrico
q2
q1
q0,q2
q0 y q2 son 1-equivalentes
[q0]=[q2]={q0,q2}
AFD mnimo:
q0
q1
q2
q0,q2
a
q1
a
Tema 2: Lenguajes regulares
49
50
q0
q1
q3
q1
q2
q0,q4
q0,q2
a
b
a
q1,q3
q4
A lista de q2,q4
q2,q4
q2
q3
(q2,q4)
q4
(q1,q3)
A lista de q1,q3
q1
q3, q2 marcado
q1,q3
q3, q4 marcado
q1,q3
q2,q4
q2,q4
q1,q3
Ejemplo 3
0
b
2
q0
q1
q2
q3
q0
Etapa 0 :
Etapa 1 :
Etapa 2 :
Etapa 3 :
[0,1,2,5,7,8,9]
[0,2,5,7,8] [1,9]
[0,7] [2,5,8] [1,9]
se repite
q2,q4
a
51
a
9
a
7
a
q1,q3
b
a,b
AFD mnimo:
X
a,b
b
8
[3,4,6]
[3,6] [4]
[3,6] [4]
Ejercicio:
- Dibujar el AFD mnimo
- Tabla? Marcado recursivo
52
Minimizacin de autmatas
Minimizacin de autmatas
N es mnimo:
PROPOSICIN 9:
Dado un AFDt M = (Q, , , q0, F), la construccin anterior permite
crear un AFDt N = (Q/, , , [q0], G) mnimo y equivalente a M
DEMOSTRACIN:
y, por tanto,
u.xL(N) v.xL(N)
Pero *(q0,u.x) = *(q0,v.x) implica que u.xL(M) v.xL(M)
N es mnimo
53
54
La interseccin de lenguajes
regulares es un lenguaje regular
Sea M1 = (Q1, , 1, q1, F1) un AFD con L(M1) = L1
Sea M2 = (Q2, , 2, q2, F2) un AFD con L(M2) = L2
Construccin de M :
L1 L2 es regular
L1 L2 es regular
L1 es regular
L1 L2 es regular
F = F1 F2
L1 es regular
Q = Q1 Q2
q0 = <q1, q2>
55
56
El complementario de un leng.
regular es un lenguaje regular
Lenguajes no regulares
Construccin de N :
Ejemplo:
L = { 0n1n : n 0} no es regular
Demostracin:
L(N) = L(M)
M finito => deben existir 0i y 0j con i j tal que *(q0, 0i) = *(q0, 0j)
Esto significa que *(q0, 0i1i) = *(q0, 0j1i), pero por un lado 0i1i L
y por otro 0j1i L. Llegamos a una contradiccin.
57
58
Aplicaciones
Aplicaciones
Interruptor de luz
Control de mquinas de bebidas
OFF
ON
Encender
Analizadores/generadores de palabras
Mquina de bebidas:
2.
etc.
4.
Apagar
Interruptor de luz:
59
10
N
15
N
20
25
60
Lenguaje natural
Compilacin
Analizadores lxicos
Funcin de un compilador:
ENTRADA: un programa en ADA, C++, PERL, JAVA,
SALIDA: cdigo ejecutable en una mquina concreta
1.anlisis:
2.anlisis:
+Verbo
+Nombre
+Masc
+PresInd
+1P
+Sg
+Sg
Generacin:
gener(ate)> cantar+Verbo+PresInd+1P+Pl
Ejemplo:
1. cantamos
Tema 2: Lenguajes regulares
61
Compilacin
Ejemplo:
62
Compilacin
El anlisis lxico corresponde a la primera fase:
asignacin(:=)
operador(+)
operador(*)
sentencia
expresin
id
:=
expresin
factor
+
id
id
factor
entero
63
64
Generadores de analizadores
lxicos
Compilacin
En el anlisis lxico hay que reconocer clases de palabras/ tokens. La
definicin de stos se suele hacer a travs de expresiones regulares:
nmeros reales
("+"|-)? {digito}+ ("."{digito}+)? ( E("+"|-)? {digito}+ )?
identificadores
{letra} ( _? ({letra}|{digito}) )*
palabras reservadas
declare | function | if | then | else | elsif
operadores
:=|*|-|/
65
66
Especificacin lex
letra
[a-z A-Z]
digito [0-9]
real
("+"|-)? {digito}+ ("."{digito}+)? ( E("+"|-)? {digito}+ )?
identif {letra} ( _? ({letra}|{digito}) )*
reser
(declare | function | if | then | else | elsif)
%%
reser
{es_palabra_reservada();}
real
{printf(Real: %f\n",yytext);}
identif {printf("Identificador: %s\n",yytext);}
.
;
%%
void es_palabra_reservada()
{ printf(Palabra reservada\n");}
Tema 2: Lenguajes regulares
lex
Una especificacin LEX
LEX
lex.yy.c
yylex()
Compilador de C
cc lex.yy.c -ll
a.out
Declaraciones
Reglas
Acciones
67
Uso
Cadena
de entrada
a.out
Cadena
de tokens
68