You are on page 1of 46

LICENCIATURA EM ENGENHARIA INFORMTICA

TEORIA DA COMPUTAO

Antnio Dourado Pereira Correia

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.

Departamento de Engenharia Informtica


Faculdade de Cincias e Tecnologia
Universidade de Coimbra
Setembro 2011
ndice Geral

Captulo 1. Introduo e definies bsicas 1

Captulo 2. Autmatos finitos 43

Captulo 3. Expresses regulares, linguagens regulares


e gramticas regulares 115

Captulo 4. Propriedades das linguagens regulares 153

Captulo 5. Linguagens livres de contexto 179

Captulo 6. Simplificao de gramticas e formas normais 213

Captulo 7. Autmatos de Pilha 245

Captulo 8. Propriedades das linguagens livres de contexto 273

Captulo 9. Mquinas de Touring 299


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

CAPTULO 1

INTRODUO E DEFINIES BSICAS

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

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 1


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 2


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

1.1. Introduo

As cincias da computao, numa interpretao genrica, tm a ver com todos os aspectos


relacionados com os computadores e o seu funcionamento. H no entanto trs temas centrais
que so delas estruturantes: autmatos, computabilidade, complexidade. As trs visam dar
resposta questo primeira - quais so as capacidades e as limitaes fundamentais dos
computadores? O que se pode computar? Estas que tm ocupado intensamente os cientistas da
computao desde os anos 30 do sculo passado, quando a noo e o significado de
computao surgiu no panorama cientfico.

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.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 3


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

1.2.1 Alfabeto, cadeias e operaes sobre cadeias

Um alfabeto composto por um conjunto no vazio de smbolos, usualmente representada


pela letra grega (sigma), de smbolo.

={smbolos}, conjunto no vazio de smbolos (letras, algarismos,...)

Os smbolos de um alfabeto podem ser de qualquer natureza e assumir um aspecto


arbitrrio. Qualquer alfabeto um conjunto, e esta a nica caracterstica comum. A prpria
palavra alfabeto composta pela concatenao do primeiro e segundo smbolos grego, o alfa e
o beta.

Exemplos de alfabetos:

= {a,b}, alfabeto composto pelas duas letras a e b.

= {0,1}, alfabeto binrio composto pelos valores binrios 0 e 1.

= {(,),[,] } , alfabeto dos parnteses

= {0,1,2,3,4,5,6,7,8, 9 }, alfabeto dos algarismos rabes

={a,b,c, ..., z}, o alfabeto romano minsculo

={conjunto de todos as caracteres ASCII}, o alfabeto ASCII.

= {copos, facas, garfos, pratos, colheres, tachos}, o alfabeto dos


instrumentos de cozinha

= {ma, pra, ameixa, banana, }, o alfabeto dos frutos.

Qualquer objecto pode pertencer a um alfabeto. Por isso um alfabeto pode ser um
conjunto de qualquer espcie de coisas.

Por razes de simplicidade usam-se normalmente apenas letras, algarismos e outros


caracteres comuns como #, $, &, etc.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 4


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

Juntando-se vrios caracteres de um alfabeto obtm-se uma cadeia (string, em ingls),


w, formalmente definida como uma sequncias finitas de smbolos do alfabeto.

Exemplo 1.2.1

w= a, w=ab, w=abbaba, cadeias no alfabeto = {a,b}

Exemplo 1.2.2

w =1,w=2, w=23, w=5674, cadeias de algarismos rabes.

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

w= a1a2a3 ....an v= b1b2b3bn

a concatenao direita de v com w , wv, ser

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,

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 5


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

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.

Se uma cadeia no tem qualquer carcter (note-se que o singular de caracteres


carcter, e no carater), ter 0 caracteres, sendo por isso vazia (um conjunto vazio), e denota-
se por (alguns autores denotam por ) . O seu comprimento ser nulo, | |=0, e pode
escolher-se de qualquer alfabeto.

Se concatenarmos uma cadeia vazia com outra cadeia w qualquer, obtm-se

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.

Certas cadeias tm formas especiais. Por exemplo abcdedcba ou abcdeedcba podem


ler-se igualmente da frente para trs ou de trs para a frente. Elas tm um ponto de simetria.
Em linguagem corrente chamam-se capicuas e mais formalmente chamam-se palndromos e
so tais que w = wR. Voltaremos a falar deles.

Subcadeia de uma cadeia w qualquer cadeia composta por caracteres sucessivos de


w . Se dividirmos qualquer cadeia w em duas partes u e v, tal que w=uv, diz-se que u um
prefixo e v um sufixo de w.

Se por exemplo

w=abbab

Poderemos definir os seguintes prefixos de w:

{ , a, ab, abb, abba, abbab}

e os seguintes sufixos de w:

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 6


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

{abbab, bbab, bab, ab, b, }

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.

fcil de ver que

w1=w

Quanto a w0, ela ser a concatenao de w consigo prpria zero vezes. Se a


concatenao uma vez d a prpria cadeia, a concatenao zero vezes d nada, ou seja, a
cadeia vazia e portanto

w0={ }

para todo e qualquer w.

O sinal de potncia tambm se usa para exprimir a concatenao de um carcter


