Download - Linguagens e Programação Automátos Finitosproenca/dump/LPROG/pptAutomatosFinitos.pdf · Conversão para AFD 1. Criação da tabela de transições Paulo Proença – [email protected]

Transcript

Linguagens e ProgramaçãoAutomátos Finitos

Paulo Proença – [email protected]

LPROG

Autómatos finitos

Formalismo, que permite representar de uma forma clara, um qualquer processo composto por um conjunto de estados e transições entre esses estados.

16 de março de 2016Paulo Proença – [email protected]

LPROG

Representação formal

𝐴𝐴 = (𝑆𝑆, Σ, 𝑠𝑠0,𝐹𝐹, 𝛿𝛿)

S é um conjunto finito de estados não vazio Σ é o alfabeto de entrada s0 é o estado inicial F é o conjunto de estados finais δ é a função de transição

• Recebe como argumentos– um estado– um símbolo de entrada

• Devolve um novo estado

16 de março de 2016Paulo Proença – [email protected]

LPROG

Representação formal

Exemplo: AF capaz de processar números binários terminados em 10

Expressão regular: (0|1)*10

Autómato Finito: 𝐴𝐴 = ( 𝑠𝑠0, 𝑠𝑠2, 𝑠𝑠2 , 0,1 , 𝑠𝑠0, 𝑠𝑠2 , 𝛿𝛿)

𝛿𝛿 𝑠𝑠0, 0 = {𝑠𝑠0}𝛿𝛿 𝑠𝑠0, 1 = {𝑠𝑠0, 𝑠𝑠1}𝛿𝛿 𝑠𝑠1, 0 = {𝑠𝑠2}

16 de março de 2016Paulo Proença – [email protected]

LPROG

Representação de um AF

Tabela de transições

Representação gráfica

16 de março de 2016Paulo Proença – [email protected]

0 1→s0 {s0} {s0, s1}

s1 {s2} ∅

*s2 ∅ ∅

LPROG

Exercícios Propostos1. Para a linguagem constituída por todas as strings

no alfabeto {a, b, c, d} em que o primeiro “b” (se existir) é precedido de um “a”;

a) Represente graficamente o autómato capaz de reconhecer a linguagem

16 de março de 2016Paulo Proença – [email protected]

(a|c|d)*(ab(a|b|c|d)*)?

LPROG

Exercícios Propostos1. Para a linguagem constituída por todas as strings

no alfabeto {a, b, c, d} em que o primeiro “b” (se existir) é precedido de um “a”;

b) Defina formalmente o autómato de acordo com a fórmula 𝐴𝐴 = (𝑆𝑆, Σ, 𝑠𝑠0,𝐹𝐹, 𝛿𝛿)

16 de março de 2016Paulo Proença – [email protected]

A=( {q0,q1,q2},{a,b,c,d},q0,{q0,q2},d)

d(q0,a)={q0,q1}, d(q0,c)={q0}, d(q0,d)={q0},d(q1,b)={q2},d(q2,a)={q2},d(q2,b)={q2}, d(q2,c)={q2}, d(q2,d)={q2}

LPROG

Exercícios Propostos1. Para a linguagem constituída por todas as strings

no alfabeto {a, b, c, d} em que o primeiro “b” (se existir) é precedido de um “a”;

c) Elabore a tabela de transições respetiva

16 de março de 2016Paulo Proença – [email protected]

a b c d→*q0 {q0,q1} φ {q0} {q0}

q1 φ {q2} φ φ*q2 {q2} {q2} {q2} {q2}

LPROG

Exercícios Propostos2. Considere a seguinte expressão regular: (a|b)*abb

a) Represente graficamente o autómato correspondente

16 de março de 2016Paulo Proença – [email protected]

LPROG

Exercícios Propostos2. Considere a seguinte expressão regular: (a|b)*abb

b) Defina formalmente o autómato de acordo com a fórmula 𝐴𝐴 = (𝑆𝑆, Σ, 𝑠𝑠0,𝐹𝐹, 𝛿𝛿)

16 de março de 2016Paulo Proença – [email protected]

A=( {q0,q1,q2,q3},{a,b},q0,{q3},d)

d(q0,a)={q0,q1}, d(q0,b)={q0},d(q1,b)={q2},d(q2,b)={q3}

LPROG

Exercícios Propostos2. Considere a seguinte expressão regular: (a|b)*abb

c) Elabore a tabela de transições respetiva

16 de março de 2016Paulo Proença – [email protected]

a b→q0 {q0,q1} {q0}q1 φ {q2}q2 φ {q3}

*q3 φ φ

LPROG

