Vous êtes sur la page 1sur 38

Fundamentos de

Teoria da Computacao
(Versao preliminar em constante modicacao)
Prof. Celso Antonio Alves Kaestner, Dr. Eng.
Universidade Tecnologica Federal do Parana
celsokaestner@utfpr.edu.br
28 de marco de 2011
1 Introducao
O objetivo deste texto e o de apresentar, em forma de roteiro de estudo constitudo de resumo
da teoria, exemplos resolvidos e exerccios a resolver, os principais conceitos envolvidos no
tratamento de linguagens formais e automatos. Em cada secao sao enfatizadas as denicoes,
os principais teoremas e exemplos ilustrativos, que sao necessarios `a compreensao dos temas
envolvidos, e que devem ser complementados com a resolucao dos exerccios propostos.
As principais referencias para este assunto sao as seguintes: [5], [6], [2], [4], [3], [7] e [8].
1
2 Alfabetos e linguagens
Denicao 1 Um alfabeto e um conjunto nito cujos elementos sao chamados de smbolos.
Exemplo 1 Alguns exemplos de alfabetos:
O alfabeto = a, b;
O alfabeto binario B = 0, 1;
O alfabeto octal O = 0, 1, 2, 3, 4, 5, 6, 7;
O alfabeto hexadecimal H = 1, . . . 9, A, B, C, D.E, F;
O alfabeto formado pelos codigos ASCII.
Denicao 2 Um string (ou cadeia) e uma seq uencia nita de smbolos de um alfabeto.
Ou seja, se w e um string sobre um alfabeto , entao w =
1

2
. . .
n
onde
i
.
Observacao: Para facilitar a notacao empregar-se-ao letras do incio do nosso alfabeto, tais
como a, b, etc para indicar smbolos, e letras do nal do nosso alfabeto, tais como u, v, etc
para designar strings.
Exerccio 1 De exemplos de alfabetos e strings. Quais os alfabetos e strings mais utilizados
em computacao?
Denicao 3 O comprimento de um string w, denotado por [w[, e o n umero de smbolos
que o compoem.
Desta forma, se w =
1

2
. . .
n
e
i
entao [w[ = n.
Denicao 4 O string vazio, denotado por , e o string de tamanho zero.
Denicao 5 O conjunto de todos os strings sobre um alfabeto e denotado por

, e
constitui o denominado mon oide livre associado a .
Exemplo 2 Sao exemplos de strings:
a, bab e abbaba sobre a, b

;
101 e 11011 sobre B

;
2
064 e 1453 sobre O

;
0A12F e FFFF sobre H

;
isto eh um string sobre o alfabeto ASCII;
se = a, b entao

= , a, b, aa, ab, ba, bb, aaa, aab . . ..


Observe que o string vazio e tal que

para qualquer alfabeto .


Denicao 6 Dados dois strings u =
1

2
. . .
m
e v =
1

2
. . .
n
sobre dene-se a
concatenacao de u e v como um novo string u.v ou simplesmente uv dado por uv =

2
. . .
m

2
. . .
n
.
Evidentemente tem-se [u.v[ = [u[ +[w[, e ainda u. = .u = u.
Denicao 7 O reverso de um string w =
1

2
. . .
n
e o string w
R
=
n
. . .
2

1
.

E possvel escrever denicoes formais com uso de recursao para o comprimento (ver
denicao 3) e para o reverso (ver denicao 7):
1. (a) [[ = 0, e (b) [u.a[ = [u[ + 1 para u

e a .
2. (a)
R
= , e (b) (u.a)
R
= a.u
R
.
Exemplo 3 Obtem-se (abbab)
R
recursivamente da seguinte forma:
(abbab)
R
= b(abba)
R
, de 2.(b) acima;
(abba)
R
= a(abb)
R
, de 2.(b) acima;
(abb)
R
= b(ab)
R
, de 2.(b) acima;
(ab)
R
= b(a)
R
de 2.(b) acima;
(a)
R
= (.a)
R
= a.()
R
= a. = a, de 2.(a) acima, e portanto:
(abbab)
R
= babba dos itens anteriores.
Exerccio 2 Repita o exerccio anterior calculando (100111)
R
.
Exerccio 3 De modo similar aos exerccios anteriores, calcule recursivamente [bab[ (sobre
o alfabeto a, b) e [01101[ (sobre 0, 1).
3
Denicao 8 Dados strings u e v sobre um mesmo alfabeto diz-se que u e um prexo de
v se e somente se (sse) existe um string y tal que v = uy. Similarmente u e suxo de v sse
existe x com v = xu; e u e substring de v sse existem x e y com v = xuy.
Exemplo 4 Seja o monoide livre a, b

. Se w = aaba os prexos de w sao os strings


, a, aa, aab e aaba; os suxos de w sao aaba, aba, ba, a e ; sao substrings de w:
, a, b, aa, ab, ba, aab, aba, e o proprio w.
Para ilustrar um destes casos, se w = aaba pode-se escrever w = aaba = (aa).(ba),
mostrando que aa e prexo de w (e simultaneamente que ba e suxo de w).
Exerccio 4 Encontre os prexos, suxos e substrings do string 01011 sobre o alfabeto
0, 1.
Denicao 9 Uma linguagem L sobre um alfabeto e um subconjunto do mon oide livre

, isto e L

.
Exemplo 5 Se = a, b entao os subconjuntos de strings
L
1
= a, ab, abb, abbb, abbbb, abbbbb . . . = ab
n
[ n 0,
L
2
= ab, aab, aba, abb, bab, aaba, aabb . . . = x.ab.y [ x, y

e
L
3
= , a, abbb, bbbbb sao linguagens sobre .
Como se pode observar deste exemplo, as linguagens podem ser conjuntos nitos ou
innitos.
A denicao 9 e de carater bastante geral, e considera simplesmente que linguagens sao
subconjuntos de strings sobre um alfabeto. Isto permite que se denam com facilidade
algumas opera c oes sobre linguagens:
Denicao 10 Se L
1
e L
2
sao linguagens sobre um alfabeto entao tambem sao linguagens:
1. A uniao L
1
L
2
;
2. A intersecao L
1
L
2
;
3. O complemento

L
1
=

L
1
;
4. A concatenacao L
1
.L
2
= w = x.y [x L
1
e y L
2
;
5. O fechamento (ou estrela de Kleene)
L

1
= w = x
1
x
2
. . . x
k
[ k 0 e x
i
L
1
para 1 i k.
4
As operacoes denidas em (1), (2) e (3) sao simplesmente a aplicacao de operac oes
usuais sobre conjuntos, visto que as linguagens sao conjuntos. A operacao (4) estende
a nocao de concatenacao vista na denicao 6, a conjuntos de strings. A operacao (5)
permite que strings de um conjunto sejam repetidos um n umero arbitrario de vezes,
podendo o string selecionado no conjunto ser diferente a cada passo da repetic ao. Este
procedimento permite a obtencao de conjuntos innitos, desde que a operacao estrela (*)
seja aplicada a um conjunto nao-vazio.
Exemplo 6 Utilizando as linguagens L
1
, L
2
e L
3
do exemplo anterior, obtem-se, por exem-
plo (parenteses utilizados apenas para enfase):
L
1
L
2
= a, ab, aab, aba, abb, bab, aaba, aabb, abbb, . . .;
L
1
L
2
= ab, abb, abbb . . .;


L
3
=

L
3
= b, aa, ab, aaa, aab, aba, abb . . .;
L
1
.L
2
= (a)(ab), (a)(aab), (a)(aba) . . . , (ab)(ab), (ab)(aab), (ab)(aba) . . . , ;
L

1
= , a, ab, abb . . . , (a)(a), (a)(ab), (a)(abb) . . . , (a)(a)(a) . . . ,
(a)(a)(a)(a), (a)(a)(a)(ab) . . .;
Exerccio 5 Indique alguns strings para L
2
L
3
,

L
2
, L
2
.L
1
e L

1
do exemplo acima.
Exerccio 6 Sejam L
4
= ba, baa, baaa, baaaa . . . = ba
n
[ n 1 e
L
5
= aab, aabb, aabbb, aabbbb . . . = aab
n
[ n 1. Indique alguns strings para L
4
L
5
,
L
4
.L
5
,

L
5
, e L

4
.
5
3 Express oes regulares
Um ponto crucial no estudo de linguagens e o de encontrar uma representacao seja formal
e nita. Isto e possvel com o auxlio de formalismo baseado nas operacoes anteriormente
denidas.
Denicao 11 Dado um alfabeto as express oes regulares (ER) sobre este alfabeto sao
denidas recursivamente da seguinte forma:
, e cada elemento a sao ER;
se e sao ER entao ( ), (.) e (

) sao ER;
As ER sao obtidas unicamente pelas regras acima.
Observacao: Na denicao das ER os parenteses podem ser omitidos caso sua supressao
nao ocasione ambiguidade.
Uma correspondencia / (homomorsmo) pode ser facilmente estabelecida entre o con-
junto das ER sobre e as linguagens sobre este mesmo alfabeto:
/() = ;
/() = ;
/(a) = a;
/( ) = /() /();
/(.) = /()./();
/(

) = (/())

;
Denicao 12 Uma linguagem e dita regular se e correspondente a alguma ER.
Exemplo 7 Sao exemplos de ER sobre = a, b:
a(a b);
(a b)

;
ab

;
6
(a b)

ab;
(a b)

ab(a b)

.
( a abbb bbbbb).
Exerccio 7 Indique alguns strings das linguagens associadas `as ER do exemplo anterior.
Exerccio 8 Escreva ER associadas `as linguagens sobre a, b denidas informalmente a
seguir:
Strings que comecam com a;
strings que terminam com bb;
strings que contem aba como substring;
strings que N

AO contem aa como subtring;


strings com n umero par de as;
strings com exatamente duas ocorrencias de b.
Observacao: No uso pratico de ER utilizam-se as seguintes abreviaturas:

+
=

(uma ou mais repeticoes de );


[A Z] = (A B . . . Z), ou ainda [0 7] = (0 1 . . . 7) (faixa de valores);
c para representar o caracter c (uso das aspas como limitador, por exemplo em ).
Exerccio 9 Escreva ER que melhor especiquem os strings denidos informalmente por:
strings que representam nomes de variaveis em C;
Strings que representam n umeros inteiros em C;
strings que representam n umeros de ponto utuante em C;
strings que representam enderecos de email;
strings que representam n umeros telefonicos brasileiros.
7
Exerccio 10 Construa a expressao regular mais adequada, em sua opiniao, para indicar
datas v alidas, conforme os exemplos a seguir. Datas validas: 23/10/2006, 1/1/4, 01/1/06, 23/11/03.
Datas invalidas: 23//2004, 1/13/03, 1/111/1999, 33/2/2004.
Exerccio 11 Construa uma expressao regular que voce considera mais adequada para es-
pecicar valores monetarios validos em dolares, euros e reais, conforme os exemplos a seguir.
Exemplos de valores validos: US$ 1,340.00, R$ 1.450,00, E$ 1.900,30.
Exemplos de valores invalidos: US$$1.333,00, R$ 999.00, EE$ 777.77.
Observacao: nos exerccios anteriores nao possuem uma solucao unica, pois dicilmente se
consegue obter uma ER simples que cubra os casos considerados em toda a sua generalidade;
o leitor deve car ciente das limitacoes inerentes de sua resposta.
8
4 Aut omatos nitos
As ER, como vistas no item anterior, sao utilizadas especialmente na especicacao de lin-
guagens. Para o problema da vericacao da pertinencia de um string a uma linguagem
aceitacao ou reconhecimento do string utiliza-se outro formalismo, denominado
automato nito.
Denicao 13 Um aut omato nito determinista (AFD) e uma 5-upla
M = (K, , , s, F) onde:
K e um conjunto nito nao vazio de estados;
e o alfabeto de entrada;
s K e o estado inicial;
F K e o conjunto de estados nais;
: K K e a funcao de transicao, que associa a um estado e a um smbolo
lido o novo estado do automato, isto e, (q, ) q

.
Denicao 14 Uma conguracao de um AFD e um par (q, w) onde q e o estado atual e
w

e a entrada restante.
Denicao 15 Um AFD M evolui em um passo da conguracao (q, w) para a con-
guracao (q

, x), escrevendo-se (q, w)


M
(q

, x), sse w = ax e (q, a) = q

.
A aplicacao de n passos sucessivos em um AFD M corresponde a evolucao
n passos

(q, w)
M
(q

, x) . . .
M
(q

, y), que e denotada por (q, w)


n
M
(q

, y). Quando n nao e


importante escreve-se (q, w)

M
(q

, y).
Denicao 16 Um AFD M aceita um string w sse (s, w)

M
(f, ) com f F; no outro
caso diz-se que M rejeita w. O conjunto de todos os strings aceitos por M forma a lin-
guagem reconhecida por M, denotada por /(M).
Exemplo 8 Seja M = (K, , , s, F) com K = q
0
, q
1
, = a, b, s = q
0
, F = q
0
e tal
que (q
0
, a) = q
0
, (q
0
, b) = q
1
, (q
1
, a) = q
1
, e (q
1
, b) = q
0
.
Normalmente a funcao de transicao e dada na forma de tabela:
9
Figura 1: Automato correspondente ao exemplo 8
:
q q

q
0
a q
0
q
0
b q
1
q
1
a q
1
q
1
b q
0
M aceita aabba, pois: (q
0
, aabba) (q
0
, abba) (q
0
, bba) (q
1
, ba) (q
0
, a) (q
0
, ) e
q
0
F.
M rejeita ababb, pois: (q
0
, ababb) (q
0
, babb) (q
1
, abb) (q
1
, bb) (q
0
, b) (q
1
, ) e q
1
, F.
Aut omatos podem ser representados por grafos. Neste caso a cada estado do automato
corresponde um no, cada transicao (q, a) = q

e indicada por um arco de q a q

rotulado
por a, s e indicado por uma seta e os estados nais sao indicados por crculos duplos na
representacao do no.
Se um AFD M e representado por um grafo G
M
, a condi cao de aceitacao de um string
w corresponde `a existencia de um caminho em G
M
do estado inicial a um dos estados nais
rotulada por w.
Exemplo 9 O automato do exemplo 8 e representado pelo grafo apresentado `a Figura 1.
Uma analise dos caminhos que conduzem do estado inicial q
0
ao estado nal q
0
permite
deduzir que este automato aceita strings sobre a, b que tem n umero par de bs.
Exerccio 12 A ferramenta JFLAP [7] (disponvel em www.jflap.org) permite o estudo de
express oes regulares e automatos, em um ambiente graco executavel sob Java. Utilizando
esta ferramenta, ingresse o automato descrito acima e faca o reconhecimento de strings no
mesmo.
10
Exerccio 13 Utilizando a JFLAP, construa AFD para reconhecer as linguagens indicadas
no exerccio 8.
Os automatos nitos podem ser estendidos para incluir nao-determinismo, isto e, para
permitir que varios caminhos sejam percorridos simultaneamente, de acordo com a denicao
a seguir.
Denicao 17 Um aut omato nito nao-determinista (AFND) e uma 5-upla M =
(K, , , s, F) onde K, , s e F sao denidos como no AFD, e e uma relacao (denom-
inada relacao de transicao) sobre K ( ) K.
Em um AFND um string w e aceito sse existe ao menos uma evolucao (s, w)

M
(f, )
com f F.
Exemplo 10 Seja o AFND M = (K, , , s, F) com K = q
0
, q
1
, q
2
, = a, b, s = q
0
,
F = q
2
e dada pela tabela:
:
q q

q
0
a q
0
q
0
b q
0
q
0
a q
1
q
1
a q
2
q
1
q
2
M e nao-determinista, pois (q
0
, a, q
0
) e (q
0
, a, q
1
) . Alem disto (q
1
, , q
2
) . M
aceita bba pois (q
0
, bba) (q
0
, ba) (q
0
, a) (q
1
, ) (q
2
, ) e q
2
F. Note que tambem
ocorre (q
0
, bba) (q
0
, ba) (q
0
, a) (q
0
, ) e q
0
, F. Uma vericacao mais detalhada mostra
que /(M) e formada pelas cadeias sobre a, b

que terminam com a ou aa.


Teorema 1 A todo AFND M corresponde um AFD M

tal que /(M) = /(M

).
A prova deste resultado e construtiva e pode ser encontrada, por exemplo, em [5] e
[2]. Se M = (K, , , s, F) e um AFND, os estados do AFD M

sao formados a partir


de subconjuntos dos estados de M, isto e, sao elementos de 2
K
. O estado inicial de M

e s, normalmente representado por [s]. Os estados nais sao da forma [E


f
] tais que
E
f
F ,= . A funcao de transicao

para M

e obtida da seguinte forma:

([E
1
], a) = [E
2
]
com E
2
=

q
a
[ q E
1
e (q, a, q
a
) , para um estado [E
1
] de M

e a . A ferramenta
JFLAP permite que se acompanhe passo a passo o algoritmo que transforma um AFND
em um AFD.
11
Exemplo 11 Seja o AFND M = (q
0
, q
1
, q
2
, a, b, , q
0
, q
2
) onde = (q
0
, a, q
1
),
(q
0
, b, q
0
), (q
1
, b, q
2
), (q
1
, , q
2
), (q
2
, a, q
0
). O estado inicial do AFD correspondente e [q
0
] (o
unico estado atingvel de q
0
usando o string ). A funcao de transicao do AFD e obtida
pela vericacao dos estados atingveis a partir de estados ja desenvolvidos. Por exemplo, a
partir de [q
0
] usando o smbolo a podemos atingir os estados q
1
e q
2
, visto que q
0

a
q
1
e
q
0

a
q
1

q
2
. Isto dene ([q
0
], a) = [q
1
q
2
], e de modo analogo ([q
0
], b) = [q
0
]. Em seguida
encontram-se ([q
1
q
2
], a) = [q
0
] (ja que a partir de q
1
e possvel chegar a q
0
fazendo-se, por
exemplo, q
1

q
2

a
q
0
), e ([q
1
q
2
], b) = q
2
(ja que o unico estado atingvel de q
1
usando
b e q
2
, e nenhum estado pode ser atingido de q
2
usando b). Usando o mesmo procedimento
obtem-se ([q
2
], a) = [q
0
] e ([q
2
], b) = []. Finalmente ([], a) = ([], b) = []. Os estados
nais s ao aqueles que incluem estados nais do AFND, ou seja neste caso [q
2
] e [q
1
q
2
], o
que completa a construcao do AFD.
Em resumo o AFD obtido e M

= ([q
0
], [q
1
q
2
], [q
2
], [], a, b, , [q
0
], [q
2
], [q
1
q
2
]) com
dada pela tabela:
:
q q

q q

[q
0
] a [q
1
q
2
] [q
2
] a [q
0
]
[q
0
] b [q
0
] [q
2
] b []
[q
1
q
2
] a [q
0
] [] a []
[q
1
q
2
] b [q
2
] [] b []
A equivalencia estabelecida entre os AFND e os AFD leva a um questionamento sobre
sua utilidade: anal, por que utilizar AFND ? Como sera visto em seguida, os AFND sao
utilizados para o estabelecimento de uma correspondencia entre AF (termo usado indistin-
tamente para AFD e AFND) e as ER.
Teorema 2 Para toda ER existe um AF M tal que /() = /(M), e reciprocamente, a
todo AF M corresponde uma ER tal que /(M) = /().
(ER AFND, esboco da prova) Seja uma ER sobre um alfabeto :
1. Se = entao o AF M = (q
0
, , , q
0
, ) e tal que /(M) = ;
2. Se = entao o AF M = (q
0
, , , q
0
, q
0
) e tal que /(M) = ;
3. Se = a para a entao o AF M = (q
0
, q
1
, , , q
0
, q
1
) com = (q
0
, a, q
1
) e
tal que /(M) = a;
12
4. Se e sao ER associadas aos AF M
1
= (K
1
, ,
1
, s
1
, F
1
) e M
2
= (K
2
, ,
2
, s
2
, F
2
)
respectivamente, entao
M = (K
1
K
2
s
0
, ,
1

2
(s
0
, , s
1
), (s
0
, , s
2
), s
0
, F
1
F
2
)
aceita ;
5. Se e sao ER associadas aos AF M
1
= (K
1
, ,
1
, s
1
, F
1
) e M
2
= (K
2
, ,
2
, s
2
, F
2
)
respectivamente, entao
M = (K
1
K
2
, ,
1

2
(f
i
1
, , s
2
) [ , f
i
1
F
1
, s
1
, F
2
)
aceita .; e
6. Se e ER associada ao AF M
1
= (K
1
, ,
1
, s
1
, F
1
), entao
M = (K
1
s
0
, ,
1
(s
0
, , s
1
) (f
i
1
, , s
1
) [ , f
i
1
F
1
, s
0
, s
0
, s
1
)
aceita

;
7. Aplicando-se os procedimentos descritos nos itens anteriores sucessivamente e possvel,
a partir de qualquer ER, obter um AF que aceita a mesma linguagem.
Nos tres itens anteriores considerou-se que K
1
K
2
= .
(AF ER) O procedimento construtivo consiste na eliminacao de estados e rotulacao das
transicoes por strings de smbolos, conforme o seguinte procedimento a seguir:
1. Incluir um novo estado inicial e um unico estado nal;
2. Eliminar sucessivamente estados do AF utilizando o esquema indicado na Figura 2,
que rotula a transicao entre q
i
e q
f
quando da eliminacao de q
out
a partir dos rotulos
existentes nas transicoes entre q
i
, q
f
e q
out
;
3. Ao nal, quando so restam os estados inicial e nal, a ER resultante rotula a unica
transicao existente.
Pode-se provar que a ER assim obtida corresponde `a linguagem aceita pelo AF correspon-
dente (ver [5]).
Em Ciencia da Computacao os formalismos ER e os AF sao utilizados para a especi-
cacao e reconhecimento do lexico de linguagens. A analise lexica constitui o primeiro
passo de execucao de um compilador (ver por exemplo [1]).
13
&%
'$
q
i
&%
'$
q
f
&%
'$
q
out
-
J
J
J
J
J^

