Lenguajes Regulares y Autómatas Finitos - Clase 10

Page 1

U.T.N. – F.R.T. S. y S. de los L.

LENGUAJES REGULARES Y AUTÓMATAS FINITOS

CONVERSIÓN DE AF- A AFD: ALGORITMO PARA OBTENER UN AFD A PARTIR DE UN AF-:

Entrada: AF- = < Q1 ,  , q10 , F1 , f1 > || Salida: AFD = < Q2 ,  , q20 , F2 , f2 >

{ Sean: T  Q1 , p  q  Q1 , p’  q’  Q2 , función Clausura(T) Pila ← T ; Clausura ← T mientras Pila  hacer descargar q de la Pila para cada p  f1(q , ) hacer si p  Clausura entonces agregar p a Clausura cargar p en la Pila

x }

función Destino(T,x) Destino ←  para cada q  T hacer Destino ← Destino  f1(q , x) retorno

retorno ING. JORGE BUABUD


U.T.N. – F.R.T. S. y S. de los L.

LENGUAJES REGULARES Y AUTÓMATAS FINITOS

CONVERSIÓN DE AF- A AFD: inicio q20 ← clausura({q10}) ; agregar q20 a Q2 si q20  F1   entonces agregar q20 a F2 marcar q20 como no procesado mientras  q’  Q2 no procesado hacer marcar q’ como procesado para cada x   hacer p’ ← clausura(destino(q’,x)) f2(q’,x) ← p’ si p’  Q2 entonces agregar p’ a Q2 si p’  F1   entonces agregar p’ a F2 marcar p’ como no procesado fin ING. JORGE BUABUD


U.T.N. – F.R.T. S. y S. de los L.

LENGUAJES REGULARES Y AUTÓMATAS FINITOS

EJEMPLO DE CONVERSIÓN DE AF- A AFD: A partir del grafo hacemos la tabla: AF-2

a

b

1

a

b

b

4

0

a

a

2

3

b

5

b

8

 6

b

a

7

a,b

AFD16

a

b

 *q0 ={0,1,4,6,8} q1 ={1,7,2} *q2 ={2,1,5,6,8} *q3 ={1,7,3,4,2,8}

q1 q3 q3 q3

q2 q4 q5 q6

*q4 ={2,7,5,8} *q5 ={5,2,6,8} *q6 ={2,7,1,5,8} *q7 ={3,4,7,8,2} *q8 ={5,6,8} q9 ={7,2}

q7 q7 q3 q7 q9 q7

q4 q8 q4 q6 q8 q4

ING. JORGE BUABUD


U.T.N. – F.R.T. S. y S. de los L.

LENGUAJES REGULARES Y AUTÓMATAS FINITOS

EJEMPLO DE CONVERSIÓN DE AF- A AFD: Normalmente el AFD que se obtiene no es mínimo, aplicando el algoritmo de minimización llegamos a un AFD16 reducido: C1 C2 P0 = { [0,2,3,4,5,6,7,8] , [1,9] } C1 C2 C3 C4 P1 = { [0] , [2,3,4,5,6,7] , [8] , [1,9] } C2 C1 C3 C4 C5 P2 = { [0] , [2,3,4,6,7] , [5] , [8] , [1,9] } C1 C2 C3 C4 C5 C6 P3 = { [0] , [2] , [3,4,6,7] , [5] , [8] , [1,9] }

AFD16 Mínimo  *C1 C6 *C2 *C3

a

b

C6 C3 C3 C3

C2 C3 C4 C3

*C4 *C5

C3 C6

C5 C5

P4 = P3 ING. JORGE BUABUD


U.T.N. – F.R.T. S. y S. de los L.

LENGUAJES REGULARES Y AUTÓMATAS FINITOS

EJEMPLO DE CONVERSIÓN DE AF- A AFD: Para integrar este ejemplo con los mecanismos vistos anteriormente, tomemos el grafo del AFD16 con un cambio de nomenclatura, para obtener la GR y la ER:

a,b

AFD16

AFD16  GR

