You are on page 1of 34

10 Anlisis lxico VI

Compiladores - Profr. Edgardo Adrin Franco Martnez

Contenido
Clasificacin de los autmatas finitos Autmata finito no determinista (AFND) Autmata finito determinista (AFD) Teorema sobre la transformacin de AFND en AFD Transformacin de una expresin regular en un autmata

finito Construccin de Thompson de un AFND a partir de una expresin regular Nomenclatura de Thompson Ejemplos

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

Clasificacin de los autmatas finitos


Cuando se defini autmata finito, la funcin

,es en general no determinista. As en funcin de f, se hablar de autmatas finitos deterministas AFD y autmatas finitos no deterministas AFND.
Un autmata finito no determinista AFND se caracteriza por la posibilidad de

que dada una entrada e en un estado qi, se pueda pasar a un estado qj, qk,...,qn sin saber a ciencia cierta, a cual de esos estados pasar. Existiendo la misma probabilidad de que pase a cualquiera de dichos estados.
Un autmata finito determinista AFD es un caso particular de los autmatas

finitos, en el que la funcin de transicin no presenta ninguna ambigedad en las transiciones de estados para una entrada dada.

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

La definicin de autmata finito no determinista AFND coincide con

Autmatas finitos no deterministas (AFND)

la de autmata finito :

Con la salvedad de que

es no determinista, i.e. es aquel que presenta cero, una o ms transiciones por el mismo carcter del alfabeto.

Un autmata finito no determinista tambin puede o no tener ms de

un nodo inicial.

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

AFND Ejemplo
Resolver:

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

AFND Ejemplo
Solucin:

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

Un autmata finito determinista AFD es un caso particular

Autmatas finitos deterministas (AFD)

de los autmatas finitos, en el que la funcin de transicin no presenta ninguna ambigedad en las transiciones de estados para una entrada dada.
Un autmata finito determinista es una quntupla AFD=(E,

Q, f, q1, F) donde la funcin determinista.

es

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

Teorema sobre la transformacin de AFND en AFD


"Para todo autmata finito no determinista AFND=(E, Q,

f, q1,F) se puede construir un autmata finito determinista AFD=(E, Q, f, q1, F) tal que el lenguaje reconocido por el autmata finito determinista AFD coincida con el lenguaje reconocido por el autmata finito no determinista AFND, es decir L(AFD) = L(AFND)".

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

Transformacin de AFND en AFD


AFND

Expresin: ab|ac*
1
INICIO

a a

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

10

Transformacin de AFND en AFD


AFD

Expresin: ab|ac*
1
INICIO

a
2,4

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

11

AFND -> AFD (Ejemplo)


Resolver: Sea el autmata finito no determinista del ejemplo anterior, determinar un autmata finito determinista equivalente.

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

12

AFND -> AFD (Ejemplo)


Solucin: El AFD tendr en un principio 24 estados, i.e. Q conjunto de las partes de Q (16 estados). Tambin se define el estado inicial y el conjunto de estados finales F. Q={ ,[q1],[q2],[q3],[q4],[q1q2],...,[q1q2q3q4] } q1=[q1] F={[q4],[q1q4],[q2q4],[q3q4],[q1q2q4],. ..,[q1q2q3q4]} f se construye a partir de f resultando la siguiente tabla

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

13

AFND -> AFD (Ejemplo)


Solucin:

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

14

AFND -> AFD (Ejemplo)


Solucin: Ahora bien, en un AF los estados

que no son accesibles desde el inicial pueden eliminarse, as se eliminan los marcados en la tabla con flechas.
Entonces f puede resumirse segn

la tabla:

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

15

AFND -> AFD (Ejemplo)


Solucin

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

16

Transformacin de una expresin regular en un autmata finito


Dada una expresin regular existe un autmata finito

capaz de reconocer el lenguaje que sta define.


Recprocamente, dado un autmata finito, se puede

expresar mediante una expresin regular del lenguaje que reconoce.

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

17

Transformacin de una expresin regular en un autmata finito

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

18

Transformacin de una expresin regular en un autmata finito

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

19

Transformacin de una expresin regular en un autmata finito

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

20

Construccin de Thompson de un AFND a partir de una expresin regular


La construccin de Thompson construye un AFND a partir

de cualquier expresin regular.


El algoritmo construye a partir de expresiones regulares un

diagrama de AFND, para luego poder generar un AFD mnimo equivalente.


Utiliza una notacin estndar para generar el AFND

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

21

Nomenclatura de Thompson
Para la representacin de una cadena vaca se utiliza el smbolo

Cadena Vaca

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

22

Nomenclatura de Thompson
Para representar un smbolo, se utilizan dos estados y una

transicin para el movimiento con el smbolo.

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

23

Nomenclatura de Thompson
Para la concatenacin de dos smbolos nicamente se unen cada

uno de los smbolos por

rs

Concatenacin de smbolo

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

24

Nomenclatura de Thompson
Para la eleccin de alternativas, crear transiciones para la

unin de las transiciones.

r|s

Eleccin de alternativas

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

25

Nomenclatura de Thompson
Para la cerradura Positiva, se agregan transiciones para retornar

al estado previo, permitiendo agregar

1 o mas veces el smbolo

r+

Cerradura positiva

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

26

Nomenclatura de Thompson
Para la cerradura de Kleene, se agregan transiciones para

retornar a estado previo. Y otra transicin para saltar la transicin con r.

r*

Cerradura de Kleene

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

27

Ejemplo 01 Mtodo de Thompson


Diagrama del NFA que representa la ER a*b. 1. Parte de la cerradura de Kleene. a*b

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

28

Ejemplo 01 Mtodo de Thompson


2. Para continuar se generan la concatenacin del smbolo b

a*b

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

29

Ejemplo 01 Mtodo de Thompson


3. Para finalizar se numeran los estados y se indica el estado inicial y final

a*b

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

30

Ejemplo 02 Mtodo de Thompson


A partir de la ER (b|(b*a)*)a 1. Parte de la cerradura de Kleene que se encuentra dentro de parntesis. (b|(b*a)*)a

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

31

Ejemplo 02 Mtodo de Thompson


A partir de la ER (b|(b*a)*)a 2. Completamos dicho parntesis concatenando el smbolo a (b|(b*a)*)a

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

32

Ejemplo 02 Mtodo de Thompson


A partir de la ER (b|(b*a)*)a 3. Aplicar la Cerradura de Kleene al parntesis (b|(b*a)*)a

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

33

Ejemplo 02 Mtodo de Thompson


A partir de la ER (b|(b*a)*)a 4. La eleccin de alternativas del b y el diagrama anterior. (b|(b*a)*)a

10 Anlisis lxico VI
Compiladores - Profr. Edgardo Adrin Franco Martnez

34

Ejemplo 02 Mtodo de Thompson


5. Concatenamos el ltimo smbolo, enumerando e indicando el estado inicial y el final (b|(b*a)*)a

You might also like