consigo prprio. Por exemplo

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

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 7


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

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 definirmos o conjunto de todas as potncias possveis de um alfabeto, esse conjunto


ter todas as cadeias com zero, um, dois, , qualquer nmero de caracteres do alfabeto. Para
*
exprimir este facto usa-se o smbolo estrela, *, para significar qualquer, e chama-se a o
*
fecho estrela do alfabeto (star-closure). Assim conjunto de todas as cadeias que se
podem obter pela concatenao de zero ou mais smbolos de . Contm sempre a cadeia nula
. simplesmente o conjunto de todas as cadeias possveis no alfabeto , e uma forma
simples e elegante de denotar esse conjunto infinito.

+
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.

Chegamos agora finalmente definio de linguagem, um dos conceitos chave da


computao:

Definio 1.2.1. Linguagem : dado um alfabeto qualquer , linguagem L qualquer


*
subconjunto de .

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.

Define-se frase (ou sentena) como qualquer cadeia na linguagem formal L

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 8


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

A lngua portuguesa um conjunto de cadeias formadas pelas letras do nosso alfabeto


latino. Na linguagem corrente cada cadeia uma palavra e uma frase pode ter vrias palavras.

Na linguagem Java, um programa qualquer correctamente escrito um subconjunto de


todas as cadeias possveis que se podem formar com os caracteres da linguagem. O seu
alfabeto um subconjunto dos caracteres ASCII.

Seja por exemplo o alfabeto ={a,b}.

Nele *={ ,a,b,aa,ab,ba,bb,aaa,aab,aba,abb,baa,bab,bba,bbb, ...}, contm todas as


combinaes possveis dos smbolos do alfabeto, incluindo a cadeia vazia.

(i) O conjunto L1={a, ab, abb} uma linguagem em . uma linguagem finita.

(ii) O conjunto L2={anbn: n 0} uma linguagem em . uma linguagem infinita.

As cadeias ab, aabb, aaabb, pertencem a L2 porque se podem escrever na forma


respectivamente a1b1, a2b2, a3b3. Como veremos a gramtica da linguagem define as regras da
formao das cadeias.

J as cadeias aba, abb, aaababbab, no pertencem a L2 (tente escrev-las naquela


forma de potncias ).

Por vezes define-se uma linguagem exprimindo verbalmente as suas propriedades


especficas que a distinguem de outra qualquer. Por exemplo:

- o conjunto de cadeias em ={0,1} com um nmero de 0s igual ao nmero de 1s

L={ , 01, 10, 0011, 1100, 0110, 0101, 1001, }

- o conjunto dos nmeros binrios cujo correspondente decimal primo

L={10,11,101,111,1011, 1101, 10001, }

Tambm se pode constatar que , a linguagem vazia, no tem qualquer cadeia, uma
linguagem em qualquer alfabeto.

Tambm { }, a linguagem composta apenas pela carcter vazio, uma linguagem em


qualquer alfabeto.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 9


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

Note-se a diferena entre e { } : a primeira no tem qualquer cadeia e a segunda


tem uma cadeia (a cadeia vazia de facto uma cadeia, mesmo que vazia).

1.2.2. Operaes de conjuntos sobre linguagens e suas propriedades

Uma linguagem , como vimos, um conjunto. Portanto aplicam-se-lhe todas as


operaes sobre conjuntos. Se tivermos duas linguagens L1 e L2, poderemos fazer com elas as
seguintes operaes:

Unio: todas as cadeias que pertencem ou a uma ou a outra,

L1 L2 = {w: w L1 ou w L2},

Interseco: todas as cadeias que pertencem simultaneamente a uma e a outra,

L1 L2 = {w: w L1 e w L2},

Diferena de duas linguagens: todas as cadeias que pertencem a uma e no pertencem


outra,

L1 - L2 = {w: w L1 e w L2},

L2 L1 = {w: w L1 e w L2}.

Complemento de uma linguagem: todas as cadeias possveis no alfabeto respectivo


*
(isto , ) menos as cadeias da linguagem complementada,

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}.

Concatenao de duas linguagens: todas as cadeias em que uma parte (prefixo)


pertence primeira linguagem e a parte restante (sufixo), segunda

L1 L2={uv: u L1, v L2},.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 10


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

Dada a concatenao de L1 e L2 ser que L1 L1 L2, para quaisquer L1 e L2 em


quaisquer alfabetos 1 e 2 ?

Tal ser possvel se e s se L2. Vejamos as vrias situaes possveis.

(i) No caso em que os dois alfabetos so disjuntos, se no pertence a L2, ento a


concatenao de uma qualquer cadeia de L1 com uma qualquer cadeia de L2 resulta numa
cadeia que no pertence a L1 e por isso nenhuma cadeia de L1 neste caso pertence
concatenao.

(ii) no caso particular em que as duas linguagens partilham o mesmo alfabeto, ao


concatenarmos a menor cadeia de L1 com a menor cadeia de L2, obtm-se uma cadeia maior
do que a primeira, e portanto no possvel obter em L1L2 a menor cadeia de L1. Pelo menos
essa no pertence a L1L2 e por isso o mesmo sucede a L1 (esta s pertence concatenao se
todas as suas cadeias pertencerem). No caso extremo em que L1=L2, verifica-se a mesma
situao.