Exercícios Propostos4. Represente graficamente e através da tabela de

transições, os AF capazes de reconhecer as seguintes ER e classifique-os em Determinísticos ou Não Determinísticos.a) aa*|bb*

16 de março de 2016Paulo Proença – [email protected]

a b→q0 {q1} {q2}*q1 {q1} φ*q2 φ {q2}

LPROG

Exercícios Propostos4. Represente graficamente e através da tabela de

transições, os AF capazes de reconhecer as seguintes ER e classifique-os em Determinísticos ou Não Determinísticos.b) (a|b)*abb(a|b)*

16 de março de 2016Paulo Proença – [email protected]

a b→q0 {q0,q1} {q0}q1 φ {q2}q2 φ {q3}

*q3 {q3} {q3}

LPROG

Exercícios Propostos6. Considerando o alfabeto Σ = {0,1}, represente as

seguintes linguagens utilizando um AF.a) L(A) = {u ∈ Σ*: u é um número binário múltiplo de 4}

16 de março de 2016Paulo Proença – [email protected]

0|1(0|1)*00

LPROG

Exercícios Propostos6. Considerando o alfabeto Σ = {0,1}, represente as

seguintes linguagens utilizando um AF.a) L(A) = {u ∈ Σ*: u é um número binário múltiplo de 4}b) L(A) = {u ∈ Σ*: 111 é fator de u}

16 de março de 2016Paulo Proença – [email protected]

(0|1)*111(0|1)*

LPROG

Exercícios Propostos6. Considerando o alfabeto Σ = {0,1}, represente as

seguintes linguagens utilizando um AF.a) L(A) = {u ∈ Σ*: u é um número binário múltiplo de 4}b) L(A) = {u ∈ Σ*: 111 é fator de u}c) L(A) = {u ∈ Σ*: u tem um número par de 1’s}

16 de março de 2016Paulo Proença – [email protected]

(0*10*10*)+|0*

LPROG

Exercícios Propostos6. Considerando o alfabeto Σ = {0,1}, represente as

seguintes linguagens utilizando um AF.a) L(A) = {u ∈ Σ*: u é um número binário múltiplo de 4}b) L(A) = {u ∈ Σ*: 111 é fator de u}c) L(A) = {u ∈ Σ*: u tem um número par de 1’s}d) L(A) = {u ∈ Σ*: u é vazia ou tem dígitos todos iguais, sendo de

comprimento par as sequencias de 0’s e de comprimento impar as sequencias de 1’s}

16 de março de 2016Paulo Proença – [email protected]

(00)*|1(11)*

LPROG

Exercício de Aula

Converta o seguinte AFN num AFD e minimize-o.

16 de março de 2016Paulo Proença – [email protected]

LPROG

Exercicio de Aula

1. Conversão para AFD1. Criação da tabela de transições

16 de março de 2016Paulo Proença – [email protected]

0 1→A {A,E} {A,B}B {C} φC φ {D}D {G} {G}E φ {F}F {D} φ

*G {G} {G}

LPROG

Exercicio de Aula

1. Conversão para AFD2. Definição nos novos estados

16 de março de 2016Paulo Proença – [email protected]

0 1→A AE ABAE AE ABFAB ACE AB

0 1→A {A,E} {A,B}B {C} φC φ {D}D {G} {G}E φ {F}F {D} φ

*G {G} {G}

LPROG

Exercicio de Aula

16 de março de 2016Paulo Proença – [email protected]

0 1→A AE ABAE AE ABFAB ACE ABABF ACDE ABACE AE ABDF

0 1→A {A,E} {A,B}B {C} φC φ {D}D {G} {G}E φ {F}F {D} φ

*G {G} {G}

1. Conversão para AFD2. Definição nos novos estados

LPROG

Exercicio de Aula

16 de março de 2016Paulo Proença – [email protected]

0 1→A AE ABAE AE ABFAB ACE ABABF ACDE ABACE AE ABDF

ACDE AEG ABDFGABDF ACDEG ABG

0 1→A {A,E} {A,B}B {C} φC φ {D}D {G} {G}E φ {F}F {D} φ

*G {G} {G}

1. Conversão para AFD2. Definição nos novos estados

LPROG

Exercicio de Aula

1. Conversão para AFD1. Criação da tabela de transições

16 de março de 2016Paulo Proença – [email protected]

0 1→A {A,E} {A,B}B {C} φC φ {D}D {G} {G}E φ {F}F {D} φ

*G {G} {G}

0 1→A AE ABAE AE ABFAB ACE ABABF ACDE ABACE AE ABDF

ACDE AEG ABDFGABDF ACDEG ABG*AEG AEG ABFG

