Teoria Comp
Teoria Comp
Teoria Comp
Digenes Furlan
Teoria da
Computao
Linguagens Formais e Autmatos
Mdulo 1
2013
Bibliografia
VII BIBLIOGRAFIA BSICA
HOPCROFT, John E. Introduo teoria de autmatos, linguagens e computao. Rio de Janeiro: Elsevier;
Campus, 2002. 560 p. ISBN 8535210725
LEWIS, Harry R; PAPADIMITRIOU, Christos H. Elementos de teoria da computao. 2. ed. Porto Alegre, RS:
Bookman, 2000. 339 p. ISBN 8573075341
MENEZES, Paulo Blauth. Linguagens formais e autmatos. 4. ed. Porto Alegre, RS: Sagra Luzzatto, 2002. 192 p.
(Srie Livros didticos n.3) ISBN: 8524105542
VIII BIBLIOGRAFIA COMPLEMENTAR
DIVERIO, Tiaraj Asmuz; MENEZES, Paulo Blauth. Teoria da computao: mquinas universais e
computabilidade. 2. ed. Porto Alegre, RS: Sagra, 2003. 205 p. (Srie livros didticos, 5)
GERSTING, Judith. Fundamentos matemticos para a cincia da computao. 4. ed. Rio de Janeiro: LTC, 2001.
538 p.
BROOKSHEAR, J. Glenn. Cincia da computao: uma viso abrangente. 5. ed. Porto Alegre, RS: Bookman,
2000. 499 p. ISBN 8573075376
SEBESTA, Robert W. Conceitos de linguagens de programao. 5. ed. Porto Alegre, RS: Bookman, 2003. 638 p.
ISBN 8536301716
2
Captulo 1
Noes de Linguagens
Um Smbolo a,b,c,...1 um elemento de um conjunto, representado por algarismos (letras,
caracteres, nmeros, ...).
Um Alfabeto (ou vocabulrio) um conjunto finito, no vazio, de smbolos.
So exemplos de alfabetos
1 = {0,1} => o alfabeto binrio
2 = {a,b,...,z}
3= ASCII
(Linguagem C) ASCII
Alfabeto das expresses numricas, com 4 operaes bsicas e parnteses
balanceados = {(,),0,1,2,3,4,5,6,7,8,9,+,-,*,/}
Uma Palavra (ou sentena ou string ou cadeia) x,y,w,... uma sentena sobre um alfabeto
A, uma seqncia (ou cadeia) finita de smbolos do alfabeto justapostos por concatenao.
Seja = {a,b} ento a, b, aa, ab, aba, , ... so palavras.
Para a Linguagem C,for e void main() {} so palavras.
A Palavra vazia uma sentena constituda de nenhum smbolo; isto , uma palavra de
comprimento igual a 0 (zero).
O Comprimento de uma palavra |w|: Seja w uma palavra. O tamanho (ou comprimento)
desta sentena, denotado por |w|, definido pelo nmero de smbolos que a compem.
Exemplos: Seja A = {a,b,c}
|aba| = ______ 3
|c|
= ______ 1
|| = ______ 0
A Concatenao . uma operao binria que associa a cada par de smbolos uma palavra
formada pela justaposio da primeira com a segunda.
Seja x = 01101 e y = 110
ento xy = ________ e yx = _______
Elemento neutro:
x. = .x = x
seja x = 110
ento x1 = 110
x2 = 110110
x3 = ________ 110110110
3
Potencias de um Alfabeto: Definimos k como o conjunto de strings de comprimento k sobre o
alfabeto .
Exemplos:
seja = (0,1}
2=______
3=______
1=______
0=______
Fechamento de um Alfabeto
Seja um alfabeto.
O fechamento reflexivo (ou simplesmente fechamento) de *, dado pelo conjunto de
todas as possveis palavras que podem ser formadas a partir de , inclusive a sentena vazia.
* 0+ 1+ 2+...
O fechamento transitivo (ou fechamento positivo) de +, dado por - { }.
Exemplos: Seja = {0,1}, temos que:
* = {, 0, 1, 00, 01, 11, 000,...}
+ = {0, 1, 00 ,01, 11, 000,...}
L A
={a,b}
{}
{w |w palndromo} = __________________________________
*
O que um Problema?
Linguagem Finita: uma Linguagem que pode ser representada por enumerao.
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}.
Linguagens Formais: So linguagens que podem ser representadas de maneira finita e precisa
atravs de sistemas com sustentao matemtica (dispositivos formais ou modelos matemticos).
O que um Programa?
4
Descritores so formalismos que representam os elementos de uma linguagem, descrevendo
cada um deles usando uma notao matemtica. So formalismos abstratos, para verificaes
matemticas, como calculo proposicional, calculo de predicados, expresses regulares, entre
outros.
Reconhecedores So dispositivos formais que nos permitem verificar se uma determinada
sentena pertence ou no a uma determinada linguagem ( uma representao das sentenas de
uma linguagem sob o ponto de vista do reconhecimento de tais sentenas). Esses dispositivos
denominam-se autmatos; autmatos finitos, autmatos de pilha e mquinas de Turing, por
exemplo, podem ser destacados como importantes tipos de autmatos.
Geradores So dispositivos formais dotados de mecanismos que permitem a gerao
sistemtica das sentenas de uma linguagem (representao sob o ponto de vista da gerao das
sentenas de uma linguagem). Os principais sistemas geradores disponveis so as gramticas,
dentre as quais, por exemplo, podemos destacar as gramticas de CHOMSKY.
Observaes: Todo reconhecedor e todo sistema gerador pode ser representado por algoritmos
e/ou procedimentos.
Exerccios
1) Quais dos seguintes conjuntos so alfabetos?
nao
a) nmeros racionais
b) letras gregas
c) algarismos arbicos
d) 2{a,b,c}
e) {a,b,c}3
f) nmeros primos
nao
2) Mostre os prefixos e os sufixos de 001122.
3) D alguns exemplos de palavras que pertencem (e que no pertencem)
seguintes linguagens, sendo ={a,b}:
a) L = {w | w 3}
b) L = {w | para algum u , w = uau}
c) L = {w | para algum u , w = uuRu}
uR reverso de u
d) L = {w | ww = www}
e) L = {w | para algum u, v *, uvw = wvu}
f) L = {w | para algum u *, www = uu}
4) Sendo a Linguagem C++, d exemplos de:
a) Smbolo do alfabeto
b) Smbolo que no pertence ao alfabeto
c) Palavra valida
d) Palavra invalida
5) Qual smbolo da Linguagem C denota o elemento vazio?
6) Qual o significado de void na Linguagem C?
7) Prove que a concatenao satisfaz as propriedades de:
a) Associatividade
b) Elemento neutro
8) Prove que a concatenao NO satisfaz as propriedades de:
a) Comutatividade
b) Fechamento.
Hierarquia de Chomsky
A hierarquia de Chomsky consiste em quatro classes
classes bsicas de linguagens, classificadas
segundo uma ordem de complexidade. Noam Chomsky 2 as definiu como potenciais
modelos para linguagens naturais.
LINGUAGENS ENUMERVEIS
ENUMERVEI RECURSIVAMENTE - TIPO 0
LINGUAGENS SENSVEIS AO CONTEXTO TIPO 1
LINGUAGENS LIVRES DE CONTEXTO TIPO 2
LINGUAGENS REGULARES TIPO 3
Linguagens Regulares
Classe de Linguagens mais simples (conforme Hierarquia de Chomsky)
Formalismos
Denotacional ou Descritor:
Descritor Expresso Regular
Operacional ou Reconhecedor: Autmato Finito
Axiomtico ou Gerador: Gramtica Regular
6
Captulo 2
Expresses Regulares
Uma Expresso Regular (ER) sobre um alfabeto A definida como segue:
seja r = ER(R) e s = ER(S)
(1)
LR
ER
(2)
{}
(3)
{a}
aA,a
(4)
R S (unio)
r+s
(5)
R x S (concatenao)
r . s ou rs
(6)
R* (fechamento)
r*
12)
13)
14)
15)
16)
17)
18)
19)
20)
21)
22)
(b+a)*
ba*
(ba)*
(a+b*)*
a*.b*
(a+b)2
(ab)2
a2.b2
(a+b)3
a0-5
a3 b4
Omisso de Parnteses
(1) Como a unio associativa, pode-se escrever (r1,r2+...+rn) omitindo-se os
parnteses internos
(2) Idem para a concatenao
(3) Parnteses externos podem ser omitidos
(4) Prioridades:
Fecho de Kleene (*) concatenao (.) unio (+)
Exemplos:
((a+(bb))+b)
((ab)((aa)b))
a+(b(a)*)
1 (a+(bb)+b)
2 (abaab)
4 a+ba*
3 a+(bb)+b
3 abaab
4 a+bb+b
Exerccios
23) Retire o mximo de parnteses das ERs seguintes, sem alterar seu
significado:
a) ((a+((a+b)a))+(bb))
b) (((aa)+(b(bb*)))*((ab)((ab)(a+b))))
c) (((aa)a+b)+((aa)+(a+(bb))))
d) (((a)(a)+(ab))+((ba)+(b)(b)))*+(a(b(c)))
7
24) Verificar se a palavra dada pertence ao conjunto regular dado.
a) aaba
(a+b).a.b
b) abaaabaa
(a+b)*.a.a.(a+b)*
c) abaaabaa
(b+ab)*aa(a+b)*
//determinismo
d) abbbabbb
(b*a.b)*.(b.b+a*)
e) bbbaabbb
((b*.a)*+a*.b.b)
f) abbbaabab
a.b*.b.a*.(b.b*.a)
g) baaaabb
(b.a*+b.b)*.(a*.b)*
(a+b)*aa(a+b)*
(a+b)aa(a+b)*
a*aa(a+b)*
Todas as palavras iniciadas por exatamente 2 as.
Exerccios
25) Descreva, em portugus, as LRs sobre {a,b} denotadas pelas seguintes
ERs:
a) (a+b)*a
g) (a+b)(a+b)(a+b).a.b
b) (a+b)*aa(a+b)*
h) a*.b.(a+b)
c) a(a+b)*b
i) (ab)*(a+)+(ba)*(b+)
d) a*(a+b)b*
j) b*(abb*)*(a+)
e) (a+ba)(a+b)*
k) (a+)(ba+b)*
f) (a+b)*b(a+b)(a+b)
Usando = {a,b} ou = {0,1}, mostre a ER dos seguintes conjuntos:
26) todas as palavras que contm bab
27) todas as palavras iniciadas por pelo menos 1 a
28) todas as palavras iniciadas por pelo menos 2 as
29) todas as palavras iniciadas por exatamente 1 a
30) todas as palavras iniciadas por exatamente 2 as
31) todas as palavras iniciadas por exatamente k as, k>=1 e k<=10
32) todas as palavras iniciadas por as
33) todas as palavras de comprimento maior ou igual a 3
34) todas as palavras de comprimento menor ou igual a 3
35) todas as palavras sem a
36) {101,1001,10001,100001,....}
37) todas as palavras onde cada 0 seguido de dois 1.
38) todas as palavras contendo exatamente dois 0s.
39) todas as palavras com nmero par de as
40) todas as palavras com nmero impar de as
41) todas as palavras que no comeam por aa
42) todas as palavras com nmero igual de as e bs ?
8
Captulo 3
Autmatos Finitos
Um autmato finito (AF) ou (FA) um modelo matemtico de um sistema com entradas e
sadas discretas.
O sistema pode estar em qualquer uma de suas configuraes internas, chamadas de estados.
Estados contm informaes relevantes a respeito do passado do sistema. Cada entrada causa
uma mudana de estado, chamada de transio.
Exemplos
1) Autmato que modela um interruptor liga/desliga.
2) Autmato que modela um elevador.
3) Autmato que modela o reconhecimento da palavra ELSE.
cabea de leitura
controle finito
Definio Formal
Um autmato finito3 (AF) uma quntupla (Q,A,,s,F)
Q: conjunto de estados
A: alfabeto de entrada
: funo de transio (define os estados do passo seguinte)
s Q: estado inicial (somente um)
F Q: conjunto de estados finais
Os autmatos finitos foram propostos originalmente para modelar a funo do crebro humano.
smbolo
qj
Estado inicial:
Estados finais: dois crculos
Funcionamento
Inicial
Cabea da fita: esquerda
Controle: aponta para o estado inicial
Condies de parada
Palavra da Fita
Aceita
Rejeitada
Funo de Transio
Enquanto processa smbolos Aps processar o ltimo
da fita
smbolo da fita
Estado atual final
Indefinida para o argumento Estado atual no-final
(estado atual x smbolo lido)
11)
a(ba+abb)*
Problemas
com
Loops:
uso
transio nula obrigatrio
12)
13)
14)
15)
16)
a*b*
a+(ba)*ab+
ab + b*
a*b*a*
a*(ba)*b*
de
10
Exerccios
1) Palavras que contm bab.
2) Palavras iniciadas por pelo menos 2 as.
3) Palavras iniciadas por exatamente 2 as.
4) Palavras onde cada 0 seguido de dois 1.
5) Palavras contendo exatamente dois 0s.
6) Palavras com comprimento maior que 2 smbolos.
7) Palavras com comprimento menor que 4 smbolos.
8) Palavras com nmero par de as
9) b*(abb*)*(a+)
10)
L =
11)
12)
13)
14)
15)
16)
Palavras sem aa
17)
18)
11
Representao Tabular
Smbolos do alfabeto (x) ...
Estados (q)
...
Teste de Mesa
Deve aceitar qq palavra vlida e rejeitar qq invlida.
Exemplo
1) Para o FA que aceita a.b, verificar
aceitas:
ab:
(q0,a)=q1 (q1,b)=q2 q2F
ba:
(q0,b)=?
a:
(q0,a)=q1 q1F
Fita
Estados
q0 q1 q2
se
as
q0 ? ?
palavras
sim
no
no
b a
q2F
seguintes
q0 q1
q1F
a a b a
0 0 0 0 0
0 1 ?
0 0 1 2 3
aceita
aceita
Exerccios
19)
20)
a*(a+b)b*
a*b*a*
a b b
0 1 2 ?
0 0 0 0
rejeita
so
12
podem ser usadas para se construir NFAs mais complexos, partindo-se de NFAs mais
Operaes
OBS: Ver quadro pagina 52 (livro Menezes).
Exerccios
1) Construir o NFA que aceita palavras com qualquer quantidade de 0s.
2) Seja
L1 = ab
a) L1 + L2
b) L1 . L2
c) L1*
3) Seja
e
a) L1 +
b) L2 .
c) L1*
L1 = (a+b)*(aa+bb)(a+b)*
L2 = palavras sem aa
L2
L1
L2 = ba
L1 = (a+b)*aa
L2 = a*b*
L2
L1
13
Eliminao de transies
Algoritmo:
Calcule o Fecho- para cada estado
Fecho-(q) = {todos os estados onde pode levar transitivamente a partir de q}
qQ,xA, seja D = (q,x).
Substituir D por:
se D vazio
dD, d Fecho-(d)
se D = vazio
fFecho-(q),
se G=(f,x) vazio, g Fecho-(g), gG
se G=vazio, vazio
Resultado:
Todos os estados so mantidos.
Os estados que contiverem um elemento de F no Fecho- se tornam finais
Exerccios
1) Palavras onde todos os as antecedem todos os bs (a*b*).
2) Palavras onde todos os 0s antecedem todos os 1s e estes antecedem
todos os 2s (0*1*2*)
3)
4)
5)
6)
ab + b*
a*(ba)*b*
a*b*a*
0*1*2*3*
Seja L1 = (a+b)*(aa+bb)(a+b)*
7) L1 + L2
8) L2 . L1
9) L1*
10) L = (b+a + ab* + ab*a)+
14
Funcionamento
Condies de parada
Palavra da Fita
Aceita
Rejeitada
Funo de Transio
Aps processar o ltimo smbolo da fita
Estado atual final
Estado atual no-final
Exemplos
1)
2)
3)
4)
5)
6)
7)
Palavras
Palavras
Palavras
Palavras
Palavras
Palavras
Palavras
que
com
que
com
15
Exemplos
1) Converter o seguinte NFA para DFA:
a
NFA
q1
q2
q3
a
{q1}
{q1;q3}
b
{q2}
{q1;q2}
{q1}
q1
s = q1
F = q3
DFA
q1
q2
q1q2
q1q3
b
a,b
q2
a
q1
q1q3
q1q3
q1
b
q2
q1q2
q1q2
q1q2
a,b
a
q2
b
a
{q1;q2}
{q1;q2}
{q1;q2;q3}
b
{q2;q3}
{q3;q4}
{q3}
q3
16
s = q1
F = {q4}
DFA
q1
q1q2
q2q3
q2q3q4
q3q4
q1q2q3
q3
a
q1q2
q1q2
q1q2
q1q2q3
q1q2q3
q1q2
q1q2
b
q2q3
q2q3q4
q3q4
q3q4
q3
q2q3q4
q3
Exerccios
1) Palavras terminadas em bb. A={a,b}
2) L = {w | w possui aa ou bb como subpalavra}
3) Palavras contendo a substring abba.
4) Todos os prefixos de aba.
5) Palavras sem aa
6) Palavras que no iniciam por bb.
7) (aab + aba + baa).(a+b)*
8) Sufixos de aba.
17
Resultado:
Q = Cada partio criada se torna um estado
s = partio que contiver s
F = parties formadas com elementos de F
Exemplo
1) Minimizar o seguinte DFA:
DFA
q1
q2
q3
q4
q5
q6
q7
q8
a
q2
q5
q2
q1
q5
q3
q6
q7
s = q1
F = {q1, q3, q7}
a) Eliminao: q7 e q8
b
q4
q3
q6
q5
q5
q5
q8
q3
18
Estados
q1
q2
q3
q4
q5
q6
q7
q8
Alcanveis
X
X
X
X
X
X
Visitados
X
X
X
X
X
X
b) Equivalncia:
Parties iniciais: estados no-finais (s0) e finais (s1)
s0:{q2 q4 q5 q6}
s0 s1 s0 s1
a:
s1:{q1 q3}
s0 s0
b:
a:
b:
s0:q2
s1
s3
s1:{q4 q6}
s0 s0
s1:q5
s1
s1
s2:{q4 q6}
s3 s3
s1 s1
s2:{q1 q3}
s0 s0
s3:{q1 q3}
s0 s0
s2 s2
Exerccios
2)
s = q1
DFA
a
q1
q2
q2
q7
q3
q7
q4
q8
q5
q3
q6
q8
q7
q7
q8
q1
F = {q8}
b
q6
q8
q8
q7
q6
q7
q5
q8
3)
s = 1
DFA
a
1
1
2
1
3
1
4
1
5
4
6
3
F = {4}
b
4
5
6
4
2
4