Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
3
1. Pano de Fundo
• A teoria por trás de computadores
– Modelos matemáticos para descrever
• partes do computador
• tipos de computadores
• máquinas similares (e.g. sistemas embarcados)
• Modelos matemáticos
– Abstraem
– Simplificam
– Codificam
– Assim, permitem racionalizar e descobrir sobre o
que se modela
• antes não era claro!
4
1. Pano de Fundo
• Matemático?
– Modelos, por raciocínio dedutivo conclusões
– Noção de prova - fundamental
• Conclusões em Teoria da Computabilidade
– O que pode ou não pode ser feito!
• Computadores - não mencionados
• Usa-se modelos matemáticos - Máquinas!
• (Coleção de) Entradas de uma máquina
– Linguagem
5
1. Pano de Fundo
• Fundamentos da Teoria da Computabilidade
• Lógica matemática
– Teoria de conjuntos, Georg Cantor e conjuntos
infinitos
– 1900 - Hilbert e seus problemas - 23 áreas
– Um dos 23 problemas - teoria de conjuntos
– Todo resultado comprovável é verdadeiro ou
– Todo resultado verdadeiro é comprovável?
– Hilbert desejava - método geral de prova!
– Hilbert revisitado no século XXI
• conjunto de programas de computador para resolver
(quaisquer) problemas matemáticos
6
1. Pano de Fundo
• Necessidade de Hilbert
– Codificar linguagem universal na qual expressar
• algoritmos
• procedimentos Sinônimos
• programas
• 1931 - Kurt Gödel
– Não existe algoritmo para prover provas para
todas as asserções verdadeiras em matemática!
• Consequências
– 1 - Que asserções têm provas? (Computabilidade)
– 2 - Como se pode gerar estas provas? (Algoritmo)
7
1. Pano de Fundo
• Resultados (Church, Kleene, Post, Markov,
von Neumann e Turing)
– Blocos construtivos (poucos e simples) de
modelo universal para algoritmos
– Máquina algorítmica universal
• Turing mostrou
– Certas questões sobre a máquina a máquina não
é capaz de responder!
• Consequências
– Fim da esperança de Hilbert (definitivamente)
– Modelo de Turing pode ser construído!
8
1. Pano de Fundo
• Em paralelo
– Invenção da válvula eletrônica
– Segunda Guerra Mundial
• Vastas somas em dinheiro
• Problema prático - quebrar o código da Enigma (Turing)
• Começo
– Um teorema sobre teoremas
• Hoje
– A invenção mais usada desde a roda!
9
1. Pano de Fundo
• Além da lógica matemática
– Linguística formal
• O que é linguagem?
• Como as pessoas as entendem?
• Como as crianças as aprendem?
• Chomsky - modelos matemáticos para a descrição de
linguagens
– Pensamento e aprendizado - Psicologia e
Neurologia
• McCulloch and Pitts - modelo de rede neural similar a
Turing
10
1. Pano de Fundo
• Áreas fundamentais de teoria da
computabilidade
– Teoria de Autômatos - ênfase aqui
– Teoria de Linguagens Formais
– Teoria de Máquinas de Turing - ênfase aqui
11
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
12
2. Linguagens
• Elementos definitórios de linguagens formais
– Alfabeto - conjunto finito de símbolos
– Palavra - sequência finita de elementos do alfabeto
– Regras para a formação de palavras
– Sentença - sequência finita de palavras
– Regras para a formação de sentenças
– Linguagem - conjunto de sentenças (ou de palavras)
• Linguagens Formais
– onde forma interessa, mais que o significado
• sintaxe interessa, não semântica
– “Eu comi três terça-feiras” sentença correta!
– conceitos de palavra vazia () e linguagem vazia (Ø)
13
2. Linguagens
• Linguagens Formais
– Conjunto de palavras linguagem sobre o alfabeto
de letras (conjunto finito)
– Conjunto de sentenças linguagem sobre o
alfabeto de palavras (conjunto infinito)
• eu comi uma maçã
• eu comi duas maçãs
• eu comi três maçãs
• etc.
– associando gramática definição finita de
linguagem infinita
14
2. Linguagens
• Definindo Linguagens (Formais)
– Regras de verificação
– Regras construtivas
• Exemplo
– alfabeto = {x}
– Linguagem L1 = {x, xx, xxx, xxxx, …} ou
– Linguagem L1 = {xn para n=1, 2, 3, …}
– segunda forma conceito de concatenação
– outro conceito comprimento de palavra,
length(w)
• length(xxxx) = 4
• length () = 0.
• Se length(w)=0, então w=
15
2. Linguagens
• Exemplo: linguagem Inteiros (p. 11)
• Função reverse
– reverse(xxx) = xxx
– reverse(145) = 541
• Exemplo: linguagem PALINDROME
– = {a, b}
– PALINDROME = {, e todas as palavras sobre tal
que reverse(x)=x}
• Fechamento de Kleene
– Dado um alfabeto , a linguagem na qual qualquer
palavra (ou string) sobre símbolos do alfabeto
pertence a esta. Simbologia: *
16
2. Linguagens
• Fechamento de Kleene ou Kleene star
– uma operação
• Ordem lexicográfica
– * = { 0 1 00 01 10 11 000 001 ...}
• Kleene star de conjunto de palavras
– S - conjunto de palavras
– S* - conjunto de todos os strings finitos formados
pela concatenação de palavras de S
– ATENÇÃO - não confundir ENGLISH-WORDS* com
ENGLISH-SENTENCES
• Exemplos – S1={aa b} e S2={a ab}. S1* = S2*?
– Fatoramento de palavras e fatoramento único
17
2. Linguagens
• Prova por algoritmo construtivo
– Exemplo: S={xx xxx}. S* contém todos os strings de
x exceto o string x em si. Provar!
• x2 e x3 trivialmente existem em S*
• concatenando sucessivos x2 pode-se formar todos os
strings de comprimento par
• concatenando sucessivos x2 a x3 pode-se formar todos os
strings de comprimento ímpar
• Método de prova mais importante aqui!
• Se =Ø, então *={}
• Se S={}, então S*={}, porque =
– Exceto nos dois casos acima, Kleene star é sempre
conjunto infinito!
18
2. Linguagens
• Exemplo:
– S={a b ab} e T={a b bb}
– S*=T*, porquê?
• Para excluir a palavra vazia do fechamento,
tem-se:
– se ={x}, então +={x xx xxx …} fechamento positivo
• Exemplo:
– S={w1 w2 w3}
– S+={w1 w2 w3 w1w1 w1w2 w1w3 w2w1 w2w2 ...}
– Se w1=aa, w2=bbb, w3=, então S+={aa bbb aaaa
aabbb …}
19
2. Linguagens
• Fechamento Kleene de um fechamento Kleene
– S** ou (S*)*
– Teorema: Para qualquer conjunto S de strings, S*=S**.
– Prova
• 1) Palavra em S**: formada por fatores de S*
• 2) Fator de S*: formado por fatores de S
• 3) Palavra em S** é formada por fatores de S
• 4) palavra de S** é palavra de S*: S** S* (Parte 1)
• 5) S S*, pois se pode escolher como palavra qualquer fator de S.
• 6) S* S** por raciocínio análogo (Parte 2)
• 7) juntando as duas relações, tem-se S*=S** Q.E.D.
• Problemas
– 3/7/12/18/19 (pp. 23-25 Rev. Ed.)
– 3/7/11/17/19 (pp. 19-20 2nd. Ed. Cap. 2)
20
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
21
3. Definições Recursivas
• Método para definir conjuntos
• Formado por três passos
– 1) Especificar alguns dos objetos básicos
– 2) Fornecer regras para construir mais objetos a
partir dos básicos
– 3) Estabelecer que nenhum objeto, exceto os assim
formados fazem parte do conjunto
• Exemplo - conjunto dos pares - Definição 1
– R1) 2 é elemento de PARES
– R2) Se x é par, x+2 é elemento de PARES
– R3) Todos e apenas aqueles elementos obtidos pela
aplicação de R1 e R2 são elementos de PARES
22
3. Definições Recursivas
• Exemplo - conjunto dos pares - Definição 2
– R1) 2 é elemento de PARES
– R2) Se x e y são elementos de PARES, x+y é
elemento de PARES
• Exemplo - conjunto dos inteiros positivos
– R1) 1 é elemento de INTEIROS
– R2) Se x é elemento de INTEIROS, x+1 é elemento de
INTEIROS
• Exemplo - conjunto dos inteiros
– R1) 1 é elemento de INTEIROS
– R2) Se x e y são elementos de INTEIROS, x+y e x-y
são elementos de INTEIROS
23
3. Definições Recursivas
• Exemplo - conjunto dos polinômios
– R1) qualquer número real é elemento de POLINÔMIO
– R2) A variável x é elemento de POLINÔMIO
– R3) Se p e q são elementos de POLINÔMIO, p+q, p-q,
(p) e pq são elementos de POLINÔMIO
• Mais exemplos - (p. 25)
– x+
– x*
– xodd
– INTEIROS
– S*
24
3. Definições Recursivas
• Exemplo importante - expressões aritméticas
– ={0 1 2 3 4 5 6 7 8 9 + - * / ( )}
– R1) Qualquer número (positivo/negativo/zero) é
elemento de EA
– R2) Se x é elemento de EA, também o são
• (x)
• -x, se x não começa com sinal
– R3) Se x e y são elementos de EA, também o são
• x + y, dado que o primeiro símbolo em y é diferente de + e -
• x - y, dado que o primeiro símbolo em y é diferente de + e -
• x*y
• x/y
• x**y
25
3. Definições Recursivas
• Teoremas 2/3/4 (EA)
• Fórmulas bem formadas (WFFs)
– ={¬ ( ) a b c … y z}
– R1) qualquer letra latina é WFF
– R2) Se p é WFF, também o são (p) e ¬p
– R3) Se p e q são WFFs, também o é p q
• Problemas
– 5/7/13/15/16/19 (pp. 35-37 Rev. Ed.)
– Os mesmos (pp. 29-30 2nd. Ed. Cap. 3)
26
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
27
4. Expressões Regulares
• Novo método para definir linguagens
• Mais preciso que uso de elipses (...)
• Baseado no conceito de fechamento Kleene
• Exemplo
– L4 = { x xx xxx ...}
– O mesmo pode ser dito: dado S={x}, L4=S*
– Outra forma L4={x}*
– Notação reduzida x* - seqüência de 0 ou mais letras
x x* = ou x ou xx ou xxx ou …
– L4 = language(x*)
• Outro exemplo
– L= {a ab abb abbb abbbb ...} L= language(ab*)
28
4. Expressões Regulares
• Outros Exemplos
– L1 = {x xx xxx ...} L1= language(x+)
– Language(a*b*) = { a b aa ab bb aaa aab abb bbb
aaaa ...}
– Notar que a*b* (ab)*
– L2={xodd} = language(x(xx)*) = language ((xx)*x)
– Mas L2 language(x*xx*)
• Nova notação (não confundir com fechamento positivo): +
– x + y - um dos strings x ou y (escolha)
• Exemplo
– ={a b c}, T={a c ab cb abb cbb abbb cbbb ...}
– T=language((a + c)b*)
29
4. Expressões Regulares
• Para linguagens finitas
– L = {aaa aab aba abb baa bab bba bbb} L=
language((a + b)3)
• A expressão (a + b)* representa todos os
possíveis strings do alfabeto {a b}, incluindo o
string vazio
30
4. Expressões Regulares
4. Expressões Regulares
• Detalhes derivados
– a+ - descartado, pois equivalente a: aa*
– se r1=aa+b, r1* é (aa+b)*, e não aa+b*
– linguagem vazia não incluída, formalmente, no
conjunto de expressões regulares, mas aceita-se
• para toda expressão regular r, r + f = r e fr = f
• Exemplos
– (a+b)* a (a+b)*
• conjunto de todas as palavras com pelo menos 1 a
– donde, (a+b)* = (a+b)* a (a+b)* + b*
– mas: a* = a* + a*, a* = a* + a* + a*, a* = a* + aaa
– (a+b)* a (a+b)* a (a+b)* = b* ab* a (a+b)*
• conjunto de todas as palavras com pelo menos 2 as
32
4. Expressões Regulares
• Mais exemplos
– b* a b* a b*
• conjunto de todas as palavras com exatamente 2 as
– (a+b)* a (a+b)* b (a+b)* + (a+b)* b (a+b)* a (a+b)*
• conjunto de todas as palavras com pelo menos 1 a e pelo
menos 1 b
• igual a: (a+b)* a (a+b)* b (a+b)* + bb* aa* (Prova na p. 39)
– (a+b)* a (a+b)* b (a+b)* + (a+b)* b (a+b)* a (a+b)* + a*
+ b* = (a+b)* Uma asserção pouco óbvia!!
– Nem toda ER pode ser facilmente expressa em
palavras, e.g.:
• ( + ba*) (ab*a + ba*)* b (a* + b*a) bab*
• Não existe algoritmo para achar o significado de uma ER!
33
4. Expressões Regulares
• Mostrando a diferença entre ER e álgebra
– (a + b)* = (a + b)* + (a + b)*
– (a + b)* = (a + b)* + a*
– (a + b)* = (a + b)* (a + b)*
– (a + b)* = a (a + b)* + b (a + b)* +
– (a + b)* = (a + b)* ab (a + b)* + b*a*
• Símbolo * denota (em geral) linguagem infinita
– Se L é finita, ER em geral não possui *
• L = {abba baaa bbbb} L = language (abba + baaa + bbbb)
• Mais exemplos
– Se V = { a b ab bb abb bbb abbb bbbb ...},
• V = b* + ab* ou V = ( + a) b* similar à distributividade
algébrica. CUIDADO!! (ab)* ≠ a*b* !!
34
4. Expressões Regulares
• Definição (multiplicação de conjuntos de
palavras)
– Se S e T são conjuntos de palavras, define-se o
conjunto produto ST como sendo
• ST = {todas as combinações de uma palavra de S
concatenada com uma palavra de T, nesta ordem}
– Exemplo: S = {a bb bab} e T = {a ab}
• ST = {aa aab bba bbab baba babab}
35
4. Expressões Regulares
• Definição (linguagem associada a uma ER)
– Toda ER define uma linguagem - regras de obtenção
• R1) linguagem associada com ER que é letra simples é
aquela letra e a linguagem associada a é {}
• R2) se r1 é ER associada à linguagem L1 e r2 é a ER
associada com a linguagem L2, então:
– (i) a ER (r1) (r2), é associada ao produto de linguagens L1L2
– (ii) a ER r1 + r2 é associada à união de L1 e L2
– (iii) a linguagem associada à ER (r1)* é L1*
– Questões abertas
• toda ER linguagem. Toda linguagem uma ER?
– Não. Discute-se no Cap 11
• quando ERs diferentes representam a mesma linguagem?
– Algoritmo construtivo do Cap 12
36
4. Expressões Regulares
• Teorema 5 (ERs e linguagens finitas)
– Se L é linguagem finita, L pode ser definida por uma ER
– Prova: basta transformar cada palavra em uma ER
• Dificuldades para entender uma ER (1)
– (a+b)* (aa+bb) (a+b)*
• conjunto de palavras com alguma letra dobrada
– (+b)(ab)* (+a)
• conjunto de palavras sem nenhuma letra dobrada
– (a+b)* (aa+bb) (a+b)* + (+b)(ab)* (+a) = (a+b)* !!
37
4. Expressões Regulares
• Dificuldades para entender uma ER (2)
– E = (a+b)* a (a+b)* (a+) (a+b)* a (a+b)*
• 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)*
• primeira parte --> qualquer palavra com pelo menos 3 as
• segunda parte --> qualquer palavra com pelo menos 2 as
• ou seja,
– E= (a+b)* a (a+b)* a (a+b)*
• Outras dificuldades
– (a+b*)* = (a+b)*, mas
– (aa+ab*)* ≠ (aa+ab)*
– (a*b*)* = (a+b)*
38
4. Expressões Regulares
4. Expressões Regulares
• Mais um exemplo complicado
– o que produz b*(abb*)* ( + a) ??
• A linguagem de todas as palavras sem 2 as consecutivos!!
• A linguagem EVEN-EVEN
– E = [aa + bb + (ab + ba)(aa + bb)* (ab + ba)]*
• A linguagem que contém todas as palavras com número par
de as e de bs
– A ser usada com frequência!
• Problemas
– 6/7/-/17/18 (pp. 60-62 Rev. Ed.)
– 5/7/14/17/18 (pp. 49-50 2nd. Ed. Cap. 4)
40
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
41
5. Autômatos Finitos
• Mais um método para definir linguagens!
• Por quê finito?
– Porque o número de estados é finito!
• Por quê autômato?
– Porque a transição entre estados é governada
unicamente pela suas entradas (como um autômato,
não tem vontade própria!)
• Em inglês se usa o termo grego
– um automaton
– vários automata
42
5. Autômatos Finitos
5. Autômatos Finitos
5. Autômatos Finitos
5. Autômatos Finitos
5. Autômatos Finitos
• Exemplos
– 1. Aceita (a+b)(a+b)* = (a+b)+ a
a, b
- +
b
– 2. Aceita (a+b)*
a, b
+/-
– 3. Não aceita nada (nem ), porquê?
a
a, b
-
b
47
5. Autômatos Finitos
5. Autômatos Finitos
• Exemplos
– Linguagem sobre ={a,b} que aceita palavras com
número de letras par a,b
1-+ 2
a,b
5. Autômatos Finitos
• Exemplo: Construir linguagem sobre ={a,b}
que aceita palavras com triplos as ou triplos bs
– 1. a a a
- +
– 2. a
a a
- +
b b b
– 3.
a
a a
b
- b a +
a
b b b
a,b
50
5. Autômatos Finitos
• Exemplo: Que linguagem é aceita pelo FA?
a
a
- b a + a,b
b b
5. Autômatos Finitos
5. Autômatos Finitos
• Problemas
– 2/3/4/6/7/17/18 (pp. 81-84 Rev. Ed.)
– 2/3/4/6/7/18;19 (pp. 71-74 2nd. Ed. Cap. 5)
53
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
54
6. Grafos de Transição
• Mais um método para definir linguagens!
6. Grafos de Transição
• Relaxando as restrições sobre FAs
– 1. Múltiplas letras por transição
a
ba
- b +
a,b
aa,ab,bb
– 2. Transições implícitas
baa
- + a,b
a,b
Tudo mais Equivale a
a,b baa
- +
56
6. Grafos de Transição
6. Grafos de Transição
baa b
58
6. Grafos de Transição
6. Grafos de Transição
6. Grafos de Transição
6. Grafos de Transição
• Definição - Grafo de Transição Generalizado
(GTG)
Um grafo de transição é uma tripla assim definida
– 1. Um conjunto finito de estados; pelo menos um
estado é estado inicial (-) e um subconjunto dos
estados (possivelmente vazio) são estados finais (+)
– 2. Um alfabeto de possíveis letras de entrada
– 3. Um conjunto finito de arestas conecta alguns
pares de estados, cada uma destas sendo rotulado
com uma expressão regular
a* a*
(ab+a)* (b+)
-
62
6. Grafos de Transição
• Não-determinismo
– a seguinte construção é possível (se não fosse,
seria facilmente reproduzível de outras formas
menos claras)
abb
... 3 4 ...
abb
5 ...
6. Grafos de Transição
• Problemas
– 1/4/6/10/-/19 (pp. 81-84 Rev. Ed.)
– 1/2/3/6/15/19 (pp. 88-91 2nd. Ed. Cap. 6)
64
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
65
7. Teorema de Kleene
• Teorema 6 (Teorema de Kleene - 1956)
– Qualquer linguagem que pode ser definida por
• uma expressão regular, ou
• um autômato finito, ou
• um grafo de transição
pode ser definida por qualquer dos três métodos
• Resultado mais fundamental e mais importante
da teoria de autômatos finitos
• Lógica da prova - razoavelmente complexa
– para provar equivalência de três asserções
ZAPS=ZEPS=ZIPS, prova-se que
• ZAPS ZEPS ZIPS ZAPS
66
7. Teorema de Kleene
• Estrutura da Prova
– Parte 1 - Toda linguagem que pode ser definida por
um autômato finito também pode ser definida por
um grafo de transição
– Parte 2 - Toda linguagem que pode ser definida por
um grafo de transição também pode ser definida por
uma expressão regular
– Parte 3 - Toda linguagem que pode ser definida por
uma expressão regular também pode ser definida
por um autômato finito
67
7. Teorema de Kleene
• Prova da Parte 1 (Toda linguagem que pode ser definida por um
autômato finito também pode ser definida por um grafo de transição)
– 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á
automaticamente definida por um TG
• Prova da Parte 2 (Toda linguagem que pode ser definida por um
grafo de transição também pode ser definida por uma expressão regular)
– Algoritmo construtivo para para transformar um TG
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)
68
7. Teorema de Kleene
7. Teorema de Kleene
b
1- b 2 ...
ab 9+
aa
3- aa ... ...
5- 4
aba
12+
b
Torna-se Torna-se
b ... b
1 2
ab
9
- 3 aa
4 ... +
...
aa aba
12
5
b
70
7. Teorema de Kleene
• Segundo passo do algoritmo (Parte 2). Itera
com terceiro passo. Sem alterar linguagem
aceita
– Eliminar arestas paralelas, ou seja, as que têm
mesma origem e mesmo destino
r2 r1 r1+r2+r3
... x ... ... x ...
r3
r1
7. Teorema de Kleene
... 1 r1 2 r3
3 ... ... 1
r1r3
3 ...
... 1 r1 2 r3
3 ... ... 1
r1r2*r3
3 ...
r2
72
7. Teorema de Kleene
... 1 r1 2 r4
4 ...
r2
r5
5 ...
3 ...
r1r2*r3
r1r2*r4 ...
... 1 4
r1r2*r5
5 ...
73
7. Teorema de Kleene
• Algoritmo construtivo (prova da Parte 2)
– Passo 1 – Criar um único estado – inentrável, e um
único + insaível
– Passo 2 – Um a um, elimine estados diferentes de –
e + no TG, alterando o mesmo para manter a
linguagem intacta, segundo as regras anteriores
– Passo 3 – Quando dois estados são unidos por mais
de uma aresta na mesma direção, unifique-as,
somando seus rótulos
– Passo 4 – Quando tudo que sobrar for – e + e uma
aresta os unindo, a expressão regular sobre esta
aresta gera a mesma linguagem que o TG de partida
74
7. Teorema de Kleene
• Prova da Parte 3 (Toda linguagem que pode ser definida por
uma expressão regular também pode ser definida por um autômato finito)
– A mais complicada
– Série de algoritmos construtivos para converter ERs
em FAs
– Um algoritmo para cada elemento definitório de
ERs:
• letras e a palavra vazia (Regra 1)
• alternativa (+) (Regra 2)
• concatenação (Regra 3)
• fechamento Kleene (*) (Regra 4)
– Cada Regra - prova correspondente
75
7. Teorema de Kleene
• Regra 1 – Existe um FA que aceita qualquer
letra do alfabeto e existe um FA que aceita
somente a palavra vazia ()
• Prova
– 1) se x está em , então o FA abaixo aceita apenas a
palavra x.
Qquer letra
Qquer letra exceto x
x
- + ...
Qquer letra
7. Teorema de Kleene
• Regra 2 – Se existe FA1 que aceita L1=L(r1) e
FA2 que aceita L2=L(r2), existe FA3 que aceita
L3=L(r1+r2), onde r1 e r2 são ERs
• Prova (algoritmo construtivo no livro)
– Como construir FA3 de FA1 e FA2? Exemplos
– Guia para a solução – estados de FA3 registram
onde se encontram FA1 e FA2 a cada letra
processada
– Se FA1 tem n estados e FA2 tem m estados FA3 terá
no máximo n.m estados
– Cada estado de FA3 corresponde a um par de
estados, um de FA1 e um de FA2
77
7. Teorema de Kleene
• Regra 3 - Se existe FA1 que aceita L1=L(r1) e
FA2 que aceita L2=L(r2), existe FA3 que aceita
L3=L(r1r2), onde r1 e r2 são ERs
• Prova – Algoritmo Construtivo
• 1 – Criar um estado z para cada estado x não-final de FA1,
alcançado antes de alcançar qualquer estado final de FA1
• 2 – Para cada estado final de FA1, estabelecer um estado z
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
alcançado possui possibilidades x e y como na máquina
união, com a opção adicional de que toda vez que se
alcança um estado final de FA1 pode-se de novo exercitar a
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
78
7. Teorema de Kleene
• Regra 4 - Se existe FA1 que aceita L1=L(r1),
existe FA2 que aceita L2=L(r1*), onde r1 é ER.
• Prova – Dado um FA1 com estados x1,x2,...
– 1) Criar um estado para cada subconjunto de
“xizes”. Eliminar subconjuntos que contenham um
estado final e não contenham o estado inicial
– 2) Para todos os estados não-vazios, desenhar uma
aresta ‘a’ e uma aresta ‘b’ para toda coleção de
estados alcançável no FA original a partir dos
“xizes” componentes do estado de partida, via uma
única aresta ‘a’ ou ‘b’, respectivamente
79
7. Teorema de Kleene
• Prova – Continuação
– 3) Nomear o estado vazio com -/+ e o conectar a
quaisquer estados que o estado de partida esteja
conectado por arestas ‘a’ ou ‘b’, mesmo o próprio
estado inicial
– 4) Colocar sinais + em todo estado contendo um
componente x que é estado final no FA1
• Problemas
– 1/2/3/4/5/6/20 (pp. 138-141 Rev. Ed.)
– 1/2/4/5/6/14 (pp. 88-91 2nd. Ed. Cap. 7)
80
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
81
8. Não-Determinismo
• Definição de Autômato Finito Não-
determinístico
– É um TG com um único estado inicial e com a
propriedade que cada um dos rótulos de suas
arestas é uma única letra do alfabeto
• Teorema 7
– 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
82
8. Não-Determinismo
• Problemas
– 5/8/9/10 (pp. 150-151 Rev. Ed.)
– - (Este Capítulo não existe na 2nd. Ed.)
83
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
84
b ⇒ b/t q4
q4/t
c c/t
b/1
90
• Problemas
– 1/2/3/4/5/6/7/8/9/10/11/14/15/16/17 (pp. 173-176 Rev. Ed.)
– 1/2/3/4/6 (pp. 162-166 – Cap 8 da 2nd. Ed. Cap. 8)
92
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
93
• Teorema 11
– Se L é uma linguagem regular, então L´ também é uma
linguagem regular
• Prova
– Se L é regular, sabe-se que existe um FA que a aceita. Dado este
FA, construa-se 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
95
• Problemas
– 1/2/3/4/18 (pp. 198-200 Rev. Ed.)
– 1/2/3/4/18 (pp. 185-186 2nd. Ed. Cap. 9)
96
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
97
• Problemas
– 4/5/6/7/8/9/16/17(ii) (pp. 217-218 Rev. Ed.)
– 1/2/5/15/16(ii) (pp. 203-205 2nd. Ed. Cap. 10)
99
Sumário
1. PANO DE FUNDO
2. LINGUAGENS
3. DEFINIÇÕES RECURSIVAS
4. EXPRESSÕES REGULARES
5. AUTÔMATOS FINITOS
6. GRAFOS DE TRANSIÇÃO
7. TEOREMA DE KLEENE
8. NÃO-DETERMINISMO
12. DECIDIBILIDADE
100
12. Decidibilidade
• Linguagens regulares são fáceis de
especificar e tratar
• Decidibilidade – perguntas a responder
1. Como decidir se duas ERs distintas definem a
mesma linguagem?
2. Como decidir se dois FAs são equivalentes?
3. Como decidir se a linguagem definida por um
FA é finita ou infinita?
12. Decidibilidade
• Em lógica matemática diz-se que um
problema é efetivamente solúvel se existe
um algoritmo que provê uma solução para
ele em um número finito de passos. Este
algoritmo é então denominada uma solução
efetiva para o problema
• E.g. a Fórmula de Bhaskara provê uma
solução efetiva para equações quadráticas
• Uma solução efetiva para um problema cuja
solução é uma resposta sim ou não é
chamado de procedimento de decisão
102
12. Decidibilidade
• Um problema que possui um procedimento
de decisão é dito ser decidível
• Exemplos introdutórios
– a(a + b)* e (b + )(baa + ba*)* definem a mesma
linguagem?
– (aa + ab + ba + bb)* e ((ba +ab)*(aa + bb)*)*
definem a mesma linguagem?
12. Decidibilidade
• Teorema 17
(i) Existe um procedimento efetivo se um FA aceita
alguma palavra
(ii) Existe um procedimento efetivo para decidir se
dois FAs são equivalentes
(iii) Existe um procedimento efetivo para decidir se
duas ERs são equivalentes
• Teorema 19
Existe um procedimento efetivo para decidir se um
dado FA aceita uma linguagem finita ou infinita
104
12. Decidibilidade
• Problemas
– 1/2/3/4/5/9/10/11/12/13 (pp. 233-237 Rev. Ed.)
– 1/2/3/4/5/9/10/11/12/13 (pp. 217-220 2nd. Ed. Cap. 11)