Sie sind auf Seite 1von 6

Minimizacin de autmatas

Minimizacin de autmatas
Construccin del AFDt mnimo N a partir del AFDt M = (Q, , , q0, F)

Construccin de un AFDt con un nmero de estados mnimo que sea


equivalente a un AFDt dado.

1)

Definiciones previas:

2)

Estados accesibles:

q0 es accesible
q accesible s, (q, s) es accesible
p k q

Estados k-equivalentes o k-indistinguibles:

3)

xk ( *(p, x)F *(q, x) F )


pq

Estados equivalentes o indistinguibles:

k xk ( *(p, x)F *(q, x) F), es decir,


x* ( *(p, x)F *(q, x)F )
Tema 2: Lenguajes regulares

45

Eliminar estados inaccesibles


Determinar las clases de estados equivalentes:
p 0 q ( pF qF )
p k+1 q ( p k q s (p, s) k (q, s) )
Construccin del AFD N = (P, , , p0, G) con
P = Q/
siendo es la menor k tal que k coincide con k+1
p0 = [q0]
([p], s) = [(p, s)]
G = {[p]: pF}

Tema 2: Lenguajes regulares

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

q0 1 q2 porque (q0, a) 0 (q2, a) y (q0, b) 0 (q2, b)


[q0,q2]

q1

q0 0 q2 (ambos F), pero q0 y q1 no son equivalentes


[q1]
Clases a nivel 0: [q0,q2]

Clases a nivel 1:

AFD mnimo :

q1

a
Tema 2: Lenguajes regulares

47

Tema 2: Lenguajes regulares

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

Mtodo mediante tabla

Tabla del ejemplo 1


b

Mtodo: marcar (X) en la tabla, los pares de estados que son


distinguibles, haciendo un nico recorrido de la tabla (de
izquierda a derecha y cada columna de arriba a abajo).

Algoritmo de llenado de la tabla:


Marcar todos los pares (p,q) F x (Q - F)
Recorrer la tabla y para cada (p,q) no marcado hacer
si existe s tal que ((p,s), (q,s)) est marcado
entonces
marcar (p,q)
marcar recursivamente la lista de (p,q)
sino
aadir (p,q) a la lista de ((p,s), (q,s)) salvo que (p,s)=(q,s)


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

Tema 2: Lenguajes regulares

50

Tabla del ejemplo 2


b

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

Tema 2: Lenguajes regulares

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

Tema 2: Lenguajes regulares

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

Por Red.Absurdo: Supongamos M= (Q, , , q0, F) con menos


estados que N y tal que L(M) = L(N).
M y N son ambos AFDt con todos sus estados accesibles y M
tiene menos estados que N => tomando palabras que llegan a
cada estado de N, dos de ellas (al menos) deben llegar al mismo
estado en M :

DEMOSTRACIN:

u,v* : *(q0,u) = *(q0,v) y *([q0],u) *([q0],v)

N es un AFD ( est bien definida)


p q ([p], s) = ([q], s) s

Por construccin de N, dos estados diferentes son distinguibles:


x*: *([q0],u.x)G  *([q0],v.x)G

N y M son equivalentes L(N) = L(M)


Lema auxiliar: *([p], x) = [ *(p, x)] x*

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

Contradiccin con L(M) = L(N).


Tema 2: Lenguajes regulares

53

Propiedades de cierre de los


lenguajes regulares

Tema 2: Lenguajes regulares

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

Si L1 y L2 son lenguajes regulares

Construccin de M :

L1 L2 es regular

L1 L2 es regular

L1 es regular

L1 L2 es regular

F = F1 F2

L1 es regular

(<p, q>, s) = <1(p, s), 2(q, s)>

M = (Q, , , q0, F) con


Obvio a partir de expresiones regulares

Q = Q1 Q2
q0 = <q1, q2>

Lema: (<p, q>, x) = <1(p, x), 2(q, x)>


L(M) = L1 L2
Tema 2: Lenguajes regulares

55

Tema 2: Lenguajes regulares

56

El complementario de un leng.
regular es un lenguaje regular

Lenguajes no regulares

Sea M = (Q, , , q0, F) un AFDt con L(M) = L1

Existen lenguajes que no son regulares y tcnicas para demostrarlo


(ver El lema de bombeo en la bibliografa dada)

Construccin de N :

Ejemplo:

L = { 0n1n : n 0} no es regular

