Você está na página 1de 24

2

Sumário
FACIN-PPGCC 1. PANO DE FUNDO
2. LINGUAGENS

3. DEFINIÇÕES RECURSIVAS
Teoria da Computabilidade 4. EXPRESSÕES REGULARES

Parte I - Teoria de Autômatos 5. AUTÔMATOS FINITOS

6. GRAFOS DE TRANSIÇÃO
Ney Laert Vilar Calazans & Avelino Zorzo 7. TEOREMA DE KLEENE

8. AUTÔMATOS FINITOS COM SAÍDAS

{calazans,
calazans, zorzo
zorzo}@
}@inf.pucrs.br
inf.pucrs.br 9. LINGUAGENS REGULARES

10. LINGUAGENS NÃO-REGULARES

Última atualização – 03/09/2009 11. DECIDIBILIDADE

3 4

1. Pano de Fundo 1. Pano de Fundo

• A teoria por trás de computadores • Matemático?


– Modelos matemáticos para descrever: – Modelos, por raciocínio dedutivo  conclusões
• partes do computador – Noção de prova - fundamental
• tipos de computadores
• máquinas similares (e.g. sistemas embarcados)
• Conclusões em Teoria da Computabilidade
– O que pode ou não pode ser feito!
• Modelos matemáticos:
– Abstraem • Computadores - não mencionados
– Simplificam • Usa-se modelos matemáticos - Máquinas!
– Codificam • (Coleção de) Entradas de uma máquina
– Assim, permitem racionalizar e descobrir sobre o – Linguagem
que se modela
• antes não era claro!

1
5 6

1. Pano de Fundo 1. Pano de Fundo

• Fundamentos da Teoria da Computabilidade • Necessidade de Hilbert


• Lógica matemática – Codificar linguagem universal na qual expressar
– Teoria de conjuntos, Georg Cantor e conjuntos • algoritmos
• procedimentos Sinônimos
infinitos
• programas
– 1900 - Hilbert e seus problemas - 23 áreas
• 1931 - Kurt Gödel:
– Um dos 23 problemas - teoria de conjuntos
– Não existe algoritmo para prover provas para
– Todo resultado comprovável é verdadeiro ou
todas as asserções verdadeiras em matemática!
– Todo resultado verdadeiro é comprovável?
– Hilbert desejava - método geral de prova! • Conseqüência:
– Hilbert revisitado no século XXI: – 1 - Que asserções têm provas? (Computabilidade)
• conjunto de programas de computador para resolver – 2 - Como se pode gerar estas provas? (Algoritmo)
(quaisquer) problemas matemáticos

7 8

1. Pano de Fundo 1. Pano de Fundo

• Resultados (Church, Kleene, Post, Markov, • Em paralelo:


von Neumann e Turing): – Invenção da válvula eletrônica
– Blocos construtivos (poucos e simples) de – Segunda Guerra Mundial
modelo universal para algoritmos • Vastas somas em dinheiro
– Máquina algorítmica universal • Problema prático - quebrar o código da Enigma (Turing)

• Turing mostrou: • Começo


– Certas questões sobre a máquina a máquina não – Um teorema sobre teoremas
é capaz de responder! • Hoje
• Conseqüências: – A invenção mais usada desde a roda!
– Fim da esperança de Hilbert (definitivamente)
– Modelo de Turing pode ser construído!

2
9 10

1. Pano de Fundo 1. Pano de Fundo

• Além da lógica matemática • Áreas fundamentais de teoria da


– Linguística formal computabilidade
• O que é linguagem? – Teoria de Autômatos - ênfase aqui
• Como as pessoas as entendem?
– Teoria de Linguagens Formais
• Como as crianças as aprendem?
• Chomsky - modelos matemáticos para a descrição de – Teoria de Máquinas de Turing - ênfase aqui
linguagens
– Pensamento e aprendizado - Psicologia e
Neurologia
• McCulloch and Pitts - modelo de rede neural similar a
Turing

11 12

Sumário 2. Linguagens
1. PANO DE FUNDO
• Elementos definitórios de linguagens formais
2. LINGUAGENS
– Alfabeto - conjunto finito de símbolos
3. DEFINIÇÕES RECURSIVAS
– Palavra - seqüência finita de elementos do alfabeto
4. EXPRESSÕES REGULARES – Regras para a formação de palavras
5. AUTÔMATOS FINITOS – Sentença - seqüência finita de palavras
6. GRAFOS DE TRANSIÇÃO – Regras para a formação de sentenças
7. TEOREMA DE KLEENE
– Linguagem - conjunto de sentenças (ou de palavras)
8. AUTÔMATOS FINITOS COM SAÍDAS
• Linguagens Formais
– onde forma interessa, mais que o significado
9. LINGUAGENS REGULARES
• sintaxe interessa, não semântica
10. LINGUAGENS NÃO-REGULARES – “Eu comi três terça-feiras”  sentença correta!

11. DECIDIBILIDADE Λ) e linguagem vazia (Ø)