Mutatis mutandis da anterior L2 L1 L2 se e s se L1

Distributividade da concatenao em ordem unio

Considerem-se, a ttulo de exemplo, as linguagens

L1={a, ab, b},

L2={0, 01}

L3={11, 111, 1111}

Ento

L2 L3={0,01,11,111,1111} e

L1 . (L2 L3) ={a, ab, b}.{0,01,11,111,1111}=

={a0,a01, a11,a111,a1111,ab0,ab01,ab11,ab111,ab1111,b0,b01, b11,b111,b1111}

={( a0,a01, ab0,ab01, b0, b01), (a11,a111,a1111, ab11,ab111,ab1111, b11,b111,b1111)}

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 11


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

= {a,ab,b}.{0,01} {a,ab,b}{11, 111, 1111}=.{L1 L2 L1L3

Este resultado pode-se generalizar: a concatenao distributiva em relao unio.

L1 . (L2 L3)= L1 L2 L1L3.

De facto se uma cadeia pertence unio de duas linguagens, ela ir entrar na


concatenao. Por outro lado, se uma cadeia no pertence unio, ela no entrar na
concatenao. Sero concatenadas todas as da unio e apenas elas.

Ser a unio distributiva em relao concatenao?

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.

Considerem-se novamente as trs linguagens acima.

Faa-se

L2 L3={0, 01}.{11, 111, 1111}={011,0111,01111,0111,01111,011111}

L1 (L2 L3)={a, ab, b} {011,0111,01111,0111,01111,011111}=

={a, ab, b, 011,0111,01111,0111,01111,011111}

Por outro lado,

( L1 L2) = L1={a, ab, b} {0, 01}= {a, ab, b, 0, 01}

(L1 L3 ) = {a, ab, b} {11, 111, 1111}= {a, ab, b, 11, 111, 1111}

Concatenando estas duas,

( L1 L2). (L1 L3 ) = {a, ab, b, 0, 01}.{a, ab, b, 11, 111, 1111}

={aa, aab, ab, a11,a111,a1111, ...}

Ora as cadeias aa, aab, no pertencem a L1 (L2 L3).

Logo

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 12


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

L1 (L2 L3) ( L1 L2) (L1 L3 )

e conclumos que em geral a unio no distributiva sobre a concatenao.

A concatenao de uma linguagem com o conjunto vazio (linguagem vazia) resulta no


conjunto vazio (analogamente ao produto de um nmero real por zero).

L =

A concatenao de uma linguagem L qualquer com a cadeia vazia resulta na linguagem L


(analogamente ao produto de um nmero real pela unidade).

L =L

Na concatenao o conjunto vazio desempenha o papel de zero e a cadeia vazia o papel da


unidade.

Potncia de uma linguagem

Define-se a potncia n de uma linguagem a partir da concatenao da linguagem


com ela prpria (auto-concatenao) n vezes.

Se concatenarmos uma linguagem zero vezes com ela prpria , vem L0 .

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

...

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 13


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

Chama-se fecho-estrela (star-closure, Kleene star) de uma linguagem L* ao conjunto


de todas as cadeias que se podem obter por concatenao da linguagem com ela prpria, um
nmero arbitrrio de vezes (incluindo zero vezes), ou seja,

L* = L0 L1 L2 L3 ......

Se tivermos, por exemplo, a linguagem L={0,1}, o seu fecho estrela o conjunto de


todas as cadeias de 0s e 1s, incluindo a cadeia vazia. De facto

L0={ } - todas as cadeias com zero caracteres

L1 ={0,1} - todas as cadeias de 0s e 1s com um carcter

L2 ={0, 1}.{0, 1}={00,01,10,11} - todas as cadeias de 0s e1s com dois caracteres

L3={0, 1}.{0, 1}.{0,1}={00,01,10,11}.{0,1}={000,001,010,011,110,111}

- todas as cadeias de 0s e 1s com trs caracteres

L4={0, 1}.{0, 1}.{0,1}.{0,1} - todas as cadeias de 0s e 1s com quatro caracteres,

E assim sucessivamente. Unindo agora todos os subconjuntos teremos o conjunto de


todas as cadeias de 0s e 1s com zero, um, dois, trs, , qualquer nmero de caracteres, ou
seja, todas as cadeias possveis de 0s e 1s. Assim o fecho estrela desta linguagem com duas
cadeias uma linguagem infinita. Note-se que L* contm sempre , independentemente de L
o conter ou no.

Se considerarmos a linguagem L={0, 11}, o que dar o seu fecho estrela ?

L0={ } - pelas razes anteriores

L1 ={0,11}

L2 ={0, 11}.{0, 11}={00,011,110,1111}

L3={0, 11}.{0, 11}.{0,11}={00,011,110,1111}.{0,11}=

={000,0011,0110,01111,1100,11011,11110,111111}

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 14


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

E assim sucessivamente. Obtm-se todas as cadeias de 0s e 1s em que os 1s


aparecem sempre aos pares. Por exemplo a cadeia 00110110, mas no 0010110 nem 0011010.
Como se poder obter 00110110 a partir de ? De L6 possvel: 0011 pertence a L3, e 0110
pertence tambm a L3.

Ainda neste exemplo o fecho estrela da linguagem finita com apenas duas cadeias
resulta numa linguagem infinita.

H algumas linguagens que tm a concatenao aparentemente estranhas.

Se considerarmos L a linguagem que contm todas as cadeias de 0s (incluindo zero


0), ento L*=L. Tal como se for a linguagem conjunto de todas as cadeias de 1s . L infinita,
tal como o seu fecho estrela.

*
E o fecho estrela da linguagem vazia, ?

0
={ }

1
=

2
=

Unindo tudo vem

*
={ } ={ }

Quanto linguagem com o carcter vazio, L={ }, o seu fecho estrela L*={ }.

A linguagem e a linguagem { } so as duas nicas linguagens que tm um fecho


estrela finito.

Fecho-positivo (positive closure) de uma linguagem, L+ , o conjunto de todas as


cadeias que se podem obter por concatenao da linguagem com ela prpria uma ou mais
+
vezes. Se L no tem , tambm no,

L+ : L1 L2 L3 ...... = L* - { }

Exemplo: Seja

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 15


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

L={anbn, n 1}

Logo:

L={ab, aabb, aaabbb, aaaabbbb, ....}

L2= LL={ab, aabb, aaabbb, aaaabbbb, ...

abab, abaabb, abaaabbb, abaaaabbbb, ...

aabbab, aabbaabb, aabbaaabbb, aabbaaaabbbb, ...

........... }

Procurando uma forma compacta para L2, pode-se escrever

L2= {anbnambm, n 1, m 1}, n e m so independentes.

A reversa de L fcil de calcular: basta revertermos a expresso que a define:

LR={bnan, n 1}

Se tivermos necessidade de escrever o complemento de L de uma forma sinttica,


como faz-lo? Trata-se de todas as cadeias que no obedeam regra de formao de L. Por
exemplo aab, baa, ababab, bababa, aaaa, aaaa, bbaab, bbbbaa, . Ser fcil encontrar uma
expresso compacta, em notao de conjuntos, que inclua todas as cadeias do complemento
de L ? Fica o desafio ao leitor.

E o fecho estrela L* ?

Nem sempre a notao de conjuntos a mais adequada para representar linguagens.


Por isso foram desenvolvidas representaes alternativas: as expresses regulares e as
gramticas. Estud-las-emos em captulos posteriores. Mas vejamos desde j algumas noes
bsicas de gramticas.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 16


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

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

Uma gramtica tambm uma ferramenta para estudar matematicamente linguagens,


muito poderosa, que ultrapassa as limitaes da notao de conjuntos anterior.

Vejamos um exemplo da lngua portuguesa

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):

