Você está na página 1de 20

Linguagens, Gramticas

e Mquinas
1 INTRODUO

Pode-se olhar um computador como uma mquina M que tem as propriedades descritas a seguir. A cada
instante, M tem um "estado interno", M l alguma "entrada", M "imprime" alguma sada que depende
apenas do estado interno e da entrada e, ento, possivelmente, M muda o estado interno. Existem vrias
maneiras de formalizar a noo de uma mquina M bem como uma hierarquia de tais mquinas.
Pode-se tambm definir uma funo "computvel" em termos de um tipo especial de mquina M (mquina
de Turing) que produz uma sada inteira no negativa M(n) para qualquer entrada inteira no negativa n.
Como a maioria dos dados pode ser codificada por tais inteiros, a mquina M pode tratar a maior parte dos
dados.
Este texto dedicado a essas questes e a tpicos a elas relacionados.

2 ALFABETOS, PALAVRAS E SEMIGRUPOS LIVRES

Considere um conjunto no vazio A de smbolos. Uma palavra ou string w no conjunto A uma seqncia
finita de elementos do alfabeto. Por exemplo, as seqncias:
u = ababb e v = accbaaa
so palavras em A = {a, b, c}. Quando tratamos de palavras em A, freqentemente denominamos A como
o alfabeto, e seus elementos so chamados de letras. Tambm usaremos notao abreviada escrevendo
a
2
para aa, a
3
para aaa e assim por diante. Logo, para as palavras acima, u = abab
2
e v = ac
2
ba
3
.
A seqncia vazia, denotada por , (letra grega lambda), (letra grega psilon) ou 1, tambm
considerada uma palavra em A, chamada de palavra vazia. O conjunto de todas as palavras em A
denotado por A*.
O comprimento de uma palavra u (escreve-se u ou l(u)) o nmero de elementos na sua seqncia
de letras. Para as palavras u e v acima, temos l(u) = 5 e l(v) = 7. Alm disso, l() = 0, onde a palavra
vazia.

Observao: A menos que afirmao em contrrio seja feita, o alfabeto A ser finito, os smbolos u, v e w
estaro reservados para palavras em A e os elementos de A usaro as letras a, b e c.

Concatenao

Considere duas palavras u e v em um alfabeto A. A concatenao de u e v, denotada por uv, a palavra
obtida quando se escrevem as letras de u seguidas das letra de v. Por exemplo, para as palavra w e v
acima, temos
uv = ababbaccbaaa = abab
2
ac
2
ba
3

A exemplo das letras, definimos u
2
= uu, u
3
= uuu e, em geral, u
n+l
= uu
n
onde u uma palavra.
Claramente, para quaisquer palavras u, v e w, as palavras (uv)w e u(vw) so idnticas, consistindo,
simplesmente, nas letras u, v e w escritas uma aps a outra. Tambm, o acoplamento da palavra vazia antes
ou depois de qualquer palavra u no altera a palavra u. Em outros termos:
Teorema 1: a operao de concatenao de palavras em um alfabeto A associativa. A palavra vazia
o elemento identidade da operao.
(Falando em termos gerais, a operao no comutativa, por exemplo, uv vu para as palavras u e v
acima.)

Subpalavras e Segmentos Iniciais

Considere qualquer palavra u = a
l
a
2
.....a
n
em um alfabeto A. Qualquer seqncia
w = a
j
a
j+1..
..... a
k
chamada subpalavra de w. Em particular, a subpalavra w = a
1
a
2
......a
k
, comeando com as
primeiras letras de w, dita um segmento inicial de u. Em outros termos, w uma subpalavra de u se u =
v
1
wv
2
, e w um segmento inicial de u se u = v
1
wv
2
. Observe que . e u so subpalavras de u, j que u = .u.
Considere a palavra u = abca. As subpalavras e segmentos iniciais de u so:
1 Subpalavras: , a, b, c, ab, bc, ca, abc, bca, abca.
2 Segmentos iniciais: , a, ab, abc, abca.
Observe que a subpalavra w = a aparece em dois lugares de u. A palavra ac no uma subpalavra de u
mesmo que todas as letras pertenam a u.

Semigrupos Livres e Monides Livres

Seja F o conjunto de palavras no vazias de um alfabeto A com a operao de concatenao. Como
observado acima, a operao associativa. Assim F um semigrupo, chamado semigrupo livre sobre A ou
semigrupo livre gerado por A. Pode-se mostrar facilmente que F satisfaz as leis de cancelamento direita
e esquerda. Entretanto, F no comutativo quando A tem mais de um elemento. Escreveremos F
A
para o
semigrupo livre sobre A quando quisermos especificar o conjunto A.
Considere agora M = A* o conjunto de todas as palavras de A, incluindo a palavra vazia . Como um
elemento identidade para a operao de concatenao, M um monide, chamado monide livre sobre A.

3 LINGUAGENS

Uma linguagem L sobre um conjunto A uma coleo de palavras em A. Lembre que A * denota o conjunto
de todas as palavras em A. Portanto, a linguagem L , simplesmente, um subconjunto de A*.

Exemplo 1 Os seguintes conjuntos so linguagens sobre A.
1. L
l
={a, ab, ab
2
,. ..}
2. L
2
= { a
m
b
n
: m>0, n > 0}.
3. L
3
= { a
m
b
m
: m > 0}.
4. L
4
= { b
m
ab
n
: m > 0, n > 0}.
Pode-se, verbalmente, descrever essas linguagens como a seguir.
(a) L, consiste em todas as palavras comeando por a e seguidas de zero ou mais bs.
(b) L
2
consiste em todas as palavras comeando por um ou mais a e seguidas por um ou
mais bs.
(c) L
3
consiste em todas as palavras comeando por um ou mais a e seguidas pelo
mesmo nmero de bs.
(d) L
4
consiste em todas as palavras com exatamente um a.

Operaes em Linguagens

Suponha que L M so linguagens sobre um alfabeto A. A "concatenao" de L e M, denotada por LM, a
linguagem definida como a seguir:
LM = {uv: u L, v M}
isto , LM denota o conjunto de todas as palavras que vm da concatenao de uma palavra de L com uma
palavra de M. Por exemplo, suponha
L
1
={ a, b
2
} L
2
= {a
2
,ab,b
3
}, L, = {a
2
, a
4
, a
6
, . . . }
Ento,
L
1
L
2
= {a
3
,a
2
b,ab
3
,b
2
a
2
,b
2
ab,b
5
}
L
1
L
3
= {a
3
,a
5
,a
7
,...,b
2
a
2
,b
2
a
4
,b
5
a
6
,...}
L
1
L
1
={a
2
,ab
2
,b
2
a,b
4
}
Claramente, a concatenao de linguagens associativa, j que a concatenao de palavras associativa.
As potncias de uma linguagem L so definidas como a seguir.
L
0
= {}, L
1
=L, L
2
= LL, L
m+l
=L
m
L para m>1.
A operao unria L* (l-se "L estrela") de uma linguagem L, conhecida como o fecho de Kleene de L,
porque Kleene provou o Teorema 2.

Teorema 2: Fecho de Kleene
U

=
= =
0
2 1 0
..... *
k
k
L L L L L
A definio de L* coerente com a notao A* que consiste em todas as palavras sobre A. Alguns textos
definem L* como sendo a unio de L
1
, L
2
,..., isto , L
+
a mesma coisa que L*, mas sem a palavra vazia .

4 EXPRESSES REGULARES E LINGUAGENS REGULARES

Seja A um alfabeto (no vazio). Esta seo define uma expresso regular r sobre A e uma
l i nguagem L(r) sobre A associada expresso regular r. A expresso r e sua linguagem
correspondente L(r) so indutivamente definidas a seguir.