– conceitos de palavra vazia (Λ

3
13 14

2. Linguagens 2. Linguagens

• Linguagens Formais • Definindo Linguagens (Formais)


– Conjunto de palavras  linguagem sobre o alfabeto – Regras de verificação
de letras (conjunto finito) – Regras construtivas
– Conjunto de sentenças  linguagem sobre o • Exemplo
alfabeto de palavras (conjunto infinito) – alfabeto Σ = {x}
• eu comi uma maçã – Linguagem L1 = {x, xx, xxx, xxxx, ]} ou
• eu comi duas maçãs
– Linguagem L1 = {xn para n=1, 2, 3, ]}
• eu comi três maçãs
• etc. – segunda forma  conceito de concatenação
– associando gramática  definição finita de – outro conceito  comprimento de palavra,
linguagem infinita length(w)
• length(xxxx) = 4
Λ) = 0.
• length (Λ
• Se length(w)=0, então w= Λ

15 16

2. Linguagens 2. Linguagens

• Exemplo: linguagem Inteiros (p. 11) • Fechamento de Kleene ou Kleene star


• Função reverse – uma operação
– reverse(xxx) = xxx • Ordem lexicográfica
– reverse(145) = 541 – Σ* = {Λ
Λ 0 1 00 01 10 11 000 001 ...}
• Exemplo: linguagem PALINDROME • Kleene star de conjunto de palavras
– Σ = {a, b} – S - conjunto de palavras
– PALINDROME = {Λ Λ, e todas as palavras sobre Σ tal – S* - conjunto de todas as cadeias finitas formadas
que reverse(x)=x} pela concatenação de palavras de S
• Fechamento de Kleene – ATENÇÃO - não confundir ENGLISH-WORDS* com
ENGLISH-SENTENCES
– Dado um alfabeto Σ, a linguagem na qual qualquer
palavra (ou cadeia) sobre símbolos do alfabeto • Exemplos - S={aa b} e T={a ab}. S*, T*?
pertence a esta. Simbologia: Σ* – Fatoração de palavras e fatoração única

4
17 18

2. Linguagens 2. Linguagens
• Prova por algoritmo construtivo • Exemplo:
– Exemplo: S={xx xxx}. S* contém todas as cadeias – S={a b ab} e T={a b bb}
de x exceto a cadeia x em si. Provar! – S*=T*, porquê?
• x2 e x3 trivialmente existem em S*
• Para excluir a palavra vazia do fechamento,
• concatenando sucessivos x2 pode-se formar todas as
cadeias de comprimento par tem-se:
• concatenando sucessivos x2 a x3 pode-se formar todas as – se Σ={x}, então Σ+={x xx xxx ]} fechamento positivo
cadeias de comprimento ímpar
• Exemplo:
• Método de prova mais importante aqui! – S={w1 w2 w3}
• Se Σ=Ø, então Σ*={Λ
Λ} – S+={w1 w2 w3 w1w1 w1w2 w1w3 w2w1 w2w2 ...}
Λ}, então S*={Λ
• Se S={Λ Λ}, porque ΛΛ=Λ
ΛΛ Λ Λ, então S+={aa bbb Λ aaaa
– Se w1=aa, w2=bbb, w3=Λ
– Exceto nos dois casos acima, Kleene star é sempre aabbb ]}
conjunto infinito!

19 20

2. Linguagens Sumário
• Fechamento Kleene de um fechamento Kleene: 1. PANO DE FUNDO

– S** ou (S*)* 2. LINGUAGENS

– Teorema 3. DEFINIÇÕES RECURSIVAS


• Para qualquer conjunto S de cadeias, S*=S** 4. EXPRESSÕES REGULARES
– Prova
5. AUTÔMATOS FINITOS
• 1) Palavra em S**: formada por fatores de S*
• 2) Fator de S*: formado por fatores de S 6. GRAFOS DE TRANSIÇÃO
• 3) Palavra em S** é formada por fatores de S 7. TEOREMA DE KLEENE
• 4) palavra de S** é palavra de S*: S** ⊆ S* (Parte 1)
• 5) S ⊆ S*, pois se pode escolher como palavra qualquer 8. AUTÔMATOS FINITOS COM SAÍDAS
fator de S. 9. LINGUAGENS REGULARES
⊆ S** por raciocínio análogo (Parte 2)
• 6) S*⊆
10. LINGUAGENS NÃO-REGULARES
• 7) juntando as duas relações, tem-se S*=S** Q.E.D.
11. DECIDIBILIDADE
• Problemas: 3/7/11/17/19

5
21 22

3. Definições Recursivas 3. Definições Recursivas


• Método para definir conjuntos • Exemplo - conjunto dos pares - Definição 2
• Formado por três passos: – R1) 2 é elemento de PARES
– 1) Especificar alguns dos objetos básicos – R2) Se x e y são elementos de PARES, x+y é
– 2) Fornecer regras para construir mais objetos a elemento de PARES
partir dos básicos • Exemplo - conjunto dos inteiros positivos (N*
N*)
– 3) Estabelecer que nenhum objeto, exceto os assim – R1) 1 é elemento de INTEIROS
formados fazem parte do conjunto – R2) Se x é elemento de INTEIROS, x+1 é elemento de
• Exemplo - conjunto dos pares - Definição 1 INTEIROS
– R1) 2 é elemento de PARES • Exemplo - conjunto dos inteiros (Z)
– R2) Se x é par, x+2 é elemento de PARES – R1) 1 é elemento de INTEIROS
– R3) Todos e apenas aqueles elementos obtidos pela – R2) Se x e y são elementos de INTEIROS, x+y e x-y
aplicação de R1 e R2 são elementos de PARES são elementos de INTEIROS

23 24

3. Definições Recursivas 3. Definições Recursivas


• Exemplo - conjunto dos polinômios • Exemplo importante - expressões aritméticas
– R1) qualquer número real é elemento de POLINÔMIO – Σ={0 1 2 3 4 5 6 7 8 9 + - * / ( )}
– R2) A variável x é elemento de POLINÔMIO – R1) Qualquer número (positivo/negativo/zero) é
– R3) Se p e q são elementos de POLINÔMIO, p+q, p-q, elemento de EA
(p) e pq são elementos de POLINÔMIO – R2) Se x é elemento de EA, também o são:
• Mais exemplos - (p. 25) • (x)
• -x, se x não começa com sinal
– x+
– R3) Se x e y são elementos de EA, também o são:
– x* • x + y, dado que o primeiro símbolo em y é diferente de + e -
– xodd • x - y, dado que o primeiro símbolo em y é diferente de + e -
– INTEIROS • x*y
– S* • x/y
• x**y