Regra: uma frase composta por um sintagma nominal e um sintagma verbal.

Pode no ter sintagma nominal ou o sintagma verbal; mas tem que ter pelo menos um
deles.

Simbolicamente escreve-se a regra de produo

frase sintagma nominal sintagma verbal (produo 1)

O sintagma nominal composto por um determinante e um nome (pelo menos um


deles) ou pode ser vazio:

sintagma nominal determinante nome | vazio (produes 2 e 3)

O determinante pode ter um artigo ou um dectico, ou nada:

determinante artigo | decticos | vazio (produes 4,5,6)

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 17


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

O sintagma verbal composto por um verbo e um sintagma nominal (pelo menos um


deles):

sintagma verbal verbo sintagma nominal (produo 7)

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:

verbo estuda | ama | compra | dorme|chove (produes 8 a 12)

artigo o | a |um | uma|<vazio> (produes 13 a 17)

decticos este | esse | aquele | meu | teu | seu |<vazio> (produes 18 a 24)

nome Lus | Antnia | Isabel | livro | gelado | (produes 25 a 29)

Com as regras de produo e os elementos terminais dados, poderemos agora formar


frases.

Por exemplo para produzir a frase

a Antnia compra aquele gelado

usam-se as regras de produo na ordem adequada para o fim em vista:

frase sintagma nominal sintagma verbal produo 1

determinante nome sintagma verbal produo 2

determinante nome verbo sintagma nominal produo 7

determinante nome verbo determinante nome produo 2

determinante nome verbo dectico nome produo 5

a nome verbo dectico nome produo 13

a Antnia verbo dectico nome produo 26

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 18


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

a Antnia compra dectico nome produo 10

a Antnia compra aquele nome produo 20

a Antnia compra aquele gelado produo 29

Verifique o leitor se as seguintes frases obedecem gramtica dada:

(i) O Joo foi ao cinema

(ii) Chove

(iii) A Isabel ama o Lus

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.

A generalizao deste princpio leva-nos s gramticas formais isto , gramticas das


linguagens formais, as linguagens dos computadores.

As linguagens formais so construes matemticas (conjuntos) que obedecem a


certas regras. Para que no haja equvocos, as gramticas formais devem ter uma estrutura
clara, coerente, completa. Por isso usam-se notao e conceitos matemticos precisos para a
sua definio e manipulao.

