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

Post on 17-Apr-2015

111 views 1 download

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

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

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 ?

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

Alfabetos, Strings, Linguagens

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

R2: u v u +v

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

Alfabetos, Strings, Linguagens

EX: D, Q ,

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

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

10

Operações Regulares - Concatenação

Seja:L = {aardvark, bobcat, chimpanzee}

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

LL ?

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Ø ?

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”.

13

Operações Regulares – Kleene-*

Computabilidade: Considere a linguagemB = { ba, na }

Q: Qual é a linguagem B * ?

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, … }

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, … }

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?

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 )

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.

Exercícios Recomendados

Sipser pag. 26: 2, 3

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

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

Autômato Finito Determinista

0

1

0

1

1 1 0 0 1

01

REJEITA!

Autômato Finito Determinista

0

1

0

1

01

Q: Que tipos de bitstrings são aceitos?

Autômato Finito Determinista

0

1

0

1

01

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

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?

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

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 )

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.

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.

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

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 :δ

A função de transição

?),(δ:Questão

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

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

122221

010020

jq

qqqqqq

qqqqqq

QQ

i

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.

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.

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.

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).

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

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

Exercícios Recomendados

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