6
25 26

3. Definições Recursivas Sumário


• Teoremas 2/3/4 (EA) 1. PANO DE FUNDO
2. LINGUAGENS
• Fórmulas bem formadas (WFFs)
– Σ={¬ → ( ) a b c ] y z} 3. DEFINIÇÕES RECURSIVAS

– R1) qualquer letra latina é WFF 4. EXPRESSÕES REGULARES


– R2) Se p é WFF, também o são (p) e ¬p 5. AUTÔMATOS FINITOS
– R3) Se p e q são WFFs, também o é p → q 6. GRAFOS DE TRANSIÇÃO
• Problemas: 5/7/13/15/16/19 7. TEOREMA DE KLEENE

8. AUTÔMATOS FINITOS COM SAÍDAS

9. LINGUAGENS REGULARES

10. LINGUAGENS NÃO-REGULARES

11. DECIDIBILIDADE

27 28

4. Expressões Regulares 4. Expressões Regulares


• Novo método para definir linguagens • Outros Exemplos:
• Mais preciso que uso de elipses (...) – L1 = {x xx xxx ...}  L1= language(x x+)
• Baseado no conceito de fechamento Kleene – Language(a a*b
b*) = {ΛΛ a b aa ab bb aaa aab abb bbb
aaaa ...}
• Exemplo: – Notar que a*bb* ≠ (ab
ab)*
– Λ x xx xxx ...}
L4 = {Λ
– L2={xodd} = language(x x(xx
xx)*) = language ((xx
xx)*x
x)
– O mesmo pode ser dito: dado S={x}, L4=S*
– Mas L2 ≠ language(x x*xx
xx*)
– Outra forma L4={x}*
• Nova notação: +
– Notação reduzida x* - seqüência de 0 ou mais letras
x  x* = Λ ou x ou xx ou xxx ou ] – x + y - uma das cadeias x ou y
– L4 = language(xx*) • Exemplo
• Outro exemplo: – Σ={a b c}, T={a c ab cb abb cbb abbb cbbb ...}
– L= {a ab abb abbb abbbb ...}  L= language(ab
ab*) – T=language((a a + c)b
b*)

7
29 30

4. Expressões Regulares 4. Expressões Regulares


• Para linguagens finitas:
• Definição de Expressão Regular (formal)
– L = {aaa aab aba abb baa bab bba bbb}  L=
– Símbolos de expressões regulares: letras do
language((aa + b)3)
alfabeto Σ, símbolo da palavra vazia Λ, (, ), + e *;
• A expressão (a
a + b)* representa todas as – R1) Toda letra de Σ pode ser uma expressão regular
possíveis cadeias do alfabeto {a b}, incluindo a se escrita em negrito; Λ é uma expressão regular;
cadeia vazia – R2) Se r1 e r2 são expressões regulares, também o
são:
• (r1
r1)
• r1r2
• r1 + r2
• r1*
r1
– R3) Nada mais é expressão regular.

31 32

4. Expressões Regulares 4. Expressões Regulares