Definio 1.3.1. Gramtica.

Uma gramtica G definida por um quarteto

G=(V, T, S, P)

em que

V : variveis, conjunto no vazio finito de objectos,

T: smbolos terminais, conjunto no vazio finito de objectos,

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 19


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

S V: varivel de inicializao, um smbolo especial, tambm chamado


axioma,

P : um conjunto finito de produes

As variveis no podem ser smbolos terminais e vice-versa, isto V e T so conjuntos


disjuntos. No nosso estudo so em geral caracteres.

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.

Gramticas diferentes podem produzir a mesma linguagem. Nesse caso so gramticas


equivalentes. Mais frente estudaremos tcnicas e algoritmos para transformar uma gramtica
numa outra sua equivalente.

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.

As regras de produo de uma qualquer gramtica tm sempre a forma padro

x y

que se l (a cadeia) x produz (a cadeia) 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

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 20


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

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 *).

A cadeia produzida y, chamada o corpo da produo, pode conter variveis da


gramtica, e/ou smbolos terminais, podendo ser a cadeia vazia. Neste caso quer dizer que a
produo consiste simplesmente na anulao de x. Anota-se assim por

y (V T)*

sendo agora legtimo escrever ( * ) para admitir a possibilidade da cadeia vazia. De facto (V T)0
resulta na cadeia vazia.

A produo substitui, numa forma sentencial, a cadeia x pela cadeia y. Isto ,

dada uma cadeia w = uxv

e a regra de produo x y,

____________

por substituio de x por y em w, obtm-se a cadeia z = uyv

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

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 21


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

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

(* ) exprime o facto de que para derivar wn a partir de w1 so necessrios um nmero no

especificado de passos (incluindo eventualmente zero passos, como em w1 w1 ).

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}

Se uma dada cadeia pertence linguagem, w L(G), ento a sequncia

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 22


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

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.

Seja a gramtica definida pelo quarteto

G =({S}, {a,b}, S, P)

Comparando com a definio 1, identificam-se os elementos do quarteto:

Conjunto V das variveis: S

Smbolos terminais: a,b , as cadeias terminais tero apenas estes smbolos

Varivel de inicializao: S

As produes P dadas por

P1: S aSb : partindo do smbolo inicial S, coloca-se-lhe um a antes e


um b depois.

P2: S : o smbolo S pode ser substitudo pela cadeia vazia (isto ,


por nada).

Uma derivao pode seguir o seguinte percurso:

S aSb aplicando a produo P1

aaSbb produo P1

aaaSbbb produo P1

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 23


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

...

pode-se continuar um nmero qualquer de vezes, at ao infinito. Vo-se obtendo sucessivas


formas sentenciais.

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,

ao fim da 1 produo obtm-se ab

ao fim da 2 produo obtm-se aabb

etc.,

ao fim da nsima produo obtmse aaa....abbb...b = anbn

Se aplicarmos primeiro a produo P2 obtm-se a cadeia vazia e no se pode


prosseguir.

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.

Para os outros casos faamos a demonstrao por recursividade da produo P1 e


induo.

Queremos provar que qualquer que seja n 1, todas as formas sentenciais so da forma

wn = anSbn

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 24


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

- base da induo, n=1, verdade ?

sim, resultante de uma vez P1 a partir de S.

-hiptese indutiva: admitamos que verdade para n=k e para todos os anteriores, ou seja,
verdade que

wk = akSbk

-passo indutivo: em consequncia verdade para k+1 ou seja

wk+1 = ak+1Sbk+1

Prova do passo indutivo (nesta prova h-de entrar a hiptese indutiva):

Partindo de wk e por aplicao de P1 obtm-se wk+1

wk+1 awkb

mas substituindo a hiptese indutiva nesta produo,

wk+1 a(akSbk )b

Manipulando a expresso

wk+1 (aak)S(bkb)

ou ainda por definio de concatenao (potncia) de caracteres,

wk+1 ak+1 Sbk+1

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.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 25


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

Exemplo 1.3.3:

Encontrar uma gramtica que gere a linguagem

L={an+1bn, n 0}

Esta linguagem parecida com a do exemplo anterior, com a diferena de que


necessrio gerar um a adicional esquerda de b. Pode-se simplesmente ger-lo em primeiro
lugar, aplicar depois regras de produo como no caso anterior:

P1: S aS

P2: S aSb

P3: S

Teramos assim a gramtica definida exactamente como a anterior:

G = ({S}, {a,b}, S, P)

Como as produes de podem aplicar por ordem arbitrria e um nmero arbitrrio de


veses, aplicando P1, P1, P2, P3, obtm-se

S aS aaS aaaSb aaab

i.e. a3b, que no faz parte da linguagem.

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

em que S a varivel de inicializao. Note-se que partindo de S no se pode voltar a ele, e


por isso P1 s se aplica uma vez, sendo sempre a primeira. Poderemos agora definir a
gramtica G com o quarteto

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 26


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

G=({A}, {a,b}, S, P)

sendo P composto pelas trs produes P1, P2 e P3.

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 ,

G1 e G2 so gramticas equivalentes se L(G1)=L(G2)

