Você está na página 1de 24

Prof.

Rmulo Silva
1

Teoria

da

Computao


Maio/2007







Prof. Rmulo Silva
2

Objetivo desta apostila

Esta apostila foi desenvolvida com o objetivo de facilitar o entendimento da Teoria da
Computao, principalmente no que se refere s Linguagens Formais e Autmatos. Na
sua elaborao foram utilizados os principais livros-textos adotados em disciplinas dessa
rea.

Os exemplos apresentados so bastante simples, visando fins didticos. Portanto, esta
apostila NO substitui os livros-textos, sendo apenas um material auxiliar.

Se voc tem sugestes e/ou correes, envie para romuloce@hotmail.com .

Agradecemos antecipadamente.

Rmulo Csar Silva





Prof. Rmulo Silva
3

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

2. Gramticas e Linguagens Formais

Uma gramtica define a estrutura geral de formao de uma sentena vlida para
uma linguagem. Suponha o seguinte exemplo simplificado para a Lngua Portuguesa:

<Frase> ::= <Sujeito> <Predicado>
<Sujeito> ::= <Artigo> <Substantivo>
<Predicado> ::= < Verbo> <Complemento>
<Complemento> ::= <Artigo> <Substantivo>
<Artigo> ::= o | a
<Substantivo> ::= livro | mente
<Verbo> ::= abre




Prof. Rmulo Silva
4

Forma Normal de Backus. A gramtica anterior est especificada numa notao
conhecida como Forma Normal de Backus (BNF). Nessa notao, as palavras entre
os smbolos < e > so chamadas variveis. O smbolo ::= indica que a varivel sua
esquerda pode ser substituda pelos valores direita.

Assim, a gramtica anterior estabelece que uma frase formada por um sujeito
seguido de um predicado, sendo que este por sua vez formado por um verbo
seguido de um complemento. E portanto, a frase o livro abre a mente uma frase
vlida segundo a gramtica acima.

Em uma linguagem de programao teramos, por exemplo, uma regra que define um
comando de atribuio vlido:

<Atribuicao> ::= <Varivel> := <Valor> ;
onde <Varivel> se refere a qualquer seqncia de caracteres comeando com
alguma letra.

A descrio de gramticas seguindo essa forma, embora de simples entendimento,
no muito prtica quando se deseja estudar mais genericamente as propriedades
das linguagens. Assim, na teoria da computao geralmente dado um tratamento
matemtico s linguagens e adotam-se convenes de notao e simplificaes,
procurando facilitar sua representao e o estudo de suas propriedades.

Exemplo de convenes: ao invs de se escrever <Varivel>, em geral utiliza-se
apenas uma letra maiscula (V) para representar tais tipos de construo.

Alm disso, na Teoria da Computao, em geral procura-se estudar classes de
linguagens ao invs de uma linguagem especfica.

A seguir, algumas definies essenciais para o estudo de Linguagens Formais:

2.1 Alfabeto (): um conjunto finito de smbolos.
Na lngua portuguesa seria formado pelas 27 letras do alfabeto mais os dgitos de 0 a
9.
Outros exemplos: o alfabeto grego, o alfabeto russo.

Usamos a letra grega sigma maiscula () para representar o alfabeto de uma
linguagem.
Ex.: = {0,1} representa o alfabeto composto pelos smbolos 0 e 1.

2.2 Palavra ou cadeia: uma seqncia finita de smbolos do alfabeto concatenados
Exemplos de palavras utilizando o alfabeto = {0,1}: 0, 1, 010, 111, 011, etc.

O comprimento de uma cadeia w, denotado por |w| o nmero de smbolos que
compem w. Assim a palavra 011 tem comprimento 3 (trs).

Usamos a letra grega epsilon minscula () para representar a palavra vazia, isto ,
tem comprimento 0 (zero).





Prof. Rmulo Silva
5
O smbolo * indica o conjunto de todas as palavras possveis de serem formadas a
partir do alfabeto , de qualquer comprimento incluindo a palavra vazia ().

A notao a
n
indica a repetio do smbolo a n vezes. Assim a
3
representa aaa, a
2