• Detalhes derivados • Mais exemplos
– a+ - descartado, pois equivalente a: aa* – b* a b* a b*
– se r1=aa
r1 aa+bb, r1* é (aa
aa+b
b)*, e não aa+b
aa b* • conjunto de todas as palavras com exatamente 2 as
– linguagem vazia não incluída, formalmente, no – (a+b)* a (a+b)* b (a+b)* + (a+b)* b (a+b)* a (a+b)*
conjunto de expressões regulares, mas aceita-se: • conjunto de todas as palavras com pelo menos 1 a e pelo
menos 1 b
• para toda expressão regular r, r + φ = r e φr = φ
• igual a: (a+b)* a (a+b)* b (a+b)* + bb* aa* (Prova na p. 39)
• Exemplos – (a+b)* a (a+b)* b (a+b)* + (a+b)* b (a+b)* a (a+b)* + a*
– (a+b)* a (a+b)* + b* = (a+b)* Uma asserção pouco óbvia!!
• conjunto de todas as palavras com pelo menos 1 a
– Nem toda ER pode ser facilmente expressa em
– donde, (a+b)* = (a+b)* a (a+b)* + b* palavras, e.g.:
– mas: a* = a* + a*, a* = a* + a* + a*, a* = a* + aaa Λ + ba*) (ab*a + ba*)* b (a* + b*a) bab*
• (Λ
– (a+b)* a (a+b)* a (a+b)* = b* ab* a (a+b)* • Não existe algoritmo para achar o significado de uma ER!
• conjunto de todas as palavras com pelo menos 2 as

8
33 34

4. Expressões Regulares 4. Expressões Regulares


• Mostrando a diferença entre ER e álgebra • Definição (multiplicação de conjuntos de
– (a + b)* = (a + b)* + (a + b)* palavras)
– (a + b)* = (a + b)* + a* – Se S e T são conjuntos de palavras, define-se o
– (a + b)* = (a + b)* (a + b)* conjunto produto ST como sendo
– (a + b)* = a (a + b)* + b (a + b)* + Λ • ST = {todas as combinações de uma palavra de S
concatenada com uma palavra de T, nesta ordem}
– (a + b)* = (a + b)* ab (a + b)* + b*a*
– Exemplo: S = {a bb bab} e T = {a ab}
• Símbolo * denota (em geral) linguagem infinita • ST = {aa aab bba bbab baba babab}
– Se L é finita, ER em geral não possui *
• L = {abba baaa bbbb}  L = language (abba
abba + baaa + bbbb
bbbb)
• Mais exemplos
Λ a b ab bb abb bbb abbb bbbb ...},
– Se V = {Λ
Λ + a) b*  similar à distributividade
• V = b* + ab* ou V = (Λ
algébrica. CUIDADO!! (ab)* ≠ a*b* !!

35 36

4. Expressões Regulares 4. Expressões Regulares


• Definição (linguagem associada a uma ER) • Teorema 5 (ERs e linguagens finitas)
– Toda ER define uma linguagem - regras de obtenção: – Se L é linguagem finita, L pode ser definida por uma
• R1) linguagem associada com ER que é letra simples é ER.
aquela letra e a linguagem associada a Λ é {Λ
Λ} – Prova: basta transformar cada palavra em uma ER.
• R2) se r1 é ER associada à linguagem L1 e r2 é a ER
associada com a linguagem L2, então: • Dificuldades para entender uma ER (1)
– (i) a ER (r1
r1) (r2
r2), é associada ao produto de linguagens L1L2 – (a+b)* (aa+bb) (a+b)*
– (ii) a ER r1 + r2 é associada à união de L1 e L2 • conjunto de palavras com alguma letra dobrada
– (iii) a linguagem associada à ER (r1 r1)* é L1*
Λ+b)(ab)* (Λ
– (Λ Λ+a)
– Questões abertas: • conjunto de palavras sem nenhuma letra dobrada
• quando ERs diferentes representam a mesma linguagem?
– Algoritmo construtivo do Capítulo 11
Λ+b)(ab)* (Λ
– (a+b)* (aa+bb) (a+b)* + (Λ Λ+a) = (a+b)* !!
• toda ER  linguagem. Toda linguagem  uma ER?
– Não. Discute-se no Capítulo 10

9
37 38

4. Expressões Regulares 4. Expressões Regulares


• Dificuldades para entender uma ER (2)
Λ) (a+b)* a (a+b)*
– E = (a+b)* a (a+b)* (a+Λ
• linguagem associada --> contém pelo menos 2 as
– aplicando distributividade
• E = (a+b)* a (a+b)* a (a+b)* a (a+b)* +
(a+b)* a (a+b)* Λ (a+b)* a (a+b)*
“Em resumo, não existe (ou não se conhece) um
• primeira parte --> qualquer palavra com pelo menos 3 as
• segunda parte --> qualquer palavra com pelo menos 2 as conjunto de regras algébricas para reduzir uma
• ou seja, ER a outra equivalente.”
– E= (a+b)* a (a+b)* a (a+b)*
• Outras dificuldades
– (a+b*)* = (a+b)*, mas
– (aa+ab*)* ≠ (aa+ab)*
– (a*b*)* = (a+b)*

39 40

4. Expressões Regulares Sumário


• Mais um exemplo complicado 1. PANO DE FUNDO

Λ + a) ??
– o que produz b*(abb*)* (Λ 2. LINGUAGENS

• A linguagem de todas as palavras sem 2 as consecutivos!! 3. DEFINIÇÕES RECURSIVAS


• A linguagem EVEN-EVEN 4. EXPRESSÕES REGULARES
– E = [aa + bb + (ab + ba)(aa + bb)* (ab + ba)]* 5. AUTÔMATOS FINITOS
• A linguagem que contém todas as palavras com número par
de as e de bs 6. GRAFOS DE TRANSIÇÃO

– A ser usada com freqüência! 7. TEOREMA DE KLEENE

8. AUTÔMATOS FINITOS COM SAÍDAS


• Problemas - 5/7/14/17/18 9. LINGUAGENS REGULARES

10. LINGUAGENS NÃO-REGULARES

11. DECIDIBILIDADE

10
41 42

5. Autômatos Finitos 5. Autômatos Finitos


• Mais um método para definir linguagens! • Definição de Autômato Finito - um autômato
• Por quê finito? finito é uma tripla assim definida:
– Porque o número de estados é finito! – 1. Um conjunto finito de estados; um estado é o
• Por quê autômato? estado inicial e um subconjunto dos estados
– Porque a transição entre estados é governada (possivelmente vazio) representam estados finais;
unicamente pela suas entradas (como autômato, não – 2. Um alfabeto Σ de possíveis letras de entrada;
tem vontade própria!) – 3. Um conjunto finito de transições, que designa
• Em inglês se usa o termo em grego: qual o estado para onde ir a partir da recepção de
– um automaton uma letra de entrada, estando o autômato em um
– vários automata dado estado.

43 44

5. Autômatos Finitos 5. Autômatos Finitos

• Definição descreve o que é autômato, não • Dada uma seqüência de letras (uma palavra)
como ele funciona. Funcionamento: – autômato aceita palavra se, partindo do estado
– a partir do estado inicial, dada um seqüência de inicial, o processamento de toda a seqüência deixa
letras de entrada, o autômato transiciona entre o autômato em algum estado final.
estados, uma para cada letra processada na • Conjunto de palavras aceitas definem a
seqüência dada. linguagem aceita pelo autômato
• Exemplo de autômato finito (FA) • Autômato aceita ou rejeita palavras
– 1. S={x, y, z}; 2. Σ={a,b}; 3. Transições:
• Autômatos podem ser vistos como
• 3.1 - de x, com entrada a, vá para y. Estado inicial
• 3.2 - de x, com entrada b, vá para z. reconhecedores de linguagens
Estados finais
• 3.3 - de y, com entrada a, vá para x. • Exercício - definir uma ER para a linguagem
• 3.4 - de y, com entrada b, vá para z.
aceita para o autômato exemplo! (aa+bb)*b
b (a
a+b
b)*
• 3.5 - de z, com qualquer entrada, permaneça em z.

11
45 46

5. Autômatos Finitos 5. Autômatos Finitos

• Formatos de apresentação de autômatos • Exemplos


– tabelas de transição - para o exemplo, tem-se: – 1. Aceita (a+b)(a+b)* = (a+b)+ a
a, b
a b
x (Inicial) y z - +
y x z b
– 2. Aceita (a+b)*
z (Final) z z a, b
– diagramas de transição - para o exemplo, tem-se: +/-

a Testar funcionamento – 3. Não aceita nada (nem Λ), porquê?


x- y para as palavras: a
a a, b
- aaabba -
b b
z+ - bbaabbbb b
a b

47 48

5. Autômatos Finitos 5. Autômatos Finitos

• FAs e as linguagens definidas por eles • Exemplos


– Quando se define linguagens com ER – Linguagem sobre Σ={a,b} que aceita palavras com
• Fácil gerar palavras aceitas pela linguagem número de letras par a,b
• Difícil avaliar se dada palavra é aceita
– Oposto ocorre com FAs 1-+ 2
• Fácil avaliar se palavra pertence à linguagem a,b
• Menos fácil definir subconjunto de palavras aceitas
– Linguagem dada por a(a
a+b
b)*
– Assim questões importantes sobre máquinas
(ER/FA): b b
x- y x- y
• Dada uma linguagem, pode-se construir uma máquina? a,b a,b
• Dada uma máquina, pode-se deduzir sua linguagem? Ou
a a
a,b
z+ z+ t+
a,b a,b

12
49 50

5. Autômatos Finitos 5. Autômatos Finitos


• Exemplo: Construir linguagem sobre Σ={a,b} • Exemplo: Que linguagem é aceita pelo FA?
que aceita palavras com triplos as ou triplos bs
– 1. a a a a
- +
a
– 2. a - b a + a,b
a a
b b
- +

b b b
– 3. – A linguagem (a+b)*(aa+bb) (a+b)*
a
a a
b
- b a +
a
b b b
a,b

51 52

5. Autômatos Finitos 5. Autômatos Finitos

• Mais exemplos (páginas 64-71): • Mais exemplos (páginas 68/69/70/71):


– (a+b)(a+b)b(a+b)* – linguagem de todas as palavras que possuem dois
– baa as consecutivos
– baa + ab – linguagem de todas as palavras onde a primeira
– linguagem que aceita qualquer cadeia de as e bs letra é diferente da última
onde o número de bs é múltiplo de 3 (com e sem Λ) – EVEN-EVEN
– linguagem {ΛΛ} – FA para detectar a subcadeia “cat” em um texto em
– (a+b)*a inglês, composto de letras e espaços
– linguagem de todas as palavras que não terminam • Problemas: 2/3/4/6/7/16/17/19
com b
– linguagem de todas as palavras que possuem
número ímpar de as

13
53 54

Sumário 6. Grafos de Transição


1. PANO DE FUNDO • Mais um método para definir linguagens!
2. LINGUAGENS

3. DEFINIÇÕES RECURSIVAS

4. EXPRESSÕES REGULARES

5. AUTÔMATOS FINITOS
• Muito parecido com FAs, mas mais flexível
6. GRAFOS DE TRANSIÇÃO

7. TEOREMA DE KLEENE

8. AUTÔMATOS FINITOS COM SAÍDAS

9. LINGUAGENS REGULARES
• Mais propenso a confusões de interpretação
10. LINGUAGENS NÃO-REGULARES

11. DECIDIBILIDADE

55 56

6. Grafos de Transição 6. Grafos de Transição


• Relaxando as restrições sobre FAs:
– 1. Múltiplas letras por transição • Definição de aceitação de uma palavra por um
a
ba grafo de transição
- b + – Em um grafo de transição, quando uma palavra que
não foi completamente processada alcança um
a,b estado que ela não pode deixar porque não existe
aa,ab,bb
aresta de saída que possa ser seguida, diz-se que a
– 2. Transições implícitas
baa máquina (ou a entrada) quebra (em inglês,
- + a,b “crashes”) naquele estado. Execução então termina
a,b e a entrada é rejeitada.
Tudo mais Eqüivale a:

a,b baa
- +

14
57 58

6. Grafos de Transição 6. Grafos de Transição

• Problemas com grafos de transição (TG) • Definição de Grafo de Transição (TG)


– o TG abaixo aceita ou não a cadeia baa? – Um grafo de transição é uma tripla assim definida:
– 1. Um conjunto finito de estados; pelo menos um
a,b a, b
aa,bb estado é o estado inicial (-) e um subconjunto dos
- + estados (possivelmente vazio) representam estados
– Quantos caminhos distintos de aceitação de finais (+);
baab existem no TG abaixo? – 2. Um alfabeto Σ de possíveis letras de entrada, a
ab partir do qual se formam seqüências (“cadeias”);
ba – 3. Um conjunto finito de transições (rótulos de
- + arestas do grafo), que designa qual o estado para
onde ir a partir da recepção de uma subseqüência de
baa b letras (inclusive a seqüência vazia Λ), estando o
autômato em um dado estado.

59 60

6. Grafos de Transição 6. Grafos de Transição

• IMPORTANTE - o conceito de aceitação de • Exemplos (páginas 80-85):


palavras muda de FA para TG: – TGs com transições associadas à Λ
– Em FAs toda palavra é aceita ou rejeitada de forma – baa
determinística (todos os caminhos são – TGs com vários estados iniciais (simulados ou não)
explicitamente definidos, toda transição depende de – exemplos de TGs com L={}, L={Λ Λ}
processar exatamente uma letra do alfabeto) – (a
a+bb)*b
b
– Em TGs uma palavra é aceita se existe pelo menos – a(a
a+bb)*b
b + b(a
a+b
b)*a
a
uma maneira de processar toda a palavra de forma a – TG que aceita palavras terminadas por pelo menos 3
chegar em algum estado final. Se a mesma palavra bs consecutivos e que tem as sempre aos pares
levar a quebras (crashes) ou estados não finais,
– TG para EVEN-EVEN
estes caminhos são ignorados (dado que a primeira
– TG que aceita aa de infinitas maneiras
condição seja atendida).
• Sempre há como eliminar arestas Λ (Chap 7)

15
61 62

6. Grafos de Transição 6. Grafos de Transição


• Definição - Grafo de Transição Generalizado
• Não-determinismo
(GTG)
– a seguinte construção é possível (se não fosse,
– Um grafo de transição é uma tripla assim definida:
seria facilmente reproduzível de outras formas
– 1. Um conjunto finito de estados; pelo menos um menos claras):
estado é estado inicial (-) e um subconjunto dos
abb
estados (possivelmente vazio) são estados finais (+); ... 3 4 ...
– 2. Um alfabeto Σ de possíveis letras de entrada;
– 3. Um conjunto finito de arestas conecta alguns abb
5 ...
pares de estados, cada uma destas sendo rotulado
com uma expressão regular.
a* – o caminho para aceitar uma cadeia em um TG NÃO
a*
(ab+a)* Λ)
(b+Λ depende apenas das entradas, a máquina propicia
-
algumas determinações por si!!

63 64

6. Grafos de Transição Sumário


1. PANO DE FUNDO
• Problemas: 1/2/3/6/8/15/19 2. LINGUAGENS

3. DEFINIÇÕES RECURSIVAS

4. EXPRESSÕES REGULARES

5. AUTÔMATOS FINITOS

6. GRAFOS DE TRANSIÇÃO

7. TEOREMA DE KLEENE

8. AUTÔMATOS FINITOS COM SAÍDAS

9. LINGUAGENS REGULARES

10. LINGUAGENS NÃO-REGULARES

11. DECIDIBILIDADE

16
65 66

7. Teorema de Kleene 7. Teorema de Kleene


• Teorema 6 (Teorema de Kleene - 1956) • Estrutura da Prova:
– Qualquer linguagem que pode ser definida por: – Parte 1 - Toda linguagem que pode ser definida por
• uma expressão regular, ou um autômato finito também pode ser definida por
• um autômato finito, ou um grafo de transição.
• um grafo de transição – Parte 2 - Toda linguagem que pode ser definida por
pode ser definida por qualquer dos três métodos. um grafo de transição também pode ser definida por
• Resultado mais fundamental e mais importante uma expressão regular.
da teoria de autômatos finitos – Parte 3 - Toda linguagem que pode ser definida por
• Lógica da prova - razoavelmente complexa uma expressão regular também pode ser definida
por um autômato finito.
– para provar equivalência de três asserções
ZAPS=ZEPS=ZIPS, prova-se que:
• ZAPS ⊂ ZEPS ⊂ ZIPS ⊂ ZAPS

67 68

7. Teorema de Kleene 7. Teorema de Kleene


• Prova da Parte 1 (Toda linguagem que pode ser definida por um
• Primeiros passos do algoritmo (Parte 2). Sem
autômato finito também pode ser definida por um grafo de transição)
alterar linguagem aceita:
– Parte mais fácil (decorre das definições de FA e TG)
• Todo FA é um TG. Logo, toda L definida por um FA já está
– Transformar TG para ter apenas 1 estado inicial
automaticamente definida por um TG. – Fazer estado inicial não ter nenhuma aresta
• Prova da Parte 2 (Toda linguagem que pode ser definida por um entrando nele
grafo de transição também pode ser definida por uma expressão regular)
– Transformar TG para ter apenas 1 estado final
– Fazer estado final não ter nenhuma aresta saindo
– Algoritmo construtivo para para transformar um TG
dele
em uma expressão regular
– Para ser válido como prova todo algoritmo deve:
• valer para qualquer TG
• terminar em tempo finito (executar em número finito de
passos)

17
69 70

7. Teorema de Kleene 7. Teorema de Kleene


b
b • Segundo passo do algoritmo (Parte 2). Itera
1- 2 ...
ab 9+
com terceiro passo. Sem alterar linguagem
aa aceita:
3- aa ... ...
5- 4 – Eliminar arestas paralelas, ou seja, as que têm
aba
12+ mesma origem e mesmo destino
b r2 r1 r1+r2+r3
Torna-se: Torna-se:

Λ b
... x ... ⇒ ... x ...
1 2 ... b
ab r3
9 r1
Λ Λ
- 3 aa
...
4 ... Λ + ... 3 7 ... ⇒ ... 3
r1+r2
7 ...
Λ aa aba
12 r2
5
b

71 72

7. Teorema de Kleene 7. Teorema de Kleene

• Terceiro passo do algoritmo (Parte 2). Itera com • Terceiro passo (continuação)
segundo passo. Sem alterar linguagem aceita: 3 ...
r3
– Eliminar todos os vértices diferentes de – e +
... 1 r1 2 r4
4 ... ⇒
... 1
r1 2 r3
3 ... ⇒ ... 1
r1r3
3 ... r2
r5 ⇓
5 ...

3 ...
r1r2*r3
... 1 r1 2 r3
3 ... ⇒ ... 1
r1r2*r3
3 ...
r1r2*r4
... 1 4 ...
r2
r1r2*r5

5 ...

18
73 74

7. Teorema de Kleene 7. Teorema de Kleene


• Algoritmo construtivo (prova da Parte 2): • Prova da Parte 3 (Toda linguagem que pode ser definida por
– Passo 1 – Criar um único estado – inentrável, e um uma expressão regular também pode ser definida por um autômato finito)
único + insaível – A mais complicada
– Passo 2 – Um a um, elimine estados diferentes de – – Série de algoritmos construtivos para converter ERs
e + no TG, alterando o mesmo para manter a em FAs
linguagem intacta, segundo as regras anteriores – Um algoritmo para cada elemento definitório de
– Passo 3 – Quando dois estados são unidos por mais ERs:
de uma aresta na mesma direção, unifique-as, • letras e a palavra vazia (Regra 1)
somando seus rótulos • alternativa (+) (Regra 2)
– Passo 4 – Quando tudo que sobrar for – e + e uma • concatenação (Regra 3)
aresta os unindo, a expressão regular sobre esta • fechamento Kleene (*) (Regra 4)
aresta gera a mesma linguagem que o TG de partida. – Cada Regra - prova correspondente

75 76

7. Teorema de Kleene 7. Teorema de Kleene


• Regra 1 – Existe um FA que aceita qualquer • Regra 2 – Se existe FA1 que aceita L1=L(r1) e
letra do alfabeto e existe um FA que aceita FA2 que aceita L2=L(r2), existe FA3 que aceita
somente a palavra vazia (Λ Λ). L3=L(r1+r2), onde r1 e r2 são ERs.
• Prova: • Prova (algoritmo construtivo no livro)
– 1) se x está em Σ, então o FA abaixo aceita apenas a – Como construir FA3 de FA1 e FA2? Exemplos
palavra x. – Guia para a solução – estados de FA3 registram
Qquer letra
Qquer letra exceto x
x
onde se encontram FA1 e FA2 a cada letra
- + ...
processada
Qquer letra
– Se FA1 tem n estados e FA2 tem m estados FA3 terá
– 2) um FA que aceita apenas Λ aparece abaixo. no máximo n.m estados
Qquer letra – Cada estado de FA3 corresponde a um par de
Qquer letra estados, um de FA1 e um de FA2.
-/+

