Escolar Documentos
Profissional Documentos
Cultura Documentos
Cap1. DefBasicas PDF
Cap1. DefBasicas PDF
TEORIA DA COMPUTAO
Advertncia. Este documento um texto de trabalho para apoio ao estudo da cadeira de Teoria da Computao.
No inclui toda a matria leccionada na disciplina e naturalmente no dispensa a consulta da bibliografia
complementar. O autor agradece qualquer comentrio ou sugesto que o tolerante e paciente leitor entenda por
bem fazer.
CAPTULO 1
1.1. Introduo 3
1.2. Linguagens formais 3
1.2.1. Alfabetos, cadeias e operaes sobre cadeias 5
1.2.2 .Operaes de conjuntos sobre linguagens 10
1.3 Gramticas 17
1.4 Autmatos 30
1.5. Os trs paradigmas da computao 37
Bibliografia 42
Anexo 42
1.1. Introduo
Nesta disciplina iremos abordar aqueles trs temas. Comearemos pelos autmatos e
veremos depois os elementos introdutrios fundamentais da computabilidade e da
complexidade.
A teoria dos autmatos compe o edifcio formal que sustenta solidamente todo o
desenvolvimento de processadores de texto, de compiladores e de hardware. Suporta tambm
(atravs das gramticas associadas aos autmatos) todo o desenvolvimento das linguagens de
programao. Assim linguagens, gramticas e autmatos so, com veremos, as trs faces de
um mesmo prisma. Vejamos formalmente em que consistem.
1.2.Linguagens formais
Tal como as linguagens humanas, as linguagens formais (assim chamadas por serem definidas
por um conjunto de formalismos matemticos abstractos) so faladas por autmatos, isto ,
um autmato compreende, e sabe interpretar uma dada linguagem, de uma forma que veremos
posteriormente. alis interessante constatar que os estudiosos das linguagens humanas (os
linguistas) deram uma contribuio muito importante para o desenvolvimento da teoria das
linguagens formais. Por exemplo Chomsky, de que falaremos no Captulo 6, um linguista.
Uma linguagem exprime-se atravs de smbolos de uma certa forma (tal como as
linguagens humanas ao longo da histria usaram smbolos diversos, desde os hieroglficos at
aos caracteres latinos, passando pelos chineses, pelos gregos e pelos rabes). Poderemos
definir formalmente esta realidade.
Exemplos de alfabetos:
Qualquer objecto pode pertencer a um alfabeto. Por isso um alfabeto pode ser um
conjunto de qualquer espcie de coisas.
Exemplo 1.2.1
Exemplo 1.2.2
Por vezes uma cadeia tambm se chama palavra. De facto nas linguagens humanas as
palavras so cadeias de caracteres seguindo uma certa regra de formao a ortografia.
Alguns autores de lngua inglesa (por exemplo Linz) usam o termo phrase frase) como
sinnimo de cadeia. De facto uma cadeia gerada aplicando as regras (produes) de uma gramtica,
tal como uma frase de uma linguagem humana se constri usando as regras da respectiva gramtica.
Nesse sentido as palavras so os elementos atmicos da linguagem humana que correspondem aos
smbolos de um alfabeto de uma linguagem formal. Para evitar confuses usaremos preferencialmente
o termo cadeia.
Fazendo a concatenao de duas cadeias w e v obtm-se uma terceira cadeia que por
isso se chama a concatenao de w e v.
Pode-se obter fazendo a concatenao direita (v direita de w), por exemplo sendo
wv=a1a2a3anb1b2b3bn
e a concatenao esquerda, vw
vw=b1b2b3bna1a2a3an
Os caracteres numa cadeia seguem uma certa ordem. Por vezes estamos interessados em
alterar essa ordem, obtendo-se cadeias derivadas da original. Por exemplo a cadeia reversa,
obtm-se invertendo (da direita para a esquerda) a ordenao dos caracteres. A reversa da
cadeia w acima ser, revertendo w,
wR =an...a3a2a1
O nmero de caracteres de uma cadeia pode ser qualquer, sendo por isso umas longas
e outras curtas. Chama-se comprimento de uma cadeia, anotando-se pelo mdulo, |w|, o
nmero de posies, ou de casas, ocupadas pelos caracteres na cadeia. Por exemplo 011011
tem comprimento 6. Por vezes tambm se define comprimento como o nmero de caracteres
da cadeia, o que est certo se se inclurem as repeties nesse nmero. De outro modo a
cadeia anterior tem 2 caracteres (0 e 1) que, repetidos, ocupam 6 posies.
w = w = w, w,
para todo e qualquer w, tal como a unio de um conjunto com o conjunto vazio d o
conjunto original, qualquer que ele seja.
Se por exemplo
w=abbab
e os seguintes sufixos de w:
Note-se que cada prefixo est associado a um sufixo. O prefixo a est associado ao sufixo
bbab e o sufixo ao prefixo abbab. A ordem por que esto escritos acima reflecte essa
associao.
Potncia n de uma cadeia, wn, uma cadeia obtida pela concatenao n vezes da
cadeia w consigo prpria. Assim por exemplo
w2 = ww
w3 = www,
etc.
w1=w
w0={ }
a3=aaa,
1204=110000,
anbm=aaabbb.
n
Tambm se define potncia de um alfabeto, , como o conjunto das cadeias desse
alfabeto de comprimento n. Assim se ={0,1},
0
={ }, cadeia vazia
1
={0,1} , cadeias com um carcter
2
={00,01,10,11}, cadeias com dois caracteres
3
={000, 001, 0010, , 111} cadeias com trs caracteres
etc.
1
(note-se que enquanto um conjunto de caracteres (smbolos), um conjunto de cadeias,
mesmo que tenham apenas um carcter).
+
Se excluirmos a cadeia vazia do fecho estrela, obtemos o fecho estrela positivo,
+
= *-{ }
* +
fcil de ver, pela definio, que quer quer so sempre conjuntos infinitos,
mesmo quando o alfabeto finito.
Assim sendo, num alfabeto qualquer podem-se definir mltiplas linguagens. Elas tero
propriedades diferentes que lhes do caractersticas bem distintas, que estudaremos na ocasio
oportuna. Uma linguagem num alfabeto no precisa de ter todos os caracteres desse alfabeto,
pode ter apenas uma parte deles.
(i) O conjunto L1={a, ab, abb} uma linguagem em . uma linguagem finita.
Tambm se pode constatar que , a linguagem vazia, no tem qualquer cadeia, uma
linguagem em qualquer alfabeto.
L1 L2 = {w: w L1 ou w L2},
L1 L2 = {w: w L1 e w L2},
L1 - L2 = {w: w L1 e w L2},
L2 L1 = {w: w L1 e w L2}.
Compl(L) = L = * - L.
Reverso de uma linguagem: todas as cadeias que resultam da reverso das cadeias
originais de L constituem a linguagem reversa de L denotada por LR
LR = {wR : w L}.
L2={0, 01}
Ento
L2 L3={0,01,11,111,1111} e
Uma propriedade definida assim genericamente tem que ser vlida para todos e
quaisquer casos. Se formos capazes de encontrar um s caso em que isso se no verifique, a
propriedade no geral e portanto a resposta no.
Faa-se
(L1 L3 ) = {a, ab, b} {11, 111, 1111}= {a, ab, b, 11, 111, 1111}
Logo
L =
L =L
Em que resulta ?
Para um qualquer nmero real, elevando-o a zero obtm-se a unidade. Ento aqui ser
natural considerar-se que a potncia zero de uma linguagem a unidade da concatenao, ou
seja, a cadeia vazia. Podemos tambm considerar que a potncia nula de uma linguagem consiste
em escolher zero cadeias dessa linguagem. Logo,
L0={ }
L1=L
L2=LL
...
L* = L0 L1 L2 L3 ......
L1 ={0,11}
={000,0011,0110,01111,1100,11011,11110,111111}
Ainda neste exemplo o fecho estrela da linguagem finita com apenas duas cadeias
resulta numa linguagem infinita.
*
E o fecho estrela da linguagem vazia, ?
0
={ }
1
=
2
=
*
={ } ={ }
Quanto linguagem com o carcter vazio, L={ }, o seu fecho estrela L*={ }.
L+ : L1 L2 L3 ...... = L* - { }
Exemplo: Seja
L={anbn, n 1}
Logo:
........... }
LR={bnan, n 1}
E o fecho estrela L* ?
1.3. Gramticas
A gramtica de uma linguagem formal tem o mesmo objectivo da de uma linguagem humana:
ela fixa, de modo que todos possamos entender, as regras de formao das palavras e das
frases. Todas as linguagens escritas tm uma gramtica. a gramtica que d sentido
linguagem: sem ela as pessoas no se entenderiam
Exemplo 1.3.1
H vrias gramticas da lngua portuguesa, normalmente identificadas pelo nome dos seus
autores. Se usarmos a de Mateus e outros (Gramtica da Lngua Portuguesa, Mateus, M,H.M,
A. M.Brito, I. Duarte, I. H Faria, Caminho Srie Lingustica, 1989), poderemos representar
simbolicamente as regras de formao de uma frase (aqui feita para fins ilustrativos, e
portanto muito simplificadas em relao riqueza da nossa lngua):
Pode no ter sintagma nominal ou o sintagma verbal; mas tem que ter pelo menos um
deles.
Para podermos formar (produzir) frases temos que ter palavras concretas e no apenas
categorias de palavras. Elas, as palavras concretas, so os elementos terminais da gramtica.
Por exemplo:
decticos este | esse | aquele | meu | teu | seu |<vazio> (produes 18 a 24)
(ii) Chove
Este exemplo mostra como uma frase (ou orao), conceito geral e complexo, pode ser
definida custa de elementos simples (decomposio da complexidade). Comea-se no
conceito mais complexo (frase), e reduz-se sucessivamente at se obterem os elementos
irredutveis com que se constri a lngua.
G=(V, T, S, P)
em que
As regras de produo constituem o cerne da gramtica, pois atravs delas que uma
cadeia de caracteres se transforma noutra cadeia de caracteres. Por isso elas definem uma
linguagem associada gramtica.
Embora uma linguagem possa ser produzida por vrias gramticas, uma gramtica
produz uma e uma s linguagem. Teremos a relao ilustrada na figura 1.3.1.
Gramticas Linguagens
G1 L1
G2
G3
L2
G4
Figura 1.3.1 . Vrias gramticas podem produzir a mesma linguagem. Mas uma gramtica no
pode produzir duas linguagens.
x y
A cadeia produtora x tem que ter qualquer coisa, no pode ser a cadeia vazia (se assim
no fosse produzir-se-ia a partir do nada, o que no teria significado). Este facto anota-se por
x (V T)+
querendo-se dizer que a cadeia x pode ter variveis da gramtica e/ou smbolos terminais,
sem a cadeia vazia (por isso se escreve + e no *).
y (V T)*
sendo agora legtimo escrever ( * ) para admitir a possibilidade da cadeia vazia. De facto (V T)0
resulta na cadeia vazia.
e a regra de produo x y,
____________
Diz-se que w produz z , ou que z produzida por w e anota-se com seta larga
w z
w e z podem ser variveis e/ou smbolos terminais, dependendo do caso, como veremos.
As regras de produo podem aplicar-se por qualquer ordem e tantas vezes quantas as
necessrias. Este facto permite que com um nmero finito de produes se possa obter uma
linguagem infinita. Duas produes e um smbolo inicial so suficientes para produzir uma
linguagem infinita. Por exemplo as duas produes seguintes
S aS
geram qualquer cadeia no alfabeto ={a}, incluindo a cadeia vazia. Experimente o leitor gerar
a cadeia aaa.
Ser possvel obter, com uma s produo, uma linguagem infinita? S em certas
gramticas especiais que estudaremos no Captulo 12.
Entre uma forma sentencial inicial w1 e uma final wn poderemos passar por um
grande nmero de formas sentencias intermdias, w1, w2, , ou seja,
w1 w2 wn
Diz-se que w1 produz wn ou, em escrita mais compacta (mais prtica), usando (*)
para significar uma sequncia de produes simples,
w1 wn
As regras de produo podem ser aplicadas numa ordem qualquer. Por cada ordem,
produz-se uma cadeia terminal. Ordens de derivao diferentes podem dar cadeias terminais
iguais ou diferentes, conforme a gramtica concreta.
O conjunto de todas as cadeias terminais que se podem obter por uma gramtica,
compem a linguagem gerada por essa gramtica. Exprime-se pela expresso L(G),
linguagem L da gramtica G. Em termos mais formais, dada a gramtica definida pelo
quarteto
G=(V, T, S, P)
a linguagem da gramtica (ou gerada pela gramtica) composta por todas as cadeias
terminais (sentenas, apenas com smbolos de T, ou eventualmente ) que se podem gerar a
partir de S com as produes de P, por qualquer ordem qualquer nmero de vezes, ou seja,
L(G) = {w T*: S w}
S w1 w2 ... wn w
uma derivao da cadeia w. A cadeia w deve ter apenas smbolos terminais caracteres do
alfabeto da linguagem, incluindo eventualmente .
Qualquer derivao da gramtica comea sempre por S, que por isso tambm
chamado o axioma da gramtica. Desde S at w passa-se por diversas expresses que tm
variveis da gramtica ou uma mistura de variveis e de smbolos terminais. A essas
expresses chama-se formas sentenciais da derivao: so as cadeias S, w1, w2, ..., wn .
Exemplo 1.3.2.
G =({S}, {a,b}, S, P)
Varivel de inicializao: S
aaSbb produo P1
aaaSbbb produo P1
...
Em qualquer altura se pode aplicar a produo P2, substituindo S por , ou seja por
nada. Nessa altura obtm-se uma frase da linguagem. Assim,
etc.,
Conclui-se assim que esta gramtica produz a linguagem composta por cadeias em que
a primeira metade s tem as e a segunda metade s tem bs, ou seja, de uma forma
matematicamente elegante, usando as noes que vimos anteriormente,
L(G) = {anbn, n 0}
Este resultado to evidente que se pode dizer que no carece de demonstrao. Mas
pode-se demonstrar formalmente, usando uma das tcnicas de prova conhecidas. Como se
trata de demonstrar uma frmula para um nmero infinito de casos, o mais natural ser usar a
prova por induo, associada noo de recursividade.
O caso , correspondente a n =0 tem que ser tratado parte. Demonstra-se que ele se
obtm aplicando a produo P2 a partir de S.
Queremos provar que qualquer que seja n 1, todas as formas sentenciais so da forma
wn = anSbn
-hiptese indutiva: admitamos que verdade para n=k e para todos os anteriores, ou seja,
verdade que
wk = akSbk
wk+1 = ak+1Sbk+1
wk+1 awkb
wk+1 a(akSbk )b
Manipulando a expresso
wk+1 (aak)S(bkb)
Falta finalmente provar que aplicando P2 a qualquer forma sentencial na forma wn = anSbn,
n1, se obtm uma sentena na forma anbn.
anSbn anbn
o que verdade.
E a demonstrao est feita, quod erat demonstrandum (o que era preciso demonstrar)
q.e.d.
Exemplo 1.3.3:
L={an+1bn, n 0}
P1: S aS
P2: S aSb
P3: S
G = ({S}, {a,b}, S, P)
Para que isto no acontea, P1 s se pode aplicar uma vez. Introduz-se com esse
objectivo uma varivel adicional, A, e definem-se as produes
P1: S aA
P2: A aAb
P3: A
G=({A}, {a,b}, S, P)
Para demonstrar que uma dada linguagem gerada por uma certa gramtica, tem que
se mostrar que:
(i) por um lado toda a cadeia w L pode ser derivada a partir de S usando as produes P da
gramtica
(ii) por outro lado qualquer cadeia gerada pela gramtica G pertence linguagem L.
Nem sempre fcil fazer as duas demonstraes, sobretudo a primeira. Ver por
exemplo em Linz, exemplo 1.13. Recorre-se frequentemente prova por induo.
Uma linguagem pode ser gerada por muitas gramticas, que por isso se dizem
equivalentes ,
Seja PAL a linguagem constituda por todos os palndromos (capicuas) sobre um dado
alfabeto. Pode-se definir pelas trs regras seguintes
PAL
Uma cadeia s pertence a PAL se puder ser gerada por estas 3 regras. Por outro lado se
uma cadeia um palndromo, ento ela pode ser gerada por aquelas trs regras, aplicando-as
as vezes necessrias pela ordem conveniente.
Exemplo 1.3.4
Seja o alfabeto = { a, b }
1. PAL
2. a PAL, b PAL
bwb PAL
Por exemplo:
b PAL , regra 2
Poderemos tentar imitar as trs regras: primeiro gera-se um palndromo com a regra 1 ou a 2,e
depois geram-se sucessivos palndromo, cada vez maiores, com a regra 3.
Deste modo uma gramtica para esta linguagem pode ser obtida pelas derivaes seguintes:
1 P1: S (regra 1)
2 P2: S a (regra 2)
P3: S b (regra 2)
S |a|b|
S aSa | bSb
1.4.Autmatos
Muitos componentes e sistemas digitais podem estar num entre um nmero finito de
estados, e por isso a noo de estado central num autmato a eles associado. O estado
permite lembrar o passado relevante do sistema (ele chegou l aps um certo nmero de
transies, que so o seu passado). Se o nmero de estados de um sistema finito, poderemos
represent-lo com uma quantidade limitada de recursos.
F A
Figura 1.4.1. Os dois estados do autmato que representa o interruptor on-off. F-fechado, A-
aberto.
Representando por arestas de um grafo as aces de pressionar ( Press) teremos a Fig. 1.4.2
Press
F A
Press
Para se saber como se inicializou o interruptor, identifica-se o estado inicial por uma seta,
Press
F A
Press
e tem-se finalmente o desenho de um autmato finito (de dois estados) que representa o
funcionamento do interruptor, na Fig. 1.4.3.
As etiquetas das arestas representam a aco exterior sobre o sistema (neste caso
pressionar o interruptor) e as arestas a evoluo do sistema em consequncia dessa aco, que
sempre uma transio entre dois estados (ou, como veremos, e generalizando a noo de
transio, de um estado para ele prprio).
p a i
1 2 3 4
Figura 1.4.4. Um autmato finito que transita de estado pela entrada de letras.
Inicializa-se no estado 1, recebe do exterior (l) a letra p e passa ao esto 2, depois com as
letras a e i passa sucessivamente aos estados trs e 4.
Poderamos nomear os estados de um modo mais sugestivo, tal que a sua etiqueta nos
sintetizasse o que se passou at a. Teramos por exemplo a Fig. 1.4.5.
p pa pai
p a i
Figura 1.4.5. O autmato anterior da Fig 1.4.4 com nova etiquetagem dos estados.mais
sugestiva.
p a i
p pa pai
Exemplo 1.4.3
Uma porta automtica de entrada de um servio pblico, rotativa, tem geralmente dois
sensores, um frontal, e um na retaguarda, conforme esquematizado na Fig. 1.4.7.. O frontal
detecta uma pessoa que se aproxima e o da retaguarda detecta a presena de uma pessoa na
sua rea de observao.
Sensor Sensor
Fronta Rectag
Quanto uma pessoa se aproxima para entrar a porta abre-se, girando sobre o seu eixo
de fixao, se no estivar ningum detrs da porta, caso contrrio haveria um acidente. H um
dispositivo electrnico, o controlador, que recebe os sinais dos dois sensores e conforme o
caso manda abrir, fechar, ou manter-se como est. O controlador ter dois estados,
correspondentes a porta aberta, A, e porta fechada, F. Tal como no exemplo anterior,
poderemos desenhar dois vrtices de um grfico para esses dois estados.
F A
Em cada uma destas quatro situaes possveis o controlador tem que tomar uma
deciso: fecha, abre ou deixa ficar como est ?
PF PR Carcter
0 0 00 a
0 1 01 b
1 0 10 c
1 1 11 d
Tabela 1.4.2. Transies entre os estados em funo dos caracteres de entrada lidos.
Entrada a b c d
Estado 00 01 10 11
F F F A F
A F A A A
b,d,a b,c,d
c
F A
a
Figura 1.4.9. O autmato finito que representa o sistema de controlo de abertura da porta .
b,d,a b,c,d
c
A/1
F/0
a
Figura 1.4.10. O autmato anterior com a representao da sada. Veremos no Cap. 2 que este
autmato se chama por isso de Mquina de Moore.
Ficheiro de entrada Sk
M
e
m
Unidade de Controlo mk
r
qk i
a
Ficheiro de sada yk
Esta figura muito geral. Um autmato concreto pode no ter memria (como os
exemplos que vimos), ou pode no ter sada (como o aceitador de pai). Mas todos tm a
unidade de controlo e a entrada.
entrada. No prximo instante de tempo, o estado interno do autmato vai ser determinado
pelo estado actual, pelo smbolo lido entrada e pelo contedo da memria, mk. Essa
dependncia definida pela funo de transio de estado f, que depende por isso do estado
actual, da entrada actual e do contedo actual da memria, ou seja,
Entre dois instantes de tempo sucessivos pode produzir-se uma sada ou pode alterar-
se o contedo da memria.
- o ficheiro de entrada e
- o contedo da memria.
g (n, m) n m
h a1 a2 ... an
Este tipo de computao parece nada ter a ver, partida, com a computao do valor
de funes. Trata-se do reconhecimento, ou classificao, de cadeias de smbolos. Como as
cadeias de smbolos formam linguagens, este tipo de computao chama-se por isso
reconhecimento de linguagens, o segundo paradigma da computao.
Em segundo lugar porque o problema do clculo do valor de uma funo pode tambm
ser reduzido a um problema de reconhecimento de uma linguagem.
L ={1n, n primo},
Isto
Clculo de
funes f(n)
Reconhecimento Transduo de
de Linguagens cadeias
Vejamos como.
i) Qualquer caso de computao de uma funo pode ser reduzido a uma instncia do
reconhecimento de uma linguagem.
n 1 2 3 4 5 6
f(n) 2 3 5 7 11 13
f(5) = ??
101#1
101#10
101#11
101#100
101#101
101#110
101#111
L ={Binrio(n)#Binrio(m)}
101#1011
f(5)=11
ii) Reduo de uma classificao de cadeias a uma computao numrica de uma funo
Em primeiro lugar faz-se uma codificao dos smbolos do alfabeto, de modo que cada
smbolo fique associado a um e um s nmero natural em binrio.
e os seus cdigos,
Claro que para cada caso necessrio desenvolver o engenho para encontrar a forma
de implementar o princpio da inter-redutibilidade. O que importa saber que sempre
possvel encontrar uma soluo.
Mas este princpio muito importante: ele permite que se use o problema da
identificao de linguagens em teoria da computao como representativo dos trs
paradigmas. Por isso o que usaremos ao longo da cadeira.
Bibliografia
An Introduction to Formal Languages and Automata, Peter Linz, 3rd Ed., Jones and Bartelett
Computer Science, 2001
Models of Computation and Formal Languages, R. Gregory Taylor, Oxford University Press,
1998.
Introduction to Automata Theory, Languages and Computation, 2nd Ed., John Hopcroft,
Rajeev Motwani, Jeffrey Ullman, Addison Wesley, 2001.
Elements for the Theory of Computation, Harry Lewis and Christos Papadimitriou, 2nd Ed.,
Prentice Hall, 1998.
Introduction to the Theory of Computation, Michael Sipser, PWS Publishing Co, 1997.