representa aa e a
0
representa (palavra vazia).

2.3 Linguagem Formal: um conjunto de palavras sobre um alfabeto.
Exemplos de linguagens formais sobre o alfabeto = {0,1}:
a) L = { 01, 1010, 1110} representa a linguagem formada pelas cadeias 01, 1010 e
1110 somente.
b) L = { w | w tem nmero mpar de zeros em *} representada todas cadeias
possveis com nmero mpar de zeros usando somente os smbolos 0 e 1.


3. Representao de Linguagens Formais

Uma linguagem formal pode ser representada de 3 maneiras:
Enumerao das cadeias que fazem parte dela.
Gramtica, isto , um conjunto de regras que especifica a formao das
cadeias.
Dispositivo reconhecedor (mquina), que possui embutido um conjunto de
regras de aceitao de cadeias.

A primeira s pode ser utilizada para linguagens finitas. As duas ltimas so capazes
de representar linguagens com nmero infinito de cadeias.

Gramtica. A definio formal de uma gramtica uma qudrupla ordenada
G = (V,T, P,S), onde:
V o conjunto de smbolos no-terminais, tambm chamados de variveis
T o conjunto de smbolos terminais, tal que V T =
P o conjunto de regras de produo
S o elemento de V denominado smbolo inicial

As regras de produo so escritas na forma , onde e so compostos de
no-terminais e terminais; alm disso, possui pelo menos um no-terminal.

Convenes. As seguintes convenes de notao so adotadas:
Cada no-terminal representado por apenas uma letra maiscula do alfabeto
portugus {A, B, C, D, ...}
Cada terminal representado por apenas uma letra minscula ou dgito
{0,1,2,3,4,5,6,7,8,9, a,b,c,d,...}
Utiliza-se a prpria letra maiscula S para ser o smbolo inicial da gramtica.

Exemplo 1: Seja G a gramtica:
S AB
A aA | a
B b

Neste exemplo a gramtica possui 4 regras: S AB, A aA, A a e B b
.




Prof. Rmulo Silva
6
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 AB
(2) aAB
(3) aaAB
(4) aaaB
(5) 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.
Figura 1

S
A B
a
a
a
b
A
A




Prof. Rmulo Silva
7
Efetuando-se todas as possveis derivaes a partir do smbolo inicial S, obtm-se
todas as palavras que compem a linguagem formal descrita pela gramtica,
podendo ser infinito o nmero de palavras.

No exemplo da gramtica anterior possvel gerar o seguinte conjunto infinito de
palavras: L = {ab, aab, aaab, aaaab, aaaaab, ...}. Observando mais atentamente as
palavras geradas fcil notar que todas seguem um padro: so formadas por uma
seqncia de um ou mais as e terminadas exatamente com um b. Assim pode-se
dizer a gramtica representa ou gera a linguagem L = { w | w formada por uma
seqncia de um ou mais as seguido de exatamente um b sobre *}, onde = {a,b}.

Linguagens de Programao. A gramtica de uma linguagem de programao
representa todos os programas possveis de serem escritos nela, geralmente um
nmero potencialmente infinito de programas. Assim, o primeiro trabalho do(s)
criador(es) de uma linguagem de programao definir sua gramtica.

Notao. Usa-se L(G) para denotar a linguagem gerada pela gramtica G.

Gramticas equivalentes. Uma mesma linguagem pode ser gerada por diferentes
gramticas. Por exemplo, a gramtica:
S Ab
A aA | a
gera a mesma linguagem descrita pela gramtica vista anteriormente. Assim, quando
duas gramticas geram a mesma linguagem, elas so ditas gramticas equivalentes.
Formalmente: G
1
equivalente a G
2
se e somente se L(G
1
) = L(G
2
).

No estudo das linguagens formais, as gramticas so classificadas de acordo com as
restries que se impem sobre suas regras de produo. Assim, as linguagens
formais podem ser classificadas em:
Linguagens Regulares (Tipo 3) - LR
Linguagens Livres de Contexto (Tipo 2) - LLC
Linguagens Sensveis ao Contexto (Tipo 1) - LSC
Linguagens Recursivamente Enumerveis (Tipo 0) - LRE


