Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de...

61
Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 06 Autômatos Finitos Determinísticos [email protected]

Transcript of Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de...

Page 1: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Universidade Federal de Alfenas

Linguagens Formais e Autômatos

Aula 06 – Autômatos Finitos Determiní[email protected]

Page 2: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Últimas aulas...

• Linguagens Formais vs Linguagens Naturais

Page 3: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Últimas aulas...

• Linguagens Formais vs Linguagens Naturais

• Gramáticas

▫ G = (V, , R, P)

V

R

P

Page 4: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Últimas aulas...

• Linguagens Formais vs Linguagens Naturais

• Gramáticas

▫ G = (V, , R, P)

V

R

P

9|8|7|6|5|4|3|2|1|0

|

|)(

||

:

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

},,,{

),,,(

D

DDNN

NPT

TTPTPP

regrasascontémR

DNTPV

PRVG

Page 5: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

• Existem dois tipos de máquinas de estados finitos:

Page 6: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

• Existem dois tipos de máquinas de estados finitos:

▫ Transdutoras:

São máquinas com entrada e saída. A saída pode ser considerada uma saída qualquer.

Page 7: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

• Existem dois tipos de máquinas de estados finitos:

▫ Transdutoras:

São máquinas com entrada e saída. A saída pode ser considerada uma saída qualquer.

▫ Reconhecedoras:

São máquinas com duas saídas possíveis.

Verdadeiro ou falso.

Page 8: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

• Aos AFs são bons modelos para computadores com uma quantidade extremamente limitada de memória;

Page 9: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

• Aos AFs são bons modelos para computadores com uma quantidade extremamente limitada de memória;

• Com esta limitação, eles reconhecem um conjunto limitado de linguagens:

▫ Reconhece as linguagensregulares (LR).

P(Σ*)

Recursivamente enumeráveis

Recursivas

Sensíveis ao contexto

regularesLivres do contexto

Regulares

Page 10: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

• Diante do fato que AFs possuem memória limitada, surge a pergunta:

Page 11: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

• Diante do fato que AFs possuem memória limitada, surge a pergunta:

O que um computador pode fazer com uma memória tão pequena?

Page 12: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

• O controlador de porta automática é um exemplo deste tipo de dispositivo, geralmente encontrado em supermercados e restaurantes;

Page 13: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

Porta automática

fechada

Page 14: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

Porta automática

aberta

Page 15: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

fechada aberta

AtrásAmbos

Nenhum

FrenteAtrás

Ambos

Frente

Nenhum

Page 16: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (AFs)

Nenhum Frente Atrás Ambos

Fechado Fechado Aberto Fechado Fechado

Aberto Fechado Aberto Aberto Aberto

Tabela de transição de estados

sinal de entrada

estado

Page 17: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (Afs)

• Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com apenas um bit de memória, capaz de registrar em qual dos dois estados o controlador está.

Page 18: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (Afs)

• Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com apenas um bit de memória, capaz de registrar em qual dos dois estados o controlador está.

• Outros, e inúmeros sistemas podem ser descritos através de autômatos finitos.

Page 19: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (Afs)

• Vamos dar uma olhada mais cuidadosa em autômatosfinitos com uma visão matemática;

Page 20: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos (Afs)

• Vamos agora dar uma olhada mais cuidadosa em autômatos finitos com uma visão matemática;

• Uma definição precisa para descrever e manipular autômatos finitos.

Page 21: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômato Finito Determinístico

Page 22: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Um autômatos finito determinístico é uma estrutura matemática constituída por três tipos de entidades:

Page 23: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Um autômatos finito determinístico é uma estrutura matemática constituída por três tipos de entidades:

• Um conjunto de estados;

Page 24: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Um autômatos finito determinístico é uma estrutura matemática constituída por três tipos de entidades:

• Um conjunto de estados;

• Um alfabeto;

Page 25: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Um autômatos finito determinístico é uma estrutura matemática constituída por três tipos de entidades:

• Um conjunto de estados;

• Um alfabeto;

• Um conjunto de transições;

Page 26: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Dos estados, destacamos um como estado inicial;

Page 27: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Dos estados, destacamos um como estado inicial;

• Destacamos também um conjunto de estados como estados finais;

Page 28: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Dos estados, destacamos um como estado inicial;

• Destacamos também um conjunto de estados como estados finais;

• O conjunto de transições é definido através de uma função.

Page 29: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Um autômato finito é definido pela tupla:

),,,,( FiEAFD

Page 30: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Um autômato finito é definido pela tupla:

• E: conjunto finito não vazio de estados;

),,,,( FiEAFD

Page 31: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Um autômato finito é definido pela tupla:

• E: conjunto finito não vazio de estados;

• : conjunto que define o alfabeto;

),,,,( FiEAFD

Page 32: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Um autômato finito é definido pela tupla:

• E: conjunto finito não vazio de estados;

• : conjunto que define o alfabeto;

• : E x E: uma função de transição;

),,,,( FiEAFD

Page 33: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Um autômato finito é definido pela tupla:

• E: conjunto finito não vazio de estados;

• : conjunto que define o alfabeto;

• : E x E: uma função de transição;

• i E: estado inicial;

),,,,( FiEAFD

Page 34: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Um autômato finito é definido pela tupla:

• E: conjunto finito não vazio de estados;

• : conjunto que define o alfabeto;

• : E x E: uma função de transição;

• i E: estado inicial;

• F: um subconjunto de E, que representa o conjunto de estados finais.

),,,,( FiEAFD

Page 35: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Exemplo de AFD:e1

a,b

e2c

),,,,(1 FiEM

Page 36: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Exemplo de AFD:e1

a,b

e2c

?

?

?

?

?

F

i

E

),,,,(1 FiEM

Page 37: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Exemplo de AFD:e1

a,b

e2c

?

?

?

?

},{ 21

F

i

eeE

),,,,(1 FiEM

Page 38: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Exemplo de AFD:e1

a,b

e2c

?

?

?

},,{

},{ 21

F

i

cba

eeE

),,,,(1 FiEM

Page 39: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Exemplo de AFD:e1

a,b

e2c

?

?

}),(;),(;),{(

},,{

},{

211111

21

F

i

eceebeeae

cba

eeE

),,,,(1 FiEM

Page 40: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Exemplo de AFD:e1

a,b

e2c

?

}),(;),(;),{(

},,{

},{

1

211111

21

F

ei

eceebeeae

cba

eeE

),,,,(1 FiEM

Page 41: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Exemplo de AFD:e1

a,b

e2c

),,,,(1 FiEM

}{

}),(;),(;),{(

},,{

},{

2

1

211111

21

eF

ei

eceebeeae

cba

eeE

Page 42: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

• É comum encontrarmos a representação matricial para descrever :

Autômatos Finitos Determinístico (AFD)

3333

3332

2111

eeee

eeee

eeee

cba

EE :e1

a,b

e2c

Page 43: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

• É comum encontrarmos a representação matricial para descrever :

Autômatos Finitos Determinístico (AFD)

3333

3332

2111

eeee

eeee

eeee

cba

EE :e1

a,b

e2c

e3 representa um estado de erro que nem sempre é descrito

nas imagens

Page 44: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

e1

a,b

e2c

e1

a,b

e2c

e3

a,b,c

a,b,c

Page 45: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Se L é o conjunto de todas as palavras/cadeias que M1

aceita, dizemos:

• L é a linguagem da máquina M1.

e1

a,b

e2c

),,,,(1 FiEM

Page 46: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Se L é o conjunto de todas as palavras/cadeias que M1

aceita, dizemos:

• L é a linguagem da máquina M1.

• Dizemos que M1 reconhece L ou

• M1 aceita L.

e1

a,b

e2c

),,,,(1 FiEM

Page 47: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• A palavra/cadeia

“c”

é reconhecida pela máquina M1?

e1

a,b

e2c

),,,,(1 FiEM

Page 48: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• A palavra/cadeia

“c”

é reconhecida pela máquina M1?

• “abc”?

e1

a,b

e2c

),,,,(1 FiEM

Page 49: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• A palavra/cadeia

“c”

é reconhecida pela máquina M1?

• “abc”?

• “ababc”?

e1

a,b

e2c

),,,,(1 FiEM

Page 50: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• A palavra/cadeia

“c”

é reconhecida pela máquina M1?

• “abc”?

• “ababc”?

• “bc”? e1

a,b

e2c

),,,,(1 FiEM

Page 51: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• A palavra/cadeia

“c”

é reconhecida pela máquina M1?

• “abc”?

• “ababc”?

• “bc”?

• “ca“?

e1

a,b

e2c

),,,,(1 FiEM

Page 52: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Qual linguagem M1 aceita?

e1

a,b

e2c

),,,,(1 FiEM

Page 53: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Qual linguagem M1 aceita?

• L={a,b}*{c}e1

a,b

e2c

),,,,(1 FiEM

Page 54: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Exemplos de AFDs

Page 55: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Definição informal de um linguagem:

• Toda palavra w de L possui um número impar de zeros e um número ímpar de uns;

Page 56: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Definição informal de um linguagem:

• Toda palavra w de L possui um número impar de zeros e um número ímpar de uns;

• Usando a notação de conjuntos, mas ainda com informalidade da língua portuguesa:

})()(|{ 1 imparétambémwneimparéwnwL o

Page 57: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Usando um autômato para descrever L:

})()(|{ 1 imparétambémwneimparéwnwL o

p p i p

1

0

0

1

p i

1 1

0

0i i

Page 58: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Autômatos Finitos Determinístico (AFD)

• Usando um autômato para descrever L:

})()(|{ 1 imparétambémwneimparéwnwL o

p p i p

1

0

0

1

p i

1 1

0

0i i

Repare que o nome dos estados auxilia no entendimento do

autômato.

Page 59: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Exercícios

• Descreva um autômato para cada item, para reconhecer as seguintes linguagens regulares:

▫ L1 = {111}

▫ L2 = {111}{222}

▫ L3 = {111,222,12}

▫ L4 = {111,222,12}

▫ L5 = {w{a,b}*}

▫ L6 = {w{a,b}*|w começa com a}

▫ L7 = {w{a,b}*|w começa com a e tem tamanho par}

▫ L8 = {w{a,b}*||w|3}

▫ L9 = {w{a,b}*|w termina com 3 b’s}

▫ L10 = {w{a,b}*|w começa com a e termina com a}

Page 60: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Leitura para próxima aula

• SIPSER, Michael. Introdução à Teoria da Computação. 2a ed.:São Paulo, Thomson, 2007.

▫ 1.1 Linguagens Regulares Projetando autômatos finitos

As operações regulares

• VIEIRA, Newton José. Introdução aos Fundamentos da Computação: Linguagens e Máquinas. 1a ed.: Rio de Janeiro: Thomson, 2006.

▫ 2.2.2 Minimização de AFDs

▫ 2.2.3 Algumas propriedades dos AFDs

Page 61: Linguagens Formais e Autômatos€¦ · Autômatos Finitos (Afs) •Pensar em um controlador de parta como um autômato finito é útil porque este é capaz de ser implementado com

Bibliografia

• SIPSER, Michael. Introdução à Teoria da Computação. 2a ed.:São Paulo, Thomson, 2007.

• VIEIRA, Newton José. Introdução aos Fundamentos da Computação: Linguagens e Máquinas. 1a ed.: Rio de Janeiro: Thomson, 2006.