• Nenhum resultado encontrado

Teoria da Computação – Expressões Regulares

N/A
N/A
Protected

Academic year: 2019

Share "Teoria da Computação – Expressões Regulares"

Copied!
46
0
0

Texto

(1)

Teoria da

Computação

Expressões

Regulares

Rayol de Mendonça Neto

[email protected]

sites.google.com/site/rayolfucapi/

(2)

Introdução

• AFDs, AFNs, AFNEs e AFNλs são formalismos úteis para a construção de diversas linguagens de uso prático

• As Gramáticas, por sua vez, permitem descrever facilmente linguagens artificiais usadas em

computadores, como as linguagens de programação

(3)

Introdução

• As Expressões Regulares (ERs) são uma ferramenta para a expressão de linguagens de maneira compacta

• As ERs são tão úteis na prática que são implementadas em diversas ferramentas computacionais:

• Editores de texto

• Comandos de sistemas operacionais

• Linguagens de programação

(4)

Expressões Regulares

• As ERs são representações de linguagens por meio de operações sobre conjuntos, porém permitem apenas uma pequena gama de operações

• Na forma mais simples, as ERs permitem apenas as seguintes operações

 Agrupamento

 Fecho de Kleene

 Concatenação

 União

(5)

Operadores

• representação de símbolos é feita simplesmente pelo próprio símbolo

 Exemplo: L = {0}, temos r = 0

• A representação de {λ} é feita simplesmente por λ Exemplo: L = {λ}, temos r = λ

• A concatenação, assim como na representação por conjuntos, é feita pela sequência daquilo que se quer concatenar

(6)

Operadores

• A união é representada pelo símbolo de adição(“+”)

 Exemplo 1: L = {a, b}, temos r = a+b

 Exemplo 2: L = {1, 01, 23}, temos r = 1+01+23

 Exemplo 3: L = {12} ∪ {21}, temos r = 12+21

• O agrupamento é representado por um par de parênteses

 Exemplo 1: L = {aa}({bb} {cc}), temos r = aa(bb+cc)

 Exemplo 2: L = {1}{2, 3}, temos r = 1(2+3)

(7)

Operadores

• O fecho de Kleene é representado por um asterisco (“*”)

• Exemplo 1: L = {x}*, temos r = x*

• Exemplo 2: L = {0}*{1}*, temos r = 0*1*

• Exemplo 3: L = {00}*, temos r = (00)*

• Atenção

 O fecho de Kleene tem precedência sobre a concatenação!

(8)

ER nula

• A ER que não aceita nenhuma palavra é denotada por ∅

• r = ∅ é diferente de r = λ

• Propriedades da ER nula

 A concatenação de qualquer ER com a ER nula equivale à ER nula

• r = r1 ∅ r2 ⇒ r = ∅

 A união da ER nula com qualquer outra ER não altera o resultado

• r = r1 + ∅ ⇒ r = r1

• r = r1 + r2 + ∅ + r3 ⇒ r = r1 + r2 + r3

 O fecho de Kleene sobre a ER nula gera a ER λ

(9)

Exemplos

Usando conjuntos

L = {0,1}*{λ,0,1}

L = ({01}{0,1})*

L = {01} +

L = {ab}{a,b}{aa,bb}*{aaa}

L = ({ab}{c}*)+

L = ({ab}{c}+)+

Usando ER

• ⟹ r = (0+1)*(λ+0+1)

• ⟹ r = (01(0+1))*

• ⟹ r = 01(01)*

• ⟹ r = ab(a+b)(aa+bb)*aaa

• ⟹ r = abc*(abc*)*

• ⟹ r = abcc*(abcc*)*

A forma básica das Ers não

permite repetições

(10)

Representatividade

• Uma característica importante das ERs é que elas

possuem o mesmo poder de representação de linguagens dos AFDs

• Qualquer AF estudado até agora pode ser transformado em um ER e vice-versa

• O procedimento toma por base que há apenas um estado final, identificado por f a partir de agora

• A generalização para um AF com vários estados finais será vista posteriormente

(11)

Transformação de AFs em ERs

• PASSO 1: Transformar o AF em um diagrama de ER

• Um diagrama de ER é um diagrama de estados (similar a um AF) em que as transições são feitas sobre expressões regulares, ao invés de serem feitas sobre símbolos ou palavras do alfabeto

(12)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• O objetivo é considerar todas as combinações de transições de entrada e de saída para o estado que será eliminado (aqui representado por e)

e

e1 e2

a

e2 e1

c

ac

e

e1 e2

a

e2 e1

c

ab*c b

(13)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

B

0

1 A

C D

1+2

2

0

0+1+2

2

(14)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado B (caminho A-B-C)

B

0

1 A

C D

1+2

2

0

0+1+2

2

0+1

B

A C