19
77 78

7. Teorema de Kleene 7. Teorema de Kleene


• Regra 3 - Se existe FA1 que aceita L1=L(r1) e • Regra 4 - Se existe FA1 que aceita L1=L(r1),
FA2 que aceita L2=L(r2), existe FA3 que aceita existe FA2 que aceita L2=L(r1*), onde r1 é ER.
L3=L(r1r2), onde r1 e r2 são ERs. • Prova – Dado um FA1 com estados x1,x2,...
• Prova – Algoritmo Construtivo – 1) Criar um estado para cada subconjunto de
• 1 – Criar um estado z para cada estado x não-final de FA1, “xizes”. Eliminar subconjuntos que contenham um
alcançado antes de alcançar qualquer estado final de FA1. estado final e não contenham o estado inicial.
• 2 – Para cada estado final de FA1, estabelecer um estado z
– 2) Para todos os estados não-vazios, desenhar uma
que expressa as opções de continuar em FA1 ou ir para FA2.
• 3 – Após alcançar um estado salta-para-FA2 qualquer estado aresta ‘a’ e uma aresta ‘b’ para toda coleção de
alcançado possui possibilidades x e y como na máquina estados alcançável no FA original a partir dos
união, com a opção adicional de que toda vez que se “xizes” componentes do estado de partida, via uma
alcança um estado final de FA1 pode-se de novo exercitar a única aresta ‘a’ ou ‘b’, respectivamente.
opção de ir para y1 (primeiro estado de FA2)
• 4 – Os estados finais são os estados z que “contêm” algum
estado final de FA2.

