Escolar Documentos
Profissional Documentos
Cultura Documentos
Teoria Computacao Novo
Teoria Computacao Novo
Rmulo Silva
Teoria
da
Computao
Maio/2007
1. Introduo
Teoria da Computao. A Teoria da Computao abrange o estudo de modelos de
computadores ou mquinas e o respectivo poder computacional destes modelos. Isto
, que classes de problemas podem ser resolvidas em cada modelo e como
represent-los.
O modelo de computao atual (ano base: 2007) incapaz de entender a linguagem
humana direta: seja falada ou escrita, dado o nmero enorme de possibilidades de
significados e/ou acepes de uma mesma palavra, alm das variaes de
construes de frases.
Linguagens Formais. Para diminuir este distanciamento entre a lngua humana (por
exemplo: o portugus, o ingls, etc.) e a programao de computadores foram
criadas as linguagens de programao. Estas so linguagens formais, isto ,
procuram eliminar toda ambigidade possvel, garantindo assim que um comando e
palavras reservadas tenham sempre o mesmo significado independentemente de
onde apaream no programa.
A lngua portuguesa uma linguagem natural, sendo que sua representao escrita
possui uma gramtica. Esta indica onde se deve usar preposio ou no; a
concordncia verbal e nominal, entre outras regras.
Gramticas. Da mesma forma, as linguagens de programao possuem uma
gramtica associada, que define a formao de programas vlidos. Por exemplo: se
cada comando deve ser seguido de ; (ponto-e-vrgula), se o tipo de uma varivel vem
antes ou depois de seu nome.
Algoritmos. As resolues de problemas so representadas atravs de algoritmos,
sendo que esses so implementados computacionalmente em alguma linguagem de
programao.
Compiladores. Os compiladores fazem traduo dos programas escritos nas
diversas linguagens de programao para instrues que o computador capaz de
executar. Assim, a Teoria da Computao est intimamente ligada ao estudo de
linguagens: sua representao (gramtica); e sua traduo para instrues da
mquina usada (compilador).
O smbolo | pode ser usado quando h mais de uma regra para um mesmo no
terminal, como o no-terminal A do exemplo.
O conjunto de no-terminais para a gramtica G V= {S,A,B}. O conjunto de
terminais T = {a,b} . O conjunto de regras P = { S AB, A aA, A a, B b }.
A seta () indica que o no-terminal sua esquerda pode ser substitudo pelo
smbolo ou smbolos que esto sua direita. Assim:
o no-terminal S pode ser substitudo por AB
o no-terminal A pode ser substitudo por aA ou por a
o no-terminal B pode ser substitudo por b.
As palavras ou cadeias vlidas na linguagem so formadas a partir do smbolo inicial,
substituindo-o por alguma de suas regras e os no-terminais desta sucessivamente,
at que se obtenham apenas terminais. Assim, utilizando a gramtica definida
anteriormente pode-se obter a palavra aaab efetuando-se as seguintes substituies:
(1) S
(2)
(3)
(4)
(5)
AB
aAB
aaAB
aaaB
aaab
Na linha (1) foi usada a nica regra disponvel para o smbolo S. Na linha (2) foi usada
a regra A aA. Na linha (3) foi usada novamente a regra A aA. Na linha (4) foi
usada a regra A a. Na linha (5) foi usada a regra B b.
Observe que a notao usada no processo de substituio, indica pela seta ,
diferente da notao usada na prpria gramtica, indicada pela seta . Isto permite
diferenciar quando se est gerando uma palavra ou descrevendo uma regra da
gramtica.
Derivao. O processo de substituir um no-terminal por alguma de suas regras
chamado de derivao.
rvore de derivao. A gerao de uma palavra pelas sucessivas derivaes pode
ser representada atravs de uma rvore, chamada rvore de derivao, onde a raiz
o smbolo inicial S. A Figura 1 apresenta a rvore de derivao para a palavra aaab
do exemplo anterior.
S
A
a
B
A
b
A
a
Figura 1
4. Modelos de Mquinas
Dispositivo Reconhecedor. Uma outra maneira de definir uma linguagem atravs
da utilizao de um dispositivo reconhecedor, que permite submeter uma palavra ou
cadeia a um teste de aceitao capaz de determinar se tal palavra pertence ou no
linguagem em questo.
O dispositivo reconhecedor na verdade um modelo matemtico que descreve o
funcionamento de uma mquina, onde as cadeias so submetidas para aceitao ou
rejeio.
8
Reconhecedor
Autmatos Finitos
Autmatos com Pilha
Mquina de Turing com
limitada
Mquina de Turing
memria
a b
a b
fita de entrada
cabea de leitura
q0
q1
qn
q2
controle finito
Figura 3
q0
q1
q2
a
q1
q1
---
b
--q2
---
q1
q2
Figura 4
10
O destino da seta indica o prximo estado aps a leitura do smbolo. O estado inicial
indicado atravs de uma seta sem origem e com destino no estado inicial. Os estados
finais so indicados atravs de dois crculos concntricos.
Observando o grafo do AFD temos os estados q0, q1 e q2, sendo q0 o estado inicial e q2
o estado final. O estado q1 pode ser traduzido como estado onde se l um ou mais as.
O estado q2 pode ser expresso por: estado que indica a leitura de exatamente um b.
Este AFD reconhece a linguagem L = { w | w formada por uma seqncia de um ou
mais as seguido de exatamente um b sobre *}, onde = {a,b}. Portanto,
equivalente gramtica vista anteriormente:
S AB
A aA | a
Bb
Teorema: Toda linguagem regular (LR) possui um AFD equivalente.
Outro exemplo: seja L = { abncm | n 0 e m 0}. O AFD a seguir reconhece L.
b
c
a
q0
q1
c
q2
Figura 5
M = (, Q, , q0, F) onde = {a, b, c}, Q = {q0, q1, q2}, est representada pelo grafo da
Figura 5, q0 o estado inicial e F = {q1, q2}. Exemplos de palavras ou cadeias
reconhecidas pelo AFD : a, ab, ab, abb, abbb, abc, abbc, abcc, ac, acc, accc, etc.
Exemplos de cadeias no reconhecidas: b, c, ba, acb, aa, etc.
11
B
c
A1
b
Figura 6
12
grep [a-z] arq: listar todas as linhas do arquivo arq que comecem
com as letras minsculas de a a z.
a
q0
b
q1
q2
a
Figura 7
No autmato da Figura 7, existem duas transies de estado possveis ao ler o smbolo
a estando o autmato no estado q0.
Aceitao. Uma cadeia aceita por um AFND se testando-se todas as transies
possveis medida que se l a cadeia, o AFND pra em um estado final aps ler toda a
cadeia para algum caminho das transies. Assim, o no-determinismo do prximo
estado pode ser interpretado como um teste de todas as possibilidades.
Exemplos de cadeias aceitas pelo AFND da figura 7: a, ac, ab, abcc, ...
Rejeio. Uma cadeia rejeita por um AFND se nenhum caminho de transies leva o
autmato a um estado final aps ler toda a cadeia.
Exemplos de cadeias rejeitadas pelo AFND da figura 7: b, bc, abb, aca, ...
14
q0
q1
c
q2
a
Figura 8
No AF da Figura 8, o autmato pode fazer a transio para o estado q1 a partir do
estado q0 sem ler qualquer smbolo na fita. Assim, as cadeias: b, bc, bcc so aceitas
pelo autmato enquanto que bb, aac, acb so rejeitadas.
Teorema. Para todo AFND, incluindo os AF, possvel construir um AFD equivalente.
Equivalncia. Na prtica, o teorema anterior estabelece que a facilidade de nodeterminismo dos AFNDs no representa um aumento de poder computacional em
relao aos AFDs. Ou seja, a classe de linguagens reconhecida por AFNDs e AFDs a
mesma.
15
x
r=x
q0r1
qfr1
r = r1 + r2
q0r
q0r1
qfr2
qfr1
q0r
qfr2
r = r1r2
q0r1
qfr1
r = r1*
Figura 9
A Figura 9 mostra esquematicamente como pode ser feita a construo de AF a partir
de uma expresso regular. importante observar que os estados que seriam finais
em M1 e M2 para as expresses regulares r1 e r2, no o so quando se faz o autmato
que representa r1+r2. E o mesmo ocorre com M1 em r1r2 e em r1*.
Exemplo: seja a expresso regular (a + ab)(bc)*.
*
Observe que ela a concatenao das subexpresses (a +ab) e (bc) . Por sua vez, (a
+ ab) indica que apenas as palavras a e ab so vlidas dentro da subepresso. J
*
(bc) a concatenao dos smbolos b e c, repetidos em grupo, zero ou mais vezes.
Assim, primeiro montamos o autmato para a primeira subexpresso (a + ab) que
ser:
a
Figura 10
16
Figura 11
Agora, uma vez obtidos os autmatos para (a +ab) e (bc)* basta coloc-los em
seqncia usando uma transio para que representem a concatenao das duas
subexpresses, e definir o estado que no possui transies a partir dele como
estado final, representando assim o autmato para (a + ab)(bc)*, conforme a Figura
12.
Figura 12
17
M:
M
qf1
q0
.
.
.
q0
.
.
.
qf
qfn
Figura 13
q2
c
q0
q1
b
q3
Figura 14
c
M
a
q2
c
q0
q0
qf
q1
b
q3
Figura 15
18
q2
c
a*b
q0
qf
q1
b
q3
Figura 16
qf
q0
a ba b
q3
Figura 17
Observe que o estado q1 possui transio para dois estados distintos (q2 e q3).
Portanto ao efetuar sua eliminao necessrio representar como que saindo de q0
*
*
se chega a q2 (representado por a ba c), e como se chega a q3 (representado por
*
*
a ba b).
As Figuras 18 e 19 representam a eliminao dos estados q2 e q3, respectivamente.
19
a*ba*cc*
qf
q0
a ba b
q3
Figura 18
q0
a ba cc + a ba b
qf
Figura 19
20
q1
q0
a
q2
q3
b
q4
q5
a
a
Figura 20
q1
q0
b
q2
a
q3
q4
a
Figura 21
O AFD obtido no possui estados inacessveis. Ento passa-se construo das
classes de equivalncia, iniciando com os conjunto Q F = {q0,q1} e F = {q2,q3,q4}.
possvel observar que (q 0 , a ) = q1 e (q1 , a ) = q 0 . Isto , lendo o smbolo a a partir dos
21
a
b
q01
q234
Figura 22
finitos
22
16. Bibliografia
LEWIS, Harry R. & PAPADIMITRION, Christos H. Elementos de Teoria da
Computao.
2.ed.
Porto
Alegre,
Bookman,
2000.
MENEZES, Paulo Blauth. Linguagens formais e autmatos. 2.ed. Porto Alegre, Sagra
Luzzatto, 1998. 165p.
23
HOPCROFT, John E.; ULLMAN, Jeffrey D.; MOTWANI, Rajeev. Introduo Teoria de
Autmatos, Linguagens e Computao; Rio de Janeiro; Ed. Campus, 2002.
DIVERIO, T. A.; MENEZES, P. B. Teoria da Computao: Mquinas Universais e
Computabilidade, Srie Livros Didticos Nmero 5, Instituto de Informtica, da
UFRGS, Editora Sagra Luzzatto, 1a edio, 1999.
EUGNIO, Cristiana Munhoz; PALERMO, Lilliam. Unix Avanado: Programao CShell. Disponvel em http://www.ccuec.unicamp.br , acessado em 20/03/2006.
24