A Figura 2 mostra a relao entre os tipos de linguagens.
Figura 2
As linguagens regulares (LR) so aquelas onde se impem mais restries s regras
de produo.
LR
LLC
LSC
LRE




Prof. Rmulo Silva
8

Hierarquia de Chomsky. As linguagens livres de contexto (LLC) so menos
restritivas que as linguagens regulares (LR). As linguagens sensveis ao contexto
(LSC) so menos restritivas que linguagens livres de contexto (LLC) e assim por
diante. A hierarquia assim gerada chamada de Hierarquia de Chomsky.

Devido ao fato que um tipo de linguagem com mais restries um caso particular de
um tipo de linguagem com menos restries, ento toda LR uma LLC. Toda LLC
uma LSC, e toda LSC uma LRE.

Estudaremos inicialmente apenas as linguagens regulares (LR).

Gramtica Regular (GR). Uma gramtica G regular se todas suas produes so
tais que podem ser colocada em alguma das seguintes formas:
A a
A aB
A

Isto , do lado esquerdo da regra sempre h somente um no-terminal. Do lado
direito h um terminal sozinho (acompanhado no mximo de um no-terminal), ou h
apenas a palavra vazia ().

s vezes, inicialmente a gramtica no possui todas suas regras em alguma das
formas segundo a definio de gramtica regular. No entanto, fazendo-se pequenas
alteraes possvel obter uma gramtica equivalente onde todas as regras estejam
de acordo com a definio de gramtica regular. Exemplo: seja G
1
a gramtica a
seguir:

S AB
A aA | a
B b

G
1
regular. Para ver isto, basta observar que ela equivalente a G
2
, definida por:

S aA
A aA | b

Linguagem Regular (LR). Uma linguagem regular se ela pode ser descrita usando
uma gramtica regular (GR).

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.





Prof. Rmulo Silva
9
Cada tipo de linguagem da Hierarquia de Chomsky possui um reconhecer distinto.

Linguagem Reconhecedor
Linguagens Regulares (LR) Autmatos Finitos
Linguagens Livres de Contexto (LLC) Autmatos com Pilha
Linguagens Sensveis ao Contexto
(LSC)
Mquina de Turing com memria
limitada
Linguagens Recursivamente
Enumerveis (LRE)
Mquina de Turing

Inicialmente estudaremos os autmatos finitos, capazes de reconhecer linguagens
regulares (LR).


5. Autmato Finito Determinstico (AFD)

Definio. Um Autmato Finito Determinstico (AFD) um modelo de mquina
definido formalmente por uma quntupla M = ( , Q, , q
0
, F), onde:
: alfabeto de smbolos de entrada
Q: conjunto finito de estados possveis para M
: funo transio ou funo programa definida em Q x Q
q
0
: estado inicial de M, sendo q
0
Q


F: conjunto de estados finais, tal que F Q

Figura 3

Um AFD pode ser representado esquematicamente conforme a Figura 3: os smbolos
que compem a palavra a ser testada encontram-se escritos numa fita de entrada,
dividida em clulas, onde cada smbolo ocupa exatamente uma clula. H um controle
finito composto pelos estados possveis para o autmato, sendo que existe um
marcador que indica o estado atual. Alm disso, h uma cabea de leitura que l um
smbolo por vez da fita.

Finito. O autmato dito finito porque o conjunto de estados possveis (Q) finito.

Determinstico. O autmato determinstico quando dado o estado atual de M, ao ler
um determinado smbolo na finita de entrada existe apenas um prximo estado
possvel.

cabea de leitura

b a b a a
q
0

q
n

q
1

q
2


fita de entrada
controle finito




Prof. Rmulo Silva
10
Estado Inicial. O estado inicial q
0
indica que ao ligarmos o AFD, o marcador
automaticamente se posiciona no estado q
0
, antes de ler qualquer smbolo da fita de
entrada. S pode existir um nico estado inicial.

Aceitao. Uma palavra reconhecida (ou aceita) quando o AFD aps ler todos os
smbolos contidos na fita de entrada, o marcador se encontrar em um estado final. Ao
contrrio do estado inicial, podem existir vrios estados finais.