Na Fig. 1.3.1 as gramticas G2, G3 e G4 so equivalentes.

Os palndromos so cadeias que tm interesse especial para o estudo de gramticas e


autmatos. Vejamos mais em detalhe como se podem definir e gerar.

Definio formal de palndromos ( PAL) sobre um alfabeto

Seja PAL a linguagem constituda por todos os palndromos (capicuas) sobre um dado
alfabeto. Pode-se definir pelas trs regras seguintes

1. O carcter vazio simtrico, logo pertence aos palndromos.

PAL

2. Qualquer carcter isolado simtrico, logo um palndromo

Para todo o a , a PAL,

3. Se tivermos uma cadeia simtrica e lhe adicionarmos o mesmo carcter no princpio e no


fim, resulta uma cadeia simtrica,.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 27


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

Para toda a cadeia w PAL , e todo o a , awa 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 }

Aplicando aquelas 3 regras,

1. PAL

2. a PAL, b PAL

3. Para qualquer w PAL, awa PAL

bwb PAL

Qualquer cadeia pertence a PAL se e s se for gerada pelas regras 1, 2 e 3.

Por exemplo:

b PAL , regra 2

aba PAL, regra 3

babab PAL regra 3

abababa PAL regra 3

Como se poder escrever uma gramtica para esta linguagem?

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)

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 28


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

2 P2: S a (regra 2)

P3: S b (regra 2)

3 P4: S aSa (regra 3)

P5: S bSb (regra 3)

Por exemplo para gerar abba teremos a sequncia de produes

S aSa abSba ab ba abba

Pode-se escrever as 5 produes gramtica na forma compacta, usando | para o ou lgico

S |a|b|

S aSa | bSb

1.4.Autmatos

Os autmatos finitos so modelos abstractos de muitos dispositivos de hardware e de


software. Aplicam-se nomeadamente em (Hopcroft& col)

1- software para o projecto e o teste de circuitos digitais.

2- Analisadores lexicais dos compiladores (que verificam se uma palavra, por


exemplo um identificador, est bem escrita num programa).

3- Software para busca de texto em ficheiros, na web, etc.

4- Software de verificao de sistemas que tm um nmero finito de estados


distintos, tais como protocolos de comunicao, protocolos de segurana, etc.

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.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 29


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

Considere-se por exemplo um interruptor on-off. Se est off e se se pressiona, passa a


on. Se est on e se se pressiona, passa a off . Ele ter por isso dois estados, o on (A) e o off (F)
Desenhando, teremos os dois estados como dois vrtices de um grafo, Fig.1.3.1.

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

Figura 1.4.2. As transies entre os estados do autmato, provocadas pelo accionamento do


interruptor.

Para se saber como se inicializou o interruptor, identifica-se o estado inicial por uma seta,

Press

F A

Press

Figura 1.4.3. O autmato finito do interruptor.

e tem-se finalmente o desenho de um autmato finito (de dois estados) que representa o
funcionamento do interruptor, na Fig. 1.4.3.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 30


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

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).

Considere-se agora o autmato da figura 1.4.4.

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.

Pode afirmar-se que o autmato de 4 estados capaz de reconhecer a palavra pai: se


chegou ao estado 4, ela pareceu-lhe, caso contrrio nunca chega ao estado 4. Por esta razo
diz-se que o autmato um aceitador da palavra pai. Para assinalar este facto o estado 4
desenha-se com uma dupla circunferncia, como na figura 1.4.6.

p a i
p pa pai

Figura 1.4.6. O autmato com estado final aceitador

E chama-se estado final, ou estado aceitador, conforme os autores. O primeiro


chama-se estado inicial.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 31


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

Vejamos um exemplo um pouco mais complexo.

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

Figura 1.4.7. Uma porta de abertura automtica, rotativa.

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

Figura 1.4.8. Os dois estado do autmato abridor da porta.

Os dois sensores enviam, cada um, informao de presena ou ausncia de pessoas,


que poderemos representar por 0 (ausncia) e 1 (presena).Teremos quatro situaes
possveis, considerando simultaneamente os dois sensores:

00 : ausncia de frente e detrs

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 32


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

01: ausncia de frente e presena detrs

10: presena de frente e ausncia detrs

11: presena de frente e presena detrs.

Em cada uma destas quatro situaes possveis o controlador tem que tomar uma
deciso: fecha, abre ou deixa ficar como est ?

Poderemos constatar que o alfabeto do autmato (o conjunto de informao externa


que ele sabe ler) composto por aquelas quatro situaes, que poderemos associar a 4
caracteres de um alfabeto, conforme a tabela

Tabela 1.4.1. Codificao do alfabeto ao autmato. PF- presena frontal, PR presena na


rectaguarda.

PF PR Carcter

0 0 00 a

0 1 01 b

1 0 10 c

1 1 11 d

Considerando as restries de segurana, teremos as transies possveis representadas na


tabela (de transies) seguinte:

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

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 33


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

Agora fcil desenhar o grafo do autmato, com os dois ns correspondentes aos


estados e as arestas correspondentes 8 transies da tabela. Obtm-se a figura seguinte.

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 .

