lenguajes regulares y autómatas finitos - clase 10

10
LENGUAJES REGULARES Y AUTÓMATAS FINITOS U.T.N. F.R.T. S. y S. de los L. CONVERSIÓN DE AF- A AFD: ING. JORGE BUABUD ALGORITMO PARA OBTENER UN AFD A PARTIR DE UN AF- : Entrada : AF- = < Q 1 , , q 10 , F 1 , f 1 > || Salida : AFD = < Q 2 , , q 20 , F 2 , f 2 > { Sean: T Q 1 , p q Q 1 , p’ q’ Q 2 , x } función Clausura(T) Pila ← T ; Clausura ← T mientras Pila hacer descargar q de la Pila para cada p f 1 (q , ) hacer si p Clausura entonces agregar p a Clausura cargar p en la Pila retorno función Destino(T,x) Destino ← para cada q T hacer Destino ← Destino f 1 (q , x) retorno

Upload: jorge-buabud

Post on 25-Mar-2016

216 views

Category:

Documents


3 download

DESCRIPTION

Conversión de un AF-lambda en AFD. Pasar de una ER al AF. Comparación de un AFD y un AFND.

TRANSCRIPT

Page 1: Lenguajes Regulares y Autómatas Finitos - Clase 10

LENGUAJES REGULARES Y

AUTÓMATAS FINITOS

U.T.N. – F.R.T.

S. y S. de los L.

CONVERSIÓN DE AF- A AFD:

ING. JORGE BUABUD

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 , x }

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

retorno

función Destino(T,x)

Destino ←

para cada q T hacer

Destino ← Destino f1(q , x)

retorno

Page 2: Lenguajes Regulares y Autómatas Finitos - Clase 10

LENGUAJES REGULARES Y

AUTÓMATAS FINITOS

U.T.N. – F.R.T.

S. y S. de los L.

CONVERSIÓN DE AF- A AFD:

ING. JORGE BUABUD

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

Page 3: Lenguajes Regulares y Autómatas Finitos - Clase 10

LENGUAJES REGULARES Y

AUTÓMATAS FINITOS

U.T.N. – F.R.T.

S. y S. de los L.

EJEMPLO DE CONVERSIÓN DE AF- A AFD:

ING. JORGE BUABUD

A partir del grafo hacemos la tabla:

AFD16 a b

*q0 ={0,1,4,6,8} q1 q2

q1 ={1,7,2} q3 q4

*q2 ={2,1,5,6,8} q3 q5

*q3 ={1,7,3,4,2,8} q3 q6

*q4 ={2,7,5,8} q7 q4

*q5 ={5,2,6,8} q7 q8

*q6 ={2,7,1,5,8} q3 q4

*q7 ={3,4,7,8,2} q7 q6

*q8 ={5,6,8} q9 q8

q9 ={7,2} q7 q4

AF-2

a1b

2

b

b

8

b

a

4

a

a

b

7

a,b

a

b

0

3

6

5

Page 4: Lenguajes Regulares y Autómatas Finitos - Clase 10

LENGUAJES REGULARES Y

AUTÓMATAS FINITOS

U.T.N. – F.R.T.

S. y S. de los L.

EJEMPLO DE CONVERSIÓN DE AF- A AFD:

ING. JORGE BUABUD

Normalmente el AFD que se obtiene no es mínimo, aplicando el

algoritmo de minimización llegamos a un AFD16 reducido:

P0 = { [0,2,3,4,5,6,7,8] , [1,9] }

P1 = { [0] , [2,3,4,5,6,7] , [8] , [1,9] }

P2 = { [0] , [2,3,4,6,7] , [5] , [8] , [1,9] }

P3 = { [0] , [2] , [3,4,6,7] , [5] , [8] , [1,9] }

P4 = P3

C1

C3C2C1

C2

C4

C1 C2 C3 C4 C5

C1 C2 C3 C4 C5 C6

AFD16

Mínimoa b

*C1 C6 C2

C6 C3 C3

*C2 C3 C4

*C3 C3 C3

*C4 C3 C5

*C5 C6 C5

Page 5: Lenguajes Regulares y Autómatas Finitos - Clase 10

LENGUAJES REGULARES Y

AUTÓMATAS FINITOS

U.T.N. – F.R.T.

S. y S. de los L.

EJEMPLO DE CONVERSIÓN DE AF- A AFD:

ING. JORGE BUABUD

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:

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

AFD16

b

A

B

D

EC

b

a,b

a

b

a

aba

a,b

AFD16 GR

N={S, A, B, C, D, E}

T={a, b}

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

P

S

Page 6: Lenguajes Regulares y Autómatas Finitos - Clase 10

LENGUAJES REGULARES Y

AUTÓMATAS FINITOS

U.T.N. – F.R.T.

S. y S. de los L.

OBTENCIÓN DEL AF-A PARTIR DE UNA ER:

ING. JORGE BUABUD

Veamos a continuación algunos casos particulares de construcción de

AF- para ER sencillas, donde x y :

x

x

x+y

y

x

x.y

x y

x*

x

Page 7: Lenguajes Regulares y Autómatas Finitos - Clase 10

LENGUAJES REGULARES Y

AUTÓMATAS FINITOS

U.T.N. – F.R.T.

S. y S. de los L.

OBTENCIÓN DEL AF-A PARTIR DE UNA ER:

ING. JORGE BUABUD

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.

Page 8: Lenguajes Regulares y Autómatas Finitos - Clase 10

LENGUAJES REGULARES Y

AUTÓMATAS FINITOS

U.T.N. – F.R.T.

S. y S. de los L.

EJEMPLO DE OBTENCIÓN DEL AF DE UNA ER:

ING. JORGE BUABUD

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

AF-7

a1

a

2c

b14

c

a

4

b b

7

a

0

3

65

1210 11

8 9

13

Page 9: Lenguajes Regulares y Autómatas Finitos - Clase 10

LENGUAJES REGULARES Y

AUTÓMATAS FINITOS

U.T.N. – F.R.T.

S. y S. de los L.

ING. JORGE BUABUD

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 q2 q3

q1 ={1,2,9,3,5} q5 q7 q8

q2 ={11} q3 q4 q3

q3 = q3 q3 q3

q4 ={12} q6 q3 q3

q5 ={4,8,9,2,3,5} q5 q7 q8

*q6 ={13,14} q3 q3 q3

q7 ={6} q7 q3 q9

*q8 ={14} q3 q3 q3

q9 ={7,8,9,2,3,5} q5 q7 q8

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

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

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

P3=P2

A

A B

A CB

B

DC

D E F G

AFD17mínimo

a b c

B G C D

C D F D

D D D D

E E D G

F A D D

G G E A

*A D D D

EJEMPLO DE OBTENCIÓN DEL AF DE UNA ER:

Page 10: Lenguajes Regulares y Autómatas Finitos - Clase 10

LENGUAJES REGULARES Y

AUTÓMATAS FINITOS

U.T.N. – F.R.T.

S. y S. de los L.

Complejidad de los Autómatas Finitos

ING. JORGE BUABUD

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.

AUTÓMATA / ORDEN Espacial Temporal

AFD 2|r| |x|

AFND |r| |r|.|x|