Demostracin:

N = (Q, , , q0, G) con G = Q-F

Si L es regular, existe un AFDt M = (Q, , , q0, F) que lo reconoce.


Consideramos el conjunto infinito {0n : n 0}

L(N) = L(M)

M finito => deben existir 0i y 0j con i j tal que *(q0, 0i) = *(q0, 0j)

xL(N) (q0, x)G

Esto significa que *(q0, 0i1i) = *(q0, 0j1i), pero por un lado 0i1i L
y por otro 0j1i L. Llegamos a una contradiccin.

(q0, x)Q-F (q0, x) F


xL(M) xL1

Por tanto no existe un AFDt M tal que L(M)=L .

Tema 2: Lenguajes regulares

57

Tema 2: Lenguajes regulares

58

Aplicaciones

Aplicaciones

Interruptor de luz
Control de mquinas de bebidas

OFF

ON
Encender

Analizadores/generadores de palabras

Mquina de bebidas:

Control de las tareas de un robot


1.

Bsqueda y sustitucin de palabras

2.

Tratamiento de masas de textos


Analizadores lxicos de compiladores y traductores
3.

etc.
4.

Tema 2: Lenguajes regulares

Apagar

Interruptor de luz:

59

Las bebidas cuestan 25 cntimos.


Monedas que admite la mquina:
0
1.
De cuarto, 25 cntimos (Q).
2.
Dimea, 10 cntimos (D).
3.
Nickel, 5 cntimos (N).
La mquina acepta cualquier combinacin
de monedas hasta 25 cntimos.
La mquina requiere la cantidad exacta.

Tema 2: Lenguajes regulares

10

N
15

N
20

25

60

Lenguaje natural

Compilacin

Analizadores/generadores de palabras: Transductores

Analizadores lxicos

Ejemplo: Uso de XFST (Xerox Finite State Transducer) en


el anlisis morfolgico del castellano.

Funcin de un compilador:
ENTRADA: un programa en ADA, C++, PERL, JAVA,
SALIDA: cdigo ejecutable en una mquina concreta

Anlisis: analyze> canto


1. cantar+Verbo+PresInd+1P+Sg
2. canto+Nombre+Masc+Sg

1.anlisis:
2.anlisis:

+Verbo

+Nombre

+Masc

+PresInd

+1P

+Sg

Esa traduccin se realiza en diferentes fases:


a) Reconocer entidades concretas del programa: palabras
reservadas, identificadores, nmeros, separadores, operadores,
strings,

+Sg

Generacin:
gener(ate)> cantar+Verbo+PresInd+1P+Pl

Ejemplo:

posicion := inicial + velocidad * 60

1. cantamos
Tema 2: Lenguajes regulares

61

Tema 2: Lenguajes regulares

Compilacin
Ejemplo:

posicion := inicial + velocidad * 60


id(posicion)
id(inicial)
id(velocidad)
entero(60)

62

Compilacin
El anlisis lxico corresponde a la primera fase:

asignacin(:=)
operador(+)
operador(*)

ENTRADA: una secuencia de caracteres (el programa)


SALIDA: una secuencia de tokens (las unidades del programa)
Cmo trabaja un analizador lxico?:

b) Reconocer la estructura de la secuencia de tokens del programa


Lee la entrada carcter a carcter
Devuelve la secuencia que se adeca con algn token
Para ello utiliza un autmata.

sentencia
expresin
id

:=

expresin

factor
+

id
id

factor
entero

c) A partir de dicha estructura, generar el cdigo objeto


Tema 2: Lenguajes regulares

63

Tema 2: Lenguajes regulares

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
:=|*|-|/

Crean el AFD asociado a una expresin regular y producen el cdigo del


analizador lxico (http://catalog.compilertools.net):



- Cada expresin regular se convierte en un -AFND


- Desde un estado inicial q0, y por medio de -transiciones,
se unen todos los -AFNDs
- Se transforma en un AFD: el determinismo facilita el manejo
Tema 2: Lenguajes regulares

Existen mecanismos que producen de forma automtica analizadores


lxicos: lex (UNIX), flex (GNU)...




65

Lenguaje C : lex, flex


ADA: alex
JAVA: jlex, jflex
C++: lex++

Tema 2: Lenguajes regulares

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

Tema 2: Lenguajes regulares

a.out

Cadena
de tokens
68

Das könnte Ihnen auch gefallen