Rejeio. Uma palavra rejeitada quando aps ler todos os smbolos da fita de
entrada, o marcador no se encontrar em um estado final ou quando no existe uma
transio definida para um smbolo a ser lido, estando o autmato num determinado
estado.

Mquina de Estados Finitos. Alguns autores denominam os AFDs de mquinas de
estados finitos.

Vejamos um exemplo de AFD:

Seja M = (,Q, ,q
0
,F) tal que = {a,b}, Q = {q
0
, q
1
, q
2
}, F = {q
2
} e a funo transio
(ou funo programa) definida segunda a tabela a seguir:

a b
q
0
q
1
---
q
1
q
1
q
2

q
2
--- ---

Interpretando a tabela: estando no estado q
0
e lendo o smbolo a na fita de entrada, M
muda para o estado q
1
. Tambm estando no estado q
0
e lendo o smbolo b na fita de
entra, M rejeita a palavra, pois no h transio definida esta situao. J estando no
estado q
1
, e lendo o smbolo a, M permanece no estado q
1
. Quando M est no estado
q
1
e l um smbolo b, ele muda para o estado q
2
. E uma vez no estado q
2
, qualquer
smbolo que seja lido, a palavra ser rejeitada, pois no h transies definidas a partir
de q
2
.

Grafo Orientado. Comumente representa-se a funo programa () utilizando-se um
grafo orientado. A Figura 4 apresenta o grafo correspondente funo programa do AFD
do exemplo anterior.

Figura 4

Os ns do grafo representam os estados possveis do AFD enquanto as arestas
orientadas representam as transies. A origem de uma seta indica o estado atual. O
smbolo a ser lido colocado sobre a seta.

a
a
b
q
2

q
0
q
1





Prof. Rmulo Silva
11
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 q
0
, q
1
e q
2
, sendo q
0
o estado inicial e q
2
o estado final. O estado q
1
pode ser traduzido como estado onde se l um ou mais as.
O estado q
2
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
B b

Teorema: Toda linguagem regular (LR) possui um AFD equivalente.

Outro exemplo: seja L = { ab
n
c
m
| n 0 e m 0}. O AFD a seguir reconhece L.

Figura 5

M = (, Q, , q
0
, F) onde = {a, b, c}, Q = {q
0
, q
1
, q
2
}, est representada pelo grafo da
Figura 5, q
0
o estado inicial e F = {q
1
, q
2
}. 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.


6. Transformao de AFD em Gramtica Regular (GR)

possvel escrever uma gramtica regular para todo AFD. Para tal basta seguir o
algoritmo a seguir:
a cada estado associado um no-terminal da gramtica, sendo o estado
inicial q
0
associado ao smbolo inicial (S)
para cada transio de estado representada no grafo cria-se uma regra de
produo na gramtica, tal que o estado de origem torna-se o no-terminal
esquerda da regra e o estado destino torna-se um no-terminal do lado direita
da regra aps o terminal lido na transio.
cria-se uma regra para cada no-terminal associado a um estado final onde o
lado direito da regra formado apenas pela palavra vazia ().



b
c
a c
q
2

q
0

q
1





Prof. Rmulo Silva
12
Como exemplo considere o AFD da Figura 5. Fazendo-se q
0
= S, q
1
= A e q
2
= B, a
gramtica equivalente ao AFD :


S aA
A bA | cB |
B cB |


7. Transformao de Gramtica Regular (GR) em AFD

O algoritmo a seguir mostra como encontrar um AFD equivalente a uma dada gramtica
regular. Todas as regras da gramtica devem ser do tipo A aB (no-terminal levando
a um terminal seguido de um nico no-terminal) ou A a (no-terminhal levando a
um terminal sozinho) ou A (no-terminal levando palavra vazia).
Para cada no-terminal crie um estado para o AFD, sendo que o smbolo inicial
seja o estado inicial ( S = q
0
).
Para cada regra do tipo A aB crie uma transio que parta do estado A com
destino ao estado B atravs da leitura do terminal a.
Para cada regra do tipo A a crie uma transio que parta do estado A com
destino a um estado A
x
, atravs da leitura do terminal a. Alm disso, marque o
estado como final
Para cada regra do tipo A , faa do estado associado ao no-terminal A
um estado final.

