BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista...

43
BCC244 Strings, Linguagens, Autômatos

Transcript of BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista...

Page 1: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

BCC244

Strings, Linguagens, Autômatos

Page 2: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Agenda

Hoje Strings Linguagens Autômato Finito Determinista

Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Page 3: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Alfabetos, Strings, LinguagensDEF: Um alfabeto é um conjunto finito

de símbolos (caracteres, letras). Um string (ou palavra) sobre é uma

sequência finita de símbolos. O string vazio é um string que não

contém nenhum símbolo, e é denotado por

Page 4: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Alfabetos, Strings, LinguagensDEF: O comprimento de um string é o

número de símbolos que ele contém (repetições são permitidas).

EX: Os comprimentos dos strings (QDD, DQD, DDQ, QQQQDD) são: 3, 3, 3, 6

Q: Qual é o comprimento de ?

Page 5: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Alfabetos, Strings, LinguagensDEF: Dados os strings u e v, denotamos

sua concatenação por uv, ou simplesmente uv.

EX: aba cate = abacate, QQDD = QQDD,

Q1: Defina concatenação recursivamente.

Q2: Obtenha uma fórmula para u v

Page 6: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Alfabetos, Strings, Linguagens

R1: v = v a:u v = a:(u v)

R2: u v u +v

Page 7: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Alfabetos, Strings, Linguagens

DEF: reverso de um string u é denotado por u R.

EX: (banana)R = ananab

DEF: denota o conjunto de todos os strings sobre o alfabeto

Uma linguagem sobre é um subconjunto de , i.e. um conjunto de strings, sendo cada um uma sequência de símbolos de

Page 8: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Alfabetos, Strings, Linguagens

EX: D, Q ,

D, Q, DD, DQ, QD, QQ,DDD, DDQ, DQD, DQQ, QDD, QDQ, QQD, QQQ,DDDD, DDDQ, …

Page 9: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

9

Operações Regulares – Tabela Resumo

Operação

Simbolo

Versão UNIX

Significado

União | casa um dos padrões

Concatenação implicito em

UNIX

casa os padrões em sequencia

Kleene-star

* *casa o padrão

0 ou mais vezes

Kleene-plus

+ +casa o padrão

1 ou mais vezes

Page 10: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

10

Operações Regulares - Concatenação

Seja:L = {aardvark, bobcat, chimpanzee}

Q: Qual é a linguagem resultante de concatenar L com ela própria:

LL ?

Page 11: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

11

Operações Regulares - Concatenação

A: LL = {aardvark, bobcat, chimpanzee}{aardvark, bobcat,

chimpanzee}

={aardvarkaardvark, aardvarkbobcat, aardvarkchimpanzee, bobcataardvark, bobcatbobcat, bobcatchimpanzee, chimpanzeeaardvark, chimpanzeebobcat,

chimpanzeechimpanzee}

Q1: O que é L ?

Q2: O que é LØ ?

Page 12: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

12

Algebra de LinguagensA1: L = L. De modo geral, é a identidade da

“algebra” de linguagens. I.e., se pensarmos na concatenação como sendo multiplicação, age como o número 1.

A2: LØ = Ø. Dualmente a , Ø age como o número zero,

obliterando qq string com o qual é concatenado.

Nota: Na analogia entre números e linguagens, a adição corresponde à união e a multiplicação corresponde à concatenação, formando assim uma “algebra”.

Page 13: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

13

Operações Regulares – Kleene-*

Computabilidade: Considere a linguagemB = { ba, na }

Q: Qual é a linguagem B * ?

Page 14: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

14

Operações Regulares – Kleene-*

A:B * = { ba, na }*= { ,

ba, na, baba, bana, naba, nana, bababa, babana, banaba, banana, nababa, nabana, nanaba, nanana, babababa, bababana, … }

Page 15: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

15

Operações Regulares – Kleene-+Kleene-+ é tal como Kleene-* exceto que o

padrão deve ocorrer pelo menos uma vez.

B+ = { ba, na }+= { ba, na, baba, bana, naba, nana, bababa, babana, banaba, banana, nababa, nabana, nanaba, nanana, babababa, bababana, … }

Page 16: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

16

Linguagens Regulares

DEF: Linguagens regulares são aquelas que podem ser geradas a partir de linguagens finitas pela aplicação de operações regulares.

Q: Podemos começar a partir de linguagens ainda mais básicas que linguagens finitas arbitrárias?

Page 17: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

17

Linguagens RegularesR: Sim. Podemos começar com linguagens que

consistem de um único string, os quais consistem de um único caractere. Essas são chamadas linguagens regulares “atômicas”.

EX: Para gerar a linguagem finita L = { banana, nab }

Podemos começar com as linguagens atômicasA = {a}, B = {b}, N = {n}.

Então podemos expressar L como:

L = (B A N A N A) (N A B )

Page 18: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

18

Exemplos de Linguagens Números primos unários:

{ 11, 111, 11111, 1111111, 11111111111, … }= {12, 13, 15, 17, 111, 113, … }= { 1p | p é um número primo }