*ABDFG ACDEG ABG*ACDEG AEG ABDFG*ABG ACEG ABG

LPROG

Exercicio de Aula

16 de março de 2016Paulo Proença – [email protected]

0 1→A AE ABAE AE ABFAB ACE ABABF ACDE ABACE AE ABDF

ACDE AEG ABDFGABDF ACDEG ABG*AEG AEG ABFG

*ABDFG ACDEG ABG*ACDEG AEG ABDFG*ABG ACEG ABG*ABFG ACDEG ABG*ACEG AEG ABDFG

0 1→A {A,E} {A,B}B {C} φC φ {D}D {G} {G}E φ {F}F {D} φ

*G {G} {G}

1. Conversão para AFD2. Definição nos novos estados

LPROG

Exercicio de Aula

1. Conversão para AFD3. Renomear os estados

16 de março de 2016Paulo Proença – [email protected]

0 1→A AE ABAE AE ABFAB ACE ABABF ACDE ABACE AE ABDF

ACDE AEG ABDFGABDF ACDEG ABG*AEG AEG ABFG

*ABDFG ACDEG ABG*ACDEG AEG ABDFG*ABG ACEG ABG*ABFG ACDEG ABG*ACEG AEG ABDFG

0 1→A B CB B DC E CD F CE B GF H IG J K*H H L*I J K*J H I*K M K*L J K*M H I

Reno

mea

r

LPROG

Exercicio de Aula

1. Conversão para AFD

16 de março de 2016Paulo Proença – [email protected]

0 1→A B CB B DC E CD F CE B GF H IG J K*H H L*I J K*J H I*K M K*L J K*M H I

LPROG

2. Minimização1ª Iteração

Exercicio de Aula

16 de março de 2016Paulo Proença – [email protected]

0 1→A B NF C NF

B B NF D NF

C E NF C NF

D F NF C NF

E B NF G NF

F H FI I FI

G J FI K FI

*H H FI L FI

*I J FI K FI

*J H FI I FI

*K M FI K FI

*L J FI K FI

*M H FI I FI

NF

FI

LPROG

2. Minimização1ª Iteração

Exercicio de Aula

16 de março de 2016Paulo Proença – [email protected]

0 1→A B NF C NF

B B NF D NF

C E NF C NF

D F NF C NF

E B NF G NF

F H FI I FI

G J FI K FI

*H H FI L FI

*I J FI K FI

*J H FI I FI

*K M FI K FI

*L J FI K FI

*M H FI I FI

NF

FI

N

O

LPROG

2. Minimização2ª Iteração

Exercicio de Aula

16 de março de 2016Paulo Proença – [email protected]

0 1→A B N C N

B B N D N

C E N C N

D F O C N

E B N G O

F H FI I FI

G J FI K FI

*H H FI L FI

*I J FI K FI

*J H FI I FI

*K M FI K FI

*L J FI K FI

*M H FI I FI

N

FI

O

LPROG

2. Minimização2ª Iteração

Exercicio de Aula

16 de março de 2016Paulo Proença – [email protected]

0 1→A B N C N

B B N D N

C E N C N

D F O C N

E B N G O

F H FI I FI

G J FI K FI

*H H FI L FI

*I J FI K FI

*J H FI I FI

*K M FI K FI

*L J FI K FI

*M H FI I FI

N

FI

P

QR

O

LPROG

2. Minimização3ª Iteração

Exercicio de Aula

16 de março de 2016Paulo Proença – [email protected]

0 1→A B P C P

B B P D Q

C E R C P

D F O C P

E B P G O

F H FI I FI

G J FI K FI

*H H FI L FI

*I J FI K FI

*J H FI I FI

*K M FI K FI

*L J FI K FI

*M H FI I FI

P

FI

STU

O

QR

LPROG

2. Minimização3ª Iteração

Exercicio de Aula

16 de março de 2016Paulo Proença – [email protected]

0 1→A B T C U

B B T D Q

C E R C U

D F O C U

E B T G O

F H FI I FI

G J FI K FI

*H H FI L FI

*I J FI K FI

*J H FI I FI

*K M FI K FI

*L J FI K FI

*M H FI I FI

S

FI

O

QR

TU

0 1→S T UT T QU R UQ O UR T OO FI FI

*FI FI FI

LPROG

2. Minimização

Exercicio de Aula

16 de março de 2016Paulo Proença – [email protected]

0 1→S T UT T QU R UQ O UR T OO FI FI

*FI FI FI

LPROG

Exercícios Propostos7. Converta os seguintes AFN em AFD e minimize-os.

a)

Conversão para AFD