A Figura 6 mostra o AFD equivalente gramtica regular a seguir:

S aA | bB
A aA | bB | c |
B bB |

Figura 6





b
c
b
a
a
b
B
S
A
A
1





Prof. Rmulo Silva
13
8. Expresses Regulares (ER)

As linguagens regulares podem ser representadas usando uma notao denominada
expresso regular. Uma expresso regular utiliza apenas smbolos terminais e alguns
caracteres especiais (metacaracteres), sendo que estes tm a funo de especificar a
quantidade de vezes que um terminal ou grupo de smbolos terminais se repetem dentro
da formao de uma palavra pertencente linguagem.

Definio. A definio formal de uma expresso regular pode ser feita recursivamente da
seguinte maneira:
Se x um terminal, x expresso regular.
Se r e s so expresses regulares, ento r+s expresso regular. O sinal +
indica que tanto r ou s formam palavras vlidas
Se r e s so expresses regulares, ento rs expresso regular, onde as
palavras so formadas pela concatenao de r e s.
Se r expresso regular, r
*
denota a expresso regular onde r repetida zero
ou mais vezes
Se r expresso regular, r
+
denota a expresso regular onde r repetida uma
ou mais vezes. Portanto r
+
= rr
*

Utilizam-se parntesis para agrupar smbolos que se repetem conjuntamente.

Exemplos:
001(0+1) denota L = {0010, 0011}
01(10+11) denota L = { 0110, 0111}
(0 + 01)1 denota L = { 01, 011}
ab
*
a denota L = {aa, aba, abba, abbba, ...}, isto , L = { w | w inicia com um
a seguido de zero ou mais bs e termina com um a}
a(bc)*a denota L = {aa, abca, abcbca, abcbcbca, ...}, isto , L = { w | w
inicia-se com um a seguido de zero ou mais seqncias de bc e termina
com a}
ab
+
a denota L = {aba, abba, abbba, ...}, isto , L = { w | w inicia-se com um
a seguido de um ou mais bs e termina com a}
(ab + bc)a denota L = {aba, bca}
(a+b)
*
denota L = {a,b}
*
, isto todas as palavras possveis de serem
formadas a partir do smbolos a e b, inclusive a palavra vazia.
(a+b)
*
c(a+b)
*
denota L = { w | w possui exatamente um c sobre = {a,b,c}
*
}

Unix. O comando grep do sistema operacional Unix permite o uso de expresses
regulares para busca de padres.

Exemplos:
grep Mar* arq: listar todas as linhas do arquivo arq que contm
palavras contendo a string Mar.
grep Maria arq* : listar todas as linhas de arquivos cujo nome
comece com arq e que contenha a string Maria.
grep i maria arq : listar todas as linhas do arquivo arq que
contenham a string maria (ignorando maisculas e minsculas).
grep v maria arq : listar todas as linhas do arquivo arq que no
contenham a string maria.




Prof. Rmulo Silva
14
grep [a-z] arq: listar todas as linhas do arquivo arq que comecem
com as letras minsculas de a a z.

9. Autmatos Finitos No-determinsticos (AFND)

Definio. Um autmato finito no-determinstico (AFND) similar a um AFD, porm
existe pelo menos um estado tal que ao ler um mesmo smbolo h mais de uma
possibilidade de estado destino.

Figura 7

No autmato da Figura 7, existem duas transies de estado possveis ao ler o smbolo
a estando o autmato no estado q
0
.

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

10. Autmatos Finitos com Transies (AF)

Definio. Um autmato finito com transies (AF) um AFND onde existem
transies feitas a partir da palavra vazia.

Uma transio a partir da palavra vazia indica que o autmato pode alterar seu estado
sem ler nenhum smbolo da fita.

AFND. A existncia de apenas uma transio usando a palavra vazia suficiente para
que o autmato seja considerado no-derterminstico (AFND), pois existe uma situao
o autmato pode efetuar uma transio sem ler qualquer smbolo da fita.