Definio: Cada uma das expresses seguintes uma expresso regular sobre um alfabeto A.
1. O smbolo "" (palavra vazia) e o par"( )" (expresso vazia) so expresses
regulares.
2. Cada letra a em A uma expresso regular.
3. Se r uma expresso regular, ento (r*) uma expresso regular.
4. Se r
1
e r
2
so expresses regulares, (r
1
r
2
) uma expresso regular.
5. Se r
1
e r
2
so expresses regulares, ento (r
1
r
2
) uma expresso regular.
Todas as expresses regulares so formadas dessa maneira.
Observe que uma expresso regular r um tipo especial de palavra (strng) que usa as letras de
A e os cinco smbolos
( ) *
Enfatizamos que nenhum outro smbolo usado em expresses regulares.

Definio: Uma linguagem L(r) sobre A, definida por uma expresso regular r sobre A, definida
como:
(1) L() = (} e L(( )) = , o conjunto vazio.
(2) L(a) = {a}, onde a uma letra em A
(3) L(r*) = (L(r))*, o fecho de Kleene L(r)
(4) .L(r
1
r
2
) = L( r
1
) L(r
2
) (a unio das linguagens).
(5) L(r
1
r
2
] = L( r
1 )
L( r
2
) (a concatenao das linguagens).

Observao: Sero omitidos os parnteses das expresses regulares quando possvel. Como a
concatenao e a unio de linguagens so associativas, muitos dos parnteses podem ser omitidos. Alm
disso, adotando a conveno de que * tem precedncia sobre a concatenao e que concatenao tem
precedncia sobre "", outros parnteses podem ser omitidos.

Definio: Seja L uma linguagem sobre A. Ento L dita uma linguagem regular sobre A se existe uma
expresso regular r sobre A tal que L = L(r).

Exemplo 2: Seja A=[a, b}. Cada um dos itens a seguir tem uma expresso r e sua linguagem
correspondente L(r):
(a) Seja r = a*. Ento, L(r) consiste em todas as potncias de a, i.e., todas as palavras
em a (incluindo a palavra vazia ).
(b) Seja r = aa*. Ento, L(r) consiste em todas as potncias positivas de a, i. e., todas as
palavras em a excluindo a palavra vazia.
(c) Seja r = ab*. Ento, L(r) consiste em a ou qualquer palavra em b, isto ,
L(r) = {a, ,b,b
2
,...}
(d) Seja r = (ab)*. Note que L(ab) = {a} {b} = A; logo, L(r) = A*, todas as
palavras sobre A.
(e) Seja r = (ab)*bb. Ento, L(r) consiste na concatenao de qualquer palavra em
A com bb, isto , todas as palavras terminando em b.
(f) Seja r = a b*. L(r) no existe, pois r no uma expresso regular. (Note que A
no um dos smbolos usados para expresses regulares)

Exemplo 3: Considere as seguintes linguagens sobre A = {a, b} :
(a) L
1
= {a
m
b
n
: m > 0, n > 0},
(b) L
2
= {b
m
ab
n
: m > 0, n > 0},
(c) L
3
= {a
m
b
m
: m > 0}.

Ache uma expresso regular r sobre A = {a, b} tal que L
i
= L(r) para i = l, 2, 3.
(a) L
1
consiste nas palavras comeando com um ou mais as seguidos por um ou mais
bs. Por exemplo, podemos fazer r = a*abb*. Note que r no nica; por exemplo, r =
a*abb* outra soluo.
(b) L
2
consiste em todas as palavras que comeam com um ou mais bs seguidos por um
nico a posteriormente seguido por um ou mais b, isto , todas as palavras com
exatamente um a que no pode ser nem a primeira nem a ltima letra. Portanto,
r = bb*abb* uma soluo.
(c) L
3
consiste em todas as palavras comeando com um ou mais as seguidos pelo
mesmo nmero de bs. No existe expresso regular r tal que L
3
= L(r); isto , L
3
no
uma linguagem regular. Este fato demonstrado no Exemplo 7.

5 AUTMATOS DE ESTADO FINITO

Um autmato de estado finito (AEF) ou, simplesmente, um autmato M consiste em cinco partes:
1. um conjunto finito (alfabeto) A de entradas;
2. um conjunto finito S de estados (internos);
3. um subconjunto Y de S cujos elementos so chamados de aceitveis

ou estados "sim";
4. um estado inicial S
Q
em S;
5. uma funo de prximo estado F de S x A em S.

Um autmato M denotado por M = ( A, S, Y, s
0
, F) quando se quer indicar suas cinco partes. (O plural
de autmato automata).
Alguns textos definem a funo de prximo-estado F: S x A S em (S) por uma coleo de
funes f
a
: S S, uma para cada a . A; isto , cada entrada a pode ser vista como causadora de uma
mudana no estado do autmato M. A associao F(s, a) =f
a
(s) mostra que ambas as definies so
equivalentes.

Exemplo 4: A seguir, define-se um autmato M com dois smbolos de entrada e trs estados.
1. A = [a, b] , smbolos de entrada.
2. S= {S
0
,S
1
,S
2
} ,estados internos.
3. Y = { S
0
,S
1
}, estados "sim".
4. S
0
estado inicial
5. Funo de prximo-estado F: S x A S definida por
F(S
0
,a)= S
0
, F(S
1
,a)= S
0
, F(S
2
,a)= S
2
,
F(S
0
,b)= S
1
, F(S
1
,b)= S
2
, F(S
2
,b)= S
2
,
A funo de prximo-estado freqentemente dada por uma tabela, como na Figura 1 .


Diagrama de Estados de um Autmato M

Um autmato M definido mais freqentemente por seu diagrama de estados D = D(M) do que pela
listagem das suas cinco partes. O diagrama de estados D = D(M) um grafo orientado rotulado como
descrito a seguir.
1. Os vrtices de D(M) so os estados de S e um estado aceitvel denotado por um crculo duplo.
2. Existe uma seta (aresta orientada) em D(M) do estado s
j
para o estado s
k
rotulada por uma
entrada a se F(s
j
,a) = s
k
ou, equivalentemente, se f
a
(s
j
) = s
k
.
3. O estado inicial s
0
indicado por uma seta especial que termina em s
0,
mas que no tem vrtice inicial.
Para cada vrtice S, e cada letra a do alfabeto A, existir uma seta saindo de s
j
rotulada por a; logo, o
grau de sada de cada vrtice igual ao nmero de elementos em A. Por convenincia de notao,
rotulamos uma nica seta com todas as entradas que causam a mesma mudana de estado em vez
de usar uma seta para cada mudana.
O diagrama de estados D = D(M) do autmato M no Exemplo 1 aparece na Figura 2. Note que a e, b so
rtulos para a seta de s
2
para s
2
, pois F(s
2
,a) = s
2
e F(s
2
,b) = s
2
. Note tambm que o grau de sada de cada
vrtice 2.

A Linguagem L(M) Determinada por um Autmato M

Cada autmato M com um alfabeto de entrada A define uma linguagem sobre A, denotada por L(M), como a
seguir.
Seja w = a
1
a
2
....a
m
uma palavra em A. Ento w determina uma seqncia de estados
S
0
S
1
S
2
..... S
M

onde S
0
o estado inicial e F(s
i-1
, a
i
) = s
i
para i 1. Em outras palavras, w determina o caminho
P = (S
0
, a
0
, S
1
, a
1
, S
2
,.....,a
m
, s
m
)
no grafo do diagrama de estados D(M).
Dizemos que M reconhece a palavra w se o estado final s
m
for um estado aceitvel em Y. A linguagem de
M, L(M), a coleo de todas as palavras de A que so aceitveis por M.

Exemplo 5:
a Determine se o autmato M na Figura 2 aceita ou no a palavra w onde:
(1) w = ababba; (2) w = baab; (3) w =
(1) Use a Figura 2 e a palavra w = ababba para obter o caminho
2 2 1 0 1 0 0
s s s s s s s
a b b a b a