79 80

7. Teorema de Kleene 7. Teorema de Kleene


• Prova – Continuação • Definição de Autômato Finito Não-
– 3) Nomear o estado vazio com -/+ e o conectar a determinístico:
quaisquer estados que o estado de partida esteja – É um TG com um único estado inicial e com a
conectado por arestas ‘a’ ou ‘b’, mesmo o próprio propriedade que cada um dos rótulos de suas
estado inicial. arestas é uma única letra do alfabeto.
– 4) Colocar sinais + em todo estado contendo um • Teorema 7
componente x que é estado final no FA1
– Para todo NFA, existe um FA que aceita a mesma
linguagem.
• NFAs e o Teorema de Kleene
– NFAs e o Teorema 7 fornecem outro meio de realizar
a prova do Teorema de Kleene
• Problemas: 1/2/4/5/6/14

20
81 82

Sumário 8. Autômatos Finitos com Saída


1. PANO DE FUNDO • Em busca de um modelo (matemático) de um
2. LINGUAGENS computador
3. DEFINIÇÕES RECURSIVAS • cadeia de Entrada – programa(s) e dados
4. EXPRESSÕES REGULARES • Ler letras de um FA ≡ executar instruções,
5. AUTÔMATOS FINITOS escrever na memória externa, etc.
6. GRAFOS DE TRANSIÇÃO • Parte do etc. são as saídas!
7. TEOREMA DE KLEENE • Saída pode ser vista como parte do estado
8. AUTÔMATOS FINITOS COM SAÍDAS • Ou não! Única tarefa que máquinas realizam
9. LINGUAGENS REGULARES até agora é reconhecer uma linguagem
10. LINGUAGENS NÃO-REGULARES • Se geração de saídas for explicitada, isto
11. DECIDIBILIDADE muda!