Quadrados unários:{, 1, 14, 19, 116, 125, 136, … }= { 1n | n é um quadrado perfeito }

Strings de bits que são palíndromos:{, 0, 1, 00, 11, 000, 010, 101, 111, …} = {x {0,1}* | x = xR }

Veremos mais adiante de que classe são essas linguagens.

Page 19: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Exercícios Recomendados

Sipser pag. 26: 2, 3

Page 20: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

esta seta denota inicio

círculoduplodenotaaceita

entrada em fita lida daesquerda p/ direita

Page 21: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

Page 22: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

Page 23: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

Page 24: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

Page 25: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

Page 26: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

REJEITA!

Page 27: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Autômato Finito Determinista

0

1

0

1

01

Q: Que tipos de bitstrings são aceitos?

Page 28: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Autômato Finito Determinista

0

1

0

1

01

R: Bitstrings que representam números binários pares.

Page 29: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Autômato Finito Determinista

Exercicio: Projete uma máquina que determina quando um string de entrada é um número na base-10 divisível por 3

Qual deve ser o alfabeto?Como você pode determinar se um

número é divisível por 3?

Page 30: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Autômato Finito Determinista

Solução:

0 mod 3

1 mod 3

2 mod 30,3,6,9

0,3,6,9

0,3,6,9

1,4,7

1,4,7

1,4,7

2,5,8 2,5,8

2,5,8

Page 31: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Definição Formal de FA

DEF: Um autômato finito (determinista) (FA) consiste de um conjunto de estados Q, um alfabeto , transições rotuladas entre estados , um estado inicial q0 Q,

e um conjunto de estados de aceitação F.

M = (Q, , , q0, F )

Page 32: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Porque Determinista?

Determinista significa que existe informação suficiente para sempre determinar qual é o próximo estado para o qual vai o autômato, ao ler um dado símbolo.

Page 33: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

0 mod 3 1 mod 3

2 mod 3

0,3,6,9

0,3,6,9

0,3,6,9

1,4,7

1,4,71,4,7

2,5,8 2,5,8

2,5,8

Exercicio: Obtenha adescrição formal deste autômato.

Page 34: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Definição de FA, exemplo

Q = { 0 mod 3, 1 mod 3, 2 mod 3 } ( renomeie: {q0, q1, q2} )

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

F = { 0 mod 3 } – requer explicação adicional

Page 35: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

A função de transição Determina o estado para o qual vai o

autômato, dado o estado corrente e o símbolo corrente na entrada. I.e., dado um estado q Q e um símbolo a , define um único estado alvo q ’Q. Em outras palavras, é uma função do

produto Cartesiano Q x emQ :

QQ :δ

Page 36: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

A função de transição

?),(δ:Questão

.)5,(δ,)3,(δ ,)7,(δ

,)2,(δ,)9,(δ ,)2,(δ

122221

010020

jq

qqqqqq

qqqqqq

QQ

i

Page 37: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

A função de transição

3 mod )(),(δ jii qjq

Usualmente a função de transição nãotem uma definição tal como nesse caso,dada por uma fórmula simples.

Page 38: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Definição Formal de FA:Dinâmica

Como um FA opera sobre um string?

Existe implicitamente a noção de uma fita que contém o string. O FA lê a fita da esquerda para a direita e cada caractere faz com que o autômato vá para um novo estado, definido pela função . Quando o string é lido completamente, ele é aceito ou não, conforme o estado final do FA seja ou não um estado de aceitação.

Page 39: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Definição Formal de FA:Dinâmica

DEF: Um string u é aceito por um autômato se o caminho rotulado por u, a partir do estado inicial q0, termina em um estado de aceitação.

Nota: Para definir precisamente o que significa um caminho rotulado por um string, aplicamos repetidamente à sequência de caracteres de u, guardando a sequência de estados correspondente.

Veja Sipser para maiores detalhes.

Page 40: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Linguagem aceita por um FA

DEF: A linguagem aceita por um FA M é o conjunto de todos os strings que são aceitos por M e é denotada por L (M ).

Intuitivamente, pense em todos os possíveis caminhos que levam do estado inicial a um estado de aceitação do autômato. Então pense em todas as possíveis maneiras de rotular esses caminhos (caso existam múltiplos rótulos em algumas setas).

Page 41: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Linguagens Regulares

Veremos mais adiante que nem toda linguagem pode ser descrita como uma linguagem aceita por um FA. Uma linguagem que é aceita por algum FA exibe um alto grau de regularidade.

THM: Toda linguagem L para a qual existe

um FA M tal que L = L (M ) é uma linguagem regular

Page 42: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Exercício

Defina um FA que aceita a linguagem L sobre o alfabeto {0,1} cujos strings começam com 0 e terminam com 10 ou com 11

Page 43: BCC244 Strings, Linguagens, Autômatos. Agenda Hoje Strings Linguagens Autômato Finito Determinista Para a próxima aula: Leia até antes do Cap. 1.2 (Sipser)

Exercícios Recomendados

Sipser pags 83, 84: 1, 2, 3 e 4