(2) A palavra w = baab determina o caminho
1 0 0 1 0
s s s s s P
b a a b
=
O estado final s
1
est em Y; portanto, w aceitvel por M.
(3) Aqui o estado final igual ao estado inicial s
0
j que w a palavra vazia. Como s
0
est em
Y, . aceitvel por M.
b Descreva a linguagem L(M) do autmato M na Figura 2.
L(M) consistir em todas as palavras w de A que no tm dois bs sucessivos. Isso decorre
dos fatos seguintes:
(1) Podemos entrar com o estado S
2
apenas aps dois bs sucessivos.
(2) Nunca podemos sair de s
2
.
(3) O estado S
2
o nico estado rejeitado (no aceitvel).
A relao fundamental entre linguagens regulares e automata est contida no teorema seguinte (cuja prova
est alm dos objetivos deste texto).

Teorema 2: (Kleene) uma linguagem L sobre um alfabeto A regular se e somente se existe um
autmato de estado finito M tal que L = L(M).
A operao estrela L * em uma linguagem L chamada, s vezes, de fecho de Kleene de L, j que Kleene
foi quem primeiramente provou este resultado bsico.

Exemplo 6: Seja A = { a, b}. Construa um autmato M que aceitar precisamente as palavras de
A que terminam com dois b.
Como b
2
aceitvel, mas e b no o so, precisamos de trs estados, s
0
, o estado inicial e S
1
e S
2
com uma seta rotulada com b indo de s
0
para S
1
, e outra de S
1
para s
2
. Alm disso, s
2
um estado
aceitvel, mas no S
0
e S
1
. Isto nos d o grafo da Figura 3(a). Por outro lado, se existe um a, ento
queremos voltar a s
0
, e se estivermos em s
2
e existir um b, ento queremos ficar em s
2
. Essas
condies adicionais permitem determinar o autmato desejado M que aparece na Figura 13(b).

Lema de Pumping