83 84

8. Autômatos Finitos com Saída 8. Autômatos Finitos com Saída

• Definição de Máquinas de Moore (1956) – É • Definição de Máquinas de Mealy (1955) – É uma


uma quíntupla formada por: quádrupla formada por:
– 1. Um conjunto finito de estados q0, q1, q2,..., onde – 1. Um conjunto finito de estados q0, q1, q2,..., onde
q0 é o estado inicial; q0 é o estado inicial;
– 2. Um alfabeto Σ de possíveis letras de entrada; – 2. Um alfabeto Σ de possíveis letras de entrada;
– 3. Um alfabeto Γ de caracteres de saída; – 3. Um alfabeto Γ de caracteres de saída;
– 4. Uma tabela de transição, que designa para cada – 4. Uma representação pictórica, na forma de um
par (estado, letra de entrada) qual o estado para grafo onde vértices representam estados e arestas
onde ir a seguir; representam transições entre estados. Arestas são
– 5. Uma tabela de saída, que designa para cada dotadas de rótulos x/y, representando a letra de
estado qual o caractere de saída a ser impresso. entrada que produz a transição (x) e a letra de saída
gerada pela transição (y).

21
85 86

8. Autômatos Finitos com Saída 8. Autômatos Finitos com Saída


• Lembrando • Moore = Mealy
– Máquinas de Moore/Mealy não aceitam/rejeitam – Definição de equivalência – dada uma máquina de
cadeias (ação não definida) Mealy Me e uma máquina de Moore Mo, que imprime
– Saída pode funcionar para identificar tal o caractere x no estado inicial, diz-se que Me e Mo
reconhecimento são equivalentes se para qualquer cadeia de entrada
– Por exemplo, uma máquina pode escrever 1 para a cadeia de saída de Mo é exatamente x
indicar reconhecimento de palavra de uma concatenado com a cadeia de saída de Me.
linguagem e escrever 0 caso contrário. – Teorema 8
• Se Mo é uma máquina de Moore, então existe uma máquina
de Mealy Me que é equivalente a Mo.
– Teorema 9
• Para toda máquina de Mealy Me, existe uma máquina de
Moore Mo equivalente a Me.