Aceitao e Rejeio. A aceitao e rejeio de cadeias so feitas do mesmo modo
que em AFND.

c
a
b a
q
2

q
0

q
1





Prof. Rmulo Silva
15
Figura 8

No AF da Figura 8, o autmato pode fazer a transio para o estado q
1
a partir do
estado q
0
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 no-
determinismo 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.

11. Transformao de Expresses Regulares em AF

Existe um algoritmo simples para converso de expresses regulares em AF. Segue
sua descrio:

Se uma expresso regular r constituda por um nico smbolo x, ento r pode
ser representada por um autmato de apenas 2 (dois) estados, tal que existe
uma transio do primeiro para o segundo estado lendo o smbolo x.
Se uma expresso regular r da forma r = r
1
+ r
2
, isto , as palavras vlidas
so palavras da linguagem descrita por r
1
ou da linguagem descrita por r
2
,
ento r pode ser representada pela unio dos autmatos M
1
e M
2
, que
reconhecem r
1
e r
2
respectivamente, de maneira que M
1
e M
2
formem
caminhos exclusivos entre si utilizando transies .
Se uma expresso regular r da forma r = r
1
r
2
, isto , as palavras vlidas so
obtidas da concatenao das palavras da linguagem descrita por r
1
com
palavras da linguagem descrita por r
2
, ento r pode ser representada pelo
seqenciamento dos autmatos M
1
e M
2
, que reconhecem r
1
e r
2

respectivamente, de maneira que M
2
segue M
1
utilizando uma transio .
Apenas o estado que no possui transies com origem nele um estado
final.

Inicialmente procura-se desenhar os autmatos dos smbolos isoladamente, que so de
fcil representao. Os autmatos obtidos so combinados segundo as regras
anteriores at se obter o autmato que representa a expresso regular completa.
c
a
b

q
2

q
0

q
1





Prof. Rmulo Silva
16

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 M
1
e M
2
para as expresses regulares r
1
e r
2
, no o so quando se faz o autmato
que representa r
1
+r
2
. E o mesmo ocorre com M
1
em r
1
r
2
e em r
1
*
.

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:
Figura 10


M
q
0r1
q
0r

q
fr2
q
fr1

M
x


q
0r1

q
0r

q
fr2

q
fr1

M
M
r = x
r = r
1
*

r = r
1
+ r
2

r = r
1
r
2


q
0r1
q
fr1

M


a
b a






Prof. Rmulo Silva
17
Para montar o autmato para a segunda subexpresso (bc)
*
, primeiro montamos o
autmato para bc somente, e sobre o seu resultado aplicamos a regra que permite
repeti-lo zero ou mais vezes, obtendo assim:
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


12. Transformao de AFDs em expresses regulares

Conforme visto anteriormente, todo AFD possui um expresso regular equivalente.
Segue um algoritmo para converter um AFD em expresso regular.
1 passo: dado autmato M, constri-se M equivalente a M, tal que o estado
inicial de M liga-se ao estado inicial de M por transio , e todos os estados
finais de M ligam-se ao nico estado final de M por transio . Alm disso,
os estados finais de M no so finais em M, conforme o esquema da Figura
13.


c b

a
b a

c b








Prof. Rmulo Silva
18
Figura 13

2 passo: elimina-se gradualmente os estados intermedirios entre o estado
inicial e final de M construindo expresses regulares equivalentes s
transies do estado eliminado.

Exemplo: Seja M o autmato da Figura 14. Inicialmente constri-se o autmato M,
mostrado na Figura 15.

Figura 14



Figura 15
q
0


q
0

q
f1

M

q
fn

.
.
.
.
.
.
M:
q
f

c
b
b
a
c
a
q
3

q
1

q
2

q
0

M


c
b
b
a
c
a
q
f

q
1
q
0

q
0

q
3

q
2

M




Prof. Rmulo Silva
19
Observe que o autmato da Figura 15 equivalente ao autmato da Figura 14, pois
apenas foram acrescentados dois estados (um novo estado inicial e um final) ligados
aos respectivos estados inicial e finais usando transies .

