30
Autómatas finitos deterministas Dr. Julio J. Águila G. 22 de agosto de 2004 Última revisión: 29 de agosto de 2019

Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

Autómatas finitos deterministas

Dr. Julio J. Águila G.

22 de agosto de 2004

Última revisión: 29 de agosto de 2019

Page 2: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 2

Contenidos

Autómatas finitos deterministas.

Conversión desde AFN hacia AFD.

Page 3: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 3

Definición AFD

Un autómata finito determinista ( AFD) es un caso especial de un autómata finito no determinista, en el cual:

1. Ningún estado tiene una transición vacía.

2. Para cada estado s y cada símbolo de entrada a, hay a lo sumo una arista etiquetada a que sale de s.

Page 4: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 4

Autómata

AUTÓMATA

reconocedor

de un

lenguaje:

¿pertenece la

palabra al

lenguaje?

palabra

de

entrada

Solo hay dos

respuestas

posibles: SÍ o

NO

Page 5: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 5

Algoritmo de reconocimiento estado= s0

carácter_de_entrada= yylex()

mientras carácter_de_entrada ≠ EOF hacer

estado= mueve( carácter_de_entrada, estado)

carácter_de_entrada= yylex()

fin mientras

si estado ∈ F entonces

regresar “Sí pertenece”

sino

regresar “No pertenece”

fin si

Page 6: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 6

Ejemplo AFD (a|b)*abb

Sea entonces M un AFD, tal que M= { S, Σ, Δ, s0, F} donde:

S= { 0, 1, 2, 3}

Σ= { a, b}

Δ= { { 0, a, 1}, { 0, b, 0}, { 1, a, 1}, { 1, b, 2}, { 2, a, 1}, { 2, b, 3}, {3, a, 1}, { 3, b, 0}}

s0= {0}

F= {3}

Page 7: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 7

Diferencia con AFN (a|b)*abb

Sea entonces M un AFN, tal que M = {S, Σ, Δ, s0, F} donde:

S= { 0, 1, 2, 3}

Σ= { a, b}

Δ= { { 0, a, {0,1}}, { 0, b, {0}}, {1, b, {2}}, { 2, b, {3}}}

s0= {0}

F= {3}

Page 8: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 8

Ejemplo AFD (a|b)*abb

a

Inicio

2 a b

1 0 3

a

b b

b

a

Page 9: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 9

Diferencia con AFN (a|b)*abb

0 1 2 3 Inicio

a

a

b

b b

Page 10: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 10

Diferencia con AFN (a|b)*abb

Inicio

2

a

3

4

b

5

6 1

7 0

8 10 9

a b b

Page 11: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 11

Tabla de Transiciones (a|b)*abb

E s ta d o s a b

0 1 0

1 1 2

2 1 3

3 1 0

Page 12: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 12

Diferencia Tabla de Transiciones (a|b)*abb

Estado

Símbolo de Entrada

a

b

0

{0,1}

{0}

1

-

{2}

2

-

{3}

Page 13: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 13

Movimientos del AFD

a a b b

0 -> 1 -> 1 -> 2 -> 3

a a b a

0 -> 1 -> 1 -> 2 -> 1

No existen más caminos para las cadenas

Page 14: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 14

Diferencia Movimientos del AFN

a a b b

0 -> 0 -> 1 -> 2 -> 3

a a b a

0 -> 0 -> 0 -> 0 -> 0

a a b b

0 -> 0 -> 0 -> 0 -> 0

Page 15: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 15

Implementación

Está claro que la construcción de un AFN es más sencilla y directa que la de un AFD, sin embargo la implementación en un programa de computador podría resultar en una simulación bastante dificultosa debido al hecho de que en la mayoría de los casos se debería probar todos los caminos antes de decidir si una cadena pertenece o no al lenguaje.

Por lo tanto, mediante un método denominado construcción de subconjuntos de Thompson, convertimos un AFN en AFD y así podemos aplicar el algoritmo que se mostró al principio del capítulo.

Page 16: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 16