87 88

8. Autômatos Finitos com Saída 8. Autômatos Finitos com Saída


• Prova do Teorema 8 (algoritmo construtivo) • Conceito de transdutores
– Autômatos com saídas são ditos transdutores 
a/t
a clara conexão com circuitos eletrônicos
b ⇒ b/t – Em transdutores, o número total de estados limita a
q4/t q4
c c/t quantidade de “história passada” sobre a qual o
circuito se baseia para gerar as suas saídas.
• Prova do Teorema 9 (algoritmo construtivo) a/1
– Estados – vinculados a valores armazenados em
bits de memória de um “registrador de estado”
q2_4/1
b/0 – e. g. um microprocessador com 3000 bits em seu
a/0 b
a/1 b/1 registrador de estados pode lembrar-se (no máximo)
q4 ⇒ b do que aconteceu há 23000 ciclos de relógio atrás!
a
b/1 a/1
b/1 • Problemas: 1/2/3/4/6
q1_4/0

b/1

22
89 90

Sumário 9. Linguagens Regulares


1. PANO DE FUNDO
2. LINGUAGENS
• Definição de Linguagem Regular: toda
linguagem que pode ser definida por uma
3. DEFINIÇÕES RECURSIVAS
expressão regular.
4. EXPRESSÕES REGULARES
• Teorema 10
5. AUTÔMATOS FINITOS
– Se L1 e L2 são linguagens regulares, então L1+L2,
6. GRAFOS DE TRANSIÇÃO L1L2 e L1* são linguagens regulares.
7. TEOREMA DE KLEENE • Prova
8. AUTÔMATOS FINITOS COM SAÍDAS – Baseada na prova do teorema de Kleene, uma vez
9. LINGUAGENS REGULARES que L1 e L2, sendo regulares, têm expressões
regulares que lhes geram.
10. LINGUAGENS NÃO-REGULARES

11. DECIDIBILIDADE

91 92

9. Linguagens Regulares 9. Linguagens Regulares


• Definição de Complemento de Linguagem • Teorema 12
Regular: Se L é uma linguagem regular sobre o – Se L1 e L2 são linguagens regulares, então L1 ∩ L2
alfabeto Σ, define-se seu complemento, L´ como também é linguagem regular.
sendo a linguagem de todas as cadeias de letras • Prova
de Σ que não são palavras de L. – Usando-se a Lei de de Morgan, que vale para
quaisquer conjuntos, tem-se:
• Teorema 11
• L1 ∩ L2 = (L1´ + L2´)´
– Se L é uma linguagem regular, então L´ também é • Como L1 e L2 são regulares, e seus complementos também,
uma linguagem regular. a interseção de L1 e L2 é uma linguagem regular.
• Prova • Problemas: 1/2/3/4/18
– Se L é regular, sabe-se que existe um FA que a aceita.
Construir FA´, onde a única diferença é que o(s)
estado(s) final(is) de FA não são finais em FA´ e vice-
versa. Este FA aceita L´. Logo, L´ é regular.

23
93 94

Sumário 10. Linguagens Não-Regulares


1. PANO DE FUNDO • Problemas: 1/2/5/15/16(ii)
2. LINGUAGENS

3. DEFINIÇÕES RECURSIVAS

4. EXPRESSÕES REGULARES

5. AUTÔMATOS FINITOS

6. GRAFOS DE TRANSIÇÃO

7. TEOREMA DE KLEENE

8. AUTÔMATOS FINITOS COM SAÍDAS

9. LINGUAGENS REGULARES

10. LINGUAGENS NÃO-REGULARES

11. DECIDIBILIDADE

95 96

Sumário 11. Decidibilidade


1. PANO DE FUNDO • Problemas: 1/2/3/4/5/9/10/11/12/13
2. LINGUAGENS

3. DEFINIÇÕES RECURSIVAS

4. EXPRESSÕES REGULARES

5. AUTÔMATOS FINITOS

6. GRAFOS DE TRANSIÇÃO

7. TEOREMA DE KLEENE

8. AUTÔMATOS FINITOS COM SAÍDAS

9. LINGUAGENS REGULARES

10. LINGUAGENS NÃO-REGULARES

11. DECIDIBILIDADE

24