Agora procedemos eliminao dos estados intermedirios entre q
0
e q
f
. Assim,
eliminado o estado q
0
obtm-se o autmato da Figura 16.

Figura 16

A expresso regular colocada na transio de q
0
para q
1
representa que saindo de q
0

at chegar em q
1
foram lidos zero ou mais as e necessariamente um b. Isto
corresponde exatamente ao estado eliminado (q
0
).

Em seguida, eliminando-se o estado q1, obtm-se o autmato da Figura 17.

Figura 17

Observe que o estado q
1
possui transio para dois estados distintos (q
2
e q
3
).
Portanto ao efetuar sua eliminao necessrio representar como que saindo de q
0

se chega a q
2
(representado por a
*
ba
*
c), e como se chega a q
3
(representado por
a
*
ba
*
b).

As Figuras 18 e 19 representam a eliminao dos estados q
2
e q
3
, respectivamente.


c
a
*
b
b
a
c
q
f

q
1
q
0

q
3

q
2

a
*
ba
*
b


a
*
ba
*
c
c
q
f

q
0

q
3

q
2





Prof. Rmulo Silva
20
Figura 18


Figura 19

A expresso regular a
*
ba
*
cc
*
+ a
*
ba
*
b equivalente ao autmato original (M). Alm
disso, sabendo que a subexpresso cc
*
equivalente a c
+
e que a
*
ba
*
uma
subexpresso comum funcionando como um prefixo para cc
*
e b, pode-se reescrever
a expresso da seguinte forma: a
*
ba
*
(c
+
+ b).

Ordem de Eliminao e Equivalncia. importante registrar que a ordem de
eliminao dos estados pode resultar em expresses regulares diferentes, porm
equivalentes.

13. Minimizao de autmatos

Definio. Um AFD M para a linguagem regular L mnimo se qualquer outro AFD M
para L, tem-se |Q| |Q|.

Portanto, um autmato mnimo se ele possui o menor nmero de estados possvel
reconhecendo a linguagem em questo.