Conversión de un AFN en AFD

Construcción de subconjuntos de Thompson

Informalmente el proceso de transformación de un AFN en AFD se puede describir de la siguiente forma:

Paso 1:

Se calcula el conjunto cerradura-ε( s0), i.e. el conjunto de todos los estados posibles que son alcanzables solo con transiciones ε desde el estado s0, incluido el mismo.

Page 17: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 17

cerradura- ε({0}) = {0, 1, 2, 4, 7}

Inicio

2

a

3

4

b

5

6 1

7 0

8 10 9

a b b

Page 18: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 18

Paso 2:

Se calcula el conjunto cerradura- ε( mueve( A, a)) donde A representa el conjunto creado en el paso 1, a representa cada letra del alfabeto y mueve( A, a) es el conjunto de estados que se pueden alcanzar desde A con a.

Page 19: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 19

mueve( { 0, 1, 2, 4, 7}, a)) = { 3, 8}

Inicio

2

a

3

4

b

5

6 1

7 0

8 10 9

a b b

Page 20: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 20

cerradura- ε({3, 8}) = {1, 2, 3, 4, 6, 7, 8}

Inicio

2

a

3

4

b

5

6 1

7 0

8 10 9

a b b

Page 21: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 21

Paso 3: el paso 2 se repite hasta que no puedan crearse nuevos conjuntos.

a b

{0 , 1 , 2 , 4 , 7 } {1 , 2 , 3 , 4 , 6 , 7 , 8 } {1 , 2 , 4 , 5 , 6 , 7 }

{1 , 2 , 3 , 4 , 6 , 7 , 8 } {1 , 2 , 3 , 4 , 6 , 7 , 8 } {1 , 2 , 4 , 5 , 6 , 7 , 9 }

{1 , 2 , 4 , 5 , 6 , 7 } {1 , 2 , 3 , 4 , 6 , 7 , 8 } {1 , 2 , 4 , 5 , 6 , 7 }

{1 , 2 , 4 , 5 , 6 , 7 , 9 } {1 , 2 , 3 , 4 , 6 , 7 , 8 } {1 , 2 , 4 , 5 , 6 , 7 , 1 0 }

{1 , 2 , 4 , 5 , 6 , 7 , 1 0 } {1 , 2 , 3 , 4 , 6 , 7 , 8 } {1 , 2 , 4 , 5 , 6 , 7 }

Page 22: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 22

Los conjuntos creados representan los estados del AFD. Aquellos conjuntos que contengan estados finales del AFN se consideran finales para el AFD.

a b

A B C

B B D

C B C

D B E

E B C

Page 23: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 23

AFD de (a|b)*abb

a

Inicio

D a b B A E

a

b

b

b

a

C

a

b

Page 24: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 24

Minimización del número de estados

a b

A B C

B B D

C B C

D B E

E B C

Page 25: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 25

Resultado de la minimización

a b

A B A

B B D

D B E

E B A

Page 26: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 26

AFD (a|b)*abb

a

Inicio

D a b

B A E

a

b b

b

a

Page 27: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 27

Minimizando el AFN

Inicio

2

a

3

4

b

5

6 1

7 0

8 10 9

a b b

Page 28: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 28

AFN sin transiciones vacías

0 1 2 3 Inicio

a

a

b

b b

Page 29: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 29

Aplicando la transformación

a b

A = {0 } {0 , 1 } = B {0 } = A

B = {0 , 1 } {0 , 1 } = B {0 , 2 } = C

C = {0 , 2 } {0 , 1 } = B {0 , 3 } = D

D = {0 , 3 } {0 , 1 } = B {0 } = A

Page 30: Autómatas Finitos Deterministasjaguila/Compilers/T06_Slides_AFD.pdf · 29/08/2019 Autómatas finitos deterministas 16 Conversión de un AFN en AFD Construcción de subconjuntos de

29/08/2019 Autómatas finitos deterministas 30

AFD (a|b)*abb

a

Inicio

C a b

B A D

a

b b

b

a