Como que o controlador fecha e abre a porta? Enviando um sinal a um actuador


mecnico. Poderemos assim considerar que o autmato tem uma sada que pode ter dois
valores: 1 para abrir, 0 para fechar. Poderemos introduzir essa informao colocando sob a
letra do estado o valor lgico correspondente da sada, como na figura seguinte

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.

Depois destes dois exemplos muito simples, estamos em condies de definir um


autmato mais detalhadamente.

Um autmato genrico tem os seguintes componentes:

- um ficheiro de entrada, composto por uma cadeia num alfabeto

- um mecanismo para leitura do ficheiro de entrada de modo que

l a cadeia de entrada da esquerda para a direita, um carcter de cada vez,

detecta o fim da cadeia

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 34


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

- uma sada, onde a unidade de controlo pode escrever

- um dispositivo de memria temporria

composto por um nmero ilimitado de clulas, cada uma capaz de armazenar


um smbolo de um alfabeto (que pode ser diferente do alfabeto de entrada). O
autmato pode ler e alterar o contedo dos registos de memria.

- uma unidade de controlo que

pode estar num de entre um certo nmero finito de estados internos,

pode mudar de estado segundo alguma regra.

Juntando tudo teremos a Fig. 1.4.11.

Ficheiro de entrada Sk

M
e
m
Unidade de Controlo mk
r
qk i
a

Ficheiro de sada yk

Figura 1.4.11. Representao genrica de um autmato finito.

O que lhe d a caracterstica de finito to s o nmero de estados da unidade de


controlo: ele finito.

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.

O autmato funciona em tempo discreto, sequencialmente. Num dado instante k est


num certo estado interno, k, e o mecanismo de entrada est a ler um smbolo sk no ficheiro de

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 35


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

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,

qk+1 = f(qk, sk, mk)

Entre dois instantes de tempo sucessivos pode produzir-se uma sada ou pode alterar-
se o contedo da memria.

Chama-se configurao do autmato ao conjunto composto por

- o estado interno da unidade de controlo,

- o ficheiro de entrada e

- o contedo da memria.

Chama-se um passo transio do autmato de uma configurao para a configurao


seguinte.

Todos ao autmatos que estudaremos se enquadram nesta descrio genrica. Os


diversos tipos que estudaremos distinguem-se por

i) a forma de produzir a sada , sendo

aceitadores se reconhecem ou no a cadeia de entrada; no tm sada informam pelo


estado final em que terminam a leitura da entrada

transdutores se produzem cadeias de caracteres na sada com alguma utilidade

ii) a natureza da memria temporria (o factor mais importante)sendo

autmatos finitos se no tm memria temporrio ou

autmatos de pilha se tm uma memria em pilha LIFO (em ingls pushdown


automata, de empurrar (a pilha) para baixo ),

mquinas de Turing se tm a memria em fita, de dimenso infinita, que pode


ser lida e alterada em qualquer ordem

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 36


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

iii) a natureza da funo de transio, dizendo-se

determinsticos se dada uma configurao, existe um e um s comportamento


futuro possvel ou

no determinsticos se dada uma configurao, o prximo passo pode ter vrias


alternativas.

1.5. Os trs paradigmas da computao

Quando falamos em computao, o que queremos dizer exactamente ?

Em primeiro lugar computao poder ser o clculo do valor numrico de uma


funo, como por exemplo da funo f(n), que calcula o n-sino nmero primo,

f ( n) n simo nmero primo

trata-se de uma funo unria, ou da funo g, produto de dois nmeros,

g (n, m) n m

funo binria, de dois argumentos m e n ou ainda da funo h, soma de n nmeros,

h a1 a2 ... an

funo n-ria (de n argumentos).

Este tipo de computao mais antigo do que os computadores digitais, alis to


antigo quanto a civilizao humana, dado que desde muito cedo o homem precisou de fazer
clculos matemticos (para calcular o calendrio, por exemplo).

Na era do computador digital h outros tipos de computao. Por exemplo, poderemos


ter uma cadeia de 0s e 1s e calcular a sua paridade, ou o nmero de zeros. Ou ento
queremos saber se uma cadeia um palndromo, ou se a palavra public est bem escrita
num programa de computador em Java.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 37


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

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.

O problema de reconhecimento de linguagens domina a teoria da computao.


Falaremos dele repetidamente at ao final da disciplina e ele ocupa a maior parte dos livros de
teoria da computao.

Porque assim to importante?

Em primeiro lugar porque muito representativo: pode-se reduzir qualquer problema


de deciso a um problema de reconhecimento de linguagens.

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.

Comecemos pela verificao da primeira razo.

Considere-se o problema de deciso seguinte

- o nmero natural n primo ?

Trata-se de um problema de deciso: decidir se ou no, mas decidir de modo


fundamentado.

Construa-se no alfabeto ={1} a linguagem composta por cadeias de 1s que tm um


comprimento igual a um nmero primo:

L ={1n, n primo},

em que como sabemos 1n = 1111 , n vezes

Isto

L={11, 111, 11111, 1111111, }

Agora temos o problema de reconhecimento de linguagens

- a cadeia 1n pertence linguagem L ?

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 38


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