Algoritmo. Dado um autmato qualquer, ele pode ser minimizado atravs do seguinte
algoritmo de minimizao:
1 passo: transformar o AFN ou AF em AFD
2 passo: eliminar estados inteis (aqueles a partir dos quais no possvel
atingir um estado final)
3 passo: eliminar estados inacessveis e suas transies (aqueles que no
podem ser atingidos a partir do estado inicial)
4 passo: particionar inicialmente os estados em 2 subconjuntos: estados
finais (F) e estados no-finais (Q F)
5 passo: calcular classes de equivalncia (blocos) recursivamente a partir
dos subconjuntos iniciais tal que:
i
E p e a ,
j
E a p ) , ( onde
i
E e
j
E
so classes de equivalncia.


a
*
ba
*
cc
*
+ a
*
ba
*
b
q
f
q
0

a
*
ba
*
b



a
*
ba
*
cc
*

q
f

q
0

q
3





Prof. Rmulo Silva
21
Exemplo: seja o autmato da Figura 20. Esse autmato j determinstico. Portanto
inicia-se eliminando estados inteis. O estado q5 um estado intil porque no estado
final e no possui transies a partir dele, logo pode ser eliminado juntamente com suas
transies, resultando no AFD apresentado na Figura 21.

Figura 20



Figura 21

O AFD obtido no possui estados inacessveis. Ento passa-se construo das
classes de equivalncia, iniciando com os conjunto Q F = {q
0
,q
1
} e F = {q
2
,q
3
,q
4
}.
possvel observar que
1 0
) , ( q a q = e
0 1
) , ( q a q = . Isto , lendo o smbolo a a partir dos
a
a
a
a
b
b
a
q
3

q
0

q
1

q
2

q
4

b
b
b
a
a
a
b
b
a
q
3

q
0

a
q
1

q
5

q
2

q
4





Prof. Rmulo Silva
22
estados que formam o conjunto Q F, o AFD permanece em um estado do prprio
conjunto Q F. J a leitura do smbolo b a partir dos estados do conjunto Q F leva a
estados do conjunto F. Alm disso, a leitura do smbolo a a partir de estados do
conjunto F, o AFD permanece no conjunto F. Assim, podemos agrupar os estados q
0
e
q
1
em nico estado (q
01
) e tambm os estados q
2
, q
3
e q
4
em um nico estado (q
234
),
gerando o AFD apresentado na Figura 22.

Figura 22


14. Propriedades das Linguagens Regulares (LR)

Algumas observaes sobre linguagens regulares (LR), autmatos finitos
determinsticos (AFD), gramticas regulares (GR) e expresses regulares (ER):
Toda LR possui GR equivalente
Toda LR possui AFD que a reconhece.
Toda ER possui AFD equivalente
Toda GR possui AFD equivalente

Alm das observaes anteriores, as linguagens regulares possuem as seguintes
propriedades:
Concatenao: a concatenao de LRs resulta em LR
Unio: a unio de LRs resulta em LR
Fecho: o fecho (repetio de zero ou mais vezes) de LR resulta em LR
Interseco: a interseco entre LRs resulta em LR
Complemento: o complemento (
*
- L) de uma LR resulta em LR.

Fechamento. Pelas propriedades anteriores, diz-se que a classe das linguagens
regulares (LR) fechada quanto s operaes de concatenao, unio, fecho,
interseco e complemento. Pois, o resultado dessas operaes recai dentro da prpria
classe de linguagens regulares (LR).

As operaes de concatenao, unio e fecho podem ser melhor visualizadas quando
as linguagens regulares so representadas atravs de expresses regulares. Assim,
sejam r e s expresses regulares para as linguagens L1 e L2.
rs representa a concatenao de L1 e L2.
sr representa a concatenao de L2 e L1.
r+s representa a unio de L1 e L2.
r* representa o fecho de L1



a
a

b
q
234
q
01





Prof. Rmulo Silva
23
15. Limitaes de AFDs: exemplos de linguagens no regulares

Conforme visto anteriormente, toda LR possui um AFD que a reconhea. Portanto, uma
forma de saber se uma linguagem regular, construindo um AFD que a reconhea.

Problema. Inversamente, se no for possvel a construo do AFD, ento a linguagem
no regular. Porm, como provar a impossibilidade de construir um AFD para uma
dada linguagem?

A seguir apresentamos o Lema do Bombeamento para LRs, usado para responder
pergunta anterior.

Lema do Bombeamento para LRs.
Se L uma linguagem regular, logo existe AFD para L com n estados, sendo
n finito. Se uma palavra w L tm comprimento maior ou igual a n, isto ,
|w| n, ento o AFD assume algum estado mais de uma vez e portanto
existe um ciclo no autmato.
w pode ser dividida em w = uvz tal que |uv| n e |v| 1, onde v a parte
de w reconhecida pelo ciclo. Portanto uv
i
z L para i 0.

Exemplo de linguagem no regular: L = {a
n
b
n
| n 0}.
Demonstrao por absurdo: suponha que L seja regular, ento pelo Lema do
Bombeamento para LRs, w = a
n
b
n
pode ser reescrita como w = uvz onde |uv| n e |v|
1. Alm disso, uv
i
z L para i 0. Tem-se um absurdo, pois |uv| n, uv composto
s por as. Por exemplo, uv
2
z L, pois no possui o mesmo nmero de as e bs. Logo
L no linguagem regular.

Outros exemplos de linguagens no regulares:
L = {a
n
b
m
| n m}
L = {a
n
b
2n
| n 1}
L = {a
n
| n primo}

Dependncia. Observando os exemplos de linguagens no regulares apresentados,
possvel notar que a quantidade de um determinado smbolo depende da quantidade de
outro smbolo, ou ainda depende de um algoritmo que no pode ser representado
usando um nmero finito de estados.

Memria. Os AFDs no possuem memria. Isto , so incapazes de armazenar a
quantidade lida de um determinado smbolo. Nisto, reside sua principal limitao para
reconhecer linguagens como L = {a
n
b
n
| n 0} e L = {a
n
b
m
| n m}.

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.





Prof. Rmulo Silva
24
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 C-
Shell. Disponvel em http://www.ccuec.unicamp.br , acessado em 20/03/2006.

Você também pode gostar