&%
'$
q
i
&%
'$
q
f
-

(.

.)
Figura 2: Eliminacao de estado na passagem de AF para ER
Exerccio 14 Utilizando a JFLAP encontre os AFs associado `as ERs:
1. a

b;
2. (a b)

ab;
3. (ab b)

(a );
4. (aab

;
5. (b

ab

ab

);
6. (a (ab)

) (b (ba)

).
Exerccio 15 Utilizando a JFLAP encontre os AFDs correspondentes aos AFNDs obti-
dos no exerccio anterior.
Exerccio 16 Utilizando a JFLAP encontre as ERs associadas aos AFs do exerccio 13.
Exerccio 17 Seja M um AFD que reconhece L. Como e possvel obter um AF para
reconhecer

L ?
Exerccio 18 Sejam M
1
e M
2
AFDs que reconhecem L
1
e L
2
respectivamente. Como e
possvel obter um AF para reconhecer L
1
L
2
? Esboce os passos necessarios para se obter
este aut omato.
Considere os AF apresentados na Figura 3. Ambos sao deterministas e aceitam a mesma
linguagem, formada por strings sobre a, b que terminam com a. No entanto o AFD inferior
tem tres estados, e o superior tem apenas dois.
Isto leva a questao da minimizacao de automatos. Um AFD M
min
= (K
m
, ,
m
, s
m
, F
m
)
e dito mnimo sse para qualquer outro automato M = (K, , , s, F) tal que /(M) =
14
Figura 3: Dois AFD que reconhecem a mesma linguagem (a b)

a
/(M
min
) tem-se K
m
K

. Ou seja M
min
e, entre os automatos que aceitam a mesma lin-
guagem, o que tem o menor n umero de estados. A obtencao de M
min
e possvel encontrando-
se uma relacao de equivalencia entre os estados, conforme o teorema a seguir.
Teorema 3 Seja M = (K, , , s, F) um AFD; entao sempre existe um AFD mnimo
M
min
= (K
m
, ,
m
, s
m
, F
m
) tal que /(M) = /(M
min
) e K
m
K

.
Esboco da prova (para a prova completa ver [5], [6] ou [2]): Inicialmente elimine estados
inalcanc aveis usando um algoritmo de alcancabilidade em grafo, partindo do estado inicial
s. Supondo que todos os estados sao alcacaveis, calcule a relacao de equivalencia entre
estados (ou, equivalentemente, uma particao do conjunto K) denida recursivamente por:
(1) (
0
) = F, K F;
(2) Ate que se tenha (
n+1
) = (
n
):
calcule a relacao (
n+1
) para n 0 a partir de (
n
) por:
(q, q

) (
n+1
) somente se (q, q

) (
n
) e
para todo a tem-se ((q, a), (q

, a)) (
n
).
Os estados de M
min
sao os elementos da ultima relacao de equivalencia (
n
) encontrada.
15
Exerccio 19 Utilizando a JFLAP encontre o AFD
min
correspondente ao segundo automato
da Figura 3.
Exerccio 20 Utilizando a JFLAP encontre os AFD
min
s associados aos AFs do exerccio
15.
Os resultados apresentados permitem deduzir que, se L
1
e L
2
sao linguagens aceitas pelos
AF M
1
e M
2
, entao e possvel obter AF para reconhecer as linguagens L
1
L
2
, L
1
L
2
e

L
1
(ver teorema 2 e os exerccios 17 e 18). Mas sera que existem linguagens que nao sao
reconhecidas pelos AFs ? O teorema a seguir conduz `a resposta desejada.
Teorema 4 (Teorema do Bombeamento I) Seja M = (K, , , s, F) um AFD que reconhece
uma linguagem L. Se L e innita (um conjunto innito) entao existe um string w L com
[w[ > [K[ que w pode ser escrito como w = xyz com y ,= e tal que xy
n
z L para todo
n 0.
Prova: ver [5], [6] ou [2].
Exemplo 12 Uma conseq uencia importante deste teorema e que a linguagemL = a
n
b
n
[ n
0 a, b

nao e aceita por nenhum AF.


Suponha que M = (K, , , s, F) aceita L = a
n
b
n
[ n 0 a, b

. Seja p > [K[ e


w = a
p
b
p
; pelo Teorema do Bombeamento I w pode ser escrito como w = xyz com y ,=
e para todo n 0 xy
n
z L. Mas como a
p
b
p
pode ser decomposto ?
Por contradicao podemos supor que x = a
r
e y = a
s
com r + s < p, de modo que a
decomposicao seria a
p
b
p
=
x

a
r
y

a
s
z

a
(prs)
b
p
. Neste caso se repetimos (bombeamos) y
duas vezes teramos
x

a
r
yy

a
2s
z

a
(prs)
b
p
L, mas L so contem strings com n umero igual de as e bs...
O mesmo raciocnio pode ser aplicado `a decomposicao a
p
b
p
=
x

a
p
b
(prs)
y

b
s
z

b
r
.
Finalmente se a decomposicao fosse a
p
b
p
=
x

a
r
y

a
(pr)
b
(ps)
z

b
s
o bombeamento duplo
de y levaria a
x

a
r
y

a
(pr)
b
(ps)
y

a
(pr)
b
(ps)
z

b
s
e portanto a uma mistura de as e bs ...
Concluindo, L nao atende ao Teorema do Bombeamento I, e portanto nao pode ser
reconhecida por AF ou ER.
16
Desta forma conclui-se que o formalismo AF (ou equivalentemente ER) nao e suciente
para o estudo geral de linguagens. Sao necessarios novos formalismos como veremos na
seq uencia.
17
5 Gramaticas
Um outro formalismo similar aos AFs e `as ERs, e que pode ser potencialmente mais geral
e formado pelas gramaticas.
Denicao 18 Uma gramatica (ou sistema de reescritura) e uma 4-upla G = (V, , R, S)
onde:
V e um conjunto nito nao-vazio de smbolos nao-terminais;
e um conjunto nito nao-vazio de smbolos, disjunto de V , cujos elementos sao
denominados smbolos terminais;
S V e o smbolo inicial;
R e um conjunto de regras de producao ou reescritura, na forma u v, onde u e
v sao strings sobre V , com certas restricoes conforme o tipo da gramatica.
Denicao 19 Uma derivacao em G = (V, , R, S), denotada por w
1

G
w
2
, ocorre quando
se aplica ao string w
1
= x.u.y a regra de producao u v, gerando o string w
2
= x.v.y. A
geracao de um string w

em G ocorre pela aplicacao sucessiva de derivacoes a partir


de S, ou seja S = w
0

G
w
1

G
w
2
. . .
G
w
n
= w ou, de forma mais sucinta, S

G
w.
Finalmente, a linguagem gerada por G e /(G) = w

[ S

G
w.
Exemplo 13 Seja G = (V, , R, S) com V = S, = a, b e R = S
1
aSb, S
2
.
O string aabb e gerado por G, pois S
1
aSb
1
aaSbb
2
aabb (na derivacao o subndice
referencia a regra de G utilizada). Observe que neste exemplo /(G) = a
n
b
n
[ n 0,
linguagem esta que nao e gerada por nenhum AF (ver exemplo 12).
Denicao 20 Uma gramatica e dita regular (GR) se suas producoes sao todas na forma
A aB, A a ou A , onde A, B V e a .
Exemplo 14 Seja G = (A, B, a, b, A
1
aA, A
2
bB, B
3
aB, B
4
bA, A
5
, A). O string aababbab e gerado por G, pois A
1
aA
1
aaA
2
aabB
3
aabaB
4
aababA
2
aababbB
3
aababbaB
4
aababbabA
5
aababbab. Neste exemplo /(G) =
/((a

ba

ba

), `a linguagem associada `a ER que denota strings com n umero par de bs.


Teorema 5 Se G e uma GR entao existe um AF M tal que /(G) = /(M).
(Esboco da prova) Dado G = (V, , R, S) obtem-se M = (K, , , s, F) da seguinte forma:
18
K = V f;
s = S;
F = f;
se A aB esta em R entao (A, a, B) ;
se A a esta em R entao (A, a, f) ;
se A esta em R entao (A, , f) .
Exerccio 21 Mostre que vale a recproca, isto e, se M e um AF e possvel obter uma GR
tal que /(G) = /(M).
Exerccio 22 Encontre as GR associadas `as linguagens do exerccio 8.
Como vimos, as gramaticas sao um formalismo mais geral que os AF. Para ampliar seu
poder de geracao necessitamos apenas alterar a forma das suas regras de producao.
Denicao 21 Uma gramatica e dita livre de contexto (GLC) se suas produ coes sao
todas na forma A w, onde A V e w (V )

.
Exemplo 15 Seja G = (S, A, B, a, b, R, S) onde R e o conjunto S
1
SAB,
S
2
SBA, S
3
, A
4
aAB, A
5
aBA, A
6
a, B
7
bAB, B
8
bBA, B
9
b. G
e uma GLC. Um string gerado por G e w = bbaabaab, pois S
1
SAB
2
SBAAB
3
BAAB
8
bBAAAB
9
bbAAAB
4
bbaABAAB
6
bbaaBAAB
9
bbaabAAB
6
bbaabaAB
6
bbaabaaB
9
bbaabaab = w. Esta gramatica gera strings com o mesmo
n umero de as e bs.
Exemplo 16 A gramatica denida no exemplo 13 e uma GLC.
Assim como os AF e as ER, as GLC tem papel crucial em Ciencia da Computacao.
Utilizam-se GLC para realizar a analise sintatica de linguagens, o segundo passo na execucao
de um compilador [1].
Denicao 22 Um derivacao e dita mais `a esquerda se a aplicacao das producoes ocorre
sempre pela substituicao do nao-terminal mais `a esquerda no string que esta sendo gerado.
De forma analoga e possvel gerar derivacoes mais `a direita.
19
Exemplo 17 A derivacao de bbaabaab no exemplo 15 e mais `a esquerda. Observe que
algumas derivacoes nao sao nem mais `a esquerda nem mais `a direita.
Exerccio 23 Faca uma derivacao mais `a direita de w = bbaabaab do exemplo 15. Faca
uma outra derivacao para w que nao seja nem mais `a esquerda, nem mais `a direita.
As diversas derivacoes derivacoes para um mesmo string podem ser representadas de
maneira unicada pela arvore de parsing do string.
Denicao 23 Seja uma GLC G = (V, , R, S) e um string w =
1

2
. . .
n
/(G). A
arvore de parsing (arvore de analise sintatica ou ainda arvore de reconhecimento) do
string w, denotada por /(G, w) e uma estrutura na forma de arvore obtida da seguinte
forma:
a raiz de /(G, w) e S;
as folhas de /(G, w) sao os smbolos que compoem w, obedecendo a ordem de aparec-
imento da esquerda para a direita, isto e,
1
,
2
, . . .
n
;
os nos internos de /(G, w) sao formados por producoes em R.
Se A x R, esta producao constitui uma sub-arvore de raiz A e cujas folhas sao os
smbolos de x. As producoes devem ser usadas de forma a conectar adequadamente S, w e
os demais nos intermediarios de /(G, w).
Exemplo 18 Seja G e w do exemplo 15. A arvore de parsing correspondente e indicada
`a Figura 4. Observe o correspondencia entre os nos da arvore e as producoes aplicadas,
indicadas pelo n umero correspondente. A leitura das folhas da arvore da esquerda para a
direita fornece o string gerado: bbaabaab = bbaabaab.
Numa arvore de parsing a ordem de substituicao dos smbolos nao-terminais nao e
apresentada de forma explcita, dependendo apenas da maneira com que se percorre a arvore.
Uma derivacao mais `a esquerda corresponde, por exemplo, a percorrer a arvore de cima para
baixo e da esquerda para a direita.
Com a introducao da nocao de arvore de parsing, o problema da analise sintatica (ou de
parsing) pode ser simplicadamente descrito da seguinte forma: dada uma GLC G e um
string w, e possvel construir uma arvore sintatica /(G, w) ? Uma resposta armativa indica
que w /(G).
20
S

d
d
d
d
d
d
d
(1)
~
~
~
~
~
~
~
~
S

d
d
d
d
d
d
d
(2)








A
(6)

d
d
d
d
d
d
d
d
B
(9)

d
d
d
d
d
d
d
d
S
(3)


B








(8)

d
d
d
d
d
d
d
A
(6)

d
d
d
d
d
d
d
d
a
b
b B
(9)

d
d
d
d
d
d
d
(4)

''
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
a
b
a
A
(6)

B
(9)

a
b
Figura 4:

Arvore de parsing para G e w do exemplo 15
Exerccio 24 Seja G = (S, A, B, a, b, R, S) com R = S
1
AB, A
2
aA, A
3
, B
4
bB, B
5
b. Mostre que o string aaaabb pertence a /(G). Construa a arvore de
parsing para w. Descreva /(G).
Exerccio 25 Seja G = (S, A, B, a, b, R, S) com R = S
1
ASB, S
2
, A
3
a, B
4
bb. Mostre que o string aaabbbbbb pertence a /(G). Construa a arvore de parsing
para w. Descreva /(G).
21
6 Aut omatos de Pilha
De maneira similar ao que ocorre com as ERs, as gramaticas sao utilizadas principalmente
para especicar linguagens. Os procedimentos utilizados para tratar o problema de parsing
sao outros: os automatos de pilha.
Denicao 24 Um aut omato de pilha (AP) (nao-determinista) e uma 6-upla M =
(K, , , , s, F) onde:
K e um conjunto nito nao-vazio des estados;
e o alfabeto de entrada;
e o alfabeto da pilha, que e disjunto de ;
s K e o estado inicial do automato;
F K e o conjunto de estados nais;
e a relacao de transicao, [K ( )

] [K

].
Como indica seu proprio nome, um AP pode ser considerado como um AF ao qual se in-
corpora uma estrutura auxiliar que funciona como uma pilha. Um elemento [(q, , ), (q

, )]
indica que se o AP M esta no estado q, ao processar na entrada e tendo no topo de
sua pilha, passa a ter o estado q

e o topo da pilha e substitudo por . Ou, formalmente:


Denicao 25 Uma conguracao de um AP e uma tripla (q, w, ) onde q e o estado atual,
w

e a entrada restante e e o estado atual da pilha.


Por convencao considera-se que o topo da pilha situa-se `a esquerda ou seja, no incio do
string .
Denicao 26 Um AP M evolui em um passo da conguracao (q, w, ) para a con-
guracao (q

, x, ), escrevendo-se (q, w, )
M
(q

, x, ), sse w = ax, = , = e
[(q, a, ), (q

, )] .
Como no caso dos AF a aplicacao de n passos sucessivos em um AP M corresponde a
evolucao denotada por (q, w, )
n
M
(q

, y, ), e quando n nao e importante escreve-se


(q, w, )

M
(q

, y, ). Tambem e similar o conceito de aceitacao e de linguagem recon-


hecida.
22
Denicao 27 Um AP M aceita um string w sse (s, w, )

M
(f, , ) com f F; no
outro caso M rejeita w. O conjunto de todos os strings aceitos por M forma a linguagem
reconhecida por M, denotada por /(M).
Observe o que AP inicia sua execucao com a pilha vazia, e que a mesma deve tambem ter-
minar vazia. Ou seja, a pilha funciona como um mecanismo de armazenamento temporario,
mas nao retorna nenhuma informacao sobre o resultado do processamento.
Exemplo 19 Considere o AP M = (K, , , , s, F) dado por K = q
0
, q
1
, = a, b,
= A, B, s = q
0
, F = q
1
e = 1 : ((q
0
, a, ), (q
0
, A)), 2 : ((q
0
, b, ), (q
0
, B)),
3 : ((q
0
, c, ), (q
1
, )), 4 : ((q
1
, a, A), (q
1
, )), 5 : ((q
1
, b, B), (q
1
, )).
A entrada w = abbcbba e aceita por este automato, pois a evolucao de M a partir de w
ocorre conforme a tabela a seguir.
estado entrada pilha transicao
q
0
abbcbba -
q
0
bbcbba A 1
q
0
bcbba BA 2
q
0
cbba BBA 2
q
1
bba BBA 3
q
1
ba BA 5
q
1
a A 5
q
1
4
Este AP e, em particular, determinista, pois a cada passo uma unica transicao pode ser
aplicada. Observe ainda que se nenhuma transicao pode ser aplicada `a determinada con-
guracao o AP termina sua execucao e nao aceita a entrada. Por exemplo, ao receber
a entrada acb temos a evolucao (q
o
, acb, ) (q
0
, cb, A) (q
1
, b, A) ??. Este automato
reconhece a linguagem /(M) = wcw
R
[ w a, b

(verique !).
Exemplo 20 Seja o AP M = (K, , , , s, F) onde K = q
0
, q
1
, q
2
, = a, b,
= A, B, C, s = q
0
, F = q
2
e e dada pelo seguinte conjunto de transicoes:
=

1 : ((q
0
, , ), (q
1
, C)), 2 : ((q
1
, a, A), (q
1
, AA)), 3 : ((q
1
, a, B), (q
1
, )),
4 : ((q
1
, a, C), (q
1
, AC)), 5 : ((q
1
, b, A), (q
1
, )), 6 : ((q
1
, b, B), (q
1
, BB)),
7 : ((q
1
, b, C), (q
1
, BC)), 8 : ((q
1
, , C), (q
2
, ))

23
A entrada w = abbaba e aceita por este automato, pois a evolucao de M a partir de w ocorre
conforme a tabela a seguir.
estado entrada pilha transicao
q
0
abbaba -
q
1
abbaba C 1
q
1
bbaba AC 4
q
1
baba C 5
q
1
aba BC 7
q
1
ba C 3
q
1
a BC 7
q
1
C 3
q
2
8
Este automato e nao determinista, pois no estado q
1
se pode aplicar a transicao 3 e alguma
das transicoes de 2 a 7, dependendo da entrada e do topo da pilha existentes. O automato
reconhece a linguagem sobre a, b formada por strings que contem o mesmo n umero de as
e bs (verique !).
Assim como ocorre uma correspondencia entre ER e AF, e possvel estabelecer um rela-
cionamento entre as GLC e os AP.
Teorema 6 Dada uma GLC G = (V, , R, S) e possvel obter um AP M
t
= (K, , , , s, F)
tal que /(G) = /(M).
Prova (processo top-down): Inicialmente denem-se K = p, q, s = p, F = q. O alfabeto
de terminais de G e evidentemente o alfabeto de entrada de M
top
, e o alfabeto da pilha e
dado por = V . Finalmente as transicoes em sao obtidas a partir das tres regras a
seguir:
1. ((p, , ), (q, S)) ;
2. ((q, , A), (q, w)) para toda regra A w R;
3. ((q, a, a), (q, )) para todo terminal a .
Exemplo 21 Seja a gramatica G do exemplo 15. Tem-se G = (S, A, B, a, b, R, S) e
R = S
1
SAB, S
2
SBA, S
3
, A
4
aAB, A
5
aBA, A
6
a, B
7
bAB,
B
8
bBA, B
9
b.
24
Seguindo o metodo acima indicado o AP associado a G e M
top
= (K, , , , s, F) onde
se tem:
K = p, q;
= a, b;
= S, A, B, a, b;
s = p;
F = q; e
contem as transicoes:
1. ((p, , ), (q, S)) de (1) do teorema 6;
2. (a) ((q, , S), (q, SAB)) de (2) aplicado `a 1
a
producao de G;
(b) ((q, , S), (q, SBA)) de (2) aplicado `a 2
a
producao de G;
(c) ((q, , S), (q, )) de (2) aplicado `a 3
a
producao de G;
(d) ((q, , A), (q, aAB)) de (2) aplicado `a 4
a
producao de G;
(e) ((q, , A), (q, aBA)) de (2) aplicado `a 5
a
producao de G;
(f) ((q, , A), (q, a)) de (2) aplicado `a 6
a
producao de G;
(g) ((q, , B), (q, bAB)) de (2) aplicado `a 7
a
producao de G;
(h) ((q, , B), (q, bBA)) de (2) aplicado `a 8
a
producao de G;
(i) ((q, , B), (q, b)) de (2) aplicado `a 9
a
producao de G;
3. (a) ((q, a, a), (q, )) de (3) aplicado ao terminal a ; e nalmente
(b) ((q, b, b), (q, )) de (3) aplicado ao terminal b .

E ilustrativo vericar o funcionamento de M


top
sobre uma entrada gerada por G, como por
exemplo w = bbaabaab (ver exemplo 15). A evolucao correspondente e:
25
estado entrada pilha transicao
p bbaabaab -
q bbaabaab S (1)
q bbaabaab SAB (2.a)
q bbaabaab SBAAB (2.b)
q bbaabaab BAAB (2.c)
q bbaabaab bBAAAB (2.h)
q baabaab BAAAB (3.b)
q baabaab bAAAB (2.i)
q aabaab AAAB (3.b)
q aabaab aABAAB (2.d)
q abaab ABAAB (3.a)
q abaab aBAAB (2.f)
q baab BAAB (3.a)
q baab bAAB (2.i)
q aab AAB (3.b)
q aab aAB (2.f)
q ab AB (3.a)
q ab aB (2.f)
q b B (3.a)
q b b (2.i)
q (3.b)
Observe a correspondencia entre a derivacao indicada no exemplo 15 e o reconhecimento
efetuado pelo AP. Se considerarmos a arvore de parsing /(G, w) ver gura 4 pode-se
vericar que M
top
efetua a construcao da arvore de cima para baixo, da o nome top-down
dado ao metodo. Conforme o teorema 6 este automato reconhece a linguagem /(G) =
/(M) = w a, b

[ w tem o mesmo n umero de as e bs..


Existe uma forma equivalente para se obter o reconhecimento de um string. Trata-se do
processo denominado bottom-up, no qual a arvore de parsing e construda como o nome do
processo indica de baixo para cima.
Segunda prova do Teorema 6 (processo bottom-up):
Como no processo top-down dene-se M
bot
com K = p, q, s = p, F = q, o alfabeto
de terminais e e o alfabeto da pilha e = V . A alteracao ocorre nas transicoes em
, que sao, neste processo, obtidas a partir das tres regras:
26
1. ((p, a, ), (p, a)) para todo terminal a ;
2. ((p, , w
R
), (q, A)) para toda regra A w R; e
3. ((p, , S), (q, )) .
Exemplo 22 Seja o exemplo 21. Seguindo o metodo bottom-up o AP associado a G e
M
bot
= (K, , , , s, F) onde:
K = p, q;
= a, b;
= S, A, B, a, b;
s = p;
F = q; e
contem as transicoes:
1. Para os terminais
(a) ((p, a, ), (p, a)) e
(b) ((p, b, ), (p, b));
2. Para as regras (conforme a ordem das producoes de G)
(a) ((p, , BAS), (p, S));
(b) ((p, , ABS), (p, S));
(c) ((p, , ), (p, S));
(d) ((p, , BAa), (p, A));
(e) ((p, , ABa), (p, A));
(f) ((p, , a), (p, A));
(g) ((p, , BAb), (p, B));
(h) ((p, , ABb), (p, B));
(i) ((p, , b), (p, B));
e nalmente
3. ((p, , S), (q, )).
27
Observe o funcionamento de M
bot
sobre a entrada w = bbaabaab. A evolucao e neste caso:
estado entrada pilha transicao
p bbaabaab -
p bbaabaab S (2.c)
p baabaab bS (1.b)
p aabaab bbS (1.b)
p aabaab BbS (2.i)
p abaab aBbS (1.a)
p baab aaBbS (1.a)
p baab AaBbS (2.f)
p aab bAaBbS (1.b)
p aab BAaBbS (2.i)
p aab ABbS (2.d)
p aab BS (2.h)
p ab aBS (1.a)
p ab ABS (2.f)
p ab S (2.b)
p b aS (1.a)
p b AS (2.f)
p bAS (1.b)
p BAS (2.i)
p S (2.a)
p (3)
Novamente verique as semelhancas e diferencas entre a derivacao feita na gramatica (ver
exemplo 15), o reconhecimento pelo AP M
top
(ver exemplo 21) e o reconhecimento pelo
processo bottom-up. Neste caso o AP M
bot
constroi a arvore de parsing de baixo para
cima. O metodo mais eciente a seguir (top-down ou bottom-up) depende da gramatica a
reconhecer.

E importante observar que ambos os metodos produzem AP nao-deterministas, onde


para uma mesma conguracao varias transicoes podem ser aplicadas, o que e desaconselhavel
em situacoes praticas. Estas questoes sao classicamente objeto de estudo na disciplina de
Compiladores (ver [1]).
Exerccio 26 Seja a gramatica do exerccio 24. Encontre o AP que efetua o reconhecimento
de /(G) pelo metodo top-down. Faca o reconhecimento do string aabbb neste automato.
28
Exerccio 27 Repita o exerccio anterior pelo metodo bottom-up.
Exerccio 28 Seja a gramatica do exerccio 25. Encontre o AP que efetua o reconhecimento
de /(G) pelo metodo top-down. Faca o reconhecimento do string aabbbb neste aut omato.
Exerccio 29 Repita o exerccio anterior pelo metodo bottom-up.
Alem dos dois metodos anteriormente indicados, que sao de caracter bastante geral,
outros metodos de parsing podem ser aplicados. Um dos mais conhecidos e o algoritmo
CYK (Cocke, Younger e Kasami), ver http://en.wikipedia.org/wiki/CYK algorithm.
O uso das GLCs e dos APs ampliou o leque de linguagens que podem ser utilizadas.
Mas, repetindo questao vista no caso dos AFs, sera que existem linguagens que nao sao
reconhecidas pelos APs ? Infelizmente, uma resposta armativa a esta questao e dada pelo
teorema a seguir, que segue uma linha de raciocnio similar `a apresentada no Teorema 4.
Teorema 7 (Teorema do Bombeamento II) Seja G uma GLC. Entao existe um n umero K,
dependendo de G, tal que qualquer string w /(G) com [w[ > K pode ser escrito como
w = uvxyz, onde v, y ,= e tal que uv
n
xy
n
z /(G) para todo n 0.
Prova: ver [5], [6] ou [2].
Exemplo 23 O Teorema do Bombeamento II, de forma similar ao apresentado no Exemplo
12, permite que se indique uma linguagem simples que nao pode ser gerada por nenhuma
GLC: L = a
n
b
n
c
n
[ n 0 a, b, c

.
A prova desta armacao e similar `a indicada no Exemplo 12 e pode ser encontrada nas re-
ferencias ja indicadas. Conclui-se aqui que o formalismo GLC / AP, embora tenha ampliado
as linguagens tratadas, nao e sucientemente geral para representar todas as linguagens. O
formalismo mais amplo possvel, que representa todo o poder computacional de um computa-
dor digital como conhecido atualmente, denomina-se Maquina de Turing, e sera abordado
na seq uencia.
29
7 Maquinas de Turing
As Maquinas de Turing (MT) constituem um formalismo proposto por A. Turing, na
primeira metade do seculo XX, para representar o conceito de computacao, no sentido de
calculo efetivo. Na verdade este era o sentido original do termo computacao, hoje inevitavel-
mente associado aos computadores. O formalismo proposto por Turing serviu de base para
o surgimento de toda a Ciencia da Computacao. Uma MT e constituda por um mecanismo
de controle que opera sobre uma ta innita, podendo ler e gravar smbolos na ta, bem
como movimenta-la nos dois sentidos.
Denicao 28 Uma maquina de Turing determinista (MTD) e uma 5-upla
M = (K, , , s, H) onde:
K e um conjunto nito e nao-vazio de estados;
e o alfabeto de entrada;
s K e o estado inicial;
H K e o conjunto de estados de parada; e
e a funcao de transicao:
: ((K H) ) (K L, S, R)
representada por
(q, ) = (q

, m)
A funcao de transicao associa a um estado (nao-nal) e a um smbolo lido, um novo
estado, um smbolo a ser gravado e um movimento na ta de entrada, e representa o programa
da MT. Como dito anteriormente, uma MT opera sobre uma ta innita composta de
celulas, uma das quais apontada pela cabeca de leitura / gravacao da MT. Considera-se
que toda a ta (a menos do string de entrada) esta inicializada com um smbolo especial
branco . . Observe a semelhanca entre a denicao de MT e a denicao de um AFD
(ver denicao 13). A diferenca esta na funcao de transicao, que agora pode ler e gravar,
alem de que a entrada pode ser lida e relida conforme o movimento da cabeca de leitura. O
movimento m pode ser para a esquerda (L left), direita (R right) ou sem movimento
(S stay).
Denicao 29 A conguracao de uma MTD e dada por (q, uav), onde q K e o estado
corrente da MT, a e o smbolo corrente sob a cabeca de leitura / gravacao e u e v sao
os strings `a esquerda e `a direita da cabeca de leitura, respectivamente.
30
Como a ta e considerada innita, para que u e v possam ser strings (isto e, seq uencias
nitas de smbolos) uma restricao deve ser imposta: o primeiro smbolo de u e o ultimo
smbolo de v devem ser diferentes de .. Formalmente, usando ER:
u /(( .)

) e v /(

( .) )
Desta forma o restante da ta nao representada por uav e constitudo apenas por simbolos
brancos (.).
Denicao 30 A evolucao de uma MTD da conguracao (q, uav) para a congura cao
(q

, xby), denotada (q, uav) (q

, xby), ocorre de acordo com a funcao de transicao (q, a).


Todas as combinacoes possveis de movimento podem ser formalizadas, como por exemplo:
(q, uav) (q

, ubv) sse (q, a) = (q

, b, S);
(q, uav) (q

, xby) com u = xb, cv = y sse (q, a) = (q

, c, L);
(q, uav) (q

, xby) com uc = x, v = by sse (q, a) = (q

, c, R).
Exemplo 24 Seja M = (K, , , s, H) onde K = q
0
, h, = ., a, s = q
0
, H = h e
(q, ) = (q

, m) dada pela tabela a seguir (o n umero apenas identica a transic ao):


q q

m
1 q
0
a q
0
. R
2 q
0
. h . S
A partir da conguracao inicial (q
0
, aaaa) esta MTD evolui da seguinte forma:
estado ta transicao
q
0
aaaa -
q
0
.aaa 1
q
0
. . aa 1
q
0
. . .a 1
q
0
. . . . . 1
h . . . . . 2
Observe que a tabela apresenta os smbolos brancos apenas para uma referencia posi-
cional, j a que os (innitos) brancos `a direita e `a esquerda do string presente na ta nao sao
representados. Portanto, a mesma evolucao poderia ser mais corretamente indicada por:
31
(q
0
, aaaa)
1
(q
0
, aaa)
1
(q
0
, aa)
1
(q
0
, a)
1
(q
0
, .)
2
(h, .)
Esta m aquina limpa a ta, tornando brancos os smbolos do string w /(a

) quando a
cabeca de leitura inicia no smbolo mais `a esquerda do string de entrada.
A posicao inicial do string de entrada e da cabeca de leitura sao importantes para a
denicao da funcao de transicao . Por convencao sera sempre considerado que a cabeca de
leitura esta posicionada no primeiro smbolo nao branco (se houver) mais `a esquerda na ta
de entrada.
Exemplo 25 Seja M = (K, , , s, H) onde K = q
0
, h, = ., a, b, s = q
0
, H = h e
(q, ) = (q

, m) dada por:
q q

m
1 q
0
a q
0
b R
2 q
0
b q
0
a R
3 q
0
. h . S
A partir de (q
0
, abbaa) esta MTD produz a evolucao:
estado ta transicao
q
0
abbaa -
q
0
bbbaa 1
q
0
babaa 2
q
0
baaaa 2
q
0
baaba 1
q
0
baabb. 1
h baabb. 3
Esta MT troca os as e bs na ta. Se trocarmos a e b por 0 e 1, esta operacao coincide com
o complemento de um utilizado em processadores.
Exerccio 30 Seja M = (K, , , s, H) onde K = q
0
, q
1
, h, = ., a, b, s = q
0
, H = h
e dada por:
32
q q

m
1 q
0
a q
0
a R
2 q
0
b q
1
b R
3 q
0
. h . S
4 q
1
a q
0
b R
5 q
1
b q
0
b R
6 q
1
. h . S
Faca a evolucao desta MTD a partir das entradas bbaab e babbaabb. O que faz esta MT ?
33
Uma MT pode ser utilizada com dois objetivos:
como dispositivo de computacao: para calcular uma funcao sobre os strings de um
alfabeto; ou
como dispositivo de reconhecimento: para vericar se strings dados na entrada per-
tencem a uma determinada linguagem.
Denicao 31 Diz-se que uma MT M = (K, , , s, h) computa uma funcao
f : ( .)

( .)

sse para todo string de entrada v (.)

, v = ax tem-se (s, ax)

M
(h, by) com w = by
e w = f(v).
Verique que, como ja observado, a MT do exemplo 25 computa a funcao complemento
de um sobre um string dado na entrada. Por convencao adota-se que a cabeca de leitura
da MT deve estar posicionada no primeiro smbolo mais `a esquerda do string nao-branco,
tanto no incio quanto no nal da computacao.
Exemplo 26 Seja a MT M = (q
0
, q
1
, q
2
, h, ., 0, 1, , q
0
, h) com dada por:
q q

m
1 q
0
0 q
0
0 R
2 q
0
1 q
0
1 R
3 q
0
. q
1
. L
4 q
1
0 q
2
1 L
5 q
1
1 q
1
0 L
6 q
1
. q
2
1 L
7 q
2
0 q
2
0 L
8 q
2
1 q
2
1 L
9 q
2
. h . R
34
Esta MT opera sobre o string 1011 da seguinte forma:
estado ta transicao
q
0
1011 -
q
0
1011 2
q
0
1011 1
q
0
1011 2
q
0
1011. 2
q
1
1011 3
q
1
1010 5
q
1
1000 5
q
2
1100 4
q
2
1100 8
q
2
.1100 8
h 1100 9
Esta maquina computa a funcao f : ^ ^, f(n) = n + 1 para n umeros em binario
(verique !).
Exerccio 31 A partir das maquinas dos exemplos 25 e 26 escreva uma MT que calcula o
complemento de dois de um n umero binario dado na entrada.
Denicao 32 Uma MT M = (K, , , s, y, n) decide a linguagem (ou e um procedimento
de decisao para a linguagem)
L ( .)

sse para todo string de entrada v ( .)

, v = ax tem-se:

(s, ax)

M
(y, . . .) sse w L
(s, ax)

M
(n, . . .) sse w , L
Exemplo 27 Seja a MT M = (q
0
, q
1
, y, n, ., a, b, , q
0
, y, n) com dada por:
q q

m
1 q
0
a q
0
a R
2 q
0
b q
1
b R
3 q
0
. y . S
4 q
1
a q
1
a R
5 q
1
b q
0
b R
6 q
1
. n . S
35
Esta MT e um procedimento de decisao para a linguagem (a

ba

ba

, formada pelos
strings de as e bs com n umero par de bs. Observe a semelhanca entre esta MT e o AF
que reconhece a mesma linguagem, visto no exemplo 8.
Exerccio 32 Faca a execucao da MT do exemplo anterior a partir dos strings aabab e
abbaab. Compare as evolucoes obtidas com o reconhecimento efetuado pelo AF do exemplo
8.
Exerccio 33 A partir do exerccio anterior, voce e capaz de estabelecer um procedimento
que permita obter, a partir de um AFD que reconhece uma linguagem L, uma MT que
decide a mesma linguagem ?
Em um procedimento de decisao as computacoes realizadas pelas MTs sempre param,
indicando pelo estado atingido (y ou n) se o string deve ou nao ser reconhecido. No entanto,
o formalismo MT permite uma outra forma de se reconhecer uma linguagem: por meio de
semi-decisao.
Denicao 33 Uma MT M = (K, , , s, h) semi-decide a linguagem (ou e um procedi-
mento de semi-decisao para a linguagem)
L ( .)

sse para todo string de entrada v ( .)

, v = ax tem-se:

(s, ax)

M
(h, . . .) se w L
(s, ax)

M
entra em loop, no outro caso.
Como veremos, decisao e semi-decisao nao sao equivalentes, e denem duas classes de lingua-
gens. As linguagens para as quais e possvel denir um procedimento de decisao (MT que
sempre para, indicando pelo estado nal atingido se o string dado na entrada deve ou nao ser
aceito) sao denominadas linguagens recursivas, e aquelas para as quais e possvel denir uma
semi-decisao (MT que para se o string de entrada pertence `a linguagem, e entrando em loop
no outro caso) sao denominadas recursivamente enumeraveis. Esta importante distincao sera
detalhada oportunamente, no estudo de problemas indecidveis. Denindo formalmente:
Denicao 34 Seja L ( .)

. L e dita recursiva sse existe uma MT que a decide;


L e dita recursivamente enumeravel sse existe uma MT que a semi-decide.
36
Evidentemente ocorre o
Teorema 8 Toda linguagem recursiva e recursivamente enumeravel.
Exerccio 34 A partir da MT utilizada no exemplo 27, dena uma MT que efetua a semi-
decisao de (a

ba

ba

. Sugestao: simplesmente substitua em M a chegada no estado n por


um loop. Relacione este exerccio ao teorema anterior.
37
Referencias
[1] A. Aho, R. Sethi, and J.D. Ullman. Compiladores - Princpios, Tecnicas e Ferramentas.
Guanabara Koogan, 1995.
[2] J.E. Hopcroft, R. Motwani, and J.D. Ullman. Introducao `a Teoria de Automatos, Lin-
guagens e Computacao. Campus, 2002.
[3] J.E. Hopcroft and J.D. Ullman. Introduction to Automata Theory, Languages and Com-
putation. Addison-Wesley, 1979.
[4] H.R. Lewis and C.H. Papadimitriou. Elements of the Theory of Computation, 1
a
Ed.
Prentice-Hall, 1981.
[5] H.R. Lewis and C.H. Papadimitriou. Elementos de Teoria da Computacao, 2
a
Ed. Book-
mann, 1999.
[6] P.F.B. Menezes. Linguagens Formais e Automatos, 3
a
Ed. Sagra-Luzzato, 1999.
[7] S.H. Rodger and T.W. Finley. JFLAP: An Interactive Formal Languages and Automata
Package. Jones and Bartlett Publishers, 2006.
[8] T.A. Sudkamp. Languages and Machines. Addison-Wesley, 1997.
38

Vous aimerez peut-être aussi