16 de março de 2016Paulo Proença – [email protected]

0 1→A {A,B} {A}B {B,C} {A}

*C φ {C}{A,B} {A,B,C} {A}

*{B,C} {B,C} {A,C}*{A,C} {A,B} {A,C}

*{A,B,C} {A,B,C} {A,C}

0 1→A {A,B} {A}

{A,B} {A,B,C} {A}*{A,C} {A,B} {A,C}

*{A,B,C} {A,B,C} {A,C}

0 1→S0 S1 S0S1 S3 S0*S2 S1 S2*S3 S3 S2

LPROG

7. Converta os seguintes AFN em AFD e minimize-os.a)

Conversão para AFD

Exercícios Propostos

16 de março de 2016Paulo Proença – [email protected]

0 1→S0 S1 S0S1 S3 S0*S2 S1 S2*S3 S3 S2

LPROG

7. Converta os seguintes AFN em AFD e minimize-os.a)

Minimização:

Exercícios Propostos

16 de março de 2016Paulo Proença – [email protected]

0 1→S0 S1 S0S1 S3 S0*S2 S1 S2*S3 S3 S2

estados finais (F)

estados não finais (NF)

NF NF

F NF

NF F

F F

LPROG

7. Converta os seguintes AFN em AFD e minimize-os.b)

Conversão e Minimização:

Exercícios Propostos

16 de março de 2016Paulo Proença – [email protected]

LPROG

Exercícios Propostos8. Considerando o Σ={A,B,C,…,Z, a, b, c, …, z},

represente as seguintes linguagens utilizando um AF:a) L(A) = {u ∈ Σ*: u começa por um carácter minúsculo e

tem no máximo duas maiúsculas}

b) L(A) = {u ∈ Σ*: u começa por uma maiúscula e termina sempre numa vogal}

16 de março de 2016Paulo Proença – [email protected]

LPROG

Exercícios Propostos9. Considerando o Σ={0, 1, 2, 3, 4, 5, 6, 7, 8, 9},

represente as seguintes linguagens utilizando um AF:a) L(A) = {u ∈ Σ*: u é uma sequência numérica crescente}

16 de março de 2016Paulo Proença – [email protected]

LPROG

Exercícios Propostos11.Indique uma expressão regular e um autómato

finito determinístico que reconheça a mesma linguagem que o seguinte autómato finito não determinístico.

Expressão Regular: b((a|e)b)*ab

AFD:

16 de março de 2016Paulo Proença – [email protected]

LPROG

Exercícios Complementares6. Implemente um AFD para as linguagens:

a) Em Σ = {a,b,c,d}, qualquer palavra com um número par de símbolos “b”.

16 de março de 2016Paulo Proença – [email protected]

LPROG

Exercícios Complementares6. Implemente um AFD para as linguagens:

b) Em Σ = {0,1}, qualquer palavra com um número par de zeros e um número par de uns.

16 de março de 2016Paulo Proença – [email protected]

LPROG

Exercícios Complementares7. Para cada um dos seguintes AFD indique a ER:

a)

b)

16 de março de 2016Paulo Proença – [email protected]

a*b

a*bb+

LPROG

Exercícios Complementares8. Represente as seguintes linguagens por uma

expressão regular e por um automato finito deterministicoa) Para o alfabeto Σ = {0, 1}

L(A)={u∈Σ*:u começa por 1 e tem um número par de 1's}

Expressão Regular: (10*10*)+

16 de março de 2016Paulo Proença – [email protected]

AFD:

LPROG

3.3.2.a) Minimize o seguinte AFD

Exercícios Complementares

16 de março de 2016Paulo Proença – [email protected]

LPROG

3.3.2.a)Construção da Tabela de transições

Exercícios Complementares

16 de março de 2016Paulo Proença – [email protected]

0 1→A A BB C B

*C E DD F BE E D

*F A B

LPROG

3.3.2.a)1ª Iteração

Exercícios Complementares

16 de março de 2016Paulo Proença – [email protected]

0 1

NF

→A A NF B NF

B C F B NF

D F F B NF

E E NF D NF

F*C E NF D NF

*F A NF B NF

LPROG

3.3.2.a)2ª Iteração

Exercícios Complementares

16 de março de 2016Paulo Proença – [email protected]

0 1

G→A A G B H

E E G D H

HD F F B H

B C F B H

F*C E G D H

*F A G B H

LPROG

3.3.2.a)Autómato minimizado

Exercícios Complementares

16 de março de 2016Paulo Proença – [email protected]

0 1→G G HH F H

*F G H

Linguagens e ProgramaçãoAutomátos Finitos

Paulo Proença – [email protected]