Escolar Documentos
Profissional Documentos
Cultura Documentos
Diógenes Furlan
Linguagens Formais
e Autômatos
Módulo 1
2016
Bibliografia
VII BIBLIOGRAFIA BÁSICA
· HOPCROFT, John E. Introdução à teoria de autômatos, linguagens e computação. Rio de Janeiro: Elsevier;
Campus, 2002. 560 p. ISBN 8535210725
· LEWIS, Harry R; PAPADIMITRIOU, Christos H. Elementos de teoria da computação. 2. ed. Porto Alegre, RS:
Bookman, 2000. 339 p. ISBN 8573075341
· MENEZES, Paulo Blauth. Linguagens formais e autômatos. 4. ed. Porto Alegre, RS: Sagra Luzzatto, 2002. 192 p.
(Série Livros didáticos n.3) ISBN: 8524105542
· DIVERIO, Tiarajú Asmuz; MENEZES, Paulo Blauth. Teoria da computação: máquinas universais e
computabilidade. 2. ed. Porto Alegre, RS: Sagra, 2003. 205 p. (Série livros didáticos, 5)
· GERSTING, Judith. Fundamentos matemáticos para a ciência da computação. 4. ed. Rio de Janeiro: LTC, 2001.
538 p.
· BROOKSHEAR, J. Glenn. Ciência da computação: uma visão abrangente. 5. ed. Porto Alegre, RS: Bookman,
2000. 499 p. ISBN 8573075376
· SEBESTA, Robert W. Conceitos de linguagens de programação. 5. ed. Porto Alegre, RS: Bookman, 2003. 638 p.
ISBN 8536301716
Capítulo 1
2
Noções de Linguagens
O que é uma Linguagem Formal?
Inicialmente, de maneira bastante informal, podemos definir uma linguagem como sendo uma
forma de comunicação. Elaborando um pouco mais esta definição, podemos dizer que uma
linguagem é “um conjunto de elementos (símbolos) e um conjunto de métodos (regras) que
combinam estes elementos, e que são usados e entendidos por uma determinada comunidade”.
Exemplos:
1 – Linguagens Naturais (ou idiomáticas).
2 – Linguagens de Programação, de Controle, de Consulta.
3 – Protocolos de Comunicação.
Contudo, apesar de intuitiva, esta definição não nos permite responder satisfatoriamente à primeira
pergunta; precisamos antes dar um sentido formal para a definição de linguagem.
Conceitos Básicos
Uma Palavra (ou sentença ou string ou cadeia) ≪x,y,w,...≫ é uma sentença sobre um alfabeto
A, é uma seqüência (ou cadeia) finita de símbolos do alfabeto justapostos por concatenação.
A Palavra vazia ≪≫ é uma sentença constituída de nenhum símbolo; isto é, uma palavra de
comprimento igual a 0 (zero). Representamos a sentença vazia por (épsolon).
O Comprimento de uma palavra ≪|w|≫: Seja w uma palavra. O tamanho (ou comprimento)
desta sentença, denotado por |w|, é definido pelo número de símbolos que a compõem.
1
≪ ≫ Convenção para tipos de algarismos utilizados
3
A Concatenação ≪.≫ é uma operação binária que associa a cada par de símbolos uma palavra
formada pela justaposição da primeira com a segunda.
Fechamento de um Alfabeto
Seja um alfabeto.
O fechamento reflexivo (ou simplesmente fechamento) de ≪*≫, é dado pelo conjunto de
todas as possíveis palavras que podem ser formadas a partir de , inclusive a sentença vazia.
* 0+1+2+...
Um Dicionário, como o da língua portuguesa, também define uma linguagem (ou língua).
4
Linguagem Finita: É uma Linguagem que pode ser representada por enumeração.
Exemplo: A linguagem definida como sendo o conjunto dos inteiros positivos
pares maiores que 0 e menores que 20, pode ser representado por: L = {2,
4, 6, 8, 10, 12, 14, 16, 18}.
Conjuntos infinitos podem ainda ser classificados em contáveis (quando tem correspondência com
os números naturais) ou incontáveis (quando tem correspondência com os números reais).
Observações: Todo reconhecedor e todo sistema gerador pode ser representado por algoritmos
e/ou procedimentos.
Linguagens Formais: São linguagens que podem ser representadas de maneira finita e precisa
através de sistemas com sustentação matemática (dispositivos formais ou modelos matemáticos),
como os vistos acima.
Exercícios
Hierarquia de Chomsky
2
Noam Chomsky, linguista e ativista político, é pesquisador do Massachusetts Institute of
Technology (MIT), EUA. Em 1955, aos 27 anos, recebeu seu PhD em Linguística da Universidade da
Pennsylvania. Aos 32 anos tornou-se professor-titular do MIT. Revolucionou a linguística nos anos 60 com sua
teoria sobre a gramática gerativa. Entre seus trabalhos fundamentais sobre o tema estão Aspectos da teoria da
sintaxe e Linguagem e mente. Em 1969, com o livro O poder americano e os novos mandarins, começou sua
trajetória como ativista dos direitos civis e seu combate contra a intervenção dos EUA no Vietnã. Publicou cerca
de 23 livros sobre política internacional e questões internas dos EUA.
6
Linguagens Regulares
Classe de linguagens mais simples.
Formalismos:
Denotacional ou Descritor: Expressão Regular
Operacional ou Reconhecedor: Autômato Finito
Axiomático ou Gerador: Gramática Regular
Formalismos:
Operacional ou Reconhecedor: Autômato de Pilha
Axiomático ou Gerador: Gramática Livre de Contexto
Formalismos:
Operacional ou Reconhecedor: Autômato Linearmente Limitado
Axiomático ou Gerador: Gramática Sensível ao Contexto
Formalismos:
Operacional ou Reconhecedor: Máquina de Turing
Axiomático ou Gerador: Gramática Irrestrita
7
Capítulo 2
Expressões Regulares
LR ER
(1)
(2) {}
(3) {a} a,a
(4) R S (união) +
(5) R x S (concatenação) . ou
(6) R* (fechamento) *
Exemplos
Para ={a,b}:
1) L = 12) ba*
2) L = {} 13) (ba)*
14) (a+b*)*
3) L = {a,b} = {a}{b}
15) a* + b*
4) L = {aa} = {a}x{a}
16) a*.b*
5) L = {a,b}x{b,c}
17) (a+b)2
6) a*
18) (ab)2
7) a+
19) a2.b2
8) (a+b)*
20) (a+b)3
9) (ab)*
21) a0-5
10) b+a*
22) a3 b4
11) (b+a)*
Omissão de Parênteses
Exercícios
23) Retire o máximo de parênteses das ER’s seguintes, sem alterar seu
significado:
a) ((a+((a+b)a))+(bb)) a + (a+b)a + bb
b) (((aa)+(b(bb*)))*((ab)((ab)(a+b)))) (aa+bbb*)*abab(a+b)
c) (((aa)a+b)+((aa)+(a+(bb)))) aaa + b + aa + a + bb
d) (((a)(a)+(ab))+((ba)+(b)(b)))*+(a(b(c))) aa + ab + ba + bb + abc
a) (a+b)*aa(a+b)*
b) (a+b)aa(a+b)*
c) a*aa(a+b)*
d) Todas as palavras iniciadas por exatamente 2 a´s.
Exercícios
Capítulo 3
Autômatos Finitos
Exemplos
cabeça de leitura
controle finito
Definição Formal
3
Os autômatos finitos foram propostos originalmente para modelar a função do cérebro humano.
10
Estado inicial:
Estados finais: dois círculos
Funcionamento
Inicial
Cabeça da fita: à esquerda
Controle: aponta para o estado inicial
Condições de parada
Mais Exercícios
33) b*(abb*)*(a+)
34) L =
37) Palavras iniciadas com número >= 1 de “a”s, seguido por qualquer numero
>=2 de “b”s, seguido por “a”.
42) Refazer o exercício 12 com OU exclusivo (se tiver “aa” não pode ter
“bb”.
12
A abordagem não determinística permite, para cada par (q, x), um “numero qualquer” de
possíveis estados seguintes em .
Cada uma destas possibilidades é tentada aleatoriamente e exaustivamente para a
validação de uma entrada.
São 3 casos:
i) (q,x) = {qi}
ii) (q,x) = {qi,qj,...qz}
iii) (q,x) =
Representação Tabular
Teste de Mesa
Deve aceitar qq palavra válida e rejeitar qq inválida.
Exemplo
Fita a b b a a
Estados q0 q1 q2 q2F q0 ? ? q0 q1 q1F
a b a a a b a a b b
0 1 2 3 0 0 0 0 0 0 1 2 ?
0 0 0 0 0 1 ? 0 0 0 0
0 0 1 2 3
Exercícios
Transições podem ser usadas para se construir NFA’s mais complexos, partindo-se
de NFA’s mais simples.
Operações
OBS: Ver quadro pagina 52 (livro Menezes).
Exercícios
2) Seja L1 = ab e L2 = ba
a) L1 + L2
b) L1 . L2
c) L1*
3) Seja L1 = (a+b)*(aa+bb)(a+b)*
e L2 = palavras sem aa
a) L1 + L2
b) L2 . L1
c) L1*
5) L = a*b*c*
6) Seja L1 = (a+b)*aa
e L2 = a*b*
a) L1 + L2
b) L2 . L1
c) L2*
14
Eliminação de transições
Algoritmo:
Calcule o Fecho- para cada estado
Fecho-(q) = {todos os estados onde pode levar transitivamente a partir de q}
Resultado:
Todos os estados são mantidos.
Os estados que contiverem um elemento de F no Fecho- se tornam finais
Exercícios
2) Palavras onde todos os 0’s antecedem todos os 1’s e estes antecedem todos
os 2’s (0*1*2*)
3) ab + b*
4) a*(ba)*b*
5) a*b*a*
6) 0*1*2*3*
A mudança de estados segue uma regra única: para cada combinação de estado e símbolo de
entrada (q Q, x A) não existe mais de uma possibilidade de escolha, sendo:
totalmente determinístico (DFA-t): se existe uma e apenas uma possibilidade de
escolha (completo);
parcialmente determinístico (DFA-p): se existe uma ou nenhuma possibilidade de
escolha.
Funcionamento
Condições de parada
Exemplos
Algoritmo:
Seja K uma fila, q um estado, e (A,Q,,s,F) um FA
insira s em K
q=s
faça
para x como cada elemento de A
insira (q, x) em K como um único estado r (e sem repetição)
’(q, x) = r
q = próximo elemento de K
até q = nulo
Resultado:
A’ = A
Q’ = Todos os estados em K
s’ = s
F’ = Os estados que contiverem um elemento de F em seu nome
Exemplos
s=1 b
F=3
DFA a b
1 1 2
2 13 12
12 13 12
13 1 12
s=1 F = {4}
17
Resposta:
DFA a b
1 12 23
12 12 234
23 12 34
234 123 34
34 123 3
123 12 234
3 12 3
OU Lógico
Idem produto cartesiano, porem F’ = {(fa,fb), se fa FA ou fb FB}
Negação de DFA’s
Exercícios
12) Palavras com numero impar de a’s e numero de b’s que seja divisível por 3.
A={a,b}
13) Palavras com numero ímpar de 1’s; numero não divisível por 3 de 0’s; e
comprimento par. A={0,1}.
19
Algoritmo:
Resultado:
Q’ = Cada partição criada se torna um estado
s’ = partição que contiver s
F’ = partições formadas com elementos de F
Exemplo
DFA a b
1 2 4
2 5 3
3 2 6
4 1 5
5 5 5
6 3 5
7 6 8
8 7 3
s=1
F = {1, 3, 7}
b) Equivalência:
s0:{2 4 5 6} s1:{1 3}
a: s0 s1 s0 s1 s0 s0
2) s = 1 F = {8}
DFA a b
1 2 6
2 7 8
3 7 8
4 8 7
5 3 6
6 8 7
7 7 5
8 1 8
3) s = 1 F = {4}
DFA a b
1 1 4
2 1 5
3 1 6
4 1 4
5 4 2
6 3 4