2

C A

1

(15)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado B (caminho A-B-A)

B

0

1

A

C D

1+2

2

0

0+1+2

2

0+1

B

A A

2

A A

0

(16)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado B (caminho D-B-A)

B

0

1

A

C D

1+2

2

0

0+1+2

2

0+1

B

D A

1+2

A D

0

(17)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado B (caminho D-B-C)

B

0

1 A

C D

1+2

2

0

0+1+2

2

0+1

B

D C

1+2

C D

1

(18)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado B

B

0

1

A

C D

1+2 2

0

0+1+2

2 0+1

C A

22*1

A A

22*0

A D (1+2)2*0

(19)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado B

B 0 1 A C D 1+2 2 0 0+1+2 2 0+1 C A 22*1 A A 22*0 A D (1+2)2*0 C D (1+2)2*1 A C D

(20)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado B

(21)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado B

(22)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado B

(23)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado B

B 0 1 A C D 1+2 2 0 0+1+2 2 0+1 C A 22*1 A A 22*0 A D (1+2)2*0 C D (1+2)2*1 A C D 0+1+2 0+1+22*0 22*1

(24)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado C

A

C D

0+1+2 0+1+22*0

22*1

(25)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado C (caminho A-C-D)

A

C D

0+1+2

0+1+22*0

22*1

0+(1+2)2*1 (1+2)2*0

C

A D

22*1

D A

0+1+2

(26)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Eliminando o estado C (caminho D-C-D)

A

C D

0+1+2

0+1+22*0

22*1

0+(1+2)2*1 (1+2)2*0

C

D 0+(1+2)2*1 D

D D

0+1+2

(27)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 Diagrama ER eliminando os estados B e C

A D

0+1+22*0

(1+2)2*0

22*1(0+1+2)

(28)

Transformação de AFs em ERs

• Possibilidade #01

 Estado final igual ao inicial

A ER resultante é r = s*

• Possibilidade #02

 Estado final diferente ao inicial

A ER resultante é r = s*t(u + vs*t)*

f

s

PASSO 3: Unindo estado inicial e final f do diagrama de ER

i f

v

t

(29)

Transformação de AFs em ERs

• PASSO 2: Eliminar estados que não são iniciais nem finais

• De volta ao exemplo

 ER resultante eliminando os estados inicial e final

A D

0+1+22*0

(1+2)2*0

22*1(0+1+2)

(0+(1+2)2*1)(0+1+2)

r = (0+1+22*0)*22*1(0+1+2)((0+(1+2)2*1)(0+1+2) + (1+2)2*0(0+1+22*0)*22*1(0+1+2))*

i f

v

t

u s

(30)

Equivalências para

simplificação

• 1. r + s = s + r

• 2. r + ∅ = r

• 3. r + r = r

• 4. rλ = λr = r

• 5. r = r =

• 6. (r + s)t = rt + st

• 7. r(s + t) = rs + rt

• 8. (r + s)* = (r*s)*r*

• 9. (r + s)* = r*(sr*)*

• 10. (rs)* = λ + r(sr)*s

• 11. r** = r*

• 12. r* = (rr)*(λ +r)

• 13. ∅* = λ

• 14. λ* = λ

• 15. r*r* = r*

• 16. rr* = r*r

• 17. (r* + s)* = (r + s)*

• 18. (r*s*)* = (r + s)*

• 19. r*(r + s)* = (r + s)*

(31)

Transformação de AFs em ERs

• Quando há vários estados finais, F = { f1, f2, ...,fn }

 1. Para cada um dos estados finais fk, considera-‐se um AF de entrada em que fk é o único estado final

 2. Obtém-se a ER equivalente a esse AF, que será chamada de rk

 3. Após calcular todas as ERs rk , obtém-se a expressão regular geral fazendo

(32)

Transformação de ERs em AFs

• O processo de transformação de ERs em AFs é bem mais

simples do que o caminho contrário

(33)

Transformação de ERs em AFs

• AF para reconhecer r = ∅

• AF para reconhecer r = λ

• AF para reconhecer r = a, sendo a ∈ Σ

(34)

Transformação de ERs em AFs

• Consequentemente,

• AF para reconhecer r = a1a2 ... an , sendo ak ∈ Σ

• AF para reconhecer r = a*, sendo a ∈ Σ

a1 a2 ... an

(35)

Transformação de ERs em AFs

• A partir dos casos básicos, já sabemos como compor AFs

para realizar as operações permitidas por ERs

 Concatenação, união e fecho de Kleene (utilizar transições λ)

(36)

Transformação de ERs em Afs

Exemplo: Transformar r = (01)*00+10*1* em um AF

• AF para 01

• AF para (01)*

• AF para 00

• AF para (01)*00

• AF para 1

• AF para 0*