Suponha que um autmato M sobre A tem k estados, e suponha que w = a
1
a
2
....a
n
uma palavra sobre A,
aceitvel por M, tal que |w| = n > k, o nmero de estados. Seja
P= (S
0
, S
1
,....., s
n
)
a seqncia correspondente de estados determinados pela palavra w. Como n > k, dois dos estados em P
devem ser iguais, digamos, S
I
= S
J
onde i < j. Seja
x = a
{
a
2
. . . . . a
i
y = a
+1
.......a
j
, z = a
j+1
........ a
n

Como mostrado na Figura 4, xy termina em S
I
= S
J
, logo, xy
m
tambm termina em S
I;
. Portanto, para todo
w, m, w
m
= xy
m
z termina em s
n
, que um estado aceitvel.

A discusso acima demonstra o seguinte importante resultado.

Teorema 3: (Lema de pumping) suponha que M um autmato sobre A tal que:
i. M tem k estados.
ii. M aceita uma palavra w de a onde w| > k.
Ento w = xyz onde, para todo m positivo, m, w
m
= xy'": aceitvel por M.
O prximo exemplo mostra uma aplicao do lema de pumping.

Exemplo 7: Mostre que a linguagem L = { a
m
b
m
: m positivo} no regular.
Suponha que L regular. Ento, pelo Teorema 2, existe um autmato de estado finito M que aceita L.
Suponha que M tem b estados. Seja w = a
k
b
k
. Ento, w| > k. Pelo lema de pumping (Teorema 3), w =
xyz, onde y no vazio e w
2
= xy
2
z: tambm aceitvel por M. Se y consistir apenas em as e bs, ento w,
no tem o mesmo nmero de as e bs. Em qualquer caso, w
2
no pertence a L, o que uma contradio.
Logo, L no regular.

6 GRAMTICAS

A Figura 5 mostra a construo gramatical de uma sentena especfica. Observe que existem:
(1) vrias variveis, por exemplo, (sentenas), (oraes nominais),...;
(2) vrias palavras terminais, por exemplo, "O", "menino",...
(3) uma varivel inicial (sentena); e
(4) vrias substituies ou produes, por exemplo,
(sentena) (orao nominal) (orao verbal)
(orao objetiva) (artigo) (substantivo)
(substantivo) ma
A sentena final contm apenas terminais, embora tanto variveis quanto terminais apaream na construo.
A descrio intuitiva apresentada para motivar a definio seguinte de gramtica e da linguagem por ela
gerada.

Uma gramtica de estrutura de frases ou, simplesmente, uma gramtica G consiste em quatro partes:
(1) um conjunto finito (vocabulrio) V;
(2) um subconjunto T de V cujos elementos so chamados terminais (os elementos de N =V\T
so denominados no terminais ou variveis);
(3) um smbolo no terminal S chamado smbolo de start;
(4) um conjunto finito P de produes. Uma produo um par ordenado (,),
normalmente denotado por , onde e so palavras em V. Cada produo em
V deve conter pelo menos uma varivel no seu lado esquerdo.
Uma tal gramtica G denotada por G = G(V, T, S, P) quando queremos indicar suas quatro partes.
As seguintes notaes, a menos que declarao em contrrio seja feita ou esteja implcita, sero usadas
para a nossa gramtica. Terminais sero denotados por letras minsculas latinas em itlico, a, b, c,..., e
variveis sero denotadas por letras latinas em itlico maisculas A, B, C,... usando S para o smbolo de
start. Letras gregas, , ,... denotaro palavras em V, isto , palavras envolvendo terminais e no-
terminais. Alm disto, escreveremos:
(
1
,
2
, . . . ,
k
) em vez de
1
,
2
....
k

Observao: Freqentemente, definiremos uma palavra G apresentando apenas suas produes,
assumindo implicitamente que S o smbolo de start e que os terminais e no-terminais de
G so apenas aqueles que aparecem em suas produes.

Exemplo 8: Definimos a seguir uma gramtica G:
V = {A,B,S,a,b}, T={a, b], ) , , , (
5 4 3 2 1
b B a A Bb B Aa AB S P =
com S como smbolo de start. As produes podem ser abreviadas como a seguir.
S AB, A (Aa,a), B (Bb,b)

Linguagem L(G) de uma Gramtica G

Suponha que w e w' so palavras sobre um conjunto vocabulrio V de uma gramtica G. Escrevemos:
w w'
Se w' pode ser obtida de w usando uma das produes, isto , se existem palavras uev tais que w = uv
e w' = uV e existe uma produo . Escrevemos
w w' ou w
*
w
se w' pode ser obtida a partir de w usando um nmero finito de produes.
Seja G uma gramtica com conjunto terminal T. A linguagem de G, denotada por L(G), consiste em todas
as palavras em T que podem ser obtidas do smbolo de start S pelo processo descrito anteriormente; isto
,
L(G) = { wT * : S w}

Exemplo 9: Considere a gramtica C no Exemplo 8. Observe que w = a
2
b
4
pode ser obtida do smbolo
de start S como a seguir:
S AB AaB aaB aaBb aaBbb aaBbbb aabbbb a
2
b
4
'
Aqui, usamos as produes 1, 2, 4, 3, 3, 3, 5, respectivamente. Logo, podemos escrever S a
2
b
4
.
Portanto, w = a
2
b
4
pertence a L(G). Mais geralmente, a seqncia e produes 1, 2 (r vezes), 4, 3 (s
vezes), 5 produzir a palavra w = a
r
ab
s
b, onde r e s so inteiros no negativos. Por outro lado, nenhuma
seqncia de produes pode produzir o depois de um b. Conseqentemente,
L(G) = {a
m
b
n
me n inteiros positivos}
Isto , a linguagem L(G) da gramtica G consiste em todas as palavras que comeam com um ou mais as
seguidos por um ou mais b.

Exemplo 10: Ache a linguagem L(G) sobre {a, b, c] gerada pela gramtica G com produes
S aSb, aS Aa, Aab c
Primeiramente, precisamos aplicar a primeira produo uma ou mais vezes para obter a palavra w = a
n
Sb
n
,
onde n > 0. Para eliminar S, aplicamos a segunda produo para obter a palavra w' = a
m
Aabb
m
, onde
m = n - 1 > 0. Finalmente, s nos resta aplicar a terceira produo para obter a palavra w
n
= a
n
cb
m
onde m0.
Conseqentemente,
L(G) = {a
m
cb
m
:m no negativo}
Isto , L(G) consiste em todas as palavras com o mesmo nmero no negativo de a e b separados por um
c.

Tipos de Gramticas

As gramticas so classificadas de acordo com os tipos de produo possveis. A seguinte classificao de
gramticas devida a Noam Chomsky.
Uma gramtica de Tipo 0 no tem restries nas suas produes. Os Tipos 1, 2 e 3 so definidos como a
seguir:
(1) Uma gramtica G dita ser de Tipo 1 se toda produo da forma , onde | (, ou da
forma .
(2) Uma gramtica G dita ser de Tipo 2 se toda produo da forma A , i. ., onde o lado
esquerdo um no terminal.
(3) Uma gramtica G dita ser de Tipo 3 se toda produo da forma A a, ou A aB, i. e., onde o
lado esquerdo uma nica varivel, e o lado direito um terminal simples ou um terminal seguido
de uma varivel, ou da forma S .
Observe que as gramticas formam uma hierarquia; isto , toda gramtica do Tipo 3 uma gramtica do
Tipo 2, toda gramtica do Tipo 2 uma gramtica do Tipo 1 e toda gramtica do Tipo 1 uma gramtica
do Tipo 0. As gramticas tambm so classificadas como sensveis a contexto, livres de contexto ou
regulares.
a. Uma gramtica dita sensvel a contexto se as produes so da forma
A '
A denominao "sensvel a contexto" vem do fato de que podemos substituir a varivel A por em
uma palavra apenas quando A estiver entre e '.
b. Uma gramtica G dita livre de contexto se as suas produes so da forma
A
A denominao "livre de contexto" vem do fato de que agora podemos substituir a varivel A por a
despeito do local onde A aparece.
c Uma gramtica dita regular se as suas produes so da forma:
A a, A aB, S
Observe que gramtica livre de contexto tem o mesmo sentido que gramtica do Tipo 2, e uma gramtica
regular igual a uma gramtica do Tipo 3.
Uma relao fundamental entre gramticas regulares e autmatos finitos enunciada a seguir.

Teorema 4: uma linguagem L pode ser gerada por uma gramtica G do Tipo 3 (regular) se e somente
se existe um autmato finito M que aceita L.
Portanto, a linguagem L regular sse L = L(r), onde r uma expresso regular sse L = L(M) onde M um
autmato finito sse L = L(G), onde G uma gramtica regular. (Lembre que sse a abreviatura de "se e
somente se").

Exemplo 11: Considere a linguagem L = {a
n
b
n
; n > 0}.
(a) Ache uma gramtica G, livre de contexto, que gera L.
Claramente, a gramtica G com as seguintes produes vai gerar L:
S ab, S aSb
Note que G uma linguagem livre de contexto, pois cada lado esquerdo um no
terminal.
(b) Ache uma gramtica regular G que gera L.
Pelo Exemplo 7, L no uma linguagem regular. Portanto, L no pode ser gerada
por uma gramtica regular.

rvores de Derivao de Gramticas Livres de Contexto

Considere uma gramtica livre de contexto G (Tipo 2). Qualquer derivao de uma palavra w em L(G) pode
ser representada graficamente por uma rvore com razes ordenada T, denominada rvore de derivao
ou parse tree. Por exemplo, seja G a gramtica livre de contexto com as seguintes produes:
S aAB, A Bba, B bB, B c
A palavra w = acbabc pode ser derivada de S como a seguir:
S aAB a(Bba}B acbaB acba(bB) acbabc
Pode-se desenhar uma rvore de derivao T, a partir da palavra w, como indicado na Figura 6.
Especificamente, iniciamos com S como raiz e depois adicionamos ramos rvore de acordo com a
produo usada na derivao de w. Esse procedimento leva rvore completa mostrada na Figura 6(e). A
seqncia de folhas, da esquerda para a direita, em T a palavra derivada w. Alm disso, qualquer n que
no seja uma folha em T uma varivel, digamos A, e os sucessores imediatos (filhos) de A formam uma
palavra onde A a produo de G usada na derivao de w.

Forma de Bakus-Naur

Existe uma outra notao, chamada de forma de Bakus-Naur, que geralmente usada para descrever as
produes de uma gramtica livre de contexto (Tipo 2). Especificamente,
(i) :: = usado em vez de
(ii) Todo no-terminal aparece dentro de delimitadores .
(iii) Todas as produes com os mesmos no-terminais do lado esquerdo so combinadas em uma
declarao com todos os lados direitos listados direita de :: =, separados por barras verticais.
Por exemplo, as produes A aB, A b, A BC so combinadas em uma nica sentena
A : : =aBbBC
Mquinas e Gramticas

O Teorema 4 nos conta que linguagens regulares correspondem a autmatos (AEF). Tambm existem
mquinas, mais funcionais do que AEF, que correspondem a outras gramticas.
(a) Autmatos de pilha: um autmato de pilha P similar a um AEF exceto pelo fato de que P tem uma
pilha auxiliar que torna disponvel uma quantidade infinita de memria para P. Uma linguagem L
reconhecida por um autmato de pilha P se e somente se L livre de contexto.
(b) Autmatos linearmente limitados: um autmato linearmente limitado B dispe de mais recursos do
que um autmato de pilha. Um tal autmato B usa uma fita que linearmente limitada pelo comprimento
da palavra de entrada w. Uma linguagem L reconhecida por um autmato linearmente limitado se e
somente se L sensvel ao contexto.
(c) Mquinas de Turing: uma mquina de Turing M, assim denominada em homenagem ao matemtico
britnico Alan Turing, usa uma fita infinita. Ela capaz de reconhecer qualquer linguagem L que pode
ser gerada por qualquer gramtica de estrutura de frases G. Na verdade, uma mquina de Turing M
uma das muitas maneiras equivalentes de definir uma funo "computvel".f.
A discusso acerca de autmatos de pilha e autmatos linearmente limitados est alm dos objetivos deste
texto. Discutiremos mquinas de Turing na Seo 8.

7 MQUINAS DE ESTADO FINITO

Uma mquina de estado finito (MEF) similar a um autmato de estado finito exceto pelo fato de que uma
mquina de estado finito "imprime" uma sada usando um alfabeto de sada distinto do alfabeto de entrada.
Apresentamos a seguir a definio formal.
Uma mquina de estado finito (ou mquina seqencial completa) M consiste em seis partes:
(1) um conjunto finito A de smbolos de entrada;
(2) um conjunto finito S de "estados internos";
(3) um conjunto finito Z de smbolos de sada;
(4) um estado inicial s
0
em S;
(5) uma funo de prximo estado f de S x A em S',
(6) uma funo de sada g de S x A em Z.
Uma mquina como esta denotada por M = M (A, S, Z, s
Q
, f, g) quando se quer indicar suas seis partes.

Exemplo12: As informaes seguintes definem uma mquina de estado finito M com dois smbolos de
entrada, trs estados internos e trs smbolos de sada:
(1) A = (a,b};
(2) S={s
0
,s
1
,s
2
};
(3) Z=[ x, y, z} ;
(4) Estado inicial s
0
;
(5) Funo de prximo estado f: S x A S definida por
f(s
0
,a)=s
1
, f(s
1
,a)=s
2
, f(s
2
,a)=s
0
f(s
0
,b)=s
2
, f( s
1
,b)= s,, f(s
2
,b)=s
1

(6) Funo de sada g: S x A Z definida por
g(s
0
,a)=x, g(s
1
, a)=x, g(s
2
,a) = z
g(s
0
,b)=y, g(s
1
,b)=z, f(s
2
,b)=y

Tabela de Estados e Diagrama de Estados de uma Mquina de Estado Finito

Existem duas maneiras de representar uma mquina de estado finito de forma compacta. Uma maneira
por uma tabela conhecida como tabela de estados da mquina M; a outra por um grafo orientado rotulado
conhecido como diagrama de estados da mquina M.
A tabela de estados combina a funo de prximo estado f e a funo de sada g em uma nica tabela
que representa a funo F:SxA SxZ definida por
F(s
i
,a
j
) = (f(s
i
,a
j
),g(s
i
,a
j
))
Por exemplo, a tabela de estados da mquina M do Exemplo 12 est desenhada na Figura 7(a). Os estados
esto listados no lado esquerdo da tabela, com o estado inicial aparecendo em primeiro lugar, e os smbolos
de entrada esto listados no topo da tabela. Cada elemento da tabela um par (s
k
, z
r
) onde s
k
= f(s
i
,a
j
), o
prximo estado, e z
r
= g(s
i
,a
j
) o smbolo de sada. Admite-se que os nicos smbolos de sada so os que
aparecem na tabela.

O diagrama de estados D = D(M) de uma mquina de estado finito M = M ( A, S, Z, s
0
,f ,g) um grafo
orientado rotulado. Os vrtices de D so os estados de M. Ademais, se
F(s
i
,a
j
) = (s
k
, z
r
), isto , f(s
i
,a
j
)= s
k
e g(s
i
,a
j
) =z
r
'
ento existe um arco (seta) de s
:
para s
k
que rotulado com um par a
j
, z
r
. Normalmente, colocamos o
smbolo de entrada a
j
prximo base da seta (perto de s
i
) e o smbolo de sada z
r
prximo ao centro da
seta. Tambm rotulamos o estado inicial s
0
desenhando uma seta extra para s
0
. Por exemplo, o diagrama
de estados da mquina M do Exemplo 12 aparece na Figura 7(b).

Fitas de Entrada e de Sada

A discusso acima sobre uma mquina de estado finito M no mostra as propriedades dinmicas de M.
Suponha que M recebe um string (palavra) de smbolos de entrada, digamos,
u = a
1
a
2
....a
m
Visualizamos esses smbolos em uma "fita de entrada"; a mquina M "l" esses smbolos de entrada,
v = s
0
s
1
s
2
....s
m

um por um e, simultaneamente, passa por uma seqncia de estados
s = z
1
z
2
....z
m

onde s
0
o estado inicial, enquanto imprime um string (palavra) de smbolos de sada em uma "fita de
sada". Formalmente, o estado inicial s
0
e a cadeia de entrada u determinam as cadeias v e w por
s
i
= f(s
i-1
,a
j
) e z
i =
g(s
i-1
,a
j
)
onde i = l, 2,..., m.

Exemplo 13: Considere a mquina M da Figura 7, isto , o Exemplo 12. Suponha que a entrada a
palavra
U = abaab
Calculamos a seqncia v de estados e a palavra de sada m a partir do diagrama de estados como
segue. Comeando no estado inicial s
0
, seguimos as setas rotuladas pelos smbolos de entrada como a
seguir.
2
,
0
,
2
,
1
,
0
s s s s s
y b x a z b x a

Isso produz a seguinte seqncia de estados v e a palavra de sada w:
v = s
0
s
1
s
1
s
2
s
0
s
2
e w = xzx:zy

Adio Binria

Esta subseo descreve uma mquina de estado finito M capaz de executar adio binria. Adicionando O
no incio dos nossos nmeros, podemos assumir que eles tm o mesmo nmero de dgitos. Se
mquina for informada a entrada:
1101011
+ 0111011

queremos, ento, que a sada seja a soma binria

10100110

Especificamente, a entrada a cadeia de pares de dgitos a ser somada:
11, 11, 00, 11, 01, 11, 10, b
onde b denota espao, e a sada deve ser a cadeia
0, 1, 1, 0, 0, 1, 0, 1
Tambm queremos que a mquina assuma o estado chamado de "parada" quando terminar a adio. Os
smbolos de entrada so
A = {00,01,10,11,b}
e os smbolos de sada so
Z = {0,1,b}
A mquina que "construmos" ter trs estados:
S= {vai-um (c), no vai-um (ri), parada (s)}
neste caso, no estado inicial. A mquina est mostrada na Figura 8.
Enunciamos o teorema seguinte a fim de ilustrar as limitaes das nossas mquinas.

Teorema 5: no existe mquina de estado finito M que possa fazer operaes binrias.
Se limitarmos o tamanho dos nmeros que multiplicamos, tais mquinas existem. Computadores so
importantes exemplos de mquinas finitas que multiplicam nmeros, mas os nmeros so limitados em seu
tamanho.

8 NMEROS DE GDEL

Lembre que um inteiro positivo p > 1 dito um nmero primo se seus nicos divisores positivos forem 1 e p.
Denote por p
1
,p
2
,..... os nmeros primos sucessivos. Logo,
p
1
=2, p
2
= 3, p
3
= 5, p
4
= 7, p
5
=11,
Sabemos existe um nmero infinito de primos e o teorema fundamental da aritmtica afirma que qualquer inteiro
positivo n > 1 pode ser escrito de maneira nica (exceto pela ordem) como um produto de nmeros primos. O
lgico alemo Kurt Gdel usou esse resultado para codificar seqncias finitas de nmeros e tambm para
codificar palavras sobre um alfabeto finito ou enumervel. A cada seqncia ou palavra atribudo um inteiro
positivo denominado nmero de Gdel como a seguir.
O nmero de Gdel da seqncia s = (n
1
, n
2
....., n
k
) de inteiros no negativos o inteiro positivo c(s) onde n
i

o expoente de p
i
na decomposio em primos de c(s), isto ,
c(s) = p
1
n1
p
2
n2
.....p
k
nk

Por exemplo,
c = (3, 1, 2, 0, 2) codificado por c(s) = 2
3
.3.5
2
.7.11
2
= 72600
O nmero de Gdel de uma palavra w em um alfabeto {a
0
, a
1
, a
2
, a
3
,.. ., } o inteiro positivo c(w) onde o
ndice da i-sima letra de w o expoente de p
1,
na decomposio prima de c(w). Por exemplo,
w = a
4
a
3
a
2
a
2
codificado por c(w) = 2
4
.3.5
3
.7
2
.11
2
= 35574000
(Observe que ambos os cdigos so essencialmente o mesmo, pois podemos considerar uma palavra w
como a seqncia dos ndices de suas letras).
A codificao acima fundamentalmente a demonstrao do principal resultado desta seo.

Teorema 6: suponha que um alfabeto A enumervel. Ento, qualquer linguagem L sobre A tambm
enumervel.

Demonstrao: O cdigo de Gdel define uma funo bijetora c: L N. Logo, L enumervel.

9 MQUINAS DE TURING

Existem diversas maneiras equivalentes de definir formalmente uma funo "computvel". Ns o fazemos
atravs de uma mquina de Turing M. Esta seo define formalmente uma mquina de Turing M, e a
prxima define uma funo computvel.
Nossa definio de uma mquina de Turing usa uma fita infinita extensvel para os dois lados quntuplas e
trs estados de parada. Outras definies usam uma fita extensvel para apenas um dos lados e/ou
qudruplas e um estado de parada. Entretanto, todas as definies so equivalentes.

Definies Bsicas

Uma mquina de Turing envolve trs conjuntos no vazios disjuntos:
1. Um conjunto finito fita
A = { a
l
, a
2
, . . . . . , a
m
} { B}
Neste caso, B = a
0
o smbolo "branco".
2. Um conjunto finito de estados
S = { s
1
, s
2
, , s
n
} { s
0
} { s
H
, s
Y
, s
N
}
Aqui, s
0
o estado inicial. Ademais, S
H
(PARADA) o estado de parada, s
Y
(SIM) o estado de aceite
(reconhecimento) e S
N
(NO) o estado de no aceite (ou no reconhecimento).
3. Um conjunto direo
d = (L,R,N}
Aqui, L denota esquerda, R denota direita e N denota nenhum movimento ou fique parada.

Definio 1.1: uma expresso uma seqncia finita (possivelmente vazia) de elementos de. ASd.
Em outras palavras, uma expresso uma palavra cujas letras (smbolos) vm dos
conjuntos A, S e d.

Definio 1.2: uma expresso de fita uma expresso envolvendo apenas elementos do conjunto fita A.

A mquina de Turing M pode ser vista como um cabeote de leitura/gravao de fita que se move para frente e
para trs ao longo de uma fita infinita. A fita dividida, no sentido do comprimento, em quadrados (clulas),
e cada quadrado pode ser branco ou guardar um smbolo. A cada tempo, a mquina de Turing M est em
um determinado estado interno s
:
lendo um dos smbolos na fita a
j
. Supomos que apenas um nmero finito
de smbolos no brancos aparece na fita.
A Figura 9(a) uma representao grfica de uma configurao de uma mquina de Turing M no estado s
2
lendo o segundo smbolo onde a
1
a
3
Ba
1
a
1
escrito na fita. (Note, novamente, que B o smbolo branco.)
Este desenho pode ser representado pela expresso = a

s
2
a
3
Ba
1
a
1
, onde escrevemos o estado s
2
de M
antes do smbolo de fita a
3
que M est lendo. Observe que a uma expresso que usa apenas o alfabeto de
fita A, exceto pelo smbolo de estado s
2
que no est no final da expresso, j que este aparece antes do
smbolo de fita
3
que M est lendo. A Figura 9 mostra duas outras representaes grficas de configuraes
e suas expresses correspondentes.

Apresentaremos as definies formais.

Definio 1.3: uma configurao a uma expresso da forma
= Ps
i
a
K
Q
onde P e Q so expresses de fita (possivelmente vazias).

Definio 1.4: seja a = Ps
j
a
k
Q uma configurao. Dizemos que uma mquina de Turing M est no estado s
i
lendo a letra a
k
, e que a expresso na fita a expresso Pa
k
Q, isto , sem o smbolo de estado s
i
.
Como mencionado acima, a cada instante, a mquina de Turing M est em um certo estado s. e lendo um
smbolo de fita a
k
. A mquina de Turing M capaz de fazer as trs tarefas seguintes simultaneamente:
i. M apaga o smbolo lido a
k
e escreve no seu lugar o smbolo de fita a
l
(onde admitimos a
l
=a
k
).
ii. M muda seu estado interno s
i
para o estado s
j
(onde admitimos s
j
= s
i
).
iii. M move um quadrado para a direita, move um quadrado para a esquerda ou no se move.
As aes de M mencionadas acima podem ser descritas por uma expresso com cinco letras,
denominada quntupla, que definimos abaixo.

Definio 1.5: uma quntupla q uma expresso de cinco letras da forma:
q = (s
i
,a
k
,a
e
,s
j
|
|
|

\
|
N
R
L
}
Isto , a primeira letra de q um smbolo de estado, a segunda um smbolo de fita, a terceira um
smbolo de fita, a quarta um smbolo de estado e a ltima um smbolo de direo, L, R ou N.
Apresentamos a seguir a definio formal de uma mquina de Turing.

Definio 1.6: uma mquina de Turing M um conjunto finito de quntuplas tal que:
(i) Duas quntuplas distintas no podem iniciar com as mesmas duas letras,
(ii) Nenhuma quntupla comea com s
H
, s
Y
ou s
N
.
A condio (i) da definio garante que a mquina M no pode executar mais de uma tarefa a cada tempo,
e a condio (ii) garante que M pra nos estados s
H
, s
Y
ou s
N
.
A definio seguinte uma maneira equivalente de definir uma mquina de Turing.

Definio 1.6': uma mquina de Turing uma funo parcial de
S\ { s
H
, s
Y
, s
N
} x A em A x S x d
O termo "funo parcial" significa que o domnio de M um subconjunto de S\{ s
H
, s
Y
, s
N
} x A.
A ao da mquina de Turing descrita acima pode ser agora formalmente definida.

Definio 1.7: sejam a e p configuraes. Escrevemos

se uma das seguintes condies ocorre, onde a, b e c so letras de fita e P e Q so
expresses de fita (possivelmente vazias):
(i) = Psi
j
aQ, = Ps
j
bQ e M contm a quntupla q = s
i
abs
j
N.
(ii) = Ps
i
acQ, = Pbs
j
cQ e M contm a quntupla q = s
i
abs
j
R.
(iii) = Pcs
i
CiQ, = PsjcbQ e M contm a quntupla q = s
i
dbs
j
L.
(iv) = Ps
i
a, = PbsjB e M contm a quntupla q = s
i
abs
j
R.
(v) = s
i
aQ, = s
j
BbQ e M contm a quntupla q = s
i
abs
j
L.
Observe que, em todos os cinco casos, M substitui a por b na fita (onde permitido b = a), e M troca seu
estado de s
i
para s
j
. Alm disso:
(i) Neste caso, M no se move.
(ii) Neste caso, M se move para a direita,
(iii) Neste caso, M se move para a esquerda.
(iv) Neste caso, M se move para a direita; entretanto, como M est lendo a letra da extrema direita,
necessrio acrescentar o smbolo de branco, B, direita.
(v) Neste caso, M se move para a esquerda; entretanto, como M est lendo a letra da extrema
esquerda, necessrio acrescentar o smbolo de branco, B, esquerda.

Definio 1.8: uma configurao a chamada de terminal se no existe configurao tal que .

Em particular, qualquer configurao a em algum dos trs estados de parada deve ser terminal, j que
nenhuma quntupla comea com s
H
, s
Y
ou s
N
.

Computao com uma Mquina de Turing

A descrio anterior de uma mquina de Turing M esttica. Discutiremos agora sua dinmica.

Definio 1.9: uma computao com uma mquina de Turing M uma seqncia de configuraes
0
,

1
,..,
m
tal que
i 1
+
i
para i= 1,..., m e
im
uma configurao terminal.
Em outras palavras, uma computao uma seqncia.

0

1

2
.....
M

que no pode ser estendida, uma vez que a
m
um estado terminal. Usaremos a nomenclatura term(a) para
denotar a configurao final de uma configurao iniciando com a. Logo, (
0
) = a
m
na computao acima.

Mquinas deTuring com Entrada

Usaremos a definio a seguir.

Definio 1.10: uma entrada para uma mquina de Turing M uma expresso de fita W. A configurao
inicial para uma entrada W a (W) onde a(W) = s
0
W.
Observe que a configurao inicial a(W) da entrada W obtida pela colocao do estado inicial na frente da
expresso de fita W. Em outras palavras, a mquina de Turing M comea com seu estado inicial s
0
lendo a
primeira letra de W.

Definio 1.11: sejam M uma mquina de Turing e W uma entrada. Dizemos que M pra em W se existe
uma computao comeando com a configurao inicial a(W).
Isto , dada uma entrada W, podemos formar a configurao inicial (W) = s
0
W e aplicar M para obter a
seqncia.
(W)
1

2
....
Duas coisas podem ocorrer:
(1) M pra em W. Isto , a seqncia finda em alguma configurao terminal
r
.
(2) M no pra em W. Isto , a seqncia no termina nunca.

Gramticas e Mquinas deTuring

Mquinas de Turing podem ser usadas para reconhecer linguagens. Especificamente, suponha que M
uma mquina de Turing com conjunto fita A. Seja L o conjunto de palavras W em A tal que M pra no estado
de aceite S
Y
quando W a entrada. Escreveremos ento L = L(M) e diremos que M reconhece a linguagem
L. Logo, uma entrada W no pertence a L(M) se M no pra em W ou, se M pra em W, mas no no estado
de aceite S
Y
.
O teorema a seguir o principal resultado desta subseo; sua prova est alm do escopo deste texto.

Teorema 7: uma linguagem L reconhecvel por uma mquina de Turing M se e somente se L uma
linguagem do Tipo 0.

Observao: A razo para a existncia de trs estados de parada que S
Y
e s
v
so usados para
reconhecimento de linguagens enquanto S
H
usado para as computaes discutidas na
prxima seo.

Exemplo 14: Suponha que uma mquina de Turing M com conjunto fita A = [a, b, c] contenha as quatro
quntuplas seguintes:
q
1
= s
0
aas
o
R, q
2
= s
0
bbs
0
R, q
3
= s
0
BBs
N
R, q
4
= s
0
ccs
Y
N.
(a) Suponha que W = W(a, b,c) uma entrada que no contm c.
Pelas quntuplas q
1
e q
2
M fica no estado s
0
e se move para a direita at encontrar um smbolo
branco B. Depois M muda seu estado para o estado de no aceite e pra.
(b) Suponha que W = W(a, b, c) seja uma entrada com pelo menos um smbolo c.
Pela quntupla q
4
quando M encontra o primeiro c em W, muda seu estado para o estado de
aceite e pra.
Portanto, M reconhece a linguagem L de todas as palavras W em a, b, c com pelo menos
uma letra c. Isto , L = L(M).

10 FUNES COMPUTVEIS

Funes computveis so definidas no conjunto dos inteiros no negativos. Alguns textos usam N para
denotar este conjunto. Ns usamos N para denotar o conjunto dos inteiros positivos e, assim, usaremos a
notao.
N
0
= {0, 1, 2, 3,...}

Em toda esta seo, os termos "nmero", "inteiro" e "inteiro no negativo" sero usados como sinnimos.
A seo anterior descreve a maneira pela qual uma mquina de Turing manipula e reconhece dados
compostos por caracteres. Aqui mostramos como M manipula dados de caracteres numricos.
Primeiramente, entretanto, precisamos ser capazes de representar nossos nmeros usando nosso conjunto
fita A. Vamos escrever 1 para o smbolo de fita a
1
e 1
n
para 111...1, onde 1 aparece n vezes.

Definio 2.1: cada nmero n ser representado pela expresso de fita (n) onde (n) = 1
n+1
.
Portanto,
(4) = 11111 = 1
5
, (0) = 1, (2) = 111 =1
3

Definio 2.2: seja E uma expresso. Ento, [E] denota o nmero de vezes que 1 ocorre na
expresso. Logo,
[11Bs
2
a
3
111Ba
4
] = 5, [a
4
s
2
Ba
2
] = 0 e [n]=n+1.

Definio 2.3: uma expresso f: N
0
N
0
computvel se existe uma mquina de Turing M tal que, para
todo inteiro n, M pra. em n e
f(n) = [term((n))]
Neste caso, diremos que M computa f.
Isto , dados: uma funo f e um inteiro n, informamos como entrada ne usamos M. Se M sempre pra
em n e se o nmero de 1s na configurao final for igual a.f(n), ento f uma funo computvel, e M
computao.

Exemplo 15: A funo f(n) = n + 3 computvel. A entrada W = 1
n+1
. Logo, precisamos apenas
adicionar dois 1 entrada. Descrevemos a seguir uma mquina de Turing M que computa f.
M = {q
1
,q
2
,q
3
} = {s
0
11s
0
L, s
0
B1s
t
L, s
1
B1s
H
N}
Observe que:
(1) q
1
move a mquina M para a esquerda.
(2) q
2
escreve1 no quadrado branco B e move M para a esquerda.
(3) q
3
escreve 1 no quadrado branco B e pra M.
Conseqentemente, para qualquer inteiro positivo n,
s
0
1
n+1
s
0
B1
n+1
s
1
B1
n+2
s
H
1
n+3

Logo, M computa f(n) = n + 3. claro que, para todo inteiro positivo k, a funo f[n) = n + k computvel.

Teorema 8: suponha que f: N
0
N
0
e g: N
0
N
0
so computveis. A funo composta h = g
o
f
computvel.

Indicamos aqui a prova do teorema. Suponha que M
f
e M
g
so as mquinas de Turing que computam f e g,
respectivamente. Dada uma entrada n, aplicamos M
f
a n para obter ao final uma expresso E com
[E]=f(n). Ento escrevemos que E = s
0
1
fn
Depois acrescentamos 1 a E para obter E = s
0
11
fn
e aplicamos
M
s
a E'. Isso produzir E onde E = g (f ( n) ) = (g
o
f)(n), como desejado.

Funes de Vrias Variveis

Esta subseo define uma funo computvel f(n
1
,n
2
,...,n
k
) de k variveis. Primeiramente precisamos
representar a lista m = ( n
1
,n
2
,...,n
k
) no nosso alfabeto A.

Definio 2.4: cada lista m = m = ( n
1
,n
2
,...,n
k
) de k inteiros representada pela expresso de fita (m) onde
m = n
1
Bn
2
B. . . Bn
k

Logo, (2, 0, 4) = 111B1B11111 = 1
3
B1
1
B1
5
.

Definio 2.5: uma funo f(n
1
,n
2
,...,n
k
) de k variveis computvel se existe uma mquina de Turing M
tal que, para toda lista m = ( n
1
,n
2
,...,n
k
), M pra em m e
f(m) = [term((m))]
Neste caso, dizemos que M computa f.
A definio anloga Definio 2.3 para uma varivel.

Exemplo 16: A funo de adio f(m, n) = m + n computvel. A entrada W = 1
m+1
B1
n+1
. Portanto,
precisamos apenas apagar dois dos 1. Uma mquina de Turing M que computa f est descrita a seguir.
M = {q
1
,q
2
,q
3
,q
4
} = {s
0
1Bs
1
R, s
1
1Bs
H
N, s
1
BBs
2
, s
2
1Bs
H
N}
Observe que:
(1) q
1
apaga o primeiro 1 e move M para a direita.
(2) Se m 0, q
2
apaga o segundo 1 e pra M.
(3) Se m = 0, q
3
move M para a direita depois do espao branco B.
(4) q
4
apaga o 1 e pra M.
Conseqentemente, se m 0, temos
s
0
1
m+1
B1
n+1


s
1
1
m
B1
n+1
s
H
1
m-1
1
n+1

mas se m = 0em + n = n, temos
s
0
1B1
n+1


s
1
B1
n+1
s
2
B1
n+1
s
H
1
n

Portanto, M computa f(m, n) = m + n.

11 EXERCCIOS

Palavras

1. Considere as palavras u = a
2
ba
3
b
2
e v = bab
2
. Ache: (a) uv; (b) vu; (c) v
2
.
2. Ache u, v, uv, vu, v
2
para as palavras u e f do Problema 1.
3. Suponha w = a
2
b e v = b
3
ab. Ache: (a) uvu; (b) u, u, uV.
4. Seja w = abcd. (a) Ache todas as subpalavras de w. (b) Quais delas so segmentos iniciais?
5. Para quaisquer palavras u e, v, mostre que: (a) uv = u+ v; (b) uv =vu
6 Suponha que u = n. Ache o nmero de segmentos iniciais de u.
7 Qual a diferena, se existir, entre o semigrupo livre em um alfabeto A e o monide livre em A?

Linguagens

8 Seja A = {a, b}. Descreva verbalmente as seguintes linguagens sobre A (que so subconjuntos
de A*):
(a) L
l
= {(ab}
m
:m>0}.
(b) L
2
= {a
r
ba
s
ba
t
:r,s,t > 0}.
(c) L
3
= {a
2
b
m
a
3
:m>0}.
9 Sejam K = {a, ab, a
2
} e L = {b
2
, aba} linguagens sobre A = {a, b}. Ache: (a) KL; (b) LL.
10 Considere a linguagem L = {ab, c} sobre A = {a, b, c} . Ache: (a) L
0
; (b) L
3
; ( c) L
- 2
.
11 Seja A = [a, b, c}. Ache L* onde: (a) L = {b
2
}; ( b) L={ a, b} ; (c) L = {a,b,c
3
}.
12 Considere um alfabeto enumervel A = { a
1
, a
2
, . . . . .}. Seja L
k
a linguagem sobre A consistindo nas
palavras w tais que a soma dos ndices das letras em w igual a k. Por exemplo, w = a
2
a
3
a
3
a
6
a
4

pertence a L
18
. (a) Ache L
4
. (b) Mostre que L
k
finita, (c) Mostre que A* enumervel. (d) Mostre
que toda linguagem em A enumervel.

Expresses Regulares, Linguagens Regulares

13 Seja A = [a, b, c}. Descreva a linguagem L(r) para cada expresso regular.
(a)r = ab*c*; (b) r = a" b* c*.
14 Seja A = {a, b}. Descreva a linguagem L(r) onde:
(a)r = abb*a; (b) r = b*ab*ab*; (c) r = ab* a*.
15 Seja A = {a, b, c] e w = ac. Verifique se w pertence ou no a L(r) onde:
(a) r = ab*c*; (b) r =( a* bc) * .
16 Seja A = {a, b, c] e seja w = abc. Verifique se w pertence ou no a L(r) onde:
(a) r = a*(bc)*; (b) r = a*(bc)*.
17 Seja A = [ a, b). Ache uma expresso regular r tal que L(r) consista em todas as palavras w onde:
(a) w comea com a
2
e termina com b
2
,
(b) w contm um nmero par de letras as.

Autmatos Finitos, Mquinas de Estado Finito

18 Seja M um autmato com conjunto de entrada A, conjunto de estados S e conjunto de estados de
aceite ("sim") Y descritos a seguir:
A = {a,b}, S = {s
0
,s
1
,s
2
}, Y= { s
1
}
Suponha que s
0
o estado inicial de M, e que a funo de prximo estado, F, de M dada pela
tabela da Figura 10.
(a) Desenhe o diagrama de estados D = D(M) de M.
(b) Descreva a linguagem L = L(M) aceita por M.

Fig. 10
19 Seja A = {a, b}. Construa um autmato M que aceitar precisamente as palavras de A que tm um
nmero par de as. Por exemplo, aababbab, aa, bbb, ababaa sero aceitas por M, mas ababa, aaa,
bbabb sero rejeitadas.
20 Seja A = {a, b} . Construa um autmato M que aceitar as palavras de A que comecem com a
seguido de um ou mais bs.
21 Descreva as palavras w na linguagem L aceitas pelo autmato M da Figura 13.
22 Descreva as palavras w na linguagem L aceitas pelo autmato M da Figura 14.

23 Suponha que L uma linguagem sobre A que aceita pelo autmato M = { A, S, Y, s
0
, F). Ache um
autmato N que aceita L
c
, isto , as palavras de A que no pertencem a L.
24 Sejam M = (A, S, Y, S
0
, F} e M' = A, S, Y, S
0
, F) autmatos sobre o mesmo alfabeto A que
aceitam as linguagens L(M) e L(M), respectivamente. Construa um autmato N sobre A que aceita
precisamente L(M)L(M').
25 Repita o Problema 24 fazendo, agora, N aceitar as palavras de L(M)L(M

).
26 Seja M a mquina de estado finito cuja tabela de estados aparece na Figura 15.
(a) Ache o conjunto de entrada A, o conjunto de estados S, o conjunto de sada Z e o estado
inicial.
(b) Desenhe o diagrama de estados D = D(M) de M.
(c) Suponha que w = aababaabbab uma palavra de entrada (strng). Ache a palavra de sada
correspondente v.

Fig. 15
Gramticas

27 Defina: (a) gramtica livre de contexto; (b) gramtica regular.
28 Ache a linguagem L(G) gerada pela gramtica G com variveis S, A, B, terminais a, b e produes:
S aB, B b, B bA, A aB.
29 Seja L o conjunto de todas as palavras em a e b com um nmero par de as. Ache as produes da
gramtica G que ir gerar L.
30 Determine o tipo de gramtica G que consiste nas produes:
(a) SaA, A aAB, B b, A a.
(b) S aAB, AB bB, B b, A aB.
(c) S aAB, AB a, A b, B AB.
(d) S aB, B bA, B b, B a, A aB, A a.
31 Seja L a linguagem em A que consiste em todas as palavras w com exatamente um b, isto ,
L = {b, a
r
b, ba
s
, a
r
ba
s
: r > 0, j > 0}.
(a) Ache uma expresso regular r tal que L = L(r).
(b) Ache uma gramtica regular G que gera a linguagem L.
32 Seja L a linguagem em A = {a, b, c} que consiste em todas as palavras da forma w = a
r
b
s
c
t
onde
r, s, t > 0, isto as seguidos por bs seguidos por cs.
(a) Ache uma expresso regular r tal que L = L(r).
(b) Ache uma gramtica regular G que gera a linguagem L.
33 Considere a gramtica regular G com as produes.
S aA, AaB, BbB, B a
(a) Ache a rvore de derivao da palavra w = aaba.
(b) Descreva todas as palavras w na linguagem L gerada por G.
34 A Figura 17 a rvore de derivao de uma palavra w em uma linguagem L de uma gramtica livre de
contexto G. (a) Ache w. (b) Quais terminais, variveis e produes devem estar em G?

35 Existe uma rvore de derivao para qualquer palavra w derivada do smbolo de start S em uma
gramtica G?
36 Reescreva cada gramtica G do Problema 30 na forma de Backus-Naur.

Mquinas de Turing

37 Seja M uma mquina de Turing. Determine a configurao a correspondente a cada situao.
(a) M est no estado s
3
e lendo a terceira letra da expresso de fita w = aabca.
(b) M est no estado s
2
e lendo a ltima letra da expresso de fita w = abca.
(c) A entrada a expresso de fita w = 1
4
B1
2
.
38 Suponha que a = aas
2
ba uma configurao. Ache tal que se a mquina de Turing M tem
a quntupla q onde:
(a) q = s
2
bas
1
L (b) q = s
2
bbs
3
R; (c) q = s
2
bas
2
N; (d) q = s
3
abs
1
L.
39 Seja A = [ a, b] e seja L = {a
r
b
s
: r>0, s >0} , isto , L consiste em todas as palavras W comeando
com uma ou mais letras as e seguidas por um ou mais bs. Ache uma mquina de Turing M que
reconhece L.
40 Ache uma mquina de Turing M que reconhece a linguagem L = a*b* = { a
n
b
n
: n 0}.

Funes Computveis

41 Ache(m)se:(i) m = 5;(ii) m = (4, 0, 3);(iii) m = (3,-2,5).
42 Ache [E] para as expresses:
(a) E = a11s
2
Bb111.
(b) E = aas
3
bb.
(c) E = (m) onde m =( 4, 1,2).
(d) E = (m) onde m = ( n
1
, n
2
, ... , n
r
) .
43 Seja/a funo/(n) = n - 1 se n > 0 e f(0)= 0. Mostre que f computvel.
44 Seja f(x,y) = y. Mostre que f computvel.

Você também pode gostar