N={S, A, B, C, D, E} T={a, b}

D

a,b

a S

a

A

a b

b

C

b

E

a

b B

ER=b*.a.(a+b).(a+b)*+b.b.b*+b.b.a+b.a+

P

S  aA | bB |  A  aD | bD | a | b B  aD | bE | a | b C  aA | bC | b D  aD | bD | a | b E  aD | bC | a | b ING. JORGE BUABUD


U.T.N. – F.R.T. S. y S. de los L.

LENGUAJES REGULARES Y AUTÓMATAS FINITOS

OBTENCIÓN DEL AF- A PARTIR DE UNA ER: Veamos a continuación algunos casos particulares de construcción de AF- para ER sencillas, donde x  y  : x

x* 

x

 

x

 x+y

x

y

x.y x

y

 ING. JORGE BUABUD


U.T.N. – F.R.T. S. y S. de los L.

LENGUAJES REGULARES Y AUTÓMATAS FINITOS

OBTENCIÓN DEL AF- A PARTIR DE UNA ER: A partir de una ER, con alfabeto base  , en general se puede construir el AF- que acepta el lenguaje asociado con dicha expresión, teniendo en cuenta las siguientes pautas: 1) Se construye un AF- correspondiente a cada símbolo de  y también para  si fuera necesario. 2) Se procede a realizar las operaciones entre estos AF-, de acuerdo a la ER de partida. 3) Se recomienda unificar los estados finales en cada paso. ING. JORGE BUABUD


U.T.N. – F.R.T. S. y S. de los L.

LENGUAJES REGULARES Y AUTÓMATAS FINITOS

EJEMPLO DE OBTENCIÓN DEL AF DE UNA ER: ER = a.(a+b.a*.c)*.c+b.b.a 

AF-7

1

a

3

2

a

4

 8

a

0

5

b

6

c

7

10

b

11

b

12

a

9

c

14

 13 ING. JORGE BUABUD


U.T.N. – F.R.T. S. y S. de los L.

LENGUAJES REGULARES Y AUTÓMATAS FINITOS

EJEMPLO DE OBTENCIÓN DEL AF DE UNA ER: Para integrar este ejemplo con los mecanismos vistos anteriormente, vamos a obtener el AFD Mínimo correspondiente: AFD17

a

b

c

 q0 ={0,10} q1 ={1,2,9,3,5} q2 ={11} q3 = 

q1 q5 q3 q3

q2 q7 q4 q3

q3 q8 q3 q3

P0={[q6, q8],[q0, q1, q2, q3, q4, q5, q7, q9]}

q6 q5 q3 q7 q3 q5

q3 q7 q3 q3 q3 q7

q3 q8 q3 q9 q3 q8

P3=P2

q4 ={12} q5 ={4,8,9,2,3,5} *q6 ={13,14} q7 ={6} *q8 ={14} q9 ={7,8,9,2,3,5}

A

B

A

C

B

D

P1={[q6, q8],[q0, q2, q3, q7],[q4],[q1, q5, q9]} A

B

D

C

E

G

F

P2={[q6, q8],[q0],[q2],[q3],[q7],[q4],[q1, q5, q9]} AFD17 mínimo B C D

a

b

c

G D D

C F D

D D D

E F G *A

E A G D

D D E D

G D A D

ING. JORGE BUABUD


U.T.N. – F.R.T. S. y S. de los L.

LENGUAJES REGULARES Y AUTÓMATAS FINITOS

Complejidad de los Autómatas Finitos AUTÓMATA / ORDEN

Espacial

Temporal

AFD AFND

2|r| |r|

|x| |r|.|x|

Donde “r” es la expresión regular asociada al autómata y “x” es la secuencia de entrada que se desea analizar. Vemos que en general el AFD es más rápido que el AFND, pero a la vez ocupa más memoria y viceversa. Esta ventaja del AFD, en cuanto a la complejidad temporal, hace que sea la opción más eficiente para implementar el algoritmo de análisis léxico. ING. JORGE BUABUD


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.