• AF para 1*

• AF para 10*1*

(37)

Transformação de ERs em Afs

Exemplo: Transformar r = (01)*00+10*1* em um AF

• AF para 01

• AF para (01)*

• AF para 00

• AF para (01)*00

• AF para 1

• AF para 0*

• AF para 1*

• AF para 10*1*

• AF para (01)*00+10*1*

B

A C

(38)

Transformação de ERs em Afs

Exemplo: Transformar r = (01)*00+10*1* em um AF

• AF para 01

• AF para (01)*

• AF para 00

• AF para (01)*00

• AF para 1

• AF para 0*

• AF para 1*

• AF para 10*1*

• AF para (01)*00+10*1*

B

A C

0 1

(39)

Transformação de ERs em Afs

Exemplo: Transformar r = (01)*00+10*1* em um AF

• AF para 01

• AF para (01)*

• AF para 00

• AF para (01)*00

• AF para 1

• AF para 0*

• AF para 1*

• AF para 10*1*

• AF para (01)*00+10*1*

B

A C

0 1

λ

E D

0 0

(40)

Transformação de ERs em Afs

Exemplo: Transformar r = (01)*00+10*1* em um AF

• AF para 01

• AF para (01)*

• AF para 00

• AF para (01)*00

• AF para 1

• AF para 0*

• AF para 1*

• AF para 10*1*

• AF para (01)*00+10*1*

B

A C

0 1

λ

E D

0 0

λ

(41)

Transformação de ERs em Afs

Exemplo: Transformar r = (01)*00+10*1* em um AF

• AF para 01

• AF para (01)*

• AF para 00

• AF para (01)*00

• AF para 1

• AF para 0*

• AF para 1*

• AF para 10*1*

• AF para (01)*00+10*1*

B

A C

0 1

λ

E D

0 0

λ

F

H G

(42)

Transformação de ERs em Afs

Exemplo: Transformar r = (01)*00+10*1* em um AF

• AF para 01

• AF para (01)*

• AF para 00

• AF para (01)*00

• AF para 1

• AF para 0*

• AF para 1*

• AF para 10*1*

• AF para (01)*00+10*1*

B

A C

0 1

λ

E D

0 0

λ

F

H G

1

G

(43)

Transformação de ERs em Afs

Exemplo: Transformar r = (01)*00+10*1* em um AF

• AF para 01

• AF para (01)*

• AF para 00

• AF para (01)*00

• AF para 1

• AF para 0*

• AF para 1*

• AF para 10*1*

• AF para (01)*00+10*1*

(44)

Transformação de ERs em Afs

Exemplo: Transformar r = (01)*00+10*1* em um AF

• AF para 01

• AF para (01)*

• AF para 00

• AF para (01)*00

• AF para 1

• AF para 0*

• AF para 1*

• AF para 10*1*

• AF para (01)*00+10*1*

(45)

Exercícios

• Obtenha expressões regulares para as seguintes linguagens sobre Σ = {0, 1}:

 Conjunto de palavras com tamanho múltiplo de 3.

 Conjunto de palavras em que todo 0 é seguido de pelo menos dois 1's.

 Conjunto de palavras que começam com 1 e possuem tamanho par.

(46)

Exercícios

• Converta os seguintes autômatos em Expressões Regulares (ERs):

1 2

b

3

1

2

a

b a

a,b

b

a

Referências

Documentos relacionados

O presente relatório tem como objetivo descrever as atividades desenvolvidas nos meses de abril, maio e junho de 2007 na área de clínica médica de pequenos animais no Setor

A Série Como Montar traz um perfil de diversos ambientes de negócios para quem está em busca de oportunidades para empreender, apresentando uma visão geral de como cada segmento

O presente termo tem a finalidade de regular as relações entre a CLARO S.A., inscrita no CNPJ/MF sob o nº. O USUÁRIO está ciente e concorda que ao prosseguir a partir

Art. 08 – Serão considerados eliminados os candidatos que usarem de meios fraudulentos na inscrição, na realização das provas ou na matrícula.. 09 – Na apuração dos pontos

Deve agregar a funcionalidade de operar sozinho e/ou em rede para a gravação digital de vídeo/áudio, alteração de vídeo, detecção de movimentos, controle de

Como indica a tabela com as porcentagens das realizações das vibran- tes nas palavras analisadas (fi gura 1), há variação na produção de r-forte, mesmo no estilo monitorado como

Mestrado em: Nutrição Humana ou Nutrição Clínica ou Saúde Coletiva ou Ciências da Saúde ou Ciências ou Saúde ou Alimentos e Nutrição e Desenvolvimento na

Após a instalação da presente Assembleia Geral de Acionistas e antes da leitura da Ordem do Dia, foi informado pelo Presidente da Assembleia que, em cumprimento de