Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos...

48
1 Teoria da Computação Expressões Regulares e Autômatos Finitos Thiago Alves

Transcript of Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos...

Page 1: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

1

Teoria da Computação

Expressões Regulares e Autômatos Finitos

Thiago Alves

Page 2: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

2

Introdução

Expressões Regulares e Autômatos Finitos são bem diferentes

Será que são equivalentes com relação as linguagens que geram e aceitam?

O que temos que provar?

Page 3: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

3

Introdução

Temos que mostrar que qualquer Expressão Regular pode ser convertida em um Autômato Finito que aceita a mesma linguagem que ela descreve e vice-versa

Dessa forma, também provamos que uma linguagem é regular se e somente se é gerada por um ER

Page 4: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

4

ER → AF

Como converter Expressões Regulares em Autômatos Finitos?

Page 5: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

5

ER → AF

Como converter Expressões Regulares em Autômatos Finitos?

Como converter a Expressão Regular 0 em um Autômato Finito?

Como converter a Expressão Regular 1 em um Autômato Finito?

Como converter a Expressão Regular ε em um Autômato Finito?

Page 6: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

6

ER → AF

Como converter a Expressão Regular 0+1 em um Autômato Finito?

Como converter a Expressão Regular (0+1)0 em um Autômato Finito?

Como converter a Expressão Regular ((0+1)0)* em um Autômato Finito?

Page 7: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

7

ER → AFN

Como converter expressões regulares em autômatos finitos?

Qual tipo de autômato é mais adequado?

Podemos usar a definição indutiva de expressões regulares para construir um procedimento recursivo

Page 8: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

8

ER → AFN

Se uma linguagem é gerada por uma expressão regular então a linguagem é regular

Indução na definição de ER Base: E = a L(a) = {a} Qual seria um AFN equivalente?

Page 9: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

9

ER → AFN

Indução na definição de ER Base: E = a L(a) = {a} Qual seria um AFN equivalente?

Page 10: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

10

ER → AFN

Indução na definição de ER Base: E = ε L(ε) = {ε} Qual seria um AFN equivalente?

Page 11: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

11

ER → AFN

Indução na definição de ER Base: E = ε L(ε) = {ε} Qual seria um AFN equivalente?

Page 12: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

12

ER → AFN

Indução na definição de ER Base: E = ∅ L(∅) = ∅ Qual seria um AFN equivalente?

Page 13: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

13

ER → AFN

Indução na definição de ER Base: E = ∅ L(∅) = ∅ Qual seria um AFN equivalente?

Page 14: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

14

ER → AFN

Indução na definição de ERHI:

Se E1 é uma ER então existe um AFN A1 tal que L(E1) = L(A1)

Se E2 é uma ER então existe um AFN A2 tal que L(E2) = L(A2)

Page 15: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

15

ER → AFN

Indução na definição de ERPI:

Seja E = (E1 + E2)

L(E) = L(E1) U L(E2)

E1 é ER. Pela HI, existe A1 tal que L(E1) = L(A1)

E2 é ER. Pela HI, existe A2 tal que L(E2) = L(A2)

Page 16: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

16

ER → AFN

L(E) = L(A1) U L(A2)

Como fazer um AFN A tal que L(A) = L(A1) U L(A2)?

Page 17: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

17

ER → AFN

Page 18: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

18

ER → AFN

PI: Seja E = (E1E2)

L(E) = L(E1)L(E2)

E1 é ER. Pela HI, existe A1 tal que L(E1) = L(A1)

E2 é ER. Pela HI, existe A2 tal que L(E2) = L(A2)

Page 19: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

19

ER → AFN

L(E) = L(A1)L(A2)

Como fazer um AFN A tal que L(A) = L(A1)L(A2)?

Page 20: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

20

ER → AFN

Page 21: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

21

ER → AFN

PI: Seja E = (E1*)

L(E) = L(E1)*

E1 é ER. Pela HI, existe A1 tal que L(E1) = L(A1)

L(E) = L(A1)*

Como fazer um AFN A tal que L(A) = L(A1)*?

Page 22: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

22

ER → AFN

Page 23: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

23

Exemplos

Vamos converter (ab + a)* para um AFN

Page 24: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

24

Exemplos

Vamos converter (ab + a)* para um AFN

Page 25: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

25

Exemplos

Vamos converter (ab + a)* para um AFN

Page 26: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

26

Exemplos

Vamos converter (a + b)*aba para um AFN

Page 27: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

27

Exemplos

Vamos converter (a + b)*aba para um AFN

Page 28: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

28

Exemplos

Vamos converter (a + b)*aba para um AFN

Page 29: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

29

Exemplos

Vamos converter (a + b)*aba para um AFN

Page 30: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

30

AF → ER

Temos que mostrar que qualquer autômato finito A pode ser convertido em uma expressão regular E tal que L(A) = L(E)

Qual tipo de autômato finito vamos escolher?

Page 31: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

31

AF → ER

Temos que mostrar que qualquer autômato finito A pode ser convertido em uma expressão regular E tal que L(A) = L(E)

Qual tipo de autômato finito vamos escolher? Determinístico é mais simples

Page 32: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

32

AFD → ER

Como converter autômatos finitos determinísticos em expressões regulares?

Page 33: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

33

AFD → ER

Os rótulos das transições nos caminhos entre o estado inicial e os estados finais representam as strings aceitas pelo autômato finito determinístico Vamos remover estados e trocar as

transições por expressões regulares

Page 34: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

34

AFD → ER

1) Criar um novo inicial para ter apenas transições saindo dele e tirar os laços dele

2) Criar um novo estado final para ser único e ter apenas transições chegando nele

3) Incluir transições com ∅ onde não tiver transição

Page 35: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

35

AFD → ER

Transições com múltiplos rótulos podem ser convertidas para expressões regulares usando a operação + de união

Page 36: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

36

AFD → ER

Não mostramos as transições com ∅ para não poluir a figura

Page 37: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

37

AFD → ER

Tirar um estado e adaptar as transições com expressões regulares até sobrar apenas o inicial e o final A transição entre eles é a expressão

regular equivalente ao autômato finito determinístico original

Page 38: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

38

AFD → ER

Tirar um estado e adaptar as transições com expressões regulares até sobrar apenas o inicial e o final Como adaptar as transições com

expressões regulares?

Page 39: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

39

AFD → ER

Como adaptar as transições com expressões regulares? Concatenar a expressão regular

chegando no estado com a do laço e com com a saindo do estado

Fazer a união com a expressão regular da transição já existente entre os estados

Page 40: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

40

AFD → ER

Page 41: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

41

AFD → ER

Definição da nova transição qr é o estado removido

qi, qj são os outros pares de estados

δ'(qi, qj) = δ(qi, qr)(δ(qr, qr))*δ(qr, qj) + δ(qi, qj)

Page 42: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

42

AFD → ER

Page 43: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

43

Algoritmo

Page 44: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

44

Exemplo

Converta o AFD abaixo em uma ER Criar novo estado inicial e final

Page 45: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

45

Exemplo

Remover o estado 1

Page 46: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

46

Exemplo

Remover o estado 2

Page 47: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

47

Exemplo

Remover o estado 3

Page 48: Expressões Regulares e Autômatos Finitos · 2 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens

48

Exemplo