equivalente ao problema de deciso acima enunciado.

Alm do clculo do valor de uma funo ou do reconhecimento de uma linguagem


temos outro tipo de computao: o da transduo de cadeias, ou seja, a transformao de
uma cadeia de smbolos por exemplo revertendo-a, deslocando-a para a esquerda ou para a
direita, contando o nmero de as, etc. Temos aqui o terceiro paradigma da computao.

De entre os trs paradigmas da computao, qual o mais importante?

De facto nenhum mais importante do que o outro. Verifica-se at o princpio da


inter-redutibilidade (Fig.1.5.1): qualquer instncia de um dos trs paradigmas se pode reduzir
a uma instncia de qualquer um dos outros dois.

Clculo de
funes f(n)

Reconhecimento Transduo de
de Linguagens cadeias

Figura 1.5.1. Inter-redutibilidade entre os trs paradigmas da computao.

Vejamos como.

i) Qualquer caso de computao de uma funo pode ser reduzido a uma instncia do
reconhecimento de uma linguagem.

Exemplo 1.5.1. Seja a funo

f(n) = m , m o n-simo nmero primo

Tabela 1.5.1. Funo n-simo nmero primo

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 39


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

n 1 2 3 4 5 6

f(n) 2 3 5 7 11 13

Suponhamos que queremos calcular

f(5) = ??

Para reduzir este clculo a um problema de reconhecimento de linguagens faa-se a


construo engenhosa seguinte (inspirado em Taylor):

1 Usando a representao binria de nmeros naturais, constroem-se as cadeias que


resultam da concatenao de 101, isto 5 em binrio, com os nmeros naturais (1, 2, 3, 4, 5,
6, ), usando por exemplo # como separador:

101#1
101#10
101#11
101#100
101#101
101#110
101#111

2 Define-se agora a linguagem L associada aos nmeros primos

L ={Binrio(n)#Binrio(m)}

(no esquecer que m o n-sio nmero primo).

A computao do valor de f(5) equivalente determinao de qual a nica cadeia


daquele conjunto que pertence a L . De facto h-de l estar, naquele conjunto de cadeias,

101#1011

Assim, procurando-a, ficamos a saber que

f(5)=11

ii) Reduo de uma classificao de cadeias a uma computao numrica de uma funo

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 40


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

Tomemos o caso do reconhecimento de palndromos.

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.

Por exemplo, em ={a,b}, se a = 01 e b = 10, ento o palndromo aba resulta no


nmero natural 011001=2510.

Em segundo lugar constri-se a linguagem dos palndromos, L(Pal),.

L(Pal)= {a,b,aa,bb,aaa, aba,bab, bbb,

e os seus cdigos,

Cdigos= {01,10,0101,1010,010101, 011001,100110,101010, }

A funo caracterstica de L ser

1,se n o cdigo de um palndromo


( n)
0, se n no o

Agora para se saber se 25 o cdigo de um palndromo, basta calcular o valor da


funo caracterstica (25) que 1, e assim se conclui que aba um palndromo.

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.

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 41


Teoria da Computao Captulo 1 Introduo e Definies Bsicas

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.

Anexo 1. Tabela de nmeros primos

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139


149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443
449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613
617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787
797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971
977 983 991 997 1009 1013 1019 1021 1031 1033 1039 1049 1051 1061 1063 1069 1087 1091 1093 1097 1103
1109 1117 1123 1129 1151 1153 1163 1171 1181 1187 1193 1201 1213 1217 1223 1229 1231 1237 1249 1259
1277 1279 1283 1289 1291 1297 1301 1303 1307 1319 1321 1327 1361 1367 1373 1381 1399 1409 1423 1427
1429 1433 1439 1447 1451 1453 1459 1471 1481 1483 1487 1489 1493 1499 1511 1523 1531 1543 1549 1553
1559 1567 1571 1579 1583 1597 1601 1607 1609 1613 1619 1621 1627 1637 1657 1663 1667 1669 1693 1697
1699 1709 1721 1723 1733 1741 1747 1753 1759 1777 1783 1787 1789 1801 1811 1823 1831 1847 1861 1867
1871 1873 1877 1879 1889 1901 1907 1913 1931 1933 1949 1951 1973 1979 1987 1993 1997 1999 2003 2011
2017 2027 2029 2039 2053 2063 2069 2081 2083 2087 2089 2099 2111 2113 2129 2131 2137 2141 2143 2153
2161 2179 2203 2207 2213 2221 2237 2239 2243 2251 2267 2269 2273 2281 2287 2293 2297 2309 2311 2333
2339 2341 2347 2351 2357 2371 2377 2381 2383 2389 2393 2399 2411 2417 2423 2437 2441 2447 2459 2467
2473 2477 2503 2521 2531 2539 2543 2549 2551 2557 2579 2591 2593 2609 2617 2621 2633 2647 2657 2659
2663 2671 2677 2683 2687 2689 2693 2699 2707 2711 2713 2719 2729 2731 2741 2749 2753 2767 2777 2789
2791 2797 2801 2803 2819 2833 2837 2843 2851 2857 2861 2879 2887 2897 2903 2909 .

LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 42

You might also like