Sei sulla pagina 1di 384

Linguagens Formais e Autmatos

Marcus Vincius Midena Ramos


Curso de Engenharia de Computao
Universidade Federal do Vale do So Francisco
22 de abril de 2008
Sumrio
1 Elementos de Matemtica Discreta 5
1.1 Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Relaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.5 rvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.6 Teoremas e Demonstraes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.7 Conjuntos Enumerveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2 Conceitos Bsicos de Linguagens 31
2.1 Smbolos e Cadeias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2 Linguagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3 Gramticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.4 Linguagens, Gramticas e Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.5 Reconhecedores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.6 Hierarquia de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3 Linguagens Regulares 67
3.1 Gramticas Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.2 Conjuntos e Expresses Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.3 Autmatos Finitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.4 Equivalncia entre Gramticas Regulares e Conjuntos Regulares . . . . . . . . . 118
3.5 Equivalncia entre Gramticas Regulares e Autmatos Finitos . . . . . . . . . . . 129
3.6 Minimizao de Autmatos Finitos . . . . . . . . . . . . . . . . . . . . . . . . . . 140
3.7 Transdutores Finitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
3.8 Linguagens que no so Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . 157
3.9 Propriedades de Fechamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
3.10 Questes Decidveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
4 Linguagens Livres de Contexto 181
4.1 Gramticas Livres de Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
4.2 BNF Estendida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
4.3 rvores de Derivao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
4.4 Ambigidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
4.5 Simplicao de Gramticas Livres de Contexto . . . . . . . . . . . . . . . . . . . 200
4.6 Formas Normais para Gramticas Livres de Contexto . . . . . . . . . . . . . . . 211
4.7 Autmatos de Pilha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
4.8 Equivalncia entre Gramticas Livres de Contexto e Autmatos de Pilha . . . . . 233
4.9 Relao entre Linguagens Livres de Contexto e Linguagens Regulares . . . . . . 245
4.10 Linguagens que no so Livres de Contexto . . . . . . . . . . . . . . . . . . . . . 246
4 Linguagens Formais - Teoria, Modelagem e Implementao
4.11 Linguagens Livres de Contexto Determinsticas . . . . . . . . . . . . . . . . . . . 253
4.12 Linguagens Livres de Contexto No-Ambguas . . . . . . . . . . . . . . . . . . . 259
4.13 Propriedades de Fechamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
4.14 Questes Decidveis e No-Decidveis . . . . . . . . . . . . . . . . . . . . . . . . . 268
5 Linguagens Sensveis ao Contexto 273
5.1 Gramticas Sensveis ao Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
5.2 Gramticas com Derivaes Controladas . . . . . . . . . . . . . . . . . . . . . . . 279
5.3 Formas Normais para Gramticas Sensveis ao Contexto . . . . . . . . . . . . . . 285
5.4 Mquinas de Turing com Fita Limitada . . . . . . . . . . . . . . . . . . . . . . . 290
5.5 Equivalncia entre Gramticas Sensveis ao Contexto e Mquinas de Turing com
Fita Limitada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
5.6 Relao entre Linguagens Sensveis ao Contexto e Linguagens Livres de Contexto 310
5.7 Linguagens que no so Sensveis ao Contexto . . . . . . . . . . . . . . . . . . . . 311
5.8 Propriedades de Fechamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
5.9 Questes Decidveis e No-Decidveis . . . . . . . . . . . . . . . . . . . . . . . . . 318
6 Linguagens Recursivas 321
6.1 Mquinas de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
6.2 Critrios de Aceitao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
6.3 Extenses Mais Comuns das Mquinas de Turing . . . . . . . . . . . . . . . . . . 328
6.4 Relao entre Linguagens Recursivas e Linguagens Sensveis ao Contexto . . . . 331
6.5 Linguagens que no so Recursivas . . . . . . . . . . . . . . . . . . . . . . . . . . 332
6.6 Propriedades de Fechamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
6.7 Questes Decidveis e No-Decidveis . . . . . . . . . . . . . . . . . . . . . . . . . 342
7 Linguagens Recursivamente Enumerveis 343
7.1 Decidibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
7.2 Mquinas de Turing como Enumeradoras de Linguagens . . . . . . . . . . . . . . 345
7.3 Gramticas Irrestritas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
7.4 Forma Normal para Gramticas Irrestritas . . . . . . . . . . . . . . . . . . . . . . 351
7.5 Equivalncia entre Gramticas Irrestritas e Linguagens Recursivamente Enume-
rveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
7.6 Relao entre Linguagens Recursivamente Enumerveis e Linguagens Recursivas 363
7.7 Linguagens que no so Recursivamente Enumerveis . . . . . . . . . . . . . . . 366
7.8 Propriedades de Fechamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
7.9 Questes Decidveis e No-Decidveis . . . . . . . . . . . . . . . . . . . . . . . . . 373
8 Concluses 375
8.1 Uma Hierarquia de Classes de Linguagens . . . . . . . . . . . . . . . . . . . . . . 375
8.2 Decidibilidade e Complexidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Referncias Bibliogrcas 381
1 Elementos de Matemtica Discreta
As linguagens formais (ou linguagens estruturadas em frases) podem ser vistas como
conjuntos. Conseqentemente, muito da teoria e dos principais resultados da rea de
linguagens formais est baseado na ainda mais fundamental teoria dos conjuntos da
matemtica discreta.
A teoria dos conjuntos relativamente extensa, e dela sero apresentados neste
captulo apenas os tpicos, conceitos e denies que se mostram mais importantes para
a fundamentao e o estudo dos captulos seguintes.
1.1 Conjuntos
Um conjunto uma coleo de smbolos, tambm denominados tomos ou elementos,
em que no so consideradas ocorrncias mltiplas dos mesmos nem h relao de ordem
entre eles.
Exemplo 1.1 A incluso do smbolo no conjunto {, , , } resulta no prprio conjunto
{, , , }, pois o mesmo j faz parte do conjunto e, portanto, no deve ser considerado no-
vamente. Por outro lado, o conjunto {, , , } igual ao conjunto {, , , }, uma vez que
no existe relao de ordem entre os elementos que os compem. 2
Um smbolo corresponde a uma representao grca nica e indivisvel. Se for-
mado por caracteres, um smbolo pode ser composto por um nmero arbitrrio deles.
Exemplo 1.2 So exemplos de smbolos: a, abc, , 1 etc. 2
Alguns conjuntos podem ser especicados atravs da simples enumerao de todos
os seus elementos, denotados entre chaves e separados por vrgulas.
Exemplo 1.3 O conjunto formado pelos elementos 0, 1, 2, 3 representado por {0, 1, 2, 3}. O
conjunto {a, b, c, d, e, f } formado pelas seis primeiras letras do alfabeto romano. O conjunto
{01, 231, 33, 21323} contm os elementos 01, 231, 33 e 21323. 2
Conjuntos podem ser referenciados atravs de nomes, arbitrariamente escolhidos.
Exemplo 1.4 X = {0, 1, 2, 3}, Y = {a, b, c, d, e, f }. Assim, os nomes X e Y passam a denotar os
conjuntos correspondentes. 2
O nmero de elementos contido em um conjunto A denotado por |A|.
Exemplo 1.5 No exemplo 1.4, |X| = 4, |Y| = 6. 2
Os smbolos e servem para denotar se um determinado elemento pertence ou
no pertence a um conjunto, respectivamente.
Exemplo 1.6 No exemplo 1.4, 0 X, 5 X, 2 Y, b X, c Y, h Y. 2
Conjuntos podem conter um nmero nito ou innito de elementos. No primeiro
caso, o conjunto pode ser denotado enumerando-se (relacionando-se explicitamente) todos
os elementos que o compem, como foi feito para os conjuntos X e Y do exemplo 1.4,
que so conjuntos nitos.
6 Linguagens Formais - Teoria, Modelagem e Implementao
Conjuntos innitos podem ser denotados atravs da especicao (formal ou
informal) de regras ou propriedades que devem ser satisfeitas por todos os seus elementos,
possibilitando assim a sua identicao precisa e completa a partir de uma especicao
nita.
Exemplo 1.7 P = {x | x um nmero primo}, Q = {y | n inteiro tal que y = n
2
}. O primeiro
exemplo deve ser lido da seguinte forma: P o conjunto formado pelos elementos x, tal que x
um nmero primo. Em outras palavras, P o conjunto, innito, formado por todos os nmeros
primos: {1, 2, 3, 5, 7, 11, 13, 17...}. O conjunto Q, tambm innito, formado por todos os nmeros
que correspondem ao quadrado de algum nmero inteiro: {0, 1, 4, 9, 16...}. 2
Quando um conjunto especicado a partir de regras, o smbolo | deve ser lido
como tal que, e serve para introduzir as condies que devem ser satisfeitas pelos mem-
bros do conjunto, que assim tornam-se conhecidos.
O conjunto que no contm nenhum elemento recebe o nome de conjunto vazio.
Por denio, || = 0. O conjunto vazio denotado por ou ainda pelo smbolo { }.
Assim, { } = .
Dois conjuntos so ditos idnticos, ou simplesmente iguais, se eles contm exa-
tamente os mesmos elementos. A igualdade de dois conjuntos denotada atravs do
smbolo =.
Exemplo 1.8 Considere Z = {a, b} e W = {b, a}. Ento, Z = W. 2
Um conjunto A dito contido em um conjunto B, condio esta denotada atravs
do smbolo , se todo elemento de A for tambm elemento de B. Neste caso diz-se,
equivalentemente, que A um subconjunto de B ou, ainda, que B contm A. Os
conjuntos e A so, por denio, subconjuntos de qualquer conjunto A.
Exemplo 1.9 Para os conjuntos A = {b, c, d}, B = {a, b, c, d, e} e C = {e, a, d, b, c} tem-se que
A B e B C. Portanto, pode-se dizer que A est contido em B e em C, que A subconjunto
de B e de C, que C contm A e B e, ainda, que B e C so subconjuntos um do outro ou que esto
contidos um no outro. B e C, por outro lado, no esto contidos em A. 2
Dois conjuntos M e N so iguais se e somente se M N e N M, e tal igualdade
denotada por M = N. A desigualdade de dois conjuntos expressa atravs do smbolo
=, ocorrendo portanto quando no mximo apenas uma das duas condies M N e
N M for verdadeira.
Exemplo 1.10 No exemplo 1.9, A B, porm A = B. Como B C e C B, ento B = C. 2
Se M N e M = N, diz-se que M um subconjunto prprio de N. O smbolo
denota essa condio: M N. O conjunto subconjunto prprio de qualquer
conjunto, exceto do prprio conjunto .
Exemplo 1.11 No exemplo 1.9, A subconjunto prprio de B, porm B no subconjunto prprio
de C. Logo, A B. 2
Algumas operaes importantes sobre conjuntos so apresentadas a seguir.
Conjunto potncia (powerset): Denotado por 2
A
, onde A um conjunto. Essa
operao utilizada para designar o conjunto formado por todos os possveis subconjuntos
de A:
2
A
= {B | B A}
Para conjuntos A nitos, |2
A
| = 2
|A|
.
Exemplo 1.12 Para A = {0, 1, 2}, temos 2
A
= {, {0}, {1}, {2}, {0, 1}, {0, 2}, {1, 2}, {0, 1, 2}}.
Alm disso, |A| = 3 e |2
A
| = 2
3
= 8. 2
1 Elementos de Matemtica Discreta 7
Unio: A unio de dois conjuntos A e B corresponde ao conjunto formado por
todos os elementos contidos em cada um dos dois conjuntos A e B. Elementos repetidos
em ambos os conjuntos so considerados uma nica vez no conjunto unio:
A B = {x | x A ou x B}
Trata-se de uma operao associativa, ou seja, uma operao para a qual vale a
propriedade:
(A B) C = A (B C)
A generalizao da operao de unio denotada da seguinte forma:
n
_
i=0
A
i
= A
0
A
1
A
2
... A
n
Exemplo 1.13 {a, b, c} {c, d} = {a, b, c, d}. {a, b, c, d} = {a, b, c, d}. 2
Interseco: Dene-se a interseco de dois conjuntos A e B como sendo a coleo
de todos os elementos comuns aos dois conjuntos:
A B = {x | x A e x B}
Tambm em decorrncia da associatividade desta operao, a sua generalizao
denotada de forma similar ao caso da unio:
n

i=0
A
i
= A
0
A
1
A
2
... A
n
Exemplo 1.14 {a, b, c} {c, d} = {c}. {a, b} {c, d} = . {a, b, c, d} = . 2
Dois conjuntos A e B so ditos disjuntos se A B = .
Exemplo 1.15 Os conjuntos {a, b, c} e {c, d} no so disjuntos, pois {a, b, c}{c, d} = {c} = { }.
Os conjuntos {a, b} e {c, d} so disjuntos, pois {a, b} {c, d} = . 2
Diferena: Dene-se a diferena entre dois conjuntos A e B (nesta ordem) como
sendo o conjunto formado por todos os elementos de A no-pertencentes ao conjunto B.
Denota-se este conjunto como:
AB = {x | x A e x B}
Exemplo 1.16 {a, b, c} {c, d} = {a, b}. {a, b} {a, b, c} = . {a, b, c} {d, e} = {a, b, c}.
{c, d} {a, b, c} = {d}. {a, b, c} {a, b} = {c}. {d, e} {a, b, c} = {d, e}. 2
Complementao: Dene-se a complementao de um conjunto A em relao
ao conjunto B, A B, como sendo o conjunto de todos os elementos de B que no
pertencem a A. Denota-se este conjunto como:
A
B
= B A
Muitas vezes esta operao denida para um conjunto A em relao a um outro
conjunto B subentendido e, neste caso, escreve-se simplesmente:
A = B A
Diz-se, neste caso, que o conjunto subentendido o conjunto universo da operao.
O resultado da operao conhecido simplesmente como complemento de A.
8 Linguagens Formais - Teoria, Modelagem e Implementao
Exemplo 1.17 Sejam A = {a, b, c}, B = {a, b, c, d} e C = {d, c, a, b}. Ento, AB = {d} e
BC = . Sendo D = {a, b, c, d, e} o conjunto universo, A = {d, e}, B = C = {e} e D = . 2
Produto cartesiano: O produto cartesiano de dois conjuntos o conjunto formado
por todos os pares ordenados (a, b), em que a um elemento de A, e b um elemento de
B:
AB = {(a, b) | a A e b B}
Um par ordenado uma representao de dois elementos separados por vrgula
e delimitados por parnteses, como em (a, b). Tal representao implica uma relao de
ordem em que o elemento a anterior ao elemento b. Conseqentemente, se a = b, ento
(a, b) = (b, a).
Se A e B so conjuntos nitos, ento |AB| = |A | | B|.
A generalizao desta operao denotada:
A
1
A
2
... A
n
= {(a
1
, a
2
, ..., a
n
) | a
i
A
i
para 1 i n}
Exemplo 1.18 Sejam A = {a, b, c} e B = {0, 1}. Ento AB =
{(a, 0), (a, 1), (b, 0), (b, 1), (c, 0), (c, 1)}
e
|AB| = |A| | B| = 3 2 = 6
2
Partio: Dene-se partio de um conjunto A como sendo qualquer coleo for-
mada por n subconjuntos no-vazios de A, n 1, tal que:
A =
n
_
i=0
A
i
e
n
_
i=0
_
_
n,j =i
_
j =0
A
i
A
j
_
_
=
Exemplo 1.19 Seja A = {a, b, c, d}. Ento, {{a, b}, {c, d}} uma partio de A. Da mesma
forma, o conjunto {{a}, {b}, {c}, {d}}, bem como {{a, b, c, d}}, entre vrios outros. 2
A seguir sero apresentados trs importantes resultados acerca de conjuntos, os dois
primeiros conhecidos como Leis de De Morgan, os quais sero teis na demonstrao
de outros teoremas mais adiante no texto.
Teorema 1.1 (Leis de De Morgan) Sejam A e B dois conjuntos quaisquer. Ento
A B = A B e A B = A B.
Justicativa Estas propriedades podem ser inferidas, respectivamente, pela inspeo
dos diagramas das Figuras 1.1 e 1.2.
Na Figura 1.1, da esquerda para a direita, as reas hachuradas dos diagramas re-
presentam, respectivamente, A, B, A B e A B.
1 Elementos de Matemtica Discreta 9
Figura 1.1: Demonstrao da Lei de De Morgan para interseco
de conjuntos
Na Figura 1.2, da esquerda para a direita, as reas hachuradas dos diagramas re-
presentam, respectivamente, A, B, A B e A B.
Figura 1.2: Demonstrao da Lei de De Morgan para unio de
conjuntos

Teorema 1.2 (Igualdade de conjuntos) Sejam A e B dois conjuntos quaisquer. En-


to A = B (A B) (A B) = .
Justicativa
() Se A = B, ento (A B) (A B) = (A A) (A A) = = .
() Se (AB) (AB) = , ento as duas seguintes condies devem ser simultanea-
mente satisfeitas:
1. (A B) = ;
2. (A B) = .
Considere-se A C e B C, de forma que A = A
C
e B = B
C
. Ento, existem
apenas trs possibilidades para representar a relao entre A e B:
i A = B e A B = . Logo, A B = ;
ii A = B e A B = . Logo, A B = ;
iii A = B. Logo, A B = .
Portanto, a nica relao possvel entre A e B que satisfaz condio (1) a relao
(iii). Da mesma forma, pode-se facilmente mostrar que (iii) tambm a nica relao
que satisfaz condio (2), e isso completa a demonstrao do teorema.
10 Linguagens Formais - Teoria, Modelagem e Implementao
A menos de ressalva em contrrio, ao longo deste texto os nomes de conjuntos sero
representados por intermdio das letras maisculas do alfabeto romano (A, B, X, Y etc.).
Elementos de um conjunto so usualmente denotados atravs das letras minsculas do
mesmo alfabeto (a, b, c etc.).
Os seguintes conjuntos sero utilizados no restante deste livro:
N, representando os nmeros naturais {0, 1, 2, 3, ...};
Z, representando os nmeros inteiros {..., 3, 2, 1, 0, 1, 2, 3, ...};
Z
+
, representando os nmeros inteiros positivos {1, 2, 3, ...};
Z

, representando os nmeros inteiros negativos {..., 3, 2, 1};


R, representando os nmeros reais.
1.2 Relaes
Uma relao R sobre dois conjuntos A e B denida como um subconjunto de AB.
Relaes representam abstraes de conceitos matemticos fundamentais, como,
por exemplo, as operaes aritmticas, lgicas e relacionais, alm de constiturem a base
terica para o estudo sistemtico das funes. O conjunto de todas as relaes denveis
sobre AB dado por 2
AB
.
Exemplo 1.20 A relao R1 = {(a, b) | a, b N e a > b}, sobre N N, contm, entre innitos
outros, os elementos (2, 1), (7, 4) e (9, 3). A relao R2 = {(x, y, z) | x, y, z Z e x
2
= y
2
+ z
2
},
sobre Z Z Z, contm os elementos (0, 0, 0), (1, 1, 1), (1, 1, 1), (5, 4, 3), (10, 8, 6) etc. 2
Uma relao R aplicada sobre um elemento a de um conjunto A e outro elemento b
de um conjunto B pode ser denotada, em notao inxa, por aRb. Se (a, b) R, diz-se,
de forma abreviada, que aRb.
Os conjuntos A e B recebem, respectivamente, os nomes domnio e co-domnio
(ou contradomnio) da relao R. Por envolver dois conjuntos, essa relao dita
binria e seus elementos recebem a designao de pares ordenados. Relaes binrias
sobre um mesmo conjunto A representam subconjuntos de AA.
Exemplo 1.21 Considere-se a relao binria = sobre o conjunto dos nmeros inteiros. Essa
relao se dene como o conjunto dos pares ordenados tais que suas duas componentes so diferentes.
Alguns dos elementos do conjunto denido por essa relao so (1, 3), (5, 0), (8, 2) etc. Utilizando
a notao introduzida, os elementos citados, pertencentes a essa relao, so denotados por 1 = 3,
5 = 0 e 8 = 2, coincidindo, portanto, com a representao tradicional da relao.
Notar que (1, 1), (0, 0) e (5, 5) so exemplos de pares ordenados que no satisfazem a essa
relao binria, pois suas duas componentes coincidem. 2
O conceito de relao pode ser generalizado para mais de dois conjuntos, consis-
tindo, sempre, em subconjuntos denidos sobre o produto cartesiano dos conjuntos par-
ticipantes da relao. A relao, nesse caso, dita uma relao n-ria, e corresponde
a um subconjunto do produto cartesiano dos conjuntos envolvidos. Sejam n conjuntos
A
1
, A
2
, ...A
n
. Os elementos pertencentes ao conjunto denido por uma relao n-ria
sobre A
1
, A
2
, ...A
n
so, portanto, elementos de A
1
A
2
... A
n
, e tm a seguinte
forma:
(a
1
, a
2
, a
3
, ..., a
n
)
onde a
1
A
1
, a
2
A
2
, ...a
n
A
n
.
1 Elementos de Matemtica Discreta 11
Tais elementos so denominados nuplas ordenadas. Em casos particulares, como
para n = 2, 3, 4, 5 etc., as nuplas recebem nomes especiais, geralmente os ordinais de n:
pares, triplas, qudruplas, quntuplas etc. Quando n grande, usa-se em geral o nome
n-tupla ordenada. Por exemplo, (a
1
, a
2
, ...a
10
) considerada uma dcupla (ou uma
10-tupla) ordenada.
Uma relao binria R sobre um conjunto A dita:
Reexiva: se aRa, a A;
Simtrica: se aRb implica bRa, a, b A;
Transitiva: se aRb e bRc implicam aRc, a, b, c A;
sendo que a, b, c no precisam ser necessariamente distintos.
Exemplo 1.22 A relao binria identidade (=) denida sobre o conjunto dos nmeros inteiros Z
como o conjunto de todos os pares ordenados para os quais as duas componentes so idnticas. Ela
reexiva, pois a = a, a Z; simtrica, pois a = b implica b = a, a, b Z; e transitiva, uma
vez que a = b e b = c implica a = c, a, b, c Z. Alguns elementos do conjunto denido por essa
relao so (4, 4), (0, 0), (7, 7) etc. Notar que pares ordenados, tais como (1, 3), (0, 5) e (7, 9),
no pertencem a essa relao. 2
Por outro lado, a relao binria maior (>), denida como o conjunto dos pares
ordenados cujas primeiras componentes tenham valor maior que as segundas componen-
tes, aplicada sobre o mesmo conjunto Z, revela-se no-reexiva, pois no verdade que
a > a, a Z; no-simtrica, j que a > b no implica b > a, a e b Z; porm ela
transitiva, uma vez que a > b e b > c implica a > c, a, b, c Z.
Uma relao que seja simultaneamente reexiva, simtrica e transitiva denominada
relao de equivalncia. Se R uma relao de equivalncia sobre um conjunto A,
ento R estabelece uma partio do conjunto A.
Suponha-se que R seja uma relao binria sobre A, e A
i
, i 0, uma partio de
A induzida por R. Ento, valem as seguintes propriedades:
Se (a, b) R, ento a A
i
, b A
j
e i = j ;
Se (a, b) R, ento a A
i
, b A
j
e i = j .
Exemplo 1.23 Considere-se o conjunto Z dos nmeros inteiros e a relao binria:
Q : {(a, b) Z Z | a
2
= b
2
}
Q = {(0, 0), (1, 1), (1, 1), (1, 1), (1, 1)...(n, n), (n, n), (n, n), (n, n)...}
fcil vericar que Q reexiva, simtrica e transitiva. Logo, uma relao de equivalncia.
Q induz partio {A0, A1, ...} de Z, onde:
A0 = {0, 0}
A1 = {1, 1}
A2 = {2, 2}
...
An = {n, n}
...
Quaisquer que sejam os nmeros a, b Z considerados, se (a, b) Q, ento a e b pertencem
necessariamente ao mesmo conjunto Ai , para algum valor de i 0. Se (a, b) Q, a e b pertencero
sempre a conjuntos distintos desta partio de Z. 2
12 Linguagens Formais - Teoria, Modelagem e Implementao
Diz-se que um conjunto fechado em relao a uma operao se da aplicao
dessa operao a quaisquer membros desse conjunto resultarem sempre elementos que
tambm so membros do mesmo conjunto.
Exemplo 1.24 Considere-se o conjunto X = {x R | x 0} e a operao unria

(raiz quadrada).
Qualquer que seja o elemento x X considerado,

x sempre um elemento de X. Portanto, o
conjunto X fechado em relao operao

.
Por outro lado, no se pode dizer o mesmo do conjunto R, uma vez que a operao raiz
quadrada no denida para nmeros negativos. Logo, o conjunto R no fechado em relao
operao

. 2
Exemplo 1.25 Considerem-se os conjuntos dos nmeros inteiros Z, dos nmeros naturais N e as
operaes binrias de soma e subtrao. Ento, as seguintes armativas so verdadeiras:
O conjunto Z fechado em relao operao de soma. De fato, da soma de quaisquer dois
elementos de Z resulta sempre um elemento que tambm pertence ao conjunto Z;
O conjunto Z fechado em relao operao de subtrao, pois da subtrao de quaisquer
dois elementos de Z resulta sempre um elemento que tambm pertence ao conjunto Z;
O conjunto N no fechado em relao operao de subtrao: nem toda subtrao de
dois elementos arbitrrios de N fornece como resultado um elemento que tambm pertena
ao conjunto N; Assim, por exemplo, se 1 N e 2 N, 2 1 = 1 N, mas 1 2 = 1 N;
O conjunto N fechado em relao operao de soma.
2
1.3 Funes
Uma funo um mapeamento que associa elementos de um conjunto denominado
domnio a elementos de um outro conjunto, chamado co-domnio ou contradomnio.
Essa associao deve ser tal que cada elemento do domnio esteja associado a no mximo
um elemento do conjunto co-domnio.
Formalmente, uma funo entre um conjunto A (domnio) e um conjunto B (co-
domnio) denida como uma relao R entre esses conjuntos, de modo que:
(a, b), (a, c) R, b = c
Portanto, o termo funo refere-se um tipo particular de relao, em que cada
elemento do domnio est associado a, no mximo, um nico elemento do co-domnio.
Em outras palavras, toda funo uma relao, mas nem toda relao uma funo.
Denota-se uma funo f entre dois conjuntos X e Y por:
f : X Y
Exemplo 1.26 Considere-se f1 e f2 denidas abaixo:
f1 = {(1, 5), (2, 3), (4, 5), (8, 1), (7, 3)}
f2 = {(6, 7), (9, 0), (6, 3), (4, 3), (3, 1)}
A relao f1 aderente denio de funo, ao passo que f2 uma relao mas no uma
funo, devido presena simultnea dos pares (6, 7) e (6, 3), que associam o mesmo elemento
6 do domnio a dois elementos distintos do co-domnio (7 e 3). As Figuras 1.3 e 1.4 ilustram,
respectivamente, as relaes f1 e f2.
1 Elementos de Matemtica Discreta 13
Figura 1.3: Relao que tambm funo
Figura 1.4: Relao que no funo
2
A associao estabelecida pela funo f entre um elemento x do conjunto domnio
X com um elemento y do conjunto co-domnio Y denotada por:
f (x) = y
De maneira equivalente, diz-se que (x, y) f .
O conjunto imagem de f , denotado por I
f
, o conjunto formado por todos os
elementos do co-domnio Y que estejam em correspondncia com elementos de X, ou
seja, I
f
Y. Formalmente,
I
f
= {y Y | y = f (x)}
O elemento x denominado argumento da funo f , e y denominado imagem
de x pela aplicao de f . Funes com mltiplos argumentos so denidas como um
mapeamento em que o conjunto domnio corresponde ao produto cartesiano de mltiplos
conjuntos:
f : X
1
X
2
... X
n
Y
Funes com um, dois ou trs argumentos so respectivamente denominadas funes
unrias, binrias ou ternrias, e assim por diante.
Diz-se tambm que uma funo que associa pares ordenados sobre um conjunto
X, ou seja, elementos de X
2
com elementos do prprio conjunto X, uma funo
(operao) binria sobre X.
Exemplo 1.27 Considere f1 : N N, f1 = {y N | y = x
3
, x N}. A funo f1 unria, pois
associa cada elemento de N ao seu cubo. Portanto, f1 : N N. Alguns dos innitos elementos do
conjunto denido por f1 so: (1, 1), (2, 8), (3, 27) etc. Denota-se f1(2) = 8, ou ainda (2, 8) f1. 2
14 Linguagens Formais - Teoria, Modelagem e Implementao
Exemplo 1.28 Seja f2 : Z Z Z, f2 = {z Z | z = x + y; x, y Z}. A funo binria f2
dene a operao (funo) de adio sobre o conjunto dos nmeros inteiros Z, sendo elementos de
f2 : ((1, 2), 3), ((3, 7), 4), ((0, 5), 5) etc. Escreve-se f2(3, 7) = 4, ou ainda ((3, 7), 4) f2. 2
Uma funo se diz uma funo total (denotada pelo smbolo ) quando especi-
ca associaes para todos os elementos do conjunto domnio, sem exceo. Formalmente:
x X, y Y | y = f (x)
Exemplo 1.29 A Figura 1.5 ilustra o conceito de funo total.
Figura 1.5: Funo total
Notar que todos os elementos de X tm correspondncia com algum elemento de Y. 2
Exemplo 1.30 Sejam X = {0, 1, 2} e Y = {a, b, c}, respectivamente, o conjunto domnio e o
conjunto co-domnio da funo f1 = {(0, a), (1, b), (2, a)}. A funo f1 : X Y total, pois todos
os elementos do conjunto domnio esto em correspondncia com algum elemento do conjunto co-
domnio. Neste caso, o conjunto imagem de f1 {a, b}. 2
Quando uma funo no denida para todos os elementos de seu domnio, ela
recebe a denominao de funo parcial (denotada pelo smbolo ). Formalmente:
x X | f (x) no denida
Exemplo 1.31 A Figura 1.6 ilustra o conceito de funo parcial.
Figura 1.6: Funo parcial
Notar a existncia de um elemento de X sem correspondente em Y. 2
1 Elementos de Matemtica Discreta 15
Exemplo 1.32 Seja X = {0, 1, 2}, Y = {a, b, c} e f2 = {(0, b), (2, b)}. A funo f2 : X Y
parcial, pois no h associao do elemento 1 pertencente ao conjunto domnio a qualquer elemento
do conjunto co-domnio. O conjunto imagem para essa funo {b}. 2
Diz-se que uma funo um-para-um, ou simplesmente uma funo injetora,
quando elementos distintos do domnio X estiverem associados a elementos distintos do
co-domnio Y, ou seja, quando no houver quaisquer dois elementos distintos do conjunto
domnio associados ao mesmo elemento do conjunto imagem:
x
1
, x
2
X, x
1
= x
2
f (x
1
) = f (x
2
)
De maneira equivalente, uma funo dita injetora se cada elemento do conjunto
co-domnio estiver associado a, no mximo, um elemento do conjunto domnio.
As Figuras 1.5 e 1.6 representam funes que so, respectivamente, no-injetora e
injetora.
Exemplo 1.33 Seja X = {0, 1, 2}, Y = {a, b, c} e f3 = {(0, c), (1, b)}. A funo f3 : X Y
injetora, pois no existe um mesmo elemento de Y associado a mais de um elemento de X. Por
outro lado, a funo f2, denida no Exemplo 1.32, parcial mas no injetora, pois o elemento b de
seu conjunto imagem est simultaneamente associado aos elementos 0 e 2 do conjunto domnio. 2
Uma funo f dita sobrejetora se todos os elementos do conjunto co-domnio
estiverem associados a elementos do conjunto domnio, ou seja, se I
f
, o conjunto imagem
de f , for igual ao conjunto co-domnio de f :
y Y, x X | y = f (x)
Dito de outra forma, uma funo sobrejetora se todo elemento do conjunto co-
domnio estiver associado a pelo menos um elemento do conjunto domnio.
Exemplo 1.34 As funes das Figuras 1.5 e 1.6 no so sobrejetoras. A Figura 1.7 ilustra uma
funo sobrejetora.
Figura 1.7: Funo sobrejetora
No h elemento de Y que no corresponda a algum elemento de X. 2
Exemplo 1.35 Seja X = {0, 1, 2}, Y = {a, b, c} e f4 = {(0, c), (1, b), (2, a)}. A funo f4 : X Y
sobrejetora, pois Y = I
f
= {a, b, c}. Em adio, pode-se observar que f4 simultaneamente uma
funo total, injetora e sobrejetora, e tambm que as funes f1 (Exemplo 1.30), f2 (Exemplo 1.32)
e f3 (Exemplo 1.33) anteriormente denidas no so sobrejetoras. 2
Uma funo que seja simultaneamente total, injetora e sobrejetora recebe a deno-
minao de funo bijetora.
16 Linguagens Formais - Teoria, Modelagem e Implementao
Exemplo 1.36 As funes das Figuras 1.5, 1.6 e 1.7 no so bijetoras. Em particular, a da Figura
1.5 total, no-injetora e no-sobrejetora; a da Figura 1.6 parcial, injetora e no-sobrejetora; e a
da Figura 1.7 parcial, injetora e sobrejetora. A Figura 1.8 ilustra uma funo bijetora.
Figura 1.8: Funo bijetora
H uma correspondncia biunvoca entre os elementos de X e os de Y. 2
Exemplo 1.37 Seja f5 = {(0, a), (1, b), (2, c)}. A funo f5 : X Y, assim como a funo
f4 denida no Exemplo 1.35, bijetora. As funes f1 (Exemplo 1.30), f2 (Exemplo 1.32) e f3
(Exemplo 1.33) no so bijetoras. 2
Exemplo 1.38 Considerem-se as funes adio, sobre o conjunto dos nmeros naturais, diviso,
sobre o conjunto dos nmeros reais, e raiz quadrada, sobre o conjunto dos nmeros inteiros:
+ : N N N. Ela no injetora, pois a soma de dois nmeros naturais quaisquer
pode corresponder soma de outros nmeros naturais distintos (por exemplo, ((3,4),7) e
((5,2),7)). sobrejetora, pois todo nmero natural pode ser expresso como a soma de dois
outros nmeros naturais. total, pois a cada par de nmeros naturais sempre corresponde
um outro nmero natural.
/ : R R R. No injetora, pois existem vrios casos em que a diviso de dois n-
meros reais corresponde ao mesmo nmero real (por exemplo, os casos ((10.0,2.5),4.0) e
((20.0,5.0),4.0)). sobrejetora, pois todos os nmeros reais podem ser expressos como a
diviso de dois outros nmeros reais (por exemplo, todos os casos ((x,1.0),x)). No total,
pois a diviso no denida quando o denominador zero (por exemplo, ((1,0),?)).


: Z Z. injetora, pois no possvel que dois nmeros inteiros diferentes tenham a
mesma raiz inteira ((4,2), (9,3) e (3,?)). No sobrejetora, pois nem todo nmero inteiro
corresponde raiz quadrada de algum outro nmero inteiro (por exemplo, (?,-3). No total,
pois a operao raiz quadrada no denida para nmeros inteiros negativos (por exemplo,
(-2,?)).
A Tabela 1.1 resume estes resultados:
Injetora? Sobrejetora? Total?
+ : N N N No Sim Sim
/ : R R R No Sim No

: Z Z Sim No No
Tabela 1.1: Propriedades das funes +, / e

2
1 Elementos de Matemtica Discreta 17
1.4 Grafos
Um grafo um par ordenado (V, A), em que V denota o conjunto de vrtices (ou ns)
do grafo e A denota uma relao binria sobre V, atravs da qual so especicados os
arcos do grafo. Os arcos indicam associaes entre os vrtices do grafo. Dois vrtices
v
i
, v
j
V tais que (v
i
, v
j
) A so ditos vrtices adjacentes.
A estrutura de um grafo pode ser melhor entendida com o auxlio de uma repre-
sentao grca. Neste caso, os ns so denotados por crculos e os arcos por linhas que
unem pares de vrtices.
Exemplo 1.39 Sejam G1, V1 e A1 conforme abaixo:
G1 = (V1, A1)
V1 = {0, 1, 2, 3}
A1 = {(0, 1), (0, 2), (0, 3), (1, 3), (2, 3)}
O grafo G1 possui quatro vrtices, respectivamente numerados de 0 a 3, e cinco arcos, que
conectam pares de vrtices, conforme especicado em A1. Gracamente, G1 pode ser ilustrado
conforme a Figura 1.9.
0 1 3
2
Figura 1.9: Grafo
2
Diz-se que um grafo orientado quando os pares da relao binria A sobre V
forem ordenados, ou seja, quando houver relao de ordem entre os elementos que formam
os pares (v
i
, v
j
) A. Caso contrrio, diz-se que o grafo no-orientado.
Na prtica, costuma-se convencionar que v
i
precede v
j
no par (v
i
, v
j
) A. Neste
caso, v
i
denominado predecessor de v
j
. Por outro lado, v
j
sucede v
i
neste mesmo
par, e por isso denominado sucessor de v
i
. Diz-se tambm que o arco (v
i
, v
j
) emerge
do vrtice v
i
(ou ainda se inicia no, parte do) e atinge o vrtice v
j
(ou termina no,
chega ao, alcana).
Grafos orientados empregam, em sua representao, setas associadas aos arcos,
denotando, atravs do sentido dos arcos do grafo, a relao de ordem existente entre os
ns unidos pelo arco em questo. A omisso das setas, em grafos no-orientados, equivale
a considerar que todos os arcos representam conexes bidirecionais.
Exemplo 1.40 No Exemplo 1.39, o grafo G1 est representado como um grafo no-orientado.
Considerando-se desta vez o grafo G1 como sendo um grafo orientado, e sem alterar qualquer
aspecto de sua denio formal, o mesmo poderia ser representado gracamente conforme a Figura
1.10.
18 Linguagens Formais - Teoria, Modelagem e Implementao
0 1 3
2
Figura 1.10: Grafo orientado G1
2
Um grafo orientado dito ordenado quando houver uma relao de ordem pr-
convencionada sobre todos os arcos que emergem dos diversos vrtices do grafo. Essa
relao de ordem tem por objetivo estabelecer uma seqncia entre os diversos arcos que
partem de um mesmo vrtice, e no costuma ser denida explicitamente, uma vez que
conjuntos no incorporam o conceito de seqncia.
Quando se deseja ordenar os arcos que emergem de cada vrtice, comum que se
leve em conta como referncia a seqncia em que os arcos comparecem na representao
algbrica da funo A. Eventualmente pode-se considerar uma seqncia diferente, desde
que devidamente explicitada na representao do grafo.
Exemplo 1.41 Sejam:
G2 = (V2, A2)
V2 = {a, b, c, d}
A2 = {(a, b), (b, a), (a, c), (a, d), (c, b), (d, c), (c, d)}
Suponha-se, para efeito didtico, que A2 fosse constituda de uma seqncia de pares ordenados
(e no de um conjunto de pares ordenados), redigida de maneira anloga representao do conjunto,
porm sem as chaves:
(a, b), (b, a), (a, c), (a, d), (c, b), (d, c), (c, d)
Suponha-se, ainda, que um mesmo par ordenado no gure mais de uma vez na mesma
seqncia, e que exista uma relao de ordem implcita entre os pares ordenados, de tal forma que
(a, b) < (b, a) < (a, c) < ... < (c, d). Isso facilita a percepo de uma relao de ordem denida
para os arcos de G2, conforme mostrado a seguir:
Vrtice a: inicialmente (a, b), depois (a, c) e por ltimo (a, d)
Vrtice b: apenas (b, a)
Vrtice c: primeiro (c, b) depois (c, d)
Vrtice d: apenas (d, c)
Essa ordenao pode ser representada gracamente numerando-se os arcos do grafo, indicando-
se assim a ordenao relativa dos arcos que partem de um mesmo vrtice:
1 Elementos de Matemtica Discreta 19
a
b
c
d
1
2
1 3
1
2
1
Figura 1.11: Grafo ordenado G2
2
Trs importantes conceitos esto relacionados a grafos orientados, sejam eles orde-
nados ou no. O nmero N
S
de ramicaes de sada (ou fan-out ) de um dado
vrtice de um grafo orientado indica a quantidade de arcos que partem do mesmo. De
modo similar, o nmero N
E
de ramicaes de entrada (ou fan-in) de um determi-
nado vrtice refere-se quantidade de arcos do grafo que possuem o vrtice em questo
como destino. Vrtices com N
E
= 0 so denominados vrtices-base ou vrtices-raiz,
e vrtices com N
S
= 0 so denominados vrtices-folha.
Um caminho entre dois arcos, respectivamente denominados arcos inicial e nal,
em um grafo, uma seqncia ordenada de arcos, de tal forma que o vrtice prede-
cessor de cada arco, exceo do arco inicial, corresponde ao vrtice sucessor do arco
imediatamente anterior na seqncia ordenada.
O comprimento de um caminho o nmero de arcos que o formam. Por denio,
um caminho de comprimento zero aquele que inicia e termina no mesmo vrtice sem
percorrer nenhum arco.
Um caminho denominado ciclo se o vrtice predecessor do primeiro arco coincidir
com o vrtice sucessor do ltimo arco que o dene. Grafos orientados que possuem
pelo menos um ciclo so ditos grafos cclicos. Caso contrrio, so denominados grafos
acclicos.
Exemplo 1.42 Para o grafo G2 da Figura 1.11 (Exemplo 1.41):
NS(a) = 3, NS(b) = 1, NS(c) = 2, NS(d) = 1
NE(a) = 1, NE(b) = 2, NE(c) = 2, NE(d) = 2
A seqncia (a, c)(c, b) constitui um caminho, pois o vrtice predecessor do segundo arco (c
em (c, b)) idntico ao vrtice sucessor do arco anterior (c em (a, c)), e seu comprimento 2. A
seqncia (a, d)(c, d)(d, c) no constitui um caminho, pois o vrtice predecessor do segundo arco
((c)) diferente do vrtice sucessor do arco anterior ((d)). O grafo G2 do tipo cclico, pois possvel
identicar inmeros ciclos, dentre os quais (a, b)(b, a) ou (a, d)(d, c)(c, d)(d, c)(c, b)(b, a). 2
Muitas vezes pode ser til associar aos vrtices de um grafo, aos arcos de um grafo,
ou, eventualmente, a ambos, rtulos que representem informao adicional para a sua
interpretao. Nesses casos, diz-se que o grafo rotulado. Conforme o caso, caracteriza-
se a rotulao de vrtices ou ento a rotulao de arcos do grafo.
20 Linguagens Formais - Teoria, Modelagem e Implementao
Uma rotulao de vrtices denida como sendo uma funo f
V
que associa os
elementos de V a elementos de um conjunto R
V
, denominado alfabeto de rotulao de
vrtices. De modo anlogo, uma rotulao de arcos realizada atravs de uma funo
f
A
que associa elementos de A a elementos de um conjunto R
A
, denominado alfabeto de
rotulao de arcos.
Exemplo 1.43 Sejam:
G3 = (V3, A3)
V3 = {0, 1, 2}
A3 = {(0, 1), (1, 2), (0, 2)}
Uma possvel rotulao simultnea de vrtices e arcos em G3 seria:
fV = {(0, ), (1, ), (2, )}, com RV = {, , }
fA = {((0, 1), ), ((1, 2), ), ((0, 2), )}, com RA = {, , }
0/ 1/
2/

Figura 1.12: Grafo rotulado G3


Esquematicamente, essa rotulao pode ser representada conforme mostra a Figura 1.12. 2
Quanto sua natureza, os grafos podem ser classicados em grafos orientados ou
grafos no-orientados, e tambm em grafos rotulados ou grafos no-rotulados. Os grafos
orientados podem ainda ser classicados em grafos ordenados ou grafos no-ordenados,
e ainda como grafos cclicos ou grafos acclicos:
Grafos
_

_
Orientados / No-orientados
_
Ordenados / No-ordenados
Cclicos / Acclicos
Rotulados / No-rotulados
1.5 rvores
So especialmente importantes, no estudo das linguagens formais, e muito aplicados na
prtica, para a anlise e construo de compiladores, os grafos acclicos orientados e as
rvores. Estas, por sua vez, constituem um caso particular dos grafos acclicos orientados
ordenados.
Uma rvore ordenada, ou simplesmente uma rvore, um grafo acclico orientado
e ordenado que possui as seguintes caractersticas adicionais:
H apenas um vrtice r tal que N
E
(r) = 0. Este vrtice diferenciado denominado
raiz da rvore.
1 Elementos de Matemtica Discreta 21
Todos os demais vrtices possuem N
E
= 1.
Para cada vrtice h sempre um nico caminho que o liga raiz da rvore.
Para vrtices a e b que fazem parte de um mesmo caminho em uma rvore, diz-se
que a ancestral de b se for possvel atingir b a partir de a. Nesse caso, b dito
descendente de a. Quando entre a e b no houver nenhum vrtice intermedirio, diz-se
que a e b so adjacentes. Nessa situao, diz-se ainda que o vrtice a ancestral direto,
ou pai, do vrtice b, e que este descendente direto, ou lho, do vrtice a. O ancestral
mnimo comum de dois vrtices a e b corresponde ao (nico) antecessor de ambos que
seja tambm descendente de todos os antecessores comuns de a e b.
Vrtices tais que N
S
= 0 so denominados folhas da rvore. Os demais so deno-
minados vrtices internos. Inclui-se, por essa denio, entre os vrtices internos de
uma rvore, o vrtice-raiz dessa rvore.
A profundidade de um vrtice em uma rvore o comprimento do caminho ini-
ciado em sua raiz, e que termina no referido vrtice. A profundidade de uma rvore
denida como sendo a maior dentre as profundidades de seus vrtices.
rvores costumam ser representadas esquematicamente com a raiz na parte superior
da gura, e com os arcos e demais vrtices crescendo para baixo. Normalmente, as
representaes esquemticas das rvores no incorporam indicaes sobre a orientao e
a ordenao dos arcos, as quais neste caso se tornam implcitas, podendo ser inferidas a
partir da prpria gura, de acordo com as seguintes convenes, usualmente adotadas:
todos os arcos apontam para baixo e so implicitamente ordenados da esquerda para a
direita.
Exemplo 1.44 Considere-se a rvore da Figura 1.13:
Raiz
V
1
V
0
V
01
V
00
V
10
V
11
Figura 1.13: rvore para o Exemplo 1.44
Neste exemplo, o vrtice V1 ancestral direto (pai) de V11. Este, por sua vez descendente
direto (lho) de V1. O vrtice Raiz ancestral de V00 e o vrtice V01 descendente de Raiz.
Raiz tambm o mnimo ancestral comum dos vrtices V00 e V11, que por sua vez so folhas dessa
rvore e apresentam profundidade igual a 2. V0 e V1 so vrtices internos, e possuem profundidade
1. A profundidade desta rvore igual a 2. 2
22 Linguagens Formais - Teoria, Modelagem e Implementao
1.6 Teoremas e Demonstraes
Linguagens formais e autmatos constituem sistemas matemticos formais, nos quais
inmeras propriedades, em geral formuladas como teoremas, podem ser inferidas a
partir de verdades previamente conhecidas ou admitidas por hiptese, por intermdio
de raciocnios lgicos expressos como demonstraes. Tais propriedades sintetizam
grande parte dos resultados mais importantes da teoria na rea, e so fundamentais para
o aprendizado e a aplicao do conhecimento adquirido.
A demonstrao de teoremas sobre um dado conjunto geralmente exige a prova
formal de que uma certa propriedade satisfeita por todos os membros desse conjunto.
Quando se trata de conjuntos com uma quantidade reduzida de elementos, possvel
realizar demonstraes particulares para cada elemento individual deste conjunto (que
s vezes se reduzem a simples vericaes), garantindo assim que a propriedade seja
vlida para todos os elementos do conjunto.
H, no entanto, uma bvia diculdade prtica na aplicao dessa tcnica para con-
juntos nitos com cardinalidades elevadas. Alm disso, esse mtodo exaustivo de de-
monstrao evidentemente no se aplica a conjuntos innitos.
Para tais casos, devem-se buscar formas alternativas que permitam vericar, se-
gundo critrios de economia e de factibilidade, a validade de proposies efetuadas acerca
do sistema formal em estudo. Dentre as tcnicas mais largamente empregadas para tal
nalidade destacam-se as demonstraes por induo matemtica e as provas por con-
tradio, estas tambm conhecidas por demonstraes por reduo ao absurdo.
Induo Matemtica
O princpio da induo matemtica foi estabelecido com o intuito de permitir a genera-
lizao de uma propriedade P para um conjunto innito de elementos X. Informalmente,
induo denida como uma operao mental que consiste em se estabelecer uma ver-
dade universal ou proposio geral com base no conhecimento de certo nmero de dados
singulares ou de proposies de menor generalidade (Novo Dicionrio Aurlio da Lngua
Portuguesa).
Formalmente, o princpio da induo estabelecido da seguinte forma:
Inicialmente, elege-se um elemento ou subconjunto de elementos destacados de X,
denominado base da induo, e demonstra-se que a propriedade P vlida neste
caso particular. Geralmente, essa parte da prova trivial.
Admite-se, em seguida, que a propriedade seja vlida para subconjuntos nitos de
X que contenham o elemento utilizado para demonstrar a base da induo. Essa
etapa conhecida como hiptese indutiva, e formulada, de maneira recorrente,
nos prprios termos da propriedade que se deseja demonstrar.
A seguir, connado no fato de que, de maneira recorrente, a hiptese indutiva
verdadeira, demonstra-se que, se P vlida para um determinado elemento ou
subconjunto de X, ento P continuar sendo vlida quando se acrescenta mais um
elemento ao conjunto X (ou seja, P vlida para subconjuntos sucessivamente
mais abrangentes de X). Essa etapa recebe a denominao de passo indutivo, e
realiza a generalizao da propriedade proposta.
1 Elementos de Matemtica Discreta 23
Exemplo 1.45 Deseja-se provar que a propriedade P0 abaixo vlida para todos os nmeros naturais
maiores que 1:
P0(n) : 1 + 2
n
< 3
n
, n 2.
Base da induo:
n = 2.
P0(2) = 1 + 2
2
= 5 < 9. Portanto, P0 vlida para n = 2.
Hiptese indutiva:
P0(k) vlida para k 2, ou seja, 1 + 2
k
< 3
k
, k 2.
Passo indutivo:
P0(k) implica P0(k + 1), k 2.
Prova:
Pela hiptese indutiva: P0(k) = 1 + 2
k
< 3
k
, k 2.
Multiplicando-se ambos os membros da desigualdade por 2 : 2 + 2
k+1
< 2 3
k
.
Subtraindo-se 1 de ambos os membros da desigualdade: 1 + 2
k+1
< 2 3
k
1.
Como 2x 1 < 3x, x 1 (porque 3x = (2 +1)x = 2x +2, logo 2x 1 < 2x +2 e 1 < 2
verdadeiro), ento 1 + 2
k+1
< 2 3
k
1 < 3 3
k
= 3
k+1
.
Portanto, 1 + 2
k+1
< 3
k+1
= P0(k + 1), ou seja, P0(n), n 2.
A ttulo de complementao deste exemplo, pode-se demonstrar, tambm por induo, que
a propriedade 2n 1 < 3n, n 1, empregada na demonstrao acima, vericada no intervalo
especicado. Na prtica, a necessidade de se demonstrar passos ou hipteses intermedirias em geral
varia, conforme seja ou no intuitivo aceitar as armaes apresentadas.
P1(n) = 2n 1 < 3n, n 1.
Base da induo:
n = 1.
P1(1) = 2 1 1 = 1 < 3.
Hiptese indutiva:
P1(k) vlida para k 1, ou seja, 2k 1 < 3k, k 1.
Passo indutivo:
P1(k) implica P1(k + 1), k 1.
Prova:
Pela hiptese indutiva: P1(k) = 2k 1 < 3k, k 1.
Somando-se 2 a ambos os membros da desigualdade: 2k + 1 < 3k + 2.
Como: 3x < 3x + 1, x 1
Ento: 2k + 1 < 3k + 2 < 3k + 3, ou seja, 2k + 1 < 3k + 3
Logo: 2(k + 1) 1 < 3(k + 1) = P1(k + 1), ou P1(n), n 1. 2
Exemplo 1.46 Demonstrar, por induo, que P2(n) :
n

i=0
i =
n(n + 1)
2
.
Base da induo:
n = 0.
P2(0) :
0

i=0
i =
0(0 + 1)
2
= 0
Hiptese indutiva:
P2(k) :
k

i=0
i =
k(k + 1)
2
, k 0
Passo indutivo:
P2(k) implica P2(k + 1), k 0.
Prova:
Pela hiptese indutiva:
k

i=0
i =
k(k + 1)
2
, k 0
Somando-se (k+1) a ambos os membros da igualdade:
k

i=0
i + (k + 1) =
k+1

i=0
i =
k(k + 1)
2
+ (k + 1)
Desmembrando:
k(k + 1)
2
+ (k + 1) =
k
2
+ k + 2k + 2
2
=
k
2
+ 3k + 2
2
Fatorando:
k
2
+ 3k + 2
2
=
(k + 1)(k + 2)
2
=
(k + 1)((k + 1) + 1)
2
24 Linguagens Formais - Teoria, Modelagem e Implementao
Logo:
k+1

i=0
i =
(k + 1)((k + 1) + 1)
2
= P2(k + 1)
2
Exemplo 1.47 Demonstrar, por induo, que P3(n) =
n

i=0
i
3
=
_
n

i=0
i
_
2
, n 0
Base da induo:
n = 0.
0

i=0
i
3
=
_
0

i=0
i
_
2
= 0
Hiptese indutiva:
k

i=0
i
3
=
_
k

i=0
i
_
2
, k 0
Passo indutivo:
P3(k) implica P3(k + 1), k 0.
Prova:
Pela hiptese indutiva:
k

i=0
i
3
=
_
k

i=0
i
_
2
, k 0
Somando-se (k + 1)
3
a ambos os membros da igualdade:
k

i=0
i
3
+ (k + 1)
3
=
_
k

i=0
i
_
2
+ (k + 1)
3
=
k+1

i=0
i
3
De acordo com o exemplo anterior:
n

i=0
i =
n(n + 1)
2
, n 0
Logo:
_
k

i=0
i
_
2
+ (k + 1)
3
=
_
k(k + 1)
2
_
2
+ (k + 1)
3
Desmembrando:
_
k(k + 1)
2
_
2
+ (k + 1)
3
=
k
2
(k + 1)
2
4
+ (k + 1)(k + 1)
2
Fatorando:
k
2
(k + 1)
2
4
+ (k + 1)(k + 1)
2
= (k + 1)
2
k
2
+ 4k + 4
4
Fatorando novamente:
(k + 1)
2
k
2
+ 4k + 4
4
= (k + 1)
2
_
k + 2
2
_
2
=
_
(k + 1)
_
k + 2
2
__
2
Como:
_
(k + 1)
_
k + 2
2
__
2
=
_
(k + 1)
_
(k + 1) + 1
2
__
2
=
_
k+1

i=0
i
_
2
Ento:
k

i=0
i
3
+ (k + 1)
3
=
k+1

i=0
i
3
=
_
k+1

i=0
i
_
2
= P3(k + 1)
2
Os Exemplos 1.45, 1.46 e 1.47 demonstram a validade de proposies sobre subcon-
juntos dos nmeros naturais. Na prtica, no entanto, proposies sobre outros tipos de
conjuntos, e no apenas N, podem ser formuladas, mantendo-se a aplicabilidade integral
dos princpios e das tcnicas ilustradas nos exemplos.
Contradio
Uma outra tcnica bastante popular utilizada na demonstrao de teoremas a demons-
trao por contradio.
1 Elementos de Matemtica Discreta 25
A essncia da tcnica da demonstrao por contradio (ou reduo ao ab-
surdo) consiste em adotar como base da demonstrao a negao da hiptese formulada
e, atravs de manipulaes lgicas, mostrar que a negao dessa hiptese conduz a um pa-
radoxo, muitas vezes correspondente sua prpria contradio. Dessa forma, a hiptese
efetuada no pode ser considerada falsa, devendo, portanto, ser considerada verdadeira.
Exemplo 1.48 Deseja-se provar, por reduo ao absurdo, que

2 no pode ser expressa como um
nmero racional, ou seja, como frao cujo numerador e denominador, respectivamente p e q, so
nmeros inteiros (conforme [54]). Admitindo-se a hiptese como verdadeira (negao da hiptese
original), ento:

2 =
p
q
Pode-se considerar, sem perda de generalidade, que p e q no possuem fatores comuns. Caso
haja fatores comuns, simplica-se a frao antes de iniciar o procedimento. Elevando-se ambos os
lados da igualdade ao quadrado, obtm-se:
2 =
p
2
q
2
, ou p
2
= 2q
2
Portanto, p
2
e, conseqentemente, p so nmeros pares. Substituindo-se p por 2m na equao
acima, temos:
(2m)
2
= 2q
2
, ou q
2
= 2m
2
Isso mostra que q
2
e, portanto, q tambm so nmeros pares. Ora, se p e q so pares, isso
contradiz a hiptese original de que entre eles no haveria fatores comuns. Dessa forma, a hiptese
no pode ser verdadeira, concluindo-se que a raiz quadrada de 2 no pode ser um nmero racional. 2
1.7 Conjuntos Enumerveis
Quando se estudam os conjuntos, freqentemente torna-se necessrio compar-los entre
si em relao quantidade de elementos neles contidos, ou seja, sua cardinalidade.
A cardinalidade de um conjunto uma medida da quantidade de elementos contidos
no mesmo, ou seja, da grandeza que intuitivamente conhecida como tamanho do
conjunto.
Trata-se de um conceito de fcil compreenso quando referente a conjuntos nitos.
Nesse caso, diz-se que dois conjuntos A e B tm a mesma cardinalidade se eles possurem
a mesma quantidade de elementos, ou seja, |A| = |B|. Se A possuir mais elementos que
B, escreve-se |A| > |B|.
A cardinalidade de um conjunto nito , portanto, simplesmente o nmero natural
que informa a quantidade de elementos que compem esse conjunto. Quando se trata de
conjuntos nitos, tais resultados so intuitivos e, at certo ponto, bvios. Por exemplo,
se X for um subconjunto prprio de Y, ento ter-se- sempre |X| < |Y|.
Exemplo 1.49 Considerem-se os conjuntos nitos A = {a, b, c, d} e B = {0, 1, 2, 3, 4, 5}. Ento,
|A| = 4, |B| = 6 e |A| < |B|. 2
De que forma seria, por outro lado, possvel comparar o tamanho de dois conjuntos
innitos? Assim como no caso dos conjuntos nitos, dois conjuntos innitos tambm
podem possuir a mesma cardinalidade, bastando para isso que seja possvel identicar
uma correspondncia biunvoca entre os elementos de ambos os conjuntos.
Formalmente, diz-se que dois conjuntos A e B quaisquer, nitos ou innitos, pos-
suem a mesma cardinalidade, ou seja, |A| = |B|, se for possvel denir entre eles uma
funo bijetora.
Exemplo 1.50 Sejam A = {a, b, c} e B = {7, 3, 6}. Neste exemplo, A e B possuem a mesma
cardinalidade, pois |A| = |B| = 3. Note-se que possvel denir uma funo bijetora de A para B:
{(a, 7), (b, 3), (c, 6)}. Naturalmente, muitas outras funes bijetoras tambm podem ser denidas
entre esses dois conjuntos. 2
26 Linguagens Formais - Teoria, Modelagem e Implementao
Exemplo 1.51 Sejam A = {a | a mpar, 1 a 100} e B = {b | b par, 1 b 100}. A e
B so conjuntos nitos que possuem a mesma cardinalidade, pois a funo f (a) = a +1 bijetora,
mapeando os elementos do conjunto A nos elementos do conjunto B. Neste caso, |A| = |B| = 50. 2
Exemplo 1.52 Considere-se o conjunto dos nmeros inteiros Z e o subconjunto de Z composto apenas
pelos nmeros mpares. Trata-se, naturalmente, de dois conjuntos innitos, sendo o segundo um
subconjunto prprio do primeiro. Porm, de acordo com a denio, embora isso parea paradoxal,
os dois conjuntos possuem a mesma cardinalidade, j que a funo bijetora 2 i + 1, onde i Z,
mapeia univocamente cada elemento de Z em um nico elemento do conjunto dos nmeros mpares. 2
Do Exemplo 1.52 pode-se observar facilmente que, diferentemente do que ocorre
com conjuntos nitos, possvel, para conjuntos innitos, denir subconjuntos prprios
com a mesma cardinalidade do conjunto original.
Caso no seja possvel identicar pelo menos uma funo bijetora entre dois con-
juntos A e B quaisquer, ainda possvel que se constate a existncia de uma funo total
e injetora de A para B. Neste caso, diz-se que |A | |B|. Se, alm disso, for possvel
provar a inexistncia de uma funo bijetora de A para B, ento |A| < |B|.
Diz-se que um conjunto enumervel, ou simplesmente contvel, se ele possuir
um nmero nito de elementos, ou ento, no caso de ser innito, se ele possuir a mesma
cardinalidade que o conjunto dos nmeros naturais N. Conjuntos innitos X tais que
|X| = |N| so ditos no-enumerveis ou no-contveis.
O conceito de conjuntos enumerveis est diretamente relacionado ao conceito in-
tuitivo de seqencializao dos elementos de um conjunto, com o objetivo de permitir a
sua contagem. Na prtica, a operao de contagem de elementos de um conjunto pode ser
denida como o estabelecimento de uma correspondncia nica (funo bijetora) entre o
conjunto dos nmeros naturais e o conjunto cujos elementos se pretenda contar.
A seqencializao uma operao que visa estabelecer uma relao de ordem entre
os elementos de um conjunto (efetuar a sua ordenao) para permitir a associao unvoca
de cada um de seus elementos com os correspondentes elementos de N.
Exemplo 1.53 O conjunto dos nmeros inteiros Z um exemplo de conjunto innito enumervel. A
ordenao apresentada na Tabela 1.2 ilustra uma seqencializao que permite associar os elementos
de Z com os de N:
Z 0 1 -1 2 -2 3 -3 ...
N 0 1 2 3 4 5 6 ...
Tabela 1.2: Bijeo entre N e Z
Essa associao tambm pode ser representada por meio da funo:
f (n) = (1)
n+1

n + (n mod 2)
2
2
Exemplo 1.54 O conjunto formado pelos pares ordenados (x, y) N N, com x > y, tambm
constitui um exemplo de conjunto innito enumervel. Isso pode ser percebido com o auxlio da
Tabela 1.3, em que um arranjo bidimensional permite visualizar a seqencializao desses pares, de
modo que seja possvel estabelecer a sua associao com os elementos de N.
1 Elementos de Matemtica Discreta 27
(0,0) (0,1) (0,2) (0,3) (0,4) (0,5) . . .
(1,0) (1,1) (1,2) (1,3) (1,4) (1,5) . . .
(2,0) (2,1) (2,2) (2,3) (2,4) (2,5) . . .
(3,0) (3,1) (3,2) (3,3) (3,4) (3,5) . . .
(4,0) (4,1) (4,2) (4,3) (4,4) (4,5) . . .
(5,0) (5,1) (5,2) (5,3) (5,4) (5,5) . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tabela 1.3: {(x, y) N N | x > y} um conjunto
enumervel
A associao com N pode ser feita imaginando-se uma linha que percorra todos os elementos
desta matriz a partir do canto superior esquerdo, conforme a seqncia geomtrica mostrada na
Tabela 1.3. Desse modo, a seguinte seqncia de pares obtida:
(1, 0), (2, 0), (3, 0), (2, 1), (3, 1), (4, 0), (5, 0), (4, 1), (3, 2)...
Tal seqncia pode ser facilmente colocada em correspondncia com os elementos de N, con-
forme ilustrado na Tabela 1.4.
Z Z (1,0) (2,0) (3,0) (2,1) ...
N 0 1 2 3 ...
Tabela 1.4: Bijeo entre N e N N
Tcnica semelhante pode ser usada para demonstrar que o conjunto N N e o conjunto dos
nmeros racionais tambm so enumerveis. Neste ltimo caso, em particular, basta considerar o
elemento (x, y) N N como uma representao da frao x/y (a m de evitar o denominador
zero, a primeira coluna do arranjo deve ser omitida). 2
Exemplo 1.55 O conjunto R, composto pelos nmeros reais, constitui um exemplo de conjunto
innito no-enumervel, uma vez que, como demonstrado a seguir, |R| = |N|. Para efetuar essa
demonstrao, ser considerado o seguinte subconjunto de R:
S = {x R | 0 < x < 1}
A prova de que R no-enumervel efetuada em dois passos: inicialmente demonstra-se
que S possui a mesma cardinalidade que R, e a seguir demonstra-se que S um conjunto no-
enumervel. O fato de que |S| = |R| pode ser constatado pela existncia da funo bijetora f ,
apresentada a seguir, a qual permite associar univocamente elementos de S com elementos de R:
f (x) =
_
_
_
1
2x
1, 0 < x < 0, 5
1
2(x 1)
+ 1, 0, 5 x < 1
A prova de que S um conjunto no-enumervel feita por contradio, ou seja, mostrando-se
que, qualquer que seja a seqencializao proposta para os elementos de S, sempre ser possvel
identicar um novo elemento de S que no pertence seqncia apresentada. Desse modo, a
hiptese original de que S um conjunto enumervel deve ser considerada invlida.
Admita-se que exista uma seqencializao de S de tal modo que seja possvel associar cada
elemento desse conjunto univocamente a elementos de N. Assim, seria obtida uma associao do
tipo ilustrado pela Tabela 1.5.
R R
0
R
1
R
2
R
3
...
N 0 1 2 3 ...
Tabela 1.5: Bijeo hipottica entre N e R
28 Linguagens Formais - Teoria, Modelagem e Implementao
Suponha-se, sem perda de generalidade, que todos os elementos de S sejam denotados atravs
de representaes com um nmero innito de casas de decimais signicativas. Assim, por exemplo,
em vez de escrever 0, 1, adota-se a representao equivalente 0, 099999999999999999999999...
Se cada elemento Ri S pode ser escrito como sendo uma seqncia innita do tipo:
0, di
0
di
1
di
2
di
3
...din
..., ento a construo do novo elemento:
0, x0x1x2x3...xn..., xj = djj , xj = 0
suciente para provar que o mesmo no pertence seqncia originalmente proposta, uma vez
que esse novo elemento difere em pelo menos uma casa decimal de cada um dos elementos ini-
cialmente considerados, sendo, portanto, diferente de todos eles. Logo, S no enumervel e,
conseqentemente, R tambm no. 2
Como est mostrado no Exemplo 1.55, nem todos os conjuntos innitos possuem
a mesma cardinalidade. Assim, apesar de N e R possurem uma quantidade innita de
elementos, intuitivo que R possui uma quantidade muito maior de elementos que N, ou
seja, |R| > |N|, impedindo que seja estabelecida uma funo bijetora entre ambos.
Esses so alguns dos resultados da Teoria dos Nmeros Transnitos ([57]), desenvol-
vida no nal do sculo XIX pelo matemtico russo Georg Cantor (1845-1918), de acordo
com a qual os nmeros transnitos representam quantidades no-nitas ordenadas de
forma crescente. Tais quantidades so representadas por
0
,
1
...
n
...
1
, de tal forma que

i1
<
i
<
i+1
, para i 1. Alm disso,
0
= |N| e
1
= |R|.
Outros exemplos de conjuntos innitos enumerveis so o conjunto dos nmeros
racionais e o conjunto de todas as cadeias que podem ser formadas pela concatenao de
smbolos de um conjunto nito . J o conjunto formado por todos os subconjuntos de
N, ou seja, o conjunto 2
N
, no-enumervel.
Formalmente, um conjunto X dito innito se for possvel identicar um subcon-
junto prprio de X, por exemplo, Y, tal que |X| = |Y|.
Exemplo 1.56 No Exemplo 1.55, o fato de que S R e |S| = |R| suciente para garantir que R
um conjunto innito. 2
Exemplo 1.57 Considere-se o conjunto dos nmeros naturais N. Deseja-se demonstrar que N
innito com o auxlio do subconjunto prprio N{0}. No difcil perceber que esses dois conjuntos
possuem a mesma cardinalidade, uma vez que a funo n + 1, n N mapeia univocamente cada
elemento de N em elementos do subconjunto prprio N {0} : 0 1, 1 2, 2 3, 3 4, 4
5, 5 6, 6 7...
Assim, apesar de N{0} possuir um elemento a menos que N, na verdade ambos possuem a
mesma cardinalidade, o que conrma N como conjunto innito. 2
A seguir sero apresentados e demonstrados alguns dos principais resultados tericos
sobre conjuntos enumerveis e no-enumerveis.
Teorema 1.3 (Teorema de Cantor) Seja A um conjunto qualquer, |A| =
i
. Ento
|2
A
| > |A| e |2
A
| =
i+1
.
Justicativa Constata-se com facilidade a existncia de pelo menos uma funo f , que
associa cada elemento x A com um elemento f (x) 2
A
, e que seja injetora e total.
Logo, possvel concluir que |A| |2
A
|. Para provar que |A| < |2
A
|, suciente mostrar
que no existe funo bijetora de A para 2
A
.
Suponha-se que exista tal bijeo. Nesse caso, pode-se armar que todo e qualquer
elemento x A est associado a um elemento distinto f (x) 2
A
. Considere-se agora o
seguinte subconjunto de A:
S = {x A | x f (x)}
1
(aleph) a primeira letra do alfabeto hebraico.
1 Elementos de Matemtica Discreta 29
De acordo com a hiptese formulada (de que existe uma bijeo entre os conjuntos),
esperado que S = f (x
i
) para algum x
i
A. Tal concluso, se verdadeira, acarretaria
as seguintes conseqncias, de forma exclusiva:
Se x
i
S, e como S = f (x
i
), por hiptese, ento x
i
S, o que constitui uma
contradio;
Se x
i
S, e como S = {x A | x f (x)}, por denio, ento x
i
S, o que
tambm uma contradio.
Qualquer que seja o caso, resulta uma contradio. Logo, a hiptese inicialmente
formulada falsa e disso conclui-se no existir qualquer bijeo entre A e 2
A
. Portanto,
|A| < |2
A
|.
O Teorema 1.3 demonstra que conjuntos innitos de cardinalidades sucessivamente
maiores podem ser obtidos pela aplicao sucessiva da operao conjunto-potncia. Con-
sidere os conjuntos A, B = 2
A
, C = 2
B
, D = 2
C
etc. Ento, |A| < |B| < |C| < |D| < ...
De acordo com a teoria de Cantor, N o conjunto que possui a menor cardinalidade
entre todos os conjuntos innitos, a qual denotada por
0
, o primeiro nmero da
sua srie transnita. Por conseqncia, |N| < |2
N
|. Por outro lado, conforme foi visto
anteriormente, |N| < |R|, o que sugere a questo: ser que |R| = |2
N
| ?.
De fato, este resultado pode ser provado como sendo verdadeiro. Alm disso, |R| e
|2
N
| correspondem ao segundo nmero transnito conhecido, na seqncia de Cantor, o
qual denotado por
1
. Por outro lado, no se sabe da existncia de algum conjunto X,
tal que
0
< |X| <
1
.
Teorema 1.4 (|B|, B A, |A| =
0
) Sejam A e B dois conjuntos, B A. Se
|A| =
0
, ento |B|
0
.
Justicativa Se |A| =
0
, ento existe uma funo bijetora entre o conjunto dos n-
meros naturais N e o conjunto A (e vice-versa). Logo, existe uma funo injetora e total
f
1
que associa elementos de A e N, conforme a Tabela 1.6.
A: a
0
a
1
a
2
. . . a
n
. . .
f
1
:
N 0 1 2 . . . n . . .
Tabela 1.6: Funo f
1
para o Teorema 1.4
Se B subconjunto de A, possvel associar cada elemento de B ao mesmo elemento
de A atravs de uma funo injetora e total f
2
, conforme a Tabela 1.7.
B: a
1
. . . a
n
. . .
f
2
:
A: a
0
a
1
a
2
. . . a
n
. . .
Tabela 1.7: Funo f
2
para o Teorema 1.4
A composio das funes f
1
e f
2
, ilustrada na Tabela 1.8, mostra que existe uma
funo injetora e total de B para N.
Logo, |B| |N|, ou seja, |B|
0
. Em outras palavras, qualquer subconjunto
(nito ou innito) de um conjunto enumervel tambm um conjunto enumervel.
30 Linguagens Formais - Teoria, Modelagem e Implementao
B: a
1
. . . a
n
. . .
f
2
:
A: a
0
a
1
a
2
. . . a
n
. . .
f
1
:
N 0 1 2 . . . n . . .
Tabela 1.8: Composio de f
1
com f
2
para o Teorema 1.4
Teorema 1.5 (|A B|, |A| =
0
, |B| =
0
) Sejam A e B dois conjuntos quaisquer.
Se |A| =
0
e |B| =
0
, ento |A B| =
0
.
Justicativa Se A e B so conjuntos enumerveis (nitos ou innitos), ento seus ele-
mentos podem ser ordenados da seguinte forma:
A : a
0
, a
1
, a
2
, a
3
, a
4
, ...a
n1
, a
n
, a
n+1
...
B : b
0
, b
1
, b
2
, b
3
, b
4
, ...b
n1
, b
n
, b
n+1
...
A enumerao dos elementos de A B pode ser feita atravs do seguinte procedi-
mento:
A B : a
0
, b
0
, a
1
, b
1
, a
2
, b
2
, ...a
n1
, b
n1
, a
n
, b
n
, a
n+1
, b
n+1
, ...
Portanto, AB enumervel e |A B| =
0
. Em outras palavras, a unio de dois
conjuntos enumerveis sempre um conjunto enumervel.
Teorema 1.6 (|A B|, |A| =
0
, |B| =
0
) Sejam A e B dois conjuntos quaisquer.
Se |A| =
0
e |B| =
0
, ento |A B| =
0
.
Justicativa Se A B, ento A B = A e |A B| = |A| =
0
por hiptese. Se,
por outro lado, B A, ento AB = B e |AB| = |B| =
0
por hiptese. Finalmente,
se nenhuma dessas duas condies for verdadeira, ento AB A e, pelo Teorema 1.4,
|A B| =
0
. Portanto, em qualquer caso que se considere, |A B| =
0
.
Teorema 1.7 (|A B|, B A, |A| =
1
, |B| =
0
) Sejam A e B dois conjuntos,
B A. Se |A| =
1
e |B| =
0
, ento |A B| =
1
.
Justicativa Suponha-se que |A B| =
0
. Ento, de acordo com o Teorema 1.5,
|(AB) B| =
0
, o que contradiz a hiptese de que |A| =
1
, pois (AB) B = A.
Como B A, e, portanto, |B| |A|, conclui-se que |A B| =
1
.
2 Conceitos Bsicos de Linguagens
Este captulo apresenta e discute os principais conceitos bsicos associados ao estudo de
linguagens, como o caso dos smbolos, das cadeias e das linguagens propriamente ditas,
assim como dos mtodos empregados para a formalizao das linguagens, como o caso
das gramticas e dos reconhecedores.
As gramticas possuem grande importncia na anlise e na especicao formal da
sintaxe de linguagens, principalmente das linguagens de programao, ao passo que os
reconhecedores denem modelos que servem como base para a construo de analisadores
lxicos e sintticos nos compiladores e interpretadores de tais linguagens. Na prtica,
o estudo sistemtico das linguagens formais e dos autmatos viabilizou o desenvolvi-
mento de tcnicas ecientes para a utilizao econmica das linguagens de programao,
originando-se em seu estudo grande parte do interesse que recai sobre os assuntos ligados
a esse tema.
O captulo se encerra com a apresentao da Hierarquia de Chomsky, usualmente
empregada na classicao hierrquica das linguagens conforme seu grau de complexi-
dade, e em torno da qual se costuma desenvolver boa parte da teoria das linguagens
formais e autmatos. Tomando-se como base essa hierarquia, so efetuadas considera-
es preliminares sobre as propriedades e sobre a caracterizao formal de cada uma das
classes de linguagens por ela denidas.
2.1 Smbolos e Cadeias
Os smbolos,
1
tambm denominados palavras ou tomos, so representaes grcas,
indivisveis, empregadas na construo de cadeias. Estas so formadas atravs da jus-
taposio de um nmero nito de smbolos, obtidos de algum conjunto nito no-vazio,
denominado alfabeto.
Cada smbolo considerado como uma unidade atmica, no importando a sua par-
ticular representao visual. So exemplos de smbolos: a, abc, begin, if , 5, 1024, 2.017e4.
Perceba-se que no h uma denio formal para smbolo. Deve-se intuir o seu signi-
cado como entidade abstrata, e dessa forma aceit-lo como base para a teoria que ser
desenvolvida. Pode-se dizer que se trata de um conceito primitivo.
Ao longo deste texto ser adotada a seguinte conveno para denotar smbolos,
cadeias e alfabetos:
Smbolos: letras minsculas do incio do alfabeto romano: (a, b, c...).
Cadeias: letras minsculas do nal do alfabeto romano (r, s, x, w...), ou letras
minsculas do alfabeto grego (, , ...).
Alfabetos: letras maisculas do alfabeto grego (, , ...).
1
Na literatura em ingls so conhecidos como tokens.
32 Linguagens Formais - Teoria, Modelagem e Implementao
Exemplo 2.1 Como exemplo de alfabeto podemos mencionar o conjunto dos dgitos hexadecimais,
em que cada elemento (dgito) desse conjunto corresponde a um determinado smbolo:
= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f }
Naturalmente, as cadeias que podem ser construdas a partir dos smbolos desse alfabeto
correspondem aos numerais hexadecimais: 123, a0b56, fe5dc, b, abc, 55ef ... 2
O comprimento de uma cadeia um nmero natural que designa a quantidade de
smbolos que a compem. O comprimento de uma cadeia denotado por ||.
Exemplo 2.2 Considerem-se as cadeias = 1, = 469, = ble60, = df . Ento, || = 1, || =
3, || = 5 e || = 2. 2
D-se o nome de cadeia elementar (ou unitria) a qualquer cadeia formada por
um nico smbolo, como o caso da cadeia do Exemplo 2.2. Naturalmente, toda cadeia
unitria tem comprimento 1.
Um outro importante exemplo de alfabeto corresponde ao conjunto dos smbolos
denidos em algum dicionrio da lngua portuguesa. Note que, diferentemente do al-
fabeto anteriormente considerado, em que todos os smbolos eram compostos de um
nico caractere, os smbolos deste novo alfabeto so construdos a partir da concatena-
o de um nmero varivel de caracteres (no caso, as letras do alfabeto romano). Para o
presente estudo, embora representados com diversos caracteres, tais smbolos so conside-
rados indivisveis, e as correspondentes cadeias elementares apresentam, por essa razo,
comprimento unitrio quando consideradas no contexto da lngua portuguesa.
Considerando-se ainda que tal alfabeto sucientemente extenso para conter as
conjugaes de todos os verbos, as formas exionadas de todos os adjetivos, substantivos
etc., enm, todas as palavras possveis de serem empregadas em nosso idioma, ento
a cadeia Exemplo de uma cadeia no novo alfabeto dever ser considerada uma cadeia
vlida, construda a partir dos smbolos desse alfabeto, e o seu comprimento igual a
7. Note que esse alfabeto da lngua portuguesa, apesar de extenso, nito, e tambm
que possvel construir uma quantidade innita de cadeias de comprimento nito com
os smbolos dele. Observe-se que, entre estas, h cadeias que na lngua portuguesa no
fazem sentido. Por exemplo, cadeia uma exemplo errado o. As demais so empregadas
nas diversas formas de comunicao humana.
O conceito de cadeia vazia especialmente importante na teoria das linguagens
formais. Denota-se por a cadeia formada por uma quantidade nula de smbolos, isto ,
a cadeia que no contm nenhum smbolo. Formalmente,
|| = 0
Duas cadeias, sejam elas elementares ou no, podem ser anexadas, formando uma
s cadeia, atravs da operao de concatenao. Essa operao fornece como resultado
uma nova cadeia, formada pela justaposio ordenada dos smbolos que compem os seus
operandos separadamente. Observe-se que a operao de concatenao entre uma cadeia
e um smbolo realizada atravs da concatenao da cadeia em questo com a cadeia
elementar correspondente ao smbolo.
Denota-se a concatenao de duas cadeias e como ou, simplesmente, .
Exemplo 2.3 Considere o alfabeto = {a, b, c, d}, e as cadeias = abc, = dbaca e = a.
A concatenao da cadeia com a cadeia assim obtida:
= = abcdbaca, e || = | | +| | = 3 + 5 = 8
Da mesma forma, obtm-se a concatenao de com :
2 Conceitos Bsicos de Linguagens 33
= = dbacaabc, e, || = | | +| | = 5 + 3 = 8
Note-se que, neste exemplo, = .
A concatenao da cadeia com a cadeia elementar dada por:
= = abca, e || = | | +| | = 3 + 1 = 4
Finalmente, a concatenao da cadeia elementar com a cadeia obtida como:
= = adbaca, e || = | | +| | = 1 + 5 = 6 2
Como se pode perceber, a operao de concatenao, embora associativa, no
comutativa. Dadas trs cadeias , , quaisquer, pode-se sempre armar que () =
().
Por outro lado, dependendo dos particulares e considerados, pode ser que ou
= ou = (por exemplo, se e/ou forem cadeias vazias ou, ainda, se
= ).
No caso da cadeia vazia (elemento neutro em relao ao operador de concatenao)
so vlidas as seguintes relaes:
1. = =
2. || = || = ||
Diz-se que uma cadeia um prexo de outra cadeia se for possvel escrever
como . A cadeia dita suxo de se puder ser escrita como . Em ambos
os casos, admite-se a possibilidade de = . Nos casos em que = , diz-se que ,
respectivamente, prexo prprio ou suxo prprio da cadeia . Note que a cadeia
vazia pode ser considerada simultaneamente prexo ou suxo de qualquer cadeia.
Dadas quatro cadeias , , e , uma cadeia chamada subcadeia de uma cadeia
sempre que = . Note-se que, se ou ou ambos forem vazios, a denio tambm
se aplica. Note-se tambm que prexos e suxos so casos particulares de subcadeias.
Uma cadeia dita o reverso de uma cadeia , denotando-se o fato por =
R
,
se contiver os mesmos smbolos que , porm justapostos no sentido inverso, ou seja:
se =
1

2
...
n1

n
ento =
n

n1
...
2

1
Por denio,
R
= .
Exemplo 2.4 Considerem-se as cadeias = 123abc e = d. Ento,
R
= cba321 e
R
= d. 2
Finalmente, convenciona-se que
i
representa a cadeia formada por i smbolos
concatenados. Por denio,
0
= .
Exemplo 2.5 Considere-se o smbolo a. Ento:
a
0
= ;
a
1
= a;
a
2
= aa;
a
3
= aaa;
etc.
2
2.2 Linguagens
Uma linguagem formal um conjunto, nito ou innito, de cadeias de comprimento
nito, formadas pela concatenao de elementos de um alfabeto nito e no-vazio. Alm
34 Linguagens Formais - Teoria, Modelagem e Implementao
das operaes previamente denidas para conjuntos, como unio, diferena, interseco
etc., outras operaes, tais como a concatenao e os fechamentos, tambm so funda-
mentais para a denio e o estudo das linguagens formais.
Antes de apresent-las, convm notar a distino que h entre os seguintes conceitos:
cadeia vazia , conjunto vazio e o conjunto que contm apenas a cadeia vazia {}.
O primeiro deles, , denota a cadeia vazia, ou seja, uma cadeia de comprimento
zero, ao passo que os dois seguintes so casos particulares de linguagens (que por sua
vez so conjuntos): denota uma linguagem vazia, ou seja, uma linguagem que no
contm nenhuma cadeia, e {} denota uma linguagem que contm uma nica cadeia, a
cadeia vazia. Observe-se que || = 0 e |{}| = 1.
Note-se a diferena conceitual que h entre alfabetos, linguagens e cadeias. Al-
fabetos so conjuntos, nitos e no-vazios, de smbolos, atravs de cuja concatenao
so obtidas as cadeias. Linguagens, por sua vez, so conjuntos, nitos (eventualmente
vazios) ou innitos, de cadeias. Uma cadeia tambm denominada sentena de uma
linguagem, ou simplesmente sentena, no caso de ela pertencer linguagem em questo.
Linguagens so, portanto, colees de sentenas sobre um dado alfabeto.
A Figura 2.1 ilustra a relao entre os conceitos de smbolo, alfabeto, cadeia e
linguagem:
Figura 2.1: Smbolo, alfabeto, cadeia e linguagem
As vrias leituras contidas na Figura 2.1 so: smbolo elemento de alfabeto;
alfabeto conjunto de smbolos; smbolo item de cadeia; cadeia seqncia de
smbolos; cadeia elemento de linguagem e linguagem conjunto de cadeias.
Outra maneira de associar signicados aos termos smbolo, alfabeto, cadeia e
linguagem apresentada na Figura 2.2, que tambm ilustra o conceito de sentena.
2 Conceitos Bsicos de Linguagens 35
Figura 2.2: Smbolo, alfabeto, cadeia, sentena e linguagem
A Figura 2.2 facilita o entendimento das relaes entre os conceitos: (i) um conjunto
de smbolos forma um alfabeto, (ii) a partir de um alfabeto (nito) formam-se (innitas)
cadeias; (iii) determinadas cadeias so escolhidas para fazer parte de uma linguagem;
(iv) uma linguagem um conjunto de cadeias, que por isso so tambm denominadas
sentenas.
Exemplo 2.6 O smbolo a elemento do alfabeto {a} e tambm um item da cadeia aaa, que por
sua vez elemento da linguagem {aaa}. Por outro lado, a linguagem {aaa} um conjunto que
contm a cadeia aaa, a cadeia aaa uma seqncia de smbolos a e o alfabeto {a} contm o
smbolo a. A Figura 2.3 ilustra esses conceitos, conforme a Figura 2.1.
Figura 2.3: a, {a}, aaa, {aaa}
2
Exemplo 2.7 A Figura 2.4 ilustra uma aplicao dos conceitos da Figura 2.2 ao alfabeto {a, b}. A
linguagem apresentada , naturalmente, apenas uma das inmeras que podem ser criadas a partir
desse alfabeto.
36 Linguagens Formais - Teoria, Modelagem e Implementao
Figura 2.4: a, b, cadeias, sentenas e linguagem
2
A concatenao de duas linguagens X e Y, denotada por X Y ou simplesmente
XY, corresponde a um conjunto Z formado pela coleo de todas as cadeias que possam
ser obtidas pela concatenao de cadeias x X com cadeias y Y, nesta ordem.
Formalmente,
Z = X Y = XY = {xy | x X e y Y}
A concatenao , que gera cadeias de comprimento 2 formadas sobre um alfabeto
, tambm representada por
2
. Analogamente, a concatenao , que gera cadeias
de comprimento 3 sobre o alfabeto , representada como
3
, e assim sucessivamente.
Generalizando-se:

i
=
i1
, i 0
Por denio,
0
= {}
Exemplo 2.8 Considere-se = {a, b, c}. Ento,

0
= {}

1
= {a, b, c}

2
= {aa, ab, ac, ba, bb, bc, ca, cb, cc}

3
= {aaa, aab, aac, aba, abb, abc, ..., ccc}
etc.
2
O fechamento reexivo e transitivo (s vezes chamado fechamento recursivo
e transitivo) de um alfabeto denido como o conjunto (innito) que contm todas
as possveis cadeias que podem ser construdas sobre o alfabeto dado, incluindo a cadeia
vazia. Esse conjunto, denotado por

, contm, naturalmente, todas as cadeias que


podem ser denidas sobre o alfabeto . Formalmente, o fechamento reexivo e transitivo
de um conjunto denido como:

=
0

1

2

3
... =

_
i=0

i
Em outras palavras, o fechamento reexivo e transitivo de um alfabeto a unio de
todos os conjuntos que representam as possveis cadeias de comprimentos zero, um, dois,
2 Conceitos Bsicos de Linguagens 37
trs, e assim por diante, ou seja, a coleo de todas as cadeias, de qualquer comprimento,
que possam ser formadas por concatenao a partir dos smbolos do alfabeto.
A denio de uma linguagem pode, portanto, ser formulada de maneira mais rigo-
rosa com o auxlio da operao de fechamento reexivo e transitivo: sendo uma linguagem
qualquer coleo de cadeias sobre um determinado alfabeto , e como

contm todas
as possveis cadeias sobre , ento toda e qualquer linguagem L sobre um alfabeto
sempre poder ser denida como sendo um subconjunto de

, ou seja, L

.
Diz-se que a maior linguagem que se pode denir sobre um alfabeto , observando-
se um conjunto qualquer P de propriedades, corresponde ao conjunto de todas as cadeias
w

tais que w satisfaz simultaneamente a todas as propriedades p


i
P.
De uma forma geral, sempre que for feita uma referncia a uma determinada lingua-
gem L cujas cadeias satisfaam a um certo conjunto de propriedades P, estar implcita
(a menos de ressalva em contrrio) a condio de que se trata da maior linguagem denida
sobre L, cujas cadeias satisfaam o conjunto de propriedades P.
Um caso particular importante a se considerar a linguagem cujo conjunto P de
propriedades seja o menos restritivo possvel, considerando toda e qualquer cadeia de
qualquer comprimento (nito) como sendo vlida. Assim, a maior linguagem dentre
todas as que podem ser denidas sobre um alfabeto qualquer L =

(note-se, neste
caso, que a nica propriedade a ser satisfeita pelas cadeias de L que elas sejam denidas
sobre , ou seja, obtidas a partir da simples justaposio de smbolos de ). Qualquer
outra linguagem denida sobre esse mesmo alfabeto corresponder obrigatoriamente a
um subconjunto (eventualmente prprio) de

.
Por outro lado, a menor linguagem que pode ser denida sobre um alfabeto
qualquer , ou seja, a linguagem vazia ou a linguagem composta por zero sentenas.
Finalmente, como o conjunto de todos os subconjuntos possveis de serem obtidos
a partir de

, tem-se que 2

representa o conjunto de todas as linguagens que


podem ser denidas sobre o alfabeto .
Em resumo:
o conjunto constitudo por zero cadeias e corresponde menor linguagem que
se pode denir sobre um alfabeto qualquer;

o conjunto de todas as cadeias possveis de serem construdas sobre e


corresponde maior de todas as linguagens que pode ser denida sobre ;
2

o conjunto de todos os subconjuntos possveis de serem obtidos a partir


de

, e corresponde ao conjunto formado por todas as possveis linguagens que


podem ser denidas sobre . Observe-se que 2

, e tambm que

.
Exemplo 2.9 Seja = {a, b, c} e P o conjunto formado pela nica propriedade todas as cadeias
so iniciadas com o smbolo a. Ento:
A linguagem L0 = a menor linguagem que pode ser denida sobre ;
A linguagem L1 = {a, ab, ac, abc, acb} nita e observa P;
A linguagem L2 = {a}{a}

{b}

{c}

innita e observa P;
A linguagem L3 = {a}{a, b, c}

innita, observa P e, dentre todas as que observam P,


trata-se da maior linguagem, pois no existe nenhuma outra cadeia em

que satisfaa a P
e no pertena a L3;
L0

, L1

, L2

, L3

;
38 Linguagens Formais - Teoria, Modelagem e Implementao
L0 2

, L1 2

, L2 2

, L3 2

;
Alm de L0, L1, L2 e L3, existem inmeras outras linguagens que podem ser denidas sobre
.
2
O fechamento transitivo de um alfabeto , denotado por
+
, denido de
maneira anloga ao fechamento reexivo e transitivo, diferindo deste apenas por no
incluir o conjunto
0
:

+
=
1

2

3
... =

_
i=1

i
Como se pode perceber,

=
+
{}. Observe-se ainda que, embora aparente-
mente seja conseqncia da anterior, a armao
+
=

{} s ser vlida nos casos


em que no contiver a cadeia vazia.
Exemplo 2.10 Seja = {n, (, ), +, , , /}. Neste caso:

= {, n, n + n, n), /, n()), n (n n), ...}



+
= {n, n + n, n), /, n()), n (n n), ...}

+
=

{}, pois
2
A complementao de uma linguagem X denida sobre um alfabeto denida
como:
X =

X
Diz-se que uma linguagem exibe a propriedade do prexo (suxo) prprio sempre
que no houver nenhuma cadeia a ela pertencente que seja prexo (suxo) prprio de
outra cadeia dessa mesma linguagem. Formalmente:
Prexo prprio: no existe L | = e L
Suxo prprio: no existe L | = e L
Exemplo 2.11 Considere as seguintes linguagens:
L1 = {a
i
b
i
| i 1} = {ab, aabb, aaabbb, ...}
L2 = {ab
i
| i 1} = {ab, abb, abbb, abbbb, ...}
Neste exemplo, a linguagem L1 exibe a propriedade do prexo prprio, ao passo que a linguagem
L2 no a exibe. A propriedade do suxo prprio exibida por ambas as linguagens. 2
Diz-se que uma linguagem L
1
o reverso de uma linguagem L
2
, denotando-se o
fato por L
1
= L
R
2
(ou L
2
= L
R
1
), quando as sentenas de L
1
corresponderem ao reverso
das sentenas de L
2
. Formalmente:
L
1
= L
R
2
= {x
R
| x L
2
}
Exemplo 2.12 Seja L2 = {, a, ab, abc}. Ento, L1 = L
R
2
= {, a, ba, cba}. 2
2 Conceitos Bsicos de Linguagens 39
Dene-se o quociente de uma linguagem L
1
por uma outra linguagem L
2
, denotado
por L
1
/L
2
, como sendo a linguagem:
L
1
/L
2
= {x | xy L
1
e y L
2
}
Exemplo 2.13 Considerem-se as linguagens:
L1 = {a
i
b | i 0}
L2 = {a
i
bc
i
| i 0}
L3 = {b}
L4 = {a
i
b | i 1}
L5 = {bc
i
| i 0}
L6 = {c
i
b | i 0}
L7 = {a
i
| i 0}
Ento, so verdadeiras as seguintes relaes:
L1/L3 = L7:
L1 = {b, ab, aab, aaab...}
L3 = {b}
Para cada uma das cadeias pertencentes a L1, possvel identicar o (nico) membro de
L3 como suxo dos membros de L1. Logo, atravs da remoo desse suxo b, de todas as
cadeias de L1, o conjunto resultante ser L7.
L1/L4 = L7:
L1 = {b, ab, aab, aaab...}
L4 = {ab, aab, aaab...}
Nenhuma das cadeias pertencentes a L4 pode ser considerada suxo de b L1. Por outro
lado, ab L4 suxo de ab L1, de aab L1 etc., resultando que , a, aa... pertencem
ao quociente de L1 por L4. O mesmo ocorre com as cadeias aab, aaab... pertencentes a L4,
sem no entanto modicar o resultado da operao.
L5/L7 =
L5 = {b, bc, bcc, bccc...}
L7 = {ab, aab, aaab...}
Como nenhuma cadeia de L5 contm o smbolo a (presente em todas as cadeias de L7),
conclui-se no ser possvel representar nenhuma cadeia de L5 atravs da concatenao de um
prexo com uma cadeia de L7.
L2/L6 = L7
L2 = {b, ab, bc, abc, aab, bcc, aabc, abcc, aabcc...}
L6 = {b, cb, ccb, cccb...}
Como nenhum dos elementos de L6 tem o smbolo c como suxo, todas as cadeias perten-
centes a L2 que terminam com o smbolo c no possuem suxo em L6. No entanto, todas as
cadeias de L2 compostas apenas por smbolos a e b possuem a cadeia b L6 como suxo.
Removido de tais cadeias esse suxo, restam as cadeias formadas por zero ou mais smbolos
a, ou seja, a linguagem L7.
L2/L1 = L7
L2 = {b, ab, bc, abc, aab, bcc, aabc, abcc, aabcc...}
L1 = {b, ab, aab, aaab...}
40 Linguagens Formais - Teoria, Modelagem e Implementao
Nenhuma das cadeias da linguagem L2 que termina com o smbolo c possui suxo em L1,
uma vez que nenhuma das cadeias dessa linguagem termina com o smbolo c. Por outro lado,
todas as cadeias de L2 compostas apenas pelos smbolos a e b possuem como suxo em L1
as cadeias de mesmo formato, porm com uma quantidade menor ou igual de smbolos a (por
exemplo, aab L2 possui como suxo as cadeias b, ab, aab), resultando que o quociente
formado por cadeias com uma quantidade maior ou igual a zero de smbolos a (no exemplo,
aa, a, ).
L5/L2 = {}
L5 = {b, bc, bcc, bccc...}
L2 = {b, ab, bc, abc, aab, bcc, aabc, abcc, aabcc...}
No difcil perceber, neste caso, que para a cadeia b L5, b L2 o nico suxo da
mesma em L2 e, portanto, L5/L2. O mesmo raciocnio vale para a cadeia bc L5, e
assim por diante. Logo, o quociente corresponde linguagem formada pela nica cadeia .
2
Uma substituio uma funo que mapeia os elementos de um alfabeto
1
em
linguagens sobre um alfabeto
2
. Formalmente:
s :
1
2

2
Diz-se que uma substituio um homomorsmo se 2

2
contiver apenas um
elemento para cada
1
. Neste caso, costuma-se considerar os elementos do conjunto
imagem como simples cadeias e no como conjuntos compostos por um nico elemento:
h :
1

2
Assim, um homomorsmo uma funo que mapeia cada smbolo de um alfabeto

1
em uma cadeia nica contida em uma linguagem

2
.
Substituies permitem a especicao de transliteraes de linguagens, nas quais os
smbolos do alfabeto da linguagem original por cadeias de smbolos de um novo alfabeto.
O domnio de uma substituio pode ser estendido para

1
da seguinte forma:
s() =
s(a) = s(a)s(), a
1
,

1
Em outras palavras, uma substituio um mapeamento que preserva a ordem dos
componentes das sentenas. Assim, a substituio de uma linguagem L denida como:
s(L) = {y | y = s(x) para x L}
Exemplo 2.14 Considere-se a linguagem L = {a
i
b
i
c
i
| i 1} e a substituio s sobre = {x, y, z}:
s(a) = {x};
s(b) = {y, yy};
s(c) = {z, zz, zzz}.
A aplicao de s em L dene a linguagem s(L) = {x
i
y
j
z
k
| i 1, i j 2i , i k 3i }.
A ttulo de ilustrao, sero apresentadas a seguir todas as transliteraes possveis para a
cadeia abc obtidas atravs da substituio s acima denida:
s(abc) = {xyz, xyzz, xyzzz, xyyz, xyyzzz}
2 Conceitos Bsicos de Linguagens 41
Note-se que, neste exemplo, s(abc) = s(a)s(b)s(c), onde:
s(a) pode ser substitudo apenas por x
s(b) pode ser substitudo por y ou yy
s(c) pode ser substitudo por z, zz ou zzz
O conjunto s(abc) obtido a partir de todas as combinaes possveis de substituies para
os smbolos a, b e c na cadeia abc conforme s. 2
Exemplo 2.15 Considere-se agora a mesma linguagem L do Exemplo 2.14 e o homomorsmo h
sobre o respectivo alfabeto :
h(a) = x;
h(b) = x;
h(c) = z.
A linguagem denida por esse homomorsmo h(L) = {x
2i
z
i
| i 1}. 2
Nos casos em que h um homomorsmo, diz-se que h(L) a imagem homomr-
ca de L. A imagem homomrca inversa de uma cadeia y denida atravs de um
homomorsmo inverso h
1
:
h
1
(y) = {x | y = h(x)}
Observe-se que a imagem homomrca inversa de uma cadeia denida como um
conjunto de cadeias, e no como uma cadeia nica, uma vez que a funo h no
necessariamente injetora. A imagem homomrca inversa de uma linguagem L denida
como:
h
1
(L) = {x | h(x) L}
Exemplo 2.16 Ainda no Exemplo 2.3, a imagem homomrca inversa de h(L) pode ser denida
atravs do homomorsmo inverso h
1
:
h
1
(x) = {a, b};
h
1
(z) = {c}
Pelo fato de a funo h originalmente adotada no ser usualmente injetora, obtm-se:
h
1
(h(L)) = {(a | b)
2i
c
i
| i 1}
e, portanto, h
1
(h(L)) = L. 2
Um homomorsmo denominado isomorsmo sempre que a funo h for injetora.
Neste caso, h(L) denominada imagem isomrca de L. Isomorsmos viabilizam
a denio de imagens homomrcas inversas atravs de funes injetoras denomina-
das isomorsmos inversos. Neste caso, a linguagem h
1
(L) denominada imagem
isomrca inversa de L.
Exemplo 2.17 Considere-se a linguagem L1 = {a
i
b
i
| i 1} sobre o alfabeto 1 = {a, b} e o
isomorsmo j , denido sobre 2 = {c, d}:
j (a) = c;
j (b) = dd.
42 Linguagens Formais - Teoria, Modelagem e Implementao
Neste caso, a imagem isomrca de L1, ou seja, a linguagem L2, resultante da aplicao do
isomorsmo j sobre o alfabeto da linguagem L1, a seguinte:
L2 = {c
i
d
2i
| i 1}
A imagem isomrca inversa de L2, ou seja, a linguagem L1, pode ser obtida a partir do
isomorsmo inverso:
j
1
(c) = a;
j
1
(dd) = b.
Observe, neste caso, que j
1
(j (L1)) = L1. 2
Isomorsmos e isomorsmos inversos so muito teis, pois permitem mudar de
1
para
2
o domnio na resoluo de problemas, visando com isso facilitar a sua resoluo
no domnio
2
. Por se tratar de um mapeamento feito atravs de uma funo injetora,
torna-se sempre possvel retornar ao domnio original
1
, preservando-se a associao
unvoca entre os elementos dos domnios considerados.
Exemplo 2.18 Considere-se L = N e o isomorsmo j , sobre = {0, 1}:
j (0) = 0000
j (1) = 0001
j (2) = 0010
j (3) = 0011
j (4) = 0100
j (5) = 0101
j (6) = 0110
j (7) = 0111
j (8) = 1000
j (9) = 1001
j (L) mapeia os nmeros naturais na representao equivalente em BCD (Binary Coded Deci-
mal ). O isomorsmo inverso j
1
, abaixo, permite retornar ao domnio dos nmeros naturais:
j
1
(0000) = 0
j
1
(0001) = 1
j
1
(0010) = 2
j
1
(0011) = 3
j
1
(0100) = 4
j
1
(0101) = 5
j
1
(0110) = 6
j
1
(0111) = 7
2 Conceitos Bsicos de Linguagens 43
j
1
(1000) = 8
j
1
(1001) = 9
2
Conforme j mencionado, o conjunto

contm todas as possveis linguagens que


podem ser denidas sobre o alfabeto . Na prtica, as linguagens de interesse costumam
ser denidas como um subconjunto prprio de

, para um dado alfabeto .


Exemplo 2.19 Considere-se o alfabeto 1 = {n, (, ), +, , , /}. Uma linguagem L1, passvel de ser
denida sobre o alfabeto 1, e que corresponde a um subconjunto prprio de

1
, aquela em que as
cadeias se assemelham, do ponto vista estrutural, s cadeias que representam expresses aritmticas
bem-formadas em muitas linguagens populares de programao de alto nvel.
A seguir esto relacionadas algumas das cadeias que fazem parte de L1, de acordo com esse
critrio:
n
n+n
(n*n)
n*(n(n+n+n))
Portanto, L1 = {n, n + n, (n n), n (n(n + n + n)), ...}

1
. So exemplos de cadeias
pertencentes a

1
L1:
n++
nn*
(n*n)))
n*-(n(+n+/))

2
As linguagens de interesse prtico, como o caso das linguagens de programa-
o, normalmente correspondem a um subconjunto prprio do fechamento reexivo e
transitivo do alfabeto sobre o qual as suas cadeias so construdas. Assim, tornam-se
necessrios mtodos e notaes que permitam, dentro do conjunto fechamento, iden-
ticar as cadeias que efetivamente pertencem linguagem que estiver sendo denida,
descartando-se as demais.
Um outro aspecto importante, referente denio rigorosa das linguagens formais,
diz respeito ao fato de que, em sua maioria, as linguagens de interesse contm, se no
uma quantidade innita, ao menos um nmero nito, porm muito grande, de cadeias.
Por esses dois motivos, h um interesse muito grande em relao a mtodos que
permitam especicar linguagens, sejam elas nitas ou no, atravs de representaes
nitas. Por outro lado, nem todas as linguagens podem ser representadas por meio
de uma especicao nita. Apesar do reduzido interesse prtico que recai sobre tais
linguagens, possvel comprovar a existncia de linguagens para as quais impossvel se
obter uma representao nita.
Neste texto sero considerados trs mtodos dentre os mais empregados para a
representao nita de linguagens:
1. Gramticas: correspondem a especicaes nitas de dispositivos de gerao de
cadeias. Um dispositivo desse tipo deve ser capaz de gerar toda e qualquer cadeia
44 Linguagens Formais - Teoria, Modelagem e Implementao
pertencente linguagem denida pela gramtica, e nada mais. Assim, as cadeias
no pertencentes linguagem no devem poder ser geradas pela gramtica em
questo. Essa forma de especicao aplicvel para linguagens nitas e innitas.
2. Reconhecedores: correspondem a especicaes nitas de dispositivos de acei-
tao de cadeias. Um dispositivo desse tipo dever aceitar toda e qualquer ca-
deia pertencente linguagem por ele denido, e rejeitar todas as cadeias no-
pertencentes linguagem. O mtodo aplicvel para a especicao formal de
linguagens nitas e innitas.
3. Enumeraes: relacionam, de forma explcita e exaustiva, todas as cadeias per-
tencentes particular linguagem a ser especicada. Toda e qualquer cadeia per-
tencente linguagem deve constar desta relao. As cadeias no pertencentes
linguagem no fazem parte dessa relao. Aplicam-se apenas para a especicao
de linguagens nitas e preferencialmente no muito extensas.
Na prtica, as gramticas e os reconhecedores, alm de oferecerem uma grande
conciso na representao de linguagens de cardinalidade elevada, tambm podem ser
empregados na denio de linguagens innitas, ao contrrio das enumeraes. Em
contraste com o que ocorre com as enumeraes, as gramticas e os reconhecedores ge-
ralmente possibilitam uma percepo melhor da estrutura sinttica inerente s sentenas
das linguagens por eles denidas.
Diz-se que uma gramtica equivalente a um reconhecedor se as duas seguintes
condies forem simultaneamente vericadas (lembrar que os formalismos devem denir
todas as sentenas da linguagem desejada, e nenhuma outra cadeia):
1. Toda cadeia gerada pela gramtica tambm aceita pelo reconhecedor.
2. Toda cadeia aceita pelo reconhecedor tambm gerada pela gramtica.
Exemplo 2.20 Considerem-se a gramtica G e o reconhecedor M, respectivamente denidos atravs
das linguagens gerada e aceita:
G | L1(G) = { {a, b}

| o primeiro smbolo de a}
M | L2(M) = { {a, b}

| o primeiro smbolo de a e o ltimo smbolo b}


Portanto:
L1 = {a, aa, ab, aaa, aab, aba, abb, aaa...}
L2 = {ab, aab, abb, aaab, aabb, abab, abbb...}
fcil perceber que a condio (2) acima vericada, mas a condio (1) no. Por exemplo,
a cadeia ab L2 e ab L1. Por outro lado, a cadeia aba L1, porm aba L2. Logo, L1 L2 e
no se pode dizer que G e M sejam equivalentes. 2
Conforme discutido mais adiante, as gramticas e os reconhecedores so formas
duais de representao de linguagens, ou seja, para cada gramtica possvel obter um
reconhecedor que aceite a linguagem correspondente e vice-versa. particular notao
utilizada para representar uma linguagem, seja atravs de gramticas ou de reconhece-
dores, d-se o nome de metalinguagem.
As Sees 2.3 e 2.5 discutem mais detalhadamente os conceitos fundamentais e as
notaes gerais empregadas na formalizao e no estudo de gramticas e reconhecedores.
2 Conceitos Bsicos de Linguagens 45
A Seo 2.6 dedicada ao estudo da classicao de linguagens e gramticas, estabelecido
por Noam Chomsky, um dos primeiros estudiosos e formuladores da teoria das lingua-
gens formais. Nos captulos que seguem, os aspectos de equivalncia entre gramticas e
reconhecedores sero aprofundados, considerando cada classe particular de linguagens,
de acordo com essa classicao.
Para nalizar o presente item, deve-se mencionar que as linguagens apresentam
duas componentes bsicas: sintaxe e semntica. A sintaxe de uma linguagem refere-se
sua apresentao visual, forma, estrutura de suas cadeias, e no leva em considerao
qualquer informao sobre o signicado associado s mesmas. O signicado que se atribui
a uma cadeia, ou conjunto de cadeias de uma mesma linguagem, deriva do signicado que
se atribui s construes da linguagem, ou seja, decorre diretamente da sua semntica.
Sintaxe e semntica constituem tpicos que se complementam, sendo de muito in-
teresse e grande aplicao em computao. O presente texto trata, porm, apenas dos
aspectos referentes formalizao da estrutura das linguagens, bem como do estudo de
suas propriedades sintticas. Devido sua complexidade, muito maior que a da sintaxe,
o estudo da semntica formal das linguagens est bem menos desenvolvido. No entanto,
considerveis progressos tericos e prticos vm sendo obtidos nas duas ltimas dcadas
em semntica formal, congurando tema de estudos avanados na rea das linguagens
formais ([59], [30]). No entanto, o tema escapa ao escopo deste texto.
2.3 Gramticas
Tambm conhecidas como dispositivos generativos, dispositivos de sntese, ou
ainda dispositivos de gerao de cadeias, as gramticas constituem sistemas formais
baseados em regras de substituio, atravs dos quais possvel sintetizar, de forma
exaustiva, o conjunto das cadeias que compem uma determinada linguagem.
Para ilustrar esse conceito, nada melhor do que a prpria noo intuitiva, adquirida
poca do ensino fundamental, do signicado do termo gramtica: o livro atravs do
qual so aprendidas as regras que indicam como falar e escrever corretamente um idioma.
Como se sabe, as regras assim denidas especicam combinaes vlidas dos sm-
bolos que compem o alfabeto os diversos verbos, substantivos, adjetivos, advrbios,
pronomes, artigos etc. , e isso feito com o auxlio de entidades abstratas denomi-
nadas classes sintticas: sujeito, predicado etc. Assim, por exemplo, a frase O menino
atravessou a rua distraidamente considerada correta, do ponto de vista gramatical,
pois ela obedece a uma das inmeras regras de formao de frases, baseada no padro
sujeito + predicado + complemento.
De acordo com tais regras, um sujeito pode ser composto por um artigo (O) se-
guido de um substantivo (menino), o predicado pode conter um verbo (atravessou)
e um correspondente objeto direto (a rua), e o complemento pode modicar a ao
(distraidamente). O objeto direto, por sua vez, pode seguir o mesmo padro estru-
tural do sujeito: artigo (a) seguido de substantivo (rua).
Naturalmente, o conjunto das regras que formam uma gramtica deve ser suci-
ente para permitir a elaborao de qualquer frase ou discurso corretamente construdo
em um determinado idioma, e no deve permitir a construo de qualquer cadeia que
no pertena linguagem. Convm notar, no exemplo do pargrafo acima, que os termos
em itlico correspondem s denominadas classes sintticas do portugus, e os termos em
negrito, aos smbolos que efetivamente fazem parte do seu alfabeto.
Assim como ocorre no caso das linguagens naturais, as linguagens formais tambm
podem ser especicadas atravs de gramticas a elas associadas. No caso das gram-
46 Linguagens Formais - Teoria, Modelagem e Implementao
ticas das linguagens formais, que constituem o objeto deste estudo, a analogia com as
gramticas das linguagens naturais muito grande. Tratam-se, as primeiras, de con-
juntos de regras que, quando aplicadas de forma recorrente, possibilitam a gerao de
todas as cadeias pertencentes a uma determinada linguagem.
Diferentemente das gramticas das linguagens naturais, que so descritas por in-
termdio de linguagens tambm naturais (muitas vezes a mesma que est sendo descrita
pela gramtica), as gramticas das linguagens formais so descritas utilizando notaes
matemticas rigorosas que visam, entre outros objetivos, evitar dvidas na sua interpre-
tao. Tais notaes recebem a denominao de metalinguagens linguagens que so
empregadas para denir outras linguagens.
Formalmente, uma gramtica G pode ser denida como sendo uma qudrupla
2
:
G = (V, , P, S)
onde:
V o vocabulrio da gramtica; corresponde a um conjunto (nito e no-vazio)
de smbolos;
o conjunto (nito e no-vazio) dos smbolos terminais da gramtica; tambm
denominado alfabeto;
P o conjunto (nito e no-vazio) de produes ou regras de substituio da
gramtica;
S a raiz da gramtica, S V.
Adicionalmente, dene-se N = V como sendo o conjunto dos smbolos no-
terminais da gramtica. corresponde ao conjunto dos smbolos que podem ser justa-
postos para compor as sentenas da linguagem que se est denindo, e N corresponde ao
conjunto dos smbolos intermedirios (classes sintticas) utilizados na estruturao e na
gerao de sentenas, sem no entanto fazer parte das mesmas. , N e P so conjuntos
nitos e no-vazios. P o conjunto das produes gramaticais, que obedecem forma
geral:
, com V

NV

e V

Em outras palavras, uma cadeia qualquer constituda por elementos de V,


contendo pelo menos um smbolo no-terminal, e uma cadeia qualquer, eventualmente
vazia, de elementos de V.
De fato, uma relao sobre os conjuntos V

NV

e V

, uma vez que:


P = {(, ) | (, ) V

NV

}
ou seja, P um subconjunto de V

NV

.
Exemplo 2.21 Seja G1 = (V1, 1, P1, S), com:
2
Dependendo da preferncia dos autores, as gramticas podem ser denidas de outras maneiras, modicando-se
a ordem dos componentes, ou explicitando/implicitando determinados conceitos. Ao ler textos sobre este
assunto, importante vericar antes qual foi a notao adotada pelo autor, para que se possa interpret-la
corretamente.
2 Conceitos Bsicos de Linguagens 47
V1 = {0, 1, 2, 3, S, A}
1 = {0, 1, 2, 3}
N1 = {S, A}
P1 = {S 0S33, S A, A 12, A }
fcil vericar que G1 est formulada de acordo com as regras gerais acima enunciadas para
a especicao de gramticas. 2
Denomina-se forma sentencial qualquer cadeia obtida pela aplicao recorrente
das seguintes regras de substituio:
1. S (a raiz da gramtica) por denio uma forma sentencial;
2. Seja uma forma sentencial, com e cadeias quaisquer de terminais e/ou
no-terminais da gramtica, e seja uma produo da gramtica. Nessas
condies, a aplicao dessa produo forma sentencial, substituindo a ocorrncia
de por , produz uma nova forma sentencial .
Denota-se a substituio acima denida, tambm conhecida como derivao di-
reta, por:

G

O ndice G designa o fato de que a produo aplicada, no caso , pertence
ao conjunto de produes que dene a gramtica G. Nos casos em que a gramtica em
questo puder ser facilmente identicada, admite-se a eliminao de referncias explcitas
a ela. Note-se a distino grca e de signicado que se faz entre o smbolo empregado
na denotao das produes da gramtica () e o smbolo utilizado na denotao das
derivaes ().
Uma seqncia de zero ou mais derivaes diretas, como, por exemplo,
... chamada simplesmente derivao, e pode ser abreviada como

.
Derivaes em que ocorre a aplicao de pelo menos uma produo so denominadas
derivaes no-triviais, e so denotadas por
+
.
Se, pela aplicao de uma derivao no-trivial raiz S de uma gramtica, for
possvel obter uma cadeia w formada exclusivamente de smbolos terminais, diz-se que w,
alm de ser uma forma sentencial, tambm uma sentena, e denota-se a sua derivao
por:
S
+
w
Gramticas so sistemas formais baseados na substituio, em uma forma senten-
cial, de uma cadeia, coincidente com o lado esquerdo de uma regra de produo, pela
cadeia correspondente ao lado direito da mesma regra, visando com isso, ao nal de uma
seqncia de substituies, a obteno de uma cadeia sobre . O processo de substituio
tem incio sempre a partir da raiz S da gramtica, e nalizado assim que for obtida
uma forma sentencial isenta de smbolos no-terminais, isto , assim que se obtiver uma
sentena.
Exemplo 2.22 Considere-se a gramtica G1, denida no Exemplo 2.21.
S por denio uma forma sentencial;
0S33 uma forma sentencial, pois S 0S33;
S 0S33 uma derivao direta;
48 Linguagens Formais - Teoria, Modelagem e Implementao
00S3333 e 00A3333 so formas sentenciais, pois 0S33 00S3333 00A3333 atravs das
produes S 0S33 e S A, aplicadas nesta ordem;
S
+
00A3333 e S
+
0S33 so exemplos de derivaes no-triviais;
00S3333

00S3333 e 0S33 00A3333 so exemplos de derivaes;


12 e 00123333 so exemplos de sentenas, pois ambas so formadas exclusivamente por
smbolos terminais e S A 12, ou seja, S
+
12, e S 0S33 00S3333
00A3333 00123333, ou seja, S
+
00123333.
2
Ao conjunto de todas as sentenas w geradas por uma gramtica G d-se o nome
de linguagem denida pela gramtica G, ou simplesmente L(G). Formalmente,
L(G) = {w

| S
+
w}
Exemplo 2.23 Pela inspeo das produes da gramtica G1 do Exemplo 2.21, pode-se concluir
que:
L1(G1) = {0
m
1
n
2
n
3
2m
| m 0 e (n = 0 ou n = 1)}
So exemplos de sentenas pertencentes a L1 : , 12, 033, 01233, 003333, 00123333 etc. 2
Como se pode perceber, diferentes seqncias de produes aplicadas (nica)
raiz da gramtica possibilitam a gerao das diferentes (em geral, innitas) sentenas da
linguagem. Por outro lado, muitas vezes h mais de uma alternativa de substituio para
um mesmo trecho de uma forma sentencial, ou, ainda, pode haver mais de um trecho
em uma mesma forma sentencial que pode ser objeto de substituio pelo lado direito de
alguma produo. Assim, a identicao correta das sentenas de uma dada linguagem
deve ser feita levando-se em conta a possibilidade de ocorrncia de todos esses fatores
durante o processo de sntese de cadeias.
A completa identicao da linguagem gerada por uma determinada gramtica
uma tarefa que exige abstrao e alguma prtica na manipulao das produes. Algumas
gramticas, como o caso de G
1
, podem ser analisadas sem diculdade. Contudo, na
prtica, podem ocorrer gramticas consideravelmente mais complexas. Observe-se, a
ttulo de ilustrao, o caso da gramtica G
2
apresentada no Exemplo 2.24.
Exemplo 2.24 Considere G2 = (V2, 2, P2, S), com:
V2 = {a, b, c, S, B, C}
2 = {a, b, c}
P2 = {S aSBC, S abC, CB BC, bB bb, bC bc, cC cc}
Uma anlise mais profunda de G2 permite concluir que L2(G2) = {a
n
b
n
c
n
| n 1}. A
sentena aabbcc, por exemplo, derivada da seguinte forma nessa gramtica:
S aSBC aabCBC aabBCC aabbCC aabbbcC aabbcc
pela aplicao, respectivamente, das produes:
S aSBC, S abC, CB BC, bB bb, bC bc e cC cc
2
possvel denir uma mesma linguagem atravs de duas ou mais gramticas distin-
tas. Quando isso ocorre, diz-se que as gramticas que denem a linguagem em questo
so sintaticamente equivalentes ou, simplesmente, equivalentes uma outra.
2 Conceitos Bsicos de Linguagens 49
Exemplo 2.25 As gramticas G3 e G4 a seguir denidas so equivalentes:
G3 = ({a, b, S}, {a, b}, {S aS, S a, S bS, S b, S aSb}, S)
G4 = ({a, b, S, X}, {a, b}, {S XS, S X, X a, X b}, S)
Uma rpida anlise de G3 e G4 permite concluir que L3(G3) = L4(G4) = {a, b}
+
. 2
So muitas as notaes (metalinguagens) utilizadas na denio gramatical das lin-
guagens formais e de programao. Nos exemplos acima, bem como na maior parte do
presente texto, utiliza-se a notao algbrica. No entanto, diversas outras metalingua-
gens so largamente empregadas para representar dispositivos generativos. A escolha de
uma ou outra metalinguagem varia de acordo com o tipo da linguagem que estiver sendo
denida, com o uso que se pretenda fazer de tal representao formal e com as prprias
preferncias pessoais de quem a estiver elaborando.
exceo da notao algbrica, empregada para representar diversos tipos de lin-
guagens e utilizada com especial nfase no estudo terico das propriedades das linguagens
formais, outras notaes, como, por exemplo, as Expresses Regulares, o BNF (Backus-
Naur Form ou Notao de Backus-Naur), a Notao de Wirth (ou Expresses Regulares
Estendidas) e os Diagramas de Sintaxe (tambm conhecidos como Diagramas Ferro-
virios), so bastante populares e amplamente utilizadas na denio de linguagens de
programao de alto nvel.
2.4 Linguagens, Gramticas e Conjuntos
Linguagens so conjuntos. Conjuntos que formam linguagens so colees de cadeias
construdas sobre um alfabeto, por exemplo, atravs de gramticas. A m de explicitar e
facilitar o entendimento de linguagens vistas como conjuntos, conveniente considerar-
se uma coleo nita de linguagens distintas, todas innitas, denidas sobre um mesmo
alfabeto qualquer. Analisando-se as respectivas gramticas, sugere-se que o leitor procure
compreender de que modo as linguagens foram denidas e, principalmente, verique a
relao que existe entre elas.
interessante vericar: estas linguagens possuem elementos (sentenas) em co-
mum? Qual a sua interseco? Alguma dessas linguagens subconjunto de outra?
Superconjunto? Subconjunto prprio? So inmeras as possibilidades. O importante
desenvolver a percepo de que linguagens so conjuntos. Isso facilitar o estudo de
novas operaes sobre linguagens, e tambm de suas propriedades.
Exemplo 2.26 A gramtica G0 = ({a, b, S}, {a, b}, {S aS, S bS, S }, S) tal que
L0(G0) =

.
Substituindo a regra S pelas regras S a e S b, em G, obtm-se uma nova
gramtica G1 = ({a, b, S}, {a, b}, {S aS, S bS, S a, S b}, S), de tal forma que agora
L1(G1) =
+
.
A linguagem L2, formada por cadeias sobre = {a, b}, de tal modo que todas elas sejam
iniciadas pelo smbolo a, gerada pela gramtica G2 = ({a, b, S, X}, {a, b}, {S aX, X
aX, X bX, X }, S). So exemplos de cadeias pertencentes a L2 : a, abb, abaaa, aabbbba, aaa
etc.
Por outro lado, considere-se a linguagem L3, composta por cadeias sobre = {a, b}, de tal
forma que todas elas sejam iniciadas com o smbolo a e terminadas com o smbolo b. Uma possvel
gramtica que gera L3 G3 = ({a, b, S, X}, {a, b}, {S aX, X aX, X bX, X b}, S).
Perceba a sutil diferena que existe entre G2 e G3.
Em seguida, considere-se a linguagem L4 que compreende todas as cadeias sobre = {a, b}
que possuam exatamente dois smbolos b (nem mais, nem menos). So exemplos: bb, bab, abb,
aaaaabaab etc. L4 gerada pela gramtica G4 = ({a, b, S, X}, {a, b}, {S XbXbX, X
aX, X }, S).
50 Linguagens Formais - Teoria, Modelagem e Implementao
Finalmente, a linguagem L5 denida pelas cadeias sobre = {a, b}, de tal forma que todas
elas sejam iniciadas com o smbolo b e contenham um nico smbolo b. So exemplos b, ba, baa, baaa
etc. A linguagem L5 gerada por G5 = ({a, b, S, X}, {a, b}, {S bX, X aX, X }, S).
Esquematicamente, a relao entre as linguagens L0, L1, L2, L3, L4 e L5 pode ser observada
na Figura 2.5 ( bom ter em mente que linguagens so conjuntos).
Figura 2.5: As linguagens do Exemplo 2.26 como conjuntos
Observe-se a relao de incluso prpria entre as linguagens estudadas. A cadeia ilustra a
incluso prpria de L1 em L. A cadeia bbba, de L2 em L1. Atravs da cadeia abaa, exemplica-se a
incluso prpria de L3 em L2. Sobre L4 pode-se apenas dizer que est includa propriamente em L1.
A cadeia abb pertence simultaneamente s linguagens L0, L1, L2, L3 e L4. A cadeia abaabab
pertence a L0, L1, L2 e L3 apenas. A cadeia ababa, somente s linguagens L0, L1, L2 e L4, e assim
por diante.
Cumpre, novamente, notar que:
A maior linguagem que pode ser denida sobre {a, b} {a, b}

, que, neste caso, corresponde


a L0;
O conjunto de todas as linguagens que podem ser denidas sobre {a, b} dado por 2
{a,b}

.
Assim, L0, L1, L2, L3, L4 e L5 pertencem, todas, a 2
{a,b}

. Em outras palavras, cada uma


dessas linguagens um elemento de 2
{a,b}

, que por sua vez um conjunto innito.


2
2.5 Reconhecedores
Conhecidos tambm como dispositivos cognitivos, dispositivos de aceitao, acei-
tadores sintticos ou simplesmente autmatos, os reconhecedores so sistemas for-
mais capazes de aceitar todas as sentenas que pertenam a uma determinada linguagem,
rejeitando todas as demais. Por esse motivo, constituem uma forma alternativa s gra-
mticas para a representao nita de linguagens.
Diferentemente das gramticas, para as quais possvel denir e empregar uma
notao formal adequada para todas as classes de linguagens (notao algbrica vista
na Seo 2.3), os reconhecedores, ao contrrio, so mais convenientemente estudados
2 Conceitos Bsicos de Linguagens 51
se forem utilizadas notaes (metalinguagens) diversas, cada qual apropriada para a
correspondente classe de linguagens, de acordo com a classicao apresentada adiante,
na Seo 2.6.
No obstante, possvel estudar genericamente os reconhecedores do ponto de vista
conceitual, sem entrar nos pormenores de sua formalizao, uma vez que todos eles
constituem instncias de um modelo conceitual nico. Assim, no presente texto, os
aspectos de notao so considerados apenas no contexto do estudo de cada tipo de
linguagem, sem prejuzo para o entendimento do modelo geral a seguir apresentado.
Os reconhecedores esboados em sua forma geral na Figura 2.6 apresentam
quatro componentes fundamentais: uma memria (ta) contendo o texto de entrada do
reconhecedor, um cursor, que indica o prximo elemento da ta a ser processado, uma
mquina de estados nitos, sem memria, e uma memria auxiliar opcional.
Figura 2.6: Organizao de um reconhecedor genrico
A ta de entrada contm a cadeia a ser analisada pelo reconhecedor. Ela dividida
em clulas, e cada clula pode conter um nico smbolo da cadeia de entrada, pertencente
ao alfabeto de entrada escolhido para o reconhecedor. A cadeia de entrada disposta
da esquerda para a direita, sendo o seu primeiro smbolo colocado na posio mais
esquerda da ta.
Dependendo do tipo de reconhecedor considerado, a ta (ou o conjunto de tas) de
entrada pode apresentar comprimento nito ou innito. Neste ltimo caso, a ta pode
ter ou no limitao esquerda e/ou direita. A cadeia de entrada registrada na ta
de entrada pode estar delimitada por smbolos especiais, no pertencentes ao alfabeto de
entrada, sua esquerda e/ou sua direita, porm isso no obrigatrio.
A leitura dos smbolos gravados na ta de entrada feita atravs de um cabeote
de acesso, normalmente denominado cursor, o qual sempre aponta o prximo smbolo
da cadeia a ser processado. Os movimentos do cursor so controlados pela mquina
de estados, e podem, dependendo do tipo de reconhecedor, ser unidirecionais (podendo
deslocar-se para um lado apenas, tipicamente para a direita) ou bidirecionais (podendo
deslocar-se para a esquerda e para a direita). Determinados tipos de reconhecedores
utilizam o cursor no apenas para lerem os smbolos da ta de entrada, mas tambm
para escreverem sobre a ta, substituindo smbolos nela presentes por outros, de acordo
com comandos determinados pela mquina de estados.
A mquina de estados funciona como um controlador central do reconhecedor, e
contm uma coleo nita de estados, responsveis pelo registro de informaes colhidas
52 Linguagens Formais - Teoria, Modelagem e Implementao
no passado, mas consideradas relevantes para decises futuras, e transies, que pro-
movem as mudanas de estado da mquina em sincronismo com as operaes efetuadas
atravs do cursor sobre a ta de entrada. Alm disso, a mquina de estados nitos pode
utilizar uma memria auxiliar para armazenar e consultar outras informaes, tambm
coletadas ao longo do processamento, que sejam eventualmente necessrias ao completo
reconhecimento da cadeia de entrada.
A memria auxiliar opcional, e torna-se necessria apenas em reconhecedores de
linguagens que apresentam uma certa complexidade. Normalmente, ela assume a forma
de uma estrutura de dados de baixa complexidade, como, por exemplo, uma pilha (no
caso do reconhecimento de linguagens livres de contexto). As informaes registradas na
memria auxiliar so codicadas com base em um alfabeto de memria, e todas as
operaes de manipulao da memria auxiliar (leitura e escrita) fazem referncia apenas
aos smbolos que compem esse alfabeto. Os elementos dessa memria so referenciados
atravs de um cursor auxiliar que, eventualmente, poder coincidir com o prprio
cursor da ta de entrada. Seu tamanho no obrigatoriamente limitado e, por denio,
seu contedo pode ser consultado e modicado.
O diagrama abaixo resume os componentes de um reconhecedor genrico e as di-
versas formas como cada um deles pode se apresentar:
Reconhecedor
_

_
Mquina de Estados
_
Finita
Fita de entrada + Cursor
_
_
_
Limitada / No limitada
Leitura apenas / Leitura e escrita
Direita apenas / Direita e esquerda
Memria auxiliar + Cursor
_
No limitada
Leitura e escrita
A operao de um reconhecedor baseia-se em uma seqncia de movimentos que
o conduzem, de uma congurao inicial nica, para alguma congurao de parada,
indicativa do sucesso ou do fracasso da tentativa de reconhecimento da cadeia de entrada.
Cada congurao de um autmato caracterizada pela qudrupla:
1. Estado;
2. Contedo da ta de entrada;
3. Posio do cursor;
4. Contedo da memria auxiliar.
A congurao inicial de um autmato denida como sendo aquela em que as
seguintes condies so vericadas:
1. Estado: inicial, nico para cada reconhecedor;
2. Contedo da ta de entrada: com a cadeia completa a ser analisada;
3. Posio do cursor: apontando para o smbolo mais esquerda da cadeia;
4. Contedo da memria auxiliar: inicial, pr-denido e nico.
2 Conceitos Bsicos de Linguagens 53
A congurao nal de um autmato aquela na qual as seguintes condies so
obedecidas:
1. Estado: algum dos estados nais, que no so necessariamente nicos no reconhe-
cedor;
2. Contedo da ta de entrada: inalterado ou alterado, em relao congurao
inicial, conforme o tipo de reconhecedor;
3. Posio do cursor: apontando para a direita do ltimo smbolo da cadeia de entrada
ou apontando para qualquer posio da ta, conforme o tipo de reconhecedor;
4. Contedo da memria auxiliar: nal e pr-denido, no necessariamente nico ou
idntico ao da congurao inicial, ou apenas indenido.
A especicao de uma possibilidade de movimentao entre uma congurao e
outra denominada transio. A movimentao do autmato da congurao corrente
para uma congurao seguinte feita, portanto, levando-se em conta todas as transies
passveis de serem aplicadas pelo reconhecedor congurao corrente. Uma transio
mapeia triplas formadas por:
Estado corrente;
Smbolo correntemente apontado pelo cursor da ta de entrada;
Smbolo correntemente apontado pelo cursor da memria auxiliar;
em triplas formadas por:
Prximo estado;
Smbolo que substituir o smbolo correntemente apontado pelo cursor da ta de
entrada e o sentido do deslocamento do cursor;
Smbolo que substituir o smbolo correntemente apontado pelo cursor da memria
auxiliar.
A identicao das transies passveis de serem aplicadas a uma determinada con-
gurao determinada pela mquina de estados. Ela tambm responsvel, na ocasio
da aplicao de uma transio, pelo deslocamento do cursor, acompanhado de uma even-
tual substituio do smbolo lido na ta de entrada, e tambm pela eventual modicao
do contedo da memria auxiliar.
No se devem confundir os conceitos de movimentao e de transio, uma vez
que o simples fato de o autmato exibir vrias transies que sejam aplicveis a uma
dada congurao no implica que haja obrigatoriamente mais de uma possibilidade de
movimentao em tal congurao.
Essa multiplicidade de possibilidades ocorrer apenas se houver mais de uma tran-
sio, associada ao mesmo estado, que faa referncia ao mesmo smbolo de entrada e
ao mesmo contedo da memria auxiliar. Transies em vazio, ou seja, transies
que permitem a movimentao do autmato sem levar em conta os smbolos da cadeia
54 Linguagens Formais - Teoria, Modelagem e Implementao
de entrada, tambm constituem possibilidades adicionais de movimentao se estiverem
associadas a outras transies (vazias ou no-vazias) em uma mesma congurao.
Diz-se que um autmato aceita (ou reconhece) uma cadeia se lhe for possvel atingir
alguma congurao nal a partir de sua congurao inicial nica, atravs de movimen-
tos executados sobre tal cadeia. Caso contrrio, diz-se que o autmato rejeita a cadeia.
A maneira como tais conguraes sucedem umas s outras durante o reconhecimento (ou
aceitao) da cadeia de entrada dene uma caracterstica fundamental dos autmatos,
conforme explicado a seguir.
possvel que ocorram, durante o reconhecimento de uma cadeia de entrada, con-
guraes para as quais se apresentem nenhuma, apenas uma ou eventualmente diversas
possibilidades distintas de movimentao.
No caso de haver uma nica possibilidade de movimentao, diz-se que a transio
efetuada determinstica, dado que no existem outras opes de evoluo para o aut-
mato em tal congurao. Quando todos os movimentos passveis de serem executados
por um autmato forem movimentos determinsticos, independentemente de qual seja a
cadeia de entrada, e s neste caso, diz-se que o autmato determinstico.
No caso de haver mais de uma alternativa de movimentao em uma ou mais con-
guraes do autmato (independentemente da cadeia de entrada), todas as possibilidades
devem ser consideradas legtimas, e o autmato dever optar, sucessiva e aleatoriamente,
por todas as alternativas apresentadas, uma de cada vez, at que uma das duas seguintes
condies seja satisfeita:
1. Uma congurao nal seja atingida, ou
2. Esgotadas todas as possibilidades, nenhuma congurao nal possa ser atingida.
Um autmato com tal caracterstica denominado no-determinstico. Uma
cadeia de entrada aceita por ele se pelo menos uma das mltiplas seqncias de movi-
mentaes realizadas pelo autmato for capaz de conduzi-lo a alguma congurao nal,
partindo de sua congurao inicial nica. Diz-se que o autmato rejeita a cadeia de
entrada quando, esgotadas todas as seqncias de movimentao possveis, o mesmo no
puder atingir uma congurao nal qualquer.
Do ponto de vista conceitual, o no-determinismo de um autmato pode ser enten-
dido a partir do modelo de paralelismo que inerente sua operao. De acordo com
esse modelo, sempre que o autmato se depara com mais de uma possibilidade de movi-
mentao, considera-se que mltiplas instncias do mesmo so criadas (em nmero igual
quantidade de movimentaes distintas previstas pela funo de transio, a partir da
congurao corrente), cada qual herdando da instncia anterior a congurao corrente
do autmato (estado, situao da cadeia de entrada e situao da memria auxiliar),
porm evoluindo para conguraes distintas. Dessa forma, todas as possibilidades so
consideradas.
Fazendo-se uma analogia com o modelo de implementao baseado em programao,
o modelo paralelo de operao corresponde criao de mltiplos threads de execuo,
cada qual sendo responsvel pela vericao de uma seqncia possvel de movimentaes.
Autmatos determinsticos, por um lado, podem ser facilmente abstrados a partir do
modelo seqencial, no-paralelo de computao, uma vez que no existe a necessidade
de se considerarem vrios threads. Por outro lado, como se pode intuir, a criao
de modelos de execuo para autmatos no-determinsticos em mquinas estritamente
seqenciais no direta, requerendo do programador e/ou do ambiente de execuo
artifcios que viabilizem o modelo paralelo de computao.
2 Conceitos Bsicos de Linguagens 55
Quando no h alternativas de movimentao a partir da congurao corrente do
autmato, constata-se um impasse, caracterizando a impossibilidade de prosseguimento
da operao de reconhecimento. Se o autmato for determinstico, isso ser interpretado
como sucesso do reconhecimento se e apenas se for atingida alguma congurao de acei-
tao (congurao nal), sendo constatado um fracasso na operao de reconhecimento
nos demais casos.
Caso o autmato seja do tipo no-determinstico, tal impasse indicar apenas que a
particular seqncia de movimentaes em andamento (thread) no conduziu ao reco-
nhecimento da sentena. Diz-se que a cadeia aceita por um autmato no-determinstico
se pelo menos um thread for capaz de conduzi-lo at impasse em uma congurao nal.
Caso todas as seqncias (threads) conduzam a impasses em conguraes no-nais,
diz-se que o autmato rejeita a cadeia de entrada.
Seja o autmato determinstico ou no-determinstico, a linguagem por ele aceita
(ou denida) corresponde ao conjunto de todas as cadeias que ele aceita.
Do ponto de vista prtico, existe um interesse muito maior nos autmatos deter-
minsticos, visto que sua operao no exige repetidas pesquisas exaustivas em rvores
de alternativas. Tal fato possibilita a construo de autmatos ecientes, constituindo
uma opo muito atraente para vrias aplicaes, como o caso do projeto da lgica de
controladores nitos, ou de compiladores para linguagens de programao de alto nvel.
Os conceitos acima apresentados podem ser formalizados representando-se os reco-
nhecedores como dispositivos cujas conguraes so denidas como elementos do pro-
duto cartesiano:
Q (

onde:
Q o conjunto de estados do controle nito;
o alfabeto de entrada do reconhecedor;
o alfabeto de sua memria auxiliar.
Dessa forma, as conguraes de um reconhecedor genrico podem ser represen-
tadas como triplas (q, (, ), ), onde q Q, (, )

.
Para cada congurao assim representada, o termo q designa o estado especco
assumido pela mquina de estados, o termo representa o contedo completo da memria
auxiliar, e o par ordenado (, ) indica ao mesmo tempo o contedo completo da ta de
entrada e a posio do cursor sobre a mesma, da seguinte forma:
representa o contedo da ta esquerda do cursor;
representa o contedo da ta direita do cursor, incluindo o smbolo apontado
pelo cursor, na congurao considerada.
Interpreta-se como a parte da ta j analisada pelo reconhecedor, e a parte
ainda a analisar.
Assim, por exemplo, se = , com e

, ento o smbolo apontado


pelo cursor nessa congurao, e corresponde cadeia situada sua direita.
As transies de um reconhecedor podem ser representadas como funes totais
que mapeiam conguraes correntes em novas conguraes:
: Q (

2
Q(

56 Linguagens Formais - Teoria, Modelagem e Implementao


Como normalmente o cursor permite o acesso a apenas um smbolo da ta de entrada
de cada vez (aquele apontado pelo cursor em cada congurao), a funo costuma ser
simplicada para:
: Q ( {})

2
Q(

Alm disso, usual que a consulta ao contedo da memria auxiliar seja feita
levando-se em considerao apenas um smbolo do alfabeto de cada vez (o critrio de
escolha do smbolo a ser consultado depende do tipo de autmato e da forma como a
memria auxiliar est organizada). Assim, a funo sofre uma nova simplicao:
: Q ( {}) 2
Q(

Ainda por uma questo de praticidade, em vez de se especicar os elementos de

que devero substituir integralmente a cadeia de entrada e o contedo


da memria auxiliar aps a execuo da respectiva transio pelo autmato, costuma-se
especicar apenas o efeito que tal transio produz sobre a congurao corrente.
No caso da cadeia de entrada, especica-se apenas o novo smbolo que substituir
o smbolo recm-lido, bem como o sentido de deslocamento do cursor (para a esquerda
ou para a direita) aps ser efetuada essa substituio. No caso da memria auxiliar,
especica-se uma cadeia, que dever substituir o smbolo consultado pela transio exe-
cutada. Para tanto, a funo assume a sua nova e denitiva forma:
: Q ( {}) 2
Q(({}){E,D,})

{E, D, } um conjunto cujos elementos indicam as possibilidades de sentido de


deslocamento do cursor aps a consulta do smbolo corrente na cadeia de entrada pelo
autmato. E indica deslocamento para a esquerda, D para a direita e ausncia de
movimento do cursor.
A funo de transio especica um conjunto de possibilidades de movimentao,
podendo, em cada uma, produzir os seguintes efeitos sobre a congurao corrente do
autmato:
1. Mudana no estado corrente de q
i
para q
j
com q
i
, q
j
Q;
2. Alterao da cadeia de entrada a partir da consulta do smbolo corrente
1
e
de sua subseqente substituio por um novo elemento
2
;
3. Eventual modicao da cadeia de entrada sem que haja consulta do smbolo
corrente (caso {} no domnio de ); por outro lado, tambm possvel que no
haja modicao da cadeia de entrada como resultado da aplicao da transio
(caso {} no contradomnio de );
4. Eventual deslocamento do cursor da ta de entrada para a direita ou para a es-
querda, aps a aplicao da transio; no caso em {E, D, }, o cursor permanece
na posio original, sem se deslocar;
5. Alterao do contedo da memria auxiliar, a partir da consulta de um smbolo

1
e de sua subseqente substituio por uma cadeia
2

;
6. Deslocamento do cursor da memria auxiliar, de forma compatvel com a maneira
como a mesma estiver estruturada. Exemplo: tipicamente, para memria auxiliar
2 Conceitos Bsicos de Linguagens 57
estruturada como pilha, o cursor se move de forma compatvel com as operaes
de movimentao das pilhas, ou seja, realizando operaes de push e pop.
Note, adicionalmente, que:
7. possvel associar uma mesma congurao corrente a mais de uma nova con-
gurao seguinte (uma possvel forma de no-determinismo);
8. possvel haver conguraes tais que () = . Trata-se de conguraes
para as quais no foram denidas possibilidades de movimentao (nessas con-
guraes o reconhecedor pra por falta de opes para prosseguir as operaes de
reconhecimento).
A operao de movimentao de um reconhecedor, de uma dada congurao para
a congurao seguinte, por meio da aplicao de uma transio, denotada atravs do
smbolo :
: Q (

Q (

Denota-se uma determinada movimentao do reconhecedor como:


(q
i
, (, ), ) (q
j
, (, ), )
O smbolo denota, portanto, uma relao binria sobre o conjunto das congu-
raes Q (

de cada autmato.
Exemplo 2.27 Considere-se o seguinte autmato, parcialmente denido:
Q = {q0, q1}; = {0, 1}; = {A, B}, com:
1. (q0, 0, A) = {(q1, (0, D), AA)}
2. (q0, 0, B) = {(q1, (0, D), )}
3. (q1, , A) = {(q1, (0, D), BA)}
4. (q1, 1, B) = {(q1, (1, E), AB)}
5. (q1, 0, A) = {(q0, (0, E), B)}
Supondo que a cadeia de entrada seja 0110, que o contedo corrente da memria auxiliar seja
A e que o cursor de leitura esteja apontando para o smbolo mais esquerda da cadeia de entrada,
a seguinte seqncia de movimentos poderia fazer parte do reconhecimento de tal cadeia:
(q0, (, 0110), A)
(q1, (0, 110), AA)
(q1, (00, 10), BAA)
(q1, (0, 010), ABAA)
(q0, (, 0010), BBAA)
(q1, (0, 010), BAA)
Tais movimentos correspondem, respectivamente, aplicao das transies 1, 3, 4, 5 e 2,
nesta ordem.
Naturalmente, outros movimentos poderiam ter sido executados partindo-se da mesma con-
gurao inicial. Por exemplo, a transio 5 poderia ter sido executada na congurao em que se
faz uso da transio 3 e vice-versa. Neste caso, uma nova seqncia de movimentaes seria obtida,
correspondendo aplicao das transies 1, 5, 2, 3 e 4, nesta ordem:
58 Linguagens Formais - Teoria, Modelagem e Implementao
(q0, (, 0110), A)
(q1, (0, 110), AA)
(q0, (, 0110), BA)
(q1, (0, 110), A)
(q1, (00, 10), BA)
(q1, (0, 010), ABA)
2
Um reconhecedor considerado no-determinstico se e apenas se pelo menos uma
das condies abaixo, referentes denio da funo , for vericada. Caso contrrio,
ele ser determinstico:
q Q, , tal que |(q, , )| 2;
q Q, tal que |(q, , )| 2;
q Q, , tal que, simultaneamente, |(q, , )| 1 e |(q, , )| 1.
A vericao de qualquer das condies acima implica a necessidade de o reconhe-
cedor optar, a partir de uma dada congurao corrente, por uma dentre uma coleo de
novas conguraes possveis, caracterizando dessa maneira o no-determinismo de sua
operao.
No primeiro caso, o no-determinismo identicado pela existncia de mais de
uma possibilidade de movimentao a partir de uma dada congurao corrente, possi-
bilidades estas que so expressas em termos das indicaes de um estado corrente, de
um smbolo do alfabeto de entrada e de um smbolo da memria auxiliar; no segundo
caso, pela existncia de mais de uma possibilidade de movimentao a partir de uma
dada congurao corrente, possibilidades estas expressas apenas em funo do estado
corrente e do smbolo do alfabeto da memria auxiliar (sem referncias ao alfabeto de
entrada); nalmente, no terceiro caso, pela coexistncia, em um dada congurao cor-
rente, de possibilidades de movimentao com ou sem referncias a smbolos do alfabeto
de entrada (pelo menos uma de cada tipo).
Note-se, portanto, que uma transio (ou especicao de uma possibilidade de mo-
vimentao) possui carter esttico, ou seja, ela est associada a uma descrio esttica
do comportamento de um reconhecedor. Transies descrevem movimentaes potenci-
ais, as quais s se concretizam, durante a operao do reconhecedor, ao serem habilitadas
pelas conguraes assumidas pelo mesmo.
Por outro lado, as movimentaes possuem um carter dinmico e so conseqncias
diretas da aplicao de transies sobre as conguraes sucessivamente assumidas pelo
reconhecedor. Observado por esse prisma, um reconhecedor pode ser considerado no-
determinstico se exibir pelo menos uma congurao que possa evoluir, conforme as
especicaes de suas transies, para mais de uma possvel congurao. Caso contrrio,
ele ser dito determinstico.
Exemplo 2.28 Considere-se um reconhecedor cuja congurao corrente seja:
(q1, (, 1 ), 1), q1 Q, 1 , ,

, 1 ,

2 Conceitos Bsicos de Linguagens 59


1 e 1 correspondem, respectivamente, aos smbolos correntemente referenciados pelos cur-
sores da ta de entrada e da memria auxiliar. Seja uma funo que especique, entre outras, a
seguinte transio:
(q1, 1, 1) = {(q2, (2, D), 2)}, 2

, 2

Suponha-se, ainda, que esta seja a nica transio aplicvel congurao corrente. Neste
caso, a movimentao do reconhecedor da congurao corrente para a seguinte, pela aplicao
dessa transio, determinstica e representada por:
1. (q1, (, 1 ), 1) (q2, (2, ), 2)
Suponha-se, agora, a funo de transio modicada como segue:
(q1, 1, 1) = {(q2, (2, D), 2), (q3, (3, D), 3)}
Nesta situao, haveria no apenas uma, mas duas movimentaes possveis a partir da con-
gurao corrente:
1. (q1, (, 1 ), 1) (q2, (2, ), 2), ou
2. (q1, (, 1 ), 1) (q3, (3, ), 3)
Isso basta, neste exemplo, para constatar o carter no-determinstico desse reconhecedor.
Finalmente, suponha-se que a funo seja novamente modicada, incorporando, em adio
denio anterior, o elemento:
(q1, , 1) = {(q4, (, ), 4)}
Isso caracteriza a coexistncia de uma transio em vazio com duas transies no-vazias,
todas aplicveis a uma mesma congurao. Como conseqncia, a quantidade de alternativas de
movimentao do reconhecedor, na congurao original, cresceria de duas para trs:
1. (q1, (, 1 ), 1) (q2, (2, ), 2)
2. (q1, (, 1 ), 1) (q3, (3, ), 3)
3. (q1, (, 1 ), 1) (q4, (, 1 ), 4)
2
Reconhecedores determinsticos costumam ter suas transies denidas atravs de
uma verso simplicada e particularizada da funo genrica, visando com isso expli-
citar a associao unvoca entre cada uma de suas conguraes com uma nica con-
gurao seguinte, conforme mostrado a seguir:
: Q ( {}) Q ( {E, D})

Transies em vazio, em reconhecedores determinsticos, so admitidas apenas em


conguraes para as quais no existam outras possibilidades de movimentao, vazias
ou no-vazias, visando, dessa maneira, preservar o carter determinstico da escolha da
transio a ser aplicada.
A congurao inicial de um reconhecedor costuma ser expressa como:
(q
0
, (, w),
0
)
q
0
Q o estado inicial;
w

a cadeia de entrada a ser analisada;



0

o contedo inicial da memria auxiliar;


60 Linguagens Formais - Teoria, Modelagem e Implementao
Denindo-se Q
F
Q como sendo o conjunto dos estados nais do reconhecedor, e

como o conjunto dos contedos possveis da memria auxiliar, convencionados


como sendo nais, as conguraes nais de um reconhecedor podem ser caracterizadas
como:
(q
F
, (, ),
F
)
q
F
Q
F

F

F
Em particular, para os reconhecedores estudados nos Captulos 3 e 4, = w e
= , ou seja, a cadeia de entrada deve necessariamente ser esgotada e a cadeia
de entrada deve permanecer inalterada. Para os reconhecedores dos Captulos 5,
6 e 7, e so quaisquer, indicando com isso que o cursor pode ser deixado em
qualquer posio da ta e, tambm, que o contedo original da mesma no precisa
ser necessariamente preservado ao trmino do processamento.
A linguagem L aceita por um reconhecedor M, denida como o conjunto de cadeias
capaz de moviment-lo desde a sua congurao inicial at alguma congurao nal,
pode, portanto, ser denida formalmente como:
L(M) = {w

| (q
0
, (, w),
0
)

(q
F
, (, ),
F
)}
Note-se que

denota novamente o fechamento reexivo e transitivo da relao


, ou seja, a movimentao do reconhecedor ao longo de zero ou mais conguraes
sucessivas.
O modelo genrico de reconhecedor apresentado nesta seo adequado para as
especializaes que so discutidas nos captulos seguintes, conforme a classe de lingua-
gens que se esteja considerando. Tais reconhecedores especializados so utilizados no
desenvolvimento terico da matria, incluindo a demonstrao de teoremas e tambm de
diversas propriedades importantes para cada uma dessas classes de linguagens.
Quando, no entanto, se consideram modelos de implementao para tais reconhe-
cedores, em particular quando se trata de modelos de simulao por software, muitas
vezes conveniente acrescentar sua especicao extenses que costumam facilitar a
realizao de tais modelos.
Entre as extenses mais comuns, usual encontrar-se a insero de delimitadores
especiais em torno da cadeia de entrada (smbolos BOF e EOF, begin-of-le e end-
of-le, respectivamente indicativos de incio e m da cadeia de entrada), e tambm
o desmembramento da caracterizao da congurao do reconhecedor em termos da
caracterizao da congurao de cada uma das suas partes (da mquina de estados, da
cadeia de entrada e da memria auxiliar).
Tais extenses no apresentam qualquer prejuzo ao modelo ou aos resultados te-
ricos apresentados, e constituem, como mencionado, mera convenincia de representao
conforme a tecnologia de implementao adotada.
No caso particular da classe de reconhecedores estudados nos Captulos 5, 6 e 7,
o modelo terico (Mquina de Turing) tambm faz uso dos delimitadores BOF e EOF.
Nesses casos, a denio de congurao inicial estabelece que o cursor de acesso deve
apontar inicialmente para o smbolo imediatamente direita do BOF, smbolo esse que,
por isso, corresponde ao segundo smbolo da cadeia de entrada (da esquerda para a
direita) e ao primeiro smbolo a ser analisado de fato.
2 Conceitos Bsicos de Linguagens 61
2.6 Hierarquia de Chomsky
O estudo sistemtico das linguagens formais teve um forte impulso no nal da dcada de
1950, quando o lingista Noam Chomsky publicou dois artigos ([61] e [62]) apresentando o
resultado de suas pesquisas relativas classicao hierrquica das linguagens. At ento,
a teoria dos autmatos se apresentava razoavelmente evoluda, porm a das linguagens
formais ainda no se havia, de fato, estabelecido como disciplina.
A partir da publicao dos referidos artigos, houve uma signicativa concentrao
de pesquisas na rea das linguagens formais, e a teoria resultante, juntamente com a
teoria dos autmatos, teve a oportunidade de se consolidar denitivamente, a partir do
nal da dcada de 1960, como uma disciplina coesa e fundamental para as reas de
engenharia e de cincia da computao.
Como terico e estudioso das linguagens naturais, Chomsky se dedicava pesquisa
de modelos que permitissem a formalizao de tais linguagens. Ainda hoje esse objetivo
parece um tanto ambicioso, porm o trabalho de Chomsky logo chamou a ateno de
especialistas de outras reas, em particular os da rea de computao, que viam, para suas
teorias, grande aplicabilidade para a formalizao e o estudo sistemtico de linguagens
articiais, especialmente as de programao.
A prtica conrmou a intuio dos especialistas. A classicao das linguagens, por
ele proposta, conhecida como Hierarquia de Chomsky, tem como principal mrito
agrupar as linguagens em classes, de tal forma que elas possam ser hierarquizadas de
acordo com a sua complexidade relativa. Como resultado, possvel antecipar as pro-
priedades fundamentais exibidas por uma determinada linguagem, ou mesmo vislumbrar
os modelos de implementao mais adequados sua realizao, conforme a classe a que
pertena.
Assim, o interesse prtico pela Hierarquia de Chomsky se deve especialmente ao
fato de ela viabilizar a escolha da forma mais econmica para a realizao dos reconhe-
cedores das linguagens, de acordo com a classe a que elas pertenam nessa hierarquia,
evitando-se, portanto, o uso de formalismos mais complexos que o necessrio, e o emprego
de reconhecedores desnecessariamente inecientes para as linguagens de menor comple-
xidade. De um ponto de vista estritamente de engenharia, a Hierarquia de Chomsky
permite determinar e selecionar o modelo de implementao (no que diz respeito apenas
ao reconhecedor sinttico) de menor custo para cada linguagem considerada.
A Hierarquia de Chomsky dene quatro classes distintas de linguagens, denomina-
das tipos 0, 1, 2 e 3, as quais so geradas por gramticas particularizadas em relao ao
caso geral anteriormente apresentado, por intermdio de restries que so aplicadas ao
formato das produes .
D-se o nome de gramtica linear direita quela cujas produes obedeam
todas s seguintes condies:
N
, N, N, ou = , de forma no exclusiva.
Exemplo 2.29 A gramtica G1 = ({0, 1, 2, 3, S, A}, {0, 1, 2, 3}, {S 0S, S 1S, S A, A
2, A 3}, S) linear direita. 2
Gramtica linear esquerda aquela em que todas as produes exibem as
seguintes caractersticas:
N
62 Linguagens Formais - Teoria, Modelagem e Implementao
, N, N, ou = , de forma no exclusiva.
Exemplo 2.30 A gramtica G2 = ({0, 1, 2, 3, S, A}, {0, 1, 2, 3}, {S S2, S S3, S A, A
1, A 0}, S) linear esquerda. 2
Gramticas lineares, esquerda ou direita, tambm conhecidas como gramticas
do tipo 3, geram linguagens denominadas regulares, ou simplesmente do tipo 3. As
linguagens regulares constituem a classe de linguagens mais simples dentro da Hierar-
quia de Chomsky, a qual prossegue com linguagens de complexidade crescente at as
linguagens mais gerais, do tipo 0.
Uma gramtica dita livre de contexto, ou do tipo 2, se as suas produes
possurem apenas um smbolo no-terminal em seu lado esquerdo, e uma combinao
qualquer de smbolos terminais e no-terminais no lado direito. Gramticas desse tipo
geram linguagens denominadas livres de contexto, ou do tipo 2. Formalmente:
N
V

Exemplo 2.31 A gramtica G3 = ({0, 1, S}, {0, 1}, {S 0S1, S }, S) livre de contexto. 2
Deve-se notar que toda gramtica do tipo 3 tambm se enquadra na denio de
gramtica do tipo 2, constituindo caso particular deste ltimo. Logo, correto dizer que
toda gramtica do tipo 3 tambm uma gramtica do tipo 2. Por outro lado, nem toda
gramtica do tipo 2 pode ser caracterizada tambm como gramtica do tipo 3. Existe,
portanto, uma relao de incluso prpria entre o conjunto das gramticas do tipo 3 e o
conjunto das gramticas do tipo 2.
Exemplo 2.32 As gramticas G1 e G2 so simultaneamente lineares e livres de contexto. A gramtica
G3 livre de contexto porm no regular. 2
Conseqentemente, correto dizer que todas as linguagens do tipo 3 (aquelas ge-
radas por gramticas do tipo 3) tambm so do tipo 2, uma vez que as gramticas do
tipo 3 so, por denio, do tipo 2. Na prtica, no entanto, costuma-se designar o tipo
de uma linguagem conforme o tipo da gramtica mais simples que a gera. Conforme
discutido nos captulos seguintes, nem toda linguagem do tipo 2 pode ser caracterizada,
inversamente, como sendo do tipo 3. Isso signica que existem linguagens do tipo 2 para
as quais no possvel obter uma gramtica do tipo 3. Logo, as linguagens do tipo 3
constituem um subconjunto prprio das linguagens do tipo 2.
As gramticas do tipo 1, tambm conhecidas como sensveis ao contexto, cons-
tituem a classe seguinte de gramticas, na Hierarquia de Chomsky. A caracterizao das
gramticas sensveis ao contexto decorre da restrio, imposta ao formato das produes,
de que o comprimento da cadeia do lado direito de cada produo seja no mnimo igual
ao comprimento da cadeia do lado esquerdo, no havendo, portanto, possibilidade de
reduo do comprimento das formas sentenciais quando da realizao de derivaes em
gramticas deste tipo:
V

NV

|| ||
2 Conceitos Bsicos de Linguagens 63
Note-se que a denio de gramticas sensveis ao contexto no permite, a priori,
que as respectivas linguagens por elas geradas incluam a cadeia vazia, justamente devido
ao fato de que || ||. No entanto, comum (ver [49]) se considerar L uma linguagem
sensvel ao contexto, ou simplesmente do tipo 1, mesmo que L, se L {} puder
ser gerada por uma gramtica sensvel ao contexto. Em outras palavras, linguagens
sensveis ao contexto so aquelas que so geradas por gramticas sensveis ao contexto,
com a eventual incorporao da cadeia vazia.
Exemplo 2.33 A gramtica G4 = ({a, b, c, S, X, Y}, {a, b, c}, {S aXb, S aXa, Xa
bc, Xb cb}, S) sensvel ao contexto. 2
Nem toda gramtica do tipo 2 pode ser considerada uma gramtica do tipo 1. De
fato, gramticas do tipo 2 permitem a gerao da cadeia vazia, ao passo que gramticas
do tipo 1 no prevem essa possibilidade. Nem toda gramtica do tipo 1, no entanto,
pode ser considerada uma gramtica do tipo 2. Em particular, aquelas que apresentam
produes cujo lado esquerdo seja composto por cadeias de dois ou mais smbolos.
Exemplo 2.34 As gramticas lineares G1 e G2 so tambm sensveis ao contexto. A gramtica livre
de contexto G3, no entanto, no sensvel ao contexto, devido presena da produo S . 2
Por outro lado, possvel provar, como veremos nos prximos captulos, que toda
linguagem livre de contexto tambm uma linguagem sensvel ao contexto. O contrrio,
porm, no verdadeiro, pois existem linguagens sensveis ao contexto, inclusive lingua-
gens que no contm a cadeia vazia, que no podem ser geradas por gramticas livres de
contexto, quaisquer que sejam estas. Logo, existe uma relao de incluso prpria entre
as linguagens livres de contexto e as linguagens sensveis ao contexto.
As gramticas pertencentes ltima classe denida pela Hierarquia de Chomsky
recebem a denominao de irrestritas, ou do tipo 0. Como o prprio nome sugere, trata-
se de gramticas sobre as quais no imposta nenhuma restrio quanto ao formato de
suas produes, exceto pelo fato de que o lado esquerdo das mesmas deva sempre conter
pelo menos um smbolo no-terminal:
V

NV

;
V

;
No se exige a validade de qualquer relao restritiva entre || e ||.
Exemplo 2.35 A gramtica G5 = ({a, b, c, S, X, Y}, {a, b, c}, {S aXb, S aXa, Xa
c, Xb c, X }, S) irrestrita, porm no sensvel ao contexto, devido presena das
produes Xa c, Xb c e S . As gramticas G1, G2, G3 e G4 so todas irrestritas. 2
Diferentemente do que ocorre com as gramticas sensveis ao contexto, as formas
sentenciais obtidas pela aplicao das regras de uma gramtica irrestrita no possuem
comprimento necessariamente crescente: elas podem aumentar ou diminuir de compri-
mento, conforme as produes que forem aplicadas.
s linguagens geradas por gramticas do tipo 0 d-se o nome de recursivamente
enumerveis, irrestritas ou, ainda, do tipo 0. Como se pode perceber pela denio,
toda gramtica do tipo 1 tambm uma gramtica do tipo 0, porm o contrrio no
verdadeiro. Em particular, aquelas que possuem produes em que || < ||.
Logo, toda linguagem sensvel ao contexto pode tambm ser considerada uma lin-
guagem irrestrita. Demonstra-se, por outro lado, que existem linguagens irrestritas que
64 Linguagens Formais - Teoria, Modelagem e Implementao
no podem ser geradas por qualquer gramtica sensvel ao contexto. Portanto, as lin-
guagens sensveis ao contexto constituem subconjunto prprio das linguagens irrestritas.
Resumidamente, a Hierarquia de Chomsky original estabelece que:
1. Toda linguagem do tipo i, 0 i 3 gerada por uma gramtica do tipo i;
2. A classe das linguagens do tipo i, 1 i 3 est includa propriamente na classe
das linguagens i 1. Conseqentemente, toda linguagem do tipo i, 1 i 3
tambm uma linguagem do tipo i 1.
Conforme o trabalho original de Chomsky, no caso das linguagens do tipo 2 (livres
de contexto), as regras acima so vlidas apenas para linguagens que no contm a
cadeia vazia. Como esse texto considera L do tipo 1 se e apenas se L{} for gerada por
alguma gramtica do tipo 1, ento as regras acima so sempre verdadeiras, sem qualquer
restrio.
Exceto por esse detalhe, a hierarquia de incluso prpria das linguagens denida
por Chomsky pode ser representada gracamente atravs da Figura 2.7:
Figura 2.7: Hierarquia de Chomsky
A relao entre as gramticas dos tipos 0, 1, 2 e 3 pode ser resumida da seguinte
forma:
Toda gramtica do tipo 3 (linear) tambm do tipo 2 (livre de contexto);
Nem toda gramtica do tipo 2 tambm do tipo 1 (sensvel ao contexto). So do
tipo 1 apenas aquelas que no possuem produes em que = ;
Toda gramtica do tipo 1 tambm do tipo 0 (irrestrita).
Os critrios que levaram Chomsky a classicar as linguagens em quatro classes
diferentes foram baseados nos seguintes aspectos (os quais, na verdade, esto intimamente
relacionados um ao outro). Em todos os casos a seguir, constatam-se semelhanas para
linguagens pertencentes a uma mesma classe e diferenas para linguagens pertencentes a
classes diferentes:
1. O conjunto das propriedades exibidas pela linguagem;
2 Conceitos Bsicos de Linguagens 65
2. As caractersticas estruturais mais signicativas exibidas pela linguagem;
3. O modelo de reconhecedor mais simples necessrio ao seu reconhecimento.
Do ponto de vista estrutural, as linguagens estritamente livres de contexto, ou seja,
as livres de contexto que no podem ser geradas por gramticas lineares esquerda ou
direita, distinguem-se das linguagens regulares por exibirem caractersticas de ani-
nhamento, como o caso da estruturao em blocos e comandos, ou ainda do uso de
parnteses em expresses aritmticas nas linguagens de programao tradicionais. Gra-
mticas livres de contexto possibilitam a formalizao gramatical de tais aninhamentos,
ao passo que gramticas lineares no oferecem tal possibilidade.
As linguagens estritamente sensveis ao contexto, ou seja, as sensveis ao contexto
que no podem ser geradas por gramticas livres de contexto, distinguem-se das lingua-
gens livres de contexto por conterem sentenas as quais, por sua vez, exibem construes,
ou conjuntos de smbolos, cuja validade vinculada presena de construes associa-
das em regies distintas da mesma cadeia. Tais vinculaes (como, por exemplo, aquelas
que existem entre a declarao e o uso de variveis) so caractersticas de linguagens do
tipo 1, e recebem a designao de sensibilidade ou dependncia de contexto.
As linguagens estritamente irrestritas, ou seja, as irrestritas que no podem ser
geradas por gramticas sensveis ao contexto, distinguem-se das linguagens sensveis ao
contexto por apresentarem caractersticas de indecidibilidade que lhes so particulares:
demonstra-se, por exemplo, nos prximos captulos, que no h soluo para o problema
genrico de se decidir se uma cadeia qualquer pertence ou no linguagem gerada por
uma gramtica quando esta for do tipo 0. No entanto, o mesmo problema, quando
aplicado a gramticas do tipo 1, pode sempre ser resolvido.
Do ponto de vista analtico, verica-se que cada classe de linguagens mencionada
demanda, de acordo com sua complexidade, classes de reconhecedores progressivamente
mais poderosos, porm sempre aderentes ao modelo genrico anteriormente apresentado.
Por outro lado, possvel demonstrar formalmente a equipotncia das vrias classes de
linguagens com os correspondentes modelos especcos de reconhecedores e gramticas,
caracterizando cada modelo como sendo necessrio e suciente para a anlise ou sntese
de linguagens pertencentes a cada classe.
Naturalmente, sempre ser possvel reconhecer linguagens de tipo i com reconhe-
cedores apropriados para linguagens do tipo i 1, 1 i 3. No entanto, para efeitos
prticos, o custo e a complexidade exibida pelos modelos mais complexos no justicam
a sua utilizao, dada a sensvel reduo de complexidade observada quando se adotam
modelos equivalentes mais simples.
So quatro as particularizaes do modelo geral de reconhecedor que sero estudadas
em detalhes nos prximos captulos: os autmatos nitos, os autmatos de pilha, as
Mquinas de Turing com limitao de memria e, nalmente, as Mquinas de Turing
sem limitao de memria.
A associao das quatro classes de linguagens denidas pela Hierarquia de Chomsky,
com os respectivos modelos de autmato necessrios ao seu reconhecimento, est resu-
mida na Tabela 2.1.
66 Linguagens Formais - Teoria, Modelagem e Implementao
Tipo
Classe de
linguagens
Modelo de
gramtica
Modelo de
reconhecedor
0
Recursivamente
enumerveis
Irrestrita Mquina de Turing
1
Sensveis ao
contexto
Sensvel ao
contexto
Mquina de Turing
com ta limitada
2
Livres de
contexto
Livre de
contexto
Autmato de pilha
3 Regulares
Linear (direita
ou esquerda)
Autmato nito
Tabela 2.1: Linguagens, gramticas e reconhecedores
As propriedades, as caractersticas estruturais e tambm os modelos de reconheci-
mento mais adequados para cada uma das classes de linguagens denidas pela Hierarquia
de Chomsky sero estudados em detalhes nos captulos seguintes.
3 Linguagens Regulares
Neste captulo sero estudadas as linguagens regulares e as diversas formas atravs das
quais elas podem ser geradas ou reconhecidas:
Gramticas regulares;
Conjuntos regulares (mais usualmente representados atravs das expresses regu-
lares);
Autmatos nitos.
Em primeiro lugar, sero apresentados cada um desses formalismos. Depois, mos-
trada a equivalncia entre os mesmos quanto classe de linguagens que so capazes de
representar as linguagens regulares , e sero apresentados tambm algoritmos que
permitem efetuar a obteno de uma representao a partir de cada uma das outras.
Especial nfase ser dedicada ao estudo dos autmatos nitos: sero introduzidas
as notaes e os conceitos, sempre relacionando esse tipo de reconhecedor ao modelo
geral, apresentado no captulo anterior. Tambm ser apresentada uma introduo aos
transdutores nitos.
Posteriormente, sero consideradas as propriedades exibidas pelas linguagens do
tipo 3 em suas diversas representaes. Em particular, o Pumping Lemma das lingua-
gens regulares, muito til na demonstrao de que certas linguagens no so regulares,
e tambm para demonstrar diversos outros importantes teoremas relativos s linguagens
desta classe. Outra fundamental propriedade refere-se existncia de um autmato m-
nimo (e nico) para cada linguagem regular considerada, o qual pode ser obtido conforme
o mtodo prtico apresentado.
Em seguida, sero analisadas algumas valiosas operaes que preservam a regulari-
dade das linguagens do tipo 3, e que, por esse motivo, tambm so teis para determinar
a categoria de Chomsky a que uma linguagem possa pertencer.
Finalmente, sero apresentadas e demonstradas, no ltimo item deste captulo,
algumas questes decidveis referentes classe das linguagens regulares.
3.1 Gramticas Regulares
As gramticas lineares direita ou esquerda foram apresentadas anteriormente na seo
2.6. Trata-se de gramticas cujas regras atendem s seguintes condies:
N;
( {})(N {}) se linear direita, ou
(N {})( {}) se linear esquerda.
Demonstra-se que as gramticas lineares esquerda ou direita geram exatamente
a mesma classe de linguagens. Portanto, indiferente o emprego de uma ou outra dessas
68 Linguagens Formais - Teoria, Modelagem e Implementao
duas variantes de gramtica, j que ambas possuem a mesma capacidade de representao
de linguagens.
Por esse motivo, as gramticas lineares direita ou esquerda so tambm de-
nominadas gramticas regulares. Este termo serve para designar ambos os tipos de
gramtica linear. As linguagens geradas por gramticas regulares recebem o nome de lin-
guagens regulares. O Teorema 3.1 estabelece a equivalncia entre gramticas lineares,
direita e esquerda.
Teorema 3.1 (Linear direita linear esquerda) Se G
1
uma gramtica li-
near direita, ento existe uma gramtica linear esquerda G
2
tal que L(G
1
) = L(G
2
),
e vice-versa.
Justicativa Considere-se L
R
= L
R
(G
1
), o reverso da linguagem denida por G
1
.
1
Considere-se a gramtica linear direita G

tal que L
R
= L(G

). Considere-se
tambm G

, obtida a partir de G

, de tal forma que as cadeias de comprimento no-


unitrio de G

sejam invertidas em G

, conforme o Algoritmo 3.1:


Algoritmo 3.1 (Linguagem reversa) Obteno de uma gramtica linear esquerda
que gera L
R
a partir de uma gramtica linear direita que gera L.
Entrada: uma gramtica linear direita G

= (V, , P

, S);
Sada: uma gramtica linear esquerda G

= (V, , P

, S), tal que L(G

) =
L(G

)
R
;
Mtodo:
1. P

;
2. Se P

, ( N {}), ento P

;
3. Se P

, (N), ento
R
P

;
Com G

construda dessa forma, possvel demonstrar que L(G

) = L
R
(G

) =
L(G
1
). Como G

, por construo, linear esquerda, segue que G

= G
2
e L(G
1
) =
L(G
2
). A demonstrao no sentido oposto obtida de forma anloga.
As gramticas lineares direita geram formas sentenciais em que o smbolo no-
terminal sempre o ltimo smbolo das mesmas (X,

, X N). Portanto, as
sentenas da linguagem vo sendo construdas atravs da insero de novos smbolos
terminais sempre direita das formas sentenciais, imediatamente antes do smbolo no-
terminal (da o nome linear direita).
O algoritmo deste teorema mostra como obter uma gramtica linear esquerda que
gera a mesma linguagem de uma dada gramtica linear direita. De fato, a linguagem
gerada a mesma, com a nica diferena de que agora as sentenas so construdas no
sentido oposto, ou seja, atravs da insero de smbolos terminais sempre esquerda
das formas sentenciais, imediatamente depois do smbolo no-terminal, que agora o
primeiro das formas sentenciais geradas (X,

, X N). S muda, portanto, o


sentido em que as sentenas so geradas.
1
Se L regular, ento, conforme demonstrado no Teorema 3.22, L
R
tambm regular. E, de acordo com o
Teorema 3.6, existe uma gramtica linear direita G

que gera L
R
.
3 Linguagens Regulares 69
Dada uma gramtica linear direita G
1
, o procedimento completo consiste, por-
tanto, nos passos descritos no Algoritmo 3.2:
Algoritmo 3.2 (Linear direita esquerda) Obteno de gramtica linear es-
querda G
2
equivalente a uma gramtica linear direita G
1
.
Entrada: uma gramtica linear direita G
1
;
Sada: uma gramtica linear esquerda G
2
, tal que L(G
2
) = L(G
1
);
Mtodo:
1. Determinar L(G
1
);
2. Determinar L(G
1
)
R
;
3. Obter uma gramtica linear direita G

tal que L(G

) = L(G
1
)
R
;
4. Transformar G

em G
2
atravs da inverso das regras, conforme o Algoritmo
3.1.

Exemplo 3.1 Considere a gramtica linear direita G1 denida a seguir:


S aS
S bS
S P
P cQ
Q cR
R dR
R d
L(G1) corresponde ao conjunto das cadeias w sobre {a, b, c, d} tais que:
1. w comea com zero ou mais smbolos a ou b;
2. w continua com exatamente dois smbolos c;
3. w termina com um ou mais smbolos d.
Logo, L
R
(G1) tal que:
1. w comea com um ou mais smbolos d.
2. w continua com exatamente dois smbolos c;
3. w termina com zero ou mais smbolos a ou b;
Uma gramtica linear direita G

tal que L(G

) = L
R
(G1) :
S

dS

dP

cQ

70 Linguagens Formais - Teoria, Modelagem e Implementao


Q

cR

aR

bR


A gramtica G2, obtida a partir de G

pela aplicao do Algoritmo 3.1, :


S

d
S

d
P

c
Q

c
R

a
R

b
R


Como fcil observar, G2 linear esquerda e L(G2) = L(G1). Por exemplo, considerem-se
as derivaes da sentena abaccdd, respectivamente em G1 e G2:
S
G
1
aS
G
1
abS
G
1
abaS
G
1
abaP
G
1
abacQ
G
1
abaccR
G
1
abaccdR
G
1
abaccdd
S

G
2
S

d
G
2
P

dd
G
2
Q

cdd
G
2
R

ccdd
G
2
R

accdd
G
2
R

baccdd
G
2
R

abaccd
G
2

abaccdd
2
Alguns autores consideram as seguintes extenses na denio das regras de
gramticas lineares direita e esquerda:
N;

(N {}) se linear direita, ou


(N {})

se linear esquerda.
Nessas extenses, admite-se uma quantidade qualquer de smbolos terminais no
lado direito das produes gramaticais, e no no mximo um, como foi estabelecido na
denio original. Tais extenses em nada alteram a classe de linguagens representveis
por esses tipos de gramticas, constituindo o seu uso mera convenincia. O Teorema 3.2
traz a demonstrao dessa equivalncia.
Teorema 3.2 (Desmembramento de uma gramtica linear direita) Se G
1

uma gramtica composta apenas de produes do tipo , N,

(N {}),
ento existe uma gramtica equivalente G
2
composta apenas de produes do tipo
, N, ( {})(N {}).
Justicativa G
2
pode ser obtida a partir de G
1
pelo Algoritmo 3.3, o qual substitui
as regras ,

N, por um conjunto equivalente de novas regras

( {})(N {}).
2
Algoritmo 3.3 ( ,

(N {}) , ( {})(N {}))


Desmembramento das produes de uma gramtica linear direita, na forma ,
2
Tal tipo de gramtica recebe, em alguns textos, a denominao de gramtica linear unitria direita.
3 Linguagens Regulares 71

(N {}), em conjuntos de produes equivalentes, na forma , (


{})(N {}).
Entrada: uma gramtica linear direita G
1
= (V
1
, , P
1
, S
1
), cujas produes so
da forma ,

(N {});
Sada: uma gramtica linear direita G
2
= (V
2
, , P
2
, S
2
), tal que L(G
2
) = L(G
1
)
e cujas produes so todas da forma , ( {})(N {});
Mtodo:
1. N
2
N
1
;
2. P
2
;
3. Para cada P
1
, =
1
...
n
K, com K N {} e n 0, faa:
Se = , , N, ou N, ento P
2
P
2
{ }
Se || 2 e

, ou seja, se

, ento:
N
2
N
2
{Y
1
, Y
2
, ..., Y
n1
}
P
2
P
2
{
1
Y
1
, Y
1

2
Y
2
, ..., Y
n2

n1
Y
n1
,
Y
n1

n
}
Se || 3 e

N, ou seja, se

N, ento:
N
2
N
2
{X
1
, X
2
, ..., X
n1
}
P
2
P
2
{
1
X
1
, X
1

2
X
2
, ..., X
n2

n1
X
n1
,
X
n1

n
K}
Algoritmo semelhante pode ser facilmente desenvolvido para o caso das gramticas
lineares esquerda, de forma a obter uma gramtica equivalente cujas regras sejam do
tipo , N, (N {})( {}).
3

Exemplo 3.2 Considere-se a gramtica G1:


S1 abcdP
P efP
P Q
Q g
A aplicao do Algoritmo 3.3 resulta na gramtica G2:
S2 aP1
3
Tambm conhecida como gramtica linear unitria esquerda.
72 Linguagens Formais - Teoria, Modelagem e Implementao
P1 bP2
P2 cP3
P3 dP
P eP4
P4 fP
P Q
Q g
A ttulo de ilustrao, considerem-se as derivaes da sentena abcdefg, respectivamente em
G1 e G2:
S1
G
1
abcdP
G
1
abcdefP
G
1
abcdefQ
G
1
abcdefg
S2
G
2
aP1
G
2
abP2
G
2
abcP3
G
2
abcdP
G
2
abcdeP4
G
2
abcdefP
G
2
abcdefQ
G
2
abcdefg
2
3.2 Conjuntos e Expresses Regulares
Conjuntos e expresses regulares so notaes alternativas utilizadas para representar a
classe de linguagens mais simples que se conhece: a classe das linguagens regulares, a
mais restrita dentro da Hierarquia de Chomsky.
Conjuntos regulares sobre um alfabeto nito so linguagens denidas recursi-
vamente da seguinte forma:
1. um conjunto regular sobre ;
2. {} um conjunto regular sobre ;
3. {}, , um conjunto regular sobre ;
Se X e Y so conjuntos regulares sobre , ento tambm so conjuntos regulares
sobre :
4. (X);
5. X Y;
6. X Y, tambm denotado XY;
7. X

.
Diz-se que um determinado subconjunto de

um conjunto regular se ele puder


ser formulado atravs do uso combinado dessas regras apenas.
Exemplo 3.3 Seja L = {0
m
1
n
| m 0, n 0} sobre = {0, 1}. A linguagem L formada
por sentenas em que a concatenao de um nmero arbitrrio de smbolos 0 (incluindo nenhum)
se concatena com a concatenao de um nmero tambm arbitrrio de smbolos 1 (incluindo
nenhum):
L = {, 0, 1, 00, 01, 11, ...}
Considerem-se as linguagens sobre , abaixo discriminadas:
L1 = {0}
L2 = {1}
3 Linguagens Regulares 73
L3 = {0
i
| i 0}
L4 = {1
i
| i 0}
L5 = {0
p
1
q
| p 0, q 0}
Os conjuntos L1 e L2 so conjuntos regulares sobre , por denio. L3 e L4 so obtidos a
partir de L1 e L2, respectivamente, pela aplicao da operao fechamento reexivo e transitivo, ou
seja, L3 = L

1
e L4 = L

2
. Por sua vez, o conjunto L5 = L pode ser expresso pela concatenao dos
conjuntos L3 e L4, isto , L5 = L3L4. Dessa maneira, demonstra-se que L = {0
m
1
n
| m 0, n 0}
um conjunto regular sobre {0, 1}. Na notao dos conjuntos regulares, L pode ser denotado por
{0}

{1}

. 2
Exemplo 3.4 A linguagem N formada pelos nmeros naturais decimais um conjunto regular sobre
o alfabeto dos algarismos arbicos e pode ser representada atravs do seguinte conjunto regular:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

Se D = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, ento N = DD

.
O conjunto R dos nmeros reais decimais sem sinal um conjunto regular sobre D {.}, e
pode ser representado por:
DD

.D

.DD

Observe-se que a denio acima inclui nmeros iniciando ou terminando com o caractere
. (como, por exemplo, .315 ou 47.), porm exclui da linguagem a cadeia .. O conjunto P dos
nmeros em ponto utuante com expoente (denotado por E) e sinal opcional (+ ou ) pode
ser representado por:
{+, , }(DD

.D

.DD

){E}{+, , }DD

Assim, por exemplo, 27 N, 915.4 R e 211.56E + 3 P. Deve-se notar que N R


P, P = R e R = N. 2
A denio de conjuntos regulares envolve a aplicao de trs operaes j estudadas
para os conjuntos: unio, concatenao e fechamento reexivo e transitivo. No caso do
fechamento, no entanto, cabem algumas observaes adicionais vlidas para o caso em
que o seu operando seja no apenas um alfabeto, conforme anteriormente mencionado,
mas eventualmente uma linguagem, como ocorre na denio acima.
Seja L uma linguagem qualquer, e considerem-se as novas linguagens L

e L
+
obtidas
pela aplicao, respectivamente, das operaes de fechamento reexivo e transitivo e do
fechamento transitivo sobre L. Neste caso, deve-se observar que, diferentemente do que
ocorre com os alfabetos, as seguintes identidades so verdadeiras:
L
+
= L

se L
L
+
= L

{} se L
Como alternativa para a representao dos conjuntos regulares, visando obter maior
conciso e facilidade de manipulao, Kleene desenvolveu, na dcada 1950, a notao das
expresses regulares ([60]). Da mesma forma como ocorre para os conjuntos regulares,
as expresses regulares sobre um alfabeto podem tambm ser denidas recursivamente
como segue:
1. uma expresso regular e denota o conjunto regular ;
2. uma expresso regular e denota o conjunto regular {};
3. Cada , , uma expresso regular e denota o conjunto regular {}, ;
74 Linguagens Formais - Teoria, Modelagem e Implementao
Se x e y so expresses regulares sobre que denotam, respectivamente, os con-
juntos regulares X e Y, ento:
4. (x);
5. x | y ou x + y;
6. x y ou xy;
7. x

tambm so expresses regulares e denotam, respectivamente, os conjuntos regulares


X, X Y, XY e X

. Note-se a eliminao, nas expresses regulares, do uso dos smbolos


{ e }, bem como a substituio do operador pelo operador + ou | (a critrio
de cada autor). Visando tornar ainda mais cmoda a utilizao das expresses regulares,
admite-se a eliminao dos pares de parnteses envolvendo sub-expresses que contenham
seqncias exclusivas de operadores, de unio ou de concatenao, uma vez que se trata
de operaes associativas. Alm disso, so designadas precedncias distintas para as trs
operaes, reduzindo ainda mais a necessidade de emprego de parnteses nas expresses
regulares. A Tabela 3.1 resume esses aspectos.
Precedncia Operador Representao
Mais alta Fechamento x

Intermediria Concatenao x y ou xy
Mais baixa Unio x | y ou x + y
Tabela 3.1: Precedncia dos operadores nas expresses regulares
Os parnteses so empregados para modicar localmente a precedncia ou a asso-
ciatividade pr-denida dos operadores, assim como ocorre nas expresses aritmticas
tradicionais da matemtica.
Exemplo 3.5 A expresso regular (ab | c

) = ((ab) | c

) = ((ab) | (c

)) representa o conjunto
{ab, , c, cc, ccc...}. A expresso regular a(b | c)

representa o conjunto {a, ab, ac, abc, abb, acc,


...}. Finalmente, (ab | c)

representa o conjunto {, ab, c, abc, cab, abab, cc, ...}. 2


Uma abreviao muito comum consiste na substituio da expresso regular xx

por
x
+
, denotando com isso o conjunto regular correspondente ao fechamento transitivo de
X (que composto por todas as cadeias de comprimento maior ou igual a 1 que podem
ser construdas sobre o conjunto X).
Exemplo 3.6 Considerem-se o alfabeto = {a, b, c, d} e os dois subconjuntos A = {a}, B = {b, c}.
A seguir so apresentadas diferentes linguagens sobre , denidas atravs da notao dos conjuntos
e das expreses regulares:
Sentenas que possuem no mnimo um smbolo a:

ou (a | b | c | d)

a(a | b | c | d)

Sentenas que possuem exatamente dois smbolos a:


( A)

A( A)

A( A)

ou (b | c | d)

a(b | c | d)

a(b | c | d)

3 Linguagens Regulares 75
Sentenas que possuem um nmero par de smbolos a:
((A)

A(A)

A(A)

ou ((b | c | d)

a(b | c | d)

a(b | c | d)

Sentenas que so iniciadas com o smbolo a e terminam com o smbolo b ou c:


A

B ou a(a | b | c | d)

(b | c)
Sentenas contendo apenas os smbolos a, b, c, com no mnimo um smbolo:
(A B)
+
ou (a | b | c)
+
Sentenas formadas por smbolos do alfabeto {a, b, c, d} contendo uma (e somente uma)
subcadeia constituda por um smbolo do conjunto A e dois (e somente dois) do conjunto B,
nesta ordem:
((A) B)

ABB((A) B)

ou d

a(b | c)(b | c)d

2
Exemplo 3.7 Utilizando-se a notao das expresses regulares, a linguagem L = {0
m
1
n
| m
0, n 0} pode ser reescrita como ((0)

(1)

), ou, simplesmente, 0

. Para m 0 e n 1, a
expresso correspondente seria 0

11

. Note-se que 0

11

= 0

1 = 0

1
+
. 2
A seguir sero apresentadas algumas relaes de identidade vlidas para as expres-
ses regulares, as quais podem ser demonstradas sem diculdade. Sejam x, y, z trs
expresses regulares quaisquer. Ento:
x | y = y | x

=
x | (y | z) = (x | y) | z
x(yz ) = (xy)z
x(y | z) = xy | xz
(x | y)z = xz | yz
x = x = x
x = x =
= =
x

= x | x

(x

= x

x | x = x
x | = x
(xy)

x = x(yx)

Por se tratar de uma notao concisa, que dispensa o uso da notao dos conjuntos e
o emprego de smbolos no-terminais para a denio de linguagens, mas que, ao mesmo
76 Linguagens Formais - Teoria, Modelagem e Implementao
tempo, permite a plena representao dos conjuntos regulares, as expresses regulares
so bastante utilizadas em reas que abrangem desde a especicao de linguagens de
programao e de comandos, entre outras, at a entrada de dados em editores de texto,
programas de busca, anlise de padres etc.
As linguagens regulares foram denidas no captulo anterior como a classe das lin-
guagens geradas por gramticas lineares, esquerda ou direita. No presente item foram
apresentados os conjuntos regulares e a notao mais comumente utilizada para a sua
representao, as expresses regulares.
3.3 Autmatos Finitos
Da mesma forma como ocorre com as expresses regulares e com as gramticas linea-
res direita, os autmatos nitos tambm possibilitam a formalizao das linguagens
regulares, ou seja, das linguagens do tipo 3. No entanto, diferentemente daquelas no-
taes, que constituem dispositivos de gerao de sentenas, os autmatos nitos so
dispositivos de aceitao de sentenas e constituem um caso particular do modelo geral
de reconhecedores apresentado no Captulo 2.
A seguir sero introduzidas as notaes, as convenes, as caractersticas de opera-
o e algumas variantes mais comuns dos autmatos nitos. O item seguinte mostra que
a classe de linguagens por eles aceita coincide exatamente com a classe das linguagens
denidas pelos conjuntos regulares e tambm pelas gramticas lineares direita.
Os autmatos nitos podem ser determinsticos ou no-determinsticos, apresen-
tando ou no transies em vazio. Conforme analisado mais adiante, a eventual presena
de no-determinismos e/ou de transies em vazio no altera a classe de linguagens
aceita pelos autmatos nitos. Por motivos estritamente didticos, sero introduzidos
inicialmente os autmatos nitos determinsticos, sendo feitas extenses posteriores para
contemplar a existncia de no-determinismos e de transies em vazio.
Os autmatos nitos correspondem instncia mais simples do modelo geral de
reconhecedores apresentado na Seo 2.5. As suas principais particularidades em relao
ao modelo geral so:
1. Inexistncia de memria auxiliar;
2. Utilizao do cursor da ta de entrada apenas para leitura de smbolos, no ha-
vendo operaes de escrita sobre a ta;
3. Movimentao do cursor de leitura em apenas um sentido, da esquerda para a
direita;
4. A ta de entrada possui comprimento limitado, suciente apenas para acomodar
a cadeia a ser analisada.
Os autmatos nitos podem ser representados em notao algbrica ou atravs de
diagramas de transio de estados, introduzidos a seguir, mais adequados sua visuali-
zao.
3 Linguagens Regulares 77
Autmatos Finitos Determinsticos
Algebricamente, um autmato nito determinstico M pode ser denido como uma qun-
tupla:
M = (Q, , , q
0
, F)
Q um conjunto nito de estados;
um alfabeto (nito e no-vazio) de entrada;
uma funo de transio, : Q Q;
q
0
o estado inicial, q
0
Q;
F um conjunto de estados nais, F Q.
A mquina de estados de um autmato nito, tambm denominada controle nito,
denida pelo conjunto de estados Q e pela funo de transio , que associa pares
ordenados do tipo (estado corrente, entrada corrente) com um novo estado a ser assumido
pelo autmato quando da aplicao da transio.
Deve-se notar que a funo de transio pode ser, no caso dos autmatos nitos
determinsticos, uma funo total, ou seja, uma funo que denida para todos os
elementos de Q , ou ainda uma funo parcial. Se total, isso implica a especicao
de transies com cada um dos possveis smbolos de entrada para cada um dos
possveis estados q Q do autmato nito. Assim, se || = m e |Q| = n, ento o
autmato nito determinstico possuir, exatamente, m n transies distintas.
As transies de um autmato nito podem ser denotadas atravs de expresses do
tipo (p, ) q, com p, q Q, . Alternativamente, pode-se explicitar a funo ,
representando uma transio na forma (p, ) = q.
A utilizao do termo determinstico para designar esse tipo de autmato nito
decorre do fato de que, enquanto houver smbolos na ta de entrada, ser sempre possvel
determinar o estado seguinte a ser assumido pelo autmato, o qual ser nico em todas
as situaes.
Em certos casos, especialmente na demonstrao de alguns teoremas, torna-se con-
veniente estender o domnio da funo para

, em vez de apenas , conforme indicado


abaixo:
(q, ) = q;
(q, x) = ((q, ), x), x

, .
Ao longo deste texto, a denio considerada para a funo dever variar conforme
o contexto em que estiver sendo empregada.
A congurao de um autmato nito denida pelo seu estado corrente e pela
parte da cadeia de entrada ainda no analisada (incluindo o smbolo apontado pelo
cursor). A congurao inicial de um autmato nito aquela em que o estado corrente
q
0
(estado inicial) e o cursor de leitura se encontra posicionado sobre o smbolo mais
esquerda da cadeia de entrada. Uma congurao nal aquela em que o cursor
aponta para a posio imediatamente alm do ltimo smbolo da cadeia (indicando com
isso j ter ocorrido a leitura do ltimo smbolo da cadeia de entrada), e o estado corrente
pertence ao conjunto F de estados nais, especicado para o autmato. Note que ambas
78 Linguagens Formais - Teoria, Modelagem e Implementao
as condies devem ser simultaneamente vericadas para permitir a caracterizao de
uma congurao como sendo, respectivamente, inicial ou nal.
O autmato nito opera efetuando uma srie de movimentos que o conduzem atravs
dos seus estados a partir da congurao inicial. Pela inspeo do estado corrente e
tambm do smbolo apontado pelo cursor, determina-se o prximo estado a ser atingido
pelo autmato e avana-se o cursor de leitura uma clula para a direita. Esse processo
repetido seguidas vezes at que na ta de entrada no haja mais smbolos a serem lidos.
Quando ocorre o esgotamento da cadeia de entrada, deve-se analisar o tipo do estado
corrente do autmato. Se for um estado nal, diz-se que o autmato reconheceu, ou
aceitou, a cadeia de entrada; se for um estado no-nal, diz-se que a cadeia de entrada
foi rejeitada pelo autmato logo, a cadeia analisada no pertence linguagem por
ele denida.
Quando denidos atravs de funes de transio totais, os correspondentes aut-
matos nitos determinsticos sempre percorrem integralmente toda e qualquer cadeia de
entrada (sobre ) que lhes forem apresentadas para anlise. Nesses casos, portanto, a
congurao nal denida para um autmato nito sempre satisfeita no que se refere ao
esgotamento da cadeia de entrada, restando apenas a anlise do tipo do estado atingido
em tal congurao (nal ou no-nal) para se determinar, respectivamente, a aceitao
ou a rejeio da cadeia de entrada.
Tais conceitos podem ser formalizados denotando-se a congurao de um autmato
nito como um par (q, y), em que q representa o estado corrente e y a parte da cadeia
de entrada ainda no analisada. A congurao inicial, com vistas ao reconhecimento
de uma cadeia x, representada como (q
0
, x), e a congurao nal como (q
i
, ), q
i
F.
A movimentao de um autmato de uma congurao para a congurao seguinte
denotada atravs do smbolo :
(q
i
, ) (q
j
, ), com q
i
, q
j
Q, ,

, (q
i
, ) = q
j
A linguagem L denida por um autmato nito M o conjunto de todas as cadeias
w sobre o alfabeto que levam M da sua congurao inicial para alguma congurao
nal atravs da aplicao sucessiva de transies denidas pela funo . Denota-se
como:
L(M) = {w

| (q
0
, w)

(q
F
, ), q
F
F}
Alternativamente, conforme a extenso introduzida para a funo , pode-se denotar
o mesmo processo assim:
L(M) = {w

| (q
0
, w) F}
Diagramas de transio de estados so grafos orientados no-ordenados, rotu-
lados nos vrtices com os nomes dos estados e nos arcos com os smbolos do alfabeto de
entrada do autmato nito. Trata-se de uma representao grca equivalente notao
algbrica, oferecendo porm uma melhor visualizao do autmato. Nessa representao,
crculos representam os estados, e arcos as transies. O estado inicial identicado por
um arco cuja extremidade inicial no ligada a nenhum outro estado. Os estados nais
so representados por crculos duplos concntricos.
Exemplo 3.8 Seja M um autmato nito determinstico, com funo de transio total, denido
abaixo. Sua representao algbrica M = (Q, , , q0, F), onde:
Q = {q0, q1, q2, q3}
3 Linguagens Regulares 79
= {0, 1, 2}
= {(q0, 0) q0, (q0, 1) q1, (q0, 2) q3,
(q1, 0) q3, (q1, 1) q1, (q1, 2) q2,
(q2, 0) q3, (q2, 1) q3, (q2, 2) q2,
(q3, 0) q3, (q3, 1) q3, (q3, 2) q3}
F = {q1, q2}
A Figura 3.1 mostra o diagrama de transio de estados para esse autmato:
q
0
q
1
q
2
q
3
2
0
0, 1
0, 1, 2
1 2 0
1
2
Figura 3.1: Autmato nito determinstico com funo de
transio total
A linguagem aceita por esse autmato nito formada pelo conjunto de sentenas x que o
levam da congurao inicial (q0, x) at a congurao nal (q1, ) ou (q2, ). A inspeo cuidadosa
desse autmato nito revela que as sentenas por ele aceitas contm, nesta ordem, uma seqncia
de smbolos 0 (incluindo nenhum), seguida de uma seqncia de smbolos 1 (no mnimo um)
e, nalmente, de uma seqncia de smbolos 2 (incluindo nenhum). Na notao das expresses
regulares, L(M) = 0

1
+
2

.
As seguintes identidades, por exemplo, so verdadeiras:
(q0, 00001) = q1
(q0, 0122) = q2
(q1, 12) = q2
(q2, 222) = q2
Esquematicamente, a congurao inicial para o reconhecimento de uma cadeia de entrada,
por exemplo, a cadeia 0011222, pode ser representada conforme a gura abaixo:
Figura 3.2: Congurao inicial
80 Linguagens Formais - Teoria, Modelagem e Implementao
A sucesso de movimentos efetuados pelo autmato nito com essa cadeia apresentada a
seguir:
(q0, 0011222) (q0, 011222) (q0, 11222) (q1, 1222) (q1, 222) (q2, 22) (q2, 2)
(q2, )
Portanto, (q0, 0011222)

(q0, ), e 0011222 L(M). Esquematicamente, a congurao


nal do autmato aps o reconhecimento da cadeia de entrada 0011222 pode ser representada
conforme a gura a seguir:
Figura 3.3: Congurao nal
Analisa-se a seguir o comportamento desse autmato em relao cadeia de entrada 0022:
(q0, 0022) (q0, 022) (q0, 22) (q3, 2) (q3, )
Aps a seqncia de movimentos acima, chega-se congurao (q3, ), em que ocorre o
esgotamento da cadeia de entrada. Como no se trata de uma congurao nal, pois q3 F,
conclui-se que a cadeia 0022 no pertence linguagem aceita por M. 2
Exemplo 3.9 O autmato nito determinstico da Figura 3.4 possui funo de transio parcial, uma
vez que ela no denida para os seguintes elementos de Q : (q0, 2), (q1, 0), (q2, 1) e (q2, 0).
q
0
q
1
q
2
2
1 2 0
1
Figura 3.4: Autmato nito determinstico com funo de
transio parcial
Note-se que os autmatos das Figuras 3.1 e 3.4 denem a mesma linguagem. Os movimentos
executados pelo autmato da Figura 3.4 com as cadeias 0011222 e 0022 so apresentados abaixo:
(q0, 0011222) (q0, 011222) (q0, 11222) (q1, 1222) (q1, 222) (q2, 22) (q2, 2)
(q2, )
(q0, 0022) (q0, 022) (q0, 22)
No primeiro caso, a cadeia 0011222 completamente esgotada e o autmato pra em um
estado nal. Logo, 0011222 aceita pelo autmato. No segundo caso, a cadeia de entrada
apenas parcialmente consumida, e o autmato pra no estado qo, no-nal. Logo, a cadeia 0022
rejeitada. 2
3 Linguagens Regulares 81
Autmatos Finitos No-Determinsticos
Apesar do elevado interesse prtico que recai sobre os autmatos nitos determinsti-
cos, uma vez que eles servem como base para a construo de programas extremamente
ecientes, do ponto de vista terico h tambm um interesse muito grande pelos aut-
matos nitos no-determinsticos, devido maior facilidade com que eles permitem a
demonstrao de certos teoremas. Do ponto de vista prtico, os autmatos nitos no-
determinsticos so, muitas vezes, mais intuitivos do que os correspondentes autmatos
nitos determinsticos, o que os torna, geralmente, mais adequados para a anlise e es-
pecicao de linguagens regulares.
Um autmato nito no-determinstico, sem transies em vazio, difere dos
autmatos nitos determinsticos pelo fato de o co-domnio da funo de transio ser
2
Q
e no simplesmente Q:
: Q 2
Q
Como conseqncia, os autmatos nitos no-determinsticos generalizam o modelo
dos autmatos nitos determinsticos atravs das seguintes extenses:
Introduz-se o impasse em conguraes no-nais;
Como 2
Q
, possvel no especicar transies para certas combinaes de
estado corrente e prximo smbolo de entrada.
Introduz-se o no-determinismo, no sentido literal da palavra.
Nos casos em que |((q, ))| 2, haver mais de uma possibilidade de movimen-
tao para o autmato nito no-determinstico na congurao corrente.
Devido principalmente segunda condio que autmatos deste tipo recebem a
designao de no-determinsticos: havendo pelo menos uma congurao em que, para
uma mesma combinao de estado corrente e smbolo de entrada, exista mais de uma
alternativa de escolha do prximo estado, torna-se necessrio efetuar uma opo entre
elas, para permitir o prosseguimento do reconhecimento.
Note-se que esse tipo de situao nunca ocorre com os autmatos nitos determi-
nsticos. Note-se ainda que, de acordo com a nova denio para a funo , torna-se
possvel tambm caracterizar autmatos nitos determinsticos como casos particulares
dos no-determinsticos, em que cada elemento da imagem da funo possui exatamente
um nico estado.
Diz-se que um autmato nito no-determinstico aceita uma cadeia de entrada
quando houver alguma seqncia de movimentos que o leve da congurao inicial para
uma congurao nal. Diferentemente do autmato nito determinstico, em que essa
seqncia, se existir, nica para cada cadeia de entrada, no caso do autmato nito no-
determinstico possvel que exista mais de uma seqncia que satisfaa a essa condio
para uma dada cadeia de entrada. Sempre que o autmato nito no-determinstico se
deparar com mais de uma possibilidade de movimentao, feita a escolha (arbitrria)
de uma das alternativas; em caso de insucesso no reconhecimento, deve-se considerar
sucessivamente cada uma das demais alternativas ainda no consideradas, at o seu
esgotamento; persistindo o insucesso, e esgotadas as alternativas, diz-se que o autmato
rejeita a cadeia. A Tabela 3.2 resume esses critrios.
82 Linguagens Formais - Teoria, Modelagem e Implementao
Dada uma
cadeia de
entrada, ele:
Aceita a cadeia
de entrada se:
Rejeita a cadeia
de entrada se:
Autmato
nito
determinstico
Executa uma
nica seqncia
de movimentos.
Pra em uma
congurao
nal.
Pra em uma
congurao
no-nal.
Autmato
nito no-
determinstico
Pode executar
vrias
seqncias
distintas de
movimentos.
Pra em uma
congurao
nal.
Pra sem
conseguir
atingir
nenhuma
congurao
nal.
Tabela 3.2: Aceitao e rejeio de cadeias em autmatos nitos
importante notar que, diferentemente do que ocorre com os autmatos nitos
determinsticos com funo de transio total, no necessariamente os autmatos nitos
no-determinsticos esgotam completamente a cadeia de entrada que lhes oferecida para
anlise, mesmo que a sua funo de transio seja total.
A impossibilidade de movimentao do autmato em determinadas conguraes
caracteriza um impasse e pode ocorrer no apenas em funo do esgotamento da cadeia
de entrada, como nos autmatos nitos determinsticos, mas tambm pela possibilidade
de inexistncia de transies que permitam a evoluo a partir da congurao corrente
devido s caractersticas da funo . Assim, a condio que determina a aceitao de
uma cadeia em um autmato nito no-determinstico deve sempre ser analisada em sua
totalidade: estado nal associado ao esgotamento da cadeia de entrada (lembrar que esta
ltima condio sempre vericada no caso dos autmatos nitos determinsticos cuja
funo de transio seja total).
Exemplo 3.10 Seja M = (Q, , , {q0}, F) um autmato nito no-determinstico:
Q = {q0, q1, q2}
= {a, b, c}
= {(q0, a) {q1, q2}, (q1, b) {q1, q2}, (q2, c) {q2}}
F = {q1, q2}
O diagrama de transio de estados para esse autmato, que reconhece a linguagem ab

|
ab

bc

| ac

, ou simplesmente ab

, apresentado na Figura 3.5.


q
0
q
1
q
2
b
b c
a
a
Figura 3.5: Autmato no-determinstico
3 Linguagens Regulares 83
Considere-se a cadeia abbccc e faa-se uma simulao da operao do autmato a partir de
sua congurao inicial:
(q0, abbccc) (q2, bbccc)
Nesta seqncia, a escolha do ramo inferior, em resposta ao smbolo de entrada a, conduz
o autmato a um impasse, pois no h possibilidade de movimentao em q2 com o smbolo b.
Deve-se, ento, tentar a segunda alternativa de movimentao em q0:
(q0, abbccc) (q1, bbccc) (q2, bccc)
Apesar do avano no reconhecimento, novo impasse atingido no estado q2 como conseqncia
da escolha efetuada em q1 para a transio usando o smbolo b. Como no restam outras alternativas
em q0, deve-se considerar a segunda alternativa de movimentao em q1:
(q0, abbccc) (q1, bbccc) (q1, bccc)
Admitindo-se que a opo inicial de movimentao em q1 em resposta ao smbolo b seja
novamente q2, a seguinte seqncia de movimentos conduz nalmente o autmato sua congurao
nal (que, neste caso, nica):
(q1, bccc) (q2, ccc) (q2, cc) (q2, c) (q2, )
Seja agora a cadeia aab. Como se pode perceber, no h nenhuma seqncia de movimen-
tos, mesmo considerando-se as duas alternativas para a transio usando a em q0, que conduza o
autmato sua congurao nal. Em um caso, o impasse atingido no estado q1 em decorrncia
do smbolo a; no outro ele ocorre em q2, tambm provocado por a. Como no h mais opes
decorrentes de no-determinismos a serem consideradas, conclui-se que essa cadeia no pertence
linguagem denida pelo autmato. 2
Os autmatos no-determinsticos operam pela busca exaustiva de seqncias que
possibilitem o reconhecimento das cadeias que lhes so apresentadas. Do ponto de vista
terico, admite-se que, toda vez em que houver mais de uma possibilidade de movimen-
tao, o autmato nito no-determinstico se desdobra na quantidade correspondente
de instncias paralelas, cada qual prosseguindo anlise de forma autnoma, a partir
da congurao corrente, e atravs de opes distintas de movimentao. Desse modo, a
aceitao (ou rejeio) da sentena por um autmato nito no-determinstico deve ser
analisada em funo das ltimas conguraes atingidas por todas as suas instncias; se
pelo menos uma delas tiver atingido uma congurao nal, a cadeia ter sido aceita;
caso contrrio, ser rejeitada.
Do ponto de vista prtico, no entanto, no econmico realizar o modelo terico de
operao paralela, acima apresentado, em mquinas seqenciais. Em vez disso, autma-
tos nitos no-determinsticos costumam ser implementados, dentro do modelo seqen-
cial de processamento, atravs de mecanismos de busca exaustiva e de backtracking,
percorrendo-se todos os possveis caminhos que os conduzam (ou no) a conguraes
nais. Por esse motivo, os autmatos nitos no-determinsticos no costumam ter muito
interesse prtico, uma vez que suas realizaes podem tornar-se antieconmicas dentro
desse modelo de implementao. Por outro lado, arquiteturas paralelas, em que cada
processador percorre uma seqncia distinta de movimentaes, possibilitam a obteno
de implementaes bastante ecientes para autmatos nitos no-determinsticos.
A seguir mostrada a equivalncia entre os autmatos nitos no-determinsticos
e os determinsticos, no que diz respeito classe de linguagens que eles so capazes de
reconhecer. A equivalncia, ou equipotncia, de tais classes de autmato, constitui
um dos mais importantes resultados da teoria dos autmatos nitos, sem paralelo para a
maioria dos demais modelos de reconhecedores anteriormente mencionados, uma vez que
garante ser sempre possvel a aceitao de toda e qualquer linguagem regular atravs de
um autmato determinstico.
Antes, porm, preciso introduzir a notao tabular para a representao de
autmatos nitos. De acordo com essa notao, cada linha da tabela representa um
84 Linguagens Formais - Teoria, Modelagem e Implementao
estado distinto q do autmato, e cada coluna associada a um elemento distinto de
seu alfabeto de entrada. As clulas correspondentes interseco de cada linha com cada
coluna so preenchidas com o elemento (conjunto) de 2
Q
determinado por (q, ).
Exemplo 3.11 Considere-se novamente o autmato nito no-determinstico M do Exemplo 3.10
cujo diagrama de estados apresentado na Figura 3.5. A representao tabular de M apresentada
na Tabela 3.3.
a b c
q
0
{q
1
, q
2
}
q
1
{q
1
, q
2
}
q
2
{q
2
}
Tabela 3.3: Notao tabular para o autmato nito no-
determinstico M da Figura 3.5
2
Na notao tabular, como se pode perceber, o estado inicial indicado atravs do
smbolo , ao passo que os estados nais so indicados por . O smbolo indica
um estado que seja simultaneamente inicial e nal.
Teorema 3.3 (Eliminao de no-determinismos) Seja L a linguagem aceita por
um autmato nito no-determinstico sem transies em vazio. Ento possvel denir
um autmato nito determinstico equivalente que aceita L.
Justicativa A equivalncia dos autmatos nitos no-determinsticos sem transies em
vazio com os autmatos nitos determinsticos mostrada atravs de um algoritmo que
permite a construo de autmatos do segundo tipo a partir de autmatos do primeiro
tipo, quaisquer que sejam eles.
O mecanismo de mapeamento baseado na substituio de todas as transies
no-determinsticas do autmato nito no-determinstico original por transies deter-
minsticas para novos estados criados no novo autmato construdo. A m de garantir a
equivalncia das linguagens aceitas pelos dois autmatos, deve-se copiar, para cada um
desses novos estados do autmato nito determinstico resultante, todas as transies que
partem de estados que seriam atingidos pelas transies no-determinsticas do autmato
nito no-determinstico original.
Em outras palavras, para cada transio no-determinstica distinta presente no
autmato original, o algoritmo cria um novo estado e a substitui por uma transio
determinstica para esse novo estado, copiando as transies dos estados que seriam
atingidos pela realizao da transio no-determinstica. Como desse processo pode
resultar a introduo de novos no-determinismos, torna-se necessrio aplic-lo de forma
iterativa at a completa eliminao dos no-determinismos. A Figura 3.6 ilustra essas
idias.
3 Linguagens Regulares 85
q
j
q
i
q
k
q
l
q
m
b
c
a
a
Figura 3.6: Situao no-determinstica original
Suponha-se um autmato qualquer que apresente, como parte de sua especica-
o, uma transio no-determinstica (q
i
, a) = {q
j
, q
k
}. Ao criar um novo estado
q
j
q
k
e substituir as transies anteriores por uma nica e nova transio determinstica
(q
i
, a) = q
j
q
k
, consegue-se fazer com que o autmato modicado aceite a mesma lin-
guagem que o original, sem no entanto apresentar comportamento no-determinstico.
De fato, neste exemplo, em ambas as verses os estados atingidos pelas cadeias ab e ac
so os mesmos: respectivamente q
l
e q
m
. A Figura 3.7 ilustra o autmato modicado.
q
j
q
i
q
k
q
l
q
m
b
c
q
j
q
k
b
c
a
Figura 3.7: Situao determinstica equivalente da Figura 3.6
Fica claro, tambm, que se pelo menos um dos estados, q
j
ou q
k
, for um estado
nal, o mesmo dever acontecer com o estado q
j
q
k
, j que em ambas as verses a cadeia
a deve ser aceita pelo autmato. Por outro lado, caso haja coincidncia entre os smbolos
b e c, um novo no-determinismo ser introduzido no estado q
j
q
k
. Da a necessidade de
se repetir o procedimento, removendo a cada iterao todos os novos no-determinismos
que venham a ser introduzidos.
Seja M
1
= (Q
1
, ,
1
, q
01
, F
1
) o autmato nito no-determinstico originalmente
considerado e M
2
= (Q
2
, ,
2
, q
02
, F
2
) o autmato nito determinstico correspondente
que se deseja obter. A obteno de M
2
a partir de M
1
pode ser efetuada atravs do
Algoritmo 3.4.
Algoritmo 3.4 (Eliminao de no-determinismos) Obteno de um autmato -
nito determinstico M
2
a partir de um autmato nito no-determinstico M
1
.
Entrada: um autmato no-determinstico M
1
= (Q
1
, ,
1
, q
01
, F
1
), com
1
: Q
1

2
Q1
;
86 Linguagens Formais - Teoria, Modelagem e Implementao
Sada: um autmato determinstico M
2
= (Q
2
, ,
2
, q
02
, F
2
), com
2
: Q
2

Q
2
, tal que L(M
2
) = L(M
1
);
Mtodo:
1. Q
2
;
2. i 0, se q
1i
Q
1
ento Q
2
Q
2
{q
2i
};
3. F
2
;
4. i 0, se q
1i
F
1
ento F
2
F
2
{q
2i
};
5.

;
6. q
1i
Q
1
, , se
1
(q
1i
, ) = {q
11
, ..., q
1n
}, n 1 ento
2
(q
2i
, ) =
{q
21
, ..., q
2n
};
7. Substituir todos os elementos {q
2i
} de
2
por q
2i
;
8. Enquanto houver transies no-determinsticas em
2
, faa:
a) Selecione uma transio no-determinstica qualquer
2
(q, ), e con-
sidere
2
(q, ) = {q
21
, ..., q
2i
, ..., q
2n
}, n 2;
b) Acrescente um novo estado q
21
...q
2i
...q
2n
tabela de transio de
estados (nesta notao, os estados do conjunto so concatenados for-
mando uma cadeia, em que os ndices dos estados esto organizados
em ordem crescente, ou em qualquer outra ordem conveniente); se
q
2i
= q
2i1
...q
2im
, considerar a ordenao de todos os estados obtidos
pela substituio de q
2i
por q
2i1
...q
2im
em q
21
...q
2i
...q
2n
;
c) Substitua, na tabela, todas as referncias a {q
21
, ..., q
2n
} por q
21
...q
2n
;
d) Para cada , faa:
i.
2
(q
21
...q
2n
, ) ;
ii. Para cada estado q
2j
{q
21
, ..., q
2n
}, faa:
A.
2
(q
21
...q
2n
, )
2
(q
21
...q
2n
, )
2
(q
2j
, );
B. Se q
2j
F
2
, ento F
2
F
2
{q
21
...q
2n
}.

Exemplo 3.12 Considere-se uma vez mais o autmato no-determinstico M do Exemplo 3.10,
representado na Figura 3.5 e na Tabela 3.3. A aplicao do Algoritmo 3.4 a M conduz obteno
do autmato da Tabela 3.4.
3 Linguagens Regulares 87

a b c
q
0
q
1
q
2
q
1
q
1
q
2
q
2
q
2
q
1
q
2
q
1
q
2
q
2
Tabela 3.4: Autmato determinstico equivalente ao aut-
mato M da Tabela 3.3
Observe-se, inicialmente, a criao de um novo estado, denominado q1q2, em decorrncia
da presena do no-determinismo {q1, q2} na tabela de transio de estados original. As clulas
desse novo estado, ou seja, suas transies, so preenchidas de acordo com o seguinte critrio: como
(q0, a) = {q1, q2}, deve-se considerar todas as transies que partem de q1 e de q2, respectivamente
(q1, b) e (q2, c). Assim, o contedo de (q1, b) copiado para (q1q2, b) e o contedo de (q2, c)
copiado para (q1q2, c). Finalmente, como (q2, c) um estado nal, o novo estado q1q2 tambm
torna-se nal.
Note-se ainda que, apesar de o autmato inicial deste exemplo apresentar duas transies no-
determinsticas ((q0, a) e (q1, b)), apenas um novo estado foi adicionado (q1q2). Isso decorre do
fato de que os estados de destino, em ambos os casos, so os mesmos, no havendo necessidade de
se memorizar a forma atravs da qual tais estados foram atingidos.
Como se pode perceber, a eliminao de no-determinismos implica a criao de novos estados
(Q

), altera a funo de transio de estados (

) e, eventualmente, acrescenta estados nais ao


autmato resultante (F

). comum que, aps essa transformao, o autmato nito determinstico


resultante contenha estados inacessveis, ou seja, estados que no podem ser atingidos a partir do
estado inicial por nenhum caminho.
A Figura 3.8 mostra o diagrama de estados do autmato determinstico obtido neste exemplo.
Deve-se observar que o estado q1 tornou-se inacessvel como resultado da aplicao do mtodo de
eliminao de no-determinismos.
q
0
q
1
q
2
q
2
b
b c
a
q
1
b
Figura 3.8: Autmato determinstico equivalente ao aut-
mato M da Figura 3.5
2
Exemplo 3.13 Considere-se o autmato nito no-determinstico representado na Figura 3.9.
88 Linguagens Formais - Teoria, Modelagem e Implementao
q
0
q
2
q
3
q
1
a
c
a
a, b
c
b
a
b
Figura 3.9: Autmato no-determinstico do Exemplo 3.13
A Tabela 3.5 representa o autmato da Figura 3.9.
a b c
q
0
{q
1
, q
2
} {q
3
}
q
1
{q
0
} {q
0
, q
1
}
q
2
{q
2
}
q
3
{q
2
} {q
1
}
Tabela 3.5: Eliminao de no-determinismos, autmato
inicial
Os seguintes passos correspondem aplicao do Algoritmo 3.4.
Substituir {q0} por q0, {q1} por q1, {q2} por q2 e {q3} por q3:
a b c
q
0
{q
1
, q
2
} q
3
q
1
q
0
{q
0
, q
1
}
q
2
q
2
q
3
q
2
q
1
Tabela 3.6: Eliminao de no-determinismos, passo 1
Criar um novo estado q1q2, substituindo {q1, q2} na tabela por q1q2.
3 Linguagens Regulares 89
a b c
q
0
q
1
q
2
q
3
q
1
q
0
{q
0
, q
1
}
q
2
q
2
q
3
q
2
q
1
q
1
q
2
q
0
{q
0
, q
1
} q
2
Tabela 3.7: Eliminao de no-determinismos, passo 2
Criar um novo estado q0q1, substituindo {q0, q1} na tabela por q0q1.
a b c
q
0
q
1
q
2
q
3
q
1
q
0
q
0
q
1
q
2
q
2
q
3
q
2
q
1
q
1
q
2
q
0
q
0
q
1
q
2
q
0
q
1
{q
1
q
2
, q
0
} q
0
q
1
q
3
Tabela 3.8: Eliminao de no-determinismos, passo 3
Criar um novo estado q0q1q2, substituindo {q1q2, q0} na tabela por q0q1q2.
a b c
q
0
q
1
q
2
q
1
q
0
q
0
q
1
q
2
q
2
q
3
q
2
q
1
q
1
q
2
q
0
q
0
q
1
q
2
q
0
q
1
q
0
q
1
q
2
q
0
q
1
q
0
q
1
q
2
q
0
q
1
q
2
q
0
q
1
{q
2
, q
3
}
Tabela 3.9: Eliminao de no-determinismos, passo 4
Criar um novo estado q2q3, substituindo {q2, q3} na tabela por q2q3.
90 Linguagens Formais - Teoria, Modelagem e Implementao
a b c
q
0
q
1
q
2
q
1
q
0
q
0
q
1
q
2
q
2
q
3
q
2
q
1
q
1
q
2
q
0
q
0
q
1
q
2
q
0
q
1
q
0
q
1
q
2
q
0
q
1
q
0
q
1
q
2
q
0
q
1
q
2
q
0
q
1
q
2
q
3
q
2
q
3
q
2
q
1
q
2
Tabela 3.10: Eliminao de no-determinismos, autmato
nal
A Figura 3.10 apresenta o diagrama de estados do autmato determinstico obtido. O estado
q3, que inacessvel, no est mostrado na gura.
q
0
q
1
q
2
q
0
q
1
q
0
q
1
q
2
q
1
q
2
q
2
q
3
a b a
a
b
c
c
a, c
c
b a
a
b
b
Figura 3.10: Autmato determinstico equivalente ao da
Figura 3.9
2
Os estados criados de acordo com o Algoritmo 3.4 tm como funo reproduzir
o comportamento do autmato no-determinstico original no novo autmato determi-
nstico, considerando-se todas as transies possveis de serem executadas em cada um
dos estados que so destinos de uma mesma transio no-determinstica do autmato
original.
Se, por exemplo, (q
i
, ) = {q
j
, q
k
, q
m
}, o estado q
j
q
k
q
m
do autmato determins-
tico atender ao propsito de permitir que o novo autmato se movimente, a partir deste
estado, com transies similares s originalmente presentes em cada um dos estados q
j
,
q
k
e q
m
do autmato no-determinstico.
Dessa forma, o surgimento de novos estados no autmato determinstico limi-
tado pela quantidade de combinaes distintas que podem ser feitas entre os estados do
autmato no-determinstico original. Se M
1
= (Q
1
, ,
1
, q
0
, F
1
) o autmato original
3 Linguagens Regulares 91
no-determinstico, e M
2
= (Q
2
, ,
2
, q
0
, F
2
) o autmato determinstico equivalente,
ento |Q
2
| 2
|Q1|
1, uma vez que toda combinao de estados dever conter pelo
menos um estado do autmato original.
Exemplo 3.14 A eliminao dos no-determinismos do autmato nito representado na Tabela 3.11
resulta no autmato determinstico da Tabela 3.12.
Como se pode perceber, Q1 = {q0, q1, q2} e Q2 = {q0, q1, q2, q0q1, q0q2, q1q2, q0q1q2}. Alm
disso, |Q1| = 3 e |Q2| = 2
3
1 = 7. Trata-se, portanto, de um autmato determinstico no
qual todas as combinaes possveis dos estados do autmato original no-determinstico esto
consideradas.
a b
q
0
{q
1
, q
2
}
q
1
q
2
{q
0
, q
2
} {q
0
, q
1
}
Tabela 3.11: Autmato nito no-determinstico do Exem-
plo 3.14
a b
q
0
q
1
q
2
q
1
q
2
q
0
q
2
q
0
q
1
q
1
q
2
q
0
q
2
q
0
q
1
q
0
q
1
q
1
q
2
q
0
q
2
q
1
q
2
, q
0
q
2
q
0
q
1
q
0
q
1
q
2
q
0
q
1
q
2
q
0
q
1
Tabela 3.12: Autmato nito determinstico equivalente
ao da Tabela 3.11
2
Note-se que nem sempre a eliminao de no-determinismos de um autmato nito
faz surgir tantos novos estados, como acontece no Exemplo 3.14. Na prtica, costumam
surgir alguns estados novos, mas no todos os possveis, e tambm alguns dos estados
antigos eventualmente tornam-se inacessveis, podendo ser eliminados, de forma que,
tipicamente, h um aumento do nmero de estados, mas em geral esse nmero no
costuma atingir esse limite extremo.
Como concluso da apresentao do Teorema 3.3, e com base no Algoritmo 3.4,
deve-se acrescentar que possvel garantir, no caso geral, a existncia de um autmato
nito determinstico equivalente a qualquer autmato nito no-determinstico fornecido.
Dessa maneira, o fato de um autmato nito ser no-determinstico no o torna mais
poderoso quanto classe de linguagens que capaz de reconhecer, quando comparado
com os autmatos nitos determinsticos. Por se tratar, este ltimo, de um modelo de
reconhecimento que permite gerar implementaes extremamente ecientes, conclui-se
ser sempre possvel a obteno de modelos com tais caractersticas, independentemente
da forma como o autmato se manifesta originalmente quanto ao seu determinismo.
Por outro lado, a existncia de autmatos no-determinsticos que sejam equivalen-
tes a autmatos determinsticos imediata, pois a incorporao de no-determinismos
92 Linguagens Formais - Teoria, Modelagem e Implementao
pode ser feita trivialmente, sem alterar a linguagem aceita pelo autmato: basta, por
exemplo, incorporar um caminho adicional alternativo que aceite qualquer seqncia de
smbolos, a partir de qualquer estado, iniciada por um smbolo que j seja consumido
a partir daquele estado, sem, no entanto, permitir que alguma congurao nal seja
atingida.
Exemplo 3.15 Considere-se M, o autmato determinstico da Figura 3.11:
q
0
q
1
q
2
a
b
c
Figura 3.11: Autmato M determinstico que aceita
a(bca)

O acrscimo de um nico novo estado q3 e da transio (q2, c) = q3 j seria suciente


para tornar M no-determinstico, sem no entanto alterar a linguagem por ele aceita (a(bca)

).
Naturalmente, inmeros autmatos podem ser construdos dessa maneira. A Figura 3.12 apresenta
um exemplo.
q
0
q
1
q
2
a
b
c
q
3
q
4
c
a
a
Figura 3.12: Autmato no-determinstico equivalente ao
autmato da Figura 3.11
2
Autmatos Finitos No-Determinsticos com Transies em Vazio
Autmatos nitos no-determinsticos que apresentam transies em vazio so aqueles
que admitem transies de um estado para outro com , alm das transies normais, que
utilizam os smbolos do alfabeto de entrada. Transies em vazio podem ser executadas
sem que seja necessrio consultar o smbolo corrente da ta de entrada, e sua execuo
nem sequer causa o deslocamento do cursor de leitura. Com a introduo de transies
em vazio, a funo de transio para autmatos nitos no-determinsticos passa a ter
seu domnio alterado para:
: Q ( {}) 2
Q
Quando um autmato transita em vazio, isso signica que ele muda de estado sem
consultar a cadeia de entrada. Sempre que ocorrer a coexistncia entre alguma transio
em vazio e outras transies (vazias ou no) com origem em um mesmo estado, isso
3 Linguagens Regulares 93
acarreta a necessidade de uma escolha arbitrria da transio a ser aplicada na respectiva
congurao, e isso, por sua vez, caracteriza a manifestao de um no-determinismo.
Exemplo 3.16 Seja M = (Q, , , q0, F) um autmato nito com transies em vazio.
Q = {q0, q1}
= {a, b}
= {(q0, a) {q0}, (q0, ) {q1}, (q1, b) {q1}}
F = {q1}
A linguagem aceita por esse autmato a

, conforme pode ser deduzido a partir do diagrama


de estados da Figura 3.13.
q
0
q
1

a b
Figura 3.13: Autmato com transio em vazio
Tomando-se a cadeia de entrada ab como exemplo, as duas seqncias de movimentao
possveis a partir da congurao inicial seriam:
1. (q0, ab) (q0, b) (q1, b) (q1, ) (sucesso)
2. (q0, ab) (q1, ab) (impasse)
No segundo caso, o impasse ocorre devido aplicao da transio (q0, ) q1 logo ao
incio do reconhecimento, antes de ser efetuada a leitura do smbolo a. No primeiro caso, ocorre a
aceitao da sentena, pois a utilizao da transio em vazio foi efetuada em um ponto favorvel
pelo autmato, ou seja, entre a utilizao dos smbolos a e b da cadeia de entrada. 2
Apesar de constituir uma generalizao da denio dos autmatos nitos no-
determinsticos (basta comparar as respectivas funes de transio: Q 2
Q
versus
Q ( {}) 2
Q
), possvel demonstrar que a incorporao de transies em vazio
ao autmato em nada aumenta o seu poder de reconhecimento. Em outras palavras,
toda e qualquer linguagem que seja aceita por um autmato nito no-determinstico
que apresente transies em vazio pode tambm ser aceita por um autmato equivalente,
sem transies em vazio.
A equivalncia dessas duas classes de autmatos desenvolvida a partir da discusso
de um algoritmo que possibilite a converso sistemtica de autmatos nitos quaisquer
em uma verso equivalente, porm isenta de transies em vazio.
Teorema 3.4 (Eliminao de transies em vazio, verso 1) Todo autmato que
contenha transies em vazio gera uma linguagem que aceita por algum autmato nito
que no contm transies em vazio.
Justicativa Sejam M = (Q, , , q
0
, F) um autmato nito contendo transies em
vazio, representado em notao tabular, e N = (Q, ,

, q
0
, F

) o autmato nito sem


transies em vazio correspondente que a partir dele se deseja obter. A obteno de N
a partir de M pode ser efetuada atravs do Algoritmo 3.5.
94 Linguagens Formais - Teoria, Modelagem e Implementao
Algoritmo 3.5 (Eliminao de transies em vazio, verso 1) Obteno de um
autmato nito N, sem transies em vazio, a partir de um autmato nito M, com
transies em vazio.
Entrada: um autmato nito com transies em vazio M;
Sada: um autmato nito sem transies em vazio N, tal que L(N) = L(M);
Mtodo:
1. Eliminao das transies em vazio
Considere-se um estado qualquer q
i
Q. Se houver uma transio em vazio
de q
i
para q
j
, deve-se elimin-la, copiando-se para a linha que representa
o estado q
i
todas as transies que partem dos estados q
j
para os quais
feita a transio em vazio.
Esse procedimento corresponde, em notao tabular, realizao de uma
fuso (merge) entre a linha do estado q
i
que contm a transio em vazio
para o estado-destino q
j
e a prpria linha do estado q
j
, armazenando-se o
resultado novamente na linha correspondente ao estado q
i
.
Havendo mais de uma transio em vazio indicadas, deve-se repetir cumu-
lativamente o procedimento para todas elas.
Se (q
i
, ) F, ento F

{q
i
}, sendo que inicialmente F

F.
2. Iterao
Repetir o passo anterior para os demais estados do autmato, at que todos
eles tenham sido considerados (ou seja, at que a ltima linha tenha sido
atingida).
Nos casos em que houver transies em vazio para estados que por sua vez
tambm transitam em vazio para outros estados, ser necessrio iterar o
procedimento vrias vezes sobre a tabela, at que todas as transies em
vazio tenham sido eliminadas.

O algoritmo funciona atravs da substituio de transies em vazio por cpias das


transies que partem dos estados que seriam atingidos pelas transies em vazio. As
nicas mudanas do autmato dizem respeito funo de transio

, que se torna
denida para alguns elementos do domnio de anteriormente indenidos (

, na notao
tabular, torna-se menos esparsa), e ao conjunto de estados nais F

, que eventualmente
se amplia se existirem caminhos formados exclusivamente por transies em vazio que
interligam estados nais a outros estados do autmato.
Exemplo 3.17 Considere-se o autmato nito M do Exemplo 3.16, representado na Tabela 3.13.
3 Linguagens Regulares 95
a b
q
0
q
0
q
1
q
1
q
1
Tabela 3.13: Autmato original apresentando transies
em vazio
Como h uma transio em vazio de q0 para q1, deve-se copiar as transies de q1 para q0
((q1, b) apenas, neste caso) e, alm disso, considerar q0 como estado nal, uma vez que q1 estado
nal. A Tabela 3.14 representa a funo de transio

a b
q
0
q
0
q
1
q
1
q
1
Tabela 3.14: Autmato equivalente ao da Tabela 3.13,
porm isento de transies em vazio
O diagrama de estados do autmato nito correspondente, sem transies em vazio, apre-
sentado na Figura 3.14.
q
0
q
1
b
a b
Figura 3.14: Autmato equivalente ao da Tabela 3.14, eli-
minadas as transies em vazio
2
A seguir, ser apresentado um algoritmo alternativo para a eliminao de transi-
es em vazio da especicao de um autmato nito. Diferentemente do anterior, este
algoritmo no exige a manipulao da tabela que representa o autmato. possvel
demonstrar que, apesar de no serem obrigatoriamente iguais, os autmatos obtidos pela
aplicao dos dois mtodos so equivalentes (no sentido de reconhecerem exatamente a
mesma linguagem).
Inicialmente, so apresentadas duas novas denies: o Fechamento- de um estado
e a funo de transio estendida .
A funo Fechamento-: Q 2
Q
denida de forma indutiva e pode ser calculada
conforme o Algoritmo 3.6.
Algoritmo 3.6 (Fechamento-) Clculo do Fechamento- de um estado q
i
.
Entrada: um autmato nito M = (Q, , , Q
0
, F) e um estado q
i
Q;
Sada: Fechamento-(q
i
);
Mtodo:
1. Fechamento-(q
i
) {q
i
};
96 Linguagens Formais - Teoria, Modelagem e Implementao
2. Fechamento-(q
i
) Fechamento-(q
i
) (q
i
, );
3. q
j
(q
i
, ), Fechamento-(q
i
) Fechamento-(q
i
) Fechamento-(q
j
).
A funo Fechamento-(q
i
) corresponde ao conjunto de estados que podem ser atin-
gidos a partir do estado q
i
pela aplicao exclusiva de transies em vazio.
Exemplo 3.18 Considere-se o autmato da Figura 3.15:
q
0
q
1
q
2

a b c

Figura 3.15: Autmato com transies em vazio


De acordo com a denio:
Fechamento-(q0) = {q0, q1, q2}
Fechamento-(q1) = {q1, q2}
Fechamento-(q2) = {q1, q2}
2
A funo de transio estendida : Q

2
Q
tambm denida de forma
indutiva, conforme o Algoritmo 3.7.
Algoritmo 3.7 (Funo de transio estendida ) Clculo da funo de transio
estendida .
Entrada: um autmato nito M = (Q, , , Q
0
, F), um estado q
i
Q e uma
cadeia

;
Sada: (q
i
, );
Mtodo:
1. (q
i
, ) Fechamento-(q
i
);
2. (q
i
, )
_
k
Fechamento-(q
k
), com q
j
(q
i
, ), q
k
(q
j
, ),

, .
Exemplo 3.19 Considerando-se o autmato do Exemplo 3.18:
O clculo de (q0, a) corresponde a:
(q0, ) = Fechamento-(q0) = {q0, q1, q2}
3 Linguagens Regulares 97
(q0, a) = {q0}
(q1, a) =
(q2, a) =
Fechamento-(q0) = Fechamento-(q0) = {q0, q1, q2}
Logo, (q0, a) = {q0, q1, q2}.
O clculo de (q0, ab) corresponde a:
(q0, ) = Fechamento-(q0) = {q0, q1, q2}
(q0, a) = {q0}
(q1, a) =
(q2, a) =
Fechamento-(q0) = {q0, q1, q2}
(q0, b) =
(q1, b) = {q1}
(q2, b) =
Fechamento-(q1) = {q1, q2}
Logo, (q0, ab) = {q1, q2}.
2
Considere-se

. Se = , ento (q
i
, ) corresponde ao conjunto dos estados
que podem ser alcanados a partir de q
i
pelo uso exclusivo de transies em vazio. Se,
no entanto, = , (q
i
, ) deve ser interpretado como sendo o conjunto dos estados
que podem ser atingidos a partir do estado q
i
, considerando-se todas as possibilidades
de movimentao em vazio que o autmato oferece. Note-se que todos os smbolos de
devero ser consumidos nessa operao.
Um caso particular da funo especialmente interessante: aquele em que a
cadeia contm um nico smbolo : (q
i
, ), q
i
Q, . Neste caso, (q
i
, )
corresponde ao conjunto dos estados que podem ser atingidos aps o consumo de ,
considerando-se todas as possibilidades de transies em vazio que podem ocorrer antes
e depois do consumo do mesmo: ... , ... , ...... ou simplesmente . Esse
aspecto pode ser melhor compreendido com o auxlio da Figura 3.16, que apresenta a
especicao parcial de um autmato contendo transies em vazio:
q
j
q
i
q
k
q
l
q
m
a

a
Figura 3.16: Autmato original, com transies em vazio
As seguintes relaes so verdadeiras:
(q
i
, a) = {q
j
, q
l
, q
k
, q
m
}, pois:
98 Linguagens Formais - Teoria, Modelagem e Implementao
(q
i
, a) (q
j
, a) (q
l
, )
(q
i
, a) (q
j
, a) (q
l
, ) (q
j
, )
(q
i
, a) (q
k
, )
(q
i
, a) (q
k
, ) (q
m
, )
(q
j
, a) = {q
j
, q
l
}, pois:
(q
j
, a) (q
l
, )
(q
j
, a) (q
l
, ) (q
j
, )
(q
l
, a) = {q
j
, q
l
}, pois:
(q
l
, a) (q
j
, a) (q
l
, )
(q
l
, a) (q
j
, a) (q
l
, ) (q
j
, )
(q
k
, a) =
(q
m
, a) =
A Figura 3.17 apresenta uma verso modicada desse mesmo trecho do autmato,
tendo a funo de transio original sido substituda pela nova funo de transio ,
acima calculada:
q
j
q
i
q
k
q
l
q
m
a
a
a
a
a
a
a
a
Figura 3.17: Autmato equivalente ao da Figura 3.16, elimina-
das todas as transies em vazio
Exemplo 3.20 Dando seqncia ao Exemplo 3.19, apresenta-se a seguir o valor da funo para cada
elemento do conjunto Q. Em cada caso, so indicadas as vrias possibilidades de movimentao
que o autmato possui a partir de q Q no reconhecimento da cadeia , e que so consideradas
no clculo da funo :
(q0, a) = {q0, q1, q2}
(q0, a) (q0, )
3 Linguagens Regulares 99
(q0, a) (q0, ) (q1, )
(q0, a) (q0, ) (q1, ) (q2, )
(q0, a) (q0, ) (q1, ) (q2, ) (q1, )
(q0, a) (q0, ) (q1, ) (q2, ) (q1, ) (q2, )
etc.
(q1, a) =
O smbolo a no pode ser consumido a partir do estado q1
(q2, a) =
O smbolo a no pode ser consumido a partir do estado q2
(q0, b) = {q1, q2}
(q0, b) (q1, b) (q1, )
(q0, b) (q1, b) (q1, ) (q2, )
(q0, b) (q1, b) (q1, ) (q2, ) (q1, )
etc.
(q1, b) = {q1, q2}
(q1, b) (q1, )
(q1, b) (q1, ) (q2, )
(q1, b) (q1, ) (q2, ) (q1, )
(q1, b) (q1, ) (q2, ) (q1, ) (q2, )
etc.
(q2, b) = {q1, q2}
(q2, b) (q1, b) (q1, )
(q2, b) (q1, b) (q1, ) (q2, )
(q2, b) (q1, b) (q2, b) (q1, b) (q1, )
(q2, b) (q1, b) (q2, b) (q1, b) (q1, ) (q2, )
etc.
(q0, c) = {q1, q2}
(q0, c) (q1, c) (q2, c) (q2, )
(q0, c) (q1, c) (q2, c) (q2, ) (q1, )
100 Linguagens Formais - Teoria, Modelagem e Implementao
(q0, c) (q1, c) (q2, c) (q2, ) (q1, ) (q2, )
etc.
(q1, c) = {q1, q2}
(q1, c) (q2, c) (q2, )
(q1, c) (q2, c) (q2, ) (q1, )
(q1, c) (q2, c) (q1, c) (q2, c) (q2, )
(q1, c) (q2, c) (q1, c) (q2, c) (q2, ) (q1, )
etc.
(q2, c) = {q1, q2}
(q2, c) (q2, )
(q2, c) (q2, ) (q1, )
(q2, c) (q2, ) (q1, ) (q2, )
(q2, c) (q1, c) (q2, c) (q2, )
(q2, c) (q1, c) (q2, c) (q1, c) (q2, c) (q2, )
etc.
2
A linguagem L aceita por um autmato nito M denido atravs da funo de
transio pode ser, portanto, representada tambm como:
L(M) = {w

| (q
0
, w) F = }
O Teorema 3.4, que estabelece a equivalncia dos autmatos nitos com e sem tran-
sies em vazio, est demonstrado novamente a seguir, usando desta vez como argumento
o Algoritmo 3.8, que sintetiza a segunda tcnica estudada. O teorema complementar,
acerca da existncia de autmatos com transies em vazio que sejam equivalentes a
autmatos sem transies em vazio, dispensa demonstrao, pois a adio de transies
em vazio pode ser feita com facilidade, sem alterar a linguagem aceita pelo autmato.
Teorema 3.5 (Eliminao de transies em vazio, verso 2) Todo autmato que
contenha transies em vazio gera uma linguagem que aceita por algum autmato nito
que no contm transies em vazio.
Justicativa Sejam M
1
= (Q
1
, ,
1
, q
10
, F
1
) um autmato nito contendo transies
em vazio e
1
a funo de transio estendida que o caracteriza. O autmato M
2
=
(Q
2
, ,
2
, q
20
, F
2
), construdo de acordo com os passos do Algoritmo 3.8, tal que
L(M
2
) = L(M
1
).
Algoritmo 3.8 (Eliminao de transies em vazio, verso 2) Eliminao de tran-
sies em vazio usando a funo de transio estendida .
Entrada: um autmato nito M
1
= (Q
1
, ,
1
, q
10
, F
1
), com transies em vazio;
3 Linguagens Regulares 101
Sada: um autmato nito M
2
= (Q
2
, ,
2
, q
20
, F
2
), sem transies em vazio, e
tal que L(M
2
) = L(M
1
);
Mtodo:
1. Q
2
;
2. i 0, se q
1i
Q
1
ento Q
2
Q
2
{q
2i
};
3. F
2
;
4. i 0, se q
1i
F
1
ento F
2
F
2
{q
2i
};
5. Se Fechamento-(q
10
) F
1
= , ento F
2
F
2
{q
20
};
6.
2
;
7. q
1i
Q
1
,
m
, se
1
(q
1i
,
m
) = {q
1m
, q
1n
, ..., q
1p
}, ento
2

2

{(q
2i
,
m
) {q
2m
, q
2n
, ..., q
2p
}}.
A denio da funo
2
a partir da funo
1
faz com que as transies em vazio de
M
1
sejam substitudas por transies no-vazias em M
2
, de tal forma que todos os estados
possveis de serem atingidos pela ao de transies que consumam algum smbolo em
M
1
sejam os mesmos quando as transies ocorrem em M
2
. Assim, M
2
simula M
1
.
Por outro lado, a eliminao das transies em vazio de M
1
pode provocar um efeito
colateral indesejado em M
2
: caso a cadeia vazia pertena linguagem aceita por M
1
, a
mesma no ser aceita por M
2
. Se a cadeia vazia aceita por M
1
, ento uma das duas
situaes verdadeira:
q
01
estado nal, ou
Fechamento-(q
01
) F
1
=
Se q
01
F
1
, ento q
02
F
2
e L(M
2
), logo L(M
1
) = L(M
2
). Se, no entanto,
q
01
F
1
, ento q
02
dever ser acrescentado ao conjunto de estados nais de M
2
, a m de
que a cadeia vazia possa ser aceita por M
2
tambm. Se L(M
1
), no h nada a fazer.
Em outras palavras: se houver um caminho formado apenas por transies vazias entre
q
01
e algum estado nal de M
1
, q
02
dever ser tornado tambm um estado nal em M
2
.
Exemplo 3.21 A eliminao de transies em vazio no autmato do Exemplo 3.20 d origem ao
autmato da Tabela 3.15.

2
a b c
q
20
{q
20
, q
21
, q
22
} {q
21
, q
22
} {q
21
, q
22
}
q
21
{q
21
, q
22
} {q
21
, q
22
}
q
22
{q
21
, q
22
} {q
21
, q
22
}
Tabela 3.15: Autmato equivalente ao do Exemplo 3.20,
eliminadas as suas transies em vazio
102 Linguagens Formais - Teoria, Modelagem e Implementao
Como q12 Fechamento-(q10), ento q20 torna-se um estado nal no novo autmato cujas
transies em vazio foram eliminadas. A Figura 3.18 representa o autmato da Tabela 3.15 na forma
de um diagrama de estados.
q
20
q
21
q
22
a
b, c
a, b, c b, c
b, c
a, b, c
b, c
Figura 3.18: Autmato equivalente ao do Exemplo 3.20,
eliminadas as suas transies em vazio
2
Os modelos de autmato nito considerados at o presente momento foram:
1. Determinstico sem transies em vazio, com : Q Q;
2. No-determinstico sem transies em vazio, com : Q 2
Q
;
3. No-determinstico com transies em vazio, com : Q ( {}) 2
Q
;
Para completar o quadro de possibilidades, dene-se o modelo de autmato nito
determinstico com transies em vazio:
4. Determinstico com transies em vazio, com : Q ( {}) Q.
Considerados todos os casos, cumpre retomar a discusso sobre o conceito de no-
determinismo e a relao do mesmo com a forma atravs da qual so denidas as funes
de transio dos autmatos nitos.
Se, por um lado, os autmatos dos modelos (2) e (3) so ditos no-determinsticos,
isso no signica que, em casos particulares, sua operao no possa ocorrer de forma
determinstica (ver Exemplo 3.22). Por outro lado, os autmatos do modelo (4), apesar
de denominados determinsticos, podem perfeitamente exibir um comportamente no-
determinstico durante sua operao (ver Exemplo 3.23). Os autmatos do modelo (1),
por sua vez, exibem sempre um comportamento determinstico.
Exemplo 3.22 Seja M1 = ({q0, q1, q2}, {a, b}, , q0, {q2}) um autmato nito no-determinstico
cuja funo de transio denida como:
(q0, a) = {q0}
(q0, b) = {q1}
(q1, ) = {q2}
Qualquer que seja a congurao corrente (qi , ) considerada, existe sempre, no mximo,
uma nica transio de M1 que pode ser aplicada e, portanto, no mximo, uma nica prxima
congurao possvel. Logo, a operao de M1 sempre determinstica. 2
3 Linguagens Regulares 103
Exemplo 3.23 Seja M2 = ({q0, q1}, {a, b}, , q0, {q1}) um autmato nito no-determinstico cuja
funo de transio denida como:
(q0, a) = q0
(q0, b) = q0
(q0, ) = q1
Considere-se a cadeia de entrada a. As seguintes seqncias de movimentaes so vlidas em
M2:
(q0, a) (q0, )
(q0, a) (q1, a)
Logo, a operao de M2 , nesse caso, no-determinstica. 2
Como mostram os Exemplos 3.22 e 3.23, o que efetivamente determina o comporta-
mento que um autmato exibe durante a sua operao (se determinstico ou no) no o
formato genrico da funo de transio adotoda, mas as especicidades de sua prpria
denio.
Assim, um autmato no-determinstico do modelo (2) pode operar de forma de-
terminstica se:
q Q, , tal que |(q, )| 2;
Um autmato no-determinstico do modelo (3) pode operar de forma determinstica
se:
q Q, , tal que |(q, )| 2, e
q Q, tal que |(q, )| 2, e
q Q, , tal que |(q, )| 1 e |(q, )| 1.
Um autmato determinstico do modelo (4), por sua vez, pode operar de forma
no-determinstica, se:
q Q, tal que (q, ) e (q, ) so denidas.
Portanto, o (no-)determinismo de um autmato transcende o formato geral de sua
funo de transio , dependendo, efetivamente, das caractersticas especcas dessa
mesma funo. A nica exceo so os autmatos do modelo (1), cuja operao sempre
determinstica, independentemente de como seja denida a funo de transio.
Estados Inacessveis e Inteis
Nem todos os estados de um autmato necessariamente contribuem para a denio da
linguagem por ele aceita. Estados inacessveis e estados inteis so os mais importantes
representantes desta categoria de estados, os primeiros porque no podem ser alcanados
a partir do estado inicial do autmato, e os demais porque no levam a nenhum dos
estados nais. Na Figura 3.19, q
1
um estado inacessvel e q
2
um estado intil.
104 Linguagens Formais - Teoria, Modelagem e Implementao
q
0
q
1
q
3
q
2
a
b
c
Figura 3.19: Ilustrao dos conceitos de estado inacessvel (q
1
)
e de estado intil (q
2
)
Por se tratar de estados sem relevncia, no que se refere linguagem que se est
denindo, geralmente desejvel que os mesmos sejam simplesmente eliminados do aut-
mato, possibilitando assim sua simplicao.
Estados inacessveis so aqueles para os quais no existe no autmato qualquer
caminho, formado por transies vlidas, que permita atingi-los a partir do estado inicial
do autmato. Eles podem ocorrer, por exemplo, como conseqncia direta da aplicao
dos mtodos anteriormente propostos para a eliminao de no-determinismos e/ou da
remoo de transies em vazio. O mtodo a seguir apresentado permite a identicao e
a eliminao sistemtica de estados inacessveis eventualmente presentes em um autmato
M qualquer. Observe-se que o estado inicial de um autmato sempre acessvel, fato este
que ser explorado como base do raciocnio indutivo implcito no algoritmo proposto.
Seja M = (Q
1
, ,
1
, q
10
, F
1
) um autmato nito qualquer. Formalmente, um estado
q
1i
Q
1
dito inacessvel quando no existir caminho, formado por transies vlidas,
que conduza o autmato do seu estado inicial q
10
at o estado q
1i
. Em outras palavras,
no existe

tal que (q
10
, ) = q
1i
. Caso contrrio, o estado q
1i
dito acessvel.
Estados inacessveis no contribuem para a denio da linguagem aceita por M,
podendo ser sistematicamente identicados e eliminados do conjunto de estados, sem
prejuzo para a linguagem aceita pelo autmato. O Algoritmo 3.9, a seguir esboado,
permite construir um autmato nito N = (Q
2
, ,
2
, q
20
, F
2
) isento de estados inacess-
veis, tal que L(N) = L(M).
Algoritmo 3.9 (Eliminao de estados inacessveis, verso 1) Obteno de um
autmato sem estados inacessveis equivalente a outro com estados inacessveis.
Entrada: um autmato nito M = (Q
1
, ,
1
, q
10
, F
1
);
Sada: um autmato nito N = (Q
2
, ,
2
, q
20
, F
2
), isento de estados inacessveis,
e tal que L(N) = L(M);
Mtodo:
1. Q
20
{q
20
};
2. i 1;
3. Q
2i
Q
2(i1)
{q
2k
| q
1k
Q
1
e
1
(p, ) = q
1k
, p Q
2(i1)
, (
{})};
4. Se Q
2i
= Q
2(i1)
, ento i i + 1 e desviar para (3); caso contrrio,
Q
2
Q
2i
;
3 Linguagens Regulares 105
5. F
2
{q
2k
Q
2
| q
1k
F
1
};
6.
2
{(q
2i
, ) q
2j
| (q
1i
, ) q
1j

1
e q
2i
, q
2j
Q
2
}.
Considere-se a funo de transio representada na forma tabular. Acrescentem-se
duas novas colunas tabela: a primeira, denominada acessvel, com a funo de marcar
os estados acessveis, e a segunda, denominada considerado, cuja funo indicar que o
correspondente estado j foi levado em conta pelo mtodo. O Algoritmo 3.10 apresenta
um mtodo prtico que sistematiza a identicao de estados inacessveis.
Algoritmo 3.10 (Eliminao de estados inacessveis, verso 2) Obteno de um
autmato sem estados inacessveis equivalente a outro com estados inacessveis.
Entrada: um autmato nito M = (Q
1
, ,
1
, q
10
, F
1
), representado na notao
tabular;
Sada: um autmato nito N = (Q
2
, ,
2
, q
20
, F
2
), isento de estados inacessveis,
e tal que L(N) = L(M);
Mtodo:
1. Considere-se a linha correspondente ao estado inicial de M. Marque-se este
estado como acessvel na coluna apropriada.
2. Para cada clula, desta linha da tabela, que contiver o nome de algum
estado, marcar tal estado, na linha correspondente, como acessvel. Por
ltimo, marque-se o estado corrente como considerado.
3. Escolha-se arbitrariamente qualquer outro estado que tenha sido previa-
mente marcado como acessvel, mas que ainda no esteja marcado como
considerado. Repitam-se os passos (2) e (3) at que no mais existam na
tabela estados acessveis, porm no considerados.
4. N denido a partir de M eliminando-se todos os estados inacessveis (ou
seja, aqueles que no foram marcados como acessveis pelo algoritmo), bem
como todas as transies que deles partem ou a eles chegam.
Exemplo 3.24 Seja M = (Q, , , q0, F), representado atravs da Tabela 3.16.
a b c d e f g
q
0
q
0
q
4
q
3
q
1
q
4
q
1
q
2
q
4
q
1
q
3
q
4
q
4
q
3
q
5
q
5
q
0
q
5
Tabela 3.16: Autmato original com estados inacessveis
106 Linguagens Formais - Teoria, Modelagem e Implementao
Iniciando o procedimento:
Marca-se q0 como acessvel
a b c d e f g Acessvel Considerado
q
0
q
0
q
4
q
3

q
1
q
4
q
1
q
2
q
4
q
1
q
3
q
4
q
4
q
3
q
5
q
5
q
0
q
5
Tabela 3.17: Autmato original com estados inacessveis,
q0 acessvel
Tratando o (nico) estado acessvel ainda no considerado q0 (o qual referencia q0, q4 e q3):
q0 j estava marcado como acessvel
q4 marcado como acessvel
q3 tambm marcado como acessvel
Ao nal, q0 marcado como considerado
a b c d e f g Acessvel Considerado
q
0
q
0
q
4
q
3

q
1
q
4
q
1
q
2
q
4
q
1
q
3
q
4

q
4
q
3
q
5

q
5
q
0
q
5
Tabela 3.18: Autmato original com estados inacessveis,
q0 considerado
Tratando (arbitrariamente) o estado acessvel no-considerado q3 (o qual referencia q4):
q4 j estava marcado como acessvel
Ao nal, q3 marcado como considerado
3 Linguagens Regulares 107
a b c d e f g Acessvel Considerado
q
0
q
0
q
4
q
3

q
1
q
4
q
1
q
2
q
4
q
1
q
3
q
4

q
4
q
3
q
5

q
5
q
0
q
5
Tabela 3.19: Autmato original com estados inacessveis,
q3 considerado
Tratando o (nico) estado acessvel no-considerado q4 (o qual referencia q3 e q5):
q3 j estava marcado como acessvel
q5 marcado como acessvel
Ao nal, q4 marcado como considerado
a b c d e f g Acessvel Considerado
q
0
q
0
q
4
q
3

q
1
q
4
q
1
q
2
q
4
q
1
q
3
q
4

q
4
q
3
q
5

q
5
q
0
q
5

Tabela 3.20: Autmato original com estados inacessveis,
q4 considerado
Tratando o (nico) estado acessvel no-considerado q5 (o qual referencia q0 e q5):
q0 j estava marcado como acessvel
q5 tambm j estava marcado como acessvel
Ao nal, q5 marcado como considerado
a b c d e f g Acessvel Considerado
q
0
q
0
q
4
q
3

q
1
q
4
q
1
q
2
q
4
q
1
q
3
q
4

q
4
q
3
q
5

q
5
q
0
q
5

Tabela 3.21: Autmato original com estados inacessveis,
q5 considerado
108 Linguagens Formais - Teoria, Modelagem e Implementao
Nada mais havendo para fazer, o algoritmo se encerra descartando as duas colunas auxiliares
e as linhas correspondentes aos estados q1 e q2, que permaneceram sem a marca acessvel at o
nal. Resulta o autmato da Tabela 3.22.
a b c d e f g
q
0
q
0
q
4
q
3
q
3
q
4
q
4
q
3
q
5
q
5
q
0
q
5
Tabela 3.22: Autmato equivalente ao da Tabela 3.16,
eliminados os estados inacessveis
2
Estados inteis so estados que, apesar de poderem ser alcanados a partir do
estado inicial do autmato, no conduzem a nenhum de seus estados nais. Logo, eles
em nada contribuem para a aceitao de sentenas da linguagem denida pelo autmato,
podendo portanto ser removidos sem qualquer prejuzo para a linguagem reconhecida.
Estados inteis podem ser sistematicamente identicados e eliminados usando-se
para isso o Algoritmo 3.11. A base de induo usada no algoritmo de eliminao de
estados inteis ser o conjunto dos estados nais do autmato, que, por denio, so
sempre teis (todo estado nal reconhece pelo menos uma cadeia, a cadeia vazia). Na-
turalmente, se no houver estados nais no autmato, todos os seus estados podem ser
declarados inteis, e a linguagem por ele denida ser vazia.
Seja M = (Q
1
, ,
1
, q
10
, F
1
) o autmato original e N = (Q
2
, ,
2
, q
20
, F
2
) o aut-
mato que se deseja obter. O Algoritmo 3.11 permite a obteno sistemtica de N a partir
de M.
Algoritmo 3.11 (Eliminao de estados inteis, verso 1) Obteno de um aut-
mato sem estados inteis equivalente a outro com estados inteis, porm sem estados
inacessveis.
Entrada: um autmato nito M = (Q
1
, ,
1
, q
10
, F
1
);
Sada: um autmato nito N = (Q
2
, ,
2
, q
20
, F
2
), isento de estados inteis, e tal
que L(N) = L(M);
Mtodo:
1. Q
20
{q
2i
| q
1i
F
1
};
2. i 1;
3. Q
2i
Q
2(i1)
{q
2k
| q
1k
Q
1
e
1
(q
1k
, ) = q, q Q
i1
, ( {})};
4. Se Q
2i
= Q
2(i1)
, ento i i + 1 e desviar para (3); caso contrrio,
Q
2
Q
2i
;
5. F
2
{q
2k
Q
2
| q
1k
F
1
};
3 Linguagens Regulares 109
6.
2
{(q
2i
, ) q
2j
| (q
1i
, ) q
1j

1
e q
2i
, q
2j
Q
2
}.
A aplicao deste algoritmo pode ser sistematizada de forma semelhante que foi
elaborada para o algoritmo de eliminao de estados inacessveis. Basta representar
a funo de transio na forma tabular e acrescentar duas novas colunas tabela: a
primeira, denominada til, e a segunda, denominada considerado, e executar os passos
do Algoritmo 3.12.
Algoritmo 3.12 (Eliminao de estados inteis, verso 2) Mtodo prtico para
obteno de um autmato sem estados inteis equivalente a outro com estados inteis,
porm sem estados inacessveis.
Entrada: um autmato nito M = (Q
1
, ,
1
, q
10
, F
1
), representado na notao
tabular;
Sada: um autmato nito N = (Q
2
, ,
2
, q
20
, F
2
), isento de estados inteis, e tal
que L(N) = L(M);
Mtodo:
1. Considerem-se as linhas correspondentes aos estados nais de M. Marquem-
se as mesmas como teis, na coluna apropriada.
2. Selecione-se um estado qualquer marcado como til, porm ainda no
marcado como considerado. Inspecionem-se todos os demais estados do
autmato, identicando quais deles permitem transitar para o estado se-
lecionado. Marquem-se todos como teis. Marque-se nalmente o estado
selecionado como considerado.
3. Repita-se o passo (2) at que no reste mais nenhum estado marcado como
til, mas ainda no como considerado.
4. O autmato N denido a partir de M eliminando-se-lhe todos os estados
inteis, bem como todas as transies que deles partem ou a eles chegam.
Exemplo 3.25 Considere-se o autmato da Figura 3.20, em que todos os estados so acessveis mas
nem todos so teis.
110 Linguagens Formais - Teoria, Modelagem e Implementao
q
0
q
1
q
4
q
3
q
2
a
c
b
c c
c
c
Figura 3.20: Autmato contendo estados inteis
Conforme o Algoritmo 3.11, obtm-se:
Q0 = {q4}
Q1 = {q3} {q4}
Q2 = {q0} {q3, q4}
Q3 = Q2
Logo, os estados q1 e q2 deste autmato so inteis e podem ser removidos sem prejuzo para
a linguagem por ele denida. O autmato resultante torna-se:
q
0
q
4
q
3
a c
c
Figura 3.21: Autmato da Figura 3.20 aps a remoo dos
estados inteis
Na notao tabular, obtm-se o seguinte resultado, descrito em suas etapas intermedirias.
Inicia-se estendendo a tabela de transio com as colunas til e considerado, e marcando como
teis todos os estados nais (no caso, apenas q4):
Marca-se como til o estado q4 (nal)
3 Linguagens Regulares 111
a b c til Considerado
q
0
q
3
q
2
q
1
q
1
q
2
q
2
q
1
q
3
q
4
q
4
q
4

Tabela 3.23: Autmato da Figura 3.20, estado q4 til
Seleciona-se a linha correspondente ao nico estado til (caso houvesse mais de um, poder-se-
ia escolher arbitrariamente dentre eles). Verica-se por inspeo que q4 referenciado por q4 e q3.
Assim, marca-se q3 como til, e q4 j est marcado. Pode-se ento marcar q4 como considerado.
As duas nicas referncias a q4 esto nos estados q3 e q4;
Marca-se q3 como til;
q4 j estava marcado;
Ao nal, marca-se q4 como considerado.
a b c til Considerado
q
0
q
3
q
2
q
1
q
1
q
2
q
2
q
1
q
3
q
4

q
4
q
4

Tabela 3.24: Autmato da Figura 3.20, estado q4 conside-
rado
Seleciona-se em seguida q3, o nico estado til no considerado:
A nica referncia a q3 est no estado q0;
Marca-se q0 como til;
Ao nal, marca-se q3 como considerado.
a b c til Considerado
q
0
q
3
q
2
q
1

q
1
q
2
q
2
q
1
q
3
q
4

q
4
q
4

Tabela 3.25: Autmato da Figura 3.20, estado q0 til
Seleciona-se q0, o nico estado til no considerado. Como q0 no referenciado por nenhum
outro estado, nenhum novo estado til foi encontrado. Marca-se q0 como considerado e, no havendo
estados teis no considerados na tabela, o algoritmo se encerra: q1 e q2 so estados inteis:
112 Linguagens Formais - Teoria, Modelagem e Implementao
a b c til Considerado
q
0
q
3
q
2
q
1

q
1
q
2
q
2
q
1
q
3
q
4

q
4
q
4

Tabela 3.26: Autmato da Figura 3.20, estado q0 conside-
rado
O autmato resultante, sem as colunas auxiliares e sem os estados inteis, apresentado na
Tabela 3.27. Note-se que as transies (q0, b) = q2 e (q0, c) = q1 tambm foram removidas.
a b c
q
0
q
3
q
3
q
4
q
4
q
4
Tabela 3.27: Autmato equivalente ao da Figura 3.20,
estados inteis eliminados
2
Tendo visto os algoritmos de eliminao de transies em vazio, de eliminao de
no-determinismos e de eliminao de estados inacessveis e inteis, cumpre responder
s questes:
1. Dado um autmato nito qualquer, ser possvel obter uma verso determinstica,
isenta de transies em vazio e estados inacessveis ou inteis, aplicando-se uma
s vez cada um dos algoritmos descritos?
2. Em caso armativo, em qual seqncia devem eles ser aplicados?
Para responder a essas questes, suciente observar que:
A eliminao de transies em vazio:
Pode introduzir no-determinismos;
Pode fazer surgir estados inacessveis ou inteis.
A eliminao de no-determinismos:
Pode fazer surgir estados inacessveis ou inteis;
No introduz transies em vazio.
A eliminao de estados inacessveis ou inteis:
No faz surgir no-determinismos;
3 Linguagens Regulares 113
No introduz transies em vazio.
Logo, fcil provar que a resposta para as questes inicialmente propostas sim,
bastando para isso aplicar os algoritmos na seguinte seqncia:
1. Eliminao de transies em vazio, se houver;
2. Eliminao dos no-determinismos restantes, caso haja algum;
3. Eliminao de estados inacessveis e inteis, caso existam.
Qualquer outra ordem poder, dependendo do autmato que estiver sendo mani-
pulado, acarretar a necessidade de se aplicar um mesmo algoritmo mais de uma vez.
Por exemplo, a eliminao de no-determinismos seguida da eliminao de transies em
vazio pode fazer com que o autmato se torne novamente no-determinstico, exigindo
portanto uma nova aplicao do algoritmo usado anteriormente.
De acordo com as denies previamente apresentadas, fcil perceber que os aut-
matos nitos determinsticos isentos de transies em vazio constituem casos particulares
do modelo mais geral, os autmatos nitos no-determinsticos com transies em vazio.
No entanto, apesar de se tratar de um modelo conceitualmente mais simples, pode-se
demonstrar que a todo autmato nito no-determinstico que apresente transies em
vazio corresponde um outro autmato nito determinstico que aceita a mesma lingua-
gem.
Desse modo, no-determinismos e transies em vazio no contribuem em nada
para aumentar o poder dos autmatos nitos quanto a uma eventual ampliao da classe
de linguagens por eles reconhecida. Por esse motivo, nos demais captulos, sero refe-
renciados apenas os autmatos nitos, de uma forma geral, sem preocupaes com a
existncia de eventuais no-determinismos, transies em vazio, estados inacessveis ou
estados inteis.
Exemplo 3.26 Considere-se um autmato nito M, conforme a Tabela 3.28, que apresenta transies
em vazio e no-determinismo (conseqncia, no caso, das transies em vazio existentes).
a b c d e
q
0
q
1
q
1
q
2
q
1
q
3
q
1
q
4
q
2
q
2
q
3
q
3
q
4
q
3
q
4
q
2
q
4
q
0
Tabela 3.28: Autmato original com transies em vazio
A obteno de um autmato equivalente, porm sem transies em vazio e determinstico,
feita de acordo com os seguintes passos:
1. Eliminao de transies em vazio
Seleciona-se arbitrariamente uma linha da tabela que descreva o comportamento do autmato
em um estado do qual parta alguma transio em vazio. H trs estados nessas condies:
q0, q1 e q4, dos quais partem transies em vazio para q2, q4 e q0, respectivamente.
Escolhendo arbitrariamente q0 para remover a transio em vazio correspondente, verica-se
que essa transio referencia o estado q2. Assim, copiam-se todas as transies referenciadas
114 Linguagens Formais - Teoria, Modelagem e Implementao
por q2 nas clulas da tabela correspondentes, relativas ao estado q0, e elimina-se a transio
em vazio (q0, ) q2.
Seleciona-se a linha q0;
Copiam-se transies para q2 e q3 no estado q0, obtendo-se os conjuntos de estados-
destino {q1, q2} e {q1, q3}, respectivamente, no estado q0;
Ao nal, elimina-se a transio em vazio (q0, ) q2.
O resultado apresentado na Tabela 3.29.
a b c d e
q
0
{q
1
, q
2
} {q
1
, q
3
}
q
1
q
3
q
1
q
4
q
2
q
2
q
3
q
3
q
4
q
3
q
4
q
2
q
4
q
0
Tabela 3.29: Eliminao de (q0, ) q2
Seleciona-se arbitrariamente q1 dentre q1 e q4, que fazem referncia em vazio aos estados
q4 e q0, respectivamente. Observa-se que q1 faz referncia a q4, e portanto os estados
referenciados por q4 sero copiados nas clulas correspondentes de q1, conforme a Tabela
3.30.
a b c d e
q
0
{q
1
, q
2
} {q
1
, q
3
}
q
1
q
3
q
2
q
1
q
4
q
0
q
2
q
2
q
3
q
3
q
4
q
3
q
4
q
2
q
4
q
0
Tabela 3.30: Eliminao de (q1, ) q4
Note-se que q1 recebe tambm de q4 o atributo de estado nal. Na tabela resultante,
apesar de ser eliminada a transio em vazio (q1, ) q4, o estado q1 recebeu uma nova
transio em vazio (q1, ) q0 e, por essa razo, q1 deve incorporar agora tambm os estados
referenciados por q0, como mostra a Tabela 3.31.
3 Linguagens Regulares 115
a b c d e
q
0
{q
1
, q
2
} {q
1
, q
3
}
q
1
q
3
{q
1
, q
2
} {q
1
, q
3
} q
4
q
2
q
2
q
3
q
3
q
4
q
3
q
4
q
2
q
4
q
0
Tabela 3.31: Eliminao de (q1, ) q0
Resta a transio em vazio (q4, ) q0, que eliminada analogamente, como mostra a
Tabela 3.32.
a b c d e
q
0
{q
1
, q
2
} {q
1
, q
3
}
q
1
q
3
{q
1
, q
2
} {q
1
, q
3
} q
4
q
2
q
2
q
3
q
3
q
4
q
3
q
4
{q
1
, q
2
} {q
1
, q
3
} q
4
Tabela 3.32: Eliminao de (q4, ) q0
Resulta nalmente o autmato no-determinstico da Tabela 3.33.
a b c d e
q
0
{q
1
, q
2
} {q
1
, q
3
}
q
1
q
3
{q
1
, q
2
} {q
1
, q
3
} q
4
q
2
q
2
q
3
q
3
q
4
q
3
q
4
{q
1
, q
2
} {q
1
, q
3
} q
4
Tabela 3.33: Autmato equivalente ao da Tabela 3.28,
eliminadas as transies em vazio
2. Eliminao de no-determinismos
Atravs da inspeo da funo de transio, torna-se evidente a necessidade de criao ime-
diata de dois novos estados: um representando o conjunto {q1, q2} e outro representando o
conjunto {q1, q3}. Aps a incorporao desses novos estados ao autmato, bem como das
transies que partem de cada um dos estados individualmente considerados, obtm-se o
autmato da Tabela 3.34.
116 Linguagens Formais - Teoria, Modelagem e Implementao
a b c d e
q
0
{q
1
, q
2
} {q
1
, q
3
}
q
1
q
3
{q
1
, q
2
} {q
1
, q
3
} q
4
q
2
q
2
q
3
q
3
q
4
q
3
q
4
{q
1
, q
2
} {q
1
, q
3
} q
4
{q
1
, q
2
} q
3
{q
1
, q
2
} {q
1
, q
3
} q
4
{q
1
, q
3
} {q
3
, q
4
} {q
1
, q
2
} q
3
{q
1
, q
3
} q
4
Tabela 3.34: Autmato isento de no-determinismos, ver-
so inicial
Ao efetuar a combinao das transies que emergem de q1 e q3, deve-se observar o sur-
gimento de um novo no-determinismo anteriormente inexistente no autmato. O mesmo
corresponde a uma transio no-determinstica para q3 ou q4, quando a entrada a, e pode
ser eliminada atravs da criao de um novo estado {q3, q4}, conforme a Tabela 3.35.
a b c d e
q
0
q
1
q
2
q
1
q
3
q
1
q
3
q
1
q
2
q
1
q
3
q
4
q
2
q
2
q
3
q
3
q
4
q
3
q
4
q
1
q
2
q
1
q
3
q
4
q
1
q
2
q
3
q
1
q
2
q
1
q
3
q
4
q
1
q
3
q
3
q
4
q
1
q
2
q
3
q
1
q
3
q
4
q
3
q
4
q
4
q
1
q
2
q
3
q
1
q
3
q
4
Tabela 3.35: Autmato isento de no-determinismos, ver-
so nal
3. Estados renomeados
Renomeando-se os estados, a m de aumentar a legibilidade da Tabela 3.35, obtm-se a
Tabela 3.36.
3 Linguagens Regulares 117
a b c d e
q
0
q
5
q
6
q
1
q
3
q
5
q
6
q
4
q
2
q
2
q
3
q
3
q
4
q
3
q
4
q
5
q
6
q
4
q
5
q
3
q
5
q
6
q
4
q
6
q
7
q
5
q
3
q
6
q
4
q
7
q
4
q
5
q
3
q
6
q
4
Tabela 3.36: Autmato da Tabela 3.35, com estados re-
nomeados
4. Eliminao de estados inacessveis
Atravs da marcao dos estados acessveis e considerados, obtm-se a Tabela 3.37.
a b c d e Acessvel Considerado
q
0
q
5
q
6

q
1
q
3
q
5
q
6
q
4
q
2
q
2
q
3
q
3
q
4
q
3

q
4
q
5
q
6
q
4

q
5
q
3
q
5
q
6
q
4

q
6
q
7
q
5
q
3
q
6
q
4

q
7
q
4
q
5
q
3
q
6
q
4

Tabela 3.37: Autmato da Tabela 3.36, logo aps a exe-
cuo do algoritmo de eliminao de estados inacessveis
ou, simplesmente:
a b c d e
q
0
q
5
q
6
q
3
q
4
q
3
q
4
q
5
q
6
q
4
q
5
q
3
q
5
q
6
q
4
q
6
q
7
q
5
q
3
q
6
q
4
q
7
q
4
q
5
q
3
q
6
q
4
Tabela 3.38: Autmato nal obtido pela eliminao de
transies em vazio, no-determinismos e estados inacess-
veis
118 Linguagens Formais - Teoria, Modelagem e Implementao
Observe-se que o autmato resultante no possui estados inteis, sendo portanto desnecessria
a aplicao do algoritmo de eliminao de estados inteis. 2
Um importante aspecto de extenso que costuma ser considerado no estudo dos
autmatos nitos diz respeito possibilidade de movimentao do cursor de leitura em
ambos os sentidos, em contraste com a movimentao em um s sentido, mais freqen-
temente adotada na literatura sobre o assunto.
Os autmatos nitos, por denio, efetuam a leitura de smbolos na ta de entrada
em apenas um sentido (normalmente da esquerda para a direita). A questo que surge
: se fosse permitido aos autmatos nitos deslocar o cursor de leitura em ambos os
sentidos, ser que isso os tornaria mais potentes, aptos a reconhecer uma classe de lin-
guagens mais complexa que a das linguagens regulares? A resposta negativa: possvel
demonstrar (ver [46]) que a classe de linguagens reconhecida pelos autmatos nitos de
duplo sentido exatamente a mesma que aceita pelos de sentido nico, ou seja, as
linguagens do tipo 3.
Para nalizar este item, algumas consideraes sobre a importncia prtica dos
autmatos nitos. Conforme mencionado anteriormente, as linguagens regulares so
muito utilizadas na especicao de linguagens de programao e como linguagens para a
especicao de dados em ambientes interativos, tais como editores de texto e linguagens
de comando. Os autmatos nitos representam, nesse caso, os modelos de implementao
para tais linguagens, sendo largamente empregados em compiladores e outras ferramentas
de apoio ao desenvolvimento de programas e ao processamento de dados.
A profuso e a importncia dos resultados tericos existentes, referentes a esta
classe de reconhecedores, torna-os especialmente atraentes em aplicaes prticas, uma
vez que eles permitem a obteno de programas muito ecientes e compactos, e ao mesmo
tempo adequadamente estruturados e autodocumentados. Devido a essas caractersticas
interessantes, diversas ferramentas tm sido desenvolvidas para a gerao automtica
de programas e/ou de circuitos seqenciais que realizam abstraes representadas pelos
autmatos nitos, obtidos a partir de notaes tais como as expresses regulares. Es-
sas ferramentas vm sendo cada vez mais utilizadas por prossionais de computao,
tornando seu trabalho mais abrangente, simples, rpido e convel.
3.4 Equivalncia entre Gramticas Regulares e Conjuntos
Regulares
As linguagens regulares foram denidas no Captulo 2 como sendo aquelas geradas por
gramticas lineares, em particular as gramticas lineares direita. Inicialmente foi apre-
sentada a denio dos conjuntos regulares, tendo sido tambm denidas as expresses
regulares, que constituem uma notao mais cmoda para a representao de tais con-
juntos. Em seguida foram caracterizados os autmatos nitos como mecanismos de
reconhecimento para os conjuntos regulares.
O objetivo das Sees 3.4 e 3.5 discutir e demonstrar a plena equivalncia, no
que diz respeito classe de linguagens que so capazes de representar, dos diversos tipos
de formalismos at aqui estudados: os conjuntos (expresses) regulares, as gramticas
lineares direita e os autmatos nitos.
Na presente seo mostrada a equivalncia entre as linguagens caracterizadas pelos
conjuntos regulares e as geradas pelas gramticas lineares direita, ou seja, prova-se que
toda e qualquer linguagem gerada por alguma gramtica linear um conjunto regular, e
3 Linguagens Regulares 119
tambm, inversamente, que todo e qualquer conjunto regular pode ser expresso atravs
de uma gramtica linear.
Para efeitos prticos, estudam-se aqui apenas as gramticas lineares direita, porm
os mesmos resultados se aplicam e podem ser deduzidos igualmente para as gramticas
lineares esquerda. O termo linguagem linear direita (esquerda) ser empregado
para denotar linguagens geradas por gramticas lineares direita (esquerda).
A Figura 3.22 destaca as equivalncias estudadas nesta seo.
Figura 3.22: Equivalncia dos formalismos parte 1
Teorema 3.6 (Conjuntos regulares gramticas lineares direita) Todo con-
junto regular gerado por uma gramtica linear direita.
Justicativa Deseja-se demonstrar que todo e qualquer conjunto regular dene uma
linguagem que tambm pode ser gerada por uma gramtica linear direita.
Por denio, , {}, {}, , onde um alfabeto (conjunto nito e no-vazio),
so conjuntos regulares. Da mesma forma, X Y, XY e X

, com X e Y conjuntos
regulares, tambm so conjuntos regulares. A equivalncia de tais conjuntos regulares
com as correspondentes gramticas lineares direita que os geram mostrada a seguir:
uma linguagem linear direita, pois:
G = ({S} , , , S) tal que L(G) =
{} uma linguagem linear direita, pois:
G = ({S} , , {S }, S) tal que L(G) = {}
{} uma linguagem linear direita, pois:
G = ({, S}, {}, {S }, S) tal que L(G) = {}
Suponha-se agora que X e Y sejam dois conjuntos regulares, gerados por gram-
ticas lineares direita. vlido, nesse caso, admitir que X e Y sejam gerados
pelas gramticas G
x
e G
y
:
X = L(G
x
), G
x
= (
x
N
x
,
x
, P
x
, S
x
)
Y = L(G
y
), G
y
= (
y
N
y
,
y
, P
y
, S
y
)
Admita-se ainda, sem perda de generalidade, que N
x
N
y
= . Caso isso no
seja verdadeiro, podem-se renomear os no-terminais, de modo que essa condio
seja satisfeita. Nessa situao, a aplicao das operaes de unio, concatenao
120 Linguagens Formais - Teoria, Modelagem e Implementao
e fechamento reexivo sobre X e Y geram novas linguagens lineares direita, as
quais podem ser representadas, com base em G
x
e G
y
, da seguinte forma:
Z = X Y uma linguagem linear direita, pois:
G
z
= (
x

y
N
x
N
y
{S
z
},
x

y
, P
x
P
y
{S
z
S
x
, S
z
S
y
}, S
z
)
tal que L(G
z
) = X Y.
Z = XY uma linguagem linear direita, pois:
G
z
= (
x

y
N
x
N
y
,
x

y
, P
y
P
z
, S
x
), sendo P
z
obtido pela aplicao
das regras:
a) Se A B P
x
, ento A B P
z
b) Se A P
x
, ento A S
y
P
z
tal que L(G
z
) = XY.
Z = X

uma linguagem linear direita, pois:


G
z
= (
x
N
x
{S
z
},
x
, {S
z
S
x
, S
z
} P
z
, S
z
), sendo P
z
obtido pela
aplicao das regras:
a) Se A B P
x
, ento A B P
z
b) Se A P
x
, ento A S
z
P
z
tal que L(G
z
) = X

As regras acima relacionadas podem ser entendidas da seguinte forma: a unio


de duas linguagens lineares direita representada atravs de uma gramtica em que
uma nova raiz e duas novas produes so introduzidas, sendo que cada alternativa
de substituio para a nova raiz conduz gerao das sentenas de um ou do outro
conjunto original; a concatenao obtida fazendo-se com que, ao trmino da derivao de
sentenas pertencentes ao primeiro conjunto, seja ativado o no-terminal que representa
a raiz da gramtica do segundo conjunto, possibilitando a justaposio da cadeia j
formada com aquela que ser gerada pela segunda gramtica; nalmente, o fechamento
reexivo e transitivo representado, em termos gramaticais, de maneira similar ao caso
anterior: ao trmino de uma derivao, reativa-se o no-terminal que representa a raiz da
gramtica, de tal forma que seja permitida a concatenao de novas sentenas geradas
pela mesma gramtica (note-se a necessidade da produo que gera a cadeia vazia a
partir da raiz).
Exemplo 3.27 Considere-se o alfabeto = {0, 1, 2}. Os conjuntos regulares L0 = {0}, L1 =
{1}, L2 = {2} so denidos, respectivamente, pelas gramticas:
G0 = ({0, S0}, {0}, {S0 0}, S0)
G1 = ({1, S1}, {1}, {S1 1}, S1)
G2 = ({2, S2}, {2}, {S2 2}, S2)
3 Linguagens Regulares 121
Atravs da aplicao das regras correspondentes ao fechamento reexivo e transitivo, obtm-
se, a partir de G0 e G1, novas gramticas G3 e G4 representando, respectivamente, os conjuntos
{0}

e {1}

:
G3 = ({0, S0, S3}, {0}, {S3 S0, S3 , S0 0S3}, S3)
G4 = ({1, S1, S4}, {1}, {S4 S1, S4 , S1 1S4}, S4)
Da concatenao dos conjuntos {0}

e {1}

resulta o conjunto regular {0}

{1}

, representado
atravs da gramtica linear direita G5:
G5 = ({0, 1, S0, S1, S3, S4}, {0, 1}, P5, S3)
P5 = {S3 S0, S3 S4, S0 0S3
. .
G
3
, S4 S1, S4 , S1 1S4
. .
G
4
}
Finalmente, a linguagem obtida pela unio de L(G5) com L(G2) pode ser representada pela
gramtica linear G6:
G6 = ({0, 1, 2, S0, S1, S2, S3, S4, S6}, {0, 1, 2}, P6, S6)
P6 = {S6 S2, S6 S3, S2 2
. .
G
2
,
S3 S0, S3 S4, S0 0S3, S4 S1, S4 , S1 1S4
. .
G
5
}
Portanto, L(G6) = {0}

{1}

{2}. 2
Por se tratar de um mtodo cannico de manipulao, a gramtica resultante, como
conseqncia da aplicao da tcnica exposta, nem sempre corresponder, necessaria-
mente, a uma verso muito concisa ou intuitiva, devendo-se efetuar em seguida as sim-
plicaes julgadas necessrias.
Exemplo 3.28 A gramtica G6 do Exemplo 3.27 poderia ser simplicada, mantendo-se a linguagem
original e reduzindo-se a quantidade de smbolos no-terminais e o nmero de produes. Uma
possibilidade seria:
G6 = ({0, 1, 2, S, A, B}, {0, 1, 2}, P6, S)
P6 = {S 2
. .
{2}
, S A, A 0A
. .
{0}

, A B
. .
{0}

{1}

, B 1B, B
. .
{1}

}
2
Teorema 3.7 (Conjuntos regulares gramticas lineares direita) Toda gra-
mtica linear direita gera um conjunto regular.
Justicativa Mostra-se agora a proposio inversa, ou seja, que toda e qualquer lin-
guagem gerada por uma gramtica linear direita constitui um conjunto regular. Para
tanto, deve-se lembrar que gramticas lineares direita se caracterizam por apresentarem
apenas produes com os formatos seguintes:
X
i
X
j
X
i
X
j
X
i

X
i

122 Linguagens Formais - Teoria, Modelagem e Implementao
com e X
i
, X
j
N.
O Algoritmo 3.13, a seguir apresentado, permite a obteno, de forma sistemtica,
de uma expresso que representa o conjunto regular denido por uma gramtica linear
direita fornecida como entrada.
Inicialmente, a representao algbrica da gramtica deve ser modicada, para
permitir a representao explcita dos conjuntos denotados pelos seus smbolos no-
terminais:
X
i
X
j
torna-se X
i
= {}X
j
X
i
X
j
torna-se X
i
= {}X
j
X
i
torna-se X
i
= {}
X
i
torna-se X
i
= {}
Note-se, no primeiro caso, que a expresso {}X
j
denota a concatenao da cadeia
elementar com os elementos do conjunto X
j
, disso resultando o conjunto X
i
. Tal
interpretao compatvel, portanto, com o signicado atribudo produo algbrica
correspondente. Consideraes semelhantes valem nos demais casos. Uma vez efetuada
essa converso de notao, devem-se agrupar todas as alternativas de substituio para
um mesmo smbolo no-terminal X
i
, utilizando para isso o operador de unio.
Como resultado, obtm-se um sistema de equaes regulares, em que cada
equao corresponde a uma diferente varivel (no-terminal) da gramtica original. A
soluo desse sistema de m variveis e m equaes fornece as expresses que denem os
conjuntos regulares representados pelos diversos smbolos no-terminais. Em particular,
o conjunto regular associado ao no-terminal raiz da gramtica dene a linguagem por
ela descrita. Nesse sistema, cada equao possui o seguinte formato geral:
X
i
= A
i1
X
1
A
i2
X
2
... A
im
X
m
B
i1
B
i2
...B
ik
onde:
A
ij
= {
ij
} se X
i

ij
X
j
P,
ij
( {}), ou A
ij
= em caso contrrio;
B
ij
= {
ij
} se X
i

ij
P,
ij
( {}).
O sistema de equaes propriamente dito assume ento a forma genrica:
X
1
= A
11
X
1
A
12
X
2
... A
1m
X
m
B
11
B
12
...B
1p
X
2
= A
21
X
1
A
22
X
2
... A
2m
X
m
B
21
B
22
...B
2q
... ...
X
m
= A
m1
X
1
A
m2
X
2
... A
mm
X
m
B
m1
B
m2
...B
mr
Observe-se que cada equao assim obtida pode conter referncias a todos os sm-
bolos no-terminais da gramtica (X
1
a X
m
) bem como a termos constantes (B
ij
), em
quantidade varivel conforme a equao.
A seguir, coloca-se em evidncia o smbolo no-terminal X
i
denido em cada equa-
o. Isso, e o agrupamento de todos os termos que no dependem de X
i
, pela aplicao
3 Linguagens Regulares 123
da propriedade associativa da unio dos conjuntos, altera a representao da equao
para:
X
i
= A
ii
X
i
(A
i
B
i
)
onde:
A
i
= A
ij
X
j
, 1 j m, j = i
B
i
= B
i1
B
i2
...B
ik
Fazendo-se C
i
= A
i
B
i
, so obtidas expresses do tipo:
X
i
= A
ii
X
i
C
i
onde C
i
representa todos os termos da i-sima equao que no contm referncias diretas
ao smbolo no-terminal X
i
, e A
ii
representa o conjunto de todas as cadeias sobre que
prexam X
i
na equao em que este no-terminal denido.
possvel demonstrar, por induo, que equaes com o formato genrico X
i
=
A
ii
X
i
C
i
possuem, como soluo geral, o conjunto:
X
i
= A

ii
C
i
Nesta expresso, no existem ocorrncias do smbolo X
i
. De fato, substituindo-se
X
i
por A

ii
C
i
na segunda ocorrncia deste smbolo em X
i
= A
ii
X
i
C
i
, obtm-se a
identidade:
X
i
= A
ii
X
i
C
i
= A
ii
(A

ii
C
i
) C
i
= A
+
ii
C
i
C
i
= A

ii
C
i
Teorema 3.8 (Soluo de X = AX C) A equao regular X = AX C tem como
soluo geral o conjunto regular X = A

C.
Justicativa Partindo-se de X = AX C, pode-se levantar o conjunto de valores da
varivel X que satisfazem a essa igualdade. H dois caminhos possveis:
1. X = C, que uma soluo trivial, obtida pela simples inspeo de X = AX C;
2. X = AX, que deve ser assim interpretada: para obter um novo valor de X, utiliza-
se algum valor j conhecido, e concatene-se-lhe um A esquerda. Aplicando-se
essa interpretao soluo obtida em (1), tem-se: X = AC, que passa a ser uma
nova soluo conhecida. Aplicando-se outra vez essa interpretao soluo X =
AC, obtm-se X = AAC, e assim por diante. Note-se que dessa forma foi obtida
uma seqncia de solues progressivamente mais longas, partindo-se da soluo
trivial, atravs da concatenao de elementos A esquerda. Generalizando-se,
tem-se a forma X = A

C como soluo geral da equao X = AX C.

Uma vez obtido o sistema de equaes regulares no formato X


i
= A

ii
C
i
, a soluo
do mesmo dada pelo Algoritmo 3.13.
Algoritmo 3.13 (Equaes regulares) Resoluo de um sistema de equaes regula-
res.
Entrada: Uma srie de equaes regulares sobre variveis X
i
, 1 i m, cujos
coecientes A
ij
so conjuntos regulares sobre um alfabeto .
124 Linguagens Formais - Teoria, Modelagem e Implementao
Sada: Uma srie de conjuntos regulares
i
sobre , de tal forma que X
i
=
i
.
Mtodo:
1. i 1;
2. Se i = m, ento desviar para (4). Caso contrrio, considerar a i-sima
equao na forma X
i
= A
ii
X
i
C
i
e substituir todas as ocorrncias de X
i
por A

ii
C
i
nas equaes referentes s variveis X
j
, (i + 1) j m;
3. i i + 1 e desviar para (2);
4. Se i = 0, ento FIM. Caso contrrio, X
i

i
= A

ii
C
i
e substituir todas
as ocorrncias de X
i
pelo conjunto
i
nas equaes referentes s variveis
X
j
, 1 j (i 1).
5. i i 1 e desviar para (4).

Este algoritmo opera em dois passos. No primeiro, em que as equaes so percorri-


das em ordem crescente de ndices, eliminam-se, de cada equao relativa a uma varivel
X
i
distinta, todas as referncias s demais variveis X
j
, j < i. Assim, obtm-se um novo
conjunto de equaes em que, para cada varivel X
i
do lado esquerdo da equao, exis-
tem referncias apenas a variveis X
j
, j i, ou ento a elementos de , do lado direito.
Note-se, em particular, que a m-sima equao contm apenas referncias a elementos
de prpria varivel X
m
.
No passo seguinte do algoritmo, efetuado na ordem decrescente dos ndices das
equaes, so eliminadas todas as referncias s variveis do sistema, as quais so subs-
titudas, a partir da m-sima equao, por conjuntos regulares denidos exclusivamente
sobre . Ao trmino da execuo do algoritmo, so obtidos, dessa maneira, conjuntos
regulares sobre , que denem a linguagem gerada pelas diversas variveis do sistema
de equaes (correspondentes aos smbolos no-terminais da gramtica original). Devido
ao fato de terem sido empregadas apenas operaes que preservam a regularidade dos
conjuntos manipulados, fcil demonstrar que os conjuntos
i
so regulares, o que mos-
tra, intuitivamente, que toda e qualquer gramtica linear direita gera uma linguagem
regular.
Exemplo 3.29 Considere-se a gramtica linear direita G0:
G0 = ({a, b, c, X0, X1, X2}, {a, b, c, d}, P0, X0)
P0 = {X0 aX0, X0 aX1, X0 b,
X1 bX1, X1 cX1, X1 cX2, X1 d,
X2 aX0, X2 bX1, X2 cX2, X2 c, X2 d}
Convertendo-se as produes algbricas para a notao de conjuntos, obtm-se:
X0 = {a}X0, X0 = {a}X1, X0 = {b},
X1 = {b}X1, X1 = {c}X1, X1 = {c}X2, X1 = {d},
X2 = {a}X0, X2 = {b}X1, X2 = {c}X2, X2 = {c}, X2 = {d}
3 Linguagens Regulares 125
Do agrupamento das alternativas de substituio de cada smbolo no-terminal resulta o sis-
tema de equaes seguinte:
X0 = {a}X0 {a}X1 {b}
X1 = {b}X1 {c}X1 {c}X2 {d}
X2 = {a}X0 {b}X1 {c}X2 {c} {d}
Colocando-se em evidncia os smbolos no-terminais denidos em cada equao, o novo
sistema toma o seguinte aspecto:
X0 = {a}X0 ({a}X1 {b}) = A00X0 C0
X1 = {b, c}X1 ({c}X2 {d}) = A11X1 C1
X2 = {c}X2 ({a}X0 {b}X1 {c, d}) = A22X2 C2
com:
A00 = {a}, A0 = {a}X1, B0 = {b}
A11 = {b, c}, A1 = {c}X2, B1 = {d}
A22 = {c}, A2 = {a}X0 {b}X1, B2 = {c, d}
e:
C0 = A0 B0 = {a}X1 {b}
C1 = A1 B1 = {c}X2 {d}
C2 = A2 B2 = ({a}X0 {b}X1) {c, d}
Eliminando-se as referncias aos smbolos no-terminais Xi , 0 i 2, nas equaes em que
os mesmos so denidos, resulta:
X0 = {a}

({a}X1 {b})
X1 = {b, c}

({c}X2 {d})
X2 = {c}

({a}X0 {b}X1 {c, d})


A aplicao do algoritmo de clculo dos conjuntos regulares denidos pelos smbolos no-
terminais da gramtica feita conforme apresentado a seguir.
Passos 1 e 2 do algoritmo, primeira passagem:
X0 = {a}

({a}X1 {b}) e substituio nas equaes de X1 e X2 :


X0 = {a}

({a}X1 {b})
X1 = {b, c}X1 ({c}X2 {d})
X2 = {c}X2 ({a}({a}

({a}X1 {b})) {b}X1 {c, d})


= {c}X2 ({a}({a}

{a}X1 {a}

{b}) {b}X1 {c, d})


= {c}X2 ({a}{a}

{a}X1 {a}{a} {b} {b}X1 {c, d})


= {c}X2 {a}{a}

{a}X1 {a}{a}

{b} {b}X1 {c, d}


= {c}X2 {a}{a}
+
X1 {a}
+
{b} {b}X1 {c, d}
= {c}X2 ({a}{a}
+
{b})X1 ({a}
+
{b} {c, d})
126 Linguagens Formais - Teoria, Modelagem e Implementao
Passos 1 e 2 do algoritmo, segunda passagem:
X1 = {b, c}

({c}X2 {d}) e substituio na equao de X2 :


X0 = {a}

({a}X1 {b})
X1 = {b, c}

({c}X2 {d})
X2 = {c}X2 ({a}{a}
+
{b})({b, c}

({c}X2 {d})) {a}


+
{b} {c, d})
= {c}X2 ({a}{a}
+
{b})({b, c}

{c}X2 {b, c}

{d}) {a}
+
{b} {c, d}
= {c}X2 ({a}{a}
+
{b}){b, c}

{c}X2 ({a}{a}
+
{b}){b, c}

{d}
{a}
+
{b} {c, d}
= {c}X2 ({a}{a}
+
{b}){b, c}

{c}X2 {a}{a}
+
{b, c}

{d}
{b}{b, c}

{d} {a}
+
{b} {c, d}
= ({c} ({a}{a}
+
{b}){b, c}

{c})X2 {a}{a}
+
{b, c}

{d}
{b}{b, c}

{d} {a}
+
{b} {c, d}
Passos 1 e 2 do algoritmo, terceira passagem:
X2 = A

22
C2, com :
A22 = ({c} ({a}{a}
+
{b}){b, c}

{c})
C2 = {a}{a}
+
{b, c}

{d} {b}{b, c}

{d} {a}
+
{b} {c, d}
Passos 4 e 5 do algoritmo, primeira passagem:
Substituio de X2 por A

22
C2 nas equaes de X0 e X1:
X0 = {a}

({a}X1 {b})
X1 = {b, c}

({c}(A

22
C2) {d}) = {b, c}

{c}A

22
C2 {b, c}

{d}
X2 = A

22
C2
Passos 4 e 5 do algoritmo, segunda passagem:
Substituio de X1 por {b, c}

{c}A

22
C2 {b, c}

{d} na equao de X0:


X0 = {a}

({a}({b, c}

{c}A

22
C2 {b, c}

{d}) {b})
= {a}

({a}{b, c}

{c}A

22
C2 {a}{b, c}

{d} {b})
= {a}

{a}{b, c}

{c}A

22
C2 {a}

{a}{b, c}

{d} {a}

{b}
X1 = {b, c}

{c}A

22
C2 {b, c}

{d}
X2 = A

22
C2
Portanto, o conjunto regular denido por G0 01 3 4, com:
0 = {a}

{a}{b, c}

{c}({c} ({a}{a}
+
{b}){b, c}

{c})

1 = {a}{a}
+
{b, c}

{d} {b}{b, c}

{d} {a}
+
{b} {c, d}
3 = {a}

{a}{b, c}

{d}
4 = {a}

{b}
2
3 Linguagens Regulares 127
Exemplo 3.30 Seja G1 uma gramtica linear direita:
G1 = ({0, 1, 2, X1, X2, X3}, {0, 1, 2}, P1, X1)
P1 = {X1 0X1, X1 X2,
X2 1X2, X2 1X3,
X3 2X3, X3 22}
Efetuando-se a mudana de notao e agrupando-se as alternativas, obtemos o sistema de
equaes:
X1 = {0}X1 {}X2
X2 = {1}X2 {1}X3
X3 = {2}X3 {22}
Pelo fato de esta gramtica no conter referncias varivel (no-terminal) X1 nas equaes
de X2 e X3, nem tampouco referncias varivel X2 na equao da varivel X3, torna-se prtico
em primeiro lugar resolver diretamente a equao referente varivel X3:
X3 = {2}

{22}
A seguir, substituem-se pela expresso acima todas as ocorrncias da varivel X3 nas equaes
anteriores. O sistema de equaes torna-se ento:
X1 = {0}X1 {}X2
X2 = {1}X2 {1}{2}

{22}
X3 = {2}

{22}
De forma anloga, obtm-se X2 = {1}

{1}{2}

{22} e efetua-se a substituio desta expresso


em todas as ocorrncias da varivel X2 nas equaes anteriores, que ento se tornam:
X1 = {0}X1 {}{1}

{1}{2}

{22}
X2 = {1}

{1}{2}

{22}
X3 = {2}

{22}
Finalmente, obtm-se X1 = {0}

{1}

{1}{2}

{22}, que representa tambm o conjunto regular


denido pela gramtica linear direita G1. Resulta:
X1 = {0}

{1}

{1}{2}

{22}
X2 = {1}

{1}{2}

{22}
X3 = {2}

{22}
2
Exemplo 3.31 Seja G2 uma gramtica linear direita:
G2 = ({0, 1, 2, A0, A1, A2}, {0, 12}, P2, A0)
P2 = {A0 0A1, A0
0
,
A1 1A2, A1
1
,
A2 2A0, A2
2
}
Atravs de manipulaes, obtm-se o sistema:
A0 = {0}A1 {
0
}
A1 = {1}A2 {
1
}
A2 = {2}A0 {
2
}
128 Linguagens Formais - Teoria, Modelagem e Implementao
Substituindo-se todas as ocorrncias de A0 nas demais equaes por {0}A1 {
0
}:
A0 = {0}A1 {
0
}
A1 = {1}A2 {
1
}
A2 = {2}({0}A1 {
0
}) {
2
}
Substituindo-se todas as ocorrncias de A1 nas demais equaes por {1}A2 {
1
}:
A0 = {0}A1 {
0
}
A1 = {1}A2 {
1
}
A2 = {2}({0}({1}A2 {
1
}) {
0
}) {
2
}
Reescrevendo-se a equao referente varivel A2, tem-se:
A2 = {201}A2 {20
1
, 2
0
,
2
}
= {201}

{20
1
, 2
0
,
2
}
Substituindo-se essa expresso na equao referente varivel A1, tem-se:
A1 = {1}{201}

{20
1
, 2
0
,
2
} {
1
}
Finalmente, substituindo-se esta expresso na equao referente varivel A0, vem:
A0 = {0}({1}{201}

{20
1
, 2
0
,
2
}
1
}) {
0
}
= {01}{201}

{20
1
, 2
0
,
2
} 0
1
} {
0
}
2
Exemplo 3.32 Seja G3 uma gramtica linear direita:
G3 = ({0, 1, 2, S, A}, {0, 1, 2}, P3, S)
P3 = {S 0A, S 1, A 0S, A 2}
Os passos seguintes levam caracterizao do conjunto regular denido por G3:
S = {0}A {1}
A = {0}S {2}
Substituindo-se a denio de S na equao de A, vem:
A = {0}({0}A {1}) {2}
= {00}A {01} {2}
= {00}

{01, 2}
Substituindo-se todas as ocorrncias de A pela expresso acima na equao de S, tem-se:
S = {0}({00}

{01, 2}) {1}


= {0}{00}

{01, 2} {1}
= {00}

{02, 1}
2
3 Linguagens Regulares 129
3.5 Equivalncia entre Gramticas Regulares e Autmatos
Finitos
Dando seqncia ao contedo cuja discusso foi iniciada na Seo 3.4, mostrada a seguir
a equivalncia entre as gramticas lineares direita e os autmatos nitos, no que diz
respeito classe de linguagens que tais dispositivos so capazes de denir. Finalmente,
e embora redundante do ponto de vista terico (pois a equivalncia dos conjuntos regu-
lares com os autmatos nitos pode ser vericada indiretamente atravs das gramticas
lineares direita), apresentada uma forma direta de grande interesse prtico para a
obteno de autmatos nitos a partir de expresses regulares.
As equivalncias discutidas nesta seo esto representadas com destaque na Figura
3.23.
Figura 3.23: Equivalncia dos formalismos parte 2
Teorema 3.9 (Gramticas lineares direita autmatos nitos) Seja G uma
gramtica linear direita. Ento possvel denir um autmato nito M de tal modo
que L(G) = L(M).
Justicativa Considere-se G = (V, , P, S). As produes de P so do tipo:
1. X aY
2. X Y
3. X a
4. X
com X, Y N, a .
Seja M = (Q, , , q
0
, F) o autmato que se deseja obter. O Algoritmo 3.14 mostra
como construir M (no-determinstico, com transies em vazio) a partir de G:
Algoritmo 3.14 (Gramtica autmato) Construo de um autmato nito a
partir de uma gramtica linear direita.
Entrada: uma gramtica linear direita G;
Sada: um autmato nito M tal que L(M) = L(G);
Mtodo:
130 Linguagens Formais - Teoria, Modelagem e Implementao
1. Conjunto de estados:
Cada estado de M corresponde a um dos smbolos no-terminais de G.
A esse conjunto acrescenta-se um novo smbolo (estado) Z N, ou seja,
Q = N {Z}. O estado inicial de M S, a raiz da gramtica. O estado
nal de M Z, o novo estado acrescentado.
2. Alfabeto de entrada:
O alfabeto de entrada de M o mesmo alfabeto de G.
3. Funo de transio:
;
Para cada regra de produo em P da gramtica G, e conforme seu tipo:
a) Se X aY ento {(X, a) Y};
b) Se X Y ento {(X, ) Y};
c) Se X a ento {(X, a) Z};
d) Se X ento {(X, ) Z}.
Note-se que, pela aplicao do Algoritmo 3.14, |Q| = |N | +1 e || = |P|.
O algoritmo acima apresentado pode ser melhor compreendido considerando-se que
no apenas a raiz S da gramtica, mas tambm cada no-terminal X dessa gramtica
gera, por si s, uma linguagem:
L(X) = {

| X

}
Assim, por exemplo, produes do tipo X aY podem ser interpretadas como a
linguagem gerada pelo no-terminal X corresponde ao smbolo a concatenado lingua-
gem gerada pelo no-terminal Y. Situao semelhante ocorre com os autmatos nitos:
no apenas o estado inicial, mas qualquer estado X tambm dene uma linguagem:
L(X) = {

| (X, )

(Y, ), Y F}
Dessa maneira, ao transformar smbolos no-terminais em estados, a produo cor-
respondente (S, a) Y adota o signicado a linguagem aceita pelo estado X corres-
ponde ao smbolo a seguido da linguagem aceita pelo estado Y, o que sugere a validade
do algoritmo proposto quando da aplicao desse raciocnio raiz da gramtica, trans-
formada em estado inicial do autmato correspondente, bem como para quaisquer outros
no-terminais e respectivos estados.
Novamente, cabe frisar que todas as linguagens assim denidas a partir dos diver-
sos no-terminais da gramtica so linguagens geradas por gramticas lineares direita
(denidas por subconjuntos do conjunto de produes P original).
Exemplo 3.33 Seja G uma gramtica linear direita:
3 Linguagens Regulares 131
G = (V, , P, S)
V = {a, b, c, S, K, L}
= {a, b, c}
P = {S a, S aK, K bK, K L, L cL, L }
Aplicando-se o algoritmo de converso a G, obtm-se o autmato da Tabela 3.39.
P
S a (S, a) = Z
S aK (S, a) = K
K bK (K, b) = K
K L (K, ) = L
L cL (L, c) = L
L (L, ) = Z
Tabela 3.39: Mapeamento das produes da gramtica G
para as regras de transio do autmato M
O autmato nito completo M assim especicado apresentado na Figura 3.24. Note-se que
L(G) = L(M) = ab

.
M = (Q, , , S, F)
Q = {S, K, L, Z}
= {a, b, c}
= {(S, a) Z, (S, a) K, (K, b) K, (K, ) L, (L, c) L, (L, ) Z}
F = {Z}
S K L Z
a
b c
a
Figura 3.24: Autmato resultante do mapeamento mos-
trado na Tabela 3.39
Considere-se a sentena abbcc, e as correspondentes seqncias de derivaes em G e de
movimentaes em M:
S aK abK abbK abbL abbcL abbccL abbcc
(S, abbcc) (K, bbcc) (K, bcc) (K, cc) (L, cc) (L, c) (L, ) (Z, )
Comparando-se as formas sentenciais geradas por G com as conguraes assumidas por M,
fcil perceber que h uma relao direta entre elas, expressa na idia anteriormente exposta de que
a linguagem gerada por um certo smbolo no-terminal de G corresponde linguagem reconhecida
pelo respectivo estado de M. Note-se, em particular, que o nmero de formas sentenciais geradas
por G igual ao nmero de conguraes assumidas por M no reconhecimento da mesma cadeia
de entrada (no caso, oito formas sentenciais e oito conguraes). 2
132 Linguagens Formais - Teoria, Modelagem e Implementao
Teorema 3.10 (Gramticas lineares direita autmatos nitos) Seja M um
autmato nito qualquer. Ento possvel denir uma gramtica linear direita G, de
tal modo que L(M) = L(G).
Justicativa Considere-se M = (Q, , , q
0
, F) um autmato nito genrico, no-
determinstico e com transies em vazio. O Algoritmo 3.15 mostra como construir uma
gramtica linear direita G = (V, , P, S) a partir de M.
Algoritmo 3.15 (Gramtica autmato) Construo de uma gramtica linear
direita a partir de um autmato nito.
Entrada: um autmato nito M;
Sada: uma gramtica linear direita G tal que L(G) = L(M);
Mtodo:
1. Denio do conjunto de smbolos no-terminais:
Os smbolos no-terminais de G correspondem aos estados de M. A raiz da
gramtica q
0
.
2. Alfabeto de entrada:
O alfabeto de G o prprio alfabeto de entrada de M.
3. Produes:
P ;
Para cada elemento de da mquina M, e conforme o tipo das transies
de M:
a) Se (X, a) = Y, ento P {X aY};
b) Se (X, ) = Y, ento P {X Y}.
F
Para cada elemento de Q da mquina M:
a) Se X F, ento P {X }.
Note-se que, pela aplicao do Algoritmo 3.15, |N| = |Q| e |P| = | | + | F|.
O funcionamento desse algoritmo de mapeamento simples e pode ser compreendido
atravs de consideraes similares s efetuadas no Teorema 3.9.
Exemplo 3.34 Seja M representado na Figura 3.25:
M = (Q, , , q0, F)
Q = {q0, q1, q2}
= {a, b, c}
3 Linguagens Regulares 133
= {(q0, a) q1, (q1, b) q1, (q1, c) q2, (q1, ) q2, (q2, c) q2}
F = {q2}
q
0
q
1
q
2
a
b c

c
Figura 3.25: Autmato original M do Exemplo 3.34
Aplicando-se o algoritmo de converso mquina M, obtm-se a gramtica linear direita G
apresentada na Tabela 3.40, cujo conjunto de produes P corresponde segunda coluna da mesma.
Note que L(M) = L(G) = ab

.
G = (V, , P, q0)
V = {a, b, c, q0, q1, q2}
= {a, b, c}
P
(q
0
, a) = q
1
q
0
aq
1
(q
1
, b) = q
1
q
1
bq
1
(q
1
, c) = q
2
q
1
cq
2
(q
1
, ) = q
2
q
1
q
2
(q
2
, c) = q
2
q
2
cq
2
Q P
q
2
F q
2

Tabela 3.40: Gramtica G equivalente ao autmato M da
Figura 3.25
Considere-se a cadeia abbbc, e as correspondentes seqncias de movimentaes em M e de
derivaes em G:
(q0, abbbc) (q1, bbbc) (q1, bbc) (q1, bc) (q1, c) (q2, )
q0 aq1 abq1 abbq1 abbbq1 abbbcq2 abbbc
Em particular, a cadeia abbbc possui mais de uma seqncia de movimentaes que conduzem
sua aceitao em M. Tal fato implica a existncia de uma outra seqncia de derivaes que
capaz de gerar essa cadeia em G, como pode ser percebido abaixo:
(q0, abbbc) (q1, bbbc) (q1, bbc) (q1, bc) (q1, c) (q2, c) (q2, )
q0 aq1 abq1 abbq1 abbbq1 abbbq2 abbbcq2 abbbc
Assim como no caso do Exemplo 3.33, a comparao entre as conguraes assumidas por
M e as formas sentenciais geradas por G revela que h uma relao direta entre elas, expressa na
mesma idia de que a linguagem reconhecida por um certo estado de M corresponde linguagem
gerada pelo respectivo smbolo no-terminal de G. Note-se, em particular, que o nmero de formas
sentenciais obtidas por G na gerao da cadeia igual ao nmero de conguraes assumidas por M
134 Linguagens Formais - Teoria, Modelagem e Implementao
no reconhecimento da mesma cadeia, porm acrescido de um (no primeiro caso seis conguraes e
sete formas sentenciais, e no segundo caso sete conguraes e oito formas sentenciais). 2
Os resultados apresentados at este ponto so sucientes para estabelecer intuitiva-
mente a equivalncia completa dos conjuntos (expresses) regulares com as gramticas
lineares direita e tambm com os autmatos nitos, no que se refere classe de lingua-
gens que tais dispositivos so capazes de representar.
No obstante, a m de possibilitar uma visualizao mais completa da relao de
equivalncia entre os autmatos nitos e as expresses regulares, apresentado em se-
guida um algoritmo que permite a construo sistemtica de autmatos nitos no-
determinsticos diretamente a partir de expresses regulares quaisquer.
Teorema 3.11 (Expresses regulares autmatos nitos) Seja r uma expresso
regular sobre o alfabeto . Ento existe um autmato nito M que aceita a linguagem
denida por r.
Justicativa O autmato nito no-determinstico que aceita a linguagem denida por
r pode ser obtido atravs da aplicao do Algoritmo 3.16, que especica as regras de
mapeamento parciais que abrangem casos triviais de sentenas (itens 1, 2 e 3) e cada
um dos operadores de unio (4), concatenao (5) e fechamento (6), conforme a prpria
denio das expresses regulares.
Algoritmo 3.16 (Expresso regular autmato) Obteno de um autmato -
nito a partir de uma expresso regular.
Entrada: uma expresso regular r sobre um alfabeto ;
Sada: um autmato nito M tal que L(M) = r;
Mtodo:
1. r =
r aceita por:
Figura 3.26: Autmato que aceita
2. r =
r aceita por:
Figura 3.27: Autmato que aceita
3 Linguagens Regulares 135
3. r = ,
r aceita por:

Figura 3.28: Autmato que aceita


4. r
3
= r
1
| r
2
, com L(M
1
) = r
1
e L(M
2
) = r
2
r
3
aceita por:

Figura 3.29: Autmato que aceita r


1
| r
2
As cadeias aceitas por M
3
correspondem quelas que so aceitas por M
1
e
tambm quelas que so aceitas por M
2
. Logo, L(M
3
) = L(M
1
) L(M
2
).
5. r
3
= r
1
r
2
, com L(M
1
) = r
1
e L(M
2
) = r
2
r
3
aceita por:

Figura 3.30: Autmato que aceita r
1
r
2
As cadeias aceitas por M
3
correspondem quelas cujos prexos sejam cadeias
aceitas por M
1
e cujos suxos sejam cadeias que sejas aceitas por M
2
. Logo,
L(M
3
) = L(M
1
)L(M
2
).
6. r
3
= r

1
, com L(M
1
) = r
1
136 Linguagens Formais - Teoria, Modelagem e Implementao
r
3
aceita por:

Figura 3.31: Autmato que aceita r

1
M
3
aceita a cadeia vazia e tambm a concatenao, em nmero arbitrrio de
vezes, de quaisquer cadeias que so aceitas por M
1
. Logo, L(M
3
) = L(M
1
)

.
Adicionalmente, valem as seguintes regras para os autmatos M
1
e M
2
represen-
tados nos casos (4), (5) e (6):
Os estados originalmente nais desses autmatos tornam-se no-nais na
composio e se comportam apenas como estados de sada do autmato;
Convenciona-se que a entrada dos mesmos pelo lado esquerdo e a sada
pelo lado direito das respectivas guras.

Exemplo 3.35 Considere-se a expresso regular ab

| c. possvel identicar, nessa expresso, as


seguintes linguagens triviais: L1 = a, L2 = b, L3 = c. Portanto, L1 = L1(M1), M1 =
q
11
q
10
a
Figura 3.32: Autmato que aceita a
L2 = L2(M2), M2 =
q
21
q
20
b
Figura 3.33: Autmato que aceita b
L3 = L3(M3), M3 =
3 Linguagens Regulares 137
q
31
q
30
c
Figura 3.34: Autmato que aceita c
Seja L4 = b

= L

2
. Ento, L4 = L4(M4) com M4 igual a:
q
42
q
40 q
41
q
20
q
21

q
43

b
Figura 3.35: Autmato que aceita b

L5 = ab

= L1L4. Ento, L5 = L5(M5) com M5 igual a:


q
42
q
40 q
41
q
20
q
21

q
43

b
q
51 q
11
q
10
a


Figura 3.36: Autmato que aceita ab

Finalmente, L6 = ab

| c = L5 L3 = L6(M6) com M6 igual a:


138 Linguagens Formais - Teoria, Modelagem e Implementao
q
42
q
40 q
41
q
20
q
21

q
43

b
q
51
q
11
q
10
a

q
60

q
30
q
31
c

q
61

Figura 3.37: Autmato que aceita ab

| c
Como se pode observar, o autmato assim construdo apresenta uma quantidade desnecessa-
riamente grande de estados, alm de diversas transies em vazio. Este fenmeno, comum quando se
aplicam mtodos cannicos de construo de autmatos, pode ser contornado atravs da aplicao
dos algoritmos de eliminao de transies em vazio e de estados inacessveis, alm da aplicao de
algoritmos de minimizao, assunto da Seo 3.6. O autmato da Figura 3.38 corresponde a uma
verso equivalente, porm mais compacta, ao autmato M6 anteriormente obtido.
q
1
q
0
q
2
a
c
b
Figura 3.38: Outro autmato que aceita ab

| c
2
comum se considerar uma simplicao do autmato apresentado na Figura 3.31,
no qual, ao invs de quatro novos estados, so criados apenas dois novos estados, como
ilustrado na Figura 3.39.
3 Linguagens Regulares 139

Figura 3.39: Autmato alternativo que aceita r

1
Assim como no caso dos autmatos apresentados nas Figuras 3.29 e 3.30, o autmato
da Figura 3.31 preserva as funes de transio dos autmatos originais inalteradas. O
autmato da Figura 3.39, por outro lado, exige o acrscimo de uma transio em vazio
do (ento) estado nal para o (ento) estado inicial do autmato original, porm produz
resultados equivalentes aos obtidos com o autmato da Figura 3.31.
Exemplo 3.36
O autmato da Figura 3.40 reconhece a linguagem gerada pela expresso regular a

.
q
0
q
1
q
2
q
3
q
7
q
6
q
5
q
4
a
b

Figura 3.40: Autmato que reconhece a

2
Para nalizar, a Tabela 3.41 apresenta um resumo que oferece uma viso abrangente
das vrias possibilidades de converso direta entre os diversos formalismos estudados para
representar as linguagens regulares, conforme discutido nas Sees 3.1 a 3.5.
140 Linguagens Formais - Teoria, Modelagem e Implementao
Expresso
regular
(3.11)

Autmato nito
determinstico

(3.3)
Autmato
nito

(3.4)
Autmato nito
sem
transies em vazio
(3.10)

(3.9)
Gramtica
linear direita

(3.1)
Gramtica
linear esquerda
(3.7)

(3.6)
Conjunto
regular
Tabela 3.41: Viso geral da equivalncia dos formalismos e
respectivos teoremas
3.6 Minimizao de Autmatos Finitos
Um importante resultado da teoria dos autmatos refere-se equivalncia da classe
dos autmatos nitos determinsticos com a dos no-determinsticos, ou seja, no-
determinismos em autmatos nitos em nada contribuem para ampliar a classe de lin-
guagens por eles reconhecveis. Conforme mostrado anteriormente, sempre possvel
transformar autmatos nitos no-determinsticos que contenham transies em vazio
em outros equivalentes, determinsticos, isentos de tais transies.
Nesta seo apresentado talvez o mais importante resultado terico conhecido
para a classe das linguagens regulares: o da existncia de autmatos nitos determins-
ticos, mnimos e nicos, que reconhecem os respectivos conjuntos regulares. Em outras
palavras, pode-se provar que cada conjunto regular reconhecido por um autmato nito
mnimo e nico. O termo mnimo empregado para designar um autmato nito que
tenha o nmero mnimo possvel de estados.
A importncia desse resultado decorre de uma srie de fatores. Em primeiro lugar,
porque foi demonstrado que ele vlido apenas para a classe das linguagens denidas
por autmatos nitos, no havendo correspondente para outras classes de linguagens; em
segundo lugar, porque ele extrapola o interesse puramente terico, despertando muito in-
teresse prtico, j que possibilita a construo de reconhecedores sintticos extremamente
compactos e ecientes; em terceiro lugar, porque possvel automatizar a minimizao
de autmatos nitos, ou seja, existe um algoritmo que capaz de transformar qualquer
autmato nito em uma verso equivalente mnima; e, nalmente, em quarto lugar, por-
que o autmato nito mnimo nico para cada linguagem regular, e isso possibilita a
elaborao de novos mtodos no estudo de linguagens formais, como, por exemplo, a de-
monstrao da equivalncia de duas linguagens atravs da reduo dos correspondentes
autmatos nitos s suas verses equivalentes mnimas.
O mtodo apresentado neste item parte da hiptese de que o autmato a ser mini-
mizado determinstico e portanto, obviamente, isento de transies em vazio. Dado um
autmato nito qualquer, a aplicao dos algoritmos apresentados na Seo 3.3 permite
3 Linguagens Regulares 141
a sua transformao em autmatos equivalentes sem transies em vazio ou qualquer
outro tipo de no-determinismo.
A minimizao do nmero de estados de um autmato nito feita em duas etapas:
1. Eliminao de estados inacessveis e inteis;
2. Agrupamento e fuso de estados equivalentes.
Estados inacessveis e inteis podem ser eliminados atravs da aplicao dos algo-
ritmos apresentados anteriormente, cando ento o autmato nito determinstico apto
a ser reduzido sua verso mnima atravs da fuso dos seus estados equivalentes.
O princpio desse mtodo consiste em se efetuar o particionamento sistemtico do
conjunto de estados do autmato em grupos de estados sucessivamente mais abrangentes,
at que cada grupo contenha o maior nmero de estados possvel, o que caracteriza a
respectiva classe de equivalncia. Uma vez esgotado o processo, ou seja, quando no
mais for possvel modicar os grupos construdos, escolhe-se um representante nico para
cada classe, descartando-se os demais estados da mesma classe, uma vez que se trata de
estados equivalentes.
A seguir sero apresentadas algumas denies e os mtodos que permitem efetuar a
identicao sistemtica das classes de equivalncia de um autmato nito determinstico
M, bem como a construo do autmato nito mnimo equivalente M

a partir de M.
Considerem-se M = (Q, , , q
0
, F), um autmato nito determinstico, e dois de
seus estados, q
1
, q
2
Q. Diz-se que a cadeia x

distingue q
1
de q
2
se (q
1
, x)

(q
3
, ), (q
2
, x)

(q
4
, ) e, de forma exclusiva, ou q
3
F ou ento q
4
F. Em outras
palavras, uma cadeia x distingue q
1
de q
2
, quando, para ser integralmente consumida a
partir de cada um desses dois estados, ela conduzir o autmato a um estado nal em
apenas um desses casos.
Dois estados q
1
e q
2
so ditos k-indistinguveis (denotado por q
1
k
q
2
) se e apenas
se no houver cadeia x, |x| k, que permita distinguir q
1
de q
2
. Finalmente, q
1
e q
2
so ditos indistinguveis, ou equivalentes (denotado por q
1
q
2
), se e apenas se eles
forem k-indistinguveis para todo k 0.
Observe-se que, de acordo com a denio, para qualquer par de estados q
i
, q
j
Q,
valem as duas seguintes condies:
1. q
i
0
q
j
se e apenas se ou q
i
, q
j
F, ou ento q
i
, q
j
(Q F), e
2. q
i
k
q
j
se e apenas se q
i
k1
q
j
e (q
i
, )
k1
(q
j
, ), .
A relao possibilita o agrupamento dos estados de um autmato nito M atra-
vs da obteno das denominadas classes de equivalncia, em que os estados pertencentes
a cada classe so todos equivalentes (indistinguveis) entre si. Uma vez agrupados os es-
tados equivalentes, basta escolher um nico representante para cada classe, substituir
por este todas as referncias aos demais estados da mesma classe, e eliminar todos estes,
garantindo-se assim a total ausncia de redundncias de estados da verso nal de M.
No entanto, a identicao de pares de estados indistinguveis requer, conforme
visto acima, a indistinguibilidade para cadeias de comprimento qualquer. Naturalmente,
a vericao exaustiva da equivalncia de estados para cadeias de comprimento arbitrrio
um srio limitante para a elaborao de um algoritmo que possa automatizar essa
operao. Por tal motivo, o Teorema 3.12 fundamental como base para permitir a
142 Linguagens Formais - Teoria, Modelagem e Implementao
realizao prtica do mtodo de minimizao de estados pela identicao das classes de
equivalncia.
Teorema 3.12 (Estados equivalentes) Seja M = (Q, , , q
0
, F) um autmato nito
determinstico com n estados, e considere dois estados quaisquer q
1
, q
2
Q. Ento,
q
1
q
2
se e apenas se q
1
n2
q
2
.
Justicativa Este teorema arma que, para se garantir a equivalncia de dois estados em
um autmato nito com n estados, suciente garantir a sua (n 2)-indistinguibilidade,
ou seja, no h necessidade de se considerar cadeias de comprimento maior que n 2.
A demonstrao da condio suciente trivial, uma vez que, por denio, se
um par de estados k
1
-indistinguvel, isso implica que ele tambm k
2
-indistinguvel,
k
2
k
1
.
A demonstrao da condio necessria, ou seja, a (n2)-indistinguibilidade implica
indistinguibilidade total, trivial tambm no caso em que os n estados do autmato nito
so todos estados nais ou mesmo no-nais. Considere-se, portanto, o caso mais geral
em que h tanto estados nais como estados no-nais em M.
De acordo com o critrio
0
, o conjunto Q pode ser particionado inicialmente em dois
grandes subconjuntos: o primeiro, formado por todos os estados nais (F), e o segundo,
por todos os estados no-nais (Q F). Trata-se, portanto, do primeiro de uma srie
de sucessivos renamentos com o objetivo de determinar as classes de equivalncia de
estados no autmato M.
Executa-se em seguida, para cada um dos dois subconjuntos obtidos atravs de
0
,
o seu renamento (particionamento) atravs de relaes
i
, i = 1, 2, 3 etc. Como M
possui n estados, o maior subconjunto de Q criado atravs de
0
contm no mximo
n 1 estados. Admitindo-se o pior caso, ou seja, que cada um desses estados constitua
individualmente uma classe de equivalncia distinta das demais, ento haver no mximo
mais n 2 renamentos sucessivos de
0
gerando conjuntos de classes de equivalncia,
distintas umas das outras.
Para completar a demonstrao do teorema, basta provar, conforme descrito a se-
guir, que cada um desses n2 particionamentos distintos sucessivos (no mximo) refere-se
ao uso correspondente de cadeias de comprimento 1, 2, ..., n 2, para efetuar o teste de
distinguibilidade do par de estados. Conseqentemente, no h possibilidade de ocor-
rer um novo particionamento distinto dos anteriores para cadeias de comprimento x se
os particionamentos obtidos para cadeias de comprimento x 1 e x 2 se mostrarem
idnticos. Dito ainda de outra maneira, se um certo particionamento feito sobre cadeias
de comprimento x ainda no representa as classes de equivalncia de M, ento um novo
particionamento deve necessariamente existir quando cadeias de comprimento x +1 forem
consideradas.
Para provar essa armao, considere-se o conjunto de todas as classes de equiva-
lncia de M que satisfazem simultaneamente s relaes
k
e
k+1
. No difcil perceber,
nesse caso, que essas mesmas classes de equivalncia satisfazem a
k+2
,
k+3
e assim suces-
sivamente.
Considere-se, por exemplo, uma situao hipottica em que (i) a relao
k
parti-
ciona um certo conjunto Q em trs subconjuntos Q
0
, Q
1
e Q
2
; (ii) a relao
k+1
preserva
o particionamento da relao
k
inalterado; e, nalmente, a relao
k+2
produz uma
partio diferente, por exemplo, Q
0
, R, S e Q
2
, com Q
1
= R S:
3 Linguagens Regulares 143
k
: Q
0
, Q
1
, Q
2
k+1
: Q
0
, Q
1
, Q
2
k+2
: Q
0
, R, S, Q
2
onde Q
0
, Q
1
, Q
2
, R e S so conjuntos de estados, Q = Q
0
Q
1
Q
2
, Q
1
= R S e
R S = .
Admitindo-se, por hiptese, que Q
1
seja particionado em duas novas classes de
equivalncia R e S, isso signica que existe q
i
, q
j
Q
1
, de modo que q
i
k+2
q
j
. Ora, para
que isso fosse verdade, seria necessrio, de acordo com a denio, que:
1. q
i
k+1
q
j
, ou
2. (q
i
, )
k+1
(q
j
, ).
A condio (1) falsa, pois, de acordo com a hiptese original, q
i
e q
j
pertencem
ao conjunto Q
1
, logo q
i
k+1
q
j
. A condio (2) tambm falsa, pois, se q
i
k+1
q
j
, ento
(q
i
, )
k
(q
j
, ). Como, por hiptese, as parties produzidas pelas relaes
k
e
k+1

so idnticas, ento (q
i
, )
k+1
(q
j
, ).
Fica, portanto, demonstrado por contradio que, na hiptese de serem obtidos
dois conjuntos idnticos de classes de equivalncia para k e k + 1, no haver mais
necessidade de se analisar a equivalncia de tais classes para valores maiores do que
k. Fica tambm demonstrado que, para um autmato nito com n estados, haver
no mximo n 1 conjuntos distintos de classes de equivalncia (
0
e os demais n
2), cada qual respectivamente associado a cadeias de comprimento 0 at n 2, no
havendo, portanto, necessidade de se examinar a equivalncia de tais classes para cadeias
de comprimento superior a n 2.
A seguir apresenta-se o Algoritmo 3.17, que permite efetuar o particionamento
sistemtico do conjunto Q de estados de um autmato nito, produzindo como resultado
as classes de equivalncias mais amplas existentes em Q.
Algoritmo 3.17 (Classes de equivalncia) Determinao das classes de equivalncia
existentes no conjunto Q de estados de um autmato nito.
Entrada: um autmato nito M = (Q, , , q
0
, F);
Sada: uma partio Q
0
, Q
1
, ..., Q
n
do conjunto Q de estados, de tal forma que
seus elementos correspondem s mais amplas classes de equivalncias de estados
existentes em Q.
Mtodo:
1. Divide-se o conjunto original Q de estados de M nos dois subconjuntos
que compem a sua partio inicial: o primeiro, composto por todos os
estados nais, e o outro, por todos os estados no-nais de Q. Tal ao se
144 Linguagens Formais - Teoria, Modelagem e Implementao
justica facilmente, j que um estado nal, qualquer que seja ele, sempre
distinguvel de um estado no-nal, qualquer que seja ele (condio vlida
apenas para autmatos isentos de transies em vazio): a cadeia , aceita
por um estado nal e no aceita por um estado no-nal, distingue um do
outro. Essa partio inicial corresponde, portanto, ao resultado da aplicao
da relao
0
ao conjunto Q.
2. Para cada um dos conjuntos obtidos em (1), ren-los em novas parties,
segundo o critrio:
Dois estados A e B de um mesmo subconjunto Q
i
, obtido de uma partio
prvia do conjunto Q de estados, so equivalentes se e somente se:
a) A e B aceitam o mesmo conjunto S de entradas, S , e
b) Para cada uma dessas entradas S:
(A, ) = (B, ), ou
(A, ) = (B, ), mas (A, ) e (B, ) so equivalentes.
Caso contrrio, eles no so equivalentes e devem, portanto, ensejar uma
partio de Q
i
.
Note-se, no Algoritmo 3.17, que a denio da equivalncia entre dois estados A e B
quaisquer elaborada, inicialmente, a partir da identicao das entradas aceitas em cada
um desses estados e, posteriormente, a partir da anlise dos estados que so atingidos
quando se transita com cada uma dessas entradas em A e B se os estados atingidos
so idnticos ou equivalentes. As Figuras 3.41, 3.42 e 3.43 ilustram tais situaes para
os estados A e B de um autmato que aceita duas entradas diferentes
1
e
2
.
A C
B D

1
Figura 3.41: Transies com as mesmas entradas para estados
idnticos
3 Linguagens Regulares 145
E A
F B
C
D

2
Figura 3.42: Transies com as mesmas entradas para estados
equivalentes
D A
E B
C

1
Figura 3.43: Transies com as mesmas entradas para estados
idnticos e equivalentes
Exemplo 3.37 Considere-se o autmato da Tabela 3.42, similar ao autmato do Exemplo 3.38:
a b c d e
q
0
q
1
q
3
q
1
q
3
q
1
q
2
(f) q
2
q
6
q
3
q
1
q
3
q
4
(f) q
4
q
5
q
4
q
6
Tabela 3.42: Autmato original do Exemplo 3.37
Atravs da aplicao do algoritmo de eliminao de estados inacessveis (Algoritmo 3.10)
obtm-se um novo autmato pela excluso do estado q5. Pela aplicao do algoritmo de eliminao
de estados inteis (Algoritmo 3.12), obtm-se um novo autmato sem o estado q6.
Procede-se ento determinao das classes de equivalncia partindo-se do conjunto de estados
Q = {q0, q1, q2, q3, q4}, pela aplicao do algoritmo 3.17. A partio inicial de Q :
Estados nais = {q2, q4}
Estados no-nais = {q0, q1, q3}
a) O conjunto {q2, q4} constitui uma classe de equivalncia, pois q2 e q4 aceitam as mesmas
entradas (nenhuma, neste caso).
146 Linguagens Formais - Teoria, Modelagem e Implementao
b) O conjunto {q0, q1, q3} pode ser particionado em {q0} e {q1, q3}, pois seus elementos tran-
sitam com entradas diferentes: q0 transita com {a, b} e q1 e q3 transitam com {c, d, e}.
c) {q1, q3} constitui uma classe de equivalncia, pois ambos os estados transitam com as mesmas
entradas (no caso, {c, d, e}) e, alm disso:
(q1, c) = q3 e (q3, c) = q1;
(q1, d) = q1 e (q3, d) = q3;
(q1, e) = q2 e (q1, e) = q4, sendo que, conforme (a), q2 e q4 so equivalentes.
O autmato resultante deste exemplo idntico ao obtido no Exemplo 3.38 (Figura 3.45) 2
O mtodo funciona pelo renamento sucessivo dos conjuntos de estados indistin-
guveis para valores crescentes do comprimento das cadeias analisadas. No entanto, a
aplicao desse mtodo um pouco trabalhosa, uma vez que exige a vericao cuidadosa
da equivalncia para cadeias de comprimento k entre quaisquer dois estados. Note-se, por
exemplo, que o simples fato de um estado A aceitar como entrada um subconjunto das
entradas aceitas por um estado B no necessariamente implica a distinguibilidade entre
ambos, uma vez que as entradas no aceitas em A podem eventualmente no conduzir a
estados nais.
Tendo em vista este importante resultado, pode-se retornar ao objetivo inicial desta
seo e apresentar o teorema e o algoritmo que tratam da minimizao do nmero de
estados de um autmato nito.
Teorema 3.13 (Autmato mnimo) Seja M = (Q, , , q
0
, F) um autmato nito.
Ento, existe um autmato nito M

= (Q

, ,

, q
0
, F

) que possui o menor nmero


possvel de estados, tal que L(M) = L(M

). Alm disso, M

nico.
Justicativa A obteno do autmato nito mnimo M

equivalente a M pode ser feita


com base no Algoritmo 3.18, que determina as classes de equivalncia de M.
As classes de equivalncia so denotadas atravs do nome de um estado de M
(qualquer, j que todos so equivalentes), circundado por colchetes, como em [q]. A
demonstrao de que M

mnimo, e tambm nico, pode ser encontrada em [46].


Algoritmo 3.18 (Minimizao de estados) Minimizao do nmero de estados de
um autmato nito.
Entrada: um autmato nito M = (Q, , , q
0
, F);
Sada: um autmato nito M

= (Q

, ,

, q

0
, F

), tal que L(M

) = L(M) e M

no contenha qualquer par de estados equivalentes;


Mtodo:
1. Construir as parties produzidas pelas relaes de equivalncia
0
,
1
, ...,
k
,
k+1
, at que, para algum valor de k, as parties produzidas pelas relaes
k
e
k+1
sejam idnticas.
2. Construir M

tal que:
3 Linguagens Regulares 147
Q

: o conjunto das classes de equivalncia [q] determinadas no passo


(1);

: {([q], ) = [r] | (q, ) = r};


q

0
: [q
0
], ou seja, o estado correspondente classe de equivalncia que
contm q
0
Q;
F

: {[q] | q F}, ou seja, os estados correspondentes s classes de


equivalncia que contm algum q F.

Exemplo 3.38 Considere o autmato nito da Figura 3.44:


q
1
q
2
q
3
q
4
e
e
q
0
a
b
c c
d
d
Figura 3.44: Autmato nito original para o Exemplo 3.38
As sucessivas parties do conjunto de estados Q, produzidas pelas relaes
k
, k = 0, 1, 2,
so as seguintes:
0
: {q0, q1, q3}, {q2, q4}
1
: {q0}, {q1, q3}, {q2, q4}
2
: {q0}, {q1, q3}, {q2, q4}
Logo, Q

= {[q0], [q1], [q2]} e o autmato resultante apresentado na Figura 3.45:


[q
1
] [q
2
]
e
[q
0
]
a, b
c
d
Figura 3.45: Autmato nito mnimo equivalente ao da
Figura 3.44
2
148 Linguagens Formais - Teoria, Modelagem e Implementao
Com o intuito de tornar mais simples a identicao das classes de equivalncia em
autmatos nitos, apresenta-se a seguir um mtodo alternativo, porm equipotente ao
mtodo original.
Este outro mtodo opera em dois passos. No primeiro, eliminam-se do autmato
os no-determinismos, os estados inacessveis e os estados inteis. No segundo, criam-
se classes de equivalncia com base no critrio da coincidncia do conjunto de entradas
aceitas pelos possveis pares de estados considerados.
O mtodo descrito pode ser enunciado na forma do Algoritmo 3.19, uma alternativa
simples e prtica para a minimizao de autmatos nitos. Como o algoritmo baseado
na anlise exaustiva de todos os possveis pares de estados de um autmato M, torna-se
conveniente representar tais pares na forma de uma matriz, considerada apenas da dia-
gonal principal (inclusive) para cima, uma vez que, para efeito de anlise da equivalncia
de estados, o par (q
i
, q
j
) e o par (q
j
, q
i
), com i = j , so idnticos.
Seja, portanto, M um autmato nito com n estados. A Tabela 3.43 mostra uma
forma de representar todos os possveis pares de estados de M, sem repetio de pares e
sem repetio de estados dentro de um mesmo par.
q
1
q
2
... q
n1
q
n
q
0
(q
0
, q
1
) (q
0
, q
2
) ... (q
0
, q
n1
) (q
0
, q
n
)
q
1
(q
1
, q
2
) ... (q
1
, q
n1
) (q
1
, q
n
)
... ... ...
q
n2
(q
n2
, q
n1
) (q
n2
, q
n
)
q
n1
(q
n1
, q
n
)
Tabela 3.43: Representao dos pares de estados de um aut-
mato M com n estados
Adicionalmente, a notao (q
i
, q
j
)

(q
m
, q
n
) usada para indicar que as duas
seguintes condies so simultaneamente vericadas por M:
1. (q
i
, ) = q
m
, e
2. (q
j
, ) = q
n
.
Algoritmo 3.19 (Minimizao de autmatos) Mtodo prtico para a minimizao
do nmero de estados de um autmato nito.
Entrada: Um autmato nito determinstico M, com funo de transio total,
cujos pares de estados esto representados conforme a Tabela 3.43.
Sada: Uma partio do conjunto de estados Q de M, correspondente s maiores
classes de equivalncia encontradas em M;
Mtodo:
1. Marcar, na tabela, todos os pares do tipo (q
a
, q
b
), q
a
F, q
b
(Q F)
como no-equivalentes ();
2. Para cada um dos pares de estados restantes (q
a
, q
b
) (escolhidos arbitrari-
amente), fazer:
3 Linguagens Regulares 149
Se para toda entrada aceita por q
a
e q
b
:
Se (q
a
, ) = (q
b
, ), ou
Se (q
a
, ) = (q
b
, ), mas (q
a
, ) e (q
b
, ) forem equivalen-
tes.
Ento marcar o par (q
a
, q
b
), na tabela, como equivalente (); caso
contrrio, marcar o par como no-equivalente (); em seguida,
deve-se vericar se existem pares cuja relao de equivalncia esteja
na dependncia do resultado obtido e, em caso armativo, marcar os
respectivos pares na tabela de forma correspondente;
Caso no seja possvel concluir pela equivalncia (ou no) de um par
de estados, prosseguir com a anlise de outros pares, deixando o par
corrente na dependncia dos resultados que forem obtidos para os
demais pares;
3. Marcar os pares restantes, se houver, como equivalentes ();
4. A inspeo dos pares marcados indica as classes de equivalncia obtidas.
Observe-se, neste algoritmo, que a exigncia de que a funo de transio seja total
dispensa a vericao de que os estados de cada par considerado aceitem exatamente as
mesmas entradas.
Observe-se tambm que, se houver um ciclo de pares para cujos membros a deciso
dependa sempre da de outro par, esses pares devem todos pertencer mesma classe de
equivalncia, pois no so distinguveis em nenhuma instncia.
Finalmente, cumpre notar que uma forma conveniente de se registrar e de se mani-
pular a dependncia de um par em relao a outros, cuja relao de equivalncia ainda
no foi estabelecida, e tambm de se concluir, posteriormente, pela equivalncia de um
par a partir da vericao da equivalncia de um outro par, atravs do uso de listas
ligadas, em que o primeiro elemento da lista representa o par em relao ao qual os
demais apresentam dependncias. Essa estrutura de dados mostra-se particularmente
conveniente na realizao, em forma de programa de computador, do referido algoritmo.
Exemplo 3.39 Considere-se o autmato nito determinstico com a funo de transio total da
Tabela 3.44.
150 Linguagens Formais - Teoria, Modelagem e Implementao
a b
q
0
q
1
q
6
q
1
q
2
q
3
(f) q
2
q
2
q
3
q
3
q
4
q
2
(f) q
4
q
2
q
3
(f) q
5
q
4
q
5
q
6
q
4
q
4
Tabela 3.44: Autmato original do Exemplo 3.39
A Tabela 3.45 representa todos os possveis pares de estados desse autmato, e tambm indica
a partio inicial de seu conjunto de estados (nais x no-nais).
q
1
q
2
q
3
q
4
q
5
q
6
q
0

q
1
-
q
2
- -
q
3
- - -
q
4
- - - -
q
5
- - - - -
Tabela 3.45: Partio inicial dos estados do autmato da
Tabela 3.44
Passa-se, ento, a considerar cada um dos pares no marcados dessa tabela (escolhidos arbi-
trariamente).
4
(q0, q1)
a
(q1, q2)
Como q1 e q2 no so equivalentes (ver Tabela 3.45), marca-se o par (q0, q1) como e
torna-se desnecessria a anlise das transies desses estados com a entrada b.
(q0, q3)
a
(q1, q4)
Similar ao item acima. O par (q0, q3) marcado como .
(q1, q3)
a
(q2, q4) ?
(q1, q3)
b
(q3, q2)
Apesar de ainda no se dispor de nenhuma informao sobre o par (q2, q4), o par (q3, q2) j
foi determinado como sendo no-equivalente (ver tabela 3.45). Logo, marca-se o par (q1, q3)
como .
(q0, q6)
a
(q1, q4)
Como q1 e q4 no so equivalentes (ver tabela 3.45), marca-se o par (q0, q6) como e
torna-se desnecessria a anlise das transies desses estados com a entrada b.
(q1, q6)
a
(q2, q4) ?
(q1, q6)
b
(q3, q4)
Apesar de ainda no se dispor de nenhuma informao sobre o par (q2, q4), o par (q3, q4) j
foi determinado como sendo no-equivalente (ver tabela 3.45). Logo, marca-se o par (q1, q6)
como .
4
Com base nas informaes j processadas sobre cada par de estados, o smbolo indica equivalncia,
indica no-equivalncia, e ? indica indenio e dependncia.
3 Linguagens Regulares 151
(q3, q6)
a
(q4, q4)
(q3, q6)
b
(q2, q4) ?
Neste caso, q3 e q6 transitam para o mesmo estado q4 com a entrada a. Por outro lado,
ainda no se dispe de nenhuma informao sobre o par (q2, q4). Assim, a equivalncia do
par (q3, q6) ca condicionada vericao da equivalncia do par (q2, q4). O par (q3, q6) no
recebe nenhuma marcao neste momento.
(q2, q4)
a
(q2, q2)
(q2, q4)
b
(q3, q3)
Os estados q2 e q4 transitam com as mesmas entradas para estados idnticos (com a entrada
a para q2 e com a entrada b para q3). Logo, esses estados so equivalentes e o par recebe
a marcao na tabela. Alm disso, conclui-se que o par (q3, q6) (ver item acima)
equivalente, e o mesmo deve ser marcado como .
(q2, q5)
a
(q2, q4)
(q2, q5)
b
(q3, q5)
Apesar de o par (q2, q4) ser equivalente (ver os dois itens anteriores), o par (q3, q5) j foi
determinado como sendo no-equivalente (ver Tabela 3.45). Logo, marca-se o par (q2, q5)
como .
(q4, q5)
a
(q2, q4)
(q4, q5)
b
(q3, q5)
Similar ao item acima. O par (q4, q5) marcado como .
Ao trmino do algoritmo, a Tabela 3.46 resume o resultado da anlise.
q
1
q
2
q
3
q
4
q
5
q
6
q
0

q
1
-
q
2
- -
q
3
- - -
q
4
- - - -
q
5
- - - - -
Tabela 3.46: Resultado nal da anlise da equivalncia de
estados para o autmato da Tabela 3.44
As classes de equivalncia desse autmato so, portanto, {q0}, {q1}, {q2, q4}, {q3, q6} e {q5}.
O autmato resultante (ver Tabela 3.47) possui cinco estados, denominados respectivamente [q0],
[q1], [q2, q4], [q3, q6] e [q5], e corresponde verso mnima do autmato da Tabela 3.44.

a b
[q
0
] [q
1
] [q
3
, q
6
]
[q
1
] [q
2
, q
4
] [q
3
, q
6
]
(f) [q
2
, q
4
] [q
2
, q
4
] [q
3
, q
6
]
[q
3
, q
6
] [q
2
, q
4
] [q
2
, q
4
]
(f) [q
5
] [q
2
, q
4
] [q
5
]
Tabela 3.47: Autmato mnimo equivalente ao da Tabela
3.44
2
152 Linguagens Formais - Teoria, Modelagem e Implementao
Note-se, no Algoritmo 3.19, a exigncia de que o autmato a ser minimizado possua
funo de transio total. Tal exigncia visa unicamente a garantir que todos os pares
de estados, quaisquer que sejam os estados considerados, possam sempre ser comparados
em relao a todas as entradas.
No entanto, ao tornar total a funo de transio de algum autmato cuja funo
de transio seja parcial, isso normalmente implica a incorporao de um estado intil
ao autmato, o qual acaba sendo agrupado com outros estados inteis eventualmente
existentes no autmato original e preservado na verso mnima correspondente. Caso
o autmato original possua estados inacessveis, estes tambm sero agrupados em um
nico estado no autmato mnimo equivalente.
Assim, o autmato mnimo obtido tal que a funo de transio total e, alm
disso, isento de estados equivalentes. Eventualmente, a eliminao de estados inteis, e
tambm de estados inacessveis, em um autmato minimizado de acordo com o Algoritmo
3.19, poder resultar em um nmero ainda menor de estados, porm em um autmato
cuja funo de transio seja parcial. Isso no signica que o autmato inicialmente
obtido no seja o mnimo, mas apenas que ele o autmato mnimo com funo de
transio total e sem estados equivalentes.
Dois estados A e B de um autmato nito so ditos equivalentes se, em ltima
instncia, o conjunto de cadeias aceitas em cada um deles for o mesmo. Considere-se a
linguagem aceita a partir de um estado X como sendo denida da seguinte forma:
L(X) = {w

| (X, w)

(, q
F
), q
F
F}
Logo, fcil perceber que A B se e somente se L(A) = L(B). Esse resultado
pode simplicar a vericao da equivalncia de estados para os quais a determinao
da linguagem aceita em cada um deles seja uma tarefa simples de ser feita (por inspeo
visual ou pela aplicao de um mtodo qualquer).
Exemplo 3.40 Considere-se o autmato da Figura 3.46:
q
1
q
3
q
2
q
4
b
b
q
0
a
b
c
c
a
a
Figura 3.46: Autmato original do Exemplo 3.40
Uma rpida inspeo visual permite concluir que:
L(q0) = (a | b)c

(a | b)
L(q1) = c

(a | b)
L(q2) = c

(a | b)
3 Linguagens Regulares 153
L(q3) =
L(q4) =
Portanto, como L(q1) = L(q2) e L(q3) = L(q4), ento q1 q2 e q3 q4, e a verso mnima
corresponde apresentada na Figura 3.47.
q
1
q
3
a, b
q
0
a, b
c
Figura 3.47: Autmato mnimo equivalente ao da Figura
3.46
2
O Teorema 3.13 apresenta dois resultados fundamentais para as linguagens regula-
res, conforme abaixo. Dada uma linguagem regular L qualquer, ento:
1. Existe um autmato nito mnimo que aceita L. Em outras palavras, no existe
nenhum outro autmato, com um nmero inferior de estados, que aceite L;
2. O autmato nito mnimo que aceita L nico. Isso signica que no existem
dois autmatos nitos com o mesmo nmero de estados, porm com funes de
transio distintas, que aceitam a linguagem L.
A existncia e unicidade de um autmato nito mnimo para toda e qualquer lin-
guagem regular L permite, entre outros resultados, estabelecer critrios para determinar
se um conjunto de linguagens regulares representa a mesma linguagem: basta obter as
verses mnimas dos autmatos nitos que reconhecem cada uma dessas linguagens, e
vericar se so todos iguais. Em caso armativo, as linguagens so todas idnticas. Caso
contrrio, no so todas idnticas.
3.7 Transdutores Finitos
Estudadas as denies, notaes e conceitos fundamentais associados aos autmatos
nitos, analisam-se a seguir algumas importantes extenses dessa classe de autmatos.
Inicialmente, considerem-se os denominados transdutores nitos. Os autmatos
nitos, como foi visto, so simples dispositivos de reconhecimento de sentenas e, como
tal, so muito pobres quanto s suas informaes de sada: a nica por eles emitida a da
aceitao ou rejeio da cadeia analisada. Com o intuito de ampliar a aplicabilidade dos
autmatos nitos, foram denidas extenses que associam, a cada sentena de entrada,
uma correspondente cadeia de sada sobre um segundo alfabeto, eventualmente distinto
do alfabeto de entrada.
A associao de smbolos de um alfabeto de sada com a movimentao do autmato
nito no reconhecimento de uma sentena pode ser feita de duas formas distintas: a partir
da seqncia de estados percorridos ou das transies de que se compe o autmato nito
no qual se baseia o transdutor em questo. O primeiro caso caracteriza as denominadas
Mquinas de Moore, e o segundo as chamadas Mquinas de Mealy.
154 Linguagens Formais - Teoria, Modelagem e Implementao
Formalmente, um transdutor nito do tipo Mquina de Moore denido como
sendo uma stupla T
Moore
= (Q, , , , , q
0
, F) sobre um autmato nito M = (Q, ,
, q
0
, F), em que o alfabeto de sada do transdutor e : Q a funo de
transduo
5
de T.
Na notao dos Diagramas de Estado, cada estado do autmato nito rotulado
com a identicao do smbolo do alfabeto de sada que deve ser gerado toda vez que o
estado for atingido.
Exemplo 3.41 Seja T um transdutor nito do tipo Mquina de Moore:
T = (Q, , , , , q0, F)
Q = {q0, q1}
= {a, b, c}
= {1}
= {(q0, a) q1, (q1, b) q1, (q1, c) q0}
= {q0 1, q1 }
F = {q1}
O grafo correspondente a esse transdutor apresentado na Figura 3.48:
q
0
/1 q
1
/
a
b
c
Figura 3.48: Transdutor do tipo Mquina de Moore
A linguagem aceita por esse transdutor ab

(cab

, ou seja, uma seqncia de uma ou


mais cadeias ab

separadas pelo smbolo c. A funo de transio , neste caso, faz com que o
transdutor emita o smbolo 1 toda vez que estiver iniciando o reconhecimento de uma nova cadeia
com o formato ab

. Assim, T funciona como um contador do nmero de subcadeias ab

presentes
na cadeia de entrada. Como exemplo, a Tabela 3.48 apresenta um conjunto de cadeias que so
respectivamente aceitas e geradas por T.
Sentena aceita Cadeia Gerada
abbcabbbcab 111
abbbcab 11
acacaca 1111
a 1
Tabela 3.48: Sentenas aceitas e cadeias geradas pelo
transdutor do tipo Mquina de Moore T
2
Um transdutor nito do tipo Mquina de Mealy, por sua vez, denido como
sendo uma stupla T
Mealy
= (Q, , , , , q
0
, F) sobre um autmato nito M = (Q, , ,
q
0
, F), em que o alfabeto de sada do transdutor e : Q a funo de
transduo
6
de T.
5
Alternativamente, alguns autores preferem adotar : Q

.
6
Alguns autores adotam : Q

.
3 Linguagens Regulares 155
No caso das Mquinas de Mealy, associam-se os smbolos do alfabeto de sada s
transies, e no aos estados, como ocorre com as Mquinas de Moore (o domnio da
funo se altera para Q ).
Exemplo 3.42 Seja T um transdutor nito do tipo Mquina de Mealy:
T = (Q, , , , , q0, F)
Q = {q0, q1}
= {a, b, c}
= {a, b, c}
= {(q0, a) q1, (q1, b) q1, (q1, c) q0}
= {(q0, a) ab, (q1, b) , (q1, c) c}
F = {q1}
O grafo correspondente apresentado na Figura 3.49:
q
0
q
1
a/ab
b/
c/c
Figura 3.49: Transdutor do tipo Mquina de Mealy
Como se pode notar, o autmato nito que serve de base para esse transdutor o mesmo do
exemplo anterior. Assim, a linguagem aceita por ambos os transdutores a mesma. No entanto,
o transdutor deste exemplo mapeia as subcadeias ab

aceitas pelo autmato nito em cadeias do


tipo ab, mantendo o smbolo c como separador na sentena de sada. Observe que a funo de
transduo foi denida, neste caso, sobre

(devido utilizao da cadeia ). A Tabela 3.49


apresenta alguns exemplos de cadeias respectivamente aceitas e geradas por T:
Sentena aceita Cadeia Gerada
abbcabbbcab abcabcab
abbbcab abcab
acacaca abcabcabcab
a ab
Tabela 3.49: Sentenas aceitas e cadeias geradas pelo
transdutor do tipo Mquina de Mealy T
2
Apesar de se tratar de dois modelos distintos de transdutores nitos, pode-se de-
monstrar a plena equivalncia de ambos: toda e qualquer Mquina de Moore pode ser
simulada por uma Mquina de Mealy e vice-versa. Dessa maneira, portanto, a opo
por um ou outro tipo de mquina pode ser feita levando-se em conta exclusivamente a
convenincia de manipulao e a facilidade de representao obtidas conforme o caso em
questo.
Teorema 3.14 (Equivalncia dos transdutores) Toda Mquina de Mealy pode ser
simulada por uma Mquina de Moore, e vice-versa.
156 Linguagens Formais - Teoria, Modelagem e Implementao
Justicativa Pode ser encontrada em [46].
Exemplo 3.43 Considere-se a linguagem L1 = xx

(xx

, denida sobre o alfabeto {x, }.


Considere-se tambm a linguagem L2, denida sobre o alfabeto de sada {x, y, #}, de tal forma
que as cadeias de L2 reproduzem na sada as cadeias de L1, com as seguintes modicaes:
As subcadeias de entrada xx

que contiverem trs ou menos smbolos x devem ser reprodu-


zidas de forma idntica na sada (com um, dois ou trs smbolos x);
As subcadeias de entrada xx

que contiverem quatro ou mais smbolos x devem ser repro-


duzidas na sada como xxxy;
Todos os smbolos - da cadeia entrada devem ser substitudos pelo smbolo # na cadeia
de sada.
A Tabela 3.50 apresenta exemplos de cadeias de entrada e correspondentes cadeias de sada:
Sentena aceita Cadeia Gerada
x x x#x
xxx xxxx xxx#xxxy
xxxxxx xxx xx xxxy#xxx#xx
x xx xxx xxxx xxxxx x#xx#xxx#xxxy#xxxy
Tabela 3.50: Sentenas aceitas e cadeias geradas pelos
transdutores do Exemplo 3.43
Os transdutores nitos das Figuras 3.50 e 3.51 respectivamente Mquina de Mealy e M-
quina de Moore so equivalentes, pois possuem autmatos subjacentes que reconhecem a mesma
linguagem L1 (apesar de serem diferentes) e geram a mesma linguagem L2, conforme as especica-
es acima.
q
0
q
1
q
2
q
3
q
4
x/x x/x x/x x/y
x/
/#
/#
/#
/#
Figura 3.50: Transdutor do tipo Mquina de Mealy do
Exemplo 3.43
3 Linguagens Regulares 157
q
6
/#
q
2
/x q
3
/x q
4
/y q
5
/
x x x
x
#
#
#
#
q
1
/x
q
0
/
x
x
x
Figura 3.51: Transdutor do tipo Mquina de Moore equi-
valente ao transdutor do tipo Mquina de Mealy da Figura
3.50
2
Alm de denirem a linguagem de entrada associada ao autmato nito subjacente,
os transdutores, sejam eles de um tipo ou de outro, denem uma segunda linguagem,
denominada linguagem de sada, denotada por L(T), correspondente ao conjunto das
sentenas sobre que so geradas quando do reconhecimento de sentenas pertencentes
a L(M), onde M o autmato nito em que o transdutor baseado. Demonstra-se
que a classe de linguagens que pode ser gerada por um transdutor nito corresponde
exatamente classe de linguagens que pode ser reconhecida pelo autmato nito em que
ele se baseia: a classe das linguagens regulares.
3.8 Linguagens que no so Regulares
No Captulo 2 foi mencionado que as linguagens regulares, ou do tipo 3, constituiriam
um subconjunto prprio das linguagens livres de contexto, ou do tipo 2. Para vericar
a veracidade dessa proposio, necessrio antes demonstrar a existncia de linguagens
que no so regulares.
Uma das formas mais usuais para se provar que determinadas linguagens no so
regulares atravs da utilizao do Pumping Lemma, a seguir apresentado. Em li-
nhas gerais, o Pumping Lemma
7
estabelece uma propriedade que sempre verdadeira
para toda e qualquer linguagem regular. Caso a linguagem considerada no exiba tal
propriedade, pode-se concluir imediatamente que a mesma no regular.
Teorema 3.15 (Pumping Lemma para linguagens regulares) Seja L um con-
junto regular innito. Ento existe uma constante n, dependente apenas de L, tal que,
para quaisquer sentenas w L, com |w| n, w pode ser subdividida em trs subcadeias
x, y e z, de tal forma que w = xyz, 1 |y|, |xy| n, ou seja, 1 |y| n, e, alm disso,
xy
i
z L, i 0.
Justicativa O reconhecimento de qualquer cadeia x L, com |x| n, sendo L aceita
7
Referido por alguns autores em portugus como Lema do Bombeamento.
158 Linguagens Formais - Teoria, Modelagem e Implementao
por um autmato nito M com n estados, ocorre percorrendo-se pelo menos dois estados
idnticos entre as n + 1 conguraes assumidas por M durante o reconhecimento dos
primeiros n smbolos de x.
Seja w = a
1
a
2
...a
m
, |w| = m, m n. A seqncia abaixo ilustra a evoluo da
congurao do autmato M no reconhecimento de w:
q
0
a1
q
1
a2
q
2
a3
q
3
...
an1
q
n1
an
q
n
an+1
q
n+1
...
am1
q
m1
am
q
m
onde q
0
...q
m
so os estados sucessivamente percorridos por M (no necessariamente dis-
tintos entre si).
Considerando-se os n +1 estados inicialmente percorridos por M (q
0
, q
1
...q
n
), fato
que pelo menos dois desses estados devem ser idnticos. Existem ento duas possibili-
dades extremas a serem consideradas, no que diz respeito localizao desses estados
idnticos na seqncia:
1. A distncia entre eles a menor possvel: (q
i
, a
k
...a
m
) (q
j
, a
k+1
...a
m
), q
i
=
q
j
, j n;
2. A distncia entre eles a maior possvel: (q
0
, a
1
...a
m
) (q
n
, a
n+1
...a
m
), q
0
= q
n
.
Reescrevendo-se w como xyz, em que x corresponde parte da cadeia de entrada
que leva M primeira ocorrncia de um estado repetido na seqncia, e y corresponde
parte da cadeia que leva M sua segunda ocorrncia, tem-se que:
|y| 1;
|xy| n;
Portanto, 1 |y| n, pois |y| |xy|.
Caso haja, entre os n + 1 estados inicialmente percorridos pelo autmato, trs ou
mais ocorrncias de um mesmo estado, permanecem vlidos os limites superior (n) e
inferior (1) previamente determinados para o comprimento da cadeia y.
Como se pode perceber, o fato de a subcadeia y levar o autmato de um estado
q
i
, anterior ao seu reconhecimento, para o mesmo estado q
j
= q
i
, posterior ao seu
reconhecimento, caracteriza como um ciclo o caminho percorrido pelos estados de M,
com os smbolos de y. Pelo fato de se tratar de um ciclo, repeties arbitrrias do mesmo
conduzem ao reconhecimento de sentenas tambm pertencentes linguagem denida
pelo autmato. Dessa forma, todas as sentenas do tipo xy
i
z, com i 0, pertencem
necessariamente a L(M).
O Pumping Lemma se baseia no fato de que cadeias com uma certa quantidade
mnima de smbolos no podem ser reconhecidas por autmatos nitos sem que haja
repetio de conguraes. Por esse motivo, a limitao da quantidade de estados
explorada para demonstrar a existncia de ciclos, e estes, por sua vez, para demonstrar
que outras sentenas devem necessariamente pertencer linguagem.
O Pumping Lemma das linguagens regulares estabelece a propriedade de que,
dada uma sentena de comprimento mnimo n pertencente a esta linguagem, sempre
possvel identicar, na subcadeia formada pelos seus n primeiros smbolos, uma nova
subcadeia cujo comprimento est entre 1 e n, de tal modo que repeties arbitrrias da
mesma geram sentenas que tambm pertencem linguagem denida.
3 Linguagens Regulares 159
Assim, a constante n corresponde ao nmero de estados do autmato nito utili-
zado para denir a linguagem regular. No entanto, como sabido, uma mesma linguagem
regular pode ser denida por autmatos nitos distintos, os quais podem possuir, even-
tualmente, um nmero de estados tambm distintos.
Suponha-se L uma linguagem regular e innita que seja aceita por dois autmatos
nitos distintos M
1
e M
2
, M
1
= (Q
1
, ,
1
, q
01
, F
1
) e M
2
= (Q
2
, ,
2
, q
02
, F
2
). Sejam
n
1
= |Q
1
| e n
2
= |Q
2
|, e suponha-se n
1
> n
2
. Se w L e |w| n
1
, ento claro
que |w| n
2
e w pode ser escolhida para vericar o Pumping Lemma em M
2
. Por
outro lado, se |w| n
2
, como L innita, ento fato que existe uma outra cadeia
z L, |z| n
1
, que pode ser usada para vericar o Pumping Lemma em M
1
. Logo,
indiferente a escolha de M
1
ou M
2
e, conseqentemente, de n
1
ou n
2
, para demonstrar a
validade do Pumping Lemma para a linguagem L.
Por outro lado, natural que se questione a existncia de um valor para a constante
n que independa do autmato analisado, e que possa, portanto, ser considerado como
inerente linguagem. Considerando-se a existncia de um autmato nito mnimo que
reconhece uma dada linguagem regular L (ver Seo 3.6), natural que se considere o
nmero de estados do correspondente autmato nito como o valor n inerente linguagem
L.
Observe-se que, embora o teorema prove a existncia da constante n, a sua aplicao
em casos prticos no exige que se determine o valor dessa constante.
Exemplo 3.44 Considere-se um autmato nito M com cinco estados distintos, e suponha-se que
M efetue a anlise de uma cadeia p L(M), |p| = 5. Claramente, M dever percorrer seis
estados durante o reconhecimento da cadeia. No obstante, como M apresenta apenas cinco estados
distintos, evidente que pelo menos dois (eventualmente mais) dos estados assumidos por M durante
o reconhecimento de p so idnticos. Considere-se agora uma cadeia q L(M), |q| = 20. Da mesma
forma, analisando-se os seis primeiros estados percorridos por M, constata-se que obrigatoriamente
haver pelo menos dois estados repetidos entre eles, correspondentes ao reconhecimento dos cinco
primeiros smbolos de q. 2
Exemplo 3.45 Seja M = ({q0, q1}, {a, b}, , q0, F) um autmato nito sem transies em vazio.
Se ab L(M), ento a seqncia de conguraes assumidas por M durante a anlise dessa cadeia
deve, necessariamente, corresponder a alguma das seguintes possibilidades:
1. (q0, ab) (q0, b) (q0, )
2. (q0, ab) (q0, b) (q1, )
3. (q0, ab) (q1, b) (q0, )
4. (q0, ab) (q1, b) (q1, )
Considerando-se os demais elementos de M desconhecidos, pode-se apenas especular sobre a
real seqncia que corresponde aceitao da cadeia ab por M. De qualquer forma, as seguintes
concluses so vlidas:
1. Se (q0, ab) (q0, b) (q0, ), ento pelo menos uma das seguintes possibilidades verdadeira:
a) x = , y = ab, z = ;
b) x = a, y = b, z = ;
c) x = , y = a, z = b.
2. Se (q0, ab) (q0, b) (q1, ), ento:
160 Linguagens Formais - Teoria, Modelagem e Implementao
a) x = , y = a, z = b.
3. (q0, ab) (q1, b) (q0, )
a) x = , y = ab, z = .
4. (q0, ab) (q1, b) (q1, )
a) x = a, y = b, z = .
Portanto, qualquer que seja o caso, sempre possvel identicar, na cadeia ab, cujo compri-
mento coincide com o nmero de estados do autmato que a aceita, uma subcadeia y, de compri-
mento maior ou igual a 1 e menor ou igual a 2, que provoca um ciclo na seqncia de movimentaes
executada pelo autmato. 2
Exemplo 3.46 Considere-se o autmato da Figura 3.52:
q
0
q
1
q
2
a c
b
Figura 3.52: Aplicao do Pumping Lemma ao autmato
nito que aceita ab

c
A aplicao das propriedades enunciadas atravs do Pumping Lemma a este autmato podem
ser vericadas atravs do uso de cadeias de comprimento maior ou igual a 3, uma vez que ele possui
trs estados:
Considere-se a cadeia w = abc, |w| = 3. Ento, w pode ser reescrito como xyz, |xy| 3, 1
|y| 3 e, nalmente, xy
i
z L, i 0. Nesse caso, deve-se escolher x = a, y = b, z = c.
Assim, xz = ac, xyyz = abbc, xyyyz = abbbc etc. so todas cadeias que pertencem a L.
Considere-se a cadeia w = abbbc, |w| = 5. Ento, w pode ser reescrito como xyz, |xy|
3, 1 |y| 3 e, nalmente, xy
i
z L, i 0. Nesse caso podem-se fazer trs escolhas
distintas de subdiviso da cadeia w, todas em conformidade com os critrios do Pumping
Lemma:
x = a, y = b, z = bbc. As cadeias (a)(b)

(bbc) esto contidas em L.


x = a, y = bb, z = bc. As cadeias (a)(bb)

(bc) esto contidas em L.


x = ab, y = b, z = c. As cadeias (ab)(b)

(c) esto contidas em L.


Nem todas as subdivises de uma cadeia w geram cadeias que produzem cadeias que perten-
cem linguagem. Note-se, em particular, no exemplo acima, que seria possvel relacionar,
entre as subdivises possveis da cadeia de comprimento 5, as seguintes alternativas:
i) x = , y = a, z = bbbc;
ii) x = , y = ab, z = bbc;
iii) x = , y = abb, z = bc.
3 Linguagens Regulares 161
Em todos esses casos, xy
i
z gera cadeias que no pertencem a L. Qualquer que seja a cadeia
escolhida, o Pumping Lemma garante apenas que, se ela possuir comprimento mnimo, ento ao
menos uma subdiviso xyz da mesma ser possvel de ser feita, de modo que todas as cadeias xy
i
z
tambm pertenam linguagem. 2
A principal aplicao do Pumping Lemma consiste na demonstrao da existncia
de linguagens no-regulares. Outras aplicaes importantes podem ser encontradas na
demonstrao de certas questes decidveis da classe das linguagens regulares.
A demonstrao de que uma dada linguagem no regular pode ser feita por con-
tradio, da seguinte forma:
1. Admite-se inicialmente, por hiptese, que a linguagem sob anlise seja regular;
2. Atravs de manipulaes, demonstra-se que a linguagem no exibe as propriedades
descritas pelo Pumping Lemma;
3. Conclui-se, por contradio, que a hiptese no verdadeira, e portanto que a
linguagem no regular.
Na prtica, a aplicao do mtodo se inicia com a escolha de uma sentena da
linguagem que possua o comprimento mnimo exigido pelo Pumping Lemma. Como
normalmente o valor de n no conhecido, admite-se n como parmetro do problema,
e expressa-se a sentena escolhida em funo de n. Na prtica, a determinao do
valor numrico de n desnecessria, bastando o conhecimento terico da sua existncia.
A seguir, atravs de manipulaes da sentena selecionada, busca-se identicar outras
cadeias dela derivadas conforme as premissas do Pumping Lemma, mas que violem a
denio da linguagem. Havendo sucesso nesse passo, conclui-se que o Pumping Lemma
das linguagens regulares no vlido para a linguagem considerada e, portanto, que tal
linguagem no regular.
O Pumping Lemma no se aplica aos casos em que se deseja demonstrar que
uma determinada linguagem regular. Para que isso fosse uma possibilidade concreta,
seria necessrio mostrar que, para toda e qualquer sentena da linguagem (xyz), toda e
qualquer outra sentena obtida a partir dela, atravs da aplicao do Pumping Lemma
(xy
i
z), tambm pertence mesma linguagem. Na prtica isso invivel, uma vez que:
As linguagens que exibem maior interesse so innitas (linguagens nitas so tri-
vialmente regulares);
8
A quantidade de cadeias geradas a partir de cada sentea considerada innita.
A demonstrao de que uma linguagem regular s pode ser feita atravs da apre-
sentao de uma enumerao, de uma expresso regular, de um autmato nito ou de
uma gramtica regular que dena a linguagem.
Exemplo 3.47 Seja L = {a
k
b
k
| k 0}. Supondo que L seja uma linguagem regular, tome-se a
sentena a
n
b
n
, onde n a constante denida pelo Pumping Lemma. Essa sentena pertence a L
e possui comprimento 2n, portanto maior ou igual a n. De acordo com o Lemma, essa sentena
pode ser decomposta em trs subcadeias x, y e z, tais que xyz = a
n
b
n
, |xy| n, |y| 1.
8
Linguagens trivialmente regulares so reconhecidas por autmatos nitos isentos de ciclos, e portanto a eles o
Pumping Lemma no se aplica, j que exprime uma propriedade peridica da linguagem, e em linguagens
nitas no se podem detectar periodicidades. Em outras palavras, nas cadeias xyz, y = , e isso contraria a
hiptese do Pumping Lemma
162 Linguagens Formais - Teoria, Modelagem e Implementao
Logo, y = a
i
, 1 i n, e xyz pode ser reescrito como a
ni
a
i
b
n
. No entanto, nenhuma das
seguintes cadeias pertence a L:
1. xy
0
z = a
ni
b
n
2. xyyz = a
ni
a
i
a
i
b
n
= a
n+i
b
n
uma vez que as ocorrncias do smbolo a esto desbalanceadas em relao s ocorrncias dos smbolos
b. Logo, L no regular. 2
Exemplo 3.48 Seja L = {0
k
10
k
| k 1} e considere-se uma sentena w de comprimento suciente-
mente longo pertencente a esta linguagem, w = 0...010...0. Admitindo-se que seja possvel escrever
w como xyz, tem-se que 1 y n, onde n a constante de L, e y pode assumir uma das cinco
formas seguintes:
1. y = 1
2. y 0
+
3. y 0
+
1
4. y 10
+
5. y 0
+
10
+
Como fcil perceber, se y = 1, ento xy
0
z L, pois faltar o smbolo 1, obrigatrio em
todas as sentenas de L.
Se y 0
+
, ento xyyz L, pois haver quantidades diferentes do smbolo 0 antes e aps o
smbolo 1 na sentena.
Se y 0
+
1, y 10
+
ou, ainda, y 0
+
10
+
, ento xyyz L, uma vez que xyyz ter mais
que um nico smbolo 1. Fica assim demonstrado, por contradio, que L no uma linguagem
regular, visto que no atende ao Pumping Lemma. 2
Exemplo 3.49 Considere-se a linguagem L = {a
kk
| k Z+}. De acordo com essa denio, as
sentenas de L so seqncias formadas por smbolos a de comprimento 1, 4, 9, 16 etc. Seja n a
constante de L e considere-se a sentena a
nn
.
Essa cadeia pode ser reescrita como xyz, em que 1 |y| n. Pelo Pumping Lemma, se
xyz L, ento xyyz L. Considerando a sentena xyyz, tem-se que n
2
< |xyyz| n
2
+ n. Por
outro lado, n
2
+ n < (n + 1)
2
, portanto, n
2
< |xyyz| < (n + 1)
2
. Ora, isso contraria a hiptese
de que o comprimento de todas as sentenas dessa linguagem correspondem ao quadrado de algum
nmero inteiro positivo, uma vez que no existe i Z+ tal que n
2
< i
2
< (n +1)
2
, n Z+. Fica
assim demonstrado, por contradio, que L no uma linguagem regular. 2
Exemplo 3.50 Seja L = {a
k
b
k
c
k
| k 1}. Supondo que L seja uma linguagem regular, tome-
se a sentena a
n
b
n
c
n
, onde n a constante denida pelo Pumping Lemma. Claramente essa
sentena pertence a L. Mas, de acordo com o Lemma, essa sentena pode ser decomposta em trs
subcadeias x, y e z, tais que xyz = a
n
b
n
c
n
, |xy| n, |y| 1.
Logo, y = a
i
, 1 i n, e xyz pode ser reescrito como a
ni
a
i
b
n
c
n
. No entanto, nenhuma
das seguintes cadeias pertence a L:
1. xy
0
z = a
ni
b
n
c
n
2. xyyz = a
ni
a
i
a
i
b
n
c
n
= a
n+i
b
n
c
n
uma vez que as ocorrncias do smbolo a esto desbalanceadas em relao s dos smbolos b e c.
Logo, L no regular. Observe-se a semelhana da presente demonstrao com a que foi efetuada
para a linguagem a
k
b
k
no Exemplo 3.47. 2
3 Linguagens Regulares 163
Exemplo 3.51 Considere-se L = {a
k
| k 1 um nmero primo}. Admitindo-se que L seja uma
linguagem regular, tome-se a sentena a
m
, onde m o primeiro nmero primo superior constante
n denida pelo Pumping Lemma. Logo, m > n. De acordo com o Lemma, como |a
m
| = m n,
essa sentena pode ser decomposta em trs subcadeias x, y e z, com xyz = a
m
, |xy| n, |y| 1.
Alm disso, xy
i
z L, i 0. Em particular, pode-se fazer i = m+1. Logo, de acordo com o
Lemma, a cadeia xy
m+1
z deveria pertencer a L. No entanto, |xy
m+1
z| = |xyzy
m
| = |xyz |+|y
m
|.
Como |xyz| = m e |y
m
| = m |y|, ento |xy
m+1
z| = m + m |y| = m (1 +|y|).
Esse resultado mostra que o comprimento de xy
m+1
z, ou seja, m(1+|y|), no um nmero
primo, uma vez que:
Ele divisvel por m, pois
m (1 +|y|)
m
= (1 +|y|);
m = 1, pois n 1 e m > n;
m = m (1 +|y|), pois, de acordo com o Pumping Lemma, |y| 1.
Logo, L no regular. 2
3.9 Propriedades de Fechamento
Conforme denido na Seo 1.2, diz-se que uma determinada classe de linguagens
fechada em relao a uma operao se da aplicao da operao a quaisquer linguagens
dessa classe resultar sempre uma linguagem que tambm pertena classe em questo.
O estudo de uma classe de linguagens do ponto de vista das operaes em relao s
quais ela fechada muito importante, uma vez que auxilia, na prtica, na determinao
da classe de linguagens a que uma certa linguagem possa ou no pertencer.
A seguir so apresentadas, na forma de teoremas, as principais propriedades de
fechamento para as linguagens regulares.
Teorema 3.16 (Fecho na unio, concatenao e fecho) A classe das linguagens re-
gulares fechada em relao s operaes de unio, concatenao e fechamento reexivo
e transitivo.
Justicativa Imediata, a partir da denio dos conjuntos regulares.
Teorema 3.17 (Fecho na complementao) A classe das linguagens regulares fe-
chada em relao operao de complementao.
Justicativa Seja L(M) a linguagem aceita por um autmato nito determinstico M=(Q,
, , q
0
, F), sendo uma funo total, e considere-se . Como se pode perceber
pela Figura 3.53,

L = (

) (

L(M)).
164 Linguagens Formais - Teoria, Modelagem e Implementao
Figura 3.53: Representao de

e L(M)

contm as sentenas que possuem pelo menos um elemento de , e

L(M) as sentenas sobre rejeitadas por M.


A linguagem

L(M) aceita pelo autmato M

= (Q, , , q
0
, Q F), em que
os estados nais de M tornam-se no-nais em M

e vice-versa. Assim, se x L(M), ou


seja, se (q
0
, x) F, ento x L(M

), uma vez que (q


0
, x) (Q F).
Logo, conclui-se que, se L for uma linguagem regular, ento

L(M) ser tambm


uma linguagem regular, uma vez que ela aceita pelo autmato nito M

.
Por outro lado, a linguagem

, de acordo com a sua interpretao (conjunto


de sentenas que possuem pelo menos um elemento de ), pode ser reescrita como:

( )

Portanto, como decorrncia do fechamento das linguagens regulares sobre as ope-


raes de fechamento reexivo e transitivo e de concatenao, possvel armar que

regular.
Finalmente, (

) (

L(M)) tambm uma linguagem regular, uma vez


que (

) e (

L(M)) so fechadas em relao operao de unio.


Exemplo 3.52 Considere-se M o autmato nito determinstico da Figura 3.54, L(M) = (ab|c)d

.
q
0
q
1
q
2
q
3
q
4
a b e
c
d e
b, d, e
a, c, d, e
a, b, c
a, b, c, d
a, b, c, d, e
Figura 3.54: Autmato nito que aceita L
Atravs do mtodo apresentado na demonstrao do Teorema 3.17 obtm-se M

, representado
na Figura 3.55, de modo que L(M

) = L(M), com = = {a, b, c, d, e}.


3 Linguagens Regulares 165
q
0
q
1
q
2
q
3
q
4
a b e
c
d e
b, d, e
a, c, d, e
a, b, c
a, b, c, d
a, b, c, d, e
Figura 3.55: Autmato nito que aceita L (ver Figura 3.54)
2
Observe-se que foi fundamental, para a demonstrao deste teorema, a garantia de
que a linguagem L seja sempre denida atravs de um autmato nito determinstico e
com funo de transio total. Assim, qualquer que seja a cadeia de entrada, ela ser
sempre completamente consumida por M e, em conseqncia, a aceitao ou rejeio
da mesma por M depender apenas do tipo do ltimo estado assumido por M (nal ou
no-nal). Ao trocar estados nais por no-nais e vice-versa em M

, todas as cadeias de
entrada sempre sero tambm completamente consumidas por M

e, por m, as cadeias
aceitas por M (ou seja, as que o conduzem a um estado nal) sero rejeitadas por M

(por o conduzirem a um estado no-nal) e vice-versa.


Caso essa providncia no tivesse sido tomada, certas cadeias de entrada poderiam
no ser completamente esgotadas, e, nessa situao, a simples inverso de estados seria
insuciente para garantir que M

aceitasse o complemento da linguagem aceita por M.


Suponha-se, por exemplo, que M rejeite uma cadeia em um estado nal sem esgot-la.
Neste caso, M

iria tambm rejeit-la, uma vez que o estado no-nal de M teria se


convertido em nal de M

, porm a cadeia de entrada no teria sido esgotada. O correto,


no entanto, seria que M

aceitasse essa cadeia, como se pode notar atravs do Exemplo


3.53.
Exemplo 3.53 O autmato nito no-determinstico da Figura 3.56 aceita a linguagem ab

.
q
0
q
1
q
2
a b
a
b
Figura 3.56: Autmato nito M que aceita L = ab

Caso o mtodo fosse aplicado a este autmato, na forma em que ele se encontra, o resultado
corresponderia ao apresentado na Figura 3.57.
166 Linguagens Formais - Teoria, Modelagem e Implementao
q
0
q
1
q
2
a b
a
b
Figura 3.57: Autmato nito M

que aceita L

= ab

Como se pode perceber, L

(M

) = ab

= L(M) e, portanto, frustra-se o objetivo de se obter


um autmato que aceite o complemento de L. Tal resultado decorre da no observncia da exigncia
de se eliminar, a priori, os no-determinismos de M, alm do fato de que no uma funo total. 2
Teorema 3.18 (Fecho na interseco) A classe das linguagens regulares fechada
em relao operao de interseco.
Justicativa Considere-se a linguagem L
1
sobre
1
, e L
2
sobre
2
, sendo
1
,
2
. En-
to, considerando-se as complementaes em relao a , a seguinte relao verdadeira
(Lei de De Morgan, ver Teorema 1.1):
L
1
L
2
= L
1
L
2
Portanto, a regularidade da linguagem resultante da interseco de duas outras
linguagens regulares depende da preservao da regularidade pelas operaes de unio
e complemento. Como esse fato j foi constatado nos Teoremas 3.16 e 3.17, possvel
armar, com base no presente teorema, que L
1
L
2
ser necessariamente uma linguagem
regular.
Teorema 3.19 (Fecho na substituio) A classe das linguagens regulares fechada
em relao operao de substituio.
Justicativa Considere-se R uma expresso regular que denota o conjunto regular L
sobre , e seja s : 2

uma funo de substituio. Para cada , seja s() o


conjunto regular determinado pela expresso regular R

.
Substituindo-se cada ocorrncia em R de por R

, obtm-se uma nova expres-


so regular R

em que cada smbolo do alfabeto original substitudo pela correspondente


expresso regular. possvel constatar que R

= s(R). A prova pode ser feita atravs


da induo sobre o nmero de operadores presentes em R (ver [46]), notando que:
1. s(L
1
L
2
) = s(L
1
) s(L
2
)
2. s(L
1
L
2
) = s(L
1
)s(L
2
)
3. s(L

1
) = (s(L
1
))

Exemplo 3.54 Considere-se L = 0

(1

| 2

), e a substituio s abaixo denida:


s(0) = a | b
3 Linguagens Regulares 167
s(1) = c

d
s(2) = e
Ento, s(L) = s(0

(1

| 2

)) = s(0

)s(1

| 2

) = (s(0))

(s(1

) | s(2

)) = (s(0))

((s(1))

|
(s(2))

) = (a | b)

((c

d)

| (e)

). 2
Teorema 3.20 (Fecho no homomorsmo e homomorsmo inverso) A classe das
linguagens regulares fechada em relao s operaes de homomorsmo e homomor-
smo inverso.
Justicativa O fechamento em relao operao de homomorsmo imediato, uma
vez que os homomorsmos so casos particulares de substituies.
A prova do fechamento em relao operao de homomorsmo inverso pode ser
baseada na construo de um autmato nito M

que aceita a imagem homomrca


inversa de uma linguagem regular L = L(M) qualquer. A demonstrao formal pode ser
feita por induo sobre o comprimento das sentenas x h
1
(L) em seu reconhecimento
por M

(ver [46]).
Seja M = (Q, , , q
0
, F) um autmato nito determinstico que aceite L, e
considere-se o homomorsmo h:
h :

Ento, o autmato M

= (Q, ,

, q
0
, F), com:

(q, a) = (q, h(a)), a


aceita h
1
(L), ou seja, L(M

) = h
1
(L(M)). Observe-se que a funo de transio

especicada para M

simula a operao do autmato M atravs de transies efetuadas


diretamente para os estados que sucedem o reconhecimento das cadeias h(a) em cada
estado considerado no autmato M.
Exemplo 3.55 Seja L(M) = (ab)

((cd)

| e

), com M denido conforme a Figura 3.58.


q
0
q
1
q
2
a b
q
3 q
4
q
6
q
5
q
8
q
7
c d
c
d
a
b
b
a
e e
e
Figura 3.58: Autmato nito que aceita L
Suponha-se que L tenha sido obtida atravs do homomorsmo h:
168 Linguagens Formais - Teoria, Modelagem e Implementao
h(0) = ab
h(1) = cd
h(2) = e
O autmato M

, que aceita a imagem homomrca inversa de L, apresentado na Figura


3.59.
q
0 q
2
q
4
0 2
q
8
1
0 1
2
2
2
Figura 3.59: Autmato nito que aceita h
1
(L)
2
Teorema 3.21 (Fecho no quociente) A classe das linguagens regulares fechada em
relao operao de quociente com linguagens de tipo arbitrrio.
Justicativa Sejam M = (Q, , , q
0
, F) um autmato nito que aceita L
1
e L
2
uma
linguagem qualquer. Pode-se ento denir o autmato M

= (Q, , , q
0
, F

), de modo
que q Q:
1. q F

se y L
2
, tal que (q, y) F;
2. q F

, caso contrrio.
Como se pode perceber, (q
0
, x) F

se e apenas se existir y L
2
, tal que
((q
0
, x), y) F. Logo, L(M

) = L
1
/L
2
uma linguagem regular.
Exemplo 3.56 Sejam as linguagens L1 = a

b e L2 = a | b. O autmato nito M da Figura 3.60


aceita L1.
q
0 q
1
a
b
Figura 3.60: Autmato nito que aceita L1
A linguagem L = L1/L2 = a

aceita pelo autmato M

da Figura 3.61.
3 Linguagens Regulares 169
q
0 q
1
b
a
Figura 3.61: Autmato nito que aceita L1/L2
De fato,
1. A linguagem aceita por q1 em M . Como L2, ento q1 F

.
2. A linguagem aceita por q0 em M a

b. Como a

b L2, ento q0 F

.
2
Teorema 3.22 (Fecho na reverso) A classe das linguagens regulares fechada em
relao operao de reverso de suas sentenas (linguagem reversa).
Justicativa Seja M = (Q, , , q
0
, F) um autmato nito que aceita L. O Algoritmo 3.20
mostra como construir M

= (Q {q

0
}, ,

, q

0
, F

), eventualmente no-determinstico,
de tal modo que L(M

) = L
R
.
Algoritmo 3.20 (Autmato para L autmato para L
R
) Construo do aut-
mato nito que aceita L
R
a partir do autmato nito que aceita L.
Entrada: um autmato nito M = (Q, , , q
0
, F);
Sada: um autmato nito M

= (Q {q

0
}, ,

, q

0
, F

), tal que L(M

) = L(M)
R
;
Mtodo:
1. Construo de F

:
a) Se L, ento F

= {q
0
};
b) Se L, ento F

= {q
0
, q

0
}.
2. Construo de

:
c) Se (q, ) F, ento

(q

0
, ) = q;
d) Se (q
a
, ) = q
b
, ento

(q
b
, ) = q
a
.
Observe que as condies a) e b) so mutuamente exclusivas, e que, no entanto, as
condies c) e d) so satisfeitas simultaneamente no caso de transies que conduzem a
estados nais. Em outras palavras, se uma transio conduz a um estado nal em M,
ela d origem a duas transies em M

.
O algoritmo consiste, na essncia, em promover a inverso do sentido das transies
de M em M

, tomando-se o cuidado de convergir todas as transies que levam a estados


170 Linguagens Formais - Teoria, Modelagem e Implementao
nais de M para um nico estado inicial em M

. O estado inicial de M torna-se o estado


nal de M

. possvel demonstrar formalmente (ver [46]) que:


(q
0
, x)

(q
f
, ) se e somente se (q

0
, x
R
)

(q
0
, ).
Em outras palavras, L(M

) = L(M)
R
= L
R
.
Exemplo 3.57 Considere a linguagem a

bc

aceita por M, conforme a Figura 3.62:


q
0 q
1
b
c a
Figura 3.62: Autmato nito que aceita L = a

bc

A aplicao do algoritmo descrito conduz obteno do autmato M

da gura 3.63:
q
0 q
1
b
c a
q

0
b
c
Figura 3.63: Autmato nito que aceita L
R
= (a

bc

)
R
=
c

ba

Como se pode observar, L(M

) = ba

| cc

ba

= c

ba

= L(M)
R
. 2
Uma das principais aplicaes do estudo do fechamento de uma classe de linguagens
em relao a um determinado conjunto de operaes consiste na possibilidade de se
determinar a classe de uma linguagem a partir da decomposio da mesma em linguagens
mais simples, de classe conhecida, e que, combinadas por intermdio de operadores que
preservam a classe dessas linguagens mais simples, nos permitem inferir diretamente a
classe das linguagens resultantes.
Exemplo 3.58 Considere-se a linguagem L = {a

bc

| o comprimento das sentenas maior ou


igual a 3}. L regular?
L pode ser representada como L1 L2, onde L1 = {a

bc

} e L2 = (a | b | c)(a | b | c)(a | b |
c)(a | b | c)

. Como L1 e L2 so regulares (pois esto expressas atravs de expresses regulares), e


a classe das linguagens regulares fechada em relao operao de interseco, ento L tambm
regular. De fato, no difcil perceber que L = a

(aab | abc | bcc)c

. 2
Exemplo 3.59 Seja a linguagem L = {w {a, b, c, d}

| w contm a subcadeia bb e w no
contm a subcadeia dd}. L regular?
L = L1 L2, onde L1 = {w {a, b, c, d}

| w contm a subcadeia bb} e L2 = {w


{a, b, c, d}

| w contm a subcadeia dd}:


3 Linguagens Regulares 171
L1 = (a | b | c | d)

bb(a | b | c | d)

L1 = (a | b | c | d)

dd(a | b | c | d)

Como L1 e L2 so regulares, e a classe das linguagens regulares fechada em relao s


operaes de complemento e interseco, segue que L tambm regular. 2
Exemplo 3.60 Considere-se a linguagem L1 denida sobre o alfabeto {a, b}, de tal forma que perten-
cem a L1 todas as cadeias que podem ser formadas com os smbolos de seu alfabeto, excetuando-se
aquelas que contm exatamente trs smbolos a. L1 regular?
No difcil perceber que L1 = L2, onde L2 = b

ab

ab

ab

, ou seja, L1 corresponde comple-


mentao da linguagem que contm todas as cadeias com exatamente trs smbolos a (L2). Portanto,
L1 regular. Uma expresso regular que representa L1 b

|b

ab

|b

ab

ab

|b

ab

ab

ab

a(a|b)

. 2
Exemplo 3.61 Considere-se o alfabeto {a, b, c} e a linguagem L denida de tal forma que suas
cadeias satisfazem todas s seguintes regras:
1. Possuem a subcadeia aaa como prexo;
2. Possuem comprimento total mltiplo de 4;
3. Possuem quantidade par de smbolos c;
4. No contm a subcadeia bb.
So exemplos de cadeias pertencentes a L: aaabcccc, aaabcbca, aaaa, aaaaaaba, aaaacccbaaac
etc. L regular? Para responder, basta notar que L = ((L1 L2) L3) L4, onde:
L1 gerada por aaa(a | b | c)

:
Cadeias que possuem aaa como prexo.
L2 gerada por ((a | b | c)(a | b | c)(a | b | c)(a | b | c))

:
Cadeias que possuem comprimento total mltiplo de 4.
L3 gerada por ((a | b)

c(a | b)

c(a | b)

:
Cadeias que possuem quantidade par de smbolos c.
L4 gerada por (a | b | c)

bb(a | b | c)

:
Cadeias que contm a subcadeia bb.
Como L1, L2, L3 e L4 so regulares, e a classe das linguagens regulares fechada em relao
s operaes de interseco e complementao, conclui-se que L regular. 2
Portanto, a demonstrao da regularidade de uma linguagem no precisa car res-
trita especicao de uma expresso regular, de um autmato nito ou, ainda, de
uma gramtica regular que denam essa linguagem. A partir da identicao do uso de
operaes que preservam a regularidade de linguagens mais simples na constituio de
linguagens mais complexas, essa demonstrao pode ser consideravelmente simplicada.
Foram apresentadas algumas das principais propriedades de fechamento exibidas
pelas linguagens regulares. Outras propriedades, com suas respectivas demonstraes,
podem ser encontradas em [46], [48] e [53]. No obstante, outras propriedades estudadas
nos captulos seguintes para as demais classes de linguagens tambm se aplicam direta-
mente s linguagens regulares, uma vez que, conforme a Hierarquia de Chomsky, toda
linguagem do tipo 3 tambm , simultaneamente, uma linguagem do tipo 2, 1 e 0.
172 Linguagens Formais - Teoria, Modelagem e Implementao
3.10 Questes Decidveis
Para cada uma das classes de linguagens consideradas pela Hierarquia de Chomsky,
possvel formular uma srie de questionamentos de ordem geral sobre as linguagens a elas
pertencentes. Por exemplo, pode-se questionar se uma sentena aceita por um dado
reconhecedor, se uma linguagem igual a outra, se uma linguagem innita, se uma
linguagem no-vazia etc.
Conforme discutido a seguir, vrios desses problemas so muito simples de serem
resolvidos quando se trata de linguagens regulares. No entanto, quando se consideram
outras classes de linguagens, verica-se que nem sempre algumas dessas questes po-
dem ser respondidas. Por esse motivo, a classe de problemas considerados a seguir
genericamente denominada de questes decidveis.
importante notar que no costumam ser considerados, no estudo geral das lin-
guagens formais, os casos particulares, ou seja, os problemas particularizados para uma
certa linguagem ou grupo de linguagens, como, por exemplo: A linguagem L, a seguir
apresentada, vazia?.
Ao contrrio, o interesse recai sobre problemas gerais parametrizados, que podem
ser instanciados para uma ou mais linguagens especcas quando de sua aplicao, como,
por exemplo: possvel descobrir se uma linguagem regular L, qualquer que seja L,
vazia?.
Quando se diz que um problema (ou questo) desse tipo decidvel, isso signica
que ele sempre tem soluo, qualquer que seja a sua instncia considerada (ou argumentos
aplicados). Mais do que isso, cada questo decidvel caracterizada pela existncia de um
algoritmo que permite resolver o problema geral com garantias de obteno do resultado
armativo ou negativo, dependendo do caso.
As questes apresentadas neste item referem-se classe das linguagens regulares.
Questes referentes a outras classes de linguagens sero consideradas nos captulos cor-
respondentes. Cada questo decidvel est apresentada na forma de um teorema, acom-
panhado de um algoritmo que possibilita a automatizao da implementao da soluo
do problema proposto. Certas questes indecidveis relevantes, prprias de outras classes
de linguagens, so apresentadas na forma de teoremas com a respectiva prova formal (ou
informal, conforme o caso) de sua indecidibilidade.
Antes de iniciar, convm fazer algumas consideraes sobre os critrios de escolha do
tipo de representao de linguagens adotado nas demonstraes seguintes. Analogamente
ao que foi feito na Seo 3.9, certos resultados esto mostrados com base em um ou outro
tipo de representao expresses regulares, autmatos nitos ou gramticas lineares
direita , dependendo de qual seja mais conveniente em cada caso. A escolha de um
ou outro tipo de representao no possui implicao sobre os resultados apresentados,
uma vez que elas so equivalentes, sendo sempre possvel efetuar a converso de um tipo
para outro mecanicamente, se for o caso.
Os trs teoremas iniciais referem-se a questes decidveis cuja demonstrao ba-
seada nos resultados do Pumpimg Lemma das linguagens regulares.
Teorema 3.23 (A linguagem vazia?) A linguagem L aceita por um autmato nito
com n estados no-vazia se e somente se o autmato aceita pelo menos uma cadeia
w, |w| < n.
Justicativa A condio necessria (aceita uma sentena de comprimento inferior a
n linguagem no-vazia) bvia e no necessita ser demonstrada.
3 Linguagens Regulares 173
A condio suciente (linguagem no-vazia aceita uma sentena de compri-
mento inferior a n) no to bvia, mas pode ser vericada com auxlio do Pumping
Lemma. Considere-se w L(M), |w| = m.
Se m < n, ento nada h para demonstrar, e a hiptese trivialmente verdadeira.
Se, no entanto, m n, ento w pode ser reescrita como xyz com xz L(M), y =
, |xz| < m. Seguem, ento, duas possibilidades: |xz| n ou |xz| < n. Se |xz| < n,
a hiptese est demonstrada. Se, por outro lado, |xz| n, pode-se agora considerar
w = xz e aplicar o Pumping Lemma novamente, desta vez sobre tal cadeia.
Atravs da iterao deste passo, possvel obter cadeias de comprimentos sucessi-
vamente menores, enquanto o comprimento da cadeia anterior for maior ou igual a n.
Assim, possvel demonstrar a existncia de uma sentena de comprimento inferior a n,
pertencente a L.
A condio suciente do Teorema 3.23 pode tambm ser compreendida atravs
do seguinte raciocnio: partindo-se do estado inicial, se o autmato aceitar pelo menos
uma cadeia, ento a linguagem no-vazia. Como o autmato possui n estados, ento
necessrio que pelo menos um desses estados seja nal, e tambm acessvel desde o
estado inicial.
Se o estado inicial for simultaneamente nal, ento a cadeia vazia aceita e a
linguagem aceita pelo autmato no-vazia. Observe-se ainda que || < n, qualquer que
seja o valor de n, uma vez que n 1.
Se o estado inicial no for simultaneamente nal, ento ser necessrio atingir pelo
menos um dos outros n 1 estados do autmato, o qual deve tambm ser nal. Para isso,
bastam cadeias de comprimento mximo n 1, inclusive, j que cadeias de comprimento
maior ou igual a n possuem ciclos (conforme o Pumping Lemma), e no modicam o
conjunto de estados que so acessveis a partir do estado considerado. Logo, se nenhuma
cadeia de comprimento menor que n for aceita pelo autmato, isso signica que:
No existem estados nais no autmato, ou
Os estados nais do autmato no so acessveis desde o estado inicial
e, portanto, a linguagem por ele aceita vazia.
Em outras palavras, qualquer estado acessvel de um autmato nito com n estados
alcanvel por meio de cadeias de comprimento mximo n 1. Se algum desses estados
for nal, ento a linguagem aceita no-vazia. Caso contrrio, vazia.
A importncia deste teorema se deve ao algoritmo alternativo por ele implicita-
mente proposto: para determinar se uma linguagem, aceita por um autmato nito com
n estados, no-vazia, basta vericar se o autmato aceita alguma sentena de com-
primento entre 0 (inclusive) e n 1 (inclusive). Como a quantidade de cadeias sobre
um alfabeto nito que satisfazem a tal condio nita (conforme mostrado a seguir),
ento pode-se demonstrar que o problema proposto pode sempre ser resolvido atravs da
pesquisa exaustiva da aceitao dessas cadeias por M: se pelo menos uma dessas cadeias
for aceita, constata-se que a linguagem no-vazia, no sendo necessrio testar outras
cadeias de comprimento maior. Se nenhuma dessas cadeias for aceita, pode-se concluir
que a linguagem vazia, sem testar quaisquer outras cadeias.
174 Linguagens Formais - Teoria, Modelagem e Implementao
Para um autmato nito com n estados, cujo alfabeto de entrada tenha m smbolos,
a quantidade de cadeias que devem ser testadas dada pela frmula:
n1

i=0
m
i
pois, conforme pode ser vericado na Tabela 3.51, essa frmula representa a quantidade
total de cadeias distintas cujos comprimentos esto entre 0 (inclusive) e n 1 (inclusive),
e que podem ser construdas a partir de um alfabeto com m smbolos.
Comprimento Cadeias distintas Cadeias distintas
0 1 m
0
1 m m
1
2 m m m
2
3 m m m m
3
... ... ...
n 1 m m m ... m m
n1
Tabela 3.51: Quantidade de cadeias que podem ser obtidas a
partir de um alfabeto com m smbolos, com comprimento entre 0
e n 1
Exemplo 3.62 Seja L uma linguagem regular sobre o alfabeto {a, b, c} e aceita por um autmato
nito M com trs estados. Ento, para determinar se L no-vazia, basta vericar se alguma das
seguintes cadeias aceita por M:
Comprimento 0 (uma cadeia):
Comprimento 1 (trs cadeias): a, b, c
Comprimento 2 (nove cadeias): aa, ab, ac, ba, bb, bc, ca, cb, cc
Se alguma dessas 13 (= 1 + 3 + 9) cadeias for aceita por M, ento L ser no-vazia. Caso
contrrio, ser vazia. 2
Teorema 3.24 (A linguagem innita?) A linguagem L aceita por um autmato -
nito com n estados innita se e somente se o autmato aceitar pelo menos uma cadeia
w

, n |w| < 2n.


Justicativa A condio se (aceita pelo menos uma cadeia w, n |w| < 2n lin-
guagem innita) pode ser facilmente deduzida atravs do Pumping Lemma: como
|w| n, ento w pode ser reescrita como xyz, e xy
i
z L, i 0. Logo, L innita.
A condio somente se (linguagem innita aceita pelo menos uma cadeia w, n
|w| < 2n) demonstrada, por contradio, a seguir.
Se L innita, ento com certeza existem cadeias de comprimento maior ou igual a n
(pois a quantidade de cadeias com comprimento menor ou igual a n nita). Considere-se
w L(M), |w| n.
Se |w| < 2n, ento no h nada a demonstrar e a hiptese trivialmente verdadeira.
3 Linguagens Regulares 175
Se |w| 2n, ento, de acordo com o Pumping Lemma, w = xyz, |xy| n, 1
|y| n. Logo, a cadeia xz tambm pertence a L, |xz| < |w|, |xz| n (pois, como
|w| 2n e, na pior das hipteses, |y| = n, ento |xz| = |w | | y| n).
Duas possibilidades podem ento ocorrer com a cadeia xz: ou |xz| 2n ou |xz| <
2n.
Se |xz| < 2n, ento a hiptese verdadeira e o teorema est demonstrado.
Se |xz| 2n, pode-se considerar agora w = xz e aplicar o Pumping Lemma
novamente sobre essa cadeia. Atravs da iterao deste passo, enquanto o comprimento
de w for maior ou igual a 2n, possvel obter cadeias de comprimentos sucessivamente
menores, porm sempre de comprimento maior ou igual a n. Logo, necessariamente
existe uma cadeia pertencente linguagem, de comprimento maior ou igual a n e menor
que 2n, e o teorema est demonstrado.
Assim, se a linguagem for innita, ela dever obrigatoriamente conter pelo menos
uma cadeia de comprimento entre n (inclusive) e 2n (exclusive).
A condio somente se do Teorema 3.24 pode tambm ser compreendida da se-
guinte forma: por se tratar de uma linguagem innita, e portanto no-vazia, o autmato
correspondente aceita pelo menos uma cadeia w
0
, 0 |w
0
| < n (ver Teorema 3.23).
Por outro lado, como se trata de uma linguagem innita, ento fato que este
autmato possui pelo menos um ciclo, correspondente cadeia y, 1 |y| n (conforme
o Pumping Lemma).
Logo, a combinao desses resultados (ou seja, o bombeamento da cadeia y na
cadeia w
0
, resultando em uma nova cadeia cujo comprimento corresponde soma dos
comprimentos mnimos e mximos das outras duas) garante a existncia de pelo menos
uma cadeia w
1
, 1 < |w
1
| < 2n 1, que aceita pelo autmato.
Se |w
1
| n, ento a condio est provada. Se |w
1
| < n, pode-se bombear y
novamente, desta vez em w
1
, resultando na cadeia w
2
, 2 < |w
2
| < 2n 1.
A iterao desse passo, enquanto w
i
< n, garante a existncia de uma cadeia w
j
,
aceita pelo autmato, tal que n |w
j
| < 2n 1, como se quer demonstrar.
Em outras palavras, a existncia de ciclos acessveis desde o estado inicial garante
que o autmato aceita pelo menos uma cadeia w tal que n |w| < 2n 1.
A principal aplicao deste teorema se encerra no algoritmo por ele sugerido, o
qual permite determinar se a linguagem aceita por um autmato nito com n estados
innita ou no: basta vericar se o autmato aceita alguma cadeia de comprimento entre
n (inclusive) e 2n 1 (inclusive). Como a quantidade de cadeias com essa caracterstica
nita, conclui-se ser sempre possvel determinar se uma linguagem regular innita ou
no, bastando para isso analisar, exaustivamente, se alguma dessas cadeias pertence
linguagem denida.
A quantidade de cadeias que devem ser testadas em um autmato com n estados e
cujo alfabeto de entrada possui m smbolos dada pela frmula:
2n1

i=n
m
i
Exemplo 3.63 Seja L uma linguagem regular sobre o alfabeto {a, b} e aceita por um autmato
nito M com 2 estados. Ento, para saber se L no-vazia, basta vericar se alguma das seguintes
cadeias aceita por M:
Comprimento 2 (quatro cadeias): aa, ab, ba, bb
Comprimento 3 (oito cadeias): aaa, aab, aba, abb, baa, bab, bba, bbb
176 Linguagens Formais - Teoria, Modelagem e Implementao
Se alguma dessas 12 (= 4 + 8) cadeias for aceita por M, ento L innita. Caso contrrio,
conclui-se que a linguagem nita. 2
Teorema 3.25 (A linguagem nita?) A linguagem L aceita por um autmato nito
com n estados nita se e somente se o autmato no aceita nenhuma sentena w tal
que n |w| < 2n.
Justicativa Decorre diretamente do teorema anterior. L innita se e somente se o
autmato nito correspondente aceita pelo menos uma cadeia w, n |w| < 2n. Logo,
se no existir nenhuma cadeia que satisfaa a essa condio, a linguagem L ser nita.
Para determinar se, alm de nita, L no-vazia, basta vericar se o autmato nito
correspondente aceita pelo menos uma cadeia de comprimento menor do que n (Teorema
3.23).
A Tabela 3.52 resume os resultados at aqui obtidos.
L: uma linguagem aceita por um autmato nito com n estados
w L, |w| < n? w L, n |w| < 2n? L ...
Sim Sim Innita
Sim No Finita, no-vazia
No No Finita, vazia
No Sim N.A. (contradio)
Tabela 3.52: Cardinalidade de uma linguagem regular
Exemplo 3.64 Seja uma linguagem L1 sobre o alfabeto {a}, aceita por um autmato M1 com
trs estados. Para determinar se L1 vazia, basta vericar se alguma das cadeias pertencentes ao
seguinte conjunto aceita por M1: X = {, a, aa}. Para determinar se L1 innita, deve-se vericar
as cadeias do conjunto Y = {aaa, aaaa, aaaaa}.
Seja o autmato M1, representado na Figura 3.64.
q
0
q
1
a
q
2
a
a
Figura 3.64: Autmato M1 que aceita L1 = {a, aa}, nita
e no-vazia
fcil perceber, neste caso, que L1(M1) = {a, aa} nita e no-vazia. De fato, as cadeias
a, aa de X so aceitas por M1. No entanto, nenhuma das cadeias aaa, aaaa, aaaaa de Y so
aceitas por M1.
Suponha-se agora M2, correspondente ao autmato da Figura 3.65:
3 Linguagens Regulares 177
q
0
q
1
a
q
2
a
a
Figura 3.65: Autmato M2 que aceita L2 = aa(aaa)

,
innita
A linguagem L2(M2) , neste caso, aa(aaa)

, e portanto innita. A innitude de L2


comprovada pelo fato de M2 aceitar a cadeia aaaaa de Y. O fato de M2 aceitar aa de X indica
que L2 no-vazia.
Por ltimo, considere-se M3 como sendo o autmato da Figura 3.66:
q
0
q
1
a
q
2
a
Figura 3.66: Autmato M3 que aceita L = , nita e vazia
Nenhuma das cadeias , a, aa de X aceita por M3. Logo, como se pode comprovar
observando-se a Figura 3.66, L3 vazia (e portanto nita). 2
Teorema 3.26 (A cadeia pertence?) Seja L uma linguagem regular sobre , ,
e

uma cadeia. Ento, a questo L decidvel.


Justicativa Seja M = (Q, , , q
0
, F) tal que L = L(M). O Algoritmo 3.21 mostra
como decidir se a cadeia pertence ou no linguagem L.
Algoritmo 3.21 (A cadeia pertence?) Determina se uma cadeia sentena da lin-
guagem denida por um autmato nito.
Entrada: um autmato nito M = (Q, , , q
0
, F), , e uma cadeia

;
Sada: Se L(M), SIM; caso contrrio, NO;
Mtodo:
1. Obter M

= (Q, ,

, q
0
, F

), isento de transies em vazio, tal que L(M

) =
L(M);
2. Determinar

(q
0
, ). Se

(q
0
, ) F

, ento SIM; caso contrrio, NO.

O Algoritmo 3.21 garante que qualquer cadeia pode ser analisada em um nmero
nito de passos (ou tempo nito de processamento) em um autmato nito. Para isso,
suciente garantir que o mesmo seja isento de transies em vazio, o que implica a ine-
xistncia de ciclos formados exclusivamente por transies desse tipo, as quais poderiam,
eventualmente, provocar um processamento interminvel da cadeia de entrada.
178 Linguagens Formais - Teoria, Modelagem e Implementao
Exemplo 3.65 Considere-se o autmato da Figura 3.67, que possui um ciclo formado por transies
em vazio.
q
0
q
1
q
3
q
2

a
b
Figura 3.67: Autmato com ciclo de transies em vazio
Os movimentos executados por esse autmato na anlise da cadeia ba no permitem que o
mesmo pare em qualquer congurao, nal ou no-nal, como mostra a seguinte seqncia:
(q0, ba) (q1, ba) (q0, ba) (q1, ba) (q0, ba) (q1, ba) ...
O autmato equivalente, da Figura 3.68, isento de transies em vazio, e, portanto, de ciclos
formados por transies em vazio.
q
0
q
3
q
2
a
b
Figura 3.68: Autmato equivalente ao da Figura 3.67, po-
rm isento de ciclos formados por transies em vazio
Esse autmato atinge a seguinte congurao de parada, para a mesma cadeia ba de entrada,
aps executar zero movimentaes:
(q0, ba)
Portanto, por no se tratar de uma congurao nal, a cadeia ba rejeitada e no pertence
linguagem denida pelos autmatos das Figuras 3.67 e 3.68. 2
Teorema 3.27 (As linguagens so idnticas?) Sejam L
1
e L
2
duas linguagens regu-
lares quaisquer. Ento, a questo L
1
= L
2
decidvel.
Justicativa Considerem-se as linguagens L
1
= L
1
(M
1
)

1
e L
2
= L
2
(M
2
)

2
.
A condio L
1
= L
2
pode tambm ser formulada como (ver Teorema 1.2):
(L
1
L
2
) (L
1
L
2
) =
onde as operaes de complementao se referem a qualquer alfabeto tal que (
1

2
)
. Para decidir se L
1
= L
2
, deve-se executar o Algoritmo 3.22.
Algoritmo 3.22 (As linguagens so idnticas?) Determina se duas linguagens re-
gulares so idnticas.
3 Linguagens Regulares 179
Entrada: dois autmatos nitos M
1
= (Q
1
,
1
,
1
, q
01
, F
1
) e M
2
= (Q
2
,
2
,
2
,
q
02
, F
2
);
Sada: Se L
1
(M
1
) = L
2
(M
2
), SIM; caso contrrio, NO;
Mtodo:
1. Basta construir M
3
tal que L
3
(M
3
) = (L
1
L
2
) (L
1
L
2
). Se L
3
= ,
ento SIM; caso contrrio, NO
A construo de M
3
pode ser efetuada diretamente a partir dos algoritmos utilizados
na apresentao de resultados anteriores (fechamento dos conjuntos regulares em relao
s operaes de unio, complementao e interseco, respectivamente Teoremas 3.16,
3.17 e 3.18). Alm disso, a questo L
3
(M
3
) = pode ser decidida em funo do Teorema
3.23.
Teorema 3.28 (A linguagem

?) Seja M um autmato que aceita L sobre . En-


to, a questo L =

decidvel.
Justicativa Esta questo pode ser decidida pelo Algoritmo 3.23.
Algoritmo 3.23 (A linguagem

?) Determina se a linguagem aceita por um aut-


mato nito

.
Entrada: um autmato nito M = (Q, , , q
0
, F);
Sada: Se L(M) =

, SIM; caso contrrio, NO;


Mtodo:
1. Basta construir M

tal que L(M

) =

L(M) = L(M). Se L(M

) = ,
ento SIM; caso contrrio, NO.
A validade deste algoritmo e, conseqentemente, a correo desta demonstrao
decorrem de resultados anteriormente demonstrados.
Teorema 3.29 (A linguagem subconjunto?) Sejam L
1

1
e L
2

2
duas lin-
guagens regulares. Ento, a questo L
1
L
2
decidvel.
Justicativa A condio L
1
L
2
tambm pode ser formulada como:
(

L
2
) L
1
= L
2
L
1
=
onde a operao de complementao se refere a um alfabeto tal que
2
. Para
decidir se L
1
L
2
, basta executar o Algoritmo 3.24.
Algoritmo 3.24 (A linguagem subconjunto?) Determina se uma linguagem regu-
lar subconjunto de uma outra linguagem regular.
180 Linguagens Formais - Teoria, Modelagem e Implementao
Entrada: dois autmatos nitos M
1
= (Q
1
,
1
,
1
, q
01
, F
1
) e M
2
= (Q
2
,
2
,
2
,
q
02
, F
2
);
Sada: Se L
1
(M
1
) L
2
(M
2
), SIM; caso contrrio, NO;
Mtodo:
1. Basta construir M
3
tal que L
3
(M
3
) = L
2
(M
2
) L
1
(M
1
). Se L
3
= , ento
SIM; caso contrrio, NO.
Tambm neste caso a validade do algoritmo e da demonstrao decorrem de resul-
tados anteriormente apresentados.
4 Linguagens Livres de Contexto
As linguagens e as gramticas livres de contexto foram inicialmente concebidas com a
inteno de permitir a formalizao sinttica das linguagens naturais ([46], [53]). Logo
se percebeu, no entanto, que as linguagens naturais (ingls, portugus etc.) so signi-
cativamente mais complexas do que a classe de linguagens representveis atravs das
gramticas livres de contexto, diminuindo em muito, em conseqncia, o interesse dos
estudiosos das linguagens naturais pelas gramticas desse tipo.
Por outro lado, as linguagens livres de contexto despertaram um interesse muito
grande na comunidade cientca ligada rea de computao, que via grandes possibili-
dades de aplicao dessa classe de linguagens na anlise e na formalizao de linguagens
articiais, em particular as linguagens de programao.
Vale lembrar que, poca em que isso aconteceu, em meados da dcada de 1950, a
linguagem FORTRAN j havia sido denida, e algumas implementaes experimentais
estavam sendo utilizadas no desenvolvimento de aplicaes. Como a teoria de linguagens
ainda principiava o seu desenvolvimento, no surpreende o fato de que a linguagem
FORTRAN tenha sido originalmente especicada e implementada de maneira quase
que totalmente emprica, sem que houvesse, como h hoje, um slido lastro terico e
conceitual para fundamentar seu projeto.
Por esse motivo, inmeras diculdades foram enfrentadas no incio do projeto FOR-
TRAN, as quais tiveram como conseqncia os seguintes registros de poca:
1. Elevada complexidade aparente dos problemas de formalizao sinttica e de
construo dos aceitadores sintticos das linguagens de programao.
2. Arbitrariedade na imposio de restries nos projetos de linguagens de alto nvel,
tornando mais difcil sua utilizao por parte dos usurios.
Como conseqncia das limitaes tericas vericadas na poca, praticamente ine-
xistiam mtodos para a formalizao sinttica das linguagens de programao e para a
construo sistemtica de seus reconhecedores. O advento da teoria das linguagens e seu
posterior relacionamento com a teoria dos autmatos ocorreram justamente no momento
em que a necessidade de mtodos e tcnicas havia se tornado bastante clara, em funo
dessa primeira experincia, a m de possibilitar a evoluo das novas reas de conhe-
cimento emergentes dentro da computao: a das linguagens de programao e a dos
compiladores.
Nesse sentido, o papel das gramticas livres de contexto foi extremamente impor-
tante, uma vez que, se de um lado permitiu o desenvolvimento de notaes bastante
adequadas para a formalizao da sintaxe das linguagens articiais, por outro ensejou
o desenvolvimento de tcnicas muito ecientes de construo de reconhecedores sintti-
cos, algumas delas inclusive atravs de mapeamentos efetuados diretamente a partir das
gramticas das respectivas linguagens.
Assim, as gramticas livres de contexto contriburam signicativamente para desmi-
ticar a complexidade dos ento novos problemas que se apresentavam, simplicando-os
consideravelmente. Um exemplo disso foi a denio da notao BNF ([31]), logo aps a
182 Linguagens Formais - Teoria, Modelagem e Implementao
denio das gramticas livres de contexto por Chomsky ([61]). A notao BNF (sigla
de Backus-Naur Form) era tambm destinada representao de gramticas livres de
contexto e foi concebida especicamente para uso em linguagens articiais, em particular
em linguagens de programao. Ela foi utilizada pela primeira vez na especicao da
linguagem de programao Algol 60 ([32], [33]), tendo seu uso se difundido bastante at
os dias de hoje.
Atualmente, graas ao grande desenvolvimento terico vericado nas ltimas dca-
das, tais problemas, longe de terem se tornado triviais, tiveram bem determinados os
limites de sua complexidade, e, como conseqncia, a diversicao de mtodos e resul-
tados tericos conhecidos permite que os mesmos possam ser tratados de forma rotineira
e sistemtica no dia-a-dia do prossional de computao.
Neste captulo ser mostrada a importncia das gramticas livres de contexto na
formalizao das linguagens de programao de alto nvel e sero denidos os conceitos
de rvores de derivao e ambigidade, entre outros. A seguir, sero apresentados e
demonstrados alguns importantes resultados referentes simplicao das gramticas
livres de contexto e sua representao em formas normais.
4.1 Gramticas Livres de Contexto
As gramticas livres de contexto podem ser utilizadas, entre outras aplicaes, para re-
presentar subconjuntos (bastante limitados) de linguagens naturais. Considere o seguinte
exemplo:
<frase> <sujeito><verbo><complemento>
<sujeito> O homem
<sujeito> A mulher
<verbo> leu
<verbo> escreveu
<complemento> um <adjetivo> livro
<adjetivo> timo
<adjetivo> pssimo
<adjetivo>
Como se pode perceber, os smbolos no-terminais em gramticas livres de contexto
podem ser utilizados para representar classes sintticas bem denidas, permitindo um
elevado grau de intuio e de clareza na interpretao e na estruturao das sentenas
pertencentes linguagem.
Quando utilizadas para representar subconjuntos de linguagens naturais, ou mesmo
linguagens pseudonaturais, como, por exemplo, as linguagens empregadas em sistemas
de consulta a bancos de dados e em diversos outros tipos de interfaces homem-mquina,
especialmente nos aplicativos voltados para usurios leigos em computao, as gram-
ticas livres de contexto desempenham um papel muito importante para os projetistas
de tais sistemas, pois permitem a formalizao da linguagem de interface, facilitando a
construo de seu respectivo reconhecedor.
No entanto, a maior aplicao das gramticas livres de contexto ocorre na forma-
lizao sinttica das linguagens de programao de alto nvel. Rigorosamente, no se
4 Linguagens Livres de Contexto 183
pode dizer que tais linguagens sejam propriamente livres de contexto. Na verdade, a
formalizao completa de sua sintaxe exigiria dispositivos mais complexos, como o caso
das gramticas do tipo 1, uma vez que a grande maioria de tais linguagens apresenta
dependncias de contexto que no podem ser representadas por gramticas do tipo 2, ou
livres de contexto.
No obstante, a simplicidade das gramticas livres de contexto as torna muito
atraentes para a representao formal, ainda que parcial, da sintaxe de tais linguagens.
As gramticas livres de contexto constituem, pois, uma soluo de compromisso em que
o rigor da denio sinttica ligeiramente sacricado em favor do uso de uma notao
muito mais intuitiva e fcil de ser manipulada do que as gramticas do tipo 1. Desse
modo, as dependncias de contexto costumam ser representadas parte, em alguma
outra notao eventualmente em linguagem natural que sirva de complementao
gramtica do tipo 2 para a representao das dependncias de contexto. As gramticas
formais do tipo 1, devido sua elevada complexidade de manipulao, no costumam
ser utilizadas na prtica para representar dependncias de contexto em linguagens de
programao, nem mesmo de forma parcial.
A caracterstica que torna as gramticas livres de contexto especialmente adequadas
formalizao sinttica das linguagens de programao a sua capacidade de represen-
tao de construes aninhadas, que so freqentemente encontradas em linguagens
dessa categoria. Construes aninhadas costumam ocorrer em linguagens de programa-
o, por exemplo, na construo de expresses aritmticas, em que subexpresses so
delimitadas, atravs do uso de parnteses; na estruturao do uxo de controle, em que
comandos internos so inseridos como parte integrante de outros externos; na estrutu-
rao do programa, em que blocos, mdulos, procedimentos e funes so empregados
para criar diferentes escopos, etc.
Conforme denido no Captulo 2, uma gramtica livre de contexto uma qudrupla
(V, , P, S) com os seguintes componentes:
V: conjunto (nito e no-vazio) dos smbolos terminais e no-terminais;
: conjunto (nito e no-vazio) dos smbolos terminais; corresponde ao alfabeto
da linguagem denida pela gramtica;
P: conjunto (nito e no-vazio) das regras de produo, todas no formato ,
com (V ) e V

;
S: raiz da gramtica, S (V ).
Exemplo 4.1 Seja P o conjunto de regras abaixo e considerem-se , V e S subentendidos.
{E T + E, (4.1)
E T, (4.2)
T F T, (4.3)
T F, (4.4)
F (E), (4.5)
F a} (4.6)
Considere-se a sentena a (a + a). Ela pode ser obtida atravs da seguinte seqncia de
derivaes:
184 Linguagens Formais - Teoria, Modelagem e Implementao
E T F T a T a F a (E) a (T + E) a (F + E) a (a + E)
a (a + T) a (a + F) a (a + a)
correspondente aplicao das produes 4.2, 4.3, 4.6, 4.4, 4.5, 4.1, 4.4, 4.6, 4.2, 4.4, 4.6, nesta or-
dem.
Observe-se que a linguagem gerada pela gramtica deste exemplo compreende as sentenas
que representam expresses aritmticas corretamente formadas sobre o operando a com os opera-
dores e +. Subexpresses delimitadas atravs de parnteses tambm so admitidas, e podem
ser compostas com base nas mesmas regras utilizadas para construir a expresso inicial. No fazem
parte da linguagem denida por esta gramtica, por exemplo, cadeias em que no haja plena cor-
respondncia do smbolo ( com seu par ). Em outras palavras, trata-se de uma linguagem que
admite o aninhamento de expresses atravs do uso de parnteses como delimitadores. 2
O aninhamento de construes a caracterstica que distingue as linguagens estri-
tamente do tipo 2 das linguagens do tipo 3: pertencem a uma linguagem estritamente
do tipo 2 apenas e to somente as sentenas em que, para cada ocorrncia de um dado
delimitador (no caso, o abre-parnteses), haja em correspondncia a ocorrncia de um
outro, atravs do qual se forma o par (no caso, o fecha-parnteses). Alm disso, a
subcadeia situada entre esse par de delimitadores pode ser gerada atravs das mesmas
regras de formao vlidas para a sentena completa, caracterizando dessa maneira o
aninhamento de suas construes.
Note-se que, atravs de regras de produo livres de contexto, possvel especicar
construes mais restritas do que as obtenveis mediante o uso de produes de gram-
ticas lineares. Assim, com regras livres de contexto possvel caracterizar aninhamentos
sintticos, os quais no podem ser descritos apenas com produes lineares direita ou
esquerda (ou qualquer combinao delas). Em outras palavras, as gramticas livres
de contexto permitem impor restries adicionais quelas que se podem construir em
gramticas regulares, podendo assim caracterizar subconjuntos das linguagens regulares
que gozem da propriedade determinada pelos aninhamentos sintticos. Dessa forma, as
gramticas livres de contexto tornam-se muito teis para a especicao de linguagens
de programao, a maioria das quais exibe aninhamentos sintticos.
A representao de aninhamentos em gramticas do tipo 2 decorre de uma proprie-
dade caracterstica das gramticas deste tipo, denominada Self-embedding Property.
Um no-terminal Y dito self-embedded, ou auto-recursivo central, se, a partir
dele, for possvel derivar alguma forma sentencial em que o no-terminal Y ressurja,
delimitado por cadeias no-vazias de terminais sua esquerda e sua direita:
Y

Y, com ,
+
Um no-terminal Z dito simplesmente auto-recursivo se, a partir dele, for pos-
svel derivar alguma forma sentencial em que Z ressurja, acompanhado de pelo menos
uma cadeia no-vazia de terminais sua esquerda ou sua direita:
Z Z, com ,

, =
Se uma gramtica livre de contexto G possui pelo menos um no-terminal auto-
recursivo central, diz-se que G auto-embutida (do ingls self-embedded).
Um smbolo no-terminal essencial aquele que no pode ser removido da gra-
mtica (ou substitudo) sob pena de provocar modicaes na linguagem sendo denida.
Uma linguagem L dita estritamente livre de contexto, ou livre de contexto no-
regular, se e apenas se todas as gramticas que geram L forem auto-embutidas, ou seja, se
todas elas possurem pelo menos um no-terminal auto-recursivo central essencial.
O simples fato de uma gramtica ser auto-embutida no garante a no-regularidade
da linguagem denida: possvel identicar linguagens regulares geradas por gramti-
4 Linguagens Livres de Contexto 185
cas com no-terminais auto-recursivos centrais que, nesses casos, no so essenciais. O
Exemplo 4.2 ilustra essa situao.
Exemplo 4.2 A gramtica cujas regras constituem o conjunto abaixo do tipo 2 e possui um no-
terminal auto-recursivo central (S, em decorrncia da produo S aSa), podendo portanto ser
caracterizada como uma gramtica auto-embutida:
{S aS,
S bS,
S a,
S b,
S aSa}
No entanto, a linguagem gerada por essa gramtica {a, b}

, ou seja, a linguagem regular.


Na verdade, fcil observar que essa linguagem tambm pode ser gerada por um conjunto de regras
equivalente, em que a ltima produo da gramtica acima removida:
{S aS,
S bS,
S a,
S b}
Tal fato ocorre, neste caso particular, porque a produo S aSa no-essencial gramtica,
ou seja, a sua incluso no conjunto P de produes em nada contribui para modicar a linguagem
denida pelas demais produes. 2
Quando todas as alternativas de substituio para um smbolo no-terminal so no-
essenciais, diz-se que o smbolo em questo no-essencial. Se ele for um no-terminal
auto-recursivo central, diz-se que o no-terminal auto-recursivo central no-essencial.
Dessa maneira, os no-terminais auto-recursivos centrais que caracterizam gramticas
auto-embutidas podem ou no ser essenciais. Se houver pelo menos um no-terminal
auto-recursivo central essencial em alguma gramtica, a correspondente linguagem dita
estritamente livre de contexto. Se todos os no-terminais auto-recursivos centrais
de uma gramtica forem no-essenciais, a linguagem por ela denida regular.
A Self-embedding Property exprime a capacidade que tm as gramticas livres
de contexto para representarem aninhamentos sintticos. Intuitivamente, se Y

Y, ento, da aplicao sucessiva dessa seqncia de derivaes, resulta que Y,


Y etc. so formas sentenciais que geram sentenas pertencentes a L(G). Assim,
a cada subcadeia possvel impor a existncia de uma outra subcadeia que estabelea
a correspondncia com . importante notar, nalmente, que as gramticas regulares
no exibem a Self-embedding Property, sendo esta uma propriedade caracterstica das
gramticas livres de contexto no-regulares.
Exemplo 4.3 Considere-se a linguagem das expresses aritmticas denida no Exemplo 4.1. Observe-
se que E T F (E), ou seja, E

(E).
Logo, E um no-terminal auto-recursivo central, e a gramtica a que ele pertence auto-
embutida. possvel demonstrar que todas as gramticas que geram essa linguagem so auto-
embutidas, o que caracteriza a linguagem como no-regular. Note-se que, como E

(E), a cada
abre-parnteses que antecede a subexpresso E corresponde sempre um fecha-parnteses logo aps
E. Note-se tambm que todas as sentenas derivadas das formas sentenciais (
i
E)
i
, i 1, tambm
pertencem linguagem denida, sendo obtidas pela aplicao repetida da seqncia de derivaes
apresentada. 2
Quando se consideram linguagens especicadas atravs de gramticas livres de con-
texto, deve-se tambm considerar de que forma feita a aceitao sinttica de suas
sentenas para ns de compilao e/ou interpretao. Quando se trata de efetuar o re-
186 Linguagens Formais - Teoria, Modelagem e Implementao
conhecimento de sentenas, o que se busca, na verdade, localizar uma seqncia de
produes que, quando aplicada raiz da gramtica, fornea como resultado, atravs
da srie correspondente de derivaes, a sentena fornecida para anlise. Sendo possvel
completar a derivao, diz-se que a sentena pertence linguagem; caso contrrio, que
ela no pertence linguagem.
No entanto, para cada sentena pertencente linguagem denida atravs de uma
gramtica livre de contexto, geralmente possvel identicar uma grande quantidade de
seqncias distintas de derivao, resultado de escolhas arbitrrias do particular smbolo
no-terminal a ser substitudo em cada passo da derivao, todas elas resultando na
mesma sentena analisada. Na prtica, no entanto, costuma-se xar alguns critrios
de derivao de sentenas, para permitir a construo e a operao sistemticas dos
reconhecedores sintticos.
Assim, diz-se que a derivao de uma forma sentencial em uma gramtica livre
de contexto uma derivao mais esquerda, quando a substituio de um no-
terminal pelo lado direito de uma produo que o dene feita substituindo-se sempre o
no-terminal que ocorre mais esquerda na cadeia que representa a forma sentencial em
questo. De maneira anloga, uma derivao mais direita aquela em que sempre
o no-terminal mais direita, na forma sentencial, que substitudo pela sua denio.
Exemplo 4.4 Considere-se a gramtica do Exemplo 4.3. A seguir so apresentadas duas seqncias
de derivao para a sentena a + a. Na primeira, todas as derivaes so mais esquerda, e na
segunda, mais direita. Note-se que as seqncias de produes utilizadas em cada caso so distintas,
e tambm que diversas outras seqncias poderiam ser obtidas combinando-se arbitrariamente os
no-terminais a serem substitudos em cada forma sentencial:
1. Derivaes com substituies mais esquerda apenas:
E T + E F + E a +E a + T a + F a + a
Produes aplicadas: 4.1, 4.4, 4.6, 4.2, 4.4, 4.6
2. Derivaes com substituies mais direita apenas:
E T + E T + T T + F T +a F + a a +a
Produes aplicadas: 4.1, 4.2, 4.4, 4.6, 4.4, 4.6
3. Derivaes com substituies de diversos tipos:
E T + E F + E F + T a + T a +F a + a
Produes aplicadas: 4.1, 4.4, 4.2, 4.6, 4.4, 4.6
2
Como conseqncia do elevado interesse prtico despertado pelas gramticas livres
de contexto, inmeras notaes foram desenvolvidas para facilitar a formalizao sinttica
das linguagens articiais, permitindo criar denies formais mais legveis e concisas do
que as obtidas usualmente com a notao algbrica.
Tais notaes, denominadas metalinguagens, permitem a representao de lingua-
gens livres de contexto, sendo equipotentes, portanto, notao algbrica introduzida na
Seo 2.3. A primeira e talvez mais importante delas a BNF, abreviatura de Backus-
Naur Form.
Na notao BNF, os no-terminais so representados por textos delimitados pelos
metasmbolos < e >; para distingui-los dos smbolos terminais, o metasmbolo
substitudo por ::= e, nalmente, todas as alternativas de substituio para um mesmo
no-terminal so agrupadas, separando-se umas das outras com o metasmbolo |. Os
terminais so denotados sem delimitadores.
4 Linguagens Livres de Contexto 187
Exemplo 4.5 Em BNF, a gramtica que representa expresses aritmticas aninhveis, sobre ope-
randos a, com os operadores adio e multiplicao, anteriormente apresentada no Exemplo 4.1,
torna-se:
<E> ::= <T> + <E> | <T>
<T> ::= <F> <T> | <F>
<F> ::= a | (<E>)
2
Empregada pela primeira vez no incio da dcada de 1960, na publicao que deniu
formalmente a linguagem de programao Algol 60 ([32], [33]), a notao BNF se tornou
extremamente popular justamente por ter demonstrado na prtica, pela primeira vez,
a viabilidade de uso de uma notao formal para a representao da sintaxe de uma
linguagem de programao, representando um dos primeiros resultados prticos advindos
do interesse dos prossionais de computao pelas ento recm descobertas gramticas
livres de contexto.
Embora largamente utilizada ainda hoje, a notao BNF enfrenta atualmente a
concorrncia de outras metalinguagens igualmente importantes, como o caso de v-
rios de seus dialetos, da Notao de Wirth, dos Diagramas de Sintaxe, das Expresses
Regulares Estendidas e de inmeras outras ([24]). Apesar disso, a notao algbrica
continuar sendo empregada preferencialmente neste texto por ser a mais adequada ao
estudo terico e conceitual das linguagens formais. Eventualmente, poder ser empregada
a BNF, em exemplos de linguagens de programao.
4.2 BNF Estendida
Expresses regulares foram denidas como uma notao bastanta concisa e adequada
para a representao de linguagens regulares. Uma importante extenso das expresses
regulares so as expresses regulares estendidas, que, em combinao com a BNF, dispo-
nibilizam as vantagens do uso de expresses regulares para a classe das linguagens livres
de contexto, constituindo assim uma metalinguagem alternativa para a representao das
mesmas.
Essa metalinguagem, denominada BNF estendida (ou EBNF), resulta da fuso
das denies da BNF (conforme a Seo 4.1) e da expresso regular (conforme a Seo
3.2).
Uma expresso regular estendida , por denio, uma expresso regular que
admite como operandos os smbolos no-terminais da gramtica, em adio aos terminais.
Um conjunto de regras gramaticais representado atravs da notao BNF esten-
dida um conjunto de expresses regulares estendidas, cada uma delas associada a um
smbolo no-terminal distinto.
Exemplo 4.6 Considere-se a gramtica livre de contexto:
G = ({S, X, Y, Z, a, b, c, d, e, f , g}, {a, b, c, d, e, f , g}, P, S)
com P apresentado a seguir, que gera uma linguagem L estritamente livre de contexto.
P = {S XYZ | g
X aX | a
Y Sb
Z cdZ | eZ | f }
188 Linguagens Formais - Teoria, Modelagem e Implementao
Transcrito para a BNF, este conjunto de produes resulta:
<S> ::= <X><Y><Z>| g
<X> ::= a<X>| a
<Y> ::= <S>b
<Z> ::= cd<Z>| e<Z>| f
No difcil perceber que <X> gera cadeias compostas por um ou mais smbolos a. Ento, a
regra <X> ::= a<X>| pode ser substituda pela regra <X> ::= aa

. De maneira anloga, a regra


<Z> ::= cd<Z> | e<Z> | f pode ser substituda por <Z> ::= (cd | e)

f . Note-se, em ambos os
casos, a substituio do uso de smbolo no-terminal no lado direito das regras, pelo uso do operador
fechamento reexivo e transitivo () para representar a repetio de termos. O novo conjunto de
regras torna-se, portanto:
<S> ::= <X><Y><Z>| g
<X> ::= aa

<Y> ::= <S>b


<Z> ::= (cd | e)

f
A substituio das denies dos smbolos <X>, <Y> e <Z> na regra do smbolo <S> resulta
em:
<S> ::= aa

<S>b(cd | e)

f | g
O lado direito da regra acima (aa

<S>b(cd |e)

f |g) , como se pode perceber, uma expresso


regular estendida, pois possui a forma de uma expresso regular, acrescida da referncia ao smbolo
no-terminal <S>. O lado esquerdo e o lado direito, juntamente, constituem uma regra gramatical
representada na notao BNF estendida.
A regra acima explicita a presena de um smbolo no-terminal auto-recursivo essencial em G
(no caso, o smbolo <S>), suciente para caracterizar L como sendo livre de contexto e no-regular.
Em termos informais, L pode tambm ser representada como (aa

)
n
g(b(cd | e)

f )
n
, com n 0.2
A principal vantagem decorrente uso da BNF estendida, em comparao com a no-
tao algbrica, ou mesmo com a BNF, resulta da possibilidade de representar a repetio
de formas sintticas sem a necessidade de denies gramaticais recursivas (aquelas em
que o smbolo no-terminal que estiver sendo denido ressurge, direta ou indiretamente,
em formas sentenciais derivadas do mesmo), substituindo-as pela denio de iteraes
explcitas (atravs do uso do operador fechamento reexivo e transitivo). Isso propor-
ciona um entendimento mais fcil da linguagem por ela denida, sendo ainda til em
determinados mtodos de construo de reconhecedores sintticos a partir de gramticas
livres de contexto (ver Seo ??).
Note-se, no entanto, que nem sempre uma gramtica livre de contexto poder ser
reduzida a uma nica regra em BNF estendida, ainda que esta represente uma deni-
o recursiva. De fato, a quantidade mnima de regras a que se pode chegar igual
quantidade de smbolos no-terminais auto-recursivos centrais essenciais que a gramtica
possui, uma vez que cada um destes responsvel pela incorporao de uma caracters-
tica distinta de aninhamento sinttico linguagem denida pela gramtica, no podendo
ser removidos da gramtica sem prejuzo da linguagem por ela denida.
Por outro lado, gramticas livres de contexto que representam linguagens regulares
podero sempre ser manipuladas at a eliminao de todos os smbolos no-terminais
da gramtica, exceto, naturalmente, a raiz, resultando em uma nica expresso regular
4 Linguagens Livres de Contexto 189
(no-estendida) que gera a linguagem denida pela gramtica. Dessa maneira, a BNF
estendida um formalismo que une as vantagens das expresses regulares s da BNF,
constituindo importante alternativa tanto para a representao de linguagens regulares
quanto para a de linguagens livres de contexto.
Diz-se que um smbolo no-terminal A de uma gramtica livre de contexto G
recursivo esquerda se A

A, com V

. Uma gramtica dita recursiva


esquerda se ela possuir pelo menos um smbolo no-terminal recursivo esquerda.
De maneira anloga, diz-se que um smbolo no-terminal A de uma gramtica livre de
contexto G recursivo direita se A

A, com V

. Uma gramtica dita


recursiva direita se ela possuir pelo menos um smbolo no-terminal recursivo
direita.
Observe-se que recurses esquerda podem ocorrer de forma direta atravs de
produes do tipo A A, V

ou indireta como, por exemplo, em A B,


B C e C A, pois A B C A, ou seja, A

A, com = ()

.
Consideraes semelhantes so vlidas para recurses direita.
Exemplo 4.7 Considere-se a gramtica cujas regras so:
<S> ::= a<S> | b<X>
<X> ::= <X>b | c<S> | <Y>bc
<Y> ::= <X>d | <Z> | e
<Z> ::= <X>f | <W>
<W> ::= e<W>f | g
Neste caso, possvel identicar as seguintes situaes: o smbolo no-terminal <S> recursivo
direita diretamente (atravs da regra <S> ::= a<S>), e indiretamente (atravs das regras <S>
::= b<X>, <X> ::= c<S>). O smbolo no-terminal <X>, por sua vez, recursivo esquerda
diretamente (atravs da regra <X> ::= <X>b) e indiretamente (atravs das regras <X> ::= <Y>bc,
<Y> ::= <X>d, <Y> ::= <Z>, <Z> ::= <X>f). Note-se que o smbolo <W> no recursivo
esquerda nem direita. 2
O lado direito de uma regra A , V

, em uma gramtica livre de contexto,


dito termo independente de A, se A no for uma subcadeia de .
Seja G uma gramtica livre de contexto, e A N um smbolo no-terminal de G.
Ento, as regras de A podem exibir um ou mais dos seguintes formatos gerais (considera-
se , , , , e V

, e (V {A})

):
recurso direita: A A;
recurso esquerda: A A;
recurso esquerda e direita: A AA;
recurso central: A A;
termo independente: A .
Agrupando-se as regras de mesmo formato, obtm-se:
A
1
A |
2
A | ... |
i
A |
A
1
| A
2
| ... | A
j
|
190 Linguagens Formais - Teoria, Modelagem e Implementao
A
1
A | A
2
A | ... | A
k
A |

1
A
1
|
2
A
2
| ... |
m
A
m
|

1
|
2
| ... |
p
possvel demonstrar, conforme discusso a seguir, que a frmula geral que permite
representar a linguagem gerada por A, sem no entanto fazer uso de recurses esquerda
e/ou direita, :
A =
(
1
| ... |
i
)

(
1
| ... |
p
|
1
A
1
| ... |
m
A
m
)(
1
| ... |
j
)

(
(
1
| ... |
k
)
(
1
| ... |
i
)

(
1
| ... |
p
|
1
A
1
| ... |
m
A
m
)(
1
| ... |
j
)

As recurses centrais no podem, naturalmente, ser eliminadas na expresso re-


sultante, sob pena de se modicar a linguagem denida por A, no caso das linguagens
estritamente livres de contexto. O mesmo vale para o caso de mltiplas recurses em uma
mesma regra, que no sejam da forma AA (por exemplo, como em A A
1
A
2
A
3
A).
Se i = j = k = m = p = 1, o caso geral reduz-se a:
A A | A | AA | A |
cuja soluo :
A =

( | A)

( | A)

Nesta frmula, constatam-se as seguintes relaes de causa e efeito (ver Exerccio


?? da Seo ??):
As cadeias geradas por A so iniciadas com uma repetio arbitrria do termo ,
decorrente das recurses direita existentes na gramtica;
As cadeias geradas por A so terminadas com uma repetio arbitrria do termo
, decorrente das recurses esquerda existentes na gramtica;
Os termos independentes () e as recurses centrais (A) so preservados no
centro das cadeias geradas por A, isto , direita dos termos e esquerda dos
termos ;
As regras que so simultaneamente recursivas esquerda e direita permitem a
concatenao de mltiplas cadeias geradas por A, tendo o termo como separador
entre elas.
Exemplo 4.8 Alguns casos simples, envolvendo apenas recurses esquerda, direita, e termos
independentes, so apresentados a seguir.
Se X aX | , ento X = a

;
4 Linguagens Livres de Contexto 191
Se X aX | b, ento X = a

b;
Se X Xb | a, ento X = ab

;
Se X Xb | , ento X = b

;
Se X aX | bX | c, ento X = (a | b)

c;
Se X Xa | Xb | c, ento X = c(a | b)

;
Se X aX | b | c, ento X = a

(b | c);
Se X aX | Xb | , ento X = a

;
Se X aX | Xc | b, ento X = a

bc

;
Se X aX | Xd | b | c, ento X = a

(b | c)d

;
Se X aX | bX | Xe | c | d, ento X = (a | b)

(c | d)e

;
Se X aX | bX | Xe | Xf | c | d, ento X = (a | b)

(c | d)(e | f )

.
2
Exemplo 4.9 Os casos abaixo contm, alm de recurses esquerda, direita e termos indepen-
dentes, recurses centrais, regras recursivas simultaneamente esquerda e direita, e regras com
mltiplas recurses em outros formatos. Note-se que, nos casos em que o valor de X pode ser
representado na forma de um termo independente, utilizada a notao X=... para indicar a
associao de valor ao smbolo. Nos casos em que isso no possvel, utiliza-se a notao EBNF
<X>::=....
Se X XcX | e, ento X = e(ce)

;
Se X aX | XcX | e, ento X = a

e(ca

e)

;
Se X aX | Xb | XcX | e, ento X = a

eb

(ca

eb

;
Se X aX | Xc | XX | b, ento X = a

bc

(a

bc

;
Se X aX | bX | cXd | e,
ento <X> ::= (a | b)

(c<X>d | e);
Se X aX | Xb | cXd | XeX | f ,
ento <X> ::= a

fb

((e | c<X>d)a

fb

;
Se X aX | dX | Xd | bXcc | XbbXc | e,
ento <X> ::= (a | d)

(e | b<X>cc)(d | bb<X>c)

;
Se X aX | Xd | bXc | XeX | XXX | f ,
ento <X> ::= a

(f | b<X>c)d

((e | <X>)(a

(f | b<X>c)d

))

.
2
A notao EBNF teve origem em um artigo publicado em 1977 ([35]). Nessa pu-
blicao, Wirth questionava a grande diversidade de notaes para a representao de
sintaxe existente naquela poca, e propunha uma nova variante da BNF como alternativa
a todas elas. Tal notao viria a ser denominada, posteriormente, Notao de Wirth.
Outras extenses foram sendo propostas e incorporadas ao longo do tempo, de tal
modo que atualmente existem inmeros dialetos daquilo que conhecemos como BNF
estendida. Uma tentativa de padronizao surgiu com a publicao de um padro inter-
nacional ISO em 1996 ([36]).
192 Linguagens Formais - Teoria, Modelagem e Implementao
Entre as principais extenses que foram sendo desenvolvidas e eventualmente incor-
poradas a algum dialeto da BNF estendida, podem-se destacar:
O uso dos metasmbolos [ e ] para agrupar termos opcionais, dispensando assim
o uso do smbolo para representar a cadeia vazia (por exemplo, S aS | pode
ser reescrito como <S> ::= [a<S>]);
O uso dos metasmbolos { e } para agrupar termos que se repetem zero ou
mais vezes, dispensando assim o uso de recurses explcitas e tambm o uso de
parnteses no agrupamento do termo que se repete (por exemplo, S aS | b, cuja
soluo S = {a}b);
O uso do metasmbolo + para representar a repetio de um termo uma ou mais
vezes (por exemplo, S aS | a, cuja soluo S = a
+
);
O emprego de aspas duplas para delimitar os smbolos terminais da gramtica (s
vezes tambm o negrito ou o sublinhado), mantendo-se os smbolos no-terminais
sem qualquer tipo de destaque nas regras gramaticais (por exemplo, S ::= aS,
S ::= aS, ou ainda S ::= aS para denotar S aS),
O emprego do smbolo =, como alternativa ao de ::=, na separao das partes
esquerda () e direita () das regras de produo gramaticais ( );
1
O uso do metasmbolo . para indicar o trmino de uma regra (S aX | bY
torna-se <S> ::= a<X> | b<Y>.).
Considerada hoje um dialeto da EBNF, a Notao de Wirth ser apresentada no
Exerccio ?? da Seo ??.
4.3 rvores de Derivao
A representao da estrutura de sentenas ou formas sentenciais de linguagens livres de
contexto, na forma de rvores bidimensionais, um recurso muito utilizado, tanto na
teoria quanto na prtica da implementao de linguagens, uma vez que:
1. Proporciona meios para uma melhor visualizao da estrutura das sentenas da
linguagem, facilitando a anlise das mesmas.
2. Auxilia na demonstrao formal de teoremas, na interpretao de certos resultados
tericos e na assimilao de vrios conceitos.
3. Facilita a representao interna, nos compiladores e interpretadores, da estrutura
das sentenas analisadas, registrando importantes informaes estruturais sobre
as mesmas, a serem utilizadas em outros estgios do processamento da linguagem.
1
Neste texto, o smbolo = usado para indicar que um smbolo est ligado a um determinado valor. O seu
uso no lugar do smbolo ::=, ou mesmo do smbolo , desencorajado, uma vez que estes se empregam
na representao de regras gramaticais.
4 Linguagens Livres de Contexto 193
Formalmente, uma rvore de derivao um sistema de representao de seqn-
cias de derivaes em uma gramtica livre de contexto G = (V, , P, S), consistindo em
um grafo orientado e ordenado, acclico, com as seguintes propriedades:
1. Todo vrtice rotulado com um elemento de V {};
2. O rtulo da raiz S;
3. Os rtulos de vrtices internos so elementos de N = V ;
4. Se um vrtice tem o rtulo A, e X
1
, X
2
, . . . X
n
so descendentes diretos de A,
ordenados da esquerda para a direita, ento A X
1
, X
2
, ...X
n
deve pertencer ao
conjunto P de regras;
5. Se um vrtice possui o rtulo , ento este vrtice deve ser simultaneamente uma
folha e descendente nico de seu ancestral direto.
Dene-se como fronteira de uma rvore a cadeia formada pela concatenao
dos smbolos correspondentes aos rtulos dos vrtices que so folhas, considerados no
sentido da esquerda para a direita, e de cima para baixo. Essa cadeia de smbolos
(terminais e/ou no-terminais) corresponde forma sentencial cuja estrutura est sendo
representada pela rvore.
Exemplo 4.10 Considere-se a gramtica das expresses aritmticas anteriormente apresentada no
Exemplo 4.1. A estrutura da sentena a (a + a), de acordo com essa gramtica, pode ser repre-
sentada pela rvore de derivao:
F *
(
a
F
T
+
a
F
T
E
E
)
F
T
T
E
Figura 4.1: rvore de derivao para E

a (a + a)
194 Linguagens Formais - Teoria, Modelagem e Implementao
Observe-se, nesta rvore, que a sentena a (a + a) pode ser obtida pela concatenao dos
rtulos dos vrtices que so folhas, e corresponde sentena cuja estrutura est sendo representada
pela prpria rvore. 2
Naturalmente, nem toda rvore necessita ter como raiz S, nem tampouco possuir
como fronteira

, S

. comum que se considerem subrvores cuja raiz seja


um elemento X qualquer, X N, e a fronteira, uma cadeia V

, tal que X

.
Exemplo 4.11 A derivao no-trivial T

(E), segundo a gramtica do Exemplo 4.1, pode ser


representada atravs da subrvore:
F *
( E )
F
T
T
Figura 4.2: rvore de derivao para T

a (a + a)
2
A seguir, ser apresentado o teorema fundamental das rvores de derivao. Ele
estabelece a existncia de pelo menos uma rvore de derivao para toda e qualquer cadeia
derivvel a partir da raiz da gramtica, e tambm que toda e qualquer fronteira de uma
rvore corretamente construda sobre uma gramtica livre de contexto G corresponde a
uma cadeia derivvel a partir da raiz de G.
Teorema 4.1 (rvores derivaes) Seja G = (V, , P, S) uma gramtica livre de
contexto. Ento S

se e apenas se existir uma rvore de derivao sobre G com


fronteira .
Justicativa Por se tratar de um teorema bastante intuitivo, no ser apresentada a sua
prova formal, que no entanto pode ser encontrada em [46]. A importncia deste teorema
se deve ao fato de que ele credencia as rvores de derivao como uma representao
vlida da estrutura das formas sentenciais geradas por uma gramtica.
rvores de derivao no contm informao sobre a particular seqncia em que
foram aplicadas as produes para a obteno de uma dada forma sentencial: elas infor-
mam apenas quais foram as produes aplicadas, mas no em que ordem. Assim, para
cada rvore de derivao, possvel identicar diversas seqncias distintas de derivao
que resultem na mesma forma sentencial: basta alterar a ordem em que os no-terminais
so substitudos em cada passo da derivao.
4.4 Ambigidade
Diz-se que uma gramtica livre de contexto no-ambgua se, para toda e qualquer
cadeia pertencente linguagem por ela gerada, existir uma nica seqncia de derivaes
mais esquerda e uma nica seqncia de derivaes mais direita que a geram.
4 Linguagens Livres de Contexto 195
Diz-se que uma gramtica livre de contexto ambgua quando existir pelo menos
uma cadeia, pertencente linguagem por ela gerada, que possua mais de uma seqncia
distinta de derivaes, feitas exclusivamente atravs de substituies de no-terminais
mais esquerda ou mais direita. Na verdade, a primeira condio implica a segunda
e vice-versa, ou seja, se houver mais de uma seqncia com substituies mais es-
querda, ento haver tambm mais de uma com substituies mais direita, conforme
demonstrado no Teorema 4.2.
Teorema 4.2 (Derivaes esquerda derivaes direita) Se w L(G), com
G sendo uma gramtica livre de contexto, e existindo duas (ou mais) derivaes mais
esquerda para w em G, ento existem tambm, correspondentemente, duas (ou mais)
derivaes mais direita para w em G.
Justicativa As gramticas livres de contexto possuem a propriedade de que as deriva-
es de cada um dos smbolos no-terminais presentes em uma mesma forma sentencial
podem ser feitas de forma independente umas das outras. Se S

, ento
a derivao X independe de e .
Considere-se uma gramtica livre de contexto G e a seqncia de derivaes mais
esquerda S

1
X, com
1

, X N, e V

. Considere-se que X

2
, com

3
, com
3

. Ento, S

1
X

3
e
1

3
L(G).
Sejam X
1
e X
2
duas produes distintas de G. Ento, existem duas
derivaes esquerda distintas para a cadeia
1

3
:
S

1
X
1

3
S

1
X
1

3
Se
1

3
L(G) e X

2
, ento existe uma seqncia de derivaes mais
direita S

X
3
, com V

e, alm disso,

1
. Portanto, S

X
3

3
.
Como, por hiptese, X
1

2
e X
2

2
, ento existem duas seqn-
cias de derivaes mais direita para a cadeia
1

3
:
S

X
3

1

3
S

X
3

2

3
De maneira anloga, possvel demonstrar que, para cada seqncia distinta de
derivaes mais esquerda que geram uma mesma cadeia da linguagem, existe uma
seqncia distinta de derivaes mais direita correspondente, que gera a mesma cadeia.
Exemplo 4.12 A gramtica cujo conjunto de regras est abaixo apresentado equivalente gramtica
anteriormente utilizada na denio da linguagem das expresses aritmticas sobre {a, +, , (, )} do
Exemplo 4.1. Diferentemente daquela, no entanto, apenas um smbolo no-terminal (E) utilizado:
{E E +E,
E E E,
E a,
E (E)}
Adotando-se o critrio das derivaes mais esquerda, pode-se perceber que a sentena a+aa
pode ser derivada ao menos de duas formas distintas:
196 Linguagens Formais - Teoria, Modelagem e Implementao
1. Aplicando-se inicialmente a produo E E + E:
E E + E a +E a + E E a +a E a +a a
2. Aplicando-se inicialmente a produo E E E:
E E E E + E E a + E E a + a E a + a a
Como conseqncia, a gramtica acima ambgua. possvel provar, no entanto, que a
gramtica do Exemplo 4.1 (com os no-terminais E, T e F) admite uma nica seqncia de derivao
para cada sentena pertencente linguagem. Note-se, em particular, que isso ocorre com a sentena
acima considerada. Como concluso, esta linguagem pode ser indistintamente denida atravs de
uma gramtica ambgua ou de uma gramtica no-ambgua. 2
Exemplo 4.13
Considere-se o fragmento de gramtica abaixo apresentado, que ilustra um problema tpico de
determinadas linguagens de programao de alto nvel a ambigidade na construo de comandos
condicionais aninhados.
<programa> . . . <comando> . . .
<comando> <condicional>
<condicional> if <condio> then <comando>
<condicional> if <condio> else <comando> else <comando>
<condio> . . .
Passa-se a analisar a estrutura da seguinte forma sentencial:
if <condio> then if <condio> then <comando> else <comando>
Para se determinar uma eventual ambigidade nessa forma sentencial, escolhe-se inicialmente
e xa-se um critrio de substituio de no-terminais por exemplo, as substituies dos no-
terminais mais esquerda. Neste caso, fcil vericar que a forma sentencial acima admite duas
seqncias distintas de derivao:
1. Primeira alternativa:
<programa> . . . <comando> . . .
. . . <condicional> . . .
. . . if <condio> then <comando> else <comando> . . .
. . . if <condio> then <condicional> else <comando>. . .
. . . if <condio> then if <condio> then <comando>
else <comando> . . .
2. Segunda alternativa:
<programa> . . . <comando> . . .
. . . <condicional> . . .
. . . if <condio> then <comando> . . .
. . . if <condio> then <condicional> . . .
. . . if <condio> then if <condio> then <comando>
else <comando> . . .
No primeiro caso, o ramo do else considerado como parte integrante do comando condicio-
nal mais externo e, no segundo, este mesmo ramo considerado como parte do comando condicional
mais interno:
if <condio> then if <condio> then <comando>
. .
else <comando>
. .
4 Linguagens Livres de Contexto 197
if <condio> then if <condio> then <comando> else <comando>
. .
. .
Assim, a forma sentencial apresentada ambgua, o que tambm torna ambgua a gramtica.
Como se pode vericar facilmente, as mesmas concluses poderiam tambm ter sido obtidas caso
fossem consideradas apenas substituies mais direita. 2
Na prtica, apenas uma interpretao deve ser atribuda para comandos como o
apresentado acima em cada possvel implementao desta linguagem. No entanto, o
que interessa que a formalizao gramatical dessa construo ambgua, ou seja, ela
admite mais de uma interpretao para a sentena em questo, independentemente da
implementao considerada.
certo que o termo interpretao denota signicado, contedo semntico, assun-
tos que no esto sendo considerados no momento. Mas, como se sabe, o signicado
de uma sentena costuma estar muito associado sua estrutura, e por esse motivo a
existncia de duas ou mais seqncias distintas de derivaes para uma mesma sentena
sugere a eventual existncia de uma ambigidade semntica a partir de uma ambigidade
sinttica (ou estrutural) concreta constatada.
Ambigidades sintticas (simplesmente ambigidades, neste texto) constituem ge-
ralmente uma caracterstica indesejvel das gramticas de linguagens de programao e
das demais linguagens articiais em geral, uma vez que comum, em casos como este,
que a construo ambgua seja implementada (isto , seja associada a interpretaes
semnticas) de formas diversas, dependendo da opo efetuada pelo projetista de cada
compilador e/ou interpretador, prejudicando, assim, a portabilidade dos programas de
aplicao entre uma implementao e outra.
Normalmente, ambigidades costumam ser eliminadas atravs da utilizao de cons-
trues gramaticais que impeam a existncia de mais de uma seqncia de derivaes
mais esquerda (e, portant,o tambm mais direita) para cada sentena pertencente
linguagem, desde que xado e observado a priori, naturalmente, um critrio nico
para a substituio dos no-terminais nas formas sentenciais. Eventualmente, como no
Exemplo 4.14 apresentado a seguir, modicaes mnimas podem vir a ser introduzidas
na linguagem em conseqncia de tais alteraes.
Assim, por exemplo, comum, em linguagens de programao modernas, a denio
de comandos condicionais de maneira semelhante ao abaixo apresentado.
Exemplo 4.14
Seja a seguinte gramtica, inspirada na do Exemplo 4.13:
<comando> . . . <comando> . . .
<comando> <condicional>
<condicional> if <condio> then <comando> fi
<condicional> if <condio> then <comando> else <comando> fi
<condio> . . .
A associao do else ao comando condicional mais externo ou mais interno feita, de
acordo com esta nova gramtica, respectivamente:
if <condio> then if <condio> then <comando> fi
. .
else <comando> fi
. .
ou
if <condio> then if <condio> then <comando> else <comando> fi
. .
fi
. .
2
198 Linguagens Formais - Teoria, Modelagem e Implementao
Note-se que, neste caso, sentenas equivalentes anteriormente apresentada pos-
suem apenas uma seqncia de derivaes mais esquerda ou direita, sendo a gram-
tica, portanto, isenta de ambigidade.
Normalmente, o termo ambigidade costuma ser relacionado apenas a sentenas
e gramticas da forma como foi mencionado anteriormente. Diz-se que uma linguagem
livre de contexto ambgua se ela puder ser gerada por uma gramtica livre de contexto
ambgua, e no-ambgua se ela puder ser gerada por uma gramtica livre de contexto
no-ambgua. No entanto, raramente se costuma dizer que uma linguagem ambgua,
uma vez que uma mesma linguagem pode ser gerada por inmeras gramticas distintas
(ambguas e no-ambguas).
H, no entanto, casos em que se pode provar, apesar de isso ser, em geral, uma
tarefa consideravelmente complexa, que determinadas linguagens so inerentemente
ambguas, indicando com isso que toda e qualquer gramtica que gera a linguagem em
questo deve ser necessariamente ambgua. Em casos como esse, o conceito de ambigi-
dade pode ser estendido tambm para caracterizar mais um atributo da linguagem.
Exemplo 4.15
A linguagem {a
n
b
n
c
m
d
m
| n 1, m 1} {a
n
b
m
c
m
d
n
| n 1, m 1} inerentemente
ambgua. A demonstrao pode ser encontrada em [46]. 2
Exemplo 4.16
A linguagem {a
i
b
j
c
k
| i = j ou j = k} inerentemente ambgua. A demonstrao pode ser
encontrada em [49]. 2
Quando se consideram gramticas livres de contexto, natural que se questione a
relao que existe entre o nmero de derivaes cannicas que podem ser efetuadas para
uma certa cadeia de uma linguagem e o nmero de rvores de derivao distintas que
podem ser construdas para representar essa mesma cadeia. Este assunto ser tratado
no Teorema 4.3.
Teorema 4.3 (Mltiplas derivaes mltiplas rvores) Seja G uma gramtica
livre de contexto. Para toda cadeia w L(G), o nmero de seqncias distintas de
derivaes mais esquerda (e portanto mais direita) igual ao nmero de rvores de
derivao distintas que representam w.
Justicativa Pode ser encontrada em [46]. No difcil, no entanto, intuir que, para
cada forma sentencial obtida atravs de derivaes mais esquerda, a substituio do
no-terminal mais esquerda por produes distintas, sejam elas quantas forem, d ori-
gem a uma quantidade idntica de rvores distintas, as quais so diferenciadas pelos ns
que representam os lhos do n que representa esse no-terminal. De forma anloga, o
raciocnio inverso tambm se aplica.
Por outro lado, quando se consideram gramticas livres de contexto no-ambguas,
a ordem em que so feitas as substituies dos smbolos no-terminais nas formas sen-
tenciais irrelevante do ponto de vista das cadeias que podem ser geradas e das respec-
tivas rvores de derivao. Como mostra o Teorema 4.4, qualquer que seja a ordem de
substituio dos no-terminais escolhida na gerao de uma mesma cadeia, a rvore de
derivao ser sempre a mesma.
Teorema 4.4 (Mltiplas derivaes nica rvore) Seja G uma gramtica livre
de contexto no-ambgua. Para toda cadeia w L(G), toda e qualquer seqncia de
derivaes que produz w representada atravs da mesma e nica rvore de derivao.
4 Linguagens Livres de Contexto 199
Justicativa Se G uma gramtica livre de contexto no-ambgua, ento, conforme
a denio, toda e qualquer cadeia w L(G) possui uma nica seqncia de derivaes
mais esquerda ou mais direita, mesmo que existam outras seqncias no-cannicas
de derivao para essa mesma cadeia. Conforme o Teorema 4.3, existe uma nica rvore
de derivao para w. Logo, todas as derivaes de w em G so representadas por uma
mesma rvore de derivao.
Conforme a denio, uma gramtica livre de contexto no-ambgua aquela para
a qual cada cadeia pertencente linguagem gerada por tal gramtica gerada por uma
nica seqncia de derivaes mais esquerda e por uma nica seqncia de derivaes
mais direita. O Teorema 4.4 estende esse resultado, e estabelece que tais seqncias de
derivaes correspondem a uma mesma rvore de derivao.
Em resumo: cada uma das cadeias pertencentes a uma linguagem gerada por uma
gramtica livre de contexto no-ambgua possui uma nica seqncia de derivaes mais
esquerda, uma nica seqncia de derivaes mais direita e uma nica rvore de
derivao.
Esta importante propriedade das linguagens livres de contexto (e portanto tambm
das linguagens regulares) permite que se adote uma ordem arbitrria para a aplicao
das regras gramaticais na derivao de uma sentena. Tecnologicamente, isso pode ser
aproveitado escolhendo-se uma ordem que seja econmica do ponto de vista algortmico.
A existncia de uma nica seqncia cannica de derivaes (uma mais esquerda
e outra mais direita) para cada sentena de uma linguagem gerada por uma gram-
tica no-ambgua explorada nos algoritmos de construo de reconhecedores sintticos
determinsticos para linguagens livres de contexto, cuja operao consiste exatamente
na busca sistemtica de tal seqncia (e, conseqentemente, da correspondente rvore
de derivao), se essa seqncia existir, para cada cadeia de entrada que lhe seja sub-
metida. Do ponto de vista tecnolgico, esse resultado permite a busca da soluo de
implementao mais barata, conforme a linguagem considerada.
Por outro lado, o Teorema 4.3 permite estender o conceito de gramtica livre de
contexto ambgua, que passa a ser caracterizado de trs formas distintas, porm equi-
valentes entre si. Diz-se que uma gramtica livre de contexto ambgua se for possvel
identicar, na linguagem por ela gerada, pelo menos uma cadeia que:
possa ser derivada por duas ou mais seqncias distintas de derivaes mais
esquerda, ou
possa ser derivada por duas ou mais seqncias distintas de derivaes mais
direita, ou
possa ser representada por duas ou mais rvores de derivao distintas.
Exemplo 4.17 Considere-se o fragmento de gramtica utilizado para ilustrar o problema da ambigi-
dade em comandos condicionais (Exemplo 4.13). De acordo com essa gramtica, a forma sentencial:
if <condio> then if <condio> then <comando> else <comando>
pode ser derivada segundo duas seqncias distintas de derivaes mais esquerda. Como con-
seqncia, existem tambm duas rvores de derivao distintas que possuem como fronteira essa
mesma forma sentencial:
200 Linguagens Formais - Teoria, Modelagem e Implementao
if <condio> then
if <condio> then <comando>
<condicional>
<comando>
else <comando>
<condicional>
Figura 4.3: Ambigidade no comando IF: associao interna
if <condio> then
if <condio> then <comando> else <comando>
<condicional>
<comando>
<condicional>
Figura 4.4: Ambigidade no comando IF: associao ex-
terna
2
4.5 Simplicao de Gramticas Livres de Contexto
Por uma questo de convenincia no estudo das gramticas livres de contexto, muitas
vezes necessrio submet-las a simplicaes que visam torn-las mais apropriadas para
a demonstrao de teoremas, para a vericao de propriedades, ou simplesmente para
facilitar a sua anlise.
Tais simplicaes consistem em manipulaes gramaticais que no afetam a lingua-
gem denida pela gramtica original, e so de trs tipos (os novos termos sero denidos
mais adiante):
1. Eliminao de smbolos inacessveis e inteis;
2. Eliminao de produes em vazio;
3. Eliminao de produes unitrias.
4 Linguagens Livres de Contexto 201
Para cada tipo de transformao ser apresentado um algoritmo que mapeia a gra-
mtica original em uma outra gramtica que exiba uma das propriedades acima enumera-
das. Em todos os casos possvel demonstrar formalmente (ver [46]) que a transformao
produz o efeito proposto sem alterar a linguagem denida pela gramtica original.
Considere-se inicialmente a denio e eliminao de smbolos inacessveis e inteis.
Dada uma gramtica livre de contexto G = (V, , P, S), ento:
Diz-se que um smbolo Y V terminal ou no-terminal inacessvel,
se no for possvel derivar qualquer forma sentencial em que se registre alguma
ocorrncia de Y. Caso contrrio, o smbolo dito acessvel. Formalmente,
smbolos acessveis Y so aqueles para os quais existem derivaes da forma
S

Y, com , V

. Smbolos inacessveis, portanto, so aqueles para


os quais inexistem derivaes com tais caractersticas.
Diz-se que um smbolo Y no-terminal intil, se no for possvel derivar
pelo menos uma cadeia formada exclusivamente por terminais (ou a cadeia vazia)
a partir de Y. Caso contrrio, o smbolo dito til. Formalmente, smbolos teis
Y so aqueles para os quais existem derivaes da forma Y

, com

.
Smbolos inteis, portanto, so aqueles para os quais inexistem derivaes com tais
caractersticas. Cumpre notar que smbolos terminais so, por denio, sempre
teis.
Um smbolo Y que seja simultaneamente acessvel e til , portanto, aquele que
satisfaz condio:
S

, com , V

Em outras palavras, um smbolo Y acessvel e til se e somente se:


1. Y est presente em pelo menos uma forma sentencial derivada a partir da raiz da
gramtica, e
2. Y deriva pelo menos uma cadeia pertencente ao conjunto

(condio vericada
trivialmente pelos smbolos terminais).
A acessibilidade de um smbolo Y garante a existncia de pelo menos uma forma
sentencial derivvel a partir da raiz da gramtica em que Y tome parte. A utilidade ga-
rante que o smbolo Y gera pelo menos uma cadeia formada exclusivamente por smbolos
terminais (ou a cadeia vazia).
Smbolos inacessveis e inteis em nada contribuem para a linguagem denida pela
gramtica livre de contexto em questo. Ainda que o cojunto de cadeias gerado por um
smbolo inacessvel seja diferente de vazio, a sua inacessibilidade torna-o irrelevante do
ponto da vista da linguagem denida pela raiz da gramtica. Por outro lado, mesmo se
acessveis, os smbolos inteis sempre anulam a linguagem gerada por toda e qualquer
forma sentencial a que possam pertencer.
Dessa forma, a idia de se eliminarem smbolos inacessveis e inteis apresenta
grande interesse, uma vez que permite obter gramticas mais compactas, normalmente
mais legveis, e nas quais todo e qualquer smbolo contribui efetivamente com a linguagem
gerada. Alm disso, a inexistncia de smbolos inacessveis e inteis pr-requisito para
a obteno da algumas importantes formas normais.
202 Linguagens Formais - Teoria, Modelagem e Implementao
A transformao de uma gramtica em outra equivalente, isenta de smbolos ina-
cessveis e inteis, pode ser feita em dois passos, atravs de dois algoritmos distintos: o
primeiro algoritmo encarrega-se de eliminar da gramtica original os smbolos inteis; o
segundo algoritmo elimina todos os smbolos inacessveis.
Teorema 4.5 (Eliminao de smbolos inacessveis e inteis) Toda linguagem li-
vre de contexto pode ser gerada por uma gramtica livre de contexto em que no h
smbolos inacessveis ou inteis.
Justicativa A demonstrao deste teorema pode ser realizada tomando-se como base
os dois algoritmos apresentados a seguir. O Algoritmo 4.1 mostra como eliminar os
no-terminais que no geram cadeias de terminais, bem como as produes em que os
mesmos comparecem, preservando em N apenas os smbolos do conjunto N

= {Y N |
Y

, com

}.
Algoritmo 4.1 (Eliminao de smbolos inteis) Eliminao de smbolos inteis
em gramticas livres de contexto.
Entrada: uma gramtica livre de contexto G = (V, , P, S), tal que L(G) = .
Sada: uma gramtica livre de contexto G

= (V

, , P

, S), tal que L(G

) = L(G)
e Y N

se e apenas se L(Y) = .
Mtodo:
1. N
0
;
2. i 1;
3. N
i
N
i1
{Y | Y P e (N
i1

)};
4. Se N
i
= N
i1
, ento:
a) i i + 1;
b) Desviar para (3);
Caso contrrio:
a) N

N
i
;
b) P

{A X
1
X
2
. . . X
n
P | A, X
1
, X
2
, . . . , X
n
(N
i
)}.
Observe-se que N

N e P

P. Intuitivamente, este algoritmo funciona


incluindo-se seletivamente em um novo conjunto de smbolos no-terminais (inicialmente
vazio) apenas aqueles no-terminais que:
1. Derivam diretamente cadeias de smbolos terminais (primeira iterao do passo 2),
ou
4 Linguagens Livres de Contexto 203
2. Derivam diretamente cadeias que incluem smbolos no-terminais, os quais, por
sua vez, derivam cadeias de smbolos terminais, direta ou indiretamente.
Alm disso, so preservadas em P

apenas as produes de P que fazem referncias


exclusivas a elementos de e de N

, pois as demais mostram-se sem utilidade. Note-se


que o Algoritmo 4.1 pode ser usado para se determinar se L(G) = para uma dada
gramtica livre de contexto G basta determinar, ao m de sua execuo, se S N

.
Em caso armativo, L(G) = ; caso contrrio, L(G) = .
O segundo algoritmo mostra como eliminar os smbolos terminais e no-terminais
que no fazem parte de qualquer forma sentencial derivvel a partir da raiz da gramtica,
ou seja, Y V

se e apenas se S

Y, com , V

.
Algoritmo 4.2 (Eliminao de smbolos inacessveis) Eliminao de smbolos ina-
cessveis em gramticas livres de contexto.
Entrada: uma gramtica livre de contexto G = (V, , P, S).
Sada: uma gramtica livre de contexto G

= (V

, P

, S), tal que L(G

) = L(G)
e Y V

se e apenas se S

Y, com , V

.
Mtodo:
1. V
0
{S};
2. i 1;
3. V
i
V
i1
{X
j
V, 1 j n | A X
1
X
2
. . . X
n
P e A N
i1
};
4. Se V
i
= V
i1
, ento:
a) i i + 1;
b) Desviar para (3);
Caso contrrio:
a) N

V
i
N;
b)

V
i
;
c) P

{A X
1
X
2
. . . X
n
P | A, X
1
, X
2
. . . X
n
V
i
}.

Observe-se a similaridade entre as denies e os algoritmos da presente seo com


os da Seo 3.3, sobre autmatos nitos.
De fato, h uma correspondncia direta entre os conceitos de smbolo e estado aces-
svel, bem como entre os de smbolo e estado til. H, tambm, uma relao direta entre
os algoritmos para a eliminao de smbolos inteis (Algoritmo 4.1) e a para eliminao
de smbolos inacessveis (Algoritmo 4.2) com os algoritmos para a eliminao dos esta-
dos inteis e inacessveis em autmatos nitos (respectivamente, Algoritmos 3.11 e 3.9).
204 Linguagens Formais - Teoria, Modelagem e Implementao
Trata-se, como se pode perceber, essencialmente dos mesmos conceitos e dos mesmos
mtodos.
No caso do Algoritmo 4.1, trata-se da identicao sistemtica dos smbolos que
geram alguma cadeia formada apenas por terminais. No Algoritmo 3.9, trata-se da
identicao dos estados que conduzem a algum estado nal do autmato. O Algoritmo
4.2 identica os smbolos que podem ser gerados a partir da raiz S. O Algoritmo 3.11
identica os estados que podem ser alcanados a partir do estado inicial do autmato.
Note-se tambm que os Algoritmos 4.1 e 4.2 no apenas eliminam smbolos dos
conjuntos N e da gramtica original, no caso geral, como tambm eliminam todas as
produes de P que envolvam quaisquer smbolos inacessveis ou inteis eliminados.
Smbolos inacessveis e inteis podem ser eliminados de uma gramtica livre de
contexto qualquer aplicando-se-lhes inicialmente o Algoritmo 4.1 e, ao resultado deste,
o Algoritmo 4.2, ou vice-versa. A ordem de aplicao dos algoritmos no interfere no
resultado nal obtido, como demonstra o Teorema 4.6.
Teorema 4.6 (Eliminao de smbolos inacessveis e inteis) A obteno de uma
gramtica livre de contexto G
3
, isenta de smbolos inacessveis ou inteis, a partir de uma
gramtica livre de contexto G
1
qualquer, pode ser feita pela aplicao dos Algoritmos 4.1
e 4.2 uma nica vez cada, em qualquer seqncia.
Justicativa Seja G
1
= (V
1
,
1
, P
1
, S
1
). Os smbolos do conjunto V
1
podem ser, in-
dividualmente, classicados em uma das seguintes categorias:
i) Acessvel e til;
ii) Acessvel e intil;
iii) Inacessvel e til;
iv) Inacessvel e intil.
Alm disso, os Algoritmos 4.1 e 4.2 no criam novos smbolos, tampouco alteram as
caractersticas de acessibilidade ou de utilidade dos smbolos da gramtica de entrada que
foram preservados na gramtica de sada. Em funo dessas observaes, considerem-se
as duas seguintes seqncias possveis para a aplicao dos Algoritmos 4.1 e 4.2:
1. Inicialmente o Algoritmo 4.1, e depois o Algoritmo 4.2:
A aplicao do Algoritmo 4.1 (eliminao de smbolos inteis) gramtica G
1
resulta na gramtica G
2
= (V
2
,
2
, P
2
, S
2
), em que os smbolos de V
2
so apenas
dos tipos (i) e (iii). Em seguida, a aplicao do Algoritmo 4.2 (eliminao de
smbolos inacessveis) gramtica G
2
resulta na gramtica G
3
= (V
3
,
3
, P
3
, S
3
),
em que os smbolos de V
3
so apenas do tipo (i).
2. Inicialmente o Algoritmo 4.2, e depois o Algoritmo 4.1:
A aplicao do Algoritmo 4.2 (eliminao de smbolos inacessveis) gramtica
G
1
resulta na gramtica G
2
= (V
2
,
2
, P
2
, S
2
), em que os smbolos de V
2
so
apenas dos tipos (i) e (ii). Em seguida, a aplicao do Algoritmo 4.1 (eliminao
de smbolos inteis) gramtica G
2
resulta na gramtica G
3
= (V
3
,
3
, P
3
, S
3
),
em que os smbolos de V
3
so apenas do tipo (i).
4 Linguagens Livres de Contexto 205
Logo, a ordem de aplicao dos algoritmos de eliminao de smbolos inacessveis
e inteis irrelevante, e a obteno de uma gramtica livre de contexto, isenta de tais
smbolos, pode ser feita pela aplicao de cada um dos correspondentes algoritmos uma
nica vez, em qualquer ordem.
Exemplo 4.18 Considere-se G = (V, , P, S), com:
V = {S, A, B, C, a, b}
= {a, b}
P = {S A | B, A aB | bS | b, B AB | Ba, C AS | b}
Aplicando-se o algoritmo de eliminao de no-terminais que no geram cadeias de terminais,
obtm-se:
N0 =
N1 = {A, C}
N2 = {A, C, S}
N3 = {A, C, S}
Logo, G

= {V

, , P

, S}, com:
V

= {S, A, C, a, b}
P

= {S A | A bS | b, C AS | b}
Note-se que o no-terminal B foi eliminado de N uma vez que no possvel derivar qualquer
cadeia de terminais a partir dele. Aplicando-se a G

o Algoritmo 4.2, para a eliminao de smbolos


inacessveis, obtm-se:
V0 = {S}
V1 = {S, A}
V2 = {S, A, b}
e G

= {V

, P

, S}, com:
V

= {S, A}

= {b}
P

= {S A | A bS | b}
Observe-se a eliminao dos smbolos C e a de V

, uma vez que eles no comparecem


em qualquer forma sentencial derivvel a partir de S. G

corresponde, assim, a uma gramtica


equivalente a G, isenta de smbolos inacessveis e inteis, e L(G) = L(G

) = b
+
. 2
Analisa-se agora a questo da eliminao das produes em vazio. Produes em
vazio so produes da forma A , e a total eliminao de produes desse tipo de
uma gramtica G naturalmente s possvel se L(G).
Teorema 4.7 (Eliminao de produes em vazio) Toda linguagem livre de con-
texto que no contm a cadeia vazia pode ser gerada por uma gramtica livre de contexto
em que no h produes em vazio.
Justicativa O Algoritmo 4.3 mostra como transformar uma gramtica G em outra
equivalente G

, isenta de produes em vazio. Se L(G), ento ser admitida uma


nica produo em vazio, cujo lado esquerdo corresponde raiz da gramtica, de modo
que L(G

) = L(G).
206 Linguagens Formais - Teoria, Modelagem e Implementao
Algoritmo 4.3 (Eliminao de produes em vazio) Eliminao de produes em
vazio em gramticas livres de contexto.
Entrada: uma gramtica livre de contexto G = (V, , P, S).
Sada: uma gramtica livre de contexto G

= (N

, , P

, S

), tal que L(G

) =
L(G) e
i) Se L(G), ento no h produes em vazio em G

, ou
ii) Se L(G), ento a nica produo em vazio em G

, onde S

a
raiz de G

e S

no aparece no lado direito de nenhuma produo.


Mtodo:
1. E
0
{A | A P};
2. i 1;
3. E
i
E
i1
{A | A X
1
X
2
. . . X
n
P e X
1
, X
2
. . . X
n
E
i1
};
4. Se E
i
= E
i1
, ento:
a) i i + 1;
b) Desviar para (3);
Caso contrrio:
a) E E
i1
;
5. P

;
6. P

{A P | = };
7. Considerem-se as produes de P

no formato:
A
0
B
1

1
B
2

2
. . . B
k

k
, com
i
(V E)
+
e B
i
E
A verso nal do conjunto P

obtida acrescentando-se sua verso anterior


o conjunto das produes obtidas pela substituio dos smbolos B
i
, 0
i k por , considerando-se todas as combinaes possveis, sem no entanto
gerar a produo A .
8. Se S E, ento:
a) P

{S

S | };
b) N

N {S

};
4 Linguagens Livres de Contexto 207
Caso contrrio:
a) N

N;
b) S

S.
Este algoritmo implementa um mapeamento do conjunto P no conjunto P

, em que
as seguintes condies so obedecidas:
1. Produes em vazio A P so eliminadas;
2. As produes A P, =
1

2
. . .
n
,
i
V, em que contm smbolos
no-terminais que eventualmente derivam , isto ,
i

, 1 i n, so
expandidas para contemplar todos os possveis casos de eliminao desses no-
terminais, compensando assim a eliminao das produes em vazio.
Os passos (1), (2), (3) e (4) do algoritmo buscam identicar o subconjunto E dos
elementos A de N, E N, tais que A

, e em muito se assemelham aos Algoritmos


4.1 e 4.2 anteriormente apresentados. Os passos (5), (6) e (7) realizam o mapeamento
acima descrito, eliminando as produes em vazio e eventualmente expandindo as demais
produes.
Observe-se que o fato de cada produo de P ser considerada no formato genrico:
A
0
B
1

1
B
2

2
. . . B
k

k
visa isolar exatamente os no-terminais B
i
, tais que B
i

. A seguir so geradas, a
partir de cada produo deste tipo, 2
k
(no mximo) novas produes distintas, cada qual
correspondente a uma particular combinao de no-terminais B
i
substitudos por .
Por m, note-se que se S E, isso indica que L(G). Assim, para que L(G

) =
L(G), um novo smbolo no-terminal S

e a produo S

so introduzidos em G

no
passo (8).
Exemplo 4.19 Seja uma gramtica G = (V, , P, S), com:
V = {S, A, B, C}
= {a, b}
P = {S ABC, A BB | , B CC | a, C AA | b}
Como se pode perceber, E = {A, C, B, S}. Em conseqncia, obtm-se o seguinte conjunto
de produes P

:
{C AA | A | b,
B CC | C | a,
A BB | B,
S ABC | A | B | C | AB | AC | BC}
Pelo fato de S E, a produo S

S | deve ainda ser incorporada a P

, resultando assim
G

= (V {S

}, , P

, S

). 2
208 Linguagens Formais - Teoria, Modelagem e Implementao
Exemplo 4.20 Considere-se a gramtica G = (V, , P, S), com
V = {S, B, C}
= {a, b, c, d}
P = {S aBC, B bB | , C cCc | d | }
Neste caso, E = {B, C}. Portanto, P

se torna:
{B bB | b,
C cCc | cc | d,
S aBC | aB | aC}
Como L(G), ento G

= (V, , P

, S). 2
O ltimo caso de simplicao de gramticas livres de contexto refere-se elimina-
o de produes unitrias. Produes unitrias so produes da forma A B, em
que A e B so no-terminais, e costumam ser descartadas das gramticas livres de con-
texto porque nada acrescentam s formas sentenciais s quais so aplicadas, constituindo
mera renomeao de smbolos (no caso, de A para B).
Teorema 4.8 (Eliminao de produes unitrias) Toda linguagem livre de con-
texto pode ser gerada por uma gramtica livre de contexto isenta de produes unitrias.
Justicativa O Algoritmo 4.4 mostra como transformar gramticas livres de contexto
arbitrrias em outras equivalentes sem produes unitrias.
Algoritmo 4.4 (Eliminao de produes unitrias) Eliminao de produes uni-
trias em gramticas livres de contexto.
Entrada: uma gramtica livre de contexto G = (V, , P, S).
Sada: uma gramtica livre de contexto G

= (V, , P

, S), tal que L(G

) = L(G)
e G

no contm produes unitrias.


Mtodo:
1. Para cada A N, constri-se N
A
tal que N
A
= {B N | A

B
2
} da
seguinte forma:
a) N
0
{A};
b) i 1;
c) N
i
N
i1
{C | B C P e B N
i1
};
d) Se N
i
= N
i1
, ento:
i. i i + 1;
ii. Desviar para (1.c);
2
Devem-se considerar apenas as derivaes que so obtidas pela aplicao exclusiva de regras unitrias.
4 Linguagens Livres de Contexto 209
Caso contrrio:
i. N
A
N
i1
;
2. P

{A P | N};
3. Para todo B N
A
, se B P, e N, ento P

{A }.
O funcionamento deste algoritmo baseia-se inicialmente na identicao e na as-
sociao de subconjuntos de N a cada no-terminal X da gramtica, sendo que cada
elemento Y desse subconjunto satisfaz condio X

Y. Esses subconjuntos so
construdos no passo (1) do algoritmo.
Observe-se que a condio X

Y refere-se apenas a derivaes efetuadas ex-


clusivamente atravs do emprego de produes unitrias. Em alguns casos, possvel
que tal condio seja satisfeita atravs do emprego de produes no-unitrias, isto ,
X

Y, | |> 1, como ilustrado no Exemplo 4.21.


Exemplo 4.21 Considere-se a gramtica G:
G = ({S, X, Y, a}, {a}, P, S)
P = {S XY,
X a,
Y }
A derivao S XY X, ou simplesmente S

X, feita sem o uso de regras unitrias. 2


Para evitar situaes como as do Exemplo 4.21, suciente garantir que a gramtica
em questo no possua regras em vazio, ou, alternativamente, desconsiderar derivaes
que faam uso das mesmas no clculo dos conjuntos N
A
(passo (1) do Algoritmo 4.4).
O conjunto P

construdo nos passos (2) e (3). Ele obtido pela eliminao de


todas as produes unitrias de P, preservando-se as demais e criando novas produes
do tipo X

, onde Y N
X
e Y P. Isso implica abreviar uma seqncia de
derivaes, substituindo cada derivao que utilize produes unitrias pela derivao
utilizando as novas produes que produz o efeito nal pretendido.
Exemplo 4.22 Considere-se G = (V, , P, S), com o conjunto de regras P seguinte:
{S A | B | C,
A aaAa | B | ,
B bBb | b | C,
C cC | }
Aplicando-se o Algoritmo 4.4, obtm-se:
NS = {S, A, B, C}
NA = {A, B, C}
NB = {B, C}
NC = {C}
Assim, G

= (V, , P

, S), e P

torna-se:
210 Linguagens Formais - Teoria, Modelagem e Implementao
{S aaAa | | bBb | b | cC,
A aaAa | | bBb | b | cC,
B bBb | b | cC | ,
C cC | }
A ttulo de ilustrao, considere-se a derivao da sentena aabba. Tomando-se como base a
gramtica G, a seqncia de derivaes desta sentena :
S A aaAa aaBa aabBba aabCba aabba
ao passo que, tomando-se como base a gramtica modicada G

, a seqncia de derivao desta


sentena se torna:
S aaAa aabBba aabba
(note-se como a eliminao de produes unitrias abrevia a derivao da sentena). 2
Diz-se que uma gramtica livre de contexto isenta de produes em vazio acclica
se e somente se no existir A N, tal que A

A. Caso contrrio, diz-se que a


gramtica cclica. O Algoritmo 4.4 pode ser facilmente adaptado para detectar ciclos
em gramticas livres de contexto isentas de produes em vazio, conforme apresentado
no Algoritmo 4.5.
Algoritmo 4.5 (Deteco de ciclos) Deteco de ciclos em gramticas livres de con-
texto isentas de produes em vazio.
Entrada: uma gramtica livre de contexto isenta de produes em vazio G =
(V, , P, S).
Sada: SIM, se G for cclica. NO, se G for acclica.
Mtodo:
1. Para cada A N, constri-se N
A
tal que N
A
= {B N | A

B} da
seguinte forma:
a) N
0
{B | A B P e B = A};
b) i 1;
c) N
i
N
i1
{C | B C P e B N
i1
};
d) Se N
i
= N
i1
, ento:
i. i i + 1;
ii. Desviar para (1.c);
Caso contrrio:
i. N
A
N
i1
;
2. Se A N, A N
A
, ento NO; caso contrrio, SIM.
4 Linguagens Livres de Contexto 211
4.6 Formas Normais para Gramticas Livres de Contexto
Como se sabe, as gramticas livres de contexto se caracterizam por apresentar produes
p que seguem a forma geral A , A N, V

. Conforme foi estudado na


Seo 4.5, tais gramticas podem sofrer simplicaes traduzidas, em alguns casos,
em restries impostas ao formato admitido para as produes p P que visam
torn-las mais concisas, sem no entanto alterar a linguagem por elas denida.
Por outro lado, certos teoremas que sero apresentados no restante deste captulo,
como , por exemplo, o caso daquele que estabelece a equivalncia das gramticas do
tipo 2 com a classe de linguagens reconhecida pelos autmatos de pilha (Teorema 4.13),
podem ser mais facilmente demonstrados considerando-se que as gramticas livres de
contexto estejam normalizadas em relao a algum padro notacional.
Uma gramtica dita normalizada em relao a um certo padro quando todas
as suas produes seguem as restries impostas pelo padro em questo. comum
designar tais padres como formas normais. Nesta seo sero denidas duas das
formas normais mais importantes para as gramticas livres de contexto: a Forma Normal
de Chomsky e a Forma Normal de Greibach. Especial ateno ser dedicada ao estudo de
algoritmos que permitem o mapeamento de gramticas do tipo 2 quaisquer em gramticas
equivalentes, aderentes a uma ou outra dessas formas normais. Mostrar-se- que toda e
qualquer gramtica do tipo 2 corresponde a gramticas equivalentes, expressas em ambas
as formas normais.
Diz-se que uma gramtica G = (V, , P, S) do tipo 2 obedece Forma Normal de
Chomsky ([62]) se todas as produes p P forem de uma das duas formas seguintes:
1. A BC, ou
2. A a
com A, B, C N e a .
Se L(G), ento admite-se S como nica produo em que comparece do
lado direito.
Teorema 4.9 (Forma Normal de Chomsky) Toda linguagem livre de contexto L
pode ser gerada por uma gramtica livre de contexto na Forma Normal de Chomsky.
Justicativa Seja G uma gramtica livre de contexto qualquer que gera L. Sem perda
de generalidade, considere-se que G no apresenta produes unitrias, smbolos inteis
e nem produes em vazio exceto S , se L(G). possvel demonstrar for-
malmente (ver [46]) que o mapeamento de G em G

, a gramtica equivalente na Forma


Normal de Chomsky, pode ser efetuado atravs do Algoritmo 4.6.
Algoritmo 4.6 (Forma Normal de Chomsky) Obteno de uma gramtica livre de
contexto na Forma Normal de Chomsky.
Entrada: uma gramtica livre de contexto G = (V, , P, S) isenta de produes
unitrias, smbolos inteis e produes em vazio.
Sada: uma gramtica livre de contexto G

= (V

, , P

, S), na Forma Normal de


Chomsky, tal que L(G) = L(G

).
Mtodo:
212 Linguagens Formais - Teoria, Modelagem e Implementao
1. P

;
2. N

N;
3. Se A BC P, com A, B, C N, ento A BC P

;
4. Se A P, com A N, , ento A P

;
5. Se S P, ento S P

;
6. Para cada produo p P da forma:
A X
1
X
2
, . . . , X
n
, com n 2
se X
i
, ento criam-se novos no-terminais Y
i
e produes Y
i
X
i
substituindo-se as ocorrncias de X
i
por Y
i
em p. Acrescentam-se os novos
no-terminais Y
i
a N

e as novas produes a P

.
7. Para cada produo da forma:
A X
1
X
2
, . . . , X
n
, com n 2 e X
i
N, 1 i n
gerada no passo (6), criar um novo conjunto de no-terminais Z
i
e de pro-
dues da forma:
{A X
1
Z
1
,
Z
1
X
2
Z
2
,
. . .
Z
n2
X
n1
X
n
}
acrescentando-os, respectivamente, aos conjuntos N

e P

.
Trata-se, como se pode perceber, de um algoritmo bastante intuitivo. Inicialmente,
todas as produes de P que originalmente j se encontram na Forma Normal de Chomsky
so transferidas para P

. No passo (6), as produes com mais de um smbolo do lado di-


reito so transformadas em produes contendo apenas smbolos no-terminais, devendo-
se criar um novo smbolo no-terminal e uma nova produo para cada smbolo terminal
a ser eliminado. Finalmente, no passo (7), cada produo neste formato desmembrada
em n 1 novas produes, cada qual com apenas dois smbolos no-terminais do lado
direito e, portanto, aderente Forma Normal de Chomsky.
Exemplo 4.23 Considere-se a gramtica G = (V, , P, S) com N = {E, T, F} e o conjunto de
produes P apresentado abaixo:
{E E + T | T,
T T F | F,
F (E) | a}
Da aplicao do algoritmo acima resulta G

= (V

, , P

, S), com:
4 Linguagens Livres de Contexto 213
N

= {E, T, F, [+T], [+], [F], [], [(], [E)], [)]}


P

= {E E[+T] | T,
[+T] [+]T,
[+] +,
T T[F] | F,
[F] []F,
[] ,
F [(][E)] | a,
[(] (,
[E)] E[)]}
2
Diz-se que uma gramtica livre de contexto G = (V, , P, S) obedece Forma
Normal de Greibach ([63]) se todas as suas produes p P forem da forma:
A , , N

Se L(G), ento admite-se S como nica produo em que comparece


do lado direito. Como pr-requisito antes de apresentarmos o teorema que mostra como
converter gramticas livres de contexto quaisquer em equivalentes na Forma Normal
de Greibach, ser necessrio apresentar um algoritmo que permita eliminar recurses
esquerda em gramticas livres de contexto quaisquer.
Eliminar recurses esquerda de uma gramtica livre de contexto G = (V, , P, S)
signica obter G

= (V

, , P

, S), de modo que L(G) = L(G

) e nenhum A N

seja
recursivo esquerda. A eliminao de recurses esquerda em gramticas livres de
contexto pode ser feita atravs do Algoritmo 4.7, cuja idia bsica consiste em transfor-
mar G, com no-terminais ordenados arbitrariamente, em G

, de modo que X
i
X
j
pertence a P

se e apenas se j > i.
Sem perda de generalidade, admite-se que a gramtica G de entrada seja isenta de
produes unitrias, smbolos inteis e produes em vazio.
Algoritmo 4.7 (Recurses esquerda) Eliminao de recurses esquerda em gra-
mticas livres de contexto.
Entrada: uma gramtica livre de contexto G = (V, , P, S) isenta de produes
unitrias, smbolos inteis e produes em vazio.
Sada: uma gramtica livre de contexto G

= (V

, , P

, S) sem recurses es-


querda e tal que L(G) = L(G

).
Mtodo:
1. N

N;
2. P

;
3. i 1;
4. Considerem-se os elementos de N ordenados segundo um critrio arbitrrio,
X
1
, X
2
, . . ., X
p
;
214 Linguagens Formais - Teoria, Modelagem e Implementao
5. Considerem-se todas as alternativas de substituio para X
i
agrupadas na
forma:
X
i
X
i

1
| . . . | X
i

m
|
1
| . . . |
n
em que todos os
k
, 1 k m, no contenham X
i
, e todos os
k
, 1 k n,
comeam com smbolos diferentes de X
i
. Se
k
= X
j
, j < i, substituir X
j
em X
j
pelas suas alternativas conforme as produes em que X
j
comparece
do lado esquerdo. Ou seja, se X
j

1
| . . . |
r
, fazer
k

1
| . . . |
r
.
Repetir este passo at que k, 1 k n, se
k
= X
j
, ento j i.
6. Neste passo, todas as alternativas de substituio para X
i
podem ser rea-
grupadas na forma:
X
i
X
i

1
| . . . | X
i

m
|
1
| . . . |
n
em que
i
se inicia com ou X
j
N, j > i. Introduzir um novo no-
terminal X

i
e criar as produes abaixo em substituio s acima agrupadas:
X
i

1
| . . . |
n
|
1
X

i
| . . . |
n
X

i
X

i

1
| . . . |
m
|
1
X

i
| . . . |
m
X

i
Fazer N

{X

i
} e acrescentar os dois conjuntos de produes acima
a P

.
7. Se i = p:
a) i i + 1;
b) Desviar para (5).
Partindo de uma ordenao arbitrria dos no-terminais da gramtica, o funciona-
mento deste algoritmo baseia-se na realizao de substituies sucessivas de no-terminais
de ordem inferior que comparecem como smbolo inicial de alternativas de substituio
de no-terminais de ordem superior pelas suas respectivas denies. Note-se que, ao
trmino de cada execuo do passo (5), todas as alternativas de substituio de no-
terminais X
i
possuem necessariamente a forma:
X
i
X
i

i
| . . . | X
i

m
|
1
| . . . |
n
O caso em que i = 1 trivial, pois a condio acima sempre imediatamente
satisfeita. Se i > 1, e
k
= X
j
, com j < i, ento a substituio de X
j
pelas suas
respectivas produes, e assim sucessivamente, at um mximo de i j vezes, resulta
sempre em
k
= X
s
, s i. Para facilitar a manipulao, o caso s = i representado
separadamente dos demais casos em que k > i.
O passo (6) visa eliminar recurses diretas esquerda nas produes de X
i
. Assim,
aps a aplicao deste passo, todas as produes de X
i
iniciam-se exclusivamente com
smbolos terminais ou no-terminais de ordem j > i. Repetindo-se os passos (5) e (6)
sucessivamente para i = 1, 2, . . . , p, obtm-se G

isenta de recurses esquerda. Note-se,


4 Linguagens Livres de Contexto 215
como conseqncia da aplicao deste algoritmo, que todas as produes de X
p
se iniciam
exclusivamente com smbolos terminais.
Para nalizar, observe-se que a introduo dos no-terminais X

i
, e suas respectivas
produes, no passo (6) no prejudica a inteno de eliminao das recurses esquerda.
Isso se deve aos seguintes motivos:
1. Como
j
= , 1 j n, pois no se admitem produes em vazio em G, X

i
nunca
poder comparecer como smbolo inicial de
j
X

i
alternativas de substituio
de X
i
, prevenindo dessa maneira a eventualidade de introduo de recurses
indiretas esquerda.
2. Como
j
= , 1 j m, pois por hiptese no se admitem produes unitrias
em G, X

i
nunca poder comparecer como smbolo inicial de
j
X

i
alternativas
de substituio de X

i
, prevenindo dessa maneira a eventualidade de introduo
de recurses diretas direita.
Exemplo 4.24 Considere-se a gramtica G = (V, , P, S) com N = {E, T, F}, sendo P o conjunto
apresentado abaixo:
{E E + T | T,
T T F | F,
F (E) | a}
Considere-se a ordenao E < T < F para os no-terminais de G. A aplicao do Algoritmo
4.7 resulta na gramtica G

com o seguinte conjunto de produes:


{E T | TE

,
E

+T | +TE

,
T F | FT

,
T

F | FT

,
F (E) | a}
2
Exemplo 4.25 Considere-se o conjunto abaixo de regras de uma gramtica G, e a ordenao de seus
no-terminais X1 < X2 < X3 < X4:
{X1 X2X3 | a,
X2 X3X2 | X2b | b,
X3 X4X1 | c,
X4 X1X3 | X3e | d}
As produes de X1 claramente satisfazem aos requisitos dos passos (5) e (6) do Algoritmo 4.7.
As produes de X2 satisfazem ao passo (5), porm no ao passo (6). Assim, elas so substitudas
por:
X2 X3X2 | b | X3X2X

2
| bX

2
X

2
bX

2
| b
Tambm as produes do no-terminal X3 satisfazem s exigncias dos passos (5) e (6), mas
o mesmo no ocorre com as produes de X4, mais especicamente com a produo X4 X1X3,
216 Linguagens Formais - Teoria, Modelagem e Implementao
que deve ser alterada conforme o determinado pelo passo (5). Substituindo-se X1 pela sua denio,
obtm-se:
X4 X2X3X3 | aX3 | X3e | d
Prosseguindo, substitui-se X2 pela sua denio, obtendo-se:
X4 X3X2X3X3 | bX3X3 | X3X2X

2
X3X3 | bX

2
X3X3 | aX3 | X3e | d
Finalmente, o passo (5) completado substituindo-se X3 pela sua denio, obtendo-se:
X4 X4X1X2X3X3 | cX2X3X3 | bX3X3 | X4X1X2X

2
X3X3 |
cX2X

2
X3X3 | bX

2
X3X3 | aX3 | X4X1e | ce | d
Prosseguindo com a aplicao do passo (5) s produes de X4, obtm-se:
X4 cX2X3X3 | bX3X3 | cX2X

2
X3X3 | bX

2
X3X3 | aX3 | ce | d | cX2X3X3X

4
| bX3X3X

4
|
cX2X

2
X3X3X

4
| bX

2
X3X3X

4
| aX3X

4
| ceX

4
| dX

4
X

4
X1X2X3X3 | X1X2X

2
X3X3 | X1e | X1X2X3X3X

4
| X1X2X

2
X3X3X

4
| X1eX

4
Como resultado nal da aplicao do algoritmo de eliminao de recurses esquerda em G,
obtm-se G

, cujas produes formam o conjunto seguinte:


{X1 X2X3 | a,
X2 X3X2 | b | X3X2X

2
| bX

2
,
X

2
bX

2
| b,
X3 X4X1 | c,
X4 cX2X3X3 | bX3X3 | cX2X

2
X3X3 | bX

2
X3X3 | aX3 | ce | d | cX2X3X3X

4
| bX3X3X

4
|
cX2X

2
X3X3X

4
| bX

2
X3X3X

4
| aX3X

4
| ceX

4
| dX

4
,
X

4
X1X2X3X3 | X1X2X

2
X3X3 | X1e | X1X2X3X3X

4
| X1X2X

2
X3X3X

4
| X1eX

4
}
Note-se que, em G

, todas as produes referentes a cada no-terminal Xi N

se iniciam,
conforme o esperado, com , ou Xj N, j > i . Note-se ainda que todas as produes de X4
so iniciadas exclusivamente com . 2
Tendo visto que toda gramtica livre de contexto pode ser transformada em uma
gramtica equivalente, isenta de recurses esquerda, pode-se passar nalmente ao algo-
ritmo/teorema que possibilita a normalizao em relao Forma Normal de Greibach.
Teorema 4.10 (Forma Normal de Greibach) Toda linguagem livre de contexto L
pode ser gerada por uma gramtica livre de contexto na Forma Normal de Greibach.
Justicativa Pode ser desenvolvida a partir do Algoritmo 4.8, que permite a conver-
so de uma gramtica livre de contexto qualquer em outra equivalente na Forma Normal
de Greibach.
Algoritmo 4.8 (Forma Normal de Greibach) Obteno de uma gramtica livre de
contexto na Forma Normal de Greibach.
Entrada: uma gramtica livre de contexto G = (V, , P, S) isenta de produes
unitrias, smbolos inacessveis, smbolos inteis, produes em vazio e recurses
esquerda, tal que L = L(G).
4 Linguagens Livres de Contexto 217
Sada: uma gramtica livre de contexto G

= (V

, , P

, S) na Forma Normal de
Greibach, tal que L(G) = L(G

).
Mtodo:
1. Considere-se uma ordenao dos smbolos X
i
N, tal que, se X
i

X
j
, X
j
N e V

, ento j > i. Seja, portanto, X


1
< X
2
< . . . < X
r
.
2. N

N;
3. P

{X
r
| X
r
P};
4. i r 1;
5. Se i = 0 ento desviar para (6). Caso contrrio:
a) Considerem-se todas as produes de X
i
iniciadas com X
j
, j > i.
Substitua-se X
j
pela sua denio e repita-se este passo at que todas
as alternativas de substituio para X
i
sejam iniciadas apenas com
smbolos terminais;
b) i i 1;
c) Desviar para (5);
6. Para cada produo da forma:
X
i
A
2
. . . A
k
, com , A
j
V, 2 j k
Se A
j
, substitua-se A
j
por um novo no-terminal A

j
e faa-se N

N
{A

j
}, obtendo-se assim X
i
B
2
B
3
. . . B
k
, com B
j
{A
j
, A

j
}, 2 j k.
Incluir em P

todas as produes assim obtidas.


7. Para cada novo smbolo no-terminal A

j
introduzido no passo anterior, criar
uma nova produo A

j
A
j
e fazer P

P {A

j
A
j
}.
Com relao ao passo (1), note-se que a condio de que G seja no-recursiva
esquerda garante que seja sempre possvel estabelecer uma relao de ordem entre os
elementos de N. Em particular, pode-se utilizar a prpria relao de ordem obtida da
aplicao do algoritmo de eliminao de recurses esquerda. Observe-se, no passo (3),
que inicia necessariamente com um smbolo terminal.
Quanto aos novos smbolos no-terminais X

i
criados pela aplicao do referido
mtodo, pode-se, com segurana, atribuir aos mesmos os ndices mais baixos nesta relao
de ordem, situando-os antes dos demais smbolos X
i
e com qualquer relao mtua de
ordem (por exemplo, X

1
< . . . < X

q
< X
1
< . . . < X
p
) . Isso pode ser feito uma vez
que, por construo, todas as produes de X

i
so iniciadas exclusivamente com
ou X
i
N.
No passo (5), cada produo de cada no-terminal X
i
processada atravs de
substituies sucessivas at que ela se inicie exclusivamente com smbolos terminais.
218 Linguagens Formais - Teoria, Modelagem e Implementao
Como h r no-terminais em N, a obteno desta condio para X
i
N, 1 i r,
exigir no mximo r i substituies sucessivas. Ao trmino deste passo, todas as
alternativas de substituio para X
i
sero do tipo , e V

.
Finalmente, para fazer com que pertena ao conjunto N

, conforme exigido pela


Forma Normal de Greibach, basta criar novos smbolos no-terminais e substitu-los pelos
respectivos smbolos terminais, onde quer que estes apaream em V

passo (6).
Naturalmente, novas produes tambm devem ser incorporadas a P

passo (7).
Exemplo 4.26 Retornando ao Exemplo 4.23, anteriormente apresentado:
{E T | TE

,
E

+T | +TE

,
T F | FT

,
T

F | FT

,
F (E) | a}
Considerando-se a relao de ordem E

< T

< E < T < F, obtm-se:


F (E) | a
T (E) | a | (E)T

| aT

E (E) | a | (E)T

| aT

| (E)E

| aE

| (E)T

| aT

F | FT

+T | +TE

Para nalizar, basta criar o no-terminal )

e introduzir a produo )

). A gramtica
resultante ser:
{F (E)

| a,
T (E)

| a | (E)

| aT

,
E (E)

| a | (E)

| aT

| (E)

| aE

| (E)

| aT

,
T

F | FT

,
E

+T | +TE

,
)

)}
2
Exemplo 4.27 No que se refere ao Exemplo 4.25, a obteno da correspondente Forma Normal de
Greibach, com base na relao de ordem X

2
< X

4
< X1 < X2 < X3 < X4, passa, inicialmente, pela
substituio da denio de X4 em X3, de X3 em X2, de X2 em X1 e, nalmente, de X1 em X

4
.
exceo deste ltimo passo, omitido para no estender demais o exemplo, o resultado apresentado
a seguir. Observe-se ainda a criao do novo smbolo no-terminal e

, com todas as ocorrncias


do smbolo e substitudas por e

, e a adio ao conjunto de produes da regra e

e.
{X1 cX2X3X3X1X2X3 | bX3X3X1X2X3 | cX2X

2
X3X3X1X2X3 |
bX

2
X3X3X1X2X3 | aX3X1X2X3 | ce

X1X2X3 | dX1X2X3 |
cX

2
X3X3X

4
X1X2X3 | bX3X3X

4
X1X2X3 | cX2X

2
X3X3X

4
X1X2X3 |
bX

2
X3X3X

4
X1X2X3 | aX3X

4
X1X2X3 | ce

4
X1X2X3 |
dX

4
X1X2X3 | cX2X3 | cX2X3X3X1X2X

2
X3 | bX3X3X1X2X

2
X3
cX2X

2
X3X3X1X2X

2
X3 | bX

2
X3X3X1X2X

2
X3 | aX3X1X2X

2
X3 |
4 Linguagens Livres de Contexto 219
ce

X1X2X

2
X3 | dX1X2X

2
X3 | cX2X3X3X

4
X1X2X

2
X3 |
bX3X3X

4
X1X2X

2
X3 | cX2X

2
X3X3X

4
X1X2X

2
X3 |
bX

2
X3X3X

4
X1X2X

2
X3 | aX3X

4
X1X2X

2
X3 | ce

4
X1X2X

2
X3 |
dX

4
X1X2X

2
X3 | cX2X

2
X3 | bX

2
X3 | bX3 | a,
X2 cX2X3X3X1X2 | bX3X3X1X2 | cX2X

2
X3X3X1X2 |
bX

2
X3X3X1X2 | aX3X1X2 | ce

X1X2 | dX1X2 |
cX2X3X3X

4
X1X2 | bX3X3X

4
X1X2 | cX2X

2
X3X3X

4
X1X2 |
bX

2
X3X3X

4
X1X2 | aX3X

4
X1X2 | ce

4
X1X2 | dX

4
X1X2 | cX2 |
cX2X3X3X1X2X

2
| bX3X3X1X2X

2
| cX2X

2
X3X3X1X2X

2
|
bX

2
X3X3X1X2X

2
| aX3X1X2X

2
| ce

X1X2X

2
| dX1X2X

2
|
cX2X3X3X

4
X1X2X

2
| bX3X3X

4
X1X2X

2
| cX2X

2
X3X3X

4
X1X2X

2
|
bX

2
X3X3X

4
X1X2X

2
| aX3X

4
X1X2X

2
| ce

4
X1X2X

2
|
dX

4
X1X2X

2
| cX2X

2
| bX

2
| b,
X

2
bX

2
| b,
X3 cX2X3X3X1 | bX3X3X1 | cX2X

2
X3X3X1 | bX

2
X3X3X1 | aX3X1 |
ce

X1 | dX1 | cX2X3X3X

4
X1 | bX3X3X

4
X1 | cX2X

2
X3X3X

4
X1 |
bX

2
X3X3X

4
X1 | aX3X

4
X1 | ce

4
X1 | dX

4
X1 | c,
X4 cX2X3X3 | bX3X3 | cX2X

2
X3X3 | bX

2
X3X3 | aX3 | ce

| d |
cX2X3X3X

4
| bX3X3X

4
| cX2X

2
X3X3X

4
|
bX

2
X3X3X

4
| aX3X

4
| ce

4
| dX

4
,
X

4
X1X2X3X3 | X1X2X

2
X3X3 | X1e

| X1X2X3X3X

4
| X1X2X

2
X3X3X

4
| X1e

4
,
e

e}
2
4.7 Autmatos de Pilha
Nesta seo sero apresentados os conceitos bsicos ligados representao e interpre-
tao dos autmatos de pilha, sendo o principal a denio de dois modelos de aceitao
distintos, um baseado em estados nais e outro em pilha vazia.
A seguir, mostrada a equivalncia da classe de linguagens aceita pelos autmatos
de pilha com critrio de aceitao baseado em estados nais, com a classe de linguagens
aceita pelos autmatos de pilha cujo critrio baseado em pilha vazia, evidenciando
assim a equipotncia dos modelos.
A equivalncia da classe de linguagens aceita pelos autmatos de pilha com a classe
de linguagens gerada por gramticas do tipo 2 as linguagens livres de contexto
ser discutida na Seo 4.8. Por ltimo, sero efetuadas algumas consideraes sobre a
aplicao e a importncia prtica da teoria dos autmatos de pilha para o prossional
de computao.
Os autmatos de pilha constituem a segunda instncia, em uma escala de com-
plexidade crescente, do modelo genrico de reconhecedor introduzido na Seo 2.5,
prestando-se ao reconhecimento de linguagens livres de contexto. Diferentemente dos
autmatos nitos, que no se utilizam da memria auxiliar prevista no modelo genrico,
os autmatos de pilha tm o seu poder de reconhecimento estendido, quando compa-
rado ao dos autmatos nitos, justamente pela disponibilidade e pela utilizao de uma
memria auxiliar organizada na forma de uma pilha.
220 Linguagens Formais - Teoria, Modelagem e Implementao
A pilha de um autmato de pilha pode ser entendida como uma estrutura de dados,
de capacidade ilimitada, na qual a mquina de estados capaz de armazenar, consultar
e remover smbolos de um alfabeto prprio, denominado alfabeto de pilha, segundo a
conveno usual para estruturas deste tipo (LIFO last-in-rst-out). Quanto aos seus
demais componentes e caractersticas, o autmato de pilha se assemelha ao autmato
nito anteriormente estudado.
Formalmente, um autmato de pilha pode ser denido como uma stupla M:
M = (Q, , , , q
0
, Z
0
, F)
onde:
Q um conjunto nito de estados;
um alfabeto (nito e no-vazio) de entrada;
um alfabeto (nito e no-vazio) de pilha;
uma funo de transio Q ( {}) 2
Q

;
q
0
o estado inicial de M, q
0
Q;
Z
0
o smbolo inicial da pilha, Z
0
;
F o conjunto de estados nais de M, F Q.
Dos sete elementos que compem este sistema formal, apenas trs merecem expli-
cao adicional , e Z
0
, uma vez que os demais esto em correspondncia direta
com o que j foi estudado para o caso dos autmatos nitos.
Note-se, inicialmente, a presena de um alfabeto de pilha e de um smbolo inicial
de pilha Z
0
. O alfabeto de pilha especica os smbolos que podem ser armazenados na
pilha. Por conveno, um desses smbolos, denotado Z
0
, representa o contedo inicial
da pilha toda vez que o autmato de pilha principia o reconhecimento de uma nova
sentena. Ao longo de sua operao, elementos de so acrescentados e/ou removidos
da pilha, e seu contedo total pode ser interpretado, em um dado instante, como sendo
um elemento de

. Por conveno, cadeias de que representam o contedo da pilha em


um determinado instante so interpretadas considerando-se os smbolos mais esquerda
da cadeia no topo da pilha, e os smbolos mais direita da cadeia no fundo da pilha.
Observe-se que, a partir do formato geral apresentado acima para a funo de
transio em autmatos de pilha no-determinsticos e com transies em vazio,
possvel extrair os seguintes casos particulares, equivalentes aos estudados do Captulo
3, para os autmatos nitos:
Autmato de pilha determinstico sem transies em vazio:
: Q Q

Autmato de pilha determinstico com transies em vazio:


: Q ( {}) Q

Autmato de pilha no-determinstico sem transies em vazio:


Q 2
Q

Autmato de pilha no-determinstico com transies em vazio:


Q ( {}) 2
Q

Diferentemente do Captulo 3, em que os modelos de autmato nito foram consi-


derados em escala crescente de complexidade, os autmatos de pilha sero considerados,
no presente captulo, a partir de seu modelo mais geral, cando para o leitor a tarefa
de interpretar e eventualmente utilizar, onde adequado, os modelos mais restritos pre-
4 Linguagens Livres de Contexto 221
viamente relacionados, sem que isso implique a perda de validade dos conceitos e dos
resultados a seguir apresentados.
Exemplo 4.28 Considere-se = {1, 2, 3, 4}. A cadeia 2144, por exemplo, representa o
contedo da pilha conforme ilustrado na Figura 4.5. Note-se que 2 se encontra no topo da pilha e
que 4 se encontra no fundo da mesma:
Figura 4.5: Pilha com ponteiro de topo
2
Os dispositivos que fazem uso de pilha costumam denir a forma de operao da
mesma como uma das seguintes possibilidades:
Pilha Stack: alm das operaes de empilhamento e desempilhamento de ele-
mentos no topo da pilha (push e pop), permite que os demais elementos da
mesma sejam endereados diretamente, somente para consulta;
Pilha Pushdown: permite o acesso apenas ao elemento armazenado no topo
da pilha, atravs das operaes de empilhamento e desempilhamento (push e
pop). No permite o endereamento dos demais elementos da pilha.
A denio de autmato de pilha neste texto considera que a sua memria auxiliar
seja uma pilha pushdown.
A congurao de um autmato de pilha denida pelo seu estado corrente,
pela parte da cadeia de entrada ainda no analisada e pelo contedo da pilha. A con-
gurao inicial de um autmato de pilha aquela em que o autmato se encontra
no estado inicial q
0
, o cursor se encontra posicionado sob a clula mais esquerda na ta
de entrada e o contedo da pilha Z
0
. Algebricamente, a congurao de um autmato
de pilha pode ser representada como uma tripla:
(q, , ), com q Q,

A congurao inicial para o reconhecimento de uma cadeia w representada como


(q
0
, w, Z
0
).
As possibilidades de movimentao de um autmato de pilha em uma dada con-
gurao so determinadas a partir de trs informaes: o seu estado corrente, o prximo
smbolo presente na cadeia de entrada e o smbolo armazenado no topo da pilha. Observe-
se, pela denio da funo , a possibilidade de movimentaes em vazio, sem consumo
de smbolos da ta de entrada, e tambm a possibilidade de serem especicadas transies
no-determinsticas. Note-se tambm a obrigatoriedade, imposta por essa formulao, de
se consultar o smbolo presente no topo da pilha em toda e qualquer transio efetuada
pelo autmato.
Aps a aplicao de uma transio, o cursor de leitura sofre um deslocamento de
uma posio para a direita, e o smbolo presente no topo da pilha removido, sendo
substitudo pela cadeia de smbolos especicada no lado direito da transio. No caso de
222 Linguagens Formais - Teoria, Modelagem e Implementao
transies em vazio, em que no h consulta de smbolo na ta de entrada, a posio do
cursor permanece inalterada aps a sua aplicao.
Desejando-se efetuar alguma transio de forma independente do contedo do topo
da pilha, torna-se necessrio especicar para cada elemento do alfabeto de pilha uma
transio que efetue o mesmo tratamento do smbolo de entrada, removendo e reinserindo
o mesmo smbolo da pilha, simulando assim uma transio independente do contedo da
pilha.
Para cada tripla (q, , ) pertencente ao domnio da funo , o elemento (q, , )
pode conter zero, um ou mais elementos de Q

. Considere-se inicialmente o caso em


que = . Havendo zero elementos em (q, , ), isso indica que no h possibilidade de
movimentao a partir da congurao considerada. Havendo um nico elemento, isso
signica que h apenas uma possibilidade de movimentao e, portanto, a transio
determinstica. Quando todas as transies de um autmato de pilha so determinsticas,
diz-se que o mesmo determinstico.
Nos casos em que h mais de um elemento em (q, , ), isso signica que h mais
de uma opo de movimentao a partir desta congurao, e ento a transio dita
no-determinstica. Havendo pelo menos uma transio no-determinstica, diz-se que o
autmato de pilha no-determinstico.
Autmatos de pilha no-determinsticos e com transies em vazio apresentam um
comportamento dinmico determinstico quando as duas seguintes condies forem si-
multaneamente vericadas:
1. q Q, , se |(, q, , )| 1, ento |(q, , )| = 0, ;
2. q Q, , {}, |(q, , ))| 1.
A primeira condio estabelece que no deve existir, para uma mesma combinao
de estado corrente e smbolo no topo da pilha, a opo de escolha entre uma movimen-
tao com consumo de smbolo na cadeia de entrada e outra sem consumo de smbolo
(transio em vazio). A segunda condio estabelece que, para cada congurao, seja
ela qual for, no deve haver mais de uma opo distinta de movimentao.
Surge, neste ponto, um aspecto de grande relevncia para o estudo dos autmatos
de pilha e das linguagens livres de contexto. Diferentemente do que foi visto para o
caso dos autmatos nitos, no que se refere equivalncia dos modelos determinstico
e no-determinstico quanto classe de linguagens que so capazes de reconhecer, os
autmatos de pilha no apresentam correspondente equivalncia. Conforme ser visto
mais adiante, os autmatos de pilha determinsticos so capazes de reconhecer apenas
um subconjunto das linguagens livres de contexto. Por esse motivo, exceto por ressalvas
em sentido contrrio, os autmatos de pilha mencionados daqui em diante sero no-
determinsticos.
Estando o autmato de pilha em uma congurao (q
i
, , ), com q
i
Q, ,

, e

, sua movimentao a partir dessa congurao para a seguinte,


como decorrncia da aplicao de uma transio (q
i
, , ) = (q
j
, ), com

,
representada por:
(q
i
, , ) (q
j
, , )
A aplicao de transies em vazio, em que no h consumo de smbolo, repre-
sentada de maneira similar atravs de:
(q
i
, , ) (q
j
, , )
4 Linguagens Livres de Contexto 223
Da mesma forma que no caso dos autmatos nitos, a aplicao de zero ou mais
transies entre duas conguraes quaisquer representada atravs do smbolo

, e a
aplicao de no mnimo uma transio, por intermdio do smbolo
+
.
A congurao nal de um autmato de pilha costuma ser caracterizada de
duas maneiras distintas, porm equivalentes. Na primeira delas, exige-se o esgotamento
da cadeia de entrada e tambm que o autmato atinja um estado nal. Nesta carac-
terizao, o contedo nal da pilha irrelevante. Na segunda caracterizao, exige-se
o esgotamento da cadeia de entrada e tambm que a pilha tenha sido completamente
esvaziada, no importando que o estado atingido seja nal ou no-nal.
Dependendo do tipo de denio adotada para caracterizar a congurao nal de
um autmato de pilha, possvel denir, tambm de duas maneiras distintas, a linguagem
aceita pelo dispositivo.
A linguagem aceita por um autmato de pilha M, com base no critrio de estado
nal, denotada L(M), denida como sendo o conjunto das sentenas w que satisfazem
condio:
(q
0
, w, Z
0
)

(q, , ), q F,

Analogamente, a linguagem aceita por um autmato de pilha M, com base no cri-


trio de pilha vazia, denotada V(M), denida como sendo o conjunto das sentenas
w que satisfazem condio:
(q
0
, w, Z
0
)

(q, , ), q Q
Assim como no caso dos autmatos nitos, convm lembrar que uma dada cadeia
w aceita por um autmato de pilha se e apenas se o autmato for capaz de atingir
uma congurao nal, conforme o critrio estabelecido para o reconhecedor, a partir de
sua congurao inicial. No caso de autmatos de pilha determinsticos, a seqncia de
movimentos que os conduzem de uma congurao a outra, se existir, deve ser nica.
Sendo possvel atingir alguma congurao nal, diz-se que a cadeia pertence linguagem
denida pelo autmato. Caso contrrio, que ela no pertence linguagem aceita pelo
autmato de pilha.
Autmatos de pilha no-determinsticos, ao contrrio, necessitam, no pior caso,
percorrer exaustivamente todas as seqncias possveis de conguraes, tendo a cadeia
de entrada w como referncia, at que seja possvel concluir pela sua aceitao ou rejeio.
O simples fato de no se conseguir atingir uma congurao nal ao trmino de uma srie
de movimentaes s poder ser considerado como indicativo da rejeio da cadeia de
entrada se no houver novas seqncias de conguraes a serem experimentadas.
Com o intuito de facilitar a leitura do texto no restante deste captulo, as transies
de um autmato de pilha sero denotadas como:
(q
i
, , X) (q
j
, )
indicando, com isso, o par ordenado ((q
i
, , X), (q
j
, )) pertencente funo , ou, sim-
plesmente, (q
i
, , X) = (q
j
, ).
Exemplo 4.29 Seja M1 o autmato de pilha determinstico abaixo discriminado, cujo critrio de
aceitao de sentenas baseado no esvaziamento da pilha.
Q = {q0, q1}
= {a, b, c}
= {Z0, C}
224 Linguagens Formais - Teoria, Modelagem e Implementao
= {(q0, a, Z0) {(q0, CCZ0)},
(q0, a, C) {(q0, CCC)},
(q0, b, Z0) {(q1, Z0)},
(q0, b, C) {(q1, C)},
(q1, c, C) {(q1, )},
(q1, , Z0) {(q1, )}}
F =
Deve-se notar, em primeiro lugar, que o determinismo deste autmato decorre do fato de que
a funo exibe no mximo um elemento para cada combinao possvel de estado, smbolo de
entrada e smbolo no topo da pilha, e tambm porque inexistem transies em vazio que se reram
a pares de estado e smbolo no topo da pilha considerados nas transies no-vazias: note-se que a
nica transio em vazio deste autmato ocorre no estado q1, com um smbolo do alfabeto de pilha
(Z0) diferente do utilizado na transio no-vazia desse mesmo estado (C).
A linguagem denida por M1 :
V1(M1) = {w

| (q0, w, Z0)

(q, , ), q Q}
Inspecione-se agora as produes deste autmato com o intuito de determinar a linguagem por
ele aceita. Partindo-se do estado inicial, os nicos smbolos de entrada admitidos so a e b. Para
cada smbolo a consumido na entrada, a pilha acrescida da cadeia CC em seu topo, preservando-
se o restante de seu contedo. Ao ocorrer uma transio com o smbolo de entrada b, h apenas
uma mudana de estado, no havendo qualquer alterao no contedo da pilha. Nesse novo estado,
note-se que so especicadas apenas transies envolvendo o smbolo de entrada c. Para cada c
consumido, um smbolo C retirado do topo da pilha, at que reste apenas o smbolo inicial da
pilha, o qual removido atravs de uma transio em vazio.
Observe-se que o conjunto de produes assim formulado impe que as sentenas aceitas pelo
autmato sejam construdas de modo tal que, para cada smbolo a previamente consumido no incio
da cadeia, dois smbolos c sejam necessariamente colocados em correspondncia com ele no nal
da cadeia de entrada. Note-se ainda que a seqncia de smbolos a separada da seqncia de
smbolos c por exatamente um smbolo b. Observe-se que o papel desempenhado pela pilha, neste
caso, consiste em manter a memria da quantidade de smbolos a que foram localizados no incio
da cadeia, possibilitando o reconhecimento futuro da correspondente quantidade de smbolos c ao
trmino da cadeia de entrada.
Como conseqncia, o conjunto de sentenas capazes de conduzir este autmato a congu-
raes nais, com base no critrio de pilha vazia, e portanto a linguagem por ele denida, o
seguinte:
V1(M1) = {a
i
bc
2i
| i 0}
Considerem-se algumas sentenas desta linguagem e a correspondente seqncia de movimen-
tos executada pelo autmato durante o seu reconhecimento:
1. Sentena: b
Movimentos: (q0, b, Z0) (q1, , Z0) (q1, , )
2. Sentena: abcc
Movimentos: (q0, abcc, Z0) (q0, bcc, CCZ0) (q1, cc, CCZ0) (q1, c, CZ0)
(q1, , Z0) (q1, , )
3. Sentena: aabcccc
Movimentos: (q0, aabcccc, Z0) (q0, abcccc, CCZ0) (q0, bcccc, CCCCZ0)
(q1, cccc, CCCCZ0) (q1, ccc, CCCZ0) (q1, cc, CCZ0)
(q1, c, CZ0) (q1, , Z0) (q1, , )
Tome-se agora como exemplo duas sentenas que no pertencem linguagem denida por este
autmato, e as correspondentes seqncias de conguraes:
1. Sentena: abccc
Movimentos: (q0, abccc, Z0) (q0, bccc, CCZ0) (q1, ccc, CCZ0) (q1, cc, CZ0)
(q1, c, Z0)
4 Linguagens Livres de Contexto 225
2. Sentena: aabccc
Movimentos: (q0, aabccc, Z0) (q0, abccc, CCZ0) (q0, bccc, CCCCZ0)
(q1, ccc, CCCCZ0) (q1, cc, CCCZ0) (q1, c, CCZ0) (q1, , CZ0)
No primeiro caso, a sentena abccc contm smbolos c em excesso, e por esse motivo ela
rejeitada ao ser atingida a congurao (q1, c, Z0). No segundo caso, a sentena aabccc apresenta
quantidade insuciente de smbolos c, e devido a isso ela rejeitada na congurao (q1, , CZ0).
Observe-se que ambas as conguraes no admitem evoluo, conforme a especicao da funo
, e alm disso elas tambm no so conguraes nais do autmato. 2
Convm, neste ponto, introduzir uma extenso na nota dos Diagramas de Estado
estudados para o caso dos autmatos nitos, com o intuito de permitir a representao
grca tambm dos autmatos de pilha. Diferentemente dos Diagramas de Estado de-
nidos para os autmatos nitos, os arcos entre dois estados p e q so rotulados com
cadeias da forma:
(, Z)/, com , Z e

para cada produo (p, , Z) = (q, ).


Exemplo 4.30 Considere-se o autmato de pilha no-determinstico M2 a seguir apresentado, cujo
critrio de aceitao de sentenas baseado em estado nal.
Q = {q0, q1, q2, q3, q4}
= {a, c}
= {Z0, C}
= {(q0, a, Z0) {(q1, CCZ0), (q2, CZ0)},
(q1, a, C) {(q1, CCC)},
(q1, c, C) {(q3, )},
(q2, a, C) {(q2, CC)},
(q2, c, C) {(q3, )},
(q3, c, C) {(q3, )},
(q3, , Z0) {(q4, Z0)}}
F = {q4}
O no-determinismo deste autmato decorre do fato de que, na congurao inicial, existem
duas possibilidades de movimentao quando o smbolo presente na cadeia de entrada for a. O
fato de o critrio de aceitao ser baseado em estado nal no tem qualquer vnculo com o no-
determinismo deste autmato, tendo sido introduzido apenas com o intuito de ilustrar a aplicao do
critrio. Conforme mostrado nos Teoremas 4.11 e 4.12, o critrio de aceitao pode ser facilmente
alterado sem prejuzo da linguagem sendo denida. No obstante, o no-determinismo essencial
para a aceitao da linguagem denida por este autmato.
A linguagem denida por M2 :
L2(M2) = {w

| (q0, w, Z0)

(q4, , )}
A Figura 4.6 ilustra o Diagrama de Estados para o autmato M2:
226 Linguagens Formais - Teoria, Modelagem e Implementao
q
0
q
1
q
2
q
3
q
4
(a, C)/CCC
(a, C)/CC
(a, Z
0
)/CCZ
0
(a, Z
0
)/CZ
0
(c, C)/
(, Z
0
)/Z
0
(c, C)/
(c, C)/
Figura 4.6: Autmato de pilha do Exemplo 4.30
A determinao da linguagem aceita por este autmato pode ser feita analisando-se separada-
mente a linguagem aceita a partir de cada um dos dois ramos em que o reconhecimento se subdivide
aps o no-determinismo inicial.
Para tanto, basta notar que o ramo superior deste autmato (estados q0 e q1) acrescenta
dois smbolos C pilha para cada smbolo a localizado na cadeia de entrada. O ramo inferior
(estados q0 e q2), por sua vez, acrescenta apenas um smbolo C pilha para cada smbolo a
consumido. Da para a frente, apenas smbolos c da cadeia de entrada sero considerados. Para
cada c consumido, note-se que exatamente um smbolo C removido da pilha. Finalmente, no
estado q3, caso todos os smbolos C da pilha j tenham sido eliminados, possvel transitar em
vazio para o estado nal q4.
Como concluso, tem-se que a congurao nal ser atingida apenas para os casos de cadeias
em que a quantidade de smbolos c seja igual quantidade de smbolos a que a antecede, ou
ento exatamente igual ao dobro da quantidade de smbolos a. Formalmente,
L(M2) = {a
i
c
j
| i 1 e (j = i ou j = 2i )}
Observe-se que no h, a priori, como o autmato descobrir se ele deve estabelecer a cor-
respondncia de cada a encontrado com apenas um ou ento dois c subseqentes. Por esse
motivo, o no-determinismo inicial oferece duas alternativas, cada qual associada a uma hiptese
sobre a estrutura da cadeia a ser analisada. Havendo fracasso no reconhecimento iniciado por uma
das alternativas, deve-se tentar a outra. Persistindo o fracasso, pode-se ento dizer que a cadeia no
pertence linguagem denida.
A operao deste autmato exemplicada a seguir atravs do reconhecimento das seguintes
sentenas:
1. Sentena: aacc
Movimentos: (q0, aacc, Z0) (q2, acc, CZ0) (q2, cc, CCZ0) (q3, c, CZ0) (q3, , Z0)
(q4, , Z0)
2. Sentena: aacccc
Movimentos: (q0, aacccc, Z0) (q1, acccc, CCZ0) (q1, cccc, CCCCZ0) (q3, ccc, CCCZ0)
(q3, cc, CCZ0) (q3, c, CZ0) (q3, , Z0) (q4, , Z0)
Note-se que o reconhecimento, em ambos os casos, pde ser bem-sucedido j na primeira
seqncia de movimentos, uma vez que a escolha da transio a ser aplicada na congurao inicial
foi corretamente adivinhada nas duas situaes. No entanto, a escolha da transio a ser aplicada
na congurao inicial do primeiro caso poderia ter sido diferente da apresentada, e neste caso
ocorreria o seguinte:
1. Sentena: aacc
Movimentos: (q0, aacc, Z0) (q1, acc, CCZ0) (q1, cc, CCCCZ0) (q3, c, CCCZ0)
(q3, , CCZ0)
4 Linguagens Livres de Contexto 227
Como se pode perceber, atinge-se neste caso uma congurao no-nal, em que no h
possibilidade de evoluo. Como conseqncia, por se tratar de um autmato no-determinstico,
dever-se-ia retornar congurao inicial e efetuar outra seqncia de movimentaes, adotando-se
a segunda alternativa, em lugar da primeira, para o caso da transio no-determinstica (ou seja,
exatamente o caso correto apresentado anteriormente).
Esquematicamente, as vrias seqncias de conguraes que podem ser percorridas em de-
corrncia da existncia de transies no-determinsticas podem ser representadas gracamente na
forma de uma rvore, conforme ilustrado na Figura 4.7:
Figura 4.7: Aceitao em autmato de pilha no-
determinstico do Exemplo 4.30
Considere-se, agora, o caso de uma cadeia aac que no pertena linguagem denida
por este autmato. Conforme ilustrado na Figura 4.8, a rejeio desta cadeia ocorre apenas aps
o fracasso do reconhecimento em todas as seqncias possveis de movimentao (duas, para este
autmato):
Figura 4.8: Rejeio em autmato de pilha no-
determinstico do Exemplo 4.30
2
Para nalizar este item, cumpre notar que, de acordo com a denio, os autmatos
de pilha so capazes de efetuar movimentos independentemente da existncia de smbolos
na ta de entrada, atravs das chamadas transies em vazio, ao passo que o esvaziamento
da pilha necessariamente impede qualquer possibilidade de movimentao futura. Ambos
estes fatos sero utilizados em seguida para demonstrar a equivalncia dos critrios de
aceitao por estado nal e por pilha vazia.
228 Linguagens Formais - Teoria, Modelagem e Implementao
A classe de linguagens aceita por autmatos de pilha no-determinsticos com cri-
trio de aceitao baseado em estado nal idntica classe de linguagens aceita por
autmatos de pilha no-determinsticos com critrio de aceitao baseado em pilha vazia.
A importncia desse resultado deve-se liberdade de escolha que ele oferece quando
se pretende demonstrar algum teorema relativo aos autmatos de pilha e s linguagens
livres de contexto, podendo-se optar indistintamente entre um e outro critrio de aceita-
o, sem prejuzo para a sua generalizao.
Em particular, este resultado ser empregado na Seo 4.8 na demonstrao da
equivalncia entre a classe de linguagens aceita pelos autmatos de pilha e a classe das
linguagens livres de contexto. Naquele caso, a opo pelo critrio de aceitao baseado
no esvaziamento da pilha permite uma simplicao signicativa da demonstrao.
Teorema 4.11 (Estado nal pilha vazia) Seja M um autmato de pilha no-
determinstico com critrio de aceitao baseado em estado nal. Ento, possvel
denir um autmato de pilha no-determinstico M

com critrio de aceitao baseado


em pilha vazia, de modo que L(M) = V(M

).
Justicativa O Algorimo 4.9 apresenta um mtodo para se efetuar tal converso.
Algoritmo 4.9 (Estado nal pilha vazia) Obteno de um autmato de pilha ba-
seado em critrio de aceitao de pilha vazia a partir de outro baseado em critrio de
estado nal.
Entrada: um autmato de pilha no-determinstico M = (Q, , , , q
0
, Z
0
, F),
com critrio de aceitao baseado em estado nal.
Sada: um autmato de pilha no-determinstico M

= (Q

, ,

, q

0
, Z

0
, ),
com critrio de aceitao baseado em pilha vazia.
Mtodo:
1. Q

Q {q
v
, q

0
} (supondo-se, sem perda de generalidade, que Q
{q
v
, q

0
} = );
2.

{Z

0
} (supondo-se, sem perda de generalidade, que {Z

0
} = );
3. Funo de transio

:
a)

;
b)

(q

0
, , Z

0
) {(q
0
, Z
0
Z

0
)};
c)

(q, , ) (q, , ), q Q, , ( {});


d)

(q, , )

(q, , ) {(q
v
, )}, q F, ( {Z

0
});
e)

(q
v
, , ) {(q
v
, )}, ( {Z

0
}).
O princpio bsico que justica a formulao acima apresentada consiste em fazer
M

simular M e fazer com que as sentenas que levam M a atingir um estado nal levem
4 Linguagens Livres de Contexto 229
M

a esvaziar a sua pilha. Dessa maneira, se M atingir uma congurao nal, M

tambm a atingir.
No entanto, alguns cuidados especiais devem ser tomados para garantir que no
haja sentenas simultaneamente aceitas por M

e rejeitadas por M. Observe que M

possui dois estados a mais que M, e tambm um elemento a mais no alfabeto de pilha. O
smbolo Z
0
, que o smbolo inicial de pilha em M, inserido na pilha atravs da transio
descrita no passo (3.b) do algoritmo. O estado inicial q

0
foi criado especialmente para
permitir a insero de Z
0
no fundo da pilha logo ao incio do reconhecimento. Depois
disso, as transies descritas no passo (3.c) fazem com que M

simule o comportamento
de M. Note-se que Z

0
, o smbolo inicial de pilha em M

, permanece intacto no fundo da


pilha at que seja atingido algum estado nal de M.
A inteno de se manter Z

0
no fundo da pilha ao longo do reconhecimento dupla.
Por um lado, visa garantir que, na eventualidade de M atingir um estado no-nal
com a sua pilha vazia, no haver risco de a correspondente cadeia ser aceita por M

(obviamente, ela rejeitada por M). Por outro lado, quando M atinge um estado nal,
visa garantir que sempre haver pelo menos um smbolo na pilha, permitindo assim a
transio de M

para o estado nal q


v
, o que feito atravs das transies do passo (3.d)
preciso lembrar que autmatos de pilha dependem da presena de smbolos no topo
da pilha para poderem evoluir em sua congurao.
No estado q
v
a pilha esvaziada, por meio das transies do passo (3.d), sem
consumir smbolos da ta de entrada. Assim, toda e qualquer cadeia que seja totalmente
consumida por M, fazendo com que o mesmo atinja um estado nal ou seja, toda
e qualquer cadeia aceita por M , far com que M

atinja o estado q
v
, tambm com
a cadeia de entrada esgotada, porm com a pilha vazia ou seja, ser aceita por M

.
Logo, M e M

aceitam a mesma linguagem.


Exemplo 4.31 Considere-se o autmato de pilha M:
Q = {q0, q1, q2}
= {a, b, c}
= {Z0, A, B}
= {(q0, a, Z0) {(q0, AZ0)}, (q1, a, A) {(q1, )},
(q0, a, A) {(q0, AA)}, (q1, b, B) {(q1, )},
(q0, a, B) {(q0, AB)}, (q1, , Z0) {(q2, )},
(q0, b, Z0) {(q0, BZ0)}, (q0, b, A) {(q0, BA)},
(q0, b, B) {(q0, BB)}, (q0, c, Z0) {(q2, )},
(q0, c, A) {(q1, A)}, (q0, c, B) {(q1, B)}}
F = {q2}
230 Linguagens Formais - Teoria, Modelagem e Implementao
q
2
q
0
q
1
(a, Z
0
)/AZ
0
, ...
(c, Z
0
)/
(c, B)/B, (c, A)/A
(b, B)/, (a, A)/
(, Z
0
)/
Figura 4.9: Autmato M com critrio de aceitao de es-
tado nal
A Figura 4.9 ilustra M na notao dos Diagramas de Estados. A linguagem denida por ele
{c
R
| {a, b}

}. Aplicando-se o algoritmo de converso do critrio de aceitao, obtm-se o


seguinte autmato M

equivalente, com aceitao baseada no esvaziamento da pilha:


M

= (Q

, ,

, q

0
, Z

0
, )
Q

= {q0, q1, q2, qv , q

0
}

= {Z0, A, B, Z

0
}

= {(q0, a, Z0) {(q0, AZ0)}, (q1, a, A) {(q1, )},


(q0, a, A) {(q0, AA)}, (q1, b, B) {(q1, )},
(q0, a, B) {(q0, AB)}, (q1, , Z0) {(q2, )},
(q0, b, Z0) {(q0, BZ0)}, (q0, b, A) {(q0, BA)},
(q0, b, B) {(q0, BB)}, (q0, c, Z0) {(q2, )},
(q0, c, A) {(q1, A)}, (q0, c, B) {(q1, B)},
(q

0
, , Z

0
) {(q0, Z0Z

0
)},
(q2, , Z

0
) {(qv , )},
(q2, , Z0) {(qv , )},
(q2, , A) {(qv , )},
(q2, , B) {(qv , )},
(qv , , Z

0
) {(qv , )},
(qv , , Z0) {(qv , )},
(qv , , A) {(qv , )},
(qv , , B) {(qv , )}}
4 Linguagens Livres de Contexto 231
q

0
q
0
q
1
q
2
q
v
(a, Z
0
)/AZ
0
, ...
(b, B)/, (a, A)/
(, Z
0
)/, ...
(, Z

0
)/Z
0
Z

0
(c, B)/B, (c, A)/A
(c, Z
0
)/
(, Z
0
)/
(, Z
0
)/, ...
Figura 4.10: Autmato M

equivalente com critrio de acei-


tao de pilha vazia
2
Teorema 4.12 (Estado nal pilha vazia) Seja M um autmato de pilha no-
determinstico com critrio de aceitao baseado em pilha vazia. Ento, possvel de-
nir um autmato de pilha no-determinstico M

com critrio de aceitao baseado em


estado nal, de modo que V(M) = L(M

).
Justicativa O Algorimo 4.10 apresenta um mtodo para se efetuar tal converso.
Algoritmo 4.10 (Estado nal pilha vazia) Obteno de um autmato de pilha
baseado em critrio de aceitao de estado nal a partir de outro baseado em critrio de
pilha vazia.
Entrada: um autmato de pilha no-determinstico M = (Q, , , , q
0
, Z
0
, F),
com critrio de aceitao baseado em pilha vazia.
Sada: um autmato de pilha no-determinstico M

= (Q

, ,

, q

0
, Z

0
, ),
com critrio de aceitao baseado em estado nal.
Mtodo:
1. Q

Q {q
f
, q

0
} (supondo-se, sem perda de generalidade, que Q
{q
f
, q

0
} = );
2.

{Z

0
} (supondo-se, sem perda de generalidade, que {Z

0
} = );
3. Funo de transio

:
a)

;
b)

(q

0
, , Z

0
) {(q
0
, Z
0
Z

0
)};
c)

(q, , ) (q, , ), q Q, , ( {});


d)

(q, , Z

0
) {(q
f
, )}, q Q.
Assim como no caso anterior, o objetivo construir M

capaz de simular o compor-


tamento de M. Alm disso, sempre que M esvaziar a sua pilha, o objetivo fazer com
232 Linguagens Formais - Teoria, Modelagem e Implementao
que M

transite para um estado nal. Dessa maneira, as sentenas que conduzem M a


uma congurao nal causaro o mesmo efeito sobre M

.
A m de detectar o esvaziamento da pilha em M, M

exibe, inserido no fundo de


sua pilha, logo ao incio do reconhecimento, um novo smbolo de pilha Z

0
. A transio
criada no passso (3.b) do algoritmo tem por objetivo inserir na pilha, acima de Z

0
, o
smbolo de pilha inicial de M, permitindo que as transies do passo (3.c) reproduzam o
comportamento de M sobre M

.
Finalmente, estando M

em qualquer estado, a simples presena de Z

0
no topo da
pilha informao suciente para caracterizar o esvaziamento da pilha em M, causando
a transio de M

para o estado nal q


f
. Dessa forma, como se pode perceber intuitiva-
mente, cada congurao nal em M tem a sua congurao correspondente em M

, e
ambos os autmatos de pilha aceitam portanto a mesma linguagem.
Exemplo 4.32 Considere o autmato de pilha da Figura 4.11, cujo critrio de aceitao baseado
em pilha vazia.
q
0
(b, X)/
(a, X)/XX
(a, Z
0
)/X
Figura 4.11: Autmato M com critrio de aceitao de
pilha vazia
A linguagem aceita por este autmato constituda pelas sentenas sobre {a, b} que contm
a mesma quantidade de smbolos a e b e, alm disso, cuja quantidade acumulada de smbolos a seja
sempre maior que a quantidade de smbolos b, contando-se os smbolos que formam a sentena, da
esquerda para a direita. Exemplos de cadeias aceitas so aaababbb, ab e abaababb. Exemplos de
cadeias no aceitas so a, ba, aaabb e abbbbaaa.
Aplicando-se o Algoritmo 4.10 de converso do critrio de aceitao, obtm-se um novo aut-
mato que reconhece a mesma linguagem e cujo critrio baseado em estado nal (Figura 4.12).
q
0
(b, X)/
(a, Z
0
)/X
q

0
(, Z

0
)/Z
0
Z

0
q
f
(, Z

0
)/
Figura 4.12: Autmato M

equivalente com critrio de acei-


tao de estado nal
2
4 Linguagens Livres de Contexto 233
4.8 Equivalncia entre Gramticas Livres de Contexto e
Autmatos de Pilha
Apresentar-se- aqui o resultado terico que estabelece a equivalncia da classe de lin-
guagens aceita pelos autmatos de pilha no-determinsticos com a classe de linguagens
geradas pelas gramticas do tipo 2 as linguagens livres de contexto gerais.
Essa apresentao feita em duas partes. Inicialmente, mostra-se que para qualquer
gramtica livre de contexto possvel denir um autmato de pilha no-determinstico
que reconhece exatamente a mesma linguagem gerada pela gramtica. A seguir, apre-
sentado o resultado inverso, ou seja, de que toda e qualquer linguagem aceita por um
autmato de pilha no-determinstico pode ser gerada por uma gramtica livre de con-
texto.
Teorema 4.13 (Gramtica autmato de pilha) Seja G uma gramtica livre de
contexto. Ento possvel denir um autmato de pilha no-determinstico M, com
critrio de aceitao baseado em pilha vazia, de modo que V(M) = L(G).
Justicativa Considere-se G = (V, , P, S) na Forma Normal de Greibach, e L(G).
O Algoritmo 4.11 mostra como obter o autmato M a partir de G.
Algoritmo 4.11 (Gramtica autmato de pilha, verso 1) Obteno de um aut-
mato de pilha no-determinstico a partir de uma gramtica livre de contexto na Forma
Normal de Greibach.
Entrada: uma gramtica livre de contexto G = (V, , P, S) na Forma Normal de
Greibach, e L(G);
Sada: um autmato de pilha M = (Q, , , , q, S, F), com critrio de aceitao
de pilha vazia, tal que V(M) = L(G);
Mtodo:
1. Q {q};
2. N;
3. F ;
4. Funo de transio:
a) ;
b) (q, , A) = {(q, ) | A P}, A N, , N

.
Note-se, no algoritmo acima, que se = , ento {(q, )} (q, , A).
possvel provar (ver [46]), por induo sobre a quantidade de movimentos reali-
zados pelo autmato assim denido, que:
S

x
234 Linguagens Formais - Teoria, Modelagem e Implementao
se e somente se
(q, x, S)

(q, , )
Em outras palavras, se existe uma seqncia de derivaes em G que gera uma
cadeia x, ento existe uma seqncia de movimentaes em M que reconhece x, e vice-
versa. Portanto, G e M denem a mesma linguagem.
Observe-se, no caso geral, que os autmatos construdos conforme o algoritmo 4.11
so no-determinsticos, uma vez que a simples presena de produes do tipo A
1
e A
2
, em P, com
1
=
2
, propicia a existncia de mais de uma movimentao
possvel a partir da congurao (q, z, A):
(q, z, A) (q, z,
1
) ou (q, z, A) (q, z,
2
)
O Algoritmo 4.11 produz, como se pode perceber, um autmato de pilha que possui
um nico estado. A sua denio idealizada com o intuito de permitir o reconheci-
mento de sentenas atravs de movimentos que simulem a seqncia de derivaes mais
esquerda que seriam efetuadas pela gramtica correspondente na gerao das mesmas
sentenas.
De acordo com essa denio, quando lido no sentido do topo para o fundo, o
contedo da pilha composto, em qualquer instante, por uma seqncia de smbolos no-
terminais, tornados elementos do alfabeto de pilha do autmato. Mantidos nesta ordem,
eles representam os smbolos no-terminais que ainda necessitariam sofrer substituio na
correspondente forma sentencial que seria obtida atravs de derivaes mais esquerda
na gramtica fornecida. Por sua vez, as cadeias formadas pelos smbolos terminais que
compem o prexo das formas sentenciais obtidas a partir de derivaes mais esquerda,
em vez de serem mantidas na pilha, correspondem sempre seqncia de smbolos que
formam a poro j lida da ta de entrada.
Devido prpria organizao em pilha (o primeiro elemento a entrar o ltimo a
sair), o smbolo no topo da pilha representa sempre o prximo smbolo no-terminal a
sofrer substituio em uma seqncia de derivaes mais esquerda, de acordo com a
gramtica correspondente. Como a gramtica se encontra na Forma Normal de Greibach,
todas as produes so do tipo A , com e N

. Assim, a substituio
do smbolo A, presente no topo da pilha, por ocorre apenas no caso em que o prximo
smbolo na cadeia de entrada for . Nos casos em que isso no ocorre, no haver tal
possibilidade de movimentao, e a cadeia ser rejeitada, pois a pilha no estar vazia.
Ao avanar o cursor de leitura e modicar o contedo da pilha, o autmato de pilha
simula exatamente a seqncia de movimentos que seriam executados pela aplicao da
gramtica correspondente atravs de derivaes mais esquerda.
Exemplo 4.33 Tome-se como exemplo a sentena x L(G), e considere-se, em um dado momento
da derivao mais esquerda de x atravs de G, a forma sentencial yA com y , A N e
N

. Seja A a prxima produo a ser aplicada:


S

yA

yz
com x = yz.
Neste caso, o comportamento do autmato de pilha pode ser representado, em cada uma
dessas quatro fases, atravs das guras apresentadas a seguir, que ilustram as seguintes seqncias
de movimentos:
(q, x, S)

(q, z, A) (q, z, )

(q, , )
Examinem-se, pois, as guras que ilustram essas conguraes. Na congurao inicial, a pilha
contm apenas S e o cursor aponta para o primeiro smbolo da cadeia de entrada x:
4 Linguagens Livres de Contexto 235
Figura 4.13: Autmato de pilha do Exemplo 4.33: congu-
rao inicial
Aps alguns movimentos, a parte j consumida da cadeia de entrada y, o smbolo no topo
da pilha A, o restante da pilha , e o prximo smbolo na cadeia de entrada :
Figura 4.14: Autmato de pilha do Exemplo 4.33: antes da
aplicao de uma regra
Imediatamente aps a aplicao da produo A , a parte consumida da cadeia de entrada
torna-se y e o contedo da pilha modicado para :
Figura 4.15: Autmato de pilha do Exemplo 4.33: depois
da aplicao de uma regra
Finalmente, ao trmino da leitura da cadeia x, a parte consumida da cadeia de entrada torna-
se exatamente x e a pilha esvaziada por completo, caracterizando portanto a congurao de
aceitao do autmato:
236 Linguagens Formais - Teoria, Modelagem e Implementao
Figura 4.16: Autmato de pilha do Exemplo 4.33: congu-
rao nal
2
Exemplo 4.34 Considere-se a linguagem das expresses aritmticas na notao inxa, cuja gramtica
na Forma Normal de Greibach foi obtida no Exemplo 4.26. Os no-terminais T

, E

e )

foram
renomeados para Y, Z e X, respectivamente:
{F (EX | a,
T (EX | a | (EXY | aY,
E (EX | a | (EXY | aY | (EXZ | aZ | (EXYZ | aYZ,
Y F | FY,
Z +T | +TZ,
X )}
Aplicando-se o Algoritmo 4.11, obtm-se o autmato de pilha no-determinstico cuja funo
de transio apresentada a seguir:
{(q, (, F) {(q, EX)},
(q, a, F) {(q, )},
(q, (, T) {(q, EX), (q, EXY)},
(q, a, T) {(q, ), (q, Y)},
(q, (, E) {(q, EX), (q, EXY), (q, EXZ), (q, EXYZ)},
(q, a, E) {(q, ), (q, Y), (q, Z), (q, YZ)},
(q, , Y) {(q, F), (q, FY)},
(q, +, Z) {(q, T), (q, TZ)},
(q, ), X) {(q, )}}
2
Cumpre notar, na demonstrao informal do Teorema 4.13, que, como conseqn-
cia da exigncia de que G se apresente na Forma Normal de Greibach, com produes
obedecendo exclusivamente ao formato A , com , que esta demonstrao no
se aplica ao caso das linguagens livres de contexto que incluam a cadeia vazia. A m de
generalizar o resultado desse teorema, deve-se introduzir uma pequena modicao para
contemplar o caso de linguagens livres de contexto que incluam a cadeia vazia.
A modicao em questo consiste na introduo de um novo estado q
0
em M,
renomeando-se o estado q para q
1
. Duas novas transies devem tambm ser acres-
centadas:
(q
0
, , S) = {(q
0
, ), (q
1
, S)}
A transio (q
0
, , S) = {(q
0
, )} permite que o autmato remova S da pilha sem
consumir smbolos da cadeia de entrada, possibilitando, portanto, o reconhecimento de .
4 Linguagens Livres de Contexto 237
A transio (q
0
, , S) = {(q
1
, S)} preserva o contedo da pilha, conduzindo o autmato
ao estado convencional utilizado para o reconhecimento de L {}.
Observe-se que a simples incluso da transio (q, , S) = {(q, )} na mquina M
anteriormente denida no soluo para o problema apresentado, uma vez que permite
a remoo do smbolo S em outras conguraes que no apenas a inicial, podendo causar
alterao na linguagem L originalmente denida. Na verdade, a incluso de um estado
adicional simula a existncia de uma nova raiz para a gramtica-base, impedindo que a
remoo de S ocorra em outras conguraes que no a inicial, alm de possibilitar o
reconhecimento da cadeia vazia se esta pertencer linguagem denida por G.
Exemplo 4.35 Considere-se a gramtica G denida pelo seguinte conjunto de produes:
{S aSBS,
S aB,
B b}
A linguagem denida por esta gramtica, L(G), aceita por um autmato M que tenha a
seguinte funo de transio:
(q, a, S) = {(q, SBS), (q, B)}
(q, b, B) = {(q, )}
A menor e a segunda menor sentenas pertencentes a L(G) so, respectivamente:
S aB ab
S aSBS aaBBS

aabbS

aabbab
Logo, L(G) = {ab, aabbab, . . .}. Considerando-se a linguagem L

= L {}, pode-se imedia-


tamente observar que a mera incluso da produo S em G no produziria o efeito desejado,
que o de permitir a gerao de L

, uma vez que ela incluiria a gerao, por exemplo, da cadeia


aabb, originariamente no pertencente a L. Por esse mesmo motivo, a transio:
(q, , S) = {(q, )}
no produziria o efeito desejado, que o de permitir o reconhecimento de L {} a partir do
autmato-base M. Para isso, preciso acrescentar o estado adicional, tornando a funo de
transio do autmato M:
(q0, , S) = {(q0, ), (q1, S)}
(q1, a, S) = {(q1, SBS), (q1, B)}
(q1, b, B) = {(q1, )}
Note a correspondncia do conjunto de produes assim denido com a gramtica G

abaixo
apresentada, L

= L

(G

):
Z S
Z
S aSBS
S aB
B b
2
Naturalmente, dada uma gramtica G em que S a raiz, sendo que S garantida-
mente no comparece no lado direito de nenhuma produo, ento torna-se desnecessrio
acrescentar um estado adicional, se o objetivo de sua incluso for exclusivamente o de
238 Linguagens Formais - Teoria, Modelagem e Implementao
permitir o reconhecimento da cadeia vazia em adio linguagem original. Em casos
particulares como esse, a transio:
(q, , S) = {(q, )}
produz o efeito desejado, podendo ser includa em M sem que haja risco de se alterar a
linguagem denida pelo autmato.
Uma forma alternativa de se especicar um autmato de pilha M que reconhea
exatamente a mesma linguagem denida por uma gramtica livre de contexto qualquer,
no necessariamente na Forma Normal de Greibach, e eventualmente incluindo a cadeia
vazia, pode tambm ser obtida atravs do Algoritmo 4.12, a seguir apresentado.
Algoritmo 4.12 (Gramtica autmato de pilha, verso 2) Obteno de um aut-
mato de pilha no-determinstico a partir de uma gramtica livre de contexto qualquer.
Entrada: uma gramtica livre de contexto G = (V, , P, S);
Sada: um autmato de pilha no-determinstico M = (Q, , , q, S, F) com cri-
trio de aceitao de pilha vazia, tal que V(M) = L(G);
Mtodo:
1. Q {q};
2. V;
3. F ;
4. Funo de transio:
a) ;
b) (q, , A) = {(q, ) | A P}, A N, V

;
c) (q, , ) = {(q, )}, .
Observe-se, neste caso, que o alfabeto de pilha o prprio vocabulrio V da gra-
mtica, e no apenas o conjunto dos no-terminais N como no caso anterior. Autmatos
construdos segundo este critrio operam atravs da repetida substituio dos smbolos
no-terminais no topo da pilha, sem consumo de smbolos da ta de entrada, at que
surja um smbolo terminal do topo da pilha. Nesta congurao, a sua remoo con-
dicionada presena do mesmo smbolo na posio de leitura correntemente apontada
pelo cursor da ta de entrada.
Assim como no caso anterior, autmatos construdos segundo este critrio tam-
bm simulam a seqncia de derivaes mais esquerda que seria feita pela gramtica
correspondente na gerao da mesma sentena. Note-se que:
1. Pelo primeiro mtodo, a escolha da produo a ser aplicada depende do no-
terminal no presente topo da pilha e tambm do prximo smbolo de entrada. No-
4 Linguagens Livres de Contexto 239
determinismos, neste caso, ocorrem apenas quando h mais de uma alternativa
de substituio para um mesmo smbolo no-terminal comeando com o mesmo
smbolo terminal:
A
1
e A
2
geram (q, , A) = {(q,
1
), (q,
2
)}
Por outro lado, regras iniciadas com smbolos distintos no geram no-determinismo:
A
1

1
gera (q,
1
, A) = {(q,
1

1
)}
A
2

2
gera (q,
2
, A) = {(q,
2

2
)}
2. Pelo segundo mtodo, a escolha da produo a ser aplicada depende apenas do
no-terminal presente no topo da pilha. Dessa forma, o conjunto de opes de
substituio para um mesmo smbolo no-terminal geralmente maior do que no
primeiro caso:
A
1
e A
2
geram (q, , A) = {(q,
1
), (q,
2
)}
Essa situao se repete caso as regras se iniciem com smbolos distintos:
A
1

1
e A
2

2
geram (q, , A) = {(q,
1

1
), (q,
2

2
)}
Constata-se, dessa maneira, que o segundo mtodo gera uma situao de no-
determinismo para regras que se iniciam com smbolos diferentes, o que no ocorre no
primeiro mtodo. Assim, o segundo mtodo tende a apresentar mais situaes no-
determinsticas do que o primeiro, dando a este uma certa vantagem quanto potencial
ecincia do reconhecimento.
Irrelevante do ponto de vista terico, a questo da escolha de um ou outro mtodo
para a obteno de autmatos de pilha a partir de gramticas livres de contexto apre-
senta um certo interesse quando se trata da realizao fsica de reconhecedores sintticos
ecientes para linguagens livres de contexto quaisquer, uma vez que o primeiro mtodo
possibilita, no caso geral, a construo de autmatos no-determinsticos mais ecientes
do que os obtidos atravs da aplicao do segundo mtodo, em decorrncia da limitao
na quantidade de movimentos considerados vlidos em cada congurao.
Na prtica, no entanto, o maior interesse recai sobre os autmatos de pilha deter-
minsticos. Porm, conforme ser visto na Seo 4.11, a classe de linguagens por eles
reconhecida apenas um subconjunto das linguagens livres de contexto. Linguagens
livres de contexto genricas s podem ser reconhecidas atravs de autmatos de pilha
no-determinsticos, e por esse motivo o primeiro mtodo mais interessante do ponto
de vista de engenharia, quando se trata da realizao fsica de tais reconhecedores.
Exemplo 4.36 Considere-se a gramtica das expresses aritmticas utilizada no Exemplo 4.26, em-
pregada originalmente como base para a obteno da gramtica equivalente na Forma Normal de
Greibach. No conjunto de produes abaixo, os no-terminais E

e T

foram respectivamente reno-


meados para Z e Y.
{E T | TZ,
T F | FY,
240 Linguagens Formais - Teoria, Modelagem e Implementao
F (E) | a,
Y F | FY,
Z +T | +TZ}
Aplicando-se o mtodo alternativo (Algoritmo 4.12), obtm-se o autmato de pilha no-
determinstico cuja funo de transio :
{(q, , E) {(q, T), (q, TZ)},
(q, , T) {(q, F), (q, FY)},
(q, , F) {(q, (E)), (q, a)},
(q, , Y) {(q, F), (q, FY)},
(q, , Z) {(q, +T), (q, +TZ)},
(q, a, a) {(q, )},
(q, (, () {(q, )},
(q, ), )) {(q, )},
(q, +, +) {(q, )},
(q, , ) {(q, )}}
2
Ser examinada a seguir a equivalncia entre os autmatos de pilha e as gramticas
do tipo 2, no que se refere classe de linguagens que ambos os dispositivos so capazes
de denir.
Teorema 4.14 (Gramtica autmato de pilha) Seja M um autmato de pilha
com critrio de aceitao de pilha vazia. Ento possvel denir uma gramtica livre de
contexto G, de modo que L(G) = V(M).
Justicativa Seja M = (Q, , , , q
0
, Z
0
, F). A gramtica G = (V, , P, S), tal que
L(G) = V(M), pode ser obtida pela aplicao do Algoritmo 4.13.
Algoritmo 4.13 (Gramtica autmato de pilha) Obteno de uma gramtica
livre de contexto a partir de um autmato de pilha.
Entrada: um autmato de pilha M = (Q, , , , q
0
, Z
0
, F) com critrio de aceita-
o de pilha vazia;
Sada: uma gramtica livre de contexto G = (V, , P, S), tal que L(G) = V(M);
Mtodo:
1. N {[q
i
Zq
k
] | q
i
, q
k
Q e Z } {S};
2. P ;
3. q, q
1
Q, {}, Z, Z
1
, . . . , Z
k
, se {(q
1
, Z
1
. . . Z
k
)} (q, , Z),
k 0, ento:
P P {[qZq
k+1
] [q
1
Z
1
q
2
][q
2
Z
2
q
3
] . . . [q
k
Z
k
q
k+1
]}
para qualquer seqncia de q
j
Q, 2 j (k + 1);
4 Linguagens Livres de Contexto 241
4. P P {S [q
0
Z
0
q]}, q Q.
possvel demonstrar formalmente (ver [46]), por induo sobre a quantidade de
derivaes efetuadas atravs de G, que a gramtica assim denida gera exatamente a
mesma linguagem aceita pelo autmato, ou seja:
(q
0
, x, Z
0
)

(q, , ) se e somente se S

x
Para que se possa intuir o signicado do mtodo apresentado, deve-se inicialmente
notar que os smbolos no-terminais [q
i
Zq
k
] criados na construo de G tm por obje-
tivo representar o conjunto das sentenas que so aceitas entre as duas conguraes
sugeridas pelo nome atribudo ao no-terminal:
(q
i
, , Z
0
)

(q
k
, , )
Assim, q
i
e Z devem ser interpretados como uma determinada congurao do
autmato, e q
k
o estado que ele atinge aps a realizao de uma srie de movimentos, ao
trmino dos quais o smbolo Z removido da pilha. O conjunto das cadeias que per-
mitem ao autmato transitar de uma para outra congurao constitui uma linguagem,
podendo ser representada como:
L([q
i
Zq
k
]) = {

| [q
i
Zq
k
] }
Conseqentemente, como a linguagem aceita pelo autmato formada pelo conjunto
das cadeias que o levam desde a congurao inicial nica at uma congurao nal,
no necessariamente nica, tem-se que esta linguagem pode ser formalizada, do ponto de
vista gramatical, como:
L(G) =
_
qi Q
L([q
0
Z
0
q
i
])
Observe-se que derivaes mais esquerda em G simulam os movimentos de M
ao longo de suas diversas conguraes. Para justicar a necessidade de incorporao
da informao de estado denio dos no-terminais de G, considere-se inicialmente
N = , ou seja, suponha-se que os no-terminais de G correspondem aos elementos do
alfabeto de pilha de M e, alm disso, que as produes de G sejam denidas de maneira
simplicada, com base exclusivamente no alfabeto de pilha e nas diversas substituies
possveis para elementos no topo da pilha, dispensando-se a informao dos estados em
sua denio.
Essa simplicao possibilitaria a aplicao incondicional de produes do tipo A
em qualquer forma sentencial, obtida a partir de G, em que A estivesse presente.
Claramente, no essa a informao que o autmato traz, uma vez que a substi-
tuio de A por possvel apenas em algumas situaes ou estados: aqueles para os
quais {(r, )} (q, , A). Dessa forma, a caracterizao de um no-terminal deveria
necessariamente levar em conta a informao do estado (ou grupo de estados) no qual a
substituio em questo pode ser feita. Caso contrrio, corre-se o risco de alterar a lin-
guagem denida pela gramtica, tornando-a diferente da linguagem aceita pelo autmato
em questo.
Em outras palavras, note-se que a presena de um no-terminal A em uma forma
sentencial gerada a partir de derivaes mais esquerda em G:
S

A, com

, V

242 Linguagens Formais - Teoria, Modelagem e Implementao


deveria corresponder, em M, ao caso em que A o smbolo presente no topo da pilha e ,
o primeiro smbolo terminal derivvel a partir de A, ou seja, A

. A substituio
de A por nessa forma sentencial, para uma produo A da gramtica, deve ser
admitida como alternativa de substituio vlida se e apenas se a transio:
{(q
j
, )} (q
i
, , A)
constituir alternativa de movimentao a partir da congurao (q
i
, , A):
(q
0
, , Z
0
)

(q
i
, , A) (q
j
, , )
Caso a informao de estado no esteja incorporada denio dos no-terminais
de G, conforme discutido, corre-se o risco de admitir a aplicao das produes de G em
formas sentenciais sem qualquer correspondncia com as conguraes de M. Justamente
para evitar essa situao, e visando estabelecer a plena equivalncia entre as formas
sentenciais de G e as conguraes de M, que a informao de estado deve ser agregada
a cada smbolo A N, conforme originalmente proposto.
Assim, denem-se os smbolos no-terminais de G como:
[q
i
Ar], com q
i
, r Q, A
Supondo-se que {(r, )} (q
i
, , A), garante-se que a produo A seja
empregada apenas naquelas formas sentenciais geradas por G em que o no-terminal
[q
i
Ar] estiver presente, no se manifestando nunca como alternativa de substituio para
os demais no-terminais [q
k
Ar], k = i, caso {(r, )} no esteja contido em (q
k
, , A).
Tendo-se analisado o signicado atribudo aos no-terminais denidos para G, a
interpretao dos critrios de construo do conjunto de produes torna-se mais fcil:
cada produo de G representa a evoluo do correspondente autmato ao longo de
uma srie de conguraes, srie esta que se inicia com o consumo de um smbolo da
cadeia de entrada (ou nenhum, se a transio for em vazio), e termina com a remoo de
todos os smbolos armazenados na pilha como conseqncia da aplicao dessa transio.
Dessa forma, as produes denidas para S representam todas as possveis seqncias
de movimentaes que levam M da congurao inicial at uma de suas vrias possveis
conguraes nais adotando-se o critrio de aceitao por esvaziamento da pilha.
Como efeito colateral da aplicao do mtodo apresentado, freqente a obteno
de gramticas com elevada quantidade de smbolos no-terminais e produes inteis.
Apesar de a aplicao dos mtodos anteriormente estudados possibilitar a eliminao
sistemtica de tais elementos inteis, possvel limitar a sua proliferao desde o incio,
restringindo-se a aplicao do Algoritmo 4.13 apenas aos novos smbolos no-terminais
que surgem em cada passo.
Exemplo 4.37 Seja M = ({q0, q1}, {a, b}, {X, Z0}, , q0, Z0, ), representado na Figura 4.17.
q
0
q
1
(, X)/X
(a, X)/XX
(a, Z
0
)/XZ
0
(b, Z
0
)/
(, X)/XX
(b, X)/
Figura 4.17: Autmato de pilha M do Exemplo 4.37
4 Linguagens Livres de Contexto 243
A obteno de G, tal que L(G) = V(M), tem como ponto de partida as duas produes do
conjunto:
{S [q0Z0q0], (4.7)
S [q0Z0q1]} (4.8)
Considerando-se inicialmente (4.7), denem-se as produes de G que apresentam [q0Z0q0]
do lado esquerdo. Essas produes decorrem das transies de M que emergem do estado q0 com
o smbolo do alfabeto de pilha Z0. Como h apenas uma transio que satisfaz a esse requisito,
(q0, a, Z0) = (q0, XZ0)
obtm-se por conseguinte o conjunto de produes:
{[q0Z0q0] a[q0Xq0][q0Z0q0], (4.9)
[q0Z0q0] a[q0Xq1][q1Z0q0]} (4.10)
Como se pode observar, (4.10) contm o smbolo [q1Z0q0], que, de acordo com o que foi
convencionado, representa o conjunto de cadeias que conduzem M do estado q1 ao estado q0 com
o smbolo Z0. Atravs da inspeo do diagrama de estados de M, conclui-se no haver caminhos
com esta caracterstica, e por esse motivo antecipa-se a impossibilidade de se criarem produes
para o no-terminal [q1Z0q0]. Em outras palavras, a denio de uma produo para esse no-
terminal dependeria, antes de mais nada, da existncia de uma transio que, no estado q1, estivesse
associada ao smbolo Z0, o que no verdade para o autmato considerado. Desse modo, descarta-
se a produo (4.10). Como conseqncia, tambm a produo (4.9) torna-se intil, pois no h
termo independente de [q0Z0q0] que possibilite a resoluo da equao representada pela produo.
Prosseguindo com a produo (4.8), considere-se o smbolo [q0Z0q1]. As produes a ele
associadas tambm derivam da transio que vincula o smbolo Z0 ao estado q0:
(q0, a, Z0) = (q0, XZ0)
{[q0Z0q1] a[q0Xq0][q0Z0q1], (4.11)
[q0Z0q1] a[q0Xq1][q1Z0q1]} (4.12)
A seguir, obtm-se para o smbolo [q0Xq0], presente na produo (4.11), o seguinte conjunto
de produes, derivado da transio:
(q0, a, X) = (q0, XX)
{[q0Xq0] a[q0Xq0][q0Xq0], (4.13)
[q0Xq0] a[q0Xq1][q1Xq0]} (4.14)
Por motivos similares aos expostos para o caso da produo (4.10), conclui-se que no
possvel denir produes para o smbolo [q1Xq0], o que implica, como conseqncia, a inutilidade
do smbolo [q0Xq0] e das produes (4.14), (4.13) e (4.11).
Prosseguindo com a produo (4.12), denem-se as produes para o smbolo [q0Xq1]. Nesse
caso, elas decorrem das transies:
(q0, a, X) = (q0, XX) e (q0, , X) = (q1, X)
{[q0Xq1] a[q0Xq0][q0Xq1], (4.15)
[q0Xq1] a[q0Xq1][q1Xq1], (4.16)
[q0Xq1] [q1Xq1]} (4.17)
Observe-se que as duas primeiras produes so decorrncia da primeira transio, ao passo
que a terceira provm da segunda transio. Como [q0Xq0] um smbolo intil, isso acarreta
244 Linguagens Formais - Teoria, Modelagem e Implementao
a inutilidade da produo (4.15). Continuando com a produo (4.12), dene-se agora a nica
produo do smbolo [q1Z0q1], e que deriva da transio:
(q1, b, Z0) = (q1, )
[q1Z0q1] b (4.18)
Finalmente, para completar a denio dos smbolos no-terminais at aqui surgidos, resta
obter as produes de [q1Xq1], utilizado nas produes (4.16) e (4.17). Note-se que estas decorrem,
respectivamente, das transies:
(q1, b, X) = (q1, ) e (q1, , X) = (q1, XX)
{[q1Xq1] b, (4.19)
[q1Xq1] [q1Xq1][q1Xq1]} (4.20)
Como resultado, obtm-se o seguinte conjunto de produes:
(4.8) {S [q0Z0q1],
(4.12) [q0Z0q1] a[q0Xq1][q1Z0q1],
(4.16) [q0Xq1] a[q0Xq1][q1Xq1],
(4.17) [q0Xq1] [q1Xq1],
(4.18) [q1Z0q1] b,
(4.19) [q1Xq1] b,
(4.20) [q1Xq1] [q1Xq1][q1Xq1]}
Renomeando-se os no-terminais, obtm-se:
(4.8) {S A,
(4.12) A aBC,
(4.16) B aBD,
(4.17) B D,
(4.18) C b,
(4.19) D b,
(4.20) D DD}
ou seja, L(G) = V(M) = {a
i
b
j
| i 1 e j > i }.
Apresenta-se agora uma particular seqncia de movimentos efetuada por M durante o reco-
nhecimento da sentena aabbbb:
(q0, aabbbb, Z0) (q0, abbbb, XZ0) (q0, bbbb, XXZ0) (q1, bbbb, XXZ0) (q1, bbb, XZ0)
(q1, bbb, XXZ0) (q1, bb, XZ0) (q1, b, Z0) (q1, , )
A correspondncia entre G e M pode ser ilustrada atravs da anlise da seqncia de derivaes
mais esquerda obtida para esta mesma cadeia aabbbb, e de sua comparao com a seqncia de
movimentos efetuados pelo autmato conforme apresentado acima:
S [q0Z0q1] a[q0Xq1][q1Z0q1] aa[q0Xq1][q1Xq1][q1Z0q1]
aa[q1Xq1][q1Xq1][q1Z0q1] aab[q1Xq1][q1Z0q1]
aab[q1Xq1][q1Xq1][q1Z0q1]
aabb[q1Xq1][q1Z0q1]
aabbb[q1Z0q1]
aabbbb
4 Linguagens Livres de Contexto 245
Observe-se que as formas sentenciais obtidas atravs de G, neste exemplo, esto diretamente
relacionadas s conguraes assumidas por G em cada etapa do reconhecimento da cadeia conside-
rada. Note-se, portanto, que G simula, atravs de uma seqncia de derivaes mais esquerda,
a seqncia de movimentos que conduz M de sua congurao inicial at uma congurao nal.
Retornando questo da caracterizao dos no-terminais em G, conforme mencionado an-
teriormente, a incorporao dos estados na denio dos mesmos necessria para evitar a gerao
de formas sentenciais invlidas, sendo, portanto, indispensvel para garantir a equivalncia entre a
linguagem aceita e a linguagem gerada.
Este ponto pode ser melhor visualizado neste exemplo da seguinte forma: considere-se G

em
que N = e P obtido simplesmente analisando-se todas as possveis substituies de smbolos
no topo da pilha e a eventual presena de elementos de na ta de entrada, sem levar em conta a
existncia dos estados.
Assim, obtm-se o conjunto de produes seguinte:
{S Z0,
Z0 aXX, (de (q0, a, Z0) = (q0, XZ0))
X aXX, (de (q0, a, X) = (q0, XX))
X X, (de (q0, , X) = (q1, X))
X b, (de (q1, b, X) = (q1, ))
X XX, (de (q1, , X) = (q1, XX))
Z0 b} (de (q1, b, Z0) = (q1, ))
fcil notar, neste caso, que L(G) L(G

). Considere-se, a ttulo de exemplo, a cadeia b.


Evidentemente, b L(G), mas no entanto, em G

, tem-se:
S Z0 b
A razo disso acontecer que a produo Z0 b convertida para uma transio de M
apenas no estado q1. Ao ignorar a informao de estado na caracterizao dos no-terminais de
G

, a substituio torna-se possvel independentemente do estado. Neste exemplo, a derivao


Z0 b corresponderia aplicao de uma transio originalmente inexistente no estado q0. Deixa,
portanto, de haver correspondncia entre as conguraes do reconhecedor e as formas sentenciais
da gramtica, quando a informao de estado descartada na caracterizao de seus smbolos no-
terminais. 2
4.9 Relao entre Linguagens Livres de Contexto e
Linguagens Regulares
As linguagens regulares constituem um subconjunto prprio das linguagens livres de
contexto. De fato, possvel demonstrar que toda linguagem regular tambm uma lin-
guagem livre de contexto e, por outro lado, que existem linguagens livres de contexto que
no so regulares. Esses resultados sero demonstrados, respectivamente, nos Teoremas
4.15 e 4.16 a seguir.
Teorema 4.15 (Regulares livres de contexto) Toda linguagem regular tambm
uma linguagem livre de contexto.
Justicativa Considere-se L uma linguagem regular qualquer. Ento, por denio,
existe uma gramtica linear direita G que dene L. As regras de G possuem todas,
sem exceo, apenas um smbolo no-terminal do lado esquerdo e uma cadeia qualquer
pertencente a ({})(N {}) do lado direito. Como as gramticas livres de contexto
tambm exigem um nico smbolo no-terminal no lado esquerdo das regras, e, alm
disso, ( {})(N {}) V

NV

, isso implica que toda gramtica linear direita


tambm uma gramtica livre de contexto. Logo, toda linguagem regular tambm uma
linguagem livre de contexto.
246 Linguagens Formais - Teoria, Modelagem e Implementao
Teorema 4.16 (Regulares = livres de contexto) Existem linguagens livres de con-
texto que no so regulares.
Justicativa Considere-se, por exemplo, a linguagem L = {0
i
10
i
| i 1}. Conforme
demonstrado no Exemplo 3.48, L no regular, uma vez que no satisfaz ao Pumping
Lemma das linguagens regulares. No entanto, a gramtica G = ({S, 0, 1}, {0, 1}, {S
0S0, S 010}, S) gera exatamente L. Logo, L livre de contexto, porm no regular.
De maneira semelhante, pode-se demonstrar a existncia de inmeras outras linguagens
com essa mesma caracterstica.
Conforme denido na Seo 4.1, uma linguagem dita estritamente livre de contexto
se ela for livre de contexto, porm no-regular. A caracterstica desse tipo de linguagens
que elas so geradas apenas por gramticas que possuam pelo menos um smbolo no-
terminal que seja auto-recursivo central e essencial. Assim, possvel gerar, nas formas
sentenciais geradas pela gramtica, subcadeias da forma:
Y

Y, com ,
+
as quais so responsveis pelo balanceamento dos termos e nas sentenas da lingua-
gem.
De fato, gramticas lineares direita no permitem a denio de smbolos no-
terminais com essa propriedade. Ao contrrio, gramticas lineares direita geram apenas
formas sentenciais da seguinte forma:
Y

Y, com
+
em que, obviamente, no h balanceamento de termos nem, portanto, aninhamentos
sintticos. A existncia de termos balanceados (ou aninhados) , por isso, o fator que
diferencia uma linguagem estritamente livre de contexto de uma linguagem regular.
4.10 Linguagens que no so Livres de Contexto
Como se sabe, as linguagens regulares podem ser denidas atravs de expresses regula-
res, gramticas regulares ou autmatos nitos. Por outro lado, a existncia de linguagens
no-regulares foi provada atravs do uso do Pumping Lemma das linguagens regulares.
De maneira anloga, para provar que uma linguagem livre de contexto, su-
ciente apresentar uma gramtica livre de contexto que gere esta linguagem, ou ainda
um autmato de pilha que a reconhea. A existncia de linguagens que no so livres
de contexto pode ser demonstrada com o auxlio do Pumping Lemma das linguagens
livres de contexto, apresentado a seguir.
A importncia de um Pumping Lemma para as linguagens livres de contexto no
se limita posssibilidade de demonstrar a existncia de linguagens que no sejam livres
de contexto, e, portanto, de sugerir a existncia de outras classes de linguagens. Ele
usado tambm na demonstrao de algumas propriedades importantes das linguagens
livres de contexto.
Teorema 4.17 (Pumping Lemma para linguagens livres de contexto) Seja L
uma linguagem livre de contexto, com L. Ento, existe uma constante inteira n,
dependente apenas de L, que satisfaz s seguintes condies: (i) L, || n, =
uvwxy; ; (ii) |vwx| n; (iii) |vx| 1; (iv) i 0, uv
i
wx
i
y L.
4 Linguagens Livres de Contexto 247
Justicativa Se L livre de contexto e no contm a cadeia vazia, ento L = L(G), sendo
G = (V, , P, S), G uma gramtica livre de contexto na Forma Normal de Chomsky.
Portanto, qualquer rvore de derivao que represente uma sentena de L nessa gramtica
ser uma rvore binria.
Por outro lado, rvores binrias de altura i geram sentenas de comprimento m-
ximo 2
i1
. A Figura 4.18 ilustra essa relao para os casos i=1, 2 e 3, e facilita a
generalizao da mesma:
Figura 4.18: Comprimento mximo de um caminho em uma
rvore binria
Atravs desta gura, fcil perceber que rvores de altura 1 geram sentenas de
comprimento 1 (portanto 2
0
), rvores de altura 2 geram sentenas de comprimento 2
( 2
1
) e rvores de altura 3 geram sentenas de comprimento 3 ou 4 ( 2
2
). No caso
geral, rvores com altura i geram sentenas de comprimento menor ou igual a 2
i1
.
Como conseqncia desse resultado, possvel inferir que, se uma sentena tem
comprimento mnimo 2
i
, ento a rvore de derivao correspondente possuir altura
mnima i + 1.
Considere-se k = |N|, onde N o conjunto dos smbolos no-terminais de G,
estando esta expressa na Forma Normal de Chomsky, e faa-se n = 2
k
.
Se L e || n, isto , se || 2
k
, ento, face ao resultado anterior, certo que a
altura mnima da rvore de derivao correspondente sentena ser k +1. Suponha-
se que o valor desta altura seja p (portanto, p k + 1) e considere-se um caminho
w qualquer na rvore que possua comprimento p (haver pelo menos um caminho que
satisfaa a essa condio).
Se o caminho selecionado possui comprimento p, ento este caminho formado de
q smbolos, q k +2. Desses q smbolos, apenas um ser terminal (o ltimo smbolo do
caminho, aquele que folha da rvore) e os demais sero necessariamente no-terminais.
Ignorando o smbolo terminal e concentrando a ateno nos q 1 no-terminais,
seus antecessores, se q k + 2, ento existem r smbolos no-terminais neste caminho,
e r = q 1, ou seja, r k + 1.
Considerem-se agora apenas os primeiros k +1 smbolos no-terminais consecutivos
que antecedem imediatamente a folha da rvore, ignorando os r (k + 1) smbolos
no-terminais situados no incio do caminho selecionado. O caminho escolhido w pode,
portanto, ser considerado como:
w = , N

, | | = r (k + 1), N
+
, || = k + 1,
A Figura 4.19 ilustra esta interpretao do caminho w:
248 Linguagens Formais - Teoria, Modelagem e Implementao
Figura 4.19: Ocorrncia mltipla do smbolo no-terminal X no
caminho w
Se contm exatamente k +1 smbolos no-terminais e a gramtica contm apenas
k smbolos no-terminais distintos, certo que pelo menos um smbolo no-terminal de
G aparece mais de uma vez em . Se chamarmos a este smbolo X, as seguintes conside-
raes podero ser feitas acerca das posies em que os smbolos X podem aparecer na
rvore de derivao:
1. Para o primeiro X (aquele que est na posio mais alta da rvore, prxima da
raiz):
Ele pode ser o primeiro smbolo da cadeia (portanto, estar na altura k +1);
Ele pode ser o penltimo smbolo da cadeia (portanto, estar na altura 2),
uma vez que o segundo X comparece por ltimo nesta mesma cadeia;
Ele pode assumir qualquer posio entre essas duas.
2. Para o segundo X (aquele que est na posio mais baixa da rvore, prxima da
folha):
Ele pode ser o segundo smbolo da cadeia (portanto, estar na altura k),
uma vez que o primeiro X comparece antes nesta mesma cadeia;
Ele pode ser o ltimo smbolo da cadeia (portanto, na altura 1);
Ele pode assumir qualquer posio entre essas duas.
Assim, pode-se concluir:
1. Para o primeiro X: se X

1
,
1

, ento 2 |
1
| 2
k
;
2. Para o segundo X: se X

2
,
2

, ento 1 |
2
| 2
k1
.
4 Linguagens Livres de Contexto 249
A situao da rvore de derivao da sentena pode ser representada como mostra
a Figura 4.20 (S representa a raiz de G, e pode, eventualmente, coincidir com o primeiro
smbolo da cadeia ):
Figura 4.20: rvore de derivao da cadeia = uvwxy
A inspeo desta rvore nos permite chegar s seguintes concluses:
A sentena pode ser considerada como sendo composta por cinco partes, =
uvwxy;
Como w =
2
, ento 1 |w| 2
k1
;
Como vwx =
2
, ento 2 |vwx| 2
k
;
Como 1 |w| e 2 |vwx|, ento |vx| 1.
Alm disso, as regras de G permitem a derivao das seguintes formas sentenciais:
S

uXy
X

vXx
X

w
A inspeo dessas formas sentenciais, assim como a anlise da rvore mostrada na
Figura 4.20, permite concluir que existem outras possibilidades de derivaes (ou seja,
de construo da rvore) de sentenas em G, as quais produzem sentenas diversas da
original , e que, por construo, devem necessariamente pertencer linguagem L.
Por exemplo, possvel imaginar que, em vez de aplicar regras que fazem o primeiro
X derivar vXx, possvel aplicar, a esta ocorrncia de X, as regras aplicadas ao segundo
X, e dessa maneira gerar a sentena uwy no lugar da sentena uvwxy. Da mesma forma,
seria possvel repetir a derivao aplicada ao primeiro X no lugar da derivao feita para
o segundo X, e com isso gerar a sentena uvvwxxy. Generalizando, todas as sentenas
uv
i
wx
i
y, com i 0, podem ser derivadas em G, e, portanto, pertencem necessariamente
a L(G). A Figura 4.21 mostra, gracamente, a aplicao desta idia:
250 Linguagens Formais - Teoria, Modelagem e Implementao
Figura 4.21: rvores de derivao para as cadeias uvwxy, uwy
e uvvwxxy
Em termos gramaticais, como S

uXy, X

vXx e X

w, ou seja, S

uvwxy, ento, necessariamente:


S

uXy

uwy
S

uXy

uvvwxxy
S

uXy

uvvvwxxxy
. . .
S

uXy

uv
i
wx
i
y, i 0

Considerado de maneira informal, este Pumping Lemma para linguagens livres de


contexto pode ser interpretado da seguinte maneira:
Sentenas que apresentem um certo comprimento mnimo geram rvores de deri-
vao com uma certa altura mnima;
Como a quantidade de smbolos no-terminais da gramtica limitada, neces-
sariamente dever haver repetio de smbolos em algum caminho da rvore de
derivao correspondente;
Tal repetio permite a gerao de uma quantidade innita de outras sentenas
estruturalmente similares, que devem necessariamente pertencer linguagem.
O smbolo no-terminal X, na demonstrao acima, possibilita derivaes do tipo
X

vXx e corresponde ao smbolo que denominamos previamente de auto-recursivo


central essencial. A existncia de pelo menos um smbolo desse tipo na gramtica garante
a possibilidade de se gerar uma quantidade innita de outras sentenas que tambm
pertenam mesma linguagem.
Se v ou x forem vazios, a linguagem ser regular (note-se que o Pumping Lemma
para linguagens regulares Teorema 3.15 um caso particular do Pumping Lemma
para linguagens livres de contexto). Se v e x forem simultaneamente diferentes da cadeia
vazia, ento a linguagem livre de contexto e no-regular, e os termos v e x ocorrero
sempre de forma balanceada nas sentenas da linguagem.
Como no caso do Pumping Lemma para linguagens regulares, que estabelece uma
propriedade inerente a toda e qualquer linguagem regular, o Pumping Lemma para
4 Linguagens Livres de Contexto 251
linguagens livres de contexto estabelece uma propriedade inerente a toda e qualquer
linguagem livre de contexto. De maneira anloga quele caso, uma de suas principais
aplicaes na demonstrao da existncia de linguagens que no so livres de contexto,
conforme mostraro os exemplos a seguir.
Observe-se que o teorema garante a existncia da constante n, mas a plicao do
mesmo no exige que seja determinado o seu valor, como mostram os exemplos seguintes.
Exemplo 4.38 A linguagem L1 = {a
k
b
k
c
k
| k 1} no livre de contexto. Suponha-se, por
hiptese, que L1 seja livre de contexto. De acordo com o Teorema 4.17 (Pumping Lemma para
linguagens livres de contexto), existe uma constante inteira n tal que, qualquer que seja a sentena
L1, || n, ento = uvwxy, |vwx| n, |vx| 1 e uv
i
wx
i
y L1.
Seja = a
n
b
n
c
n
. Como |a
n
b
n
c
n
| = 3 n, ento est satisfeita a condio || n.
Portanto, = uvwxy. Nesta situao, a subcadeia vwx pode assumir um dos seguintes formatos
(lembrar que |vwx| n):
1. vwx contm apenas smbolos a (pelo menos um); portanto, vx tambm contm apenas
smbolos a (pelo menos um);
2. vwx contm apenas smbolos b (pelo menos um); portanto, vx tambm contm apenas
smbolos b (pelo menos um);
3. vwx contm apenas smbolos c (pelo menos um); portanto, vx tambm contm apenas
smbolos c (pelo menos um);
4. vwx contm smbolos a (pelo menos um) seguidos de smbolos b (pelo menos um);
portanto, vx contm pelo menos um smbolo a ou b, porm nenhum smbolo c;
5. vwx contm smbolos b (pelo menos um) seguidos de smbolos c (pelo menos um);
portanto, vx contm pelo menos um smbolo b ou c, porm nenhum smbolo a.
impossvel que a subcadeia vwx contenha simultaneamente smbolos a, b e c, uma vez
que, para isso acontecer, seria necessrio que o comprimento de vwx fosse no mnimo n + 2, o que
contraria o Pumping Lemma.
Passando-se anlise de cada uma dessas possibilidades, considerando o formato assumido
pela sentena uwy, isto , pela sentena uvwxy aps a remoo das subcadeias v e x, o que
previsto pelo Lemma quando estabelece que todas as sentenas uv
i
wx
i
y devem pertencer a L1
(neste caso, faz-se i = 0). Lembrar que |vx| 1:
1. uwy conter n smbolos b, n smbolos c e uma quantidade de smbolos a menor que
n; logo, uwy no pertence a L1;
2. uwy conter n smbolos a, n smbolos c e uma quantidade de smbolos b menor que
n; logo, uwy no pertence a L1;
3. uwy conter n smbolos a, n smbolos b e uma quantidade de smbolos c menor que
n; logo, uwy no pertence a L1;
4. uwy conter n smbolos c, e quantidades de smbolos a e de smbolos b respectivamente
menores que n; logo, uwy no pertence a L1;
5. uwy conter n smbolos a, e quantidades de smbolos b e de smbolos c respectivamente
menores que n; logo, uwy no pertence a L1.
Portanto, a sentena a
n
b
n
c
n
contradiz a hiptese inicial, provando que a linguagem L1 no
livre de contexto. Cumpre observar que, no Exemplo 3.50 da Seo 3.8 (Pumping Lemma para
as Linguagens Regulares), esta mesma linguagem foi demonstrada como sendo no-regular. 2
Exemplo 4.39 A linguagem L2 = {wcw | w {a, b}
+
} no livre de contexto. Esta linguagem sin-
tetiza uma caracterstica bastante comum nas linguagens de programao mais usuais: a necessidade
252 Linguagens Formais - Teoria, Modelagem e Implementao
de se usarem identicadores idnticos em partes diferentes de um mesmo programa, por exemplo,
na declarao de uma varivel e na ocasio de sua utilizao posterior.
Suponha-se, por hiptese, que L2 seja livre de contexto. De acordo com o Pumping Lemma
para linguagens livres de contexto, existe uma constante inteira n tal que, qualquer que seja a
sentena L2, || n, ento = uvwxy, |vwx| n, |vx| 1 e uv
i
wx
i
y L2.
Considere-se, por exemplo, a sentena = a
n
b
n
ca
n
b
n
. Como || = 4 n + 1 n, ento
est satisfeita a condio do Pumping Lemma para a escolha da sentena . Portanto, = uvwxy
e a subcadeia vwx pode assumir um dos seguintes formatos:
1. vwx contm apenas smbolos a (pelo menos um);
2. vwx contm apenas smbolos b (pelo menos um);
3. vwx contm smbolos a (pelo menos um) seguidos de smbolos b (pelo menos um);
4. vwx se inicia com smbolos b (zero ou mais) e termina com o smbolo c;
5. vwx se inicia com o smbolo c e termina com smbolos a (zero ou mais);
6. vwx se inicia com smbolos b (pelo menos um) , continua com um smbolo c e termina
com smbolos a (pelo menos um).
De maneira anloga ao que foi mostrado no Exemplo 4.38, passa-se a examinar o formato das
cadeias uwy que so geradas em cada um desses casos:
1. Ao extrair smbolos a da subcadeia w que antecede o smbolo c, esta resulta diferente
da subcadeia w posterior ao mesmo c; o mesmo acontece se forem extrados smbolos a
da subcadeia posterior ao smbolo c; logo, uwy no pertence a L2;
2. Semelhante ao caso anterior;
3. Modica, exclusivamente, a subcadeia anterior ao smbolo c ou a subcadeia posterior ao
smbolo c; logo, uwy no pertence a L2;
4. Como |vx| 1, vx contm pelo menos um smbolo b ou um smbolo c, que, se removidos
da sentena , provocam a gerao de uma sentena que no pertence a L2 (seja porque as
cadeias w tornam-se diferentes, seja porque o smbolo c que as separa desaparece);
5. Semelhante ao caso anterior;
6. Como |vx| 1, vx contm pelo menos um smbolo b (da primeira subcadeia w) ou um
smbolo c ou, ainda, um smbolo a (da segunda subcadeia w); qualquer que seja o caso,
a cadeia resultante uwy no pertence a L2 (seja porque as cadeias w tornam-se diferentes,
seja porque o smbolo c que as separa desaparece).
Pelo exposto, ca claro que a hiptese inicial falsa e que L2 no uma linguagem livre de
contexto. 2
Exemplo 4.40 A linguagem L3 = {a
k
| k 1 um nmero primo} no livre de contexto.
Suponha-se que L3 seja livre de contexto e considere-se a sentena = a
p
, cujo comprimento seja
maior que o valor da constante n denida pelo Pumping Lemma para linguagens livres de contexto,
portanto, p > n. Se = uvwxy pertence a L3, ento, de acordo com o Lemma, a sentena uwy
tambm deve pertencer. Seja q = |uwy|.
O comprimento das sentenas uv
i
wx
i
y, portanto, pode ser calculado da seguinte forma:
|uv
i
wx
i
y| = |uwy | +i

| vx|. Em particular, o comprimento da sentena |uv


q
wx
q
y| = |uwy |
+q

| vx| = q + q

| vx| = q

(1 + |vx|). Logo, o comprimento de |uv


q
wx
q
y| no primo e isso
prova que L3 no pode ser livre de contexto.
Vale lembrar que, no Exemplo 3.51 da Seo 3.8 (Pumping Lemma para as Linguagens
Regulares), esta mesma linguagem foi demonstrada como sendo no-regular. 2
4 Linguagens Livres de Contexto 253
4.11 Linguagens Livres de Contexto Determinsticas
Diferentemente da classe das linguagens regulares, que podem ser reconhecidas indistinta-
mente por autmatos nitos, determinsticos ou no-determinsticos, somente autmatos
de pilha no-determinsticos so capazes de reconhecer as linguagens livres de contexto,
no caso geral.
Esta concluso, que pode ser provada demonstrando-se a existncia de linguagens
livres de contexto no-reconhecveis por autmatos de pilha determinsticos, quaisquer
que sejam eles, possui uma importante conseqncia prtica, uma vez que os autmatos
de pilha no-determinsticos so por natureza pouco ecientes, e por isso constituem
modelos de implementao pouco atraentes em diversas situaes, entre as quais, na
importante rea de construo de compiladores.
Exemplo 4.41 A linguagem L1 = {ww
R
| w {a, b}

} no-determinstica, ou seja, reconhecida


apenas por autmatos de pilha no-determinsticos. Um exemplo de tal autmato, com critrio de
aceitao baseado em pilha vazia, apresentado na Figura 4.22.
q
0
q
1
(, Z
0
)/, (, A)/A, (, B)/B
(a, B)/AB, (b, A)/BA, (b, B)/BB
(a, Z
0
)/A, (b, Z
0
)/B, (a, A)/AA
(a, A)/, (b, B)/
Figura 4.22: Autmato de pilha para a linguagem {ww
R
|
w {a, b}

}
So exemplos de cadeias aceitas por este autmato aa e abba, como se pode vericar nos
reconhecimentos abaixo:
(q0, aa, Z0) (q0, a, A) (q1, a, A) (q1, , )
(q0, abba, Z0) (q0, bba, A) (q0, ba, BA) (q1, ba, BA) (q1, a, A) (q1, , )
Como fcil observar, a caracterstica no-determinstica do autmato fundamental para que
ele possa determinar o ponto exato da cadeia de entrada em que termina a subcadeia w e se inicia a
subcadeia w
R
: apenas uma movimentao em vazio no ponto central da cadeia ser capaz de fazer
com que o autmato atinja uma congrao nal. Tal caracterstica necessria, uma vez que o
autmato, por conta de suas prprias limitaes, no tem condies de determinar diretamente o
ponto exato em que se inicia a cadeia w
R
. 2
Assim, apesar do elevado interesse prtico exibido pelas linguagens livres de con-
texto, decorrente da relativa facilidade com que elas podem ser representadas e ma-
nipuladas, a diculdade acima mencionada levou os pesquisadores a um estudo mais
aprofundado dessa classe de linguagens, visando fornecer aos projetistas e implementa-
dores de linguagens articiais subsdios que permitissem o aproveitamento prtico das
caractersticas dessa classe de linguagens, sem no entanto sacricar o desempenho dos
respectivos reconhecedores pela presena de eventuais no-determinismos.
Como conseqncia, foi identicada e caracterizada a classe das linguagens livres
de contexto determinsticas, que se provou ser subconjunto prprio das linguagens
livres de contexto genricas. Por denio, linguagens livres de contexto determins-
ticas so aquelas que podem ser reconhecidas por autmatos de pilha determinsticos.
254 Linguagens Formais - Teoria, Modelagem e Implementao
Em outras palavras, uma linguagem livre de contexto dita determinstica se for poss-
vel demonstrar a existncia de pelo menos um autmato de pilha determinstico que a
reconhea.
A linguagem para a qual se pode provar a inexistncia de quaisquer autmatos de
pilha determinsticos que a reconheam, e, simultaneamente, a existncia de pelo menos
um autmato de pilha no-determinstico que a reconhea, denominada linguagem
livre de contexto no-determinstica, e o conjunto de tais linguagens constitui uma
classe importante das linguagens livres de contexto gerais.
A classe das linguagens livres de contexto determinsticas, tambm conhecida como
LR(k), apresenta um elevado interesse prtico, uma vez que propicia a obteno de im-
plementaes ecientes para todas as linguagens livres de contexto determinsticas. Por
outro lado, a restrio que as caracteriza felizmente no cria limitaes srias ao poder de
representao de tal classe de linguagens, quando comparado ao das linguagens do tipo
2 genricas, e como conseqncia as linguagens LR(k) constituem uma classe de lingua-
gens ainda muito aderente s necessidades prticas de representao sinttica formal das
linguagens de programao usuais, sendo por esse motivo largamente utilizadas na rea
de processamento de linguagens articiais, em especial das linguagens de programao.
Por sua vez, tambm como parte da classe das linguagens LR(k), possvel identi-
car uma nova classe de linguagens, constituda na forma de um subconjunto prprio, e
que tambm apresenta elevado interesse prtico: trata-se das linguagens LL(k), e a sua
caracterizao decorre da possibilidade de obteno de modelos de implementao ainda
mais ecientes do que os obtidos para as linguagens LR(k). No entanto, a sua abrangn-
cia signicativamente menor do que a das linguagens LR(k), e por esse motivo o seu
interesse prtico no to grande como o das primeiras, sendo no entanto bastante til
no caso de linguagens livres de contexto determinsticas com menor grau de sosticao
sinttica.
A seguir sero apresentadas as denies de gramticas e de linguagens LL(k) e
LR(k). Para maiores detalhes, exemplos, propriedades, algoritmos de vericao gra-
matical e tcnicas de construo de reconhecedores para essas classes de linguagens,
recomenda-se a leitura de [48] ou [49].
Suponha-se que G = (V, , P, S) seja uma gramtica livre de contexto. Ento:
Diz-se que G uma gramtica LL(k) se for possvel analisar deterministicamente
as cadeias de L(G) da seguinte forma: quaisquer que sejam a cadeia de entrada
w L(G) e a forma sentencial X, obtida por meio da aplicao exclusiva de
derivaes mais esquerda, e tal que S

X, com

, X N e V

,
se a escolha da produo X puder ser feita de forma unvoca, inspecionando-
se no mximo os k primeiros smbolos de , onde X

.
A aplicao da produo escolhida faz com que X e, eventualmente,

w.
Diz-se que G uma gramtica LR(k) se for possvel analisar deterministicamente
as cadeias de L(G) da seguinte forma: quaisquer que sejam a cadeia de entrada
w L(G) e a forma sentencial , obtida por meio da aplicao exclusiva de re-
dues
3
mais esquerda, e tal que w

, com , V

e ,

,
se a escolha da produo X puder ser feita de forma unvoca, inspecionando-
3
Uma reduo corresponde ao inverso de uma derivao, ou seja, substituio do lado direito de uma produo,
em uma forma sentencial, pelo lado esquerdo correspondente. Por exemplo, se X uma produo, ento
X denota uma derivao e X denota uma reduo. Uma seqncia de redues mais
esquerda corresponde ordem inversa da seqncia de derivaes mais direita que gera a mesma cadeia.
4 Linguagens Livres de Contexto 255
se no mximo os k primeiros smbolos de . A aplicao da produo escolhida
faz com que X e, eventualmente, X

S.
Diz-se que uma linguagem LL(k) se ela for gerada por uma gramtica LL(k). Por
outro lado, de acordo com a denio, toda gramtica LL(k) , naturalmente, tambm
uma gramtica LL(k + 1), LL(k + 2) etc. Logo, toda linguagem LL(k) tambm uma
linguagem LL(k + 1), LL(k + 2) etc. Na prtica, no entanto, costuma-se atribuir a uma
linguagem o menor valor de k entre todas as gramticas que a geram. Consideraes
anlogas se aplicam ao caso das gramticas e das linguagens LR(k).
Do ponto de vista da hierarquia de incluso prpria das linguagens formais, a classe
das linguagens LR(k) e a classe das linguagens LL(k) situam-se entre a classe das lingua-
gens regulares e a classe das linguagens livres de contexto genricas, conforme ilustrado
na Figura 4.23:
Figura 4.23: As subclasses LL(k) e LR(k)
A demonstrao da equivalncia entre a classe das linguagens livres de contexto que
podem ser reconhecidas deterministicamente e a classe das linguagens LR(k) pode ser
encontrada em [47]. A demonstrao da existncia de um algoritmo para determinar se
uma dada gramtica LR(k) para um certo valor de k tambm pode ser encontrada em
[47].
Exemplo 4.42 A linguagem L2 = {a
n
b
n
c | n 0} LL(1), porm no regular. A no-regularidade
pode ser demonstrada facilmente pela aplicao do Pumping Lemma para as linguagens regulares.
A gramtica livre de contexto G2 abaixo gera esta linguagem:
G2 = (V, , P, S)
V = {S, X, a, b, c}
= {a, b, c}
P = {S Xc, X aXb | }
Quaisquer que sejam a forma sentencial e a cadeia de entrada consideradas, o seguinte critrio
permite determinar univocamente a produo a ser aplicada:
Se a forma sentencial corrente for S:
Se o terminal corrente for a, escolhe-se a produo S Xc;
Se o terminal corrente for b, h um erro na cadeia de entrada;
Se o terminal corrente for c, escolhe-se a produo S Xc;
256 Linguagens Formais - Teoria, Modelagem e Implementao
Se a forma sentencial corrente for Xc:
Se o terminal corrente for a, escolhe-se a produo X aXb;
Se o terminal corrente for b, h um erro na cadeia de entrada;
Se o terminal corrente for c, escolhe-se a produo X ;
Se a forma sentencial corrente for a
i
Xb
i
c, i 1:
Se o terminal corrente for a, escolhe-se a produo X aXb;
Se o terminal corrente for b, escolhe-se a produo X ;
Se o terminal corrente for c, h um erro na cadeia de entrada.
Logo, G2 LL(1) LL(k) para k = 1 pois, dada uma forma sentencial, basta inspecionar
apenas um smbolo da cadeia de entrada para determinar univocamente a regra a ser aplicada.
Conseqentemente, L(G2) tambm LL(1).
Considerem-se as cadeias aabbc e c. As Tabelas 4.1 e 4.2 ilustram, respectivamente, as
seqncias de derivaes mais esquerda que reetem a operao de um reconhecedor LL(1) na
aceitao das mesmas. Os delimitadores [ e ] indicam o smbolo corrente da cadeia de entrada.
Forma sentencial Cadeia de entrada Produo utilizada
S [a]abbc S Xc
Xc [a]abbc X aXb
aXbc [a]abbc -
aXbc a[a]bbc X aXb
aaXbbc a[a]bbc -
aaXbbc aa[b]bc X
aabbc aa[b]bc -
aabbc aab[b]c -
aabbc aabb[c] -
aabbc aabbc -
Tabela 4.1: Seqncia de derivaes mais esquerda re-
alizada por um reconhecedor LL(1) na anlise da cadeia
aabbc
Forma sentencial Cadeia de entrada Produo utilizada
S [c] S Xc
Xc [c] X
c [c] -
c c -
Tabela 4.2: Seqncia de derivaes mais esquerda re-
alizada por um reconhecedor LL(1) na anlise da cadeia
c
2
Exemplo 4.43 Considere-se a linguagem L3 = {x
2n
y
2n
e | n 0} {x
2n+1
y
2n+1
o | n 0}. A
gramtica G3 abaixo gera esta linguagem:
4 Linguagens Livres de Contexto 257
G3 = (V, , P, S)
V = {S, E, O, x, y, e, o}
= {x, y, e, o}
P = {S Ee | Oo, E xOy | , O xEy}
Justica-se que a linguagem no LL(k) porque, para n genrico, no h um valor de k que
seja suciente para garantir a escolha da produo correta a ser aplicada na gramtica, qualquer que
seja ela. Fixe-se um valor arbitrrio para k, ou seja, k = . Basta escolher uma cadeia de entrada
em que 2n para que no se possa determinar univocamente a produo a ser aplicada. Em
outras palavras, qualquer que seja o valor de k selecionado, sempre haver uma cadeia pertencente
linguagem tal que a quantidade de smbolos x maior ou igual a k, inviabilizando o reconhecimento
da mesma como sendo pertencente ao conjunto {x
2n
y
2n
e} ou ao conjunto {x
2n+1
y
2n+1
o}.
Quaisquer que sejam a forma sentencial e a cadeia de entrada consideradas, o seguinte critrio
permite determinar univocamente a produo a ser aplicada:
Se a forma sentencial corrente for x
2n
y
2n
e, n 0 ou x
2n+1
y
2n+1
o, n 0:
Se o terminal corrente for y, escolhe-se a produo E ;
Se o terminal corrente for e, escolhe-se a produo E ;
Se o terminal corrente for o, h um erro na cadeia de entrada;
Se a forma sentencial corrente for x
2n
Ey
2n
e, n 0 ou x
2n+1
Ey
2n+1
o, n 0:
Escolhe-se a produo O xEy;
Se a forma sentencial corrente for x
2n
Oy
2n
o, n 0 ou x
2n+1
Oy
2n+1
e, n 0:
Escolhe-se a produo E xOy;
Se a forma sentencial corrente for Ee:
Escolhe-se a produo S Ee;
Se a forma sentencial corrente for Oo:
Escolhe-se a produo S Oo.
Logo, G3 LR(1), ou seja, LR(k) para k = 1, pois, dada uma forma sentencial, basta
inspecionar apenas um smbolo da cadeia de entrada para determinar univocamente a regra a ser
aplicada. Conseqentemente, L(G3) tambm LR(1).
As Tabelas 4.3 e 4.3 ilustram as seqncias de redues mais esquerda que reetem a
operao de um reconhecedor LR(1) na aceitao das cadeias xxyye e xxxyyyo, respectivamente.
Os delimitadores [ e ] indicam o smbolo corrente da cadeia de entrada.
258 Linguagens Formais - Teoria, Modelagem e Implementao
Forma sentencial Cadeia de entrada Produo utilizada
xxyye [x]xyye -
xxyye x[x]yye -
xxyye xx[y]ye E
xxEyye xx[y]ye O xEy
xOye xxy[y]e E xOy
Ee xxyy[e] S Ee
S xxyye -
Tabela 4.3: Seqncia de redues mais esquerda re-
alizada por um reconhecedor LR(1) na anlise da cadeia
xxyye
Forma sentencial Cadeia de entrada Produo utilizada
xxxyyyo [x]xxyyyo -
xxxyyyo x[x]xyyyo -
xxxyyyo xx[x]yyyo -
xxxyyyo xxx[y]yyo E
xxxEyyyo xxx[y]yyo O xEy
xxOyyo xxxy[y]yo E xOy
xEyo xxxyy[y]o O xEy
Oo xxxyyy[o] S Oo
S xxxyyyo -
Tabela 4.4: Seqncia de redues mais esquerda re-
alizada por um reconhecedor LR(1) na anlise da cadeia
xxxyyyo
2
Os Algoritmos de reconhecimento LL(k) e LR(k) apresentados nos Exemplos 4.42
e 4.43 foram elaborados com base em tcnicas cuja apresentao e discusso fogem ao
escopo deste texto. O assunto, no entanto, exaustivamente estudado na literatura sobre
compiladores e processadores de linguagens. Para mais detalhes, recomenda-se a leitura
de [28], [49], [48], [24], [26], [27] ou [29].
Gramticas e linguagens livres de contexto so extensivamente empregadas na de-
nio e na implementao de linguagens articiais, em particular das de programao.
Aninhamentos, ou construes sintticas que se repetem integralmente como partes de si
prprias, so muito comuns em linguagens de programao convencionais, manifestando-
se geralmente na especicao do uxo de controle (comandos e blocos aninhados), das
abstraes (procedimentos e funes aninhadas), das expresses (atravs do uso de pa-
rnteses aninhados) etc. Tal caracterstica torna o uso das linguagens (e das gramticas)
livres de contexto determinsticas muito atraente, uma vez que elas permitem a obteno
de representaes formais e de modelos de implementao que incorporam diretamente,
e a um custo relativamente baixo, a especicao e a anlise de construes sintticas
aninhadas.
Por esse motivo, as linguagens e as gramticas livres de contexto determinsticas,
sejam elas LR(k) ou LL(k), costumam ser empregadas na formalizao sinttica da ma-
ioria das linguagens de programao convencionais. Como conseqncia, os compiladores
4 Linguagens Livres de Contexto 259
dessas linguagens costumam ser construdos com base nos correspondentes autmatos de
pilha determinsticos. Tais reconhecedores, que servem como ponto de partida para a
construo de analisadores sintticos, so com freqncia usados como ncleos dos com-
piladores das respectivas linguagens, e a eles so agregados os demais mdulos de anlise
e de gerao de cdigo, para completar as funes do compilador.
4.12 Linguagens Livres de Contexto No-Ambguas
O estudo sistemtico das gramticas e das linguagens livres de contexto, realizado nas
dcadas de 1960 e 1970, teve como principal nalidade a obteno de reconhecedores
ecientes para classes de linguagens sucientemente abrangentes, de forma a permitir a
sua aplicao prtica na construo de compiladores para linguagens de programao de
alto nvel comerciais.
Entre os principais resultados obtidos naquela poca, encontra-se uma classicao
hierrquica das gramticas livres de contexto, criada a partir de especializaes do modelo
geral de gramtica livre de contexto apresentado na Seo 4.1. Tais especializaes,
apresentadas e discutidas em [49] e [25], denem, entre outras, as classes das gramticas
LL(k) e das gramticas LR(k), discutidas na Seo 4.11, e tambm a importante classe
das gramticas no-ambguas, conforme ilustrado na Figura 4.24.
Figura 4.24: Hierarquia das gramticas livres de contexto
Conforme mencionado na Seo 4.11, a classe das gramticas LR(k) corresponde
exatamente classe das linguagens determinsticas. Por outro lado, conforme denido na
Seo 4.1, a classe das gramticas livres de contexto gerais, sobre as quais no se aplica
qualquer restrio adicional, corresponde classe das linguagens livres de contexto gerais.
A Figura 4.25 ilustra tais relaes.
260 Linguagens Formais - Teoria, Modelagem e Implementao
Figura 4.25: Correspondncia entre classes de gramticas e clas-
ses de linguagens livres de contexto
Conforme discutido em [49], demonstra-se que a relao de incluso entre as classes
de gramticas representadas na Figura 4.24 prpria. Isso signica que possvel ga-
rantir a existncia, j vericada na Seo 4.4, de gramticas livres de contexto que no
pertencem classe das gramticas livres de contexto no-ambguas sendo, portanto,
ambguas , e tambm de gramticas livres de contexto que no so LR(k), porm ainda
assim so no-ambguas.
Dessa forma, cumpre responder questo: Ser possvel identicar alguma sub-
classe das linguagens livres de contexto que esteja em correspondncia com a classe das
gramticas livres de contexto no-ambguas?.
Para responder a essa questo, considere-se:
1. Conforme a denio, toda e qualquer linguagem livre de contexto que no seja
inerentemente ambgua (ver Seo 4.4) pode ser gerada por pelo menos uma gra-
mtica livre de contexto no-ambgua. Portanto, razovel considerar-se uma
classe de linguagens livres de contexto no-ambguas.
2. De acordo com a hierarquia de gramticas apresentada na Figura 4.24, toda gra-
mtica livre de contexto LR(k) tambm uma gramtica livre de contexto no-
ambgua, o que implica que a classe das linguagens livres de contexto determins-
ticas est includa na classe das linguagens livres de contexto no-ambguas.
3. Considere-se a linguagem{ww
R
| w {a, b}

}, que pode ser gerada pela gramtica


no-ambgua G = ({S, a, b, }, {a, b}, {S aSa | bSb | }, S), mas no pode ser
reconhecida por nenhum autmato de pilha determinstico (ver Exemplo 4.41).
Trata-se, portanto, de uma linguagem livre de contexto no-ambgua, porm no-
determinstica, e a sua existncia demonstra que a relao de incluso entre a classe
das linguagens determinsticas e a classe das linguagens no-ambguas prpria.
4. Ainda de acordo com a hierarquia de gramticas apresentada na Figura 4.24,
toda gramtica livre de contexto no-ambgua tambm uma gramtica livre de
contexto geral, o que implica que a classe das linguagens livres de contexto no-
ambguas est includa na classe das linguagens livres de contexto gerais.
4 Linguagens Livres de Contexto 261
5. As linguagens inerentemente ambguas, de acordo com a denio apresentada na
Seo 4.4, so aquelas para as quais inexistem gramticas livres de contexto no-
ambguas que as denam. Tais linguagens so denidas exclusivamente atravs
de gramticas livres de contexto ambguas. Portanto, existem linguagens livres
de contexto gerais que no podem ser consideradas no-ambguas, e a relao de
incluso entre essas duas classes de linguagens tambm prpria. Um exemplo
a linguagem inerentemente ambgua {a
n
b
n
c
m
d
m
| n 1, m 1} {a
n
b
m
c
m
d
n
|
n 1, m 1}, do Exemplo 4.15.
Logo, natural concluir que a resposta para a pergunta anterior : Sim, e ela
corresponde classe das linguagens livres de contexto no inerentemente ambguas ou,
simplesmente, no-ambguas.
Em outras palavras, a classe das linguagens livres de contexto no-ambguas
est includa propriamente na classe das linguagens livres de contexto gerais, e a classe
das linguagens livres de contexto que no so no-ambguas corresponde classe das
linguagens livres de contexto que so inerentemente ambguas. A Figura 4.26 ilustra
essas relaes.
Figura 4.26: A classe das linguagens livres de contexto no-
ambguas
Tal resultado permite chegar s seguintes concluses adicionais:
Toda linguagem livre de contexto determinstica tambm no-ambgua, ou seja,
se existe um autmato de pilha determinstico que reconhece uma linguagem,
ento existe tambm uma gramtica livre de contexto no-ambgua que a gera.
De forma equivalente, pode-se tambm dizer que toda gramtica LR(k) tambm
no-ambgua.
Nem toda linguagem livre de contexto no-ambgua determinstica. Em outras
palavras, existem linguagens livres de contexto que podem ser geradas por gra-
mticas no-ambguas, mas que podem ser reconhecidas apenas atravs de aut-
matos de pilha no-determinsticos. De outra forma, pode-se tambm armar
que certas linguagens livres de contexto podem apenas ser geradas por gramticas
no-ambguas que no so LR(k).
262 Linguagens Formais - Teoria, Modelagem e Implementao
Toda linguagem inerentemente ambgua tambm no-determinstica. Isso sig-
nica que a inexistncia de uma gramtica no-ambgua que gera determinada
linguagem implica a inexistncia de um autmato de pilha determinstico que re-
conhea essa mesma linguagem. Implica, tambm, a inexistnca de uma gramtica
LR(k) que a gere.
A relao entre a classe das linguagens livres de contexto e as diversas subclasses nela
contidas, conforme discutido na Seo 4.11 e tambm na presente seo, est representada
de forma resumida na Figura 4.27.
Figura 4.27: Relao entre as diversas subclasses das linguagens
livres de contexto
A existncia de um subconjunto das linguagens livres de contexto que seja simulta-
neamente no-ambguo e determinstico, e que ainda assim seja sucientemente abran-
gente para representar uma vasta gama de linguagens de programao de alto nvel
comerciais, um dos resultados mais marcantes da teoria das linguagens livres de con-
texto. Ele serviu de base para a rpida consolidao e avano tecnolgico vericados,
nas dcadas de 1960 e 1970, nas reas de especicao de linguagens de programao e
de construo de seus processadores (compiladores e interpretadores).
4.13 Propriedades de Fechamento
As linguagens livres de contexto so fechadas em relao s operaes de unio, concate-
nao e fecho de Kleene. Elas no so fechadas em relao s operaes de complemento
e interseco. Os teoremas seguintes apresentam as respectivas demonstraes.
Teorema 4.18 (Fecho na unio) As linguagens livres de contexto so fechadas em re-
lao operao de unio.
Justicativa Sejam L
1
e L
2
duas linguagens livres de contexto quaisquer. Ento, L
1
=
L
1
(G
1
) e L
2
= L
2
(G
2
), G
1
e G
2
sendo duas gramticas livres de contexto: G
1
=
(V
1
,
1
, P
1
, S
1
) e G
2
= (V
2
,
2
, P
2
, S
2
). Admita-se que N
1
N
2
= . Se isso no
for verdade, os smbolos no-terminais podem ser facilmente renomeados, sem prejuzo
para as linguagens que estiverem sendo denidas.
4 Linguagens Livres de Contexto 263
A linguagem L
3
= L
1
L
2
gerada pela gramtica G
3
, ou seja, L
3
= L
3
(G
3
), com
G
3
= (V
3
,
3
, P
3
, S
3
), onde:
V
3
= V
1
V
2
{S
3
}

3
=
1

2
P
3
= P
1
P
2
{S
3
S
1
, S
3
S
2
}
Como, por hiptese e por construo, as regras contidas em P
3
atendem, todas, s
condies necessrias para uma gramtica ser classicada como livre de contexto, segue
que G
3
livre de contexto e, conseqentemente, L
3
uma linguagem livre de contexto.
Teorema 4.19 (Fecho na concatenao) As linguagens livres de contexto so fecha-
das em relao operao de concatenao.
Justicativa Sejam L
1
e L
2
duas linguagens livres de contexto quaisquer. Ento, L
1
=
L
1
(G
1
) e L
2
= L
2
(G
2
), G
1
e G
2
sendo duas gramticas livres de contexto: G
1
=
(V
1
,
1
, P
1
, S
1
) e G
2
= (V
2
,
2
, P
2
, S
2
). Admita-se que N
1
N
2
= . Se isso no
for verdade, os smbolos no-terminais podem ser facilmente renomeados, sem prejuzo
para as linguagens que estiverem sendo denidas.
A linguagem L
3
= L
1
L
2
gerada pela gramtica G
3
, ou seja, L
3
= L
3
(G
3
), com
G
3
= (V
3
,
3
, P
3
, S
3
), onde:
V
3
= V
1
V
2
{S
3
}

3
=
1

2
P
3
= P
1
P
2
{S
3
S
1
S
2
}
Como, por hiptese e por construo, as regras contidas em P
3
atendem, todas, s
condies necessrias para uma gramtica ser classicada como livre de contexto, segue
que G
3
livre de contexto e, conseqentemente, L
3
uma linguagem livre de contexto.
Teorema 4.20 (Fecho no fecho) As linguagens livres de contexto so fechadas em re-
lao operao de fecho de Kleene.
Justicativa Seja L
1
uma linguagem livre de contexto qualquer. Ento, L
1
= L
1
(G
1
), G
1
sendo uma gramtica livre de contexto: G
1
= (V
1
,
1
, P
1
, S
1
).
A linguagem L
2
= L

1
gerada pela gramtica G
2
, ou seja, L
2
= L
2
(G
2
), com
G
2
= (V
2
,
2
, P
2
, S
2
), onde:
V
2
= V
1
{S
2
}

2
=
1
P
2
= P
1
{S
2
S
1
S
2
, S
2
}
Como, por hiptese e por construo, as regras contidas em P
2
atendem, todas, s
condies necessrias para uma gramtica ser classicada como livre de contexto, segue
que G
2
livre de contexto e, conseqentemente, L
2
uma linguagem livre de contexto.
264 Linguagens Formais - Teoria, Modelagem e Implementao
Teorema 4.21 (Fecho na interseco) As linguagens livres de contexto no so fe-
chadas em relao operao de interseco.
Justicativa suciente, para provar este teorema, que existem pelo menos duas lin-
guagens livres de contexto cuja interseco gera uma linguagem que no seja livre de
contexto.
Considerem-se as linguagens L
1
= {a
m
b
m
c
n
| m 1, n 1} e L
2
= {a
n
b
m
c
m
|
m 1, n 1}. fcil demonstrar que essas linguagens so geradas, respectivamente,
pelas gramticas livres de contexto G
1
e G
2
:
G
1
= ({a, b, c, S, X, Y}, {a, b, c},
{S XY, X aXb, X ab, Y cY, Y c}, S)
G
2
= ({a, b, c, S, X, Y}, {a, b, c},
{S XY, X aX, X a, Y bYc, Y bc}, S)
Por outro lado, a linguagem L
3
= L
1
L
2
= {a
m
b
m
c
m
| m 1} uma linguagem
que no livre de contexto, conforme ilustrado na aplicao do Pumping Lemma para
linguagens livres de contexto (ver Exemplo 4.38).
No obstante este resultado, possvel demonstrar que a interseco de uma lin-
guagem livre de contexto com uma linguagem regular gera sempre uma linguagem livre
de contexto.
Teorema 4.22 (Interseco com linguagem regular) Sejam L
1
e L
2
, respectiva-
mente, uma linguagem regular e uma linguagem livre de contexto. Ento, L
1
L
2
uma
linguagem livre de contexto.
Justicativa Sejam M
1
um autmato nito determinstico e M
2
um autmato de pi-
lha que reconhecem, respectivamente, as linguagens L
1
e L
2
. A linguagem L
3
= L
1
L
2
reconhecida pelo autmato de pilha M
3
construdo conforme o Algoritmo 4.14.
Algoritmo 4.14 (Interseco com linguagem regular) Obteno de um autmato
de pilha que reconhece a linguagem correspondente interseco de uma linguagem livre
de contexto com uma linguagem regular.
Entradas:
um autmato nito determinstico M
1
= (Q
1
, ,
1
, q
01
, F
1
);
um autmato de pilha M
2
= (Q
2
, , ,
2
, q
02
, Z
0
, F
2
);
Sada: um autmato de pilha M
3
= (Q
3
, , ,
3
, q
03
, Z
0
, F
3
), com critrio de acei-
tao de pilha vazia, tal que V(M
3
) = L(M
1
) L(M
2
);
Mtodo:
1. Q
3
= Q
1
Q
2
;
2. q
03
= (q
01
, q
02
);
4 Linguagens Livres de Contexto 265
3. F
3
= F
1
F
2
;
4.
3
denida como:
a)
3
((q
i
, q
m
), , X) = {((q
j
, q
n
), )},
para
1
(q
i
, ) = q
j
e
2
(q
m
, , X) = {(q
n
, )};
b)
3
((q
i
, q
m
), , X) = {((q
i
, q
n
), )},
para
2
(q
m
, , X) = {(q
n
, )}.
possvel demonstrar (ver [46]), por induo sobre o tamanho das cadeias analisa-
das pelos autmatos, que ((q
01
, q
02
), w, Z
0
)

((q
r
, q
s
), , ), (q
r
, q
s
) F
3
, se e somente
se (q
01
, w)

(q
s
, ), q
s
F
1
e (q
02
, w, Z
0
)

(q
r
, , ), q
r
F
2
.
Em outras palavras, M
3
aceita w se e apenas se M
1
e M
2
tambm aceitam w. Se
M
1
e/ou M
2
rejeitam w, ento M
3
tambm rejeita w. Logo, L
3
corresponde interseco
das linguagens L
1
e L
2
, e a existncia de M
3
prova que L
3
uma linguagem livre de
contexto.
Este teorema mostra como construir um autmato de pilha M
3
que simula, de
maneira simultnea, as conguraes que podem ser assumidas por um outro autmato
de pilha M
2
e um autmato nito determinstico M
1
no reconhecimento de uma mesma
cadeia de entrada.
Assim, os estados de M
3
correspondem ao produto cartesiano Q
1
Q
2
. Se M
3
se
encontrar no estado (q
i
, q
m
), isso signica que, naquela situao, M
1
encontrar-se- no
estado q
i
e M
2
no estado q
m
, se estivessem operando separadamente no reconhecimento
da mesma cadeia de entrada.
Se a entrada for aceita simultaneamente no estado q
i
de M
1
e no estado q
m
de
M
2
, ento uma nova transio acrescentada em M
3
com o smbolo partindo do estado
(q
i
, q
m
) e com destino no estado (
1
(q
i
),
2
(q
m
)).
Transies sem consumo de smbolo na cadeia de entrada de M
2
da forma

2
(q
i
, , X) = {(q
j
, )} podem ser simuladas sem diculdade em M
3
, bastando para
isso preservar o estado corrente de M
1
em M
3
, uma vez que M
1
, por denio, deter-
minstico, isento de transies em vazio.
Pelo fato de M
1
ser um autmato nito, que no necessita de pilha para operar, esta
manipulada por M
3
de forma a reproduzir a manipulao executada de forma isolada
por M
2
.
A cadeia de entrada ser aceita se M
3
atingir um estado nal (composto por estados
nais de M
1
e de M
2
) com a cadeia de entrada esgotada e com a pilha vazia. Nesta
congurao ocorre a aceitao simultnea da cadeia de entrada por M
1
e M
2
.
Exemplo 4.44 Sejam L1 = (ab

| ba

) e L2 = (a
n
b
n+1
| b
n
a
n+1
), respectivamente reconhecidas
pelo autmato nito M1 e pelo autmato de pilha M2 mostrados nas Figuras 4.28 e 4.29.
266 Linguagens Formais - Teoria, Modelagem e Implementao
q
01
q
11
q
12
b
a
a
b
Figura 4.28: Autmato nito que reconhece L1 = (ab

|
ba

)
q
02
q
21
q
23
(a, Z
0
)/AZ
0
(b, Z
0
)/BZ
0
(a, A)/AA
(b, B)/BB
q
22
q
24
(b, A)/
(a, B)/
(b, Z
0
)/
(b, A)/
(a, Z
0
)/
(a, B)/
(, Z
0
)/Z
0
(, Z
0
)/Z
0
Figura 4.29: Autmato de pilha que reconhece L2 =
(a
n
b
n+1
| b
n
a
n+1
)
A linguagem L3 = L1 L2 reconhecida pelo autmato de pilha M3, construdo conforme o
Algoritmo 4.14, utilizado na demonstrao do Teorema 4.22:
Q3 = {(q01, q02), (q01, q21), (q01, q22), (q01, q23), (q01, q24),
(q11, q02), (q11, q21), (q11, q22), (q11, q23), (q11, q24),
(q12, q02), (q12, q21), (q12, q22), (q12, q23), (q12, q24)}
F3 = {(q11, q22), (q11, q24), (q12, q22), (q12, q24)}
3 = {((q01, q02), , Z0) ((q01, q21), Z0),
((q01, q02), , Z0) ((q01, q23), Z0),
((q01, q21), a, Z0) ((q12, q21), AZ0),
((q01, q21), a, A) ((q12, q21), AA),
((q01, q21), b, A) ((q11, q22), ),
((q01, q22), b, Z0) ((q11, q22), ),
4 Linguagens Livres de Contexto 267
((q01, q22), b, A) ((q11, q22), ),
((q01, q23), a, B) ((q12, q24), ),
((q01, q23), b, Z0) ((q11, q23), BZ0),
((q01, q23), b, B) ((q11, q23), BB),
((q01, q24), a, Z0) ((q12, q24), ),
((q01, q24), a, B) ((q12, q24), ),
((q11, q02), , Z0) ((q11, q21), Z0),
((q11, q02), , Z0) ((q11, q23), Z0),
((q11, q21), a, Z0) ((q11, q21), AZ0),
((q11, q21), a, A) ((q11, q21), AA),
((q11, q23), a, B) ((q11, q24), ),
((q11, q24), a, B) ((q11, q24), ),
((q11, q24), a, Z0) ((q11, q24), ),
((q12, q02), , Z0) ((q12, q21), Z0),
((q12, q02), , Z0) ((q12, q23), Z0),
((q12, q21), b, A) ((q12, q22), ),
((q12, q22), b, Z0) ((q12, q22), ),
((q12, q22), b, A) ((q12, q22), ),
((q12, q23), b, Z0) ((q12, q24), BZ0),
((q12, q23), b, B) ((q12, q24), BB)}
O autmato resultante M3, excludos os estados inteis e inacessveis, e com os demais estados
renomeados, representado na Figura 4.30. Note-se que a linguagem resultante, alm de livre de
contexto, tambm regular. Por essa razo, o autmato de pilha resultante foi convertido para um
autmato nito equivalente.
q
0
q
1
q
4
b
a
q
3
q
6
q
2
q
5
a a
b b
Figura 4.30: Autmato nito que reconhece a interseco
de L1 com L2
A linguagem reconhecida por M3 (abb | baa), portanto livre de contexto, regular e nita.
Observe-se e compare-se o reconhecimento destas duas sentenas em M1, M2 e M3. Note-se que a
congurao nal assumida por M3 compreende as conguraes nais assumidas por M1 e por M2
para uma mesma cadeia de entrada.
M1:
(q01, abb) (q12, bb) (q12, b) (q12, )
(q01, baa) (q11, aa) (q11, a) (q11, )
M2:
(q02, abb, Z0) (q21, abb, Z0) (q21, bb, AZ0) (q22, b, Z0) (q22, , )
268 Linguagens Formais - Teoria, Modelagem e Implementao
(q02, baa, Z0) (q23, baa, Z0) (q23, aa, BZ0) (q24, a, Z0) (q24, , )
M3:
((q01, q02), abb, Z0) ((q01, q21), abb, Z0) ((q12, q21), bb, AZ0)
((q12, q22), b, Z0) ((q12, q22), , )
((q01, q02), baa, Z0) ((q01, q23), baa, Z0) ((q11, q23), aa, BZ0)
((q11, q24), a, Z0) ((q11, q24), , )
2
Teorema 4.23 (Fecho na complementao) As linguagens livres de contexto no
so fechadas em relao operao de complementao.
Justicativa Dadas duas linguagens L
1
e L
2
quaisquer, sabido (Lei de De Morgan,
ver Teorema 1.1) que:
L
1
L
2
= L
1
L
2
Nesta igualdade esto envolvidas apenas as operaes de interseco, unio e com-
plementao. Sabe-se, conforme demonstrao anterior (Teorema 4.18), que as lingua-
gens livres de contexto so fechadas em relao operao de unio. Se elas fossem
fechadas tambm em relao operao de complemento, deveriam necessariamente ser
fechadas em relao operao de interseco. Como isso no verdade (Teorema 4.21),
conclui-se que as linguagens livres de contexto no so fechadas em relao operao
de complementao.
4.14 Questes Decidveis e No-Decidveis
Assim como acontece com a classe das linguagens regulares, existem diversas questes
acerca das linguagens livres de contexto que podem sempre ser decididas, quaisquer que
sejam as linguagens envolvidas. Por outro lado, certas questes que so decidveis para a
classe das linguagens regulares no podem ser decididas no caso geral, quando transpostas
para a classe das linguagens livres de contexto (por exemplo, a questo L =

decidvel
no caso das linguagens regulares, porm no decidvel no caso das linguagens livres de
contexto).
Teorema 4.24 (A cadeia pertence?) Sejam L uma linguagem livre de contexto sobre
e uma cadeia pertencente a

. Ento, a questo L? decidvel.


Justicativa Conforme o Algoritmo 4.15.
Algoritmo 4.15 (A cadeia pertence?) Determinao da pertinncia da cadeia w

linguagem livre de contexto L

.
Entrada: uma cadeia w

e uma linguagem livre de contexto L

;
Sada: SIM, se w

; NO, caso contrrio;


Mtodo:
1. Obter uma gramtica livre de contexto G tal que L = L(G);
4 Linguagens Livres de Contexto 269
2. Se w = , ento:
a) Determinar, conforme o Algoritmo 4.3 (eliminao de produes em
vazio em gramticas livres de contexto), se S (a raiz de G) pertence
ao conjunto E; em caso armativo, a resposta SIM; caso contrrio,
a resposta NO;
3. Se w = , ento:
a) Obter G

na Forma Normal de Greibach (ver Algoritmo 4.8 na Seo


4.6), tal que L(G

) = L(G) {};
b) Considerar n = |w|;
c) Considerar m como o maior nmero de produes denido para um
no-terminal, entre todos os no-terminais de G

;
d) Obter todas as seqncias de derivaes mais esquerda que geram
formas sentenciais cujo prexo seja uma cadeia de terminais de com-
primento mximo n (existem no mximo m
n
seqncias distintas);
e) Vericar se alguma dessas seqncias de derivao corresponde gera-
o da cadeia w; em caso armativo, a resposta SIM; caso contrrio,
a resposta NO.

Exemplo 4.45 Considere-se a gramtica abaixo, j apresentada na Forma Normal de Greibach:


G = ({S, B, C, a, b, c}, {a, b, c}, P, S)
P = {S aBC | bBC,
B bB | b,
C c}
Considere-se a cadeia abbc L(G). Ento, n = 4 e m = 2 (pois existem duas produes para
S, duas para B e apenas uma para C) e, conforme o Algoritmo 4.15, existem no mximo 2
4
= 16
seqncias distintas de derivaes mais esquerda que geram como prexo uma cadeia de terminais
de comprimento mximo 4, no havendo necessidade de se inspecionar outras seqncias. A Tabela
4.5 relaciona todas as oito seqncias que geram cadeias de terminais de comprimento mximo 4.
270 Linguagens Formais - Teoria, Modelagem e Implementao
Seqncia V

1 S aBC abBC abbBC abbbBC


2 abbbC
3 abbC abbc
4 abC abc
5 bBC bbBC bbbBC bbbbBC
6 bbbbC
7 bbbC bbbc
8 bbC bbc
Tabela 4.5: Derivaes mais esquerda que geram prexos
de comprimento mximo 4
Como se pode vericar, a seqncia de derivaes 3 produz a cadeia abbc. Por outro lado, a
cadeia bcbc, tambm de comprimento 4, no pertence linguagem, uma vez que nenhuma das oito
seqncias da Tabela 4.5 gera o prexo bcbc e, portanto, nenhuma seqncia de derivaes capaz
de gerar a cadeia bcbc. 2
O tempo de execuo do Algoritmo 4.15 proporcional a m
n
, onde n o compri-
mento da cadeia de entrada. Logo, esse tempo varia exponencialmente com o tamanho
da cadeia, o que um resultado considerado ineciente, e portanto indesejvel do ponto
de vista prtico. Diversos outros algoritmos, no entanto, apresentam tempos de execuo
que so proporcionais a n
3
(ou menos), o que implica importantes ganhos de desempe-
nho. Uma discusso sobre tais algoritmos, assim como referncias, pode ser encontrada
em [46], ou na literatura sobre compiladores, e foge ao escopo da presente publicao.
Por outro lado, conforme o Algoritmo 4.11 (obteno de um autmato de pilha a
partir de uma gramtica livre de contexto na Forma Normal de Greibach), possvel
construir um autmato de pilha que sempre pra, qualquer que seja a cadeia de entrada
que lhe seja submetida. De fato, cada movimentao do autmato construdo com base
naquele algoritmo efetua o consumo de um smbolo da cadeia de entrada. Como o
comprimento dessa cadeia nito, e inexistem ciclos formados por transies em vazio em
tal autmato, seu processamento pra aps um nmero nito de passos (correspondente
ao comprimento da cadeia de entrada), e o mesmo pode ser usado como alternativa para
se determinar se uma cadeia qualquer (no-vazia) pertence a uma linguagem livre de
contexto.
Fica, portanto, demonstrada a existncia de autmatos de pilha que sempre param,
quaisquer que sejam a linguagem livre de contexto considerada e a cadeia de entrada que
lhes sejam submetidas. Essa propriedade anloga obtida no Teorema 3.26 (pertinncia
de uma cadeia a uma linguagem regular), que garante a existncia de autmatos nitos
que sempre param, quaisquer que sejam a linguagem regular considerada e a cadeia de
entrada que lhes seja submetida.
Teorema 4.25 (A linguagem vazia?) Seja L uma linguagem livre de contexto. En-
to, a questo L = ? decidvel.
Justicativa L = se e somente se L no contm nenhuma sentena de comprimento
menor que n, onde n a constante denida pelo Pumping Lemma para linguagens
livres de contexto. Tal fato pode ser vericado por demonstrao semelhante que foi
feita no Teorema 3.23 (determina se uma linguagem regular vazia ou no-vazia).
4 Linguagens Livres de Contexto 271
Uma maneira alternativa de se vericar se L = consiste em obter uma gramtica
G = (V, , P, S), sem smbolos inteis, que gere L. Se S V, ento L no-vazia. Caso
contrrio, L vazia.
Teorema 4.26 (A linguagem innita?) Seja L uma linguagem livre de contexto.
Ento, a questo L innita? decidvel.
Justicativa L innita se e somente se contiver pelo menos uma sentena de compri-
mento maior ou igual a n e menor que 2n, onde n a constante denida pelo Pumping
Lemma para linguagens livres de contexto. Tal fato pode ser vericado por demonstra-
o semelhante que foi feita no Teorema 3.24 (determina se uma linguagem regular
nita ou innita).
Uma outra maneira de se determinar se L innita consiste em obter uma gramtica
sem smbolos inteis que gere L, e depois vericar se existem no-terminais X auto-
recursivos na mesma (X X,
+
). Caso exista pelo menos um no-terminal
auto-recursivo (no necessariamente central), ento L innita. Caso contrrio, L
nita.
Teorema 4.27 (A linguagem nita?) Seja L uma linguagem livre de contexto. En-
to, a questo L nita? decidvel.
Justicativa Decorre diretamente do resultado dos teoremas anteriores: se L no in-
nita (Teorema 4.26), ento L nita. Se L = (Teorema 4.25), ento L nita e vazia,
caso contrrio nita e no-vazia.
As seguintes questes acerca das linguagens e das gramticas livres de contexto
(respectivamente L, G, G
1
e G
2
quaisquer) no so decidveis e no sero demonstradas
neste livro.
G ambgua?
L inerentemente ambgua?
L(G) regular?
L(G) =

?
L(G
1
) = L(G
2
)?
L(G
1
) L(G
2
)?
L(G
1
) L(G
2
) = ?
L(G
1
) L(G
2
) livre de contexto?
L(G
1
) livre de contexto?
Naturalmente, por se tratar de questes no-decidveis, demonstra-se a inexistncia
de quaisquer algoritmos que solucionem essas questes no caso geral. Tais demonstraes
podem ser encontradas em [46].
5 Linguagens Sensveis ao Contexto
Linguagens sensveis ao contexto so aquelas cujas sentenas exibem caractersticas de
dependncia ou vinculao entre trechos distintos das mesmas. Ou seja, determina-
das partes de uma sentena s sero consideradas vlidas se ocorrerem simultaneamente
a trechos relacionados, presentes em outras regies da mesma sentena. Da a origem do
nome sensibilidade ao contexto.
Deve-se, no entanto, entender corretamente o signicado do termo sensibilidade ao
contexto, tambm conhecido como dependncia de contexto, pois no qualquer tipo
de vinculao que caracteriza esta propriedade das linguagens.
Em particular, no se est interessado em quaisquer das dependncias que possam
ser representadas por gramticas livres de contexto, tais como seqncias simples de
smbolos ou mesmo o balanceamento de smbolos, tpico das linguagens livres de contexto.
Exemplo 5.1 Seja a linguagem das sentenas que representam expresses aritmticas com at quatro
operaes sobre o alfabeto {a, b}, gerada pela gramtica:
E E + E
| E E
| E E
| E / E
| (E)
| a
| b
Um exemplo de sentena pertencente a esta linguagem a (b + (a/b) a). claro que,
neste caso, possvel vericar algumas dependncias de contexto, no sentido literal da palavra. Por
exemplo, as ocorrncias dos parnteses. No seria possvel fechar o segundo parnteses se o primeiro
no tivesse sido aberto. Outro exemplo que, de cada lado do smbolo de diviso, deve existir uma
letra a ou b, representando cada um dos operandos desta operao. 2
Tais tipos de dependncia de contexto podem ser facilmente representados por
gramticas livres de contexto e, por isso, no sero considerados como tal neste estudo.
Aqui, por outro lado, o interesse maior em outros tipos de dependncias con-
textuais, que no possam ser representadas atravs das gramticas livres de contexto.
Tais dependncias caracterizam linguagens mais complexas que as linguagens livres de
contexto, e constituem o objeto deste captulo.
preciso, portanto, analisar esse tipo de dependncias, referidas nesta introduo.
Um bom exemplo para o seu entendimento so as dependncias de contexto que so
encontradas nas linguagens de programao de alto nvel mais comuns.
Tais linguagens costumam oferecer declaraes diversas, como, por exemplo, de-
claraes de tipos, de constantes, de variveis, de procedimentos, de funes etc. Tais
declaraes cumprem o propsito duplo de acrescentar novos nomes ao espao de nomes
criado pelo programador, e de associar-lhes atributos (por exemplo, no caso das variveis,
seus tipos; no caso das funes, a quantidade e o tipo de seus parmetros, bem como o
tipo do valor retornado).
274 Linguagens Formais - Teoria, Modelagem e Implementao
Uma vez declarados, os novos nomes podem ser empregados no corpo do programa.
Normalmente, tais linguagens exigem que apenas nomes declarados possam ser referen-
ciados em comandos e expresses; alm disso, que a utilizao dos mesmos seja feita de
forma coerente com os atributos que lhes foram associados.
o caso, por exemplo, de se utilizar, no lado esquerdo de um comando de atri-
buio, apenas variveis declaradas e visveis no local da referncia. o caso, tambm,
de se utilizar, na expresso do lado direito de um comando de atribuio, apenas os
nomes e literais cujos atributos sejam compatveis com as operaes que estejam sendo
empregadas.
Dessa forma, a correo sinttica de uma sentena, no caso um programa escrito
em uma linguagem de alto nvel, s se completa se as condies anteriores forem verica-
das. Est criada, portanto, uma dependncia de contexto entre os atributos dos nomes
constantes nas respectivas declaraes e a forma como os mesmos so manipulados ao
longo do programa.
Exemplo 5.2 Considere-se, por exemplo, o seguinte trecho de programa escrito na linguagem C:
void main () { int x; scanf (%d,&x); printf (%d,x);}
Existe uma clara vinculao entre a declarao da varivel x e a referncia mesma nos
comandos de leitura e impresso. Se ela no tivesse sido declarada, ou se os seus atributos no fossem
compatveis com a maneira como ela utilizada nesses comandos, no seria possvel considerar tal
sentena como vlida do ponto de vista sinttico. 2
Dependncias de contexto so, portanto, uma caracterstica fundamental das lin-
guagens de programao em geral. Do ponto de vista mais terico, as linguagens formais
com tais caractersticas constituem uma classe de linguagens sobre a qual recaem inte-
resses e questes similares s estudadas nos captulos anteriores, entre as quais, maneiras
de formaliz-las do ponto de vista gramatical, modelos de reconhecimento, propriedades
mais importantes e seu relacionamento com as demais classes de linguagens.
5.1 Gramticas Sensveis ao Contexto
Cabe, neste ponto, justicar a incapacidade das gramticas livres de contexto para re-
presentar linguagens sensveis ao contexto. Rigorosamente, o Pumping Lemma para
linguagens livres de contexto, apresentado no Captulo 4 (Teorema 4.17), cumpre o papel
de demonstrar a existncia de linguagens que no sejam livres de contexto, ou seja, de
linguagens que no podem ser representadas atravs de gramticas livres de contexto.
Uma anlise um pouco mais detalhada da natureza das gramticas livres de contexto re-
vela a origem das suas limitaes e serve como elemento motivador para a conceituao
de uma nova classe de gramticas a das gramticas sensveis ao contexto.
Ao restringir o lado esquerdo das regras gramaticais a um nico smbolo no-
terminal, as gramticas livres de contexto estabelecem que todas as derivaes sejam
feitas considerando-se apenas o no-terminal selecionado para a substituio, no im-
portando os smbolos (terminais e no-terminais) que o rodeiam esquerda e direita
ou seja, o seu contexto. Da a origem do termo livre de contexto, pois a estrutura
sinttica dos trechos j desenvolvidos da cadeia nunca levada em considerao quando
da substituio de um no-terminal pelo lado direito da regra escolhida.
Isso torna impossvel representar casos como o da declarao de variveis, uma vez
que a substituio dos smbolos no-terminais que representam, por exemplo, a declarao
de varivel e o comando de atribuio no podem ser vinculados durante o processo de
derivao da cadeia, para evitar, por exemplo, a gerao de sentenas que contenham
referncias a nomes invlidos ou de tipos incompatveis com a operao aplicada.
5 Linguagens Sensveis ao Contexto 275
Para superar tal limitao, empregam-se as gramticas sensveis ao contexto. For-
malmente, uma gramtica sensvel ao contexto G = (V, , P, S) aquela cujas
regras do conjunto P obedecem ao formato , onde:
V

NV

|| ||
Gramticas sensveis ao contexto eliminam a restrio de que o lado esquerdo das
regras seja formado por um nico smbolo, e de que este seja um smbolo no-terminal.
Tais gramticas admitem qualquer quantidade de smbolos do lado esquerdo, sejam eles
terminais ou no-terminais. Exigem, apenas, que do lado esquerdo exista pelo menos um
smbolo no-terminal e, tambm, que o lado direito possua uma quantidade de smbolos
no inferior quela encontrada no lado esquerdo da mesma regra.
Dene-se inicialmente linguagem sensvel ao contexto como sendo aquela que
possa ser denida atravs de uma gramtica sensvel ao contexto. Conforme convencio-
nado na Seo 2.6, essa denio estendida para qualquer linguagem L que contenha a
cadeia vazia, desde que L{} possa ser gerada por uma gramtica sensvel ao contexto.
Dene-se linguagem estritamente sensvel ao contexto como sendo uma lin-
guagem sensvel ao contexto mas no livre de contexto.
Exemplo 5.3 Seja a gramtica G1 = ({a, b, c, S, B, C}, {a, b, c}, P, S), com
P = {S aSBC,
S aBC,
CB BC,
aB ab,
bB bb,
bC bc,
cC cc}
Todas as regras desta gramtica satisfazem condio de possuir pelo menos um no-terminal
do lado esquerdo e uma seqncia arbitrria de smbolos do lado direito, porm de comprimento
nunca inferior ao comprimento vericado no lado esquerdo da mesma regra.
Algumas derivaes possveis so:
S aBC abC abc;
S aSBC aaBCBC aaBBCC aabBCC aabbCC aabbcC aabbcc;
S aSBC aaSBCBC aaaBCBCBC aaaBBCCBC aaaBBCBCC
aaaBBBCCC aaabBBCCC aaabbBCCC aaabbbCCC aaabbbcCC
aaabbbccC aaabbbccc.
fcil demonstrar que L(G1) = {a
n
b
n
c
n
| n 1}. tambm possvel demonstrar, pela
aplicao do Pumping Lemma para linguagens livres de contexto, que L(G1) no uma linguagem
livre de contexto (Exemplo 4.38). Logo, no existe qualquer gramtica livre de contexto que seja
capaz de gerar L(G1), e portanto L uma linguagem estritamente sensvel ao contexto.
Uma rpida anlise das produes de G1 possibilita a compreenso da lgica que existe em
sua concepo: as duas regras iniciais geram formas sentenciais nas quais uma certa quantidade de
smbolos a seguida por pares BC, de tal forma que as quantidades de a, B e C sejam
idnticas como em aaaBCBCBC. A regra CB BC permite que os Bs e os Cs sejam
agrupados gerando, neste exemplo, aaaBBBCCC. As demais regras efetuam as substituies
dos no-terminais pelos terminais correspondentes, com o cuidado de evitar que tais substituies
possam ser utilizadas para gerar sentenas distintas das que esto relacionadas acima. 2
276 Linguagens Formais - Teoria, Modelagem e Implementao
As gramticas sensveis ao contexto so ditas monotnicas, pois o comprimento
das formas sentenciais obtidas durante o processo de derivao de uma sentena nunca
sofre reduo. Esta caracterstica ser explorada na Seo 5.5, para ns de associao
desta classe de linguagens com o seu respectivo modelo de reconhecimento mais simples.
Exemplo 5.4 Considere-se a gramtica G2 = ({a, b, c, S, A, B, C}, {a, b, c}, P, S), com
P = {S ABC,
S ABCS,
AB BA,
AC CA,
BA AB,
BC CB,
CA AC,
CB BC,
A a,
B b,
C c}
Analise-se agora a derivao de algumas sentenas:
S ABC aBC abC abc;
S ABC ACB CAB CBA cBA cbA cba;
S ABCS ABCABC BACABC BACBAC BACBCA bACBCA
baCBCA bacBCA bacbCA bacbcA bacbca.
As duas regras iniciais inserem quantidades idnticas de smbolos A, B e C na forma sentencial.
As regras seguintes so utilizadas para embaralhar esses smbolos de maneira arbitrria. As trs
ltimas substituem cada smbolo no-terminal pelo respectivo smbolo terminal.
A linguagem gerada por G2 consiste em todas as sentenas sobre {a, b, c} com comprimento
mnimo 3 , de tal forma que as quantidades desses smbolos sejam sempre idnticas. Formalmente:
L(G2) = {w

| as quantidades de a, b e c em w so idnticas, e | w| 3}
Como no Exemplo 5.3, pode-se demonstrar que esta linguagem estritamente sensvel ao
contexto. Para isso suciente provar, atavs do Pumping Lemma, que ela no livre de contexto. 2
Gramticas deste tipo geram linguagens denominadas sensveis ao contexto, ou
simplesmente do tipo 1. A inspeo rigorosa dos formatos admitidos para as produes
das gramticas do tipo 1 no permite a caracterizao imediata de toda e qualquer
gramtica (e conseqentemente das correspondentes linguagens) do tipo 2 como sendo
tambm do tipo 1. Isso decorre do fato de que as gramticas do tipo 2 admitem a cadeia
vazia como alternativa de substituio para o lado esquerdo de qualquer produo, o
que no permitido em gramticas do tipo 1 em funo da restrio || ||.
Rigorosamente, uma linguagem dita sensvel ao contexto se e somente se:
L e L = L(G), onde G uma gramtica sensvel ao contexto, ou
L e L {} pode ser gerada por uma gramtica sensvel ao contexto.
Neste ltimo caso, aceita-se que a regra S seja includa na gramtica, porm
desde que S (a raiz da gramtica) no comparea do lado direito de nenhuma outra
regra. Dessa forma evita-se a gerao de formas sentenciais que possam sofrer contrao
5 Linguagens Sensveis ao Contexto 277
durante o processo de derivao. A nica possibilidade de isso ocorrer corresponde
derivao inicial, quando o smbolo a ser substitudo a prpria raiz da gramtica.
Cumpre, neste ponto, estabelecer uma importante relao entre linguagens livres
de contexto e linguagens sensveis ao contexto. Suponha-se, inicialmente, que L = L(G),
onde G uma gramtica livre de contexto, e, adicionalmente, que L. fcil perceber,
neste caso, que G satisfaz a todas as especicaes de uma gramtica sensvel ao contexto,
pois no haver nenhuma regra com direita. Logo, L(G) ser tambm uma linguagem
sensvel ao contexto. Ou seja: linguagens livres de contexto que no contm a cadeia
vazia so tambm linguagens sensveis ao contexto.
Caso L(G), e G seja uma gramtica livre de contexto, ser necessrio aplicar
transformaes em G obtendo-se G

, de modo que:
S seja a nica regra vazia em G

;
S no comparea no lado direito de nenhuma outra regra de G

;
L(G) = L(G

).
Como foi demonstrado no Teorema 4.7, tal transformao sempre possvel. Toda e
qualquer gramtica livre de contexto pode ser transformada, sem prejuzo da linguagem
que estiver sendo denida, em uma outra gramtica em que a cadeia vazia comparece
apenas na produo S , sendo S a raiz da gramtica. Alm disso, S garantidamente
no gura no lado direito de nenhuma outra produo. Isso signica que o nico efeito
prtico da presena de produes do tipo A , A N, em gramticas livres de con-
texto quaisquer, na eventual incorporao da cadeia vazia como sentena na linguagem
denida.
Portanto, com exceo da produo S , as gramticas do tipo 2 podem ser
sempre convertidas para um formato que as torne um caso particular das gramticas
do tipo 1. Em outras palavras, tem-se que qualquer gramtica do tipo 2, desde que
devidamente convertida para esse formato padronizado, e a menos da produo S ,
torna-se tambm uma gramtica do tipo 1.
Assim, fato que G

, exceto pela regra vazia, uma gramtica sensvel ao contexto


e, conseqentemente, L(G

) {} uma linguagem sensvel ao contexto. Logo, L(G) =


L(G

) , de acordo com a denio, uma linguagem sensvel ao contexto.


Como conseqncia, pode-se concluir que toda linguagem livre de contexto tam-
bm uma linguagem sensvel ao contexto. Fica claro, tambm, que as linguagens livres
de contexto constituem um subconjunto prprio das linguagens sensveis ao contexto.
Para nalizar, algumas observaes de ordem prtica. muito comum, quando
se especicam linguagens de programao, fazer uso de gramticas livres de contexto.
Tal artifcio mascara, no entanto, a existncia das dependncias de contexto, as quais
acabam sendo excludas da formalizao gramatical. Esta estratgia possui pelo menos
uma importante razo de ser e uma importante conseqncia:
A razo de ser consiste no fato de que formalismos distintos, adequados para a re-
presentao de linguagens sensveis ao contexto (como, por exemplo, as gramticas
sensveis ao contexto), so relativamente complexos e difceis de serem trabalhados
quando se trata de especicar as dependncias de contexto tpicas das linguagens
de programao. Opta-se, assim, por uma questo de praticidade, pelo uso de
formalismos mais simples, em particular os livres de contexto.
278 Linguagens Formais - Teoria, Modelagem e Implementao
A conseqncia dessa prtica que a linguagem resultante ser um superconjunto
da linguagem pretendida. Alm das sentenas que observam estritamente as re-
gras de dependncias de contexto da linguagem, outras cadeias, indesejadas, que
no observam tais dependncias, acabam sendo incorporadas linguagem denida.
E disso resulta a necessidade de se acrescentarem ltros para elimin-las da lin-
guagem, preservando-se apenas as cadeias efetivamente aderentes especicao
original.
Trata-se, portanto, de uma estratgia originada a partir de uma necessidade de
simplicar a soluo do problema, mas que resulta, em momento posterior, na necessidade
de incorporao de ltros que descartem as cadeias invlidas.
Exemplo 5.5 Considere-se a gramtica denida pelo conjunto de produes a seguir, representativa
de uma linguagem de programao que possibilita declaraes de variveis seguidas de comandos de
atribuio e expresses.
{Programa Declaracoes Comandos,
Declaracoes Declaracoes Declaracao
| ,
Declaracao %Identicador,
Comandos Comandos Comando
| ,
Comando #Identicador = Expressao,
Expressao Expressao + Expressao
| Expressao Expressao
| Identicador,
Identicador a
| b
| c}
Um exemplo de sentena pertencente a esta linguagem :
%a
%b
#a = a + b
#b = b b
Tal sentena pode ser entendida como um programa contendo a declarao de duas variveis
(a e b, nas duas linhas iniciais) e o uso de ambas em dois comandos de atribuio (nas duas
linhas nais).
A nica dependncia de contexto exibida por essa linguagem que os nicos identicadores
que podem ser usados nos comandos (aps o smbolo #) so aqueles que tenham sido declarados
anteriormente (aps o smbolo %).
Perceba-se, no entanto, que tal regra no est incorporada na gramtica apresentada uma
gramtica livre de contexto , mas bastante simples e fcil de ser interpretada.
Tal facilidade de representao, entretanto, onerada pela possibilidade de derivao de sen-
tenas como, por exemplo:
%a
%c
#a = a + b
#b = b b
que viola a dependncia de contexto que vincula referncias s variveis com as respectivas declara-
es (a varivel b referenciada indevidamente, uma vez que sua declarao foi substituda pela
declarao da varivel c). Da a necessidade de se adicionar um ltro para excluir tais sentenas
do conjunto gerado pela gramtica apresentada. 2
5 Linguagens Sensveis ao Contexto 279
5.2 Gramticas com Derivaes Controladas
Este item novo no texto.
Se, por um lado, as gramticas livres de contexto no possuem poder suciente para
representar linguagens mais complexas, como o caso das linguagens sensveis ao contexto
(conforme demonstrado na seo 4.10), por outro curioso perceber como o uso de alguns
mecanismos simples de extenso as tornam capazes de lidar supreendentemente bem com
essa complexidade, superando as limitaes que lhe so intrnsecas.
Tais mecanismos, genericamente denominados controladores de derivaes, so
extenses gramaticais que restringem ou controlam , de alguma forma, a escolha
das regras de produo possveis de serem aplicadas s formas sentenciais geradas por
uma gramtica subjacente.
Em gramticas convencionais, de qualquer tipo, a escolha da regra de produo a
ser aplicada em uma forma sentencial qualquer resultado, nica e exclusivamente, da
identicao, em , de alguma subcadeia que coincida com o lado esquerdo de alguma
regra p P (seo 2.3). Eventualmente esse critrio resulta num conjunto de regras que
satisfazem tal condio, dentre as quais a escolha de uma determinada regra livre e
vlida, podendo o seu uso conduzir, ou no, gerao de alguma sentena.
Gramticas com derivaes controladas vo alm dessa exigncia bsica, res-
tringindo, de forma complementar e atravs de mecanismos diversos, o conjunto das
regras que normalmente seriam aplicveis a cada forma sentencial durante a gerao de
uma sentena. Como resultado consegue-se gerenciar melhor o uso das regras de produ-
o, e assim estender o poder de representao lingstica da gramtica subjacente.
Os formalismos estudados a seguir possuem gramticas livres de contexto como
dispositivo subjacente. Nos exemplos apresentados, eles so empregados para representar
linguagens estritamente sensveis ao contexto. No obstante, dispositivos gramaticais
subjacentes dos tipos 3, 2, 1 ou 0 podem ser usados livremente com qualquer um deles.
A demonstrao da equipotncia entre os formalismos a seguir apresentados, e destes
com as gramticas do tipo 0 (irrestritas), pode ser encontrada em [37], [38] ou [41]. Essa
condio, no entanto, s alcanada quando eles so estendidos por um mecanismo de
derivao complementar, denominado vericao de aparncia, que no ser discutido
aqui e cuja denio pode ser encontrada nessas mesmas referncias.
A seguir so apresentados os principais formalismos gramaticais que fazem uso de
mecanismos controladores de derivaes:
Gramticas controladas por linguagens regulares;
Gramticas matriciais;
Gramticas programadas;
Gramticas periodicamente variantes no tempo.
A diversidade de dispositivos gramaticais com tais caractersticas grande, como
pode ser vericado em [39], que apresenta 25 deles. Em [37], [38] e [41] so encontrados
bons textos sobre gramticas com derivaes controladas, assim como uma vasta gama
de resultados tericos acerca das classes de linguagens por elas geradas. Os exemplos
mostrados a seguir foram inspirados e/ou adaptados de exemplos extrados dessas refe-
rncias. Com o objetivo de facilitar a comparao entre os formalismos, especialmente
no que se refere ao modelo de funcionamento dos mesmos, cada um deles exempli-
280 Linguagens Formais - Teoria, Modelagem e Implementao
cado com as correspondentes gramticas para as mesmas duas linguagens estritamente
sensveis ao contexto:
{a
n
b
n
c
n
| n 1}
{ww | w {a, b}
+
}
A notao apresentada a seguir difere da utilizada na literatura referenciada, e foi
elaborada com o objetivo de (i) padronizar, tanto quanto possvel, a representao alg-
brica dos formalismos considerados; (ii) evidenciar a gramtica subjacente tradicional,
presente em cada formalismo (nos casos apresentados, gramticas livres de contexto) e
(ii) permitir a anlise comparativa dos mecanismos de extenso que caracterizam cada
formalismo.
Gramticas controladas por linguagens regulares
So aquelas em que uma gramtica subjacente G

= (V, , P, S) complementada por


uma expresso regular R denida sobre o seu conjunto de produes P. Uma seqncia
de derivaes considerada vlida se e apenas se a seqncia das regras utilizadas nesse
processo corresponder a algum elemento de R. A noo de uso de uma linguagem de
controle foi apresentada pela primeira vez em [42]. Uma gramtica livre de contexto
controlada por linguagem regular G denida formalmente como:
G = (G

, R)
G

= (V, , P, S) uma gramtica livre de contexto


P = {p
1
, p
2
, ..., p
n
}
R = uma expresso regular sobre P
L(G) = {w

|
(S
pi
1
w
1

pi
2
...
pi
k
w
k
= w) e
(p
i1
, p
i2
, ..., p
i
k
R)}
Exemplo 5.6
G1 = (G

1
, R)
G

1
= ({S, B, C, a, b, c}, {a, b, c}, {p1, p2, p3, p4, p5}, S)
(p1) S BC
(p2) B aBb
(p3) B ab
(p4) C cC
(p5) C c
R = p1(p2p4)

(p3p5)
L(G1) = {a
n
b
n
c
n
| n 1}
Considere-se a cadeia p1p2p4p2p4p3p5 R. A aplicao do correspondente conjunto de
produes gera a sentena aaabbbccc, conforme mostra a seqncia de derivaes:
S p
1
BC p
2
aBbC p
4
aBbcC p
2
aaBbbcC p
4
aaBbbccC p
3
aaabbbccC p
4
aaabbbccc
2
5 Linguagens Sensveis ao Contexto 281
Exemplo 5.7
G2 = (G

2
, R)
G

2
= ({S, A, B, a, b}, {a, b}, {p1, p2, p3, p4, p5, p6, p7, p8, p9})
(p1) S AB
(p2) A aA
(p3) B aB
(p4) A bA
(p5) B bB
(p6) A a
(p7) B a
(p8) A b
(p9) B b
R = p1(p2p3 | p4p5)

(p6p7 | p8p9)
L(G2) = {ww | w {a, b}
+
}
Considere-se a cadeia p1p2p3p4p5p8p9 R. A aplicao do correspondente conjunto de
produes gera a sentena abbabb, conforme mostra a seqncia de derivaes:
S p
1
AB p
2
aAB p
3
aAaB p
4
abAaB p
5
abAabB p
8
abbabB p
9
abbabb
2
Gramticas matriciais
Correspondem a gramticas G = (V, , P, S) que so complementadas por uma estru-
tura matricial M, na qual esto distribudas as regras de produo de P. Uma seqncia
de derivaes considerada vlida se e apenas se as regras forem sempre aplicadas em
grupos, cada grupo sendo formado por todas as regras de uma mesma linha, da primeira
ltima coluna, nessa seqncia. Gramticas matriciais foram inicialmente divulgadas
em [43]. Uma gramtica livre de contexto matricial G denida formalmente como:
G = (G

, M)
G

= (V, , P, S) uma gramtica livre de contexto


M = {m
1
, m
2
, ..., m
n
}
m
i
= (p
i1
, ..., p
i
k
) | k 1, p
ij
P, i
1
i
j
i
k
L(G) = {w

|
(S = w
0

mi
1
w
1

mi
2
w
2

mi
3
...
mi
q1
w
q1

miq
w
q
= w), com
(m
i1
, m
i2
, m
i3
, ..., m
iq1
, m
iq
M) e
(w
j

mi
w
j +1
: w
j

pi
1
w
j1

pi
2
w
j2

pi
3
...
pi
k
w
j
k
= w
j +1
)}
Exemplo 5.8
G3 = (G

3
, M})
G

3
= ({S, A, B, C, a, b, c}, {a, b, c}, P, S)
P = {S abc, S aAbBcC, A aA, B bB, C cC, A a, B b, C c}
282 Linguagens Formais - Teoria, Modelagem e Implementao
M = {m1, m2, m3, m4}
m1 = (S abc)
m2 = (S aAbBcC)
m3 = (A aA, B bB, C cC)
m4 = (A a, B b, C c)
L(G3) = {a
n
b
n
c
n
| n 1}
Considere-se a seqncia m2m3m4. A aplicao do correspondente conjunto de produes gera
a sentena aaabbbccc, conforme mostra a seqncia de derivaes:
S m
2
aAbBcC m
3
aaAbbBccC m
4
aaabbbccc
As derivaes parciais, implcitas na seqncia acima, so:
S m
2
aAbBcC : S aAbBcC
aAbBcC m
3
aaAbbBccC : aAbBcC aaAbBcC aaAbbBcC aaAbbBccC
aaAbbBccC m
4
aaabbbccc : aaAbbBccC aaabbBccC aaabbbccC aaabbbccc
2
Exemplo 5.9
G4 = (G

4
, M})
G

4
= ({S, A, B, a, b}, {a, b}, P, S)
P = {S AB, A aA, B aB, A bA, B bB, A a, B a, A b, B b}
M = {m1, m2, m3, m4, m5})
m1 = (S AB)
m2 = (A aA, B aB)
m3 = (A bA, B bB)
m4 = (A a, B a)
m5 = (A b, B b)
L(G4) = {ww | w {a, b}
+
}
Considere-se a seqncia m1m2m3m5. A aplicao do correspondente conjunto de produes
gera a sentena aaabbbccc, conforme mostra a seqncia de derivaes:
S m
1
AB m
2
aAaB m
3
abAabB m
5
abbabb
As derivaes parciais, implcitas na seqncia acima, so:
S m
1
AB : S AB
AB m
2
aAaB : AB aAB aAaB
aAaB m
3
abAabB : aAaB abAaB abAabB
abAabB m
5
abbabb : abAabB abbabB abbabb
2
Gramticas programadas
Correspondem a gramticas G = (V, , P, S) que so complementadas por uma estru-
tura T, na qual cada regra p P associada a um conjunto, eventualmente vazio, de
regras de P. Uma seqncia de derivaes considerada vlida se e apenas se, para cada
regra p aplicada, a regra seguinte, a ser usada na prxima derivao, for sempre obtida no
conjunto de regras associadas a p. Gramticas programadas foram originalmente repor-
5 Linguagens Sensveis ao Contexto 283
tadas em [44]. Uma gramtica livre de contexto programada G denida formalmente
como:
G = (G

, T)
G

= (V, , P, S) uma gramtica livre de contexto


T = {t
1
, t
2
, ..., t
n
}
t
i
= (p
i
, s
i
) | 1 i n, p
i
P, s
i
2
T
L(G) = {w

|
(S
pi
1
w
1

pi
2
...
piq
w) e
(p
ij +1
s
ij
, j 1)}
Exemplo 5.10
G5 = (G

5
, T})
G

5
= ({S, A, B, C, a, b, c}, {a, b, c}, P, S)
P = {S AB, A aA, A bA, B aB, B bB, A a, A b, B a, B b}
T = {t1, t2, t3, t4, t5, t6, t7, t8}
t1 = (S abc, {})
t2 = (S aAbBcC, {t3, t6})
t3 = (A aA, {t4})
t4 = (B bB, {t5})
t5 = (B cC, {t3, t6})
t6 = (A a, {t7})
t7 = (B b, {t8})
t8 = (C c, {})
L(G5) = {a
n
b
n
c
n
| n 1}
A derivao abaixo tal que pi
j +1
si
j
, j 1:
S p
2
aAbBcC p
3
aaAbBcC p
4
aaAbbBcC p
5
aaAbbBccC p
6
aaabbBccC p
7
aaabbbccC p
8
aaabbbccc
De fato, t3 s2, t4 s3, t5 s4, t6 s5, t7 s6 e t8 s7. 2
Exemplo 5.11
G6 = (G

6
, T})
G

6
= ({S, A, B, a, b}, {a, b}, P, S)
P = {S AB, A aA, A bA, B aB, B bB, A a, A b, B a, B b}
T = {t1, t2, t3, t4, t5, t6, t7, t8, t9}
t1 = (S AB, {t2, t3, t6, t7})
t2 = (A aA, {t4})
t3 = (A bA, {t5})
t4 = (B aB, {t2, t3, t6, t7})
t5 = (B bB, {t2, t3, t6, t7})
t6 = (A a, {t8})
t7 = (A b, {t9})
284 Linguagens Formais - Teoria, Modelagem e Implementao
t8 = (B a, {})
t9 = (B b, {})
L(G6) = {ww | w {a, b}
+
}
A derivao abaixo tal que pi
j +1
si
j
, j 1:
S p
1
AB p
2
aAB p
4
aAaB p
3
abAaB p
5
abAabB p
7
abbabB p
9
abbabb
De fato, t2 s1, t4 s2, t3 s4, t5 s3, t7 s5 e t9 s7. 2
Gramticas periodicamente variantes no tempo
Correspondem a gramticas G = (V, , P, S) que so complementadas por uma estru-
tura U, composta por subconjuntos P
i
P, 1 i k. Ao se associar cada passo de
derivao a um nmero inteiro, iniciando em 1, a estrutura U determina quais regras de
produo podem ser usadas em tal etapa de derivao. A periodicidade da variao no
tempo denida pelo valor de k, de tal forma que no passo de derivao i so conside-
radas apenas as regras de produo pertencentes ao subconjunto P
(i mod k)
. Gramticas
variantes no tempo foram propostas pela primeira vez em [45]. Uma gramtica livre de
contexto periodicamente variante no tempo G denida formalmente como:
G = (G

, U)
G

= (V, , P, S) uma gramtica livre de contexto


U = {P
1
, P
2
, ..., P
k
}, k 1, P
i
P, 1 i k
L(G) = {w

|
(S
pi
1
w
1

pi
2
...
piq
w) e
(p
ij
P
(j mod k)
, 1 j q)}
Exemplo 5.12
G7 = (G

7
, U)
G

7
= ({S, A, B, C, X, a, b, c}, {a, b, c}, P, S)
P = {S ABC, C cC, C c,
A aA, A a, X b,
B bB, B X}
U = {P1, P2, P3}
P1 = {S ABC, C cC, C c}
P2 = {A aA, A a, X b}
P3 = {B bB, B X}
L(G7) = {a
n
b
n
c
n
| n 1}
A derivao abaixo tal que pi
j
P
(j mod 3)
:
S ABC aABC aAbBC
aAbBcC aabBcC aaabXcC aabXcc aabbcc
De fato, as regras de produo aplicadas nessa seqncia de derivaes pertencem, respecti-
vamente, aos conjuntos P1, P2, P3, P1, P2, P3, P1 e P2. 2
5 Linguagens Sensveis ao Contexto 285
Exemplo 5.13
G8 = (G

8
, U)
G

8
= ({S, X1, X2, Y1, Y2, a, b}, {a, b}, P, S)
P = {S X1Y1, X1 X1, Y2 Y2,
X1 aX1, X1 bX2, X1 , X2 aX1, X2 bX2, X2 ,
Y1 aY1, Y1 bY2, Y1 , Y2 aY1, Y2 bY2, Y2 ,
X2 X2, Y1 Y1}
U = {P1, P2, P3, P4}
P1 = {S X1Y1, X1 X1, Y2 Y2}
P2 = {X1 aX1, X1 bX2, X1 , X2 aX1, X2 bX2, X2 }
P3 = {Y1 aY1, Y1 bY2, Y1 , Y2 aY1, Y2 bY2, Y2 }
P4 = {X2 X2, Y1 Y1}
L(G8) = {ww | w {a, b}
+
}
A derivao abaixo tal que pi
j
P
(j mod 4)
:
S X1Y1 aX1Y1 aX1aY1 aX1aY1 aX1aY1
abX2aY1 abX2abY2 abX2abY2 abX2abY2 abbX2abY2
abbX2abbY2 abbX2abbY2 abbX2abbY2 abbabbY2 abbabb
De fato, as regras de produo aplicadas nessa seqncia de derivaes pertencem, respecti-
vamente, aos conjuntos P1, P2, P3, P4, P1, P2, P3, P4, P1, P2, P3, P4, P1, P2 e P3. 2
O interesse e a pesquisa sobre gramticas com mecanismos controladores de deri-
vaes no novo, tendo ocorrido principalmente entre meados da dcada de 1960 e o
incio da dcada de 1970. Apesar de se tratar de uma rea pouco considerada nos dias de
hoje, tanto do ponto de vista terico quanto do ponto de vista tecnolgico, no se pode
negar que a elevada simplicidade dos seus formalismos, aliada abrangncia da classe
de linguagens por eles representveis, as torna dignas de referncia e estudo na teoria
clssica de linguagens formais. No obstante, o formalismo gramatical tradicional ainda
mais adequado na demonstrao dos resultados tericos considerados nesse texto, e por
esse motivo volta-se a adot-lo nas sees seguintes do presente texto.
5.3 Formas Normais para Gramticas Sensveis ao Contexto
A representao formal das dependncias de contexto de uma linguagem pode ser efe-
tuada apenas, conforme discutido, por intermdio das gramticas do tipo 1 ou, natural-
mente, atravs das de tipo 0.
conveniente, no entanto, considerar uma importante forma normal para a re-
presentao de gramticas do tipo 1. Nesta forma, as regras so todas reescritas em
conformidade com o seguinte padro:
A
com A N, V
+
e , V

.
Demonstra-se a seguir (Teorema 5.1) que toda e qualquer gramtica do tipo 1 pode
ser convertida para uma nova gramtica em que todas as produes obedecem ao formato
286 Linguagens Formais - Teoria, Modelagem e Implementao
acima apresentado, exceto, naturalmente, a produo S , caso a cadeia vazia faa
parte da linguagem.
Isso feito, pode-se reinterpretar as produes como especicaes de substituies
para um determinado no-terminal A por , apenas quando A estiver cercado das cadeias
e , ou seja, quando A estiver no contexto de e .
Portanto, diz-se que a substituio de A por depende da ocorrncia de um
contexto esquerdo e de um contexto direito para o no-terminal A, fato este que
motiva o emprego do termo alternativo dependente de contexto para designar as
gramticas do tipo 1.
Deve-se, por outro lado, perceber que uma condio deste tipo nunca ocorre com
as gramticas do tipo 2, nas quais qualquer substituio de um smbolo no-terminal
ocorre sempre de forma independente do contexto em que tal no-terminal encontrado,
motivando dessa maneira o emprego do nome livre de contexto para designar tais
gramticas.
Teorema 5.1 (Forma normal para gramticas sensveis ao contexo) Se L uma
linguagem sensvel ao contexto, ento L = L(G), sendo G uma gramtica em que todas
as regras so do tipo uAv uwv, w ( N)
+
, u, v ( N)

, A N.
Justicativa Conforme o Algoritmo 5.1.
Algoritmo 5.1 (Forma normal para gramticas sensveis ao contexo) Obteno
de forma normal para gramticas sensveis ao contexto, em que as regras possuem todas
o formato uAv uwv.
Entrada: uma gramtica que representa uma linguagem sensvel ao contexto L;
Sada: uma gramtica sensvel ao contexto G, tal que todas as suas regras satisfa-
zem ao padro uAv uwv, w ( N)
+
, u, v ( N)

, A N e, alm disso,
L = L(G);
Mtodo:
Considerem-se as regras de G numeradas de 1 a p. Cada regra tem o formato
geral:
X
i1
X
i2
X
i3
...X
im
Y
i1
Y
i2
Y
i3
...Y
in
onde 1 i p o ndice da regra considerada e X
ij
, Y
ik
( N). Como se
trata de uma linguagem sensvel ao contexto, L gerada por uma gramtica com
regras monotnicas, ou seja, aquelas em que o comprimento do lado direito das
regras nunca menor do que o comprimento do respectivo lado esquerdo. No caso
acima, n m.
1. O primeiro passo da transformao envolve a substituio de todos os sm-
bolos terminais a
k
da gramtica por novos smbolos no-terminais A
k
cor-
respondentes, acrescentando-se gramtica a regra A
k
a
k
para cada
terminal assim substitudo. Naturalmente, esse procedimento no invalida
as consideraes do pargrafo anterior.
2. A seguir, substitui-se cada uma das regras da gramtica original por um
conjunto equivalente de regras, tambm monotnicas, porm com a restrio
5 Linguagens Sensveis ao Contexto 287
de que o lado direito de cada nova regra possua comprimento mximo 2.
Assim,
Para i variando de 1 at p:
a) Considere-se a regra i no formato:
X
i1
X
i2
X
i3
...X
im
Y
i1
Y
i2
Y
i3
...Y
in
b) Prossiga-se com a regra i caso (m 3) ou (m = 2 e n 3); caso
contrrio, desvie-se para o incio do lao;
c) Crie-se um conjunto de n 1 smbolos no-terminais denotados por
Z
i1
at Z
i(n1)
;
d) Substitua-se a regra original pelo seguinte conjunto de regras:
X
i1
X
i2
Y
i1
Z
i1
Z
i1
X
i3
Y
i2
Z
i2

Z
i(m2)
X
im
Y
i(m1)
Z
i(m1)
Z
i(m1)
Y
im
Z
im
Z
im
Y
i(m+1)
Z
i(m+1)
Z
i(m+1)
Y
i(m+2)
Z
i(m+2)

Z
i(n2)
Y
i(n1)
Z
i(n1)
Z
i(n1)
Y
in
Ao trmino desta etapa, todas as regras da gramtica seguiro um dos
seguintes formatos:
(i) PQ RS
(ii) P R
+
com P, Q N e R, S ( N).
Note-se que o lado esquerdo dessas regras contm apenas smbolos no-
terminais. As regras do tipo (ii) j estaro no formato uAv uwv (basta
considerar u, v = ), e portanto no h mais nada a fazer com elas. As
regras do tipo (i), no entanto, ainda precisam ser convertidas para o formato
desejado.
Considerem-se agora as regras numeradas de 1 a q. Considerem-se, dentre
estas, as regras que obedecem ao formato (i) citado acima:
P
j 1
Q
j 2
R
j 1
S
j 2
288 Linguagens Formais - Teoria, Modelagem e Implementao
onde 1 j q o ndice da regra considerada, P
j 1
, Q
j 2
N, R
j 1
, S
j 2

( N). Pode-se aplicar a seguinte transformao de modo a substituir
a regra original por um conjunto de regras equivalentes que obedecem ao
formato uAv uwv:
3. Para j variando de 1 at q:
a) Considere-se a regra j ;
b) Prossiga-se com a regra j caso ela esteja no formato P
j 1
Q
j 2
R
j 1
S
j 2
;
caso contrrio, retorne-se ao incio do lao;
c) Crie-se um novo smbolo no-terminal, W
j
;
d) Substitua-se a regra original pelo seguinte conjunto de regras:
P
j 1
Q
j 2
P
j 1
W
j
P
j 1
W
j
R
j 1
W
j
R
j 1
W
j
R
j 1
S
j 2
Demonstra-se que a gramtica resultante pela aplicao do Algoritmo 5.1 gera a
mesma linguagem L e todas as suas regras obedecem ao formato uAv uwv.
Exemplo 5.14
A gramtica abaixo representa a linguagem {a
n
b
n
c
n
| n 1}.
S abc (5.1)
S aSQ (5.2)
bQc bbcc (5.3)
cQ Qc (5.4)
1. Primeiro passo: substituio dos smbolos terminais. O seguinte novo conjunto de regras
obtido:
S ABC (5.5)
A a (5.6)
B b (5.7)
C c (5.8)
S ASQ (5.9)
BQC BBCC (5.10)
CQ QC (5.11)
2. Segundo passo: Todas essas regras satisfazem ao critrio de seleo, exceto a Regra (5.10).
Procede-se, ento, sua manipulao.
5 Linguagens Sensveis ao Contexto 289
Regra (5.10): criam-se os novos smbolos no-terminais Z61, Z62 e Z63, substituindo
a regra original pelo conjunto de regras:
BQ BZ61 (5.12)
Z61C BZ62 (5.13)
Z62 CZ63 (5.14)
Z63 C (5.15)
(5.16)
Chega-se, portanto, seguinte gramtica modicada:
S ABC (5.17)
A a (5.18)
B b (5.19)
C c (5.20)
S ASQ (5.21)
BQ BZ61 (5.22)
Z61C BZ62 (5.23)
Z62 CZ63 (5.24)
Z63 C (5.25)
CQ QC (5.26)
3. Terceiro passo: Com exceo das Regras (5.23) e (5.26), todas as demais satisfazem ao
critrio de seleo.
Regra (5.23): Z61C BZ62 substituda por:
Z61C Z61W7 (5.27)
Z61W7 BW7 (5.28)
BW7 BZ62 (5.29)
Regra (5.26): CQ QC substituda por:
CQ CW10 (5.30)
CW10 QW10 (5.31)
QW10 QC (5.32)
A verso nal da gramtica desejada torna-se:
S ABC (5.33)
A a (5.34)
B b (5.35)
C c (5.36)
S ASQ (5.37)
BQ BZ61 (5.38)
Z61C Z61W7 (5.39)
290 Linguagens Formais - Teoria, Modelagem e Implementao
Z61W7 BW7 (5.40)
BW7 BZ62 (5.41)
Z62 CZ63 (5.42)
Z63 C (5.43)
CQ CW10 (5.44)
CW10 QW10 (5.45)
QW10 QC (5.46)
2
Uma outra importante forma normal para as gramticas sensveis ao contexto
a Forma Normal de Kuroda. Apesar de no evidenciar diretamente os contextos em
que so feitas as substituies, como no caso da forma normal anterior, ela utilizada
em certas demonstraes tericas. Formalmente, diz-se que uma gramtica sensvel ao
contexto encontra-se na Forma Normal de Kuroda se todas as suas produes
estiverem em conformidade com alguma das seguintes condies:
N e ;
N e N;
N e NN;
NN e NN;
O Teorema 5.2 estabelece a possibilidade de obteno da Forma Normal de Kuroda
para gramticas sensveis ao contexto. Naturalmente, ela se aplica apenas a linguagens
sensveis ao contexto que no contenham a cadeia vazia.
Teorema 5.2 (Forma Normal de Kuroda) Obteno de uma gramtica na Forma
Normal de Kuroda equivalente a uma gramtica sensvel ao contexto G qualquer, desde
que L(G).
Justicativa Pode ser encontrada em [55].
5.4 Mquinas de Turing com Fita Limitada
As Mquinas de Turing com ta limitada tambm conhecidas como Autmatos com
Limitao Linear (da ta de trabalho), ou como Linear Bounded Automata, em ingls
recebem esta denominao alternativa pelo fato de ser possvel demonstrar (ver [46])
que linguagens sensveis ao contexto podem ser reconhecidas por autmatos do tipo
Mquina de Turing em que o tamanho da ta de trabalho uma funo linear do tamanho
da cadeia a ser analisada. Se o comprimento da cadeia de entrada for n, existe algum k
inteiro, maior ou igual a 1, tal que com uma ta de trabalho limitada a um mximo de
k n posies, incluindo a cadeia de entrada, seja possvel efetuar a sua anlise.
Mais do que isso, pode-se demonstrar (tambm em [46]) que, com apenas n +
2 posies na ta de trabalho, tambm possvel obter os mesmos resultados que se
teria com uma ta limitada proporcionalmente ao tamanho da cadeia de entrada. As n
posies intermedirias da ta sendo utilizadas para armazenar a cadeia de entrada e as
duas adicionais referindo-se aos delimitadores da referida cadeia, um mais esquerda e
outro mais direita da mesma.
5 Linguagens Sensveis ao Contexto 291
Uma Mquina de Turing com ta limitada um dispositivo no-determinstico
de reconhecimento de cadeias que possui algumas importantes extenses em relao aos
autmatos nitos ou aos autmatos de pilha. As mais importantes so:
1. A ta de trabalho possui comprimento igual ao comprimento da cadeia de en-
trada, acrescido de dois (uma posio para indicar o incio da cadeia e outra para
indicar seu trmino; tais indicaes so feitas atravs de smbolos especiais, no
pertencentes ao alfabeto de entrada);
2. O cursor de acesso aos smbolos da ta de trabalho pode se deslocar, sob o comando
do controle nito, tanto para a direita quanto para a esquerda;
3. Atravs do cursor de acesso pode-se no apenas ler os smbolos contidos na posio
corrente da ta de trabalho, como tambm gravar novos smbolos em substituio
ao smbolos existentes.
Note-se que, diferentemente do que acontece nas mquinas estudadas anteriormente,
a ta contendo a cadeia a ser analisada uma ta de trabalho, e no simplesmente de
entrada, j que ela pode sofrer alteraes durante a operao da Mquina de Turing.
Formalmente, uma Mquina de Turing com ta limitada M denida como:
M = (Q, , , , q
0
, <, >, F)
onde:
Q o conjunto nito de estados;
o alfabeto de entrada, composto por um conjunto nito de smbolos;
o conjunto, tambm nito, de smbolos que podem ser lidos e/ou gravados na
ta de trabalho. ;
a funo parcial de transio, compreendendo os seguintes mapeamentos:
Q 2
Q{E,D}
Q {<} 2
Q{<}{D}
Q {>} 2
Q{>}{E}
q
0
o estado inicial, q
0
Q;
<, > so smbolos respectivamente situados imediatamente esquerda e ime-
diatamente direita da cadeia de entrada na congurao inicial;
F Q o conjunto de estados nais.
Deve-se, inicialmente, perceber a caracterizao de dois alfabetos distintos neste
formalismo. representa o conjunto dos smbolos que compem as cadeias de entrada.
A linguagem de entrada deve ser, naturalmente, um subconjunto de

. Por outro
lado, representa o conjunto dos smbolos que podem ser lidos e/ou gravados na ta
292 Linguagens Formais - Teoria, Modelagem e Implementao
de trabalho. Este conjunto incorpora, pela sua prpria denio, o conjunto , alm de
outros smbolos que sero utilizados durante a operao do dispositivo.
O conjunto Q e o estado q
0
representam, respectivamente, assim como no caso
dos autmatos nitos e de pilha, o conjunto de estados que formam o controle nito do
dispositivo e o estado inicial nico que utilizado para caracterizar a congurao
inicial do mesmo. F representa um subconjunto de Q e contm os chamados estados
nais, que so utilizados para caracterizar as conguraes nais em um dispositivo
deste tipo.
Os smbolos < e > so empregados como delimitadores da cadeia a ser anali-
sada na ta de trabalho. Eles no pertencem ao alfabeto , indicando com isso que no
podem ser utilizados na composio das cadeias de entrada nem ser gravados na ta de
trabalho em sobreposio a outros smbolos (exceto em sobreposio a si prprios).
A inspeo da funo de transio revela que os smbolos especiais < e > s podem
ser gravados na prpria posio original em que se encontravam no incio da operao da
mquina. A funo , da maneira como formulada, impede ainda que outro smbolo
seja gravado em qualquer uma dessas duas posies. Ela especica, ainda, um nico
sentido de movimentao do cursor em cada caso: esquerda para > e direita para <.
A representao da funo de transio indica, a partir do estado corrente e do
smbolo correntemente selecionado na ta de trabalho, o novo estado corrente, o novo
smbolo que dever substituir o correntemente selecionado e o sentido em que o cursor
de acesso dever se deslocar: para a esquerda (E) ou para a direita (D).
Considere-se a transio (q
i
,
m
) = {(q
j
,
n
, E)}. As seguintes aes so tomadas,
nesta seqncia, aps a seleo dessa transio:
O estado corrente q
i
substitudo pelo novo estado q
j
;
O smbolo correntemente apontado pelo cursor de acesso,
m
, substitudo, na
ta de trabalho, pelo novo smbolo
n
;
O cursor de acesso deslocado de uma posio para a esquerda (E).
Como regra adicional, deve-se registrar que as Mquinas de Turing com ta limitada
no permitem movimentos do cursor de acesso esquerda da posio preenchida com
<, nem direita da posio preenchida com >. Sua movimentao ca, portanto,
connada ao trecho da ta de trabalho situado entre os delimitadores < e >, o que
justica o uso do termo ta limitada para caracterizar esse tipo de dispositivo.
A denio da funo remete ainda para o no-determinismo inerente a esse tipo
de dispositivo. Dada uma mesma combinao de estado corrente e de smbolo na ta de
trabalho, possvel especicar mltiplas transies envolvendo o prximo estado, o novo
smbolo a ser gravado na ta e o sentido de movimentao do cursor de acesso aps a
gravao.
Apesar de ser possvel se considerar a denio de Mquinas de Turing com ta
limitada determinsticas, a questo de uma eventual equivalncia entre as Mquinas de
Turing com ta limitada no-determinsticas e uma correspondente verso determinstica
um problema em aberto, de soluo ainda desconhecida ([58]). Vale lembrar que este
resultado foi provado verdadeiro para o caso dos autmatos nitos e falso para o caso
dos autmatos de pilha.
A congurao de uma Mquina de Turing com ta limitada denotada atravs
da tripla (, q
k
, ), em que q
k
o estado corrente, {<}

a poro da cadeia de
entrada que se encontra esquerda do cursor de acesso e

{>} a poro da cadeia


5 Linguagens Sensveis ao Contexto 293
de entrada que se encontra direita do cursor de acesso, incluindo a posio por ele
correntemente selecionada. Note-se que < e > podem ocorrer, cada um, no mximo
uma vez em , e sempre nos respectivos extremos.
A congurao inicial (<, q
0
, >), onde q
0
o estado inicial e

a cadeia
de entrada a ser analisada. O cursor de acesso refere-se, portanto, ao smbolo inicial (mais
esquerda) da cadeia . A poro da representao (, q
k
, ) corresponde, neste caso,
apenas ao smbolo <, pois no existe ta esquerda deste delimitador. A congurao
nal denida como (, q
f
, ), com q
f
F, {<}

{>}.
As transies contidas na funo especicam possibilidades de movimentao, que
conduzem o dispositivo de cada possvel congurao para a correspondente congurao
seguinte. Diz-se que o dispositivo pra quando a funo no estiver denida para o
par (estado, smbolo de entrada) corrente.
A linguagem aceita por uma Mquina de Turing com ta limitada o conjunto
de todas as cadeias que so capazes de conduzir o dispositivo desde a sua congurao
inicial (nica para cada cadeia de entrada) at uma congurao nal qualquer, sem
possibilidade de movimentao adicional. Formalmente:
L(M) = {

| (<, q
0
, >)

(, q
f
, ), com q
f
F, {<}

{>}
Admite-se, como condio de parada, que = , com ({<, >}), (

{>
} {}) e no seja denida para (q
f
, ).
Deve-se, por ltimo, notar que, diferentemente dos autmatos nitos e dos autma-
tos de pilha, as Mquinas de Turing com ta limitada no exigem, como pr-requisito
para a caracterizao de uma congurao nal, que a cadeia de entrada tenha sido esgo-
tada ou, ainda, que o cursor de acesso se encontre direita do ltimo smbolo da referida
cadeia. Conguraes nais so caracterizadas quando (i) no h transio possvel de
ser aplicada na congurao corrente e (ii) o estado corrente nal, no importando a
posio do cursor de acesso.
Exemplo 5.15 A Mquina de Turing com ta limitada M = (Q, , , , q0, <, >, F) mostrada na
Figura 5.1 aceita a linguagem a

.
Q = {q0, q1, q2}
= {a, b}
= {a, b}
= {(q0, a) (q0, a, D), (q0, b) (q1, b, D), (q0, >) (q2, >, E),
(q1, b) (q1, b, D), (q1, >) (q1, >, E)}
F = {q2}
294 Linguagens Formais - Teoria, Modelagem e Implementao
q
0
q
1
q
2
b/(b, D)
> /(>, D) > /(>, D)
a/(a, D) b/(b, D)
Figura 5.1: Mquina de Turing com ta limitada que aceita
a

Exemplo de cadeia reconhecida: aabbb


(<, q0, aabbb >) (< a, q0, abbb >) (< aa, q0, bbb >) (< aab, q1, bb >) (<
aabb, q1, b >) (< aabbb, q1, >) (< aabb, q2, b >)
Como no h movimentao possvel a partir da congurao (< aabb, q2, b >), que nal,
a mquina pra e a cadeia aabbb aceita.
Exemplo de cadeia rejeitada: aaba
(<, q0, aaba >) (< a, q0, aba >) (< aa, q0, ba >) (< aab, q1, a >)
Como no h movimentao possvel a partir da congurao (< aab, q1, a >), que no
nal, a mquina pra e a cadeia aaba rejeitada.
A Mquina de Turing com ta limitada do Exemplo 5.15 comporta-se como um autmato nito:
o cursor de acesso move-se em apenas um sentido (exceto quando o smbolo > encontrado na ta
de trabalho) e no h gravao de smbolos na ta, apenas leitura (na verdade, cada smbolo lido
substitudo por ele mesmo). Este exemplo sugere que as Mquinas de Turing com ta limitada possam
ser usadas em substituio aos autmatos nitos, ainda que com um custo maior de processamento
(o custo de gravao de um smbolo na ta).
fcil, tambm, perceber como as Mquinas de Turing com ta limitada podem ser empre-
gadas em mecanismos de transduo, maneira dos transdutores nitos estudados anteriormente.
Se, neste exemplo, as transies:
(q0, a) (q0, a, D)
(q0, b) (q1, b, D)
(q1, b) (q1, b, D)
forem, respectivamente, substitudas por:
(q0, a) (q0, b, D)
(q0, b) (q1, a, D)
(q1, b) (q1, a, D)
ento o autmato resultante mapear elementos do conjunto a

em elementos do conjunto b

,
em que os smbolos a das cadeias do primeiro conjunto so substitudos por smbolos b nas
cadeias do segundo conjunto e vice-versa. 2
Exemplo 5.16 A Mquina de Turing com ta limitada M = (Q, , , , q0, <, >, F) da Figura 5.2
aceita a linguagem {a
n
b
n
| n 1}.
Q = {q0, q1, q2, q3, q4, q5}
= {a, b}
5 Linguagens Sensveis ao Contexto 295
= {a, b, X, Y}
= {(q0, a) (q1, X, D), (q0, b) (q5, b, D), (q0, Y) (q3, Y, D),
(q1, a) (q1, a, D), (q1, Y) (q1, Y, D), (q1, b) (q2, Y, E),
(q1, >) (q5, >, E), (q2, X) (q0, X, D), (q2, Y) (q2, Y, E),
(q2, a) (q2, a, E), (q3, Y) (q3, Y, D), (q3, b) (q5, b, D),
(q3, >) (q4, >, E)}
F = {q4}
q
0
q
1
q
2
q
5
q
3
q
4
Y/(Y, D)
a/(a, D)
Y/(Y, E)
a/(a, E)
Y/(Y, D)
a/(X, D) b/(Y, E)
X/(X, D)
b/(b, D)
b/(b, D)
> /(>, E)
Y/(Y, D)
> /(>, E)
Figura 5.2: Mquina de Turing com ta limitada que aceita
{a
n
b
n
| n 1}
Seu funcionamento intuitivo e reete a aplicao do seguinte algoritmo:
1. O smbolo a sob o cursor substitudo pelo smbolo X. O cursor deslocado de uma
posio, para a direita.
2. O cursor continua se deslocando para a direta at encontrar um smbolo b ou o smbolo
>.
3. Se encontrar >, a cadeia rejeitada, pois existem mais smbolos a do que b. Se
encontrar b, este ser substitudo por Y e o cursor ser deslocado para a esquerda at
encontrar o X mais direita. Neste momento, o cursor deslocado de uma posio para
a direita e reinicia-se todo o processo no passo (1).
4. Se o smbolo corrente for Y, isso indica que j foram considerados todos os smbolos a.
Se o restante da cadeia de entrada for formada apenas por smbolos Y, ela ser aceita.
Caso contrrio, ser rejeitada. o caso, por exemplo, de cadeias que contm mais smbolos
b do que smbolos a.
A seguir, confere-se a operao de M com algumas cadeias:
296 Linguagens Formais - Teoria, Modelagem e Implementao
A cadeia aabb aceita:
(<, q0, aabb >) (< X, q1, abb >) (< Xa, q1, bb >) (< X, q2, aYb >) (<
, q2, XaYb >) (< X, q0, aYb >) (< XX, q1, Yb >) (< XXY, q1, b >) (<
XX, q2, YY >) (< X, q2, XYY >) (< XX, q0, YY >) (< XXY, q3, Y >)
(< XXYY, q3, >) (< XXY, q4, Y >)
A cadeia aab rejeitada:
(<, q0, aab >) (< X, q1, ab >) (< Xa, q1, b >) (< X, q2, aY >) (<, q2, XaY >)
(< X, q0, aY >) (< XX, q1, Y >) (< XXY, q1, >) (< XX, q5, Y >)
A cadeia abb rejeitada:
(<, q0, abb >) (< X, q1, bb >) (<, q2, XYb >) (< X, q0, Yb >) (< XY, q3, b >)
(< XYb, q5, >)
Neste exemplo, a Mquina de Turing com ta limitada est sendo utilizada para reconhecer
uma linguagem livre de contexto, e tal fato sugere que esse tipo de dispositivo possa ser empregado
tambm no reconhecimento desta categoria de linguagens, em substituio aos autmatos de pilha.
Alm de necessitar da movimentao do cursor em ambos os sentidos, neste exemplo a subs-
tituio (gravao) de um smbolo do alfabeto de entrada por smbolos que no fazem parte deste
alfabeto (no caso, a por X e b por Y) essencial para o seu correto funcionamento. 2
Exemplo 5.17 A Mquina de Turing com ta limitada da Figura 5.3 reconhece a linguagem {wcw |
w {a, b}

} sobre o alfabeto {a, b, c}:


q
0
q
1
q
2
q
3
q
4
q
5
q
6
q
7
q
8
a/(X, D) c/(c, D) a/(X, E) c/(c, E)
c/(c, D)
> /(>, E)
b/(b, D)
a/(a, D) X/(X, D) X/(X, E)
a/(a, E), b/(b, E)
b/(b, D)
a/(a, D) X/(X, D)
X/(X, D)
c/(c, D)
b/(X, D) b/(X, E)
a/(X, D)
Figura 5.3: Mquina de Turing com ta limitada que aceita
{wcw | w {a, b}

}
Este exemplo ilustra o reconhecimento de uma linguagem tipicamente sensvel ao contexto,
pois a subcadeia w deve ser a mesma em ambos os lados do smbolo c. Tal caracterstica remete
relao entre a declarao e o uso de nomes, encontrada na maioria das linguagens de programao
algortmicas tradicionais um nome s pode ser usado se a sua declarao for visvel no local do
uso.
5 Linguagens Sensveis ao Contexto 297
Exemplo de cadeia reconhecida: abbcabb
(<, q0, abbcabb >) (< X, q1, bbcabb >) (< Xb, q1, bcabb >)
(< Xbb, q1, cabb >) (< Xbbc, q2, abb >) (< Xbb, q3, cXbb >)
(< Xb, q4, bcXbb >) (< X, q4, bbcXbb >) (<, q4, XbbcXbb >)
(< X, q0, bbcXbb >) (< XX, q5, bcXbb >) (< XXb, q5, cXbb >)
(< XXbc, q6, Xbb >) (< XXbcX, q6, bb >) (< XXbc, q3, XXb >)
(< XXb, q3, cXXb >) (< XX, q4, bcXXb >) (< X, q4, XbcXXb >)
(< XX, q0, bcXXb >) (< XXX, q5, cXXb >) (< XXXc, q6, XXb >)
(< XXXcX, q6, Xb >) (< XXXcXX, q6, b >) (< XXXcX, q3, XX >)
(< XXXc, q3, XXX >) (< XXX, q3, cXXX >) (< XX, q4, XcXXX >)
(< XXX, q0, cXXX >) (< XXXc, q7, XXX >) (< XXXcX, q7, XX >)
(< XXXcXX, q7, X >) (< XXXcXXX, q7, >) (< XXXcXX, q8, X >)
Pode-se demonstrar, atravs do Pumping Lemma para linguagens livres de contexto, que
a linguagem deste exemplo no livre de contexto (a demonstrao semelhante do Exemplo
4.39). Tal resultado sugere, como ser mostrado mais adiante, que as Mquinas de Turing com ta
limitada so dispositivos capazes de reconhecer uma classe de linguagens mais ampla do que as livres
de contexto, reconhecidas pelos autmatos de pilha trata-se, no caso, da classe das linguagens
sensveis ao contexto, caracterizadas neste captulo (ver Teorema 5.3). 2
5.5 Equivalncia entre Gramticas Sensveis ao Contexto e
Mquinas de Turing com Fita Limitada
Linguagens sensveis ao contexto podem ser formalizadas atravs de gramticas sensveis
ao contexto. As Mquinas de Turing com ta limitada, por outro lado, correspondem
aos dispositivos de reconhecimento associados s linguagens sensveis ao contexto. As
gramticas sensveis ao contexto e as Mquinas de Turing com ta limitada representam
exatamente a mesma classe de linguagens as linguagens sensveis ao contexto. Esta
equivalncia, que foi inicialmente estabelecida por Kuroda em [65], poder ser melhor
percebida atravs dos algoritmos descritos a seguir.
Teorema 5.3 (Mquina de Turing gramtica) Seja L = L(M), M uma M-
quina de Turing com ta limitada. Ento L {} = L(G), com G sendo uma gramtica
sensvel ao contexto.
Justicativa A idia geral desta demonstrao consiste na obteno de uma gram-
tica sensvel ao contexto que reproduz, na derivao de suas sentenas, os movimentos
de uma Mquina de Turing com ta limitada que reconhece a mesma linguagem. Se a
cadeia de entrada conduz o autmato a uma congurao nal, sendo portanto aceita,
esta mesma cadeia gerada pela gramtica. Cadeias rejeitadas pelo autmato no so
geradas pela gramtica.
O algoritmo descrito a seguir especica os passos a serem seguidos na transformao
sistemtica de uma Mquina de Turing com ta limitada M = (Q, , , , <, >, F) em
uma gramtica sensvel ao contexto G = (V, , P, S).
Como se trata de um procedimento cannico, freqente que seja gerada uma
grande quantidade de smbolos no-terminais e de regras, vrios dos quais eventualmente
repetidos, mesmo que a Mquina de Turing com ta limitada correspondente possua
298 Linguagens Formais - Teoria, Modelagem e Implementao
poucos estados e poucas entradas. O procedimento descrito abaixo, no entanto, pode ser
facilmente automatizado atravs de programas de computador.
Inicialmente so gerados os smbolos no-terminais de G. Estes smbolos possuem
o formato geral [, ], com , e {<, }{, q, q}{>, }, com e q Q.
A primeira dessas duas componentes [, ...] representa um certo smbolo ter-
minal da cadeia de entrada. A segunda componente [..., ] representa parte da
congurao assumida pela Mquina de Turing com ta limitada no reconhecimento da
referida cadeia de entrada.
Os conjuntos P e S de G so inicialmente denidos como:
I. P =
II. P = P {S [
i
, < q
0

i
]A, S [
i
, < q
0

i
>],
i
}
N = {S, A}
N = N {[
i
, < q
0

i
],
i
}
N = N {[
i
, < q
0

i
>],
i
}
III. P = P {A [
i
,
i
]A, A [
i
,
i
>],
i
}
N = N {[
i
,
i
],
i
}
N = N {[
i
,
i
>],
i
}
Eles permitem gerar formas sentenciais do tipo:
A) [
i
, < q
0

i
>], ou
B) [
i
, < q
0

i
][
j
,
j
][
k
,
k
]...[
u
,
u
>]
formadas exclusivamente por smbolos no-terminais de G.
A primeira forma sentencial refere-se ao caso de cadeias de entrada cujo compri-
mento igual a 1, ao passo que a segunda se refere a casos em que a cadeia de entrada
possui comprimento maior do que 1.
Considere-se o segundo caso. Apenas para efeito didtico, pode-se construir duas
novas cadeias a partir desta forma sentencial. Tomando-se apenas o primeiro elemento
de cada smbolo no-terminal, obtm-se a cadeia:
[
i
, ...][
j
, ...][
k
, ...]...[
u
, ...] ou, simplesmente,
i

k
...
u
e tomando-se apenas o segundo elemento de cada smbolo no-terminal:
[..., < q
0

i
][...,
j
][...,
k
]...[...,
u
>] ou, simplesmente, < q
0

k
...
u
>
fcil perceber que a primeira cadeia (
i

k
...
u
) corresponde cadeia de entrada
que submetida ao reconhecedor e que ser objeto de uma tentativa de sntese atravs
da gramtica que se pretende construir.
A segunda cadeia (< q
0

k
...
u
>) corresponde congurao inicial da M-
quina de Turing limitada, ou seja, quela em que o estado inicial q
0
e o cursor de acesso
encontra-se posicionado sobre o smbolo
i
, portanto com toda a cadeia de entrada
sua direita e apenas o smbolo < sua esquerda. Conforme a notao previamente
apresentada, a congurao inicial da mquina ser:
(<, q
0
,
i

k
...
u
>)
5 Linguagens Sensveis ao Contexto 299
Dessa maneira, as formas sentenciais dos tipos A e B correspondem s duas con-
guraes iniciais com as quais o autmato poder se defrontar e representam, em termos
gramaticais, uma verso adequada das mesmas para a simulao dos movimentos do re-
conhecedor pela gramtica. Em outras palavras, partindo-se da raiz S, e pela aplicao
das regras dos itens II e III, chega-se a formas sentenciais compostas apenas por smbolos
no-terminais de G, conforme ilustrado em A e B.
Um conjunto adicional de regras de P deve ser especicado de forma que se possa
garantir que, para toda movimentao possvel da Mquina de Turing com ta limitada
a partir de uma congurao qualquer, haja a possibilidade de uma derivao correspon-
dente em G.
Genericamente, as regras de M enquadram-se em quatro casos (conforme a denio
da funo de transio ):
Caso i: (q
i
, <) = (q
j
, <, D)
Caso ii: (q
i
, >) = (q
j
, >, E)
Caso iii: (q
i
,
m
) = (q
j
,
n
, D)
Caso iv: (q
i
,
m
) = (q
j
,
n
, E)
Suponha-se, a ttulo de exemplo, que a cadeia de entrada de uma Mquina de
Turing com ta limitada qualquer seja abca. A sua congurao inicial , portanto,
(<, q
0
, abca >). Nos termos da forma sentencial gerada pelas regras iniciais de G, ela
ser composta pelos seguintes smbolos no-terminais (quatro no total):
[a, < q
0
a][b, b][c, c][a, a >]
Suponha-se que a regra (q
0
, a) = (q
1
, d, D) (caso iii) seja aplicada em M. Neste
caso, G deve permitir a derivao:
[a, < q
0
a][b, b][c, c][a, a >] [a, < d][b, q
1
b][c, c][a, a >]
Note-se que o movimento de M reproduzido como uma nova forma sentencial em
G, de modo que, atravs da posio de q
i
presente em apenas um smbolo no-
terminal de cada vez em cada forma sentencial distinta , determina-se a posio do
cursor de acesso sobre a ta de trabalho.
A indicao de estado q
i
migra, assim, de um smbolo no-terminal para o seguinte
(aquele que est sua direita), ou, ainda, para o anterior (aquele que est sua esquerda),
caso a cabea de acesso se desloque para a esquerda.
Caso M aplique uma regra que desloque o cursor de acesso para a esquerda, a nova
congurao tambm representada como uma nova derivao em G. Por exemplo,
suponha-se agora que a regra (q
1
, b) = (q
2
, e, E) (caso iv) seja aplicada na congurao
anterior. Ento, do ponto de vista de G, a seguinte nova forma sentencial deveria ser
gerada:
[a, < d][b, q
1
b][c, c][a, a >] [a, < q
2
d][b, e][c, c][a, a >]
Nesta forma sentencial, se (q
2
, d) = (q
3
, d, E) (caso iv, novamente), ento a nova
congurao de M (, q
3
, < abca >). Para reetir essa nova condio, G deve possuir
regras que permitam a derivao:
[a, < q
2
d][b, e][c, c][a, a >] [a, q
3
< d][b, e][c, c][a, a >]
300 Linguagens Formais - Teoria, Modelagem e Implementao
Esta ltima forma sentencial mostra que M pode, eventualmente, deslocar o cursor
de acesso para a esquerda, at fazer com que o smbolo corrente seja <. Em situaes
como esta, o nico movimento permitido para a direita, sem modicao do smbolo
lido (conforme a denio da funo de transio). Supondo que (q
3
, <) = (q
4
, <, D)
na verdade, a nica transio possvel de ser aplicada neste ponto , caracteriza-se
o caso (i), e a nova forma sentencial obtida :
[a, q
3
< d][b, e][c, c][a, a >] [a, < q
4
d][b, e][c, c][a, a >]
O conjunto de regras de G que so capazes de promover tais derivaes , natu-
ralmente, obtido a partir da especicao da funo . Deve-se, portanto, considerar os
casos individuais. A partir de cada um deles, novas produes so formuladas e, a partir
destas, novos smbolos no-teminais so acrescentados gramtica. Observe-se que nos
casos (iii) e (iv) as transies so feitas com smbolos do alfabeto , ou seja,
m
,
n
.
Caso i: (q
i
, <) = (q
j
, <, D)
A cadeia de entrada pode ser unitria (IV) ou no (V):
IV. P = P {[
m
, q
i
<
m
>] [
m
, < q
j

m
>],
m
}
N = N {[
m
, q
i
<
m
>],
m
}
N = N {[
m
, < q
j

m
>],
m
}
V. P = P {[
m
, q
i
<
m
] [
m
, < q
j

m
],
m
}
N = N {[
m
, q
i
<
m
],
m
}
N = N {[
m
, < q
j

m
],
m
}
Caso ii: (q
i
, >) = (q
j
, >, E)
A cadeia de entrada pode ser unitria (VI) ou no (VII):
VI. P = P {[
m
, <
n
q
i
>] [
m
, < q
j

n
>],
m
,
n
}
N = N {[
m
, <
n
q
i
>],
m
,
n
}
N = N {[
m
, < q
j

n
>],
m
,
n
}
VII. P = P {[
m
,
n
q
i
>] [
m
, q
j

n
>],
m
,
n
}
N = N {[
m
,
n
q
i
>],
m
,
n
}
N = N {[
m
, q
j

n
>],
m
,
n
}
Caso iii: (q
i
,
m
) = (q
j
,
n
, D)
O smbolo corrente (
m
) pode:
ser o primeiro da cadeia de entrada:
cadeia unitria: VIII;
cadeia de comprimento 2: IX;
cadeia de comprimento maior que 2: X;
5 Linguagens Sensveis ao Contexto 301
ser o ltimo da cadeia de entrada:
cadeia unitria: coincide com VIII;
cadeia no-unitria: IX;
ser o penltimo da cadeia de entrada:
cadeia de comprimento 2: coincide com IX;
cadeia de comprimento maior que 2: XII;
estar em qualquer posio diferente destas:
XIII;
VIII. P = P {[
p
, < q
i

m
>] [
p
, <
n
q
j
>],
p
}
N = N {[
p
, < q
i

m
>],
p
}
N = N {[
p
, <
n
q
j
>],
p
}
IX. P = P {[
p
, < q
i

m
][
q
,
r
>] [
p
, <
n
][
q
, q
j

r
>],
p
,
q
,
r
}
N = N {[
p
, < q
i

m
],
p
}
N = N {[
q
,
r
>],
q
,
r
}
N = N {[
p
, <
n
],
p
}
N = N {[
q
, q
j

r
>],
q
,
r
}
X. P = P {[
p
, < q
i

m
][
q
,
r
] [
p
, <
n
][
q
, q
j

r
],
p
,
q
,
r
}
N = N {[
p
, < q
i

m
],
p
}
N = N {[
q
,
r
],
q
,
r
}
N = N {[
p
, <
n
],
p
}
N = N {[
q
, q
j

r
],
q
,
r
}
XI. P = P {[
p
, q
i

m
>] [
p
,
n
q
j
>],
p
}
N = N {[
p
, q
i

m
>],
p
}
N = N {[
p
,
n
q
j
>],
p
}
XII. P = P {[
p
, q
i

m
][
q
,
r
>] [
p
,
n
][
q
, q
j

r
>],
p
,
q
,
r
}
N = N {[
p
, q
i

m
],
p
}
N = N {[
q
,
r
>],
q
,
r
}
N = N {[
p
,
n
],
p
}
N = N {[
q
, q
j

r
>],
q
,
r
}
XIII. P = P {[
p
, q
i

m
][
q
,
r
] [
p
,
n
][
q
, q
j

r
],
p
,
q
,
r
}
N = N {[
p
, q
i

m
],
p
}
N = N {[
q
,
r
],
q
,
r
}
N = N {[
p
,
n
],
p
}
N = N {[
q
, q
j

r
],
q
,
r
}
Caso iv: (q
i
,
m
) = (q
j
,
n
, E)
302 Linguagens Formais - Teoria, Modelagem e Implementao
O smbolo corrente (
m
) pode:
ser o primeiro da cadeia de entrada:
cadeia unitria: XIV;
cadeia no-unitria: XV;
ser o ltimo da cadeia de entrada:
cadeia unitria: coincide com XIV;
cadeia de comprimento 2: XVI;
cadeia de comprimento maior que 2: XVII;
ser o segundo da cadeia de entrada:
cadeia de comprimento 2: coincide com XVI;
cadeia de comprimento maior que 2: XVIII;
estar em qualquer posio diferente destas:
XIX;
XIV. P = P {[
p
, < q
i

m
>] [
p
, q
j
<
n
>],
p
}
N = N {[
p
, < q
i

m
>],
p
}
N = N {[
p
, q
j
<
n
>],
p
}
XV. P = P {[
p
, < q
i

m
] [
p
, q
j
<
n
],
p
}
N = N {[
p
, < q
i

m
],
p
}
N = N {[
p
, q
j
<
n
],
p
}
XVI. P = P {[
p
, <
q
][
r
, q
i

m
>] [
p
, < q
j

q
][
r
,
n
>],
p
,
q
,
r
}
N = N {[
p
, <
q
],
p
,
q
}
N = N {[
r
, q
i

m
>],
r
}
N = N {[
p
, < q
j

q
],
p
,
q
}
N = N {[
r
,
n
>],
r
}
XVII. P = P {[
p
,
q
][
r
, q
i

m
>] [
p
, q
j

q
][
r
,
n
>],
p
,
q
,
r
}
N = N {[
p
,
q
],
p
,
q
}
N = N {[
r
, q
i

m
>],
r
}
N = N {[
p
, q
j

q
],
p
,
q
}
N = N {[
r
,
n
>],
r
}
XVIII. P = P {[
p
, <
q
][
r
, q
i

m
] [
p
, < q
j

q
][
r
,
n
],
p
,
q
,
r
}
N = N {[
p
, <
q
],
p
,
q
}
5 Linguagens Sensveis ao Contexto 303
N = N {[
r
, q
i

m
],
r
}
N = N {[
p
, < q
j

q
],
p
,
q
}
N = N {[
r
,
n
],
r
}
XIX. P = P {[
p
,
q
][
r
, q
i

m
] [
p
, q
j

q
][
r
,
n
],
p
,
q
,
r
}
N = N {[
p
,
q
],
p
,
q
}
N = N {[
r
, q
i

m
],
r
}
N = N {[
p
, q
j

q
],
p
,
q
}
N = N {[
r
,
n
],
r
}
A operao do autmato cessa quando ele atinge uma congurao para a qual no
exista movimentao possvel, ou seja, quando (q
i
,
m
) = . Nesta situao, se q
i
F,
diz-se que o autmato aceita a cadeia de entrada. Caso contrrio, diz-se que ele a rejeita.
Condio semelhante precisa ser alcanada atravs de G. Suponha-se que, quando
o autmato pra de se movimentar, a congurao seja (, q
i

m
). A forma sentencial
equivalente em G ser [...][...]...[
n
, q
i

m
][...].
Se, nesta situao, q
i
F e (q
i
,
m
) = , ento as seguintes regras devem ser
adicionadas gramtica G:
Caso v: q
i
F e (q
i
, <) =
XX. P = P {[
p
, q
i
<
q
]
p
,
p
,
q
}
N = N {[
p
, q
i
<
q
],
p
,
q
}
XXI. P = P {[
p
, q
i
<
q
>]
p
,
p
,
q
}
N = N {[
p
, q
i
<
q
>],
p
,
q
}
Caso vi: q
i
F e (q
i
, >) =
XXII. P = P {[
p
,
q
q
i
>]
p
,
p
,
q
}
N = N {[
p
,
q
q
i
>],
p
,
q
}
XXIII. P = P {[
p
, <
q
q
i
>]
p
,
p
,
q
}
N = N {[
p
, <
q
q
i
>],
p
,
q
}
Caso vii: q
i
F e (q
i
,
m
) =
XXIV. P = P {[
p
, < q
i

m
]
p
,
p
}
N = N {[
p
, < q
i

m
],
p
}
XXV. P = P {[
p
, q
i

m
]
p
,
p
}
N = N {[
p
, q
i

m
],
p
}
XXVI. P = P {[
p
, q
i

m
>]
p
,
p
}
N = N {[
p
, q
i

m
>],
p
}
XXVII. P = P {[
p
, < q
i

m
>]
p
,
p
}
N = N {[
p
, < q
i

m
>],
p
}
304 Linguagens Formais - Teoria, Modelagem e Implementao
Essas regras do incio ao processo de converso da cadeia armazenada no lado
esquerdo dos no-terminais e at ento inalterada em uma sentena a ser efe-
tivamente gerada por G. A forma sentencial inicial ser obtida atravs da derivao
[...][...]...[
n
, q
i

m
][...] [...][...]...
n
[...], se q
i
F e (q
i
,
m
) = .
Finalmente, devem ser acrescentadas mais algumas produes em P, as quais per-
mitam que os no-terminais remanescentes na forma sentencial sejam todos substitudos
por smbolos terminais, conforme o valor armazenado no lado esquerdo, no interior do
mesmo:
Caso viii: Substituio de smbolos no-terminais por smbolos terminais.
XXVIII. P = P {[
m
, ]
n

m

n
,
n
, [
m
, ] V}
XXIX. P = P {
n
[
m
, ]
n

m
,
n
, [
m
, ] V}
A simples inspeo do formato das regras geradas nos itens I a XXIX permite
concluir que toda e qualquer gramtica gerada por esse mtodo uma gramtica sensvel
ao contexto. Ser omitida a demonstrao formal da equivalncia das Mquinas de
Turing com ta limitada com as gramticas sensveis ao contexto, que no entanto pode
ser encontrada em [52].
Exemplo 5.18 Considere-se uma Mquina de Turing com ta limitada M = (Q, , , , q0, <, >, F),
conforme apresentado a seguir, e a cadeia de entrada ab.
Q = {q0, q1}
= {a, b}
= {a, b}
= {(q0, a) (q0, a, D), (q0, b) (q1, b, E)}
F = {q1}
A Figura 5.4 ilustra os movimentos que levam o reconhecedor desde a sua congurao inicial
at uma congurao nal. direita, as respectivas formas sentenciais, que so geradas pela
aplicao dos casos enumerados anteriormente. Note-se que, por uma questo de economia de
espao, esto mostradas aqui apenas as regras e os smbolos no-terminais relevantes para a gerao
desta cadeia. Uma gerao exaustiva de todos os smbolos e de todas as regras da gramtica G
equivalente a M tornaria o exemplo exageradamente extenso, e por isso deixada como exerccio
para o leitor.
Figura 5.4: Gramtica sensvel ao contexto simulando M-
quina de Turing com ta limitada para o Exemplo 5.18
5 Linguagens Sensveis ao Contexto 305
2
Para dar seqncia ao assunto, necessrio demonstrar que as Mquinas de Turing
com ta limitada, cujas tas sejam compostas por uma nica trilha (o que corresponde
ao caso visto at o momento), so equivalentes, quanto ao seu poder de reconhecimento,
s Mquinas de Turing com mltiplas trilhas na ta de trabalho. Esse caso est ilustrado
na Figura 5.5, em que a ta de trabalho compreende trs trilhas distintas:
Figura 5.5: Mquina de Turing com mltiplas trilhas na ta de
trabalho, situao inicial
Neste modelo, qualquer que seja a quantidade de trilhas na ta de trabalho, os
cursores de acesso so sempre deslocados conjuntamente e esto, portanto, sempre na
mesma posio da ta, porm cada qual apontando para a clula correspondente. As
transies so efetuadas considerando-se o estado corrente e o conjunto dos smbolos
referenciados simultaneamente na ta de trabalho.
Na Figura 5.5, tal conjunto corresponde tripla (
1
,
2
,
3
), em que
1
est gravado
na primeira posio da trilha 1,
2
na primeira posio da trilha 2 e
3
na primeira posio
da trilha 3. Como resultado da aplicao de uma transio, o autmato muda de estado,
a tripla (
1
,
2
,
3
) substituda por (
1
,
2
,
3
) e os trs cursores de acesso deslocam-se
simultaneamente de uma posio, por exemplo, direita (todos juntos). A nova situao
pode ser visualizada na Figura 5.6.
306 Linguagens Formais - Teoria, Modelagem e Implementao
Figura 5.6: Mquina de Turing com mltiplas trilhas na ta de
trabalho, situao nal
Seja
1
o alfabeto usado na trilha 1,
2
o alfabeto da trilha 2 e
3
o alfabeto da
trilha 3. fcil perceber que a funo de transio de um autmato assim caracterizado
pode ser expressa na forma:
: Q (
1

2

3
) 2
Q(123){E,D}
ou, generalizando para n trilhas:
: Q (
1

2
...
n
) 2
Q(12...n){E,D}
Convencionando-se que cada elemento do conjunto
1

2
...
n
seja repre-
sentado por um novo e nico smbolo, pertencente a um novo alfabeto , ento a funo
torna-se:
: Q 2
Q{E,D}
idntica, portanto, que foi denida originalmente para a Mquina de Turing com ta
limitada. Em outras palavras, a possibilidade de se convencionar que a ta de trabalho
seja repartida em diversas trilhas no confere maior poder de reconhecimento ao dis-
positivo. Por outro lado, permite que o mesmo seja considerado de um outro ponto de
vista, o que pode facilitar certas demonstraes, como, por exemplo, a do Teorema 5.4
apresentado a seguir.
Teorema 5.4 (Mquina de Turing gramtica) Seja L = (G), com G uma gra-
mtica sensvel ao contexto. Ento L = L(M), sendo M uma Mquina de Turing com
ta limitada.
Justicativa Assim como foi feito no Teorema 5.3, ser apresentado como prova deste
teorema um algoritmo que permite efetuar um mapeamento direto entre G e sua cor-
respondente Mquina de Turing com ta limitada. Trs propriedades das Mquinas de
Turing com ta limitada so fundamentais para a apresentao e o entendimento do
algoritmo:
i) O no-determinismo inerente sua denio;
ii) A caracterstica monotnica das gramticas sensveis ao contexto (suas formas
sentenciais nunca sofrem contrao aps a aplicao de uma regra);
5 Linguagens Sensveis ao Contexto 307
iii) A possibilidade de se considerar a ta de trabalho como sendo composta por vrias
trilhas, sem perda de generalidade.
Algoritmo 5.2 (Mquina de Turing gramtica) Obteno de uma Mquina de
Turing com ta limitada que aceita a linguagem gerada por uma gramtica sensvel ao
contexto.
Entrada: uma gramtica sensvel ao contexto G;
Sada: uma Mquina de Turing com ta limitada M tal que L(M) = L(G);
Mtodo:
A mquina M que reconhece L(G) apresenta uma ta de trabalho formada por
duas trilhas de mesmo comprimento:
- Na primeira trilha est inicialmente gravada a cadeia w que se deseja exa-
minar para determinar se ela pertence ou no a L;
- Na segunda trilha est inicialmente gravado, na primeira posio, o smbolo
no-terminal S, a raiz da gramtica G. A cadeia gravada na segunda trilha
ser denotada por z, e, portanto, inicialmente |z| = |S| = 1.
A operao de M no-determinstica e acontece da seguinte forma:
1. Determinar todos os pares (i, ) tais que, a partir da posio i da cadeia z,
seja possvel identicar uma subcadeia , tal que
1
|
2
| ... |
n
P,
sendo P o conjunto das regras de G;
2. Para cada par (i, ) obtido no passo (1), criar um novo thread para M,
e deslocar o respectivo cursor de acesso simultaneamente sobre as duas
trilhas, at a posio i da ta de trabalho; encerrar o thread original na
congurao de rejeio;
3. Para cada thread criado no passo (2):
a) Criar n novos threads para M, sendo que cada thread j , 1 j
n, deve substituir, na cadeia z, a partir da posio i, a subcadeia
pela subcadeia
j
; encerrar o thread original na congurao de
rejeio;
b) Para cada thread criado no passo (3.a):
i. Se |z| > |w|, encerrar o thread na congurao de rejeio;
ii. Se |z| < |w|, desviar para o passo (1);
iii. Se |z| = |w| e z = w, desviar para o passo (1);
308 Linguagens Formais - Teoria, Modelagem e Implementao
iv. Se |z| = |w| e z = w, encerrar o thread na congurao de
aceitao.

O Algoritmo 5.2 faz com que M reproduza, na segunda trilha, as formas sentenciais
de G na sntese da cadeia fornecida (caso esta seja uma sentena de L). Cada uma das
diferentes seqncias de derivao possveis de serem obtidas em G so simuladas por
um thread distinto de M, que opera de forma no-determinstica.
Dessa forma, a cadeia de entrada ser aceita se e apenas se existir pelo menos um
thread que simule a seqncia de derivaes que gera w em G e, portanto, que con-
duza M desde a sua congurao inicial at uma congurao de aceitao. Se todas as
seqncias possveis tiverem sido consideradas (atravs do no-determinismo) e ainda as-
sim nenhuma delas tiver conduzido M a uma congurao de aceitao, ento certamente
a cadeia de entrada no pertence a L. Do ponto de vista gramatical, isso corresponde ao
fato de no existir derivao possvel para a referida cadeia em G. Logo, M capaz de
aceitar apenas e to somente as sentenas que so geradas por G.
possvel provar, em funo do carter monotnico das derivaes obtidas atravs
das gramticas sensveis ao contexto, que todos os threads criados pelo Algoritmo 5.2 se
encerram aps um tempo nito de execuo, correspondente ao tempo necessrio para a
gerao de uma forma sentencial de comprimento mnimo igual ao da cadeia de entrada.
Assim, garante-se a existncia de uma Mquina de Turing com ta limitada que sempre
pra, qualquer que seja a cadeia de entrada que lhe seja submetida. Portanto, L(G)
uma linguagem recursiva.
O Algoritmo 5.2 presume que leitor saiba como realizar as seguintes operaes
fundamentais em uma Mquina de Turing com ta limitada que, por serem extensas,
embora no necessariamente complexas, sero deixadas apenas como exerccio:
Deslocar o cursor de acesso at uma posio arbitrria da ta de trabalho;
Reconhecer um padro (cadeia) na ta de trabalho, a partir da posio corrente
do cursor de acesso;
Deslocar parte da cadeia de entrada para a direita, com a nalidade de abrir espao
para a insero dos smbolos indicados pela produo que estiver sendo aplicada;
Substituir uma subcadeia localizada em uma das trilhas por uma subcadeia cor-
respondente, conforme indicado em alguma das produes da gramtica;
Determinar se a cadeia a ser reescrita na segunda trilha eventualmente necessita
de mais posies livres do que a ta de trabalho dispe;
Comparar as cadeias contidas nas duas trilhas da ta de trabalho para determinar
se so ou no idnticas.
Exemplo 5.19 Seja G = ({a, b, c, Q, S}, {a, b, c}, {S abc | aSQ, bQc bbcc, cQ Qc}, S),
L(G) = {a
n
b
n
c
n
, n 1}. A Figura 5.7 reproduz uma seqncia de movimentos de M que conduz
aceitao da cadeia aabbcc. So mostrados os contedos das duas trilhas da ta de trabalho.
5 Linguagens Sensveis ao Contexto 309
Figura 5.7: Mquina de Turing com ta limitada simulando
gramtica sensvel ao contexto
Assim como foi feito no Exemplo 5.18, por uma questo de economia de espao, so mostrados
aqui apenas os movimentos realizados por M que permitem o reconhecimento da cadeia de entrada,
omitindo-se as mltiplas tentativas de reconhecimento atravs do no-determinismo inerente ao
dispositivo. Trata-se, portanto, de uma situao de melhor caso, deixando-se para o leitor, como
exerccio, a investigao dos demais caminhos que no levam ao reconhecimento da sentena.
Suponha-se, no entanto, que no passo 4 a regra escolhida tivesse sido S abc (no lugar
de S aSQ). Neste caso, a forma sentencial resultante seria abc, portanto diferente da cadeia
aabbcc gravada na primeira trilha, e no passo seguinte no seria possvel identicar o lado esquerdo
de nenhuma regra em abc, disso resultando a parada de M em uma congurao no-nal.
Suponha-se, por outro lado, que no passo 5 a posio 2 tivesse sido selecionada (e no a
posio 3). Neste caso, M no seria capaz de reconhecer o lado esquerdo de nenhuma regra a
310 Linguagens Formais - Teoria, Modelagem e Implementao
partir da referida posio 2, pois no existem regras que possuam o lado esquerdo comeando com
o smbolo a, e portanto M pararia em uma congurao no-nal.
Essas duas possibilidades, no entanto, no indicam que a cadeia de entrada possa ser arbitra-
riamente aceita ou rejeitada. preciso lembrar que se trata de um dispositivo no-determinstico,
no qual todas as alternativas de movimentao devem ser consideradas, at que pelo menos uma
resulte em aceitao (como o caso mostrado na Figura 5.7 do Exemplo 5.19), ou ento que todas
tenham resultado em parada em congurao no-nal, caso em que a cadeia de entrada rejeitada.
A rejeio, no entanto, no aconteceria no Exemplo 5.19, mesmo que as hipteses consideradas
nos pargrafos anteriores tivessem de fato acontecido durante a operao de M, pois a Figura 5.7
comprova que existe pelo menos uma seqncia de movimentos que conduz M de sua congurao
inicial at uma congurao nal. 2
5.6 Relao entre Linguagens Sensveis ao Contexto e
Linguagens Livres de Contexto
Nesta seo ser investigada a relao existente entre as linguagens livres de contexto,
estudadas no Captulo 4, e as linguagens sensveis ao contexto, apresentadas no presente
captulo.
Teorema 5.5 (Livres de contexto sensveis ao contexto) Toda linguagem livre
de contexto L tambm uma linguagem sensvel ao contexto.
Justicativa Se L livre de contexto, ento existe pelo menos uma gramtica livre
de contexto G que gera L. Conforme demonstrado no Captulo 4, toda gramtica livre
de contexto pode ser colocada na Forma Normal de Chomsky, com as regras no formato
A BC ou A a, com A, B, C N, a . Se L, ento S admitida como
nica regra vazia em G.
Se L, ento L {} pode ser gerada por uma gramtica livre de contexto
que, alm de estar na Forma Normal de Chomsky, claramente uma gramtica sensvel
ao contexto tambm. Se L, idem. Logo, L tambm uma linguagem sensvel ao
contexto.
Exemplo 5.20 Sejam G1 = ({a, b, S}, {S}, {S aSb | }, S) e L(G1) = {a
n
b
n
, n 0}. G1
uma gramtica livre de contexto e, portanto, L(G1) uma linguagem livre de contexto. Seja agora
G2 = ({a, b, S, X}, {S, X}, P2, S), com P2 :
{S
A a
B b
S AX
X SB}
fcil notar que L(G2) = L(G1), sendo que G2 est na Forma Normal de Chomsky. Como se
pode observar, L{} gerada por G3 = ({a, b, S, X}, {S, X}, P3, S), em que P3 = P2 {S }.
Portanto, G3 uma gramtica sensvel ao contexto. Logo, L tambm uma linguagem sensvel ao
contexto. 2
Teorema 5.6 (Livres de contexto = sensveis ao contexto) A classe das lingua-
gens livres de contexto constitui subconjunto prprio da classe das linguagens sensveis
ao contexto.
Justicativa Atravs da aplicao do Pumping Lemma para linguagens livres de con-
texto possvel provar que diversas linguagens no so livres de contexto. Entre estas,
5 Linguagens Sensveis ao Contexto 311
pode-se citar a linguagem {a
n
b
n
c
n
| n 1} (ver Exemplo 4.38), a qual, no entanto,
pode ser representada atravs de uma gramtica sensvel ao contexto (ver Exemplo 5.3).
Logo, trata-se de uma linguagem sensvel ao contexto, no-livre de contexto, e sua simples
existncia demonstra o teorema.
5.7 Linguagens que no so Sensveis ao Contexto
possvel demonstrar que existem linguagens que no pertencem classe das lingua-
gens sensveis ao contexto (Teorema 5.8). Tal demonstrao, no entanto, depende da
demonstrao prvia de que o conjunto das gramticas sensveis ao contexto enume-
rvel (Teorema 5.7). O Captulo 6 discutir uma importante classe de linguagens que
inclui as linguagens sensveis ao contexto como subconjunto prprio.
Teorema 5.7 (Gramticas sensveis ao contexto enumervel) O conjunto das
gramticas sensveis ao contexto sobre um certo alfabeto enumervel.
Justicativa Considere-se um alfabeto qualquer e todas as gramticas sensveis ao
contexto que podem ser criadas a partir do mesmo. Seja G = {G
1
, G
2
, G
3
, ...G
n
, ...} o
conjunto innito que rene todas essas gramticas.
Sem perda de generalidade, pode-se considerar que os smbolos no-terminais de
cada uma dessas gramticas pertencem ao conjunto innito A = {A
1
, A
2
, A
3
, ...A
n
, ...}
e, alm disso, que a raiz de cada uma delas A
1
. Ou seja, todas elas tm a mesma raiz
e compartilham o mesmo conjunto de smbolos no-terminais.
Os elementos de G podem ser listados em uma ordem G
1
, G
2
, G
3
, ... (ou seja, enu-
merados) de acordo com o mtodo descrito no Algoritmo 5.3.
Algoritmo 5.3 (Gramticas sensveis ao contexto enumervel) Enumerao
de todas as gramticas sensveis ao contexto.
Entrada: um alfabeto ;
Sada: uma enumerao de todas as gramticas sensveis ao contexto sobre ;
Mtodo:
1. Inicialmente, listam-se todas as gramticas cujas regras tenham o formato
, || = 1, || = 1, e tais que apenas o no-terminal A
1
seja utilizado
nas mesmas. Claramente, existe apenas um nmero nito de gramticas
nesta condio.
2. A seguir, listam-se todas as gramticas cujas regras tenham o formato
, || 2, || 2, e tais que apenas os no-terminais A
1
e A
2
sejam
utilizados nas mesmas. Novamente, o conjunto de gramticas que satisfaz
a esta condio nito.
3. Repete-se o passo (2) considerando || 3, || 3 e os no-terminais
A
1
, A
2
, A
3
, e assim por diante.
Todas as gramticas pertencentes a G sero inevitavelmente listadas (enumeradas)
por este mtodo, que gera uma seqncia innita de conjuntos nitos, seqncia esta que
312 Linguagens Formais - Teoria, Modelagem e Implementao
pode ser ordenada na mesma seqncia dos nmeros naturais (1, 2, 3...). O conjunto das
gramticas sensveis ao contexto , portanto, um conjunto enumervel.
Exemplo 5.21 Considere-se = {a, b} e, inicialmente, apenas as regras em que , || =
1, || = 1 e tais que A1 seja o nico no-terminal empregado. Ento, N1 = {A1}, V1 = N1 =
{A1, a, b}. Tem-se, portanto, m = |V1| = 3 regras distintas nesta categoria:
1. A1 A1
2. A1 a
3. A1 b
Desta forma, as diversas gramticas que podem ser criadas a partir das regras acima contero,
respectivamente, apenas uma, apenas duas ou apenas trs regras distintas.
Gramticas com exatamente uma regra:
G1, com a regra (1)
G2, com a regra (2)
G3, com a regra (3)
Gramticas com exatamente duas regras:
G4, com as regras (1) e (2)
G5, com as regras (2) e (3)
G6, com as regras (1) e (3)
Gramticas com exatamente trs regras:
G7, com as regras (1), (2) e (3)
Portanto, so sete as gramticas sensveis ao contexto distintas que podem ser criadas sobre
o vocabulrio {A1, a, b}.
Para relacionar as regras em que , || 2, || 2, e tais que A1, A2 sejam empregados,
deve-se considerar os seguintes casos:
a) || = || = 1
b) || = 1, || = 2
c) || = || = 2
Sejam, portanto, N2 = {A1, A2} e V2 = {A1, A2, a, b}. Ento, as seguintes regras podem ser
geradas em cada caso:
a) , || = 1, || = 1
A1 A1, A1 A2, A1 a, A1 b,
A2 A1, A2 A2, A2 a, A2 b
Tem-se, portanto, m = |N2 | | V2| = 2 4 = 8 produes distintas nesta categoria.
b) , || = 1, || = 2
5 Linguagens Sensveis ao Contexto 313
A1 A1A1, A1 A1A2, A1 A1a, A1 A1b,
A1 A2A1, A1 A2A2, A1 A2a, A1 A2b,
A1 aA1, A1 aA2, A1 aa, A1 ab,
A1 bA1, A1 bA2, A1 ba, A1 bb,
A2 A1A1, A2 A1A2, A2 A1a, A2 A1b,
A2 A2A1, A2 A2A2, A2 A2a, A2 A2b,
A2 aA1, A2 aA2, A2 aa, A2 ab,
A2 bA1, A2 bA2, A2 ba, A2 bb
ou seja:
m = |N2| = 2 possibilidades distintas para cadeia , e
n = |V2|
||
= 2
4
= 16 possibilidades distintas para a cadeia .
Portanto, existem m n = 32 produes distintas nesta categoria.
c) , || = 2, || = 2
m = |V2 |
2
| |
2
= 4
2
2
2
= 12
n = |V2|
||
= 4
2
= 16
Conseqentemente, existem m n = 12 16 = 192 produes distintas nesta categoria.
Consideradas como um todo, so 8 + 32 + 192 = 232 produes distintas que satisfazem
condio , || 2, || 2. Com essas produes, possvel criar 2
232
1 gramticas
distintas.
Cumpre notar que o clculo de m feito considerando-se o total de cadeias de comprimento 2
possveis de serem construdas sobre V |V2|
2
, descontando-se, destas, aquelas que sejam formadas
exclusivamente por smbolos terminais ou seja, ||
2
. Dessa forma, so contadas apenas as cadeias
que contenham pelo menos um smbolo no-terminal.
A generalizao desses casos pode ser resumida na questo: quantas gramticas sensveis
ao contexto distintas podem ser geradas com n smbolos no-terminais distintos e com as regras
obedecendo ao formato , || n, || n, || || ?
Para responder a essa pergunta, deve-se, inicialmente, considerar todos os formatos diferentes
que as regras podem assumir, de acordo com tal especicao. Esses formatos so apresentados na
Tabela 5.1:
1::1
1::2 2::2
1::3 2::3 3::3
... ... ...
1::n-1 2::n-1 3::n-1 ... n-1::n-1
1::n 2::n 3::n ... n-1::n n::n
Tabela 5.1: Clculo do nmero de gramticas sensveis ao
contexto
Nesta tabela, i :: j denota o conjunto das regras , || = i , || = j . A unio de todos
esses conjuntos resulta no conjunto de regras , || n, || n, || ||. Como cada um
dos conjuntos considerados nito, o conjunto resultante tambm ser nito.
314 Linguagens Formais - Teoria, Modelagem e Implementao
A ttulo de ilustrao, fcil deduzir que a quantidade total de elementos contidos no conjunto
i :: j pode ser obtida pelo produto m n, onde:
m = |Vn |
i
| |
i
(quantidade de cadeias distintas com comprimento i )
n = |Vn|
j
(quantidade de cadeias distintas com comprimento j )
Para se determinar a quantidade total de regras na tabela, basta calcular a funo regras(n)
abaixo (Vn o conjunto dos smbolos no-terminais e o conjunto dos smbolos terminais):
regras(n) :
1. regras 0;
2. para i 1 at n
para j i at n
faa regras regras+(|Vn |
i
| |
i
) |Vn|
j
Como = {a, b}, ento || = 2 e |Vn| = n + 2. Logo:
regras(n) :
1. regras 0;
2. para i 1 at n
para j i at n
faa regras regras+((n + 2)
i
2
i
) (n + 2)
j
Os casos anteriores podem ser considerados casos particulares da frmula geral acima. Considere-
se n = 2, , || 2, || 2:
regras = 0
i = 1, j = 1 regras = regras + ((2 + 2)
1
2
1
) (2 + 2)
1
= regras + 8
i = 1, j = 2 regras = regras + ((2 + 2)
1
2
1
) (2 + 2)
2
= regras + 32
i = 2, j = 2 regras = regras + ((2 + 2)
2
2
2
) (2 + 2)
2
= regras + 192
Portanto, obtm-se 8+32+192=232 regras distintas.
A quantidade total de gramticas que podem ser criadas a partir de k regras distintas dada
pela funo gramaticas(k) abaixo:
gramaticas(k) = 2
k
1
No presente exemplo, tem-se que , || 2, || 2 produz 2
232
1 gramticas distintas,
exatamente o mesmo resultado obtido anteriormente.
O processo todo pode, portanto, ser resumido nos seguintes passos:
1. n 1;
5 Linguagens Sensveis ao Contexto 315
2. k regras(n);
3. calcula gramaticas(k);
4. n n + 1;
5. Desviar para (1).
Naturalmente, esses passos servem apenas como ilustrao da forma como se podem enumerar
todas as gramticas possveis sobre {a, b}. A sua transcrio para a forma de um algoritmo s faz
sentido caso se estabelea um limite superior para n, caso contrrio eles no se encerrariam nunca.
Cumpre notar que o mtodo descrito gera toda e qualquer gramtica sensvel ao contexto sobre
{a, b}, incluindo aquelas que geram linguagens vazias, contm smbolos inteis ou so equivalentes
a outras gramticas geradas anteriormente. Como exemplo destes casos, pode-se considerar as
gramticas:
G1 = ({A1, a, b}, {a, b}, {A1 A1}, A1)
G2 = ({A1, A2, a, b}, {a, b}, {A1 A2, A3 A3, A2 a}, A1)
G3 = ({A1, A2, a, b}, {a, b}, {A1 A2, A2 A2, A2 a}, A1)
L(G1) = , A3 intil em G2 e L(G3) = L(G1). Tal aspecto no invalida, no entanto, o
prosseguimento da demonstrao. 2
Teorema 5.8 (Linguagens no-sensveis ao contexto) Existem linguagens que no
so sensveis ao contexto.
Justicativa feita provando-se que existe pelo menos uma linguagem tal que no existe
gramtica sensvel ao contexto que a gere.
Considere-se inicialmente o resultado do Teorema 5.7 (as gramticas sensveis ao
contexto so enumerveis) e um alfabeto qualquer. Em seguida, pode-se considerar
uma enumerao, em ordem lexicogrca crescente, das cadeias de
+
. Considere-se, em
particular, = {a, b}. Tal enumerao correspondente seqncia:
a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb, ...
Tendo enumerado os elementos de G = {G
1
, G
2
, ..., G
n
, ...} e de
+
= {
1
,
2
, ...,

n
, ...}, passa-se agora a estabelecer uma funo bijetora entre os dois conjuntos, de tal
forma que os pares (G
i
,
i
), i 1 sejam elementos dessa funo (Tabela 5.2):
G
1
G
2
G
3
... G
n
...

1

2

3
...
n
...
Tabela 5.2: Funo bijetora entre gramticas e cadeias sobre
{a, b}
Dena-se agora a linguagem L
R
= {
i
|
i
L(G
i
), i 1}. Em outras palavras,
pertencem a L
R
as cadeias
i
que no pertenam a L(G
i
). Tal vericao pode sempre
ser feita para gramticas sensveis ao contexto, conforme demonstrado em teorema ante-
rior sobre a equivalncia deste tipo de gramticas com as Mquinas de Turing com ta
limitada (Teorema 5.4).
S existem duas hipteses acerca de L
R
: ou trata-se de uma linguagem que sensvel
ao contexto, ou ento trata-se de uma linguagem que no sensvel ao contexto.
316 Linguagens Formais - Teoria, Modelagem e Implementao
Considere-se que L
R
seja uma linguagem sensvel ao contexto. Se essa hiptese for
verdadeira, dever existir pelo menos uma gramtica sensvel ao contexto que a gere.
Naturalmente, tal gramtica dever pertencer ao conjunto G. Seja G
i
esta gramtica.
Se L
R
= L(G
i
), ento s existem duas possibilidades:
i
pertence ou no pertence a L
R
.
Primeira possibilidade: se
i
L(G
i
), ento
i
L
R
, por hiptese, o que uma
contradio.
Segunda possibilidade: se
i
L(G
i
), ento
i
L
R
, por construo, o que
tambm uma contradio.
Logo, L
R
no pode ser uma linguagem sensvel ao contexto, e isso completa a
demonstrao.
5.8 Propriedades de Fechamento
A classe das linguagens sensveis ao contexto fechada em relao s operaes de:
Unio
Concatenao
Interseco
Complementao
porm no fechada em relao operao de:
Fecho de Kleene
Os trs primeiros resultados sero apresentados nos teoremas seguintes. Todos
os resultados, exceto o que trata da complementao, esto demonstrados em [46]. A
questo do fechamento das linguagens sensveis ao contexto em relao operao de
complementao permaneceu sem resposta durante vrios anos, at que apenas em 1988
esse resultado foi provado como sendo verdadeiro (ver [64]).
Teorema 5.9 (Fecho na unio) A classe das linguagens sensveis ao contexto fe-
chada em relao operao de unio.
Justicativa Sejam L
1
e L
2
duas linguagens sensveis ao contexto quaisquer. Ento,
L
1
= L(G
1
) e L
2
= L(G
2
), com G
1
e G
2
sendo duas gramticas sensveis ao contexto. O
Algoritmo 5.4 possibilita a obteno de G
3
= (V
3
,
3
, P
3
, S
3
), tal que L(G
3
) = L
1
L
2
.
Algoritmo 5.4 (Fecho na unio) Obteno de uma gramtica sensvel ao contexto que
descreve a unio de duas linguagens denidas por gramticas sensveis ao contexto.
Entrada: G
1
= (V
1
,
1
, P
1
, S
1
) e G
2
= (V
2
,
2
, P
2
, S
2
), duas gramticas sensveis
ao contexto;
Sada: uma gramtica sensvel ao contexto G
3
, tal que L(G
3
) = L(G
1
) L(G
2
);
Mtodo:
5 Linguagens Sensveis ao Contexto 317
1. Renomear adequadamente os smbolos no-terminais de G
1
e G
2
, de tal
modo que N
1
N
2
= ;
2. V
3
= V
1
V
2
;
3.
3
=
1

2
;
4. P
3
= P
1
P
2
{S
3
S
2
, S
3
S
1
)}.
A gramtica G
3
obtida pela aplicao do Algoritmo 5.4 sensvel ao contexto, logo
L
1
L
2
uma linguagem sensvel ao contexto.
Teorema 5.10 (Fecho na concatenao) As linguagens sensveis ao contexto so fe-
chadas em relao operao de concatenao.
Justicativa Sejam L
1
e L
2
duas linguagens sensveis ao contexto quaisquer. Ento,
L
1
e L
2
so reconhecidas, respectivamente, por Mquinas de Turing com ta limitada
M
1
e M
2
. A linguagem L
3
= L
1
L
2
aceita por M
3
, uma Mquina de Turing com ta
limitada, construda conforme o Algoritmo 5.5.
Algoritmo 5.5 (Fecho na concatenao) Obteno de uma Mquina de Turing com
ta limitada que reconhece a concatenao de duas linguagens sensveis ao contexto de-
nidas por Mquinas de Turing com ta limitada.
Entrada: M
1
e M
2
, duas Mquinas de Turing com ta limitada;
Sada: uma Mquina de Turing com ta limitada M
3
, tal que L(M
3
) = L(M
1
)
L(M
2
);
Mtodo:
1. M
3
inicialmente simula M
1
com uma cadeia de entrada w, w = ;
2. Se M
1
aceita um prexo de w, ento M
3
simula M
2
com o suxo ;
3. Se M
2
aceita , ento M
3
pra e aceita a cadeia w.
No Algoritmo 5.5, M
3
aceita w se e somente se L
1
e L
2
. Caso contrrio,
M
3
rejeita w. Logo, L
3
uma linguagem sensvel ao contexto.
Teorema 5.11 (Fecho na interseco) As linguagens sensveis ao contexto so fecha-
das em relao operao de interseco.
Justicativa Sejam L
1
e L
2
duas linguagens sensveis ao contexto quaisquer. Ento,
L
1
e L
2
so reconhecidas, respectivamente, por Mquinas de Turing com ta limitada
M
1
e M
2
. A linguagem L
3
= L
1
L
2
aceita por M
3
, uma Mquina de Turing com ta
limitada, construda conforme o Algoritmo 5.6.
318 Linguagens Formais - Teoria, Modelagem e Implementao
Algoritmo 5.6 (Fecho na interseco) Obteno de uma Mquina de Turing com ta
limitada que reconhece a interseco de duas linguagens sensveis ao contexto denidas
por Mquinas de Turing com ta limitada.
Entrada: M
1
e M
2
, duas Mquinas de Turing com ta limitada;
Sada: uma Mquina de Turing com ta limitada M
3
, tal que L(M
3
) = L(M
1
)
L(M
2
);
Mtodo:
1. M
3
possui duas tas de entrada;
2. Uma cadeia w gravada na primeira ta;
3. M
3
copia w da primeira para a segunda ta;
4. M
3
simula M
1
, utilizando a primeira ta;
5. Se M
1
aceita w, ento M
3
simula M
2
com a segunda ta;
6. Se M
2
aceita w, ento M
3
pra e aceita w.
De acordo com o Algoritmo 5.6, M
3
aceita w se e somente se w L
1
L
2
. Caso
contrrio, M
3
rejeita w. Logo, L
3
uma linguagem sensvel ao contexto.
5.9 Questes Decidveis e No-Decidveis
Diversos problemas de deciso costumam ser considerados neste tipo de estudo. Em
particular, dadas cadeias arbitrrias e linguagens sensveis ao contexto quaisquer, os
problemas mais comumente considerados so:
w L ?
L = ?
L =

?
L
1
= L
2
?
L
1
L
2
?
L
1
L
2
= ?
De todos estes, apenas o primeiro um problema que pode ser decidido no caso geral,
quaisquer que sejam w e L. Os demais constituem problemas para os quais pode no haver
soluo geral. Isso signica que determinadas combinaes de dados de entrada podem
nunca gerar uma resposta, no importa se armativa ou negativa. Ser apresentado aqui
apenas o primeiro desses resultados, sendo que a demonstrao de todos eles pode ser
encontrada em [46].
5 Linguagens Sensveis ao Contexto 319
Teorema 5.12 (A cadeia pertence?) Dadas uma cadeia w

e uma linguagem
sensvel ao contexto L, L

, sempre possvel determinar se w L.


Justicativa Se L uma linguagem sensvel ao contexto, ento L = L(G), sendo G uma
gramtica sensvel ao contexto. Constri-se uma Mquina de Turing com ta limitada
M, composta por trs trilhas:
Na primeira trilha gravada a cadeia de entrada w;
Na segunda trilha gravada uma representao de G;
Na terceira trilha, gravado inicialmente o smbolo inicial de G (a raiz S).
M opera de maneira muito semelhante ao modelo discutido na demonstrao do
Teorema 5.4. A diferena que, naquele caso, a especicao da gramtica G estava
gravada na prpria denio da Mquina de Turing com ta limitada. Agora, G est
gravada em uma trilha adicional, reservada para essa nalidade.
Assim, M procura, de maneira no-determinstica, gerar a cadeia w usando as
regras de G gravadas na segunda trilha e construindo formas sentenciais intermedirias
na terceira trilha. Atravs da comparao dos contedos da primeira e da terceira trilhas,
conforme o mtodo descrito no Teorema 5.4, possvel demonstrar que w L(M) se e
somente se S

w.
6 Linguagens Recursivas
Linguagens recursivas so aquelas que so aceitas por um tipo muito geral de reconhece-
dor: a Mquina de Turing sem limitao de memria, tambm conhecida como Mquina
de Turing com ta innita ou, simplesmente, Mquina de Turing.
Como o prprio nome sugere, as Mquinas de Turing com ta innita diferem
das apresentadas no captulo anterior as Mquinas de Turing com ta limitada
justamente pelo fato de no apresentarem restries quanto ao comprimento da ta de
trabalho. No que se refere aos demais aspectos, elas so denidas de forma muito similar.
Apesar de se tratar de uma diferena aparentemente pouco signicativa, o fato de a
ta de trabalho comportar innitas posies possibilita, conforme est demonstrado no
Teorema 6.3, o reconhecimento de uma categoria de linguagens mais abrangente do que
as linguagens sensveis ao contexto. Estas, por sua vez, conforme veremos mais adiante,
constituem um subconjunto prprio das linguagens recursivas.
Diferentemente das linguagens sensveis ao contexto, no entanto, no h caracte-
rizao conhecida para as linguagens recursivas em termos gramaticais. Ou seja, no
possvel caracterizar essa classe de linguagens a partir da formulao de restries ao for-
mato das produes gramaticais gerais procedimento adotado para denir as classes
das linguagens regulares, das livres de contexto e tambm das sensveis ao contexto.
Da mesma forma, no so conhecidas eventuais propriedades estruturais que possam
ser consideradas para efeito de caracterizao de uma linguagem como sendo recursiva.
Se, por outro lado, as linguagens regulares, as livres de contexto e as sensveis ao contexto
podem ser facilmente identicadas a partir de tais propriedades concatenao, unio
e fechamento de termos no caso das regulares, balanceamento de termos nas livres de
contexto e vinculao de termos nas sensveis ao contexto , as linguagens recursivas
no exibem caractersticas de natureza equivalente, que poderiam servir para identicar
uma determinada linguagem como sendo estritamente dessa classe.
A nica caracterizao que resta, portanto, baseada no modelo de reconhecimento.
O restante deste captulo ser dedicado formalizao e discusso das Mquinas de
Turing e suas propriedades. Na seqncia, as linguagens recursivas sero denidas como
sendo uma classe particular de linguagens aceita por esse tipo de dispositivo (pois as
linguagens recursivas no so a nica classe de linguagens por ele aceita). Finalmente,
ser demonstrado que toda linguagem sensvel ao contexto tambm recursiva e, alm
disso, que existe pelo menos uma linguagem recursiva que no sensvel ao contexto.
Em resumo, demonstrar-se- que a classe das linguagens sensveis ao contexto constitui
um subconjunto prprio da classe das linguagens recursivas. Linguagens que so recur-
sivas porm no so sensveis ao contexto so denominadas linguagens estritamente
recursivas.
6.1 Mquinas de Turing
Mquinas de Turing (com ta ilimitada ou innita) so dispositivos de reconhecimento
de cadeias que possuem as seguintes diferenas em relao s Mquinas de Turing com
ta limitada, discutidas no Captulo 5:
322 Linguagens Formais - Teoria, Modelagem e Implementao
1. A ta de trabalho possui comprimento innito, sendo limitada esquerda e sem
limitao direita.
1
2. A cadeia de entrada delimitada apenas esquerda, por meio de um smbolo espe-
cial, representado por <, que no faz parte do alfabeto de entrada. Juntamente
com esse smbolo, a cadeia a ser processada posicionada de forma tal que que
ajustada esquerda sobre a ta. O cursor de acesso inicialmente aponta o smbolo
mais esquerda da cadeia de entrada, ou seja, o smbolo imediatamente direita
do marcador <.
2
3. As posies da ta direita do ltimo smbolo da cadeia de entrada so inicial-
mente preenchidas com um smbolo especial representado por B, que indica
que aquelas posies esto vagas. O smbolo B tambm no faz parte do alfabeto
de entrada.
3
4. O cursor de acesso pode se deslocar livremente sobre a ta de trabalho, exceto para
a esquerda da primeira posio da ta. Caso isso ocorra, a computao encerra-se
anormalmente.
Figura 6.1: Mquina de Turing
A Figura 6.1 ilustra a congurao inicial de uma Mquina de Turing com cadeia
de entrada igual a
1

3
...
n
. Formalmente, uma Mquina de Turing denida como:
M = (Q, , , , q
0
, <, B, F)
onde:
Q o conjunto nito no-vazio de estados;
o alfabeto de entrada, formado por um conjunto nito no-vazio de smbolos;
um conjunto, tambm nito e no-vazio, de smbolos que podem ser lidos e/ou
escritos na ta de trabalho. ;
a funo parcial de transio, : Q 2
Q{E,D}
;
q
0
o estado inicial, q
0
Q;
1
Dependendo do autor, no h limitao tampouco esquerda.
2
Alguns autores desconsideram o uso do marcador < e supem que a primeira posio da ta de trabalho
seja ocupada pelo primeiro smbolo da cadeia a ser analisada.
3
Dependendo do autor, outros smbolos so usados para representar posies vagas da ta de trabalho.
6 Linguagens Recursivas 323
< , < , o smbolo que indica a primeira posio da ta de trabalho.
Durante toda a operao da mquina, o smbolo < no pode ser gravado em
nenhuma outra posio da ta;
B , B , o smbolo utilizado para preencher inicialmente todas as posies
direta da cadeia de entrada na ta. Durante a operao da mquina, o smbolo
B pode ser gravado em qualquer posio da ta;
F Q o conjunto de estados nais.
A congurao de uma Mquina de Turing indicada por uma tripla (, q
k
, ),
onde q
k
o estado corrente,

a poro do contedo da ta de trabalho que se


encontra esquerda do cursor de acesso, e

a poro do contedo da ta de
trabalho que se encontra direita do cursor de acesso, incluindo a posio correntemente
apontada por ele.
A congurao inicial (<, q
0
, ), onde q
0
o estado inicial e

a cadeia
de entrada a ser analisada. O cursor de acesso aponta, portanto, exatamente o primeiro
smbolo da cadeia de entrada . A poro da representao (, q
k
, ) corresponde,
neste caso, cadeia unitria <. Uma congurao nal denida como (, q
f
, ), com
q
f
F e ,

.
As transies contidas na funo especicam possibilidades no-determinsticas
de movimentao, que conduzem o dispositivo de uma congurao para a congurao
seguinte. Diz-se que o dispositivo pra quando a funo no for denida para o par
(estado, smbolo de entrada) corrente.
Em caso de tentativa de deslocamento do cursor de acesso para a esquerda da
primeira posio da ta, a computao encerra-se anormalmente. Neste caso, a cadeia
de entrada rejeitada, no importando se o estado em que a mquina se encontra nal
ou no.
A rigor, o emprego do smbolo < para sinalizar o incio da ta de trabalho
desnecessrio. Diversos textos consideram que a primeira posio da ta seja ocupada
pelo primeiro smbolo da cadeia de entrada, sem perda de generalidade. A incorporao
do mesmo ao modelo, no entanto, contribui para a construo de mquinas mais simples,
na medida em que o controle dos deslocamentos do cursor de acesso, a m de evitar o
trmino anormal da computao, tambm pode ser simplicado.
A linguagem aceita por uma Mquina de Turing com ta innita o conjunto das
cadeias que so capazes de conduzir o dispositivo desde a sua congurao inicial (nica
para uma determinada cadeia de entrada) at uma congurao nal qualquer na qual
ele esteja parado sem possibilidade de movimentao. Formalmente,
L(M) = {

| (<, q
0
, )

(, q
f
, ), q
f
F, ,

}
admitindo-se, como condio de parada, que = , ,

e no seja denida
para (q
f
, ).
Seja L a linguagem aceita por uma Mquina de Turing M. Se w
1
L, ento M pra
e aceita w
1
. Considere-se, porm, a cadeia w
2

L. Neste caso, M pode tanto parar,


rejeitando a entrada, quanto entrar em loop innito, sem nunca atingir uma condio de
parada.
Uma linguagem L dita recursiva se existir pelo menos uma Mquina de Turing
M tal que:
1. Para toda cadeia w L, M pra e aceita w;
324 Linguagens Formais - Teoria, Modelagem e Implementao
2. Para toda cadeia z

L, M pra e rejeita z.
Ou seja, M atinge a condio de parada para toda e qualquer cadeia que lhe submetida,
no importando se esta pertence ou no a L.
Uma linguagem recursiva tambm dita linguagem decidvel. Este termo denota
o fato de que, para essa classe de linguagens, sempre existe pelo menos uma Mquina de
Turing que aceita a referida linguagem, qualquer que seja a cadeia usada como entrada
(no importa se ela pertence ou no linguagem), e que sempre pra. A parada pode
ocorrer com aceitao ou rejeio da cadeia.
Conforme ser discutido no Captulo 7, as linguagens recursivas no so a nica
classe de linguagens aceitas pelas Mquinas de Turing. Na verdade, o relaxamento da
condio de parada para cadeias no pertencentes linguagem faz com que o modelo
possa ser usado para denir uma classe mais ampla de linguagens, denominadas lingua-
gens recursivamente enumerveis.
Exemplo 6.1 A mquina M apresentada na Figura 6.2 tal que L(M) = abc(a | b | c)

.
q
0 q
1
q
2
q
3
a/(a, D) b/(b, D) c/(c, D)
a/(a, D), b/(b, D), c/(c, D)
q
4
B/(B, D)
Figura 6.2: Mquina de Turing que aceita abc(a | b | c)

para o Exemplo 6.1


Os movimentos que M executa na aceitao de algumas sentenas pertencentes a L, desde a
congurao inicial at a congurao nal, so mostrados a seguir:
(<, q0, abcB) (< a, q1, bcB) (< ab, q2, cB) (< abc, q3, B) (< abcB, q4, )
(<, q0, abcaB) (< a, q1, bcaB) (< ab, q2, caB) (< abc, q3, aB)
(< abca, q3, B) (< abcaB, q4, )
(<, q0, abccbaB) (< a, q1, bccbaB) (< ab, q2, ccbaB) (< abc, q3, cbaB)
(< abcc, q3, baB) (< abccbB, q3, aB) (< abccbaB, q3, B) (< abccbaB, q4, )
O smbolo B usado, nestes casos, para garantir que a cadeia de entrada no contenha
smbolos estranhos ao alfabeto {a, b, c}. A cadeia , usada na congurao nal dos trs casos,
formada por uma seqncia innita de smbolos B.
A rejeio de algumas cadeias pertencentes a

, porm no pertencentes a L, pode ser


ilustrada atravs dos seguintes exemplos:
(<, q0, b)
(<, q0, aB) (< a, q1, B)
(<, q0, abb) (< a, q1, bb) (< ab, q2, b)
Note-se que, nos casos acima, M pra sempre em conguraes no-nais, uma vez que,
respectivamente, q0, q1 e q2 so estados no-nais.
L uma linguagem recursiva, uma vez que M sempre pra, qualquer que seja a cadeia de
entrada w

que lhe seja apresentada. 2


Exemplo 6.2 A Mquina de Turing M ilustrada na Figura 6.3 aceita a linguagem L = {ww
R
| w
{a, b}

}.
6 Linguagens Recursivas 325
q
0
q
1 q
2
q
3
a/(X, D)
B/(B, E) a/(X, E)
a/(a, E), b/(b, E)
a/(a, D), b/(b, D)
X/(X, E)
Y/(Y, E)
q
4 q
5
q
6
B/(B, E) b/(Y, E)
a/(a, E), b/(b, E)
a/(a, D), b/(b, D)
X/(X, E)
Y/(Y, E)
b/(Y, D)
X/(X, D)
Y/(Y, D)
Figura 6.3: Mquina de Turing que aceita {ww
R
| w
{a, b}

} para o Exemplo 6.2


So exemplos de cadeias aceitas por M:
(<, q0, aaB) (< X, q1, aB) (< Xa, q1, B) (< X, q2, aB)
(<, q3, XXB) (< X, q0, XB)
(<, q0, baabB) (< Y, q4, aabB) (< Ya, q4, abB) (< Yaa, q4, bB)
(< Yaab, q4, B) (< Yaa, q5, bB) (< Ya, q6, aYB) (< Y, q6, aaYB)
(<, q6, YaaYB) (< Y, q0, aaYB) (< YX, q1, aYB) (< YXa, q1, YB)
(< YX, q2, aYB) (< Y, q3, XXYB) (< YX, q0, XYB)
(<, q0, bbbbbbB) (< Y, q4, bbbbbB) (< Yb, q4, bbbbB)
(< Ybb, q4, bbbB) (< Ybbb, q4, bbB) (< Ybbbb, q4, bB)
(< Ybbbbb, q4, B) (< Ybbbb, q5, bB) (< Ybbb, q6, bYB)
(< Ybb, q6, bbYB) (< Yb, q6, bbbYB) (< Y, q6, bbbbYB)
(<, q6, YbbbbYB) (< Y, q0, bbbbYB) (< YY, q4, bbbYB)
(< YYb, q4, bbYB) (< YYbb, q4, bYB) (< YYbbb, q4, YB)
(< YYbb, q5, bYB) (< YYb, q6, bYYB) (< YY, q6, bbYYB)
(< Y, q6, YbbYYB) (< YY, q0, bbYYB) (< YYY, q4, bYYB)
(< YYYb, q4, YYB) (< YYY, q5, bYYB) (< YY, q6, YYYYB)
(< YYY, q0, YYYB)
So exemplos de cadeias rejeitadas por M:
(<, q0, bB) (< Y, q4, B) (<, q5, YB)
(<, q0, abB) (< X, q1, bB) (< Xb, q1, B) (< X, q2, bB)
(<, q0, bbaaaaB) (< Y, q4, baaaaB) (< Yb, q4, aaaaB) (< Yba, q4, aaaB)
(< Ybaa, q4, aaB) (< Ybaaa, q4, aB) (< Ybaaaa, q4, B) (< Ybaaa, q5, aB)
2
Seja L

uma linguagem e M uma Mquina de Turing. Diz-se que M aceita L


se M capaz de atingir uma congurao nal para todas as cadeias que pertencem a
L, no importando o que acontece quando uma cadeia pertencente a

L submetida
a M. Por outro lado, diz-se que M decide L se, para qualquer cadeia pertencente a
326 Linguagens Formais - Teoria, Modelagem e Implementao

, M sempre pra, aceitando as sentenas de L e rejeitando as demais. Finalmente, M


reconhece L se M gera sadas distintas indicando, para cada cadeia pertencente a

,
se a mesma pertence ou no a L. Naturalmente, se M reconhece L, ento M decide L.
Se M decide L, normalmente simples fazer M reconhecer L. Finalmente, se M decide
ou reconhece L, claro que M aceita L. A mera aceitao, por outro lado, no implica
que seja possvel decidir ou reconhecer uma linguagem.
Finalmente, cumpre observar que, assim como ocorre no caso dos autmatos nitos
e das linguagens regulares, possvel demonstrar que toda e qualquer linguagem aceita
por uma Mquina de Turing no-determinstica aceita tambm por pelo menos uma
Mquina de Turing determinstica. Tal caracterstica difere, por outro lado, daquela
exibida pelos autmatos de pilha, que, em sua verso no-determinstica, so capazes de
reconhecer uma classe mais ampla de linguagens do que as verses determinsticas.
6.2 Critrios de Aceitao
O critrio de aceitao por estado nal, utilizado nos Exemplos 6.1 e 6.2, pode ser
substitudo, sem prejuzo da linguagem denida por uma particular Mquina de Turing,
pelo critrio da parada, conforme explicado a seguir.
Seja L uma linguagem aceita por uma Mquina de Turing M
1
pelo critrio de
aceitao baseado em estado nal. Ento, se w L, M
1
inevitavelmente pra em algum
estado nal e aceita w. Se w L, M
1
pra em um estado no-nal e rejeita w, ou ento
entra em uma seqncia innita de movimentaes sem que haja qualquer evoluo.
Segundo o critrio da parada, se L aceita por uma mquina M
2
, ento M
2
sim-
plesmente pra, qualquer que seja a cadeia pertencente a L que lhe for submetida. Caso
lhe seja submetida uma cadeia no pertencente a L, ento M
2
inicia uma seqncia de
movimentaes que no termina. Mquinas de Turing com critrio de aceitao denido
segundo este princpio no apresentam estados nais.
Teorema 6.1 (Estado nal parada) Os critrios de aceitao baseados em estado
nal e parada, para Mquinas de Turing, so equivalentes.
Justicativa Conforme os Algoritmos 6.1 e 6.2 apresentados a seguir.
Algoritmo 6.1 (Estado nal parada) Converso de Mquina de Turing com acei-
tao por critrio de estado nal em Mquina de Turing com aceitao por critrio de
parada.
Entrada: M = (Q, , , , q
0
, <, B, F) uma Mquina de Turing com critrio de
aceitao baseado em estado nal;
Sada: uma Mquina de Turing M

com critrio de aceitao baseado em parada,


tal que L(M

) = L(M);
Mtodo:
M

= (Q

, , ,

, q
0
, <, B, F

), onde:
1. Q

= Q {q
loop
}
2. F

=
6 Linguagens Recursivas 327
3.

= e, alm disso:
q Q F, x , se (q, x) no denido, ento

{((q, x), {(q


loop
, x, D)})}
x ,

{((q
loop
, x), {(q
loop
, x, D)})}
De acordo com o Algoritmo 6.1, M

possui os mesmos estados de M, acrescido de


um novo estado denominado q
loop
. Os estados de M

so todos no-nais. As transies


de M

so as mesmas de M, acrescidas das novas transies que tm o objetivo de fazer


M

entrar em uma seqncia innita de movimentaes ao processar cadeias que so


rejeitadas por M atravs da parada em um estado no-nal qualquer. Cadeias que so
aceitas por M provocam simplesmente a parada de M

.
Algoritmo 6.2 (Estado nal parada) Converso de Mquina de Turing com acei-
tao por critrio de parada em Mquina de Turing com aceitao por critrio de estado
nal.
Entrada: M = (Q, , , , q
0
, <, B, ) uma Mquina de Turing com critrio de
aceitao baseado em parada;
Sada: uma Mquina de Turing M

com critrio de aceitao baseado em estado


nal, tal que L(M

) = L(M);
Mtodo:
M

= (Q, , , , q
0
, <, B, F

), onde:
1. F

= Q
De acordo com o Algoritmo 6.2, os estados de M

so os mesmos de M, porm todos


convertidos em estados nais. Dessa forma, toda e qualquer cadeia capaz de conduzir
M a uma condio de parada necessariamente provocar a parada de M

em um estado
nal.
Exemplo 6.3 Seja a mquina M do Exemplo 6.1, cujo critrio de aceitao baseado em estado
nal. A mquina M

, equivalente a M, porm baseada em critrio de parada, apresentada na


Figura 6.4.
328 Linguagens Formais - Teoria, Modelagem e Implementao
q
0
q
1
q
2
q
3
a/(a, D)
b/(b, D)
c/(c, D)
a/(a, D), b/(b, D), c/(c, D)
q
4
B/(B, D)
q
loop
a/(a, D), b/(b, D), c/(c, D), B/(B, D)
a/(a, D), c/(c, D), B/(B, D)
b/(b, D), c/(c, D), B/(B, D)
a/(a, D), b/(b, D), B/(B, D)
Figura 6.4: Mquina de Turing com critrio de aceitao
baseado em parada para o Exemplo 6.3
fcil notar, neste exemplo, que as cadeias a, b e abb, rejeitadas aps parada em M, conduzem
M

a uma seqncia interminvel de movimentos. Seno, vejamos:


(<, q0, abbBB...)
(< a, q1, bbBB...)
(< ab, q2, bBB...)
(< abb, q
loop
, BB...)
(< abbB, q
loop
, B...)
(< abbBB, q
loop
, ...) ...
J as cadeias aceitas por estado nal em M abc, abca e abccba conduzem M

a uma
situao de parada, e portanto de aceitao, segundo este critrio:
(<, q0, abccbaB)
(< a, q1, bccbaB)
(< ab, q2, ccbaB)
(< abc, q3, cbaB)
(< abcc, q3, baB)
(< abccbB, q3, aB)
(< abccbaB, q3, B) (< abccbaB, q4, )
O caso inverso (converso do critrio de parada para o critrio de estado nal) trivial e no
ser exemplicado. 2
6.3 Extenses Mais Comuns das Mquinas de Turing
O poder computacional das Mquinas de Turing j foi questionado diversas vezes, sendo
que, em muitas delas, foram feitas propostas de extenses que seriam supostamente
capazes de aumentar o seu poder ou, traduzindo em termos de linguagens, de expandir
a classe de linguagens que elas so capazes de reconhecer.
Provas formais, no entanto, demonstram que o dispositivo bsico da Mquina de
Turing com ta innita, formulado na Seo 6.1, e complementado na Seo 6.2, possui
6 Linguagens Recursivas 329
exatamente o mesmo poder computacional de qualquer outra verso estendida. Entre
as extenses mais populares, citamos as seguintes (nenhuma equivalncia com o modelo
bsico ser demonstrada neste texto):
Mltiplas trilhas:
Trata-se do caso discutido no texto da Seo 5.5, que precede o Teorema 5.4
(equivalncia das gramticas sensveis ao contexto com as Mquinas de Turing
com ta limitada). Tal extenso considera que a ta de trabalho seja substituda
por uma coleo nita de tas, as quais so acessadas por uma quantidade idntica
de cursores de acesso, cada qual dedicado ta correspondente. Os cursores de
acesso deslocam-se todos juntos e sempre no mesmo sentido (para a esquerda ou
para a direita), sob o comando do controle nito. Os smbolos gravados em cada
ta, no entanto, podem ser distintos. Exemplo: em um dispositivo com duas tas,
os dois cursores de acesso devem se movimentar simultaneamente para a esquerda
ou para a direita, ainda que cada ta receba a gravao de smbolos de alfabetos
distintos.
Funo de transio correspondente (para n trilhas, cada qual com o seu prprio
alfabeto
i
):
: Q (
1

2
...
n
) Q (
1

2
...
n
) {E, D}
Mltiplas tas:
Esta extenso assemelha-se que foi discutida para o caso de mltiplas trilhas,
com a diferena de que os cursores de acesso podem ser movimentados de forma
independente uns dos outros. Assim, o controle nito pode especicar, na movi-
mentao de uma congurao para a congurao seguinte, o comportamento de
cada cursor de acesso em sua respectiva ta de trabalho: sentido do deslocamento
e smbolo a ser gravado na respectiva ta. Por exemplo: em um dispositivo com
duas tas, uma transio pode especicar que o cursor da primeira ta se desloque
para a esquerda, ao mesmo tempo que o cursor da segunda ta se desloque para
a direita.
Funo de transio correspondente (para n tas, cada qual com seu prprio alfa-
beto
i
):
: Q (
1

2
...
n
) Q (
1
{E, D}) (
2
{E, D})... (
n
{E, D})
Mltiplos cursores:
Neste caso, uma nica ta de trabalho equipada com dois ou mais cursores de
acesso. O controle nito, por sua vez, especica o sentido de movimentao de cada
cursor e o smbolo a ser gravado na posio da ta correntemente referenciada por
intermdio de cada cursor. Cuidado especial deve ser tomado com a possibilidade
de dois ou mais cursores referenciarem uma mesma posio da ta de trabalho,
para que sejam evitados conitos devidos ordem em que forem gravados ou lidos
os smbolos pelos respectivos cursores de acesso.
Funo de transio correspondente (para n cursores):
: Q ( ... ) Q ( {E, D}) ( {E, D})... ( {E, D})
330 Linguagens Formais - Teoria, Modelagem e Implementao
Fita ilimitada em ambos os sentidos:
Originalmente concebida de forma limitada esquerda e ilimitada direita, esta
extenso contempla que a ta de trabalho tenha um comprimento ilimitado em
ambos os sentidos. No h marcao de incio de cadeia (smbolo <) e o cursor
pode se deslocar livremente tanto para a esquerda quanto para a direita, sem risco
de encerrar a operao anormalmente, por tentativa de acesso a posies esquerda
do incio da ta. A cadeia de entrada gravada, neste caso, em qualquer posio
da ta de trabalho, e o restante da mesma preenchido com brancos (smbolo B).
Convenciona-se, tambm, a posio do cursor de acesso no incio da operao do
dispositivo (por exemplo, apontando para o smbolo mais esquerda da cadeia de
entrada).
A funo de transio correspondente permanece inalterada em relao denio
original:
: Q Q {E, D}
Transies que deslocam o cursor um nmero varivel de posies:
Corresponde ao caso em que o cursor de acesso, aps a execuo de uma transio,
instrudo para se deslocar um nmero arbitrrio de posies sobre a ta de
trabalho, para a direita ou para a esquerda. Este nmero pode inclusive ser zero,
caso em que o cursor permanece na posio em que se encontrava antes da aplicao
da transio, sem se deslocar para esquerda nem para a direita.
Funo de transio correspondente:
: Q Q ({E}

{D}

)
Transies sem leitura ou gravao de smbolos:
Corresponde ao caso em que o smbolo apontado pelo cursor de acesso irrelevante
para a escolha da movimentao a ser efetuada pelo dispositivo (transio sem
leitura), ou, ainda, ao caso em que, aps a execuo da movimentao, o contedo
da posio apontada pelo cursor no modicado (transio sem gravao).
Funo de transio correspondente:
: Q ( {}) Q ( {}) {E, D}
As demonstraes para os quatro casos iniciais podem ser encontradas em [46]. To-
das essas extenses podem, eventualmente, ser combinadas umas com as outras, gerando
diferentes verses da Mquina de Turing bsica. Se, por um lado, elas nada conseguem
acrescentar ao poder da Mquina de Turing original, elas podem, por outro lado, facili-
tar signicativamente o projeto, a implementao e a anlise de algoritmos representados
atravs de Mquinas de Turing, assim como a demonstrao de teoremas acerca desse
tipo de dispositivos ou das linguagens por eles aceitas.
Trata-se, portanto, de uma convenincia que deve ser levada em conta e que pode
ser usada sem qualquer perigo de introduzir distores no modelo original que possam
eventualmente descaracterizar as suas propriedades fundamentais ou mesmo inviabilizar
a sua realizao prtica.
6 Linguagens Recursivas 331
6.4 Relao entre Linguagens Recursivas e Linguagens
Sensveis ao Contexto
A seguir, apresentam-se dois importantes resultados referentes relao entre as lingua-
gens recursivas e as linguagens sensveis ao contexto. Inicialmente, demonstrado que
toda linguagem sensvel ao contexto tambm uma linguagem recursiva. Em seguida,
mostra-se que a classe das linguagens sensveis ao contexto constitui um subconjunto
prprio da classe das linguagens recursivas.
Teorema 6.2 (Sensveis ao contexto recursivas) Toda linguagem sensvel ao con-
texto tambm recursiva.
Justicativa Seja L uma linguagem sensvel ao contexto. Ento, existe uma Mquina de
Turing com ta limitada M
1
que aceita L:
L = L(M
1
), M
1
= (Q
1
, ,
1
,
1
, <, >, q
0
, F
1
)
Constri-se ento uma Mquina de Turing M
2
, sem limitao de tamanho para a
ta de entrada, que simula M
1
:
M
2
= (Q
2
, ,
2
,
2
, <, B, q
0
, F
2
)
onde:
Q
2
= Q
1

2
=
1
F
2
= F
1

2
=
1
, exceto pelo fato de que toda e qualquer transio de M
1
da forma

1
(q
i
, >) = (q
j
, >, E) deve ser substituda por uma transio da forma
2
(q
i
, B) =
(q
j
, B, E).
A congurao inicial de M
2
ser (<, q
0
, ) quando a congurao inicial de M
1
for
(<, q
0
, >). Como a funo de transio idntica em ambas as mquinas, exceto
pelas transies da forma:
(q
i
, >) = (q
j
, >, E),
que sero simuladas por transies da forma:
(q
i
, B) = (q
j
, B, E),
se (<, q
0
, >)

(
1
, q
f
,
1
), q
f
F, em M
1
, ento (<, q
0
, )

(
2
, q
f
,
2
), qf F, em
M
2
. O smbolo B imediatamente direita do ltimo smbolo de em M
2
simula assim
o smbolo de m de cadeia > em M
1
.
Logo, M
1
e M
2
aceitam a mesma linguagem e portanto L, alm de ser uma linguagem
sensvel ao contexto, tambm uma linguagem recursiva.
Teorema 6.3 (Sensveis ao contexto = recursivas) A classe das linguagens sens-
veis ao contexto constitui subconjunto prprio da classe das linguagens recursivas.
332 Linguagens Formais - Teoria, Modelagem e Implementao
Justicativa Basta demonstrar que existe pelo menos uma linguagem recursiva que no
sensvel ao contexto. Como instncia desse fato, podem-se citar todas as linguagens
que incluem a cadeia vazia, uma vez que, conforme foi discutido anteriormente na Seo
5.1, as linguagens sensveis ao contexto no incluem tais cadeias.
Um exemplo no-trivial, desta vez sem recorrer cadeia vazia, a linguagem L
R
,
apresentada no nal da Seo 5.7, quando foi empregada para demonstrar a existncia
de linguagens que no so sensveis ao contexto (Teorema 5.8).
Partindo-se (Teorema 5.7) de uma enumerao de todas as gramticas sensveis ao
contexto (G
1
, G
2
, ...), e tambm de uma enumerao de todas as cadeias possveis de
serem geradas sobre o alfabeto {a, b} (
1
,
2
, ...), o Teorema 5.8 mostra que a linguagem
L
R
= {
i
|
i
L(G
i
), i 1}
no pode ser sensvel ao contexto.
Por outro lado, qualquer que seja a cadeia

, ser sempre possvel determinar


mecanicamente se pertence ou no a L
R
, o que pode ser feito conforme o mtodo
descrito no Algoritmo 6.3.
Algoritmo 6.3 ( L
R
?) Determinao da pertinncia de

a L
R
, denida no
Teorema 5.8.
Entrada: uma cadeia

;
Sada: SIM, se L
R
; NO, se L
R
;
Mtodo:
1. Compara-se com cada uma das cadeias
i
, at que haja coincidncia entre
ambas;
2. Seleciona-se a gramtica G
i
correspondente cadeia
i
(lembrar que foi es-
tabelecida uma funo bijetora entre o conjunto das gramticas e o conjunto
das cadeias);
3. Determina-se se
i
L(G
i
). Como se trata de linguagens sensveis ao
contexto, tal determinao pode sempre ser efetuada;
4. Se o resultado for que
i
L(G
i
), ento, por construo,
i
L
R
e a res-
posta NO. Caso o resultado seja que
i
L(G
i
), ento, por construo,

i
L
R
e a resposta SIM.
Logo, conforme o Algoritmo 6.3, sempre possvel determinar se uma cadeia
qualquer pertence a L
R
. Em outras palavras, L
R
uma linguagem decidvel e, portanto,
recursiva, sem ser sensvel ao contexto.
6.5 Linguagens que no so Recursivas
A classe das linguagens recursivas no a mais abrangente que se conhece. Ao contrrio,
possvel demonstrar que existe pelo menos uma linguagem no-recursiva.
6 Linguagens Recursivas 333
Teorema 6.4 (Linguagens no-recursivas) Existem linguagens que no so recursi-
vas.
Justicativa suciente provar que existe pelo menos uma linguagem no-recursiva.
Essa demonstrao consiste na denio da linguagem L
U
, conforme abaixo, e na prova,
por contradio, de que a mesma no pode pertencer classe das linguagens recursivas.
Em outras palavras, que esta linguagem no decidvel.
L
U
= {C(M)w

| w L(M)}
onde:
C(M) a codicao de uma Mquina de Turing com ta limitada, cujo alfabeto
de entrada , como cadeia sobre o prprio alfabeto ;
w

uma cadeia de entrada qualquer para M.


A linguagem L
U
tambm conhecida como Linguagem Universal, uma vez que
o problema de se determinar se uma certa cadeia w L(M), para uma certa Mquina de
Turing M, pode ser reduzido ao problema de se determinar se C(M)w L
U
. Conforme
ser discutido no Captulo 7, possvel provar que L
U
, apesar de no ser recursiva, uma
linguagem recursivamente enumervel. Logo, existe uma Mquina de Turing que aceita
L
U
. Tal mquina, denotada M
U
, denominada Mquina de Turing Universal. Em
outras palavras, L
U
= L(M
U
).
L
U
presume uma certa forma de codicao das Mquinas de Turing com ta
limitada, codicao esta que, em princpio, pode ser feita sobre o mesmo alfabeto de
entrada de M. Em outras palavras: se M uma Mquina de Turing sobre um alfabeto
, codica-se M denotada C(M) como uma cadeia sobre o prprio alfabeto .
Essa codicao pode ser feita de vrias maneiras. A forma escolhida irrelevante,
uma vez que os resultados obtidos dela independem.
L
U
deve ser entendida, portanto, como a linguagem formada pelo conjunto das
cadeias C(M)w, sendo M uma Mquina de Turing com ta limitada qualquer, com alfa-
beto de entrada , e w uma cadeia qualquer sobre

, desde que w pertena linguagem


denida por M. Esta linguagem, adiante demonstrada como sendo no-recursiva, serve
como base para a apresentao de um problema fundamental da computao, conhecido
como Problema da Parada da Mquina de Turing.
A forma de codicao C(M) de uma mquina M , como foi antecipado, irrele-
vante. apenas necessrio estabelecer uma conveno que permita a correspondncia
unvoca entre cada mquina distinta e a cadeia correspondente que a representa, e tam-
bm garantir que C(M) e w sejam cadeias construdas sobre um mesmo alfabeto. Sero
consideradas duas possibilidades de codicao:
1. Codicar a mquina M como uma cadeia sobre o prprio alfabeto de entrada de
M, deixando a cadeia de entrada w inalterada, resultando na cadeia combinada
C(M)w;
2. Codicar no apenas M, mas tambm a prpria cadeia de entrada w, como cadeias
sobre um segundo alfabeto xo , resultando em cadeias do tipo C(M)C(w).
334 Linguagens Formais - Teoria, Modelagem e Implementao
Para efeito prtico de demonstrao de uma forma de codicao que possa ser
aplicada a qualquer Mquina de Turing, com qualquer alfabeto de entrada, ser adotada
a segunda alternativa.
Apresenta-se a seguir, portanto, um esquema genrico de codicao de mquinas
e cadeias de entrada quaisquer sobre o alfabeto = {a, b, c}, escolhido arbitrariamente.
Note-se, na codicao proposta, que, apesar de o alfabeto possuir apenas trs sm-
bolos, ela permite a representao de Mquinas de Turing com qualquer quantidade
de smbolos em seu alfabeto de entrada , e tambm da prpria cadeia w

a ser
processada por M.
Cada estado no-nal do conjunto de estados Q = {q
0
, q
1
, q
2
...q
n
} ser represen-
tado, respectivamente, pela cadeia aa, aaaa, aaaaaa...a
2(n+1)
(ou seja, uma quan-
tidade par de smbolos a);
C(q
i
) = a
2(i+1)
, para q
i
Q Q
F
;
Cada estado nal do conjunto de estados Q = {q
0
, q
1
, q
2
...q
n
} ser representado,
respectivamente, pela cadeia a, aaa, aaaaa...a
2n+1
(ou seja, uma quantidade mpar
de smbolos a);
C(q
i
) = a
2i+1
, para q
i
Q
F
;
O smbolo especial < ser representado pela cadeia ba;
C(B) = ba;
O smbolo especial B ser representado pela cadeia bba;
C(B) = bba;
Cada elemento
n
do alfabeto = {
0
,
1
,
2
...
n
} ser representado, respectiva-
mente, pela cadeia bbba, bbbba, bbbbba...b
n+3
a;
C(
i
) = b
i+3
a,
i
;
O sentido de movimentao do cursor de acesso ser representado como c (es-
querda) ou cc (direita).
C(E) = c;
C(D) = cc;
Assim, cada uma das transies (q
i
,
m
) = (q
j
,
n
, E) de M poder ser represen-
tada como:
Se q
i
F, q
j
F, ento a
2(i+1)
b
m+3
aa
2(j +1)
b
n+3
ac
Se q
i
F, q
j
F, ento a
2i+1
b
m+3
aa
2(j +1)
b
n+3
ac
Se q
i
F, q
j
F, ento a
2(i+1)
b
m+3
aa
2j +1
b
n+3
ac
Se q
i
F, q
j
F, ento a
2i+1
b
m+3
aa
2j +1
b
n+3
ac
6 Linguagens Recursivas 335
De maneira anloga, caso o sentido de movimentao do cursor de acesso seja D e
no E, basta substituir a subcadeia c por cc nas formas gerais acima. Por exemplo:
(q
i
,
m
) = (q
j
,
n
, D) e a
2(i+1)
b
m+3
aa
2(j +1)
b
n+3
acc, com q
i
F, q
j
F
A representao de M = (Q, , , , q
0
, <, B, F) ser efetivada da seguinte forma:
Q e podem ser inferidos a partir de ;
Se = , ento codica-se ;
A funo de transio ser codicada como uma seqncia de cadeias concate-
nadas conforme a conveno apresentada individualmente para a codicao de
cada transio (acima);
q
0
ser convencionado como sendo o primeiro estado a ser referenciado na denio
de ;
< e B possuem codicaes xas sobre {a, b, c};
F poder ser inferido a partir dos estados presentes na denio da funo de
transio que estejam codicados com uma quantidade mpar de smbolos a.
Codicaes como essa so teis para a demonstrao deste e de diversos outros
teoremas, uma vez que permitem que Mquinas de Turing sejam representadas como
cadeias de entrada (ou parte de cadeias de entrada) para outras Mquinas de Turing.
Exemplo 6.4 Seja a mquina M denida na Figura 6.5:
q
0
q
1
q
2
x/(x, D) B/(B, E)
y/(y, D)
Figura 6.5: Mquina de Turing M que aceita xy

A codicao de seus componentes, de acordo com as convenes anteriormente apresentadas,


ocorre conforme a Figura 6.6.
Figura 6.6: Codicao dos elementos de M sobre {a, b, c}
336 Linguagens Formais - Teoria, Modelagem e Implementao
A representao completa desta mquina obtida concatenando-se as cadeias que representam
as suas transies, conforme mostrado na Figura 6.7:
Figura 6.7: C(M) : M como uma cadeia sobre {a, b, c}
2
A Figura 6.8 ilustra a codicao C(w) para a cadeia de entrada w = xyyB.
Figura 6.8: C(w) : w como uma cadeia sobre {a, b, c}
A cadeia da Figura 6.9 representa a codicao de M seguida da codicao de
uma cadeia w, ambas construdas sobre o mesmo alfabeto de codicao = {a, b, c},
ou seja, C(M) C(w). O smbolo especial usado para separar a codicao da
mquina da codicao da cadeia:
Figura 6.9: C(M) C(w) : M e w como cadeias sobre {a, b, c}
Retorna-se agora ao Problema da Parada e demonstrao de que L
U
no recur-
siva. Para isso, ser adotada a primeira forma de codicao sugerida, ou seja, aquela
em que o alfabeto de codicao empregado o prprio alfabeto de entrada da mquina
M considerada. A segunda forma, exemplicada acima, tambm pode ser usada, sem
que isso implique qualquer alterao nos resultados obtidos.
Suponha-se, portanto, que L
U
seja uma linguagem recursiva, e portanto decidvel.
Isso acarreta a existncia de uma Mquina de Turing com ta limitada M que decide L
U
.
Seja C(N)w a cadeia formada pela concatenao da codicao da mquina N (sobre o
alfabeto ) com a cadeia de entrada w

. A anlise de C(N)w por M ilustrada na


Figura 6.10.
6 Linguagens Recursivas 337
Figura 6.10: Problema da Parada: passo 1
Em seguida, constri-se M
2
a partir de M
1
, de modo que, para toda cadeia capaz
de fazer M
1
parar, aceitando a entrada, M
2
dever passar a executar uma seqncia
innita de movimentaes. Caso M
1
pare, rejeitando a entrada, M
2
dever tambm
parar, rejeitando a entrada (gura 6.11).
Figura 6.11: Problema da Parada: passo 2
Tal modicao de fcil realizao: basta fazer com que M
1
, ao atingir uma
congurao de aceitao, transite para um novo estado, criado especialmente para essa
nalidade, em M
2
, e l permanea indenidamente lendo smbolos na ta de entrada e
deslocando o cursor de acesso para a direita.
Seja M
3
uma Mquina de Turing com ta limitada que duplica a cadeia fornecida
como entrada. Se a cadeia sobre a ta de entrada , ao trmino do processamento a
ta de trabalho conter , conforme a Figura 6.12:
Figura 6.12: Problema da Parada: passo 3
Considere-se agora a mquina M
4
, obtida pela combinao das mquinas M
3
e M
2
,
de tal forma que a sada de M
3
seja usada como entrada para M
2
(Figuras 6.13 e 6.14).
338 Linguagens Formais - Teoria, Modelagem e Implementao
Figura 6.13: Problema da Parada: passo 4
ou ainda:
Figura 6.14: Problema da Parada: passo 5
Faa-se N = M
4
, ou seja, submeta-se a M
4
uma codicao da prpria mquina
M
4
. Isso possvel, uma vez que M
4
aceita cadeias sobre um certo alfabeto , e C(M
4
)
ser codicada tambm como uma cadeia sobre este mesmo . No caso considerado,
= {a, b, c}, porm qualquer outro alfabeto produziria os mesmos resultados (ver Figura
6.15).
Figura 6.15: Problema da Parada: passo 6
A Figura 6.15 remete a uma contradio: por um lado, temos a informao de que,
ao analisar a cadeia C(M
4
), se a mquina M
4
parar, ento M
4
executa uma seqncia
innita de movimentaes. Por outro, que ao analisar a cadeia C(M
4
), se M
4
no parar,
ento M
4
pra. Tem-se, portanto, uma contradio. Logo, a nossa hiptese inicial no
vlida, ou seja, L
U
no pode ser uma linguagem recursiva.
6 Linguagens Recursivas 339
O Problema da Parada, alm de demonstrar que a linguagem L
U
no recursiva,
remete a uma outra concluso importante: no existe soluo para se determinar se uma
certa mquina (ou programa) pra ao processar uma dada entrada. Naturalmente, este
resultado vlido apenas para o caso de mquinas e entradas arbitrrias, no conhecidas
a priori. Eventualmente, este problema pode ser resolvido para combinaes de mquinas
e/ou entradas pr-determinadas.
A linguagem L
K
a seguir apresentada tambm um exemplo clssico de linguagem
no-recursiva:
L
K
= {w
i
| w
i
L(M
i
)}
Esta linguagem pressupe uma certa ordenao (por exemplo, lexicogrca) das
cadeias w
i
sobre um certo alfabeto , e tambm do conjunto das Mquinas de Turing
sobre o mesmo alfabeto. Ela compreende as cadeias w
i
que so aceitas pelas Mquinas
de Turing M
i
correspondentes, e pressupe uma bijeo entre o conjunto das mquinas
M
i
e o conjunto das cadeias w
i
, i 0, conforme a Tabela 6.1.
w
0
w
1
w
2
... w
n
...

M
0
M
1
M
2
... M
n
...
Tabela 6.1: Bijeo entre cadeias e Mquinas de Turing
Teorema 6.5 (L
K
no-recursiva) A linguagem L
K
no recursiva.
Justicativa Conforme o Teorema 7.19 (apresentado mais adiante), uma linguagem L
recursiva se e somente L e seu complemento forem recursivamente enumerveis. O
Teorema 7.13 (tambm apresentado mais adiante), por sua vez, prova que a linguagem
L
D
=

L
K
(o complemento de L
K
) no recursivamente enumervel. Logo, L
K
no
recursiva.
6.6 Propriedades de Fechamento
A seguir sero demonstradas algumas das propriedades de fechamento mais importantes
das linguagens recursivas. Esta classe de linguagens fechada em relao s operaes
de:
Unio
Concatenao
Complementao
Interseco
As respectivas demonstraes sero apresentadas na seqncia. As linguagens re-
cursivas, no entanto, no so fechadas em relao operao de:
Fechamento reexivo e transitivo (Fecho de Kleene)
resultado este que no ser demonstrado neste texto, podendo ser encontrado em [46].
340 Linguagens Formais - Teoria, Modelagem e Implementao
Teorema 6.6 (Fecho na unio) A classe das linguagens recursivas fechada em rela-
o operao de unio.
Justicativa Sejam L
1
e L
2
duas linguagens recursivas quaisquer. Ento, L
1
deci-
dida por uma Mquina de Turing M
1
e L
2
decidida por uma Mquina de Turing M
2
.
A linguagem L
3
= L
1
L
2
decidida por M
3
, construda de acordo com o Algoritmo 6.4.
Algoritmo 6.4 (Fecho na unio) Obteno de uma Mquina de Turing que decide a
unio de duas linguagens, a partir das Mquinas de Turing que decidem cada uma das
linguagens.
Entrada: M
1
e M
2
, duas Mquinas de Turing que decidem, respectivamente, as
linguagens L
1
e L
2
;
Sada: uma Mquina de Turing M
3
que decide a linguagem L
1
L
2
;
Mtodo:
1. M
3
inicialmente simula M
1
com uma cadeia de entrada w;
2. Se M
1
aceita w, ento M
3
pra e aceita w;
3. Se M
1
rejeita w, ento M
3
simula M
2
com a mesma cadeia w;
4. Se M
2
aceita w, ento M
3
pra e aceita w;
5. Se M
2
rejeita w, ento M
3
pra e rejeita w;
Conforme o Algoritmo 6.4, M
3
aceita w se e somente se w L
1
ou w L
2
. Caso
contrrio, M
3
rejeita w. Logo, L
3
uma linguagem recursiva.
Teorema 6.7 (Fecho na concatenao) A classe das linguagens recursivas fechada
em relao operao de concatenao.
Justicativa Sejam L
1
e L
2
duas linguagens recursivas quaisquer. Ento, L
1
deci-
dida por uma Mquina de Turing M
1
e L
2
decidida por uma Mquina de Turing M
2
.
A linguagem L
3
= L
1
L
2
decidida por M
3
, construda de acordo com o Algoritmo 6.5.
Algoritmo 6.5 (Fecho na concatenao) Obteno de uma Mquina de Turing que
decide a concatenao de duas linguagens, a partir das Mquinas de Turing que decidem
cada uma das linguagens.
Entrada: M
1
e M
2
, duas Mquinas de Turing que decidem, respectivamente, as
linguagens L
1
e L
2
;
Sada: uma Mquina de Turing M
3
que decide a linguagem L
1
L
2
;
Mtodo:
1. M
3
inicialmente simula M
1
com uma cadeia de entrada w, w = ;
6 Linguagens Recursivas 341
2. Se M
1
aceita uma subcadeia de w, ento M
3
simula M
2
com a subcadeia
;
3. Se M
2
rejeita , ento M
3
pra e rejeita a cadeia w;
4. Se M
1
no aceita nenhuma subcadeia de w, ento M
3
pra e rejeita w.
Conforme o Algoritmo 6.5, M
3
aceita w se e somente se L
1
e L
2
. Caso
contrrio, M
3
rejeita w. Logo, L
3
uma linguagem recursiva.
Teorema 6.8 (Fecho na complementao) A classe das linguagens recursivas fe-
chada em relao operao de complementao.
Justicativa Seja L
1
uma linguagem recursiva qualquer denida sobre um alfabeto .
Ento, L
1
aceita por uma Mquina de Turing M
1
que sempre pra, qualquer que seja
a entrada. A linguagem L
2
=

L
1
decidida por M
2
construda de acordo com o
Algoritmo 6.6.
Algoritmo 6.6 (Fecho na complementao) Obteno de uma Mquina de Turing
que decide o complemento de uma linguagem, a partir da Mquina de Turing que decide
a linguagem.
Entrada: M
1
, uma Mquina de Turing que decide a linguagem L
1
;
Sada: uma Mquina de Turing M
2
que decide a linguagem

L
1
;
Mtodo:
1. M
2
simula M
1
com uma cadeia de entrada w;
2. Se M
1
aceita w, ento M
2
pra e rejeita w;
3. Se M
1
rejeita w, ento M
1
pra e aceita w.
Conforme o Algoritmo 6.6, M
2
aceita w se e somente se w

L
1
. Caso contrrio,
ou seja, se w L
1
, ento M
2
rejeita w. Logo, L
2
uma linguagem recursiva.
Teorema 6.9 (Fecho na interseco) A classe das linguagens recursivas fechada
em relao operao de interseco.
Justicativa Conforme demonstrado no Teorema 3.18, o fechamento de uma classe de
linguagens em relao operao de interseco pode ser vericado a partir do fecha-
mento em relao s operaes de unio e complementao. Como essas propriedades
j foram demonstradas nos Teoremas 6.6 e 6.8, ca demonstrado o fechamento da classe
das linguagens recursivas em relao operao de interseco.
342 Linguagens Formais - Teoria, Modelagem e Implementao
6.7 Questes Decidveis e No-Decidveis
A classe das linguagens recursivas no oferece, infelizmente, resposta para a maioria das
questes mais comuns que se costuma formular a seu respeito. Tais questes encontram-
se relacionadas abaixo.
Sejam L
1
e L
2
duas linguagens recursivas quaisquer. Ento:
L
1
= ?
L
1
=

?
L
1
= L
2
?
L
1
L
2
?
L
1
L
2
= ?
possvel demonstrar que as linguagens formadas por essas questes no so recur-
sivas. Logo, nem sempre ser possvel determinar uma resposta, qualquer que seja ela,
para questes dessa natureza envolvendo as prprias linguagens recursivas. As demons-
traes no sero feitas neste texto, porm podem ser encontradas em [46].
Por outro lado, conforme mostra o Teorema 6.10, sempre possvel decidir a questo
w L? para a classe das linguagens recursivas.
Teorema 6.10 (A cadeia pertence?) Dadas uma cadeia w

e uma linguagem
recursiva L, L

, sempre possvel determinar se w L.


Justicativa Conforme a prpria denio de linguagem recursiva, se L uma linguagem
dessa classe, ento existe uma Mquina de Turing M que reconhece (decide) L. Para
determinar se uma certa cadeia w L(M), basta submeter w anlise de M. Aps um
nmero nito de movimentaes, M ir parar indicando se w pertence ou no a L.
7 Linguagens Recursivamente
Enumerveis
Uma linguagem L dita recursivamente enumervel (ou simplesmente irrestrita)
se for aceita por pelo menos uma Mquina de Turing M. Ou seja:
1. Para toda cadeia w L, M pra e aceita w;
2. Para toda cadeia z

L, M pra e rejeita z ou executa uma seqncia innita


de movimentaes.
Uma linguagem L dita estritamente recursivamente enumervel se, para
toda e qualquer Mquina de Turing M que aceita L, existir pelo menos uma cadeia
z

L, tal que M inicie uma seqncia interminvel de movimentaes em seu


processamento.
Da mesma forma que as linguagens recursivas, e diferentemente das linguagens
regulares, livres de contexto e sensveis ao contexto, no se conhece qualquer tipo de
estrutura que permita identicar as linguagens recursivamente enumerveis apenas pela
inspeo das propriedades sintticas de suas sentenas.
As linguagens recursivamente enumerveis so, portanto, inicialmente caracteriza-
das a partir das Mquinas de Turing. Conforme ser estudado adiante, elas tambm
podem ser caracterizadas por meio do modelo mais geral de gramticas, as chamadas
gramticas irrestritas (ver Seo 7.3).
A maior importncia desta classe de linguagens reside em sua aplicao ao desen-
volvimento terico da computao.
Conforme estudado no Captulo 6, as linguagens recursivas so tambm conhecidas
como linguagens decidveis. Isso ocorre porque, para tal classe de linguagens, sempre
possvel obter uma Mquina de Turing que sempre pra em resposta a qualquer entrada
que lhe seja submetida, no importa se aceitando ou rejeitando tal entrada. Cadeias
que pertencem linguagem so aceitas e cadeias que no lhe pertencem so rejeitadas.
Essa caracterstica particularmente til quando se deseja estudar a computabilidade de
determinados tipos de problema, em particular dos chamados problemas de deciso.
7.1 Decidibilidade
Um problema de deciso um problema cuja formulao conduz a apenas duas respos-
tas possveis: SIM ou NO. Exemplo: dadas duas linguagens regulares L
1
e L
2
quaisquer,
sempre possvel determinar se L
1
= L
2
? Para cada par de linguagens considerado, este
problema admite apenas uma resposta entre duas possveis.
Uma instncia de um problema um caso particular de um problema geral,
com seus argumentos completamente denidos. Exemplo: dadas a linguagem regular L
1
(segue a especicao de L
1
) e a linguagem regular L
2
(segue a especicao de L
2
), ser
que L
1
= L
2
?
344 Linguagens Formais - Teoria, Modelagem e Implementao
Se todas as instncias de um certo problema, para as quais as respostas forem ar-
mativas (SIM), forem codicadas sobre um alfabeto qualquer, tal conjunto de cadeias
forma uma linguagem L sobre . Note-se que as instncias de problemas cuja resposta
negativa no pertencem a L.
Se a linguagem assim constituda for recursiva, sabido que existe pelo menos uma
Mquina de Turing que decide L. Ou seja, dada uma instncia qualquer do problema, cuja
resposta seja desconhecida, ser sempre possvel determinar se a resposta armativa ou
negativa, bastando para isso vericar se a referida Mquina de Turing aceita ou rejeita
a cadeia que representa a instncia.
A importncia deste resultado est no fato de que linguagens que representam pro-
blemas gerais, uma vez identicadas como sendo recursivas, so tais que permitem a
determinao mecnica da soluo, qualquer que seja a instncia considerada. A meca-
nizao da soluo, no caso, implementada pela Mquina de Turing que aceita L.
As linguagens recursivamente enumerveis, por outro lado, no gozam dessa proprie-
dade. Conforme a sua denio, as cadeias no pertencentes linguagem podem tanto
ser rejeitadas aps uma parada como provocar a execuo de uma seqncia interminvel
de movimentaes na Mquina de Turing correspondente.
Este fenmeno, caracterstico e especco das linguagens estritamente recursiva-
mente enumerveis, no ocorre com as outras classes de linguagens anteriormente consi-
deradas. De fato, possvel provar que, qualquer que seja a linguagem regular, livre de
contexto ou recursiva em questo, sempre possvel obter um autmato nito, um aut-
mato de pilha ou uma Mquina de Turing com ta limitada que sempre pra, qualquer
que seja a cadeia de entrada. Isso no signica, no entanto, que no existam reconhe-
cedores desses tipos que eventualmente executem seqncias innitas de movimentaes
em resposta a alguma cadeia de entrada.
Considere-se agora um outro problema, cujas instncias de resposta armativa tam-
bm possam ser codicadas como cadeias sobre um certo alfabeto de entrada. Considere-
se ainda que a linguagem formada por essa coleo de cadeias seja do tipo recursivamente
enumervel. Isso acarreta a impossibilidade de se vericar, mecanicamente, se determi-
nada cadeia pertence ou no linguagem, pois cadeias no pertencentes linguagem
eventualmente podero provocar uma movimentao interminvel da Mquina de Turing
correspondente.
Logo, torna-se impossvel, no caso geral, determinar se um certo problema possui
soluo, qualquer que seja a instncia considerada. Se determinada instncia possui
resposta SIM (caso em que a cadeia que a representa pertence linguagem), fato que
a correspondente Mquina de Turing ir parar aps um tempo nito de processamento.
Se a resposta NO, sabe-se apenas que o processamento poder eventualmente parar,
rejeitando a entrada, ou ento iniciar uma seqncia inndvel de movimentaes.
Para um observador externo, no h nenhuma garantia, para qualquer que seja a
instncia que venha a ser eventualmente considerada, de que o processamento ir parar
em algum momento, produzindo algum resultado.
Devido a essa caracterstica, as linguagens recursivamente enumerveis so tambm
denominadas indecidveis. Problemas cujas representaes na forma de linguagens se-
jam recursivamente enumerveis so tambm chamados de problemas indecidveis.
De uma forma geral, os termos recursivo e recursivamente enumervel so em-
pregados quando se trata de linguagens genricas, e os termos decidvel (sinnimo de
recursiva) e indecidvel ou no-decidvel (sinnimos de recursivamente enumer-
vel), quando se trata de linguagens que representam problemas.
7 Linguagens Recursivamente Enumerveis 345
O termo decidibilidade refere-se ao estudo das linguagens formais, com vistas
determinao das classes a que estas pertencem.
Os termos solucionvel, no-solucionvel (ou insolvel) e parcialmente so-
lucionvel, tambm empregados quando se trata de problemas, signicam, respectiva-
mente, que as correspondentes linguagens so: (i) recursivas, ou seja, podem sempre ser
decididas no caso geral; (ii) recursivamente enumerveis, ou seja, no podem ser deci-
didas no caso geral; e (iii) recursivamente enumerveis, enfatizando o fato de que pode
haver soluo para algumas instncias do problema (ainda que correndo o risco de se
esperar indenidamente por uma resposta).
Aplicada ao estudo dos problemas de deciso, a decidibilidade indica se os mesmos
so solucionveis, no-solucionveis ou parcialmente solucionveis.
fcil, portanto, justicar o grande interesse prtico que existe por problemas para
os quais se possa provar que a linguagem de representao recursiva. Problemas cuja
linguagem de representao seja comprovadamente estritamente recursivamente enume-
rvel, por outro lado, servem sobretudo para demonstrar a inexistncia de procedimentos
mecnicos (algoritmos) que possam resolv-los no caso geral. E isso um resultado te-
rico excepcional, uma vez que evita o desperdcio de recursos na busca de solues gerais e
mostra que determinados problemas no possuem soluo, independentemente da tecno-
logia computacional atual ou futura que possa ser empregada na busca de pretensas
solues.
Note-se, nalmente, que o fato de um determinado problema poder ser resolvido no
caso geral no signica que os algoritmos de resoluo conhecidos sejam necessariamente
ecientes. Em muitas situaes, a busca de soluo para o caso geral, cuja existncia
conhecida atravs da teoria, pode ser inviabilizada na prtica, em virtude do imenso
custo associado sua realizao (custo esse reetido, usualmente, no volume de memria
necessrio ou no tempo de processamento requerido para se chegar s solues).
Por outro lado, a inexistncia de soluo para um problema no caso geral no
signica que ele no possa ser resolvido para instncias especcas ou pr-determinadas,
ou, ainda, para conjuntos de instncias pr-determinadas do problema original.
7.2 Mquinas de Turing como Enumeradoras de Linguagens
Originalmente, o termo recursivamente enumervel refere-se ao fato de as sentenas de
uma linguagem deste tipo poderem ser enumeradas (listadas ou contadas) atravs de um
procedimento mecanizado um algoritmo ou uma Mquina de Turing.
Diz-se que a Mquina de Turing M = (Q, , , , <, B, q
0
, F) enumera uma lin-
guagem, quando:
M possui pelo menos duas tas de entrada;
Uma das tas usada apenas para a gravao de cadeias geradas sobre o alfabeto
. Nessa ta, o cursor de acesso desloca-se apenas para a direita, smbolos podem
apenas ser gravados, e cadeias consecutivas so separadas pelo smbolo #, no
pertencente a .
O conjunto das cadeias gravadas por M na ta de sada denotado por E(M), e
representa a linguagem enumerada por M. E(M)

pode ser nita ou innita. Nesse


ltimo caso, o processamento de M no pra nunca e M est sempre gravando novas
cadeias na ta de sada, uma aps a outra.
346 Linguagens Formais - Teoria, Modelagem e Implementao
Os Teoremas 7.1 e 7.2, a seguir apresentados, mostram que uma linguagem L
recursivamente enumervel se e somente se ela puder ser enumerada por uma Mquina
de Turing M, ou seja, L = E(M).
Teorema 7.1 (Enumeradas recursivamente enumerveis) Seja L = E(M).
Ento L recursivamente enumervel.
Justicativa Para demonstrar que L recursivamente enumervel, suciente demons-
trar que existe uma Mquina de Turing N que aceita L. O Algoritmo 7.1 a seguir mostra
como construir N a partir de M.
Algoritmo 7.1 (Enumeradas recursivamente enumerveis) Obteno de uma
Mquina de Turing que aceita a linguagem gerada por uma Mquina de Turing que a
enumera.
Entrada: uma Mquina de Turing M que enumera uma linguagem L;
Sada: uma Mquina de Turing N que aceita L;
Mtodo:
1. N possui duas tas de entrada: na primeira sero gravadas as cadeias de L,
uma a uma (atravs da simulao de M por N), e na segunda ser gravada
a cadeia w que se deseja vericar se pertence ou no a L;
2. N opera como M: gerando uma nova cadeia de L e gravando-a na ta de
sada;
3. Antes, porm, de acrescentar o delimitador # sua direita e proceder
gerao de uma nova cadeia, N compara a cadeia w contida na segunda ta
com a cadeia recm-gerada na primeira ta;
4. Se forem iguais, N pra e aceita w. Caso contrrio, desviar para (2).
De acordo com o Algoritmo 7.1, claro que, se w L, ento w aceita por N,
pois w ser inevitavelmente gerada e gravada por N na primeira ta, em um intervalo
de tempo nito.
Se, por outro lado, w L, N pode tanto parar rejeitando w (no caso em que L for
nita), como entrar em um processamento interminvel, dentro do qual novas cadeias
so sucessivamente geradas e comparadas com w (no caso em que L innita). L ,
portanto, uma linguagem recursivamente enumervel.
Teorema 7.2 (Enumeradas recursivamente enumerveis) Seja L uma lingua-
gem recursivamente enumervel. Ento existe N, tal que L = E(N).
Justicativa Se L recursivamente enumervel, ento L = L(M) para alguma M-
quina de Turing M. Uma primeira tentativa de demonstrao consiste em construir uma
mquina N que simula M, conforme o Algoritmo 7.2.
Algoritmo 7.2 (Enumeradas recursivamente enumerveis, verso 1) Obten-
o de uma Mquina de Turing que enumera uma linguagem denida por outra Mquina
de Turing.
7 Linguagens Recursivamente Enumerveis 347
Entrada: uma Mquina de Turing M;
Sada: uma Mquina de Turing N que enumera L(M);
Mtodo:
1. N gera uma nova cadeia w

, onde o alfabeto de L (essas cadeias


devem ser geradas em uma certa ordem e sucessivamente. Por exemplo,
pode-se considerar a ordenao lexicogrca das cadeias de L na seqncia
de comprimento crescente).
2. A cadeia gerada w escrita em uma ta auxiliar de N (ta 1).
3. A ta 2 de N contm uma codicao C(M) da mquina M.
4. N simula M com a cadeia w gravada na ta 1.
5. Caso M aceite w, w# escrito na ta 3.
6. Desviar para (1).
O procedimento do Algoritmo 7.2 consiste em gerar, de forma sistemtica e exaus-
tiva, todas as cadeias de

, testando cada uma delas em M para determinar se pertencem


ou no a L. Em caso armativo, elas so individualmente copiadas para a ta de sada
de N, que dessa forma enumera as cadeias de L, ou seja, L = E(N).
Essa soluo funcionaria perfeitamente, exceto por um detalhe: se L for uma lingua-
gem estritamente recursivamente enumervel, isso signica que existe pelo menos uma
cadeia z

L, de modo que M inicia uma seqncia inndvel de movimentaes em


sua operao. Logo, N inicia essa seqncia no passo (4) do procedimento, e as demais
cadeias de L no so geradas, nem testadas ou gravadas por N em sua ta de sada.
Se, no entanto, L for uma linguagem decidvel (recursiva), ento o procedimento
pode ser usado sem qualquer risco de induzir M, e conseqentemente N, a um processa-
mento que pare de gerar resultados.
No obstante, possvel adotar um procedimento ligeiramente modicado que per-
mita superar as limitaes do procedimento analisado, servindo, indistintamente, tanto
para linguagens recursivas quanto para linguagens recursivamente enumerveis.
Seja L uma linguagem recursivamente enumervel, L

e w L. Ento, se

0
,
1
,
2
,
3
, ...,
n
, ... uma ordenao lexicogrca, de comprimento crescente, das
cadeias de

, fato que w =
i
, para algum valor de i, e apenas um.
Exemplo 7.1 Considere = {a, b}. A ordenao lexicogrca de comprimento crescente das cadeias
de

:
Comprimento 0:
Comprimento 1: a, b
Comprimento 2: aa, ab, ba, bb
Comprimento 3: aaa, aab, aba, abb, baa, aba, bba, bbb
...
348 Linguagens Formais - Teoria, Modelagem e Implementao
Comprimento n: a
n
, a
n1
b, ..., b
n1
a, b
n
...
2
Alm disso, como w L, tambm fato que w aceita por uma Mquina de Turing
M aps um nmero limitado de movimentaes que levam M desde a sua congurao
inicial at uma congurao nal qualquer. Supondo que M seja determinstica, e sendo
|w| = k, w aceita apenas na k-sima congurao assumida por M.
Dena-se a funo parcial : Z
+
Z
+

da seguinte forma: se
i
L, |
i
| = j
e
i
aceita por uma Mquina de Turing M determinstica (neste caso, aps j congu-
raes), ento associa o par (i, j ) com a cadeia
i
. A funo injetora e sobrejetora,
pois no existem dois pares que possam ser associados com a mesma sentena, e todas
as sentenas de L esto associadas com exatamente um par.
Considere-se um certo par (p, q) escolhido ao acaso. Se
p
L, certo que
p

aceita por M aps um certo nmero de movimentaes. Se este nmero for q, a cadeia
p
ser enumerada. Caso contrrio, ela ser descartada, at que o par correto seja sorteado
(note-se que para cada valor de p existe uma quantidade innita de pares com este valor
no primeiro elemento da dupla: ...(p, q 2), (p, q 1), (p, q), (p, q +1), (p, q +2)... etc.).
O objetivo agora o de construir uma Mquina de Turing N que, partindo de uma
seqncia de todos os pares ordenados (i, j ), i 1, j 1, em que cada (i, j ) ocorre uma
nica vez, testar sistematicamente se a cadeia
i
aceita por M em j movimentos. Em
caso armativo,
i
ser enumerada. Em caso armativo ou negativo, um novo par
considerado e um novo teste efetuado.
Dessa forma, evita-se testar
i
em M de forma contnua, at que M pare (conforme
a proposta do Algoritmo 7.2), pois isso poderia causar problemas no caso de linguagens
estritamente recursivamente enumerveis. Nessa nova tcnica, o teste de cada
i
efe-
tuado apenas durante uma seqncia limitada de conguraes (porm suciente para
a sua aceitao, caso a cadeia pertena linguagem), evitando-se dessa maneira a ocor-
rncia de eventuais seqncias interminveis de movimentaes. Assim, a sentena
i

enumerada apenas quando o par (i, j ) correspondente tiver sido considerado.
A m de garantir a enumerao sistemtica de todas as sentenas de L, necessrio
considerar a gerao e o teste sistemtico de todos os pares (i, j ), sem repetio, um de
cada vez. Conforme estudado no Captulo 1 (ver Exemplo 1.54), o conjunto desses pares
pode facilmente ser enumerado considerando-se a organizao em que os pares cuja soma
representa os mesmos valores so agrupados em ordem crescente do valor da soma e,
dentro de cada um desses grupos, na ordem descrescente do primeiro termo e crescente
do segundo:
Soma 2: (1, 1)
Soma 3: (2, 1), (1, 2)
Soma 4: (3, 1), (2, 2), (1, 3)
Soma 5: (4, 1), (3, 2), (2, 3), (1, 4)
Soma 6: (5, 1), (4, 2), (3, 3), (2, 4), (1, 5)
...
Soma n: (n 1, 1), (n 2, 2), (n 3, 3)...(3, n 3), (2, n 2), (1, n 1)
7 Linguagens Recursivamente Enumerveis 349
...
Por outro lado, dado um valor de i, ser necessrio gerar a cadeia
i
correspondente.
possvel, sem grande diculdade, demonstrar a existncia de Mquinas de Turing que
realizam essas duas tarefas, e que sero embutidas em N. O Algoritmo 7.3 corresponde
verso revisada do Algoritmo 7.2.
Algoritmo 7.3 (Enumeradas recursivamente enumerveis, verso 2) Reviso
do Algoritmo 7.2 que evita seqncias innitas de movimentaes, sendo portanto ade-
quada para linguagens estritamente recursivamente enumerveis.
Entrada: uma Mquina de Turing M;
Sada: uma Mquina de Turing N que enumera L(M);
Mtodo:
1. N gera o prximo par (i, j ) da seqncia;
2. N gera a cadeia
i

;
3. A cadeia gerada
i
gravada em uma ta auxiliar de N (ta 1);
4. A ta 2 de N contm uma codicao C(M) da mquina M;
5. N simula M com a cadeia
i
gravada na ta 1, efetuando j movimentaes;
6. Caso M aceite
i
na j -sima congurao, ento a cadeia
i
# gravada
na ta 3, imediatamente aps o nal da cadeia anteriormente gravada nessa
mesma ta;
7. Desviar para (1).
Como o nmero de passos necessrios para a gerao de cada par (i, j ) e de cada
cadeia
i
nito, o mesmo ocorrendo com o nmero de passos alocado para testar cada

i
em M, e como, alm disso, todos os pares (i, j ) so considerados (o que signica dizer
que todas as cadeias de

so consideradas), pode-se armar que N enumera todas as


sentenas de L, e apenas essas.
Se L for uma linguagem recursiva, e apenas neste caso, N enumera as sentenas de
L em ordem lexicogrca, na seqncia de comprimento crescente.
7.3 Gramticas Irrestritas
Uma gramtica G = (V, , P, S) dita irrestrita se nenhuma restrio adicional for
aplicada s suas regras de produo, que devem seguir a forma geral ,
V

NV

, V

. Observar que as gramticas regulares, as livres de contexto e as


sensveis ao contexto so casos particulares das gramticas irrestritas.
Note-se que, diferentemente do que ocorre com as gramticas sensveis ao contexto,
as gramticas irrestritas admitem que o lado direito das regras () possua um nmero de
350 Linguagens Formais - Teoria, Modelagem e Implementao
smbolos menor que o lado esquerdo correspondente (). Isso faz com que possa haver
reduo no tamanho das formas sentenciais durante o processo de derivao de sentenas.
Alguns autores consideram um formato ainda mais geral para as regras das gra-
mticas irrestritas: V
+
, V

. Este formato permite que o lado esquerdo das


regras seja formado por qualquer combinao de smbolos terminais e no-terminais, in-
cluindo cadeias formadas exclusivamente por smbolos terminais, o que no permitido
no formato aqui adotado.
Na verdade, ambas as denies so equivalentes, podendo ser usadas indistinta-
mente. A converso de regras do formato mais geral ( V
+
, V

) para o formato
menos geral ( V

NV

, V

) pode ser feita aplicando-se a tcnica utilizada na


demonstrao do Teorema 5.1, em que novos smbolos no-terminais so criados e subs-
tituem todas as ocorrncias de smbolos terminais, e a gramtica acrescida de produes
unitrias que convertem cada um desses novos smbolos no-terminais nos smbolos ter-
minais correspondentes.
Exemplo 7.2 A gramtica G1 = ({S, A, B, C, a, b, c}, {a, b, c}, P1, S), com P1:
{S aAbcC
bc B
ABC b}
pode ser facilmente convertida para G2 = ({S, A, B, C, X, Y, Z, a, b, c}, {a, b, c}, P2, S), com P2:
{S XAYZC
YZ B
ABC Y
X a
Y b
Z c}
2
As convenes e a terminologia adotadas na apresentao e discusso dos demais
tipos de gramtica tambm so aplicveis ao caso das gramticas irrestritas. Derivaes,
formas sentenciais e a linguagem gerada pela gramtica so denotadas de forma idntica
queles casos.
Exemplo 7.3 A gramtica G = ({S, A, C, a, b, c}, {a, b, c}, P, S), com P:
{S aAbc
A aAbC |
Cb bC
Cc cc}
gera a linguagem a
i
b
i
c
i
, i 1. Esta mesma linguagem foi anteriormente formulada no Captulo
5 atravs de uma gramtica sensvel ao contexto (ver Exemplo 5.14). No presente exemplo, ela
formalizada atravs de uma gramtica irrestrita (por causa da produo A , em que |A| > ||).
Exemplos de derivao:
S aAbc abc
S aAbc aaAbCbc aaaAbCbCbc aaabCbCbc aaabCbbCc aaabbCbCc
aaabbbCCc aaabbbCcc aaabbbccc
7 Linguagens Recursivamente Enumerveis 351
A aplicao da produo S aAbc, seguida de n aplicaes da produo A aAbC e,
nalmente, da aplicao da produo A , gera uma forma sentencial do tipo a
n+1
(bC)
n
bc. A
transposio dos smbolos b para o lado esquerdo, junto aos smbolos a, feita com o auxlio
da produo Cb bC. Aps a aplicao dessa produo n + 1 vezes, chega-se forma sentencial
a
n+1
b
n+1
C
n
c. Finalmente, a aplicao da produo Cc cc por n vezes substitui os no-terminais
C pelos terminais c correspondentes, conduzindo gerao da sentena a
n+1
b
n+1
c
n+1
. 2
Exemplo 7.4 A gramtica G = ({S, B, X, a, b}, {a, b}, P, S), com P:
{S aBSa | aBXa
Ba aB
BX Xb
aX a}
gera a linguagem a
i
b
i
a
i
, i 1. A produo aX a caracteriza esta gramtica como sendo
irrestrita, uma vez que | aX |>| a |.
As duas produes iniciais geram formas sentenciais do tipo (aB)
n
Xa
n
. A partir desse ponto,
a aplicao repetida da produo Ba aB permite obter formas sentenciais do tipo a
n
B
n
Xa
n
.
Resta, portanto, substituir os smbolos no-terminais B por terminais b para gerar as sentenas
pretendidas, tarefa esta que cumprida pelas trs ltimas produes. O no-terminal X serve
como delimitador, separando as cadeias sua esquerda e sua direita. Ele usado, inicialmente,
como referncia para substituir os smbolos B por b e, nalmente, para se auto-remover da forma
sentencial, gerando a
n
b
n
a
n
. Exemplos de derivao:
S aBXa aXba aba
S aBSa aBaBSaa aBaBaBXaaa aaBBaBXaaa aaBaBBXaaa
aaaBBBXaaa aaaBBXbaaa aaaBXbbaaa aaaXbbbaaa aaabbbaaa
2
7.4 Forma Normal para Gramticas Irrestritas
Devido ao fato de as gramticas regulares, livres de contexto e sensveis ao contexto cons-
titurem casos particulares das gramticas irrestritas, a forma normal que ser apresen-
tada a seguir pode ser aplicada indistintamente em qualquer tipo de gramtica examinada
at o momento.
A demonstrao do teorema seguinte baseia-se na demonstrao de [55], que por
sua vez uma generalizao da forma conhecida como Forma Normal de Kuroda para
gramticas sensveis ao contexto (ver Seo 5.3).
Teorema 7.3 (Forma normal para gramticas irrestritas) Toda gramtica irres-
trita G
1
= (V
1
, , P
1
, S) dene uma linguagem L que tambm pode ser gerada por uma
outra gramtica G
2
= (V
2
, , P
2
, S), equivalente, cujas produes so todas das seguin-
tes formas: (1) S ; (2) A ; (3) A B; (4) A BC; (5) AB AC; (6)
AB CB; (7) AB C, onde S, A, B, C N
2
e .
Justicativa Conforme o Algoritmo 7.4, descrito a seguir, o qual incorpora as seguin-
tes etapas:
i. Eliminao das produes vazias;
ii. Incorporao da produo (1), caso a cadeia vazia faa parte da linguagem;
iii. Substituio dos smbolos terminais por novos smbolos no-terminais e incorpo-
rao de novas produes da forma (2), uma para cada smbolo terminal de G
1
;
352 Linguagens Formais - Teoria, Modelagem e Implementao
iv. Substituio das produes , em que || ||, por um novo conjunto de
produes das formas (3), (4), (5), (6) e (7);
v. Substituio das produes , em que || > ||, por um novo conjunto de
produes das formas (3), (4), (5), (6) e (7).
Algoritmo 7.4 (Forma normal para gramticas irrestritas) Obteno de uma gra-
mtica irrestrita na forma normal.
Entrada: uma gramtica irrestrita G
1
= (V
1
, , P
1
, S);
Sada: uma gramtica irrestrita G
2
= (V
2
, , P
2
, S), na forma normal, e tal que
L(G
2
) = L(G
1
);
Mtodo:
1. Incio:
Sendo N
1
= V
1
e N
2
= V
2
, faz-se:
N
2
N
1
P
2

2. Etapa (i):
Eliminam-se as produes da forma A contidas em P
1
:
P
2
P
2
{XA X, AX X, A , A | A P
1
, X
N
1
, }
3. Etapa (ii):
Incorporao da cadeia vazia, se for o caso:
P
2
P
2
{S , se L(G
1
)}
4. Etapa (iii):
Eliminao dos terminais originais e sua substituio por no-terminais cor-
respondentes:
N
2
N
2
{X

, }
P
2
P
2
{X

,
1
X

2
|
1

2
P
1
, ,
1
,
2

V

1
}
P
2
P
2
{X

,
1

2
|
1

2
P
1
, ,
1
,
2

V

1
}
5. Etapa (iv):
Eliminao das produes , || ||:
7 Linguagens Recursivamente Enumerveis 353
Para cada produo em P
1
, com || ||, tem-se:
= A
1
A
2
...A
m
= B
1
B
2
...B
n
= B
1
B
2
...B
m
B
m+1
...B
n
, com A
i
, B
j
N
1
, n m
1.
Fazer:
N
2
N
2
{X
i
, 1 i n 1}
P
2
P
2

{A
1
B
1
X
1
X
1
A
2
B
2
X
2
X
2
A
3
B
3
X
3
...
X
m2
A
m1
B
m1
X
m1
X
m1
A
m
B
m
X
m
X
m
B
m+1
X
m+1
X
m+1
B
m+2
X
m+2
...
X
n2
B
n1
X
n1
X
n1
B
n
}
6. Etapa (v): Eliminao das produes , || > ||:
Para cada produo , com || > ||, tem-se:
= A
1
A
2
...A
n
= A
1
A
2
...A
m
A
m+1
...A
n
= B
1
B
2
...B
m
, com A
i
, B
j
N, n > m 1.
Fazer:
N
2
N
2
{X
i
, 1 i n m 1} {Y
j
, 0 j n 2}
P
2
P
2

{A
n1
A
n
X
0
Y
0
, X
0
Y
0
Y
0
,
A
n2
Y
0
X
1
Y
1
, X
1
Y
1
Y
1
,
A
n3
Y
1
X
2
Y
2
, X
2
Y
2
Y
2
,
...
A
m
Y
nm2
X
nm1
Y
nm1
, X
nm1
Y
nm1
Y
nm1
B
m
,
A
m1
Y
nm1
Y
nm
B
m1
,
A
m2
Y
nm
Y
nm+1
B
m2
,
...
A
1
Y
n2
Y
n2
B
1
, Y
n2
B
1
B
1
}
7. Trmino:
As produes do tipo AB CD geradas nas etapas (iv) e (v) devem
ainda ser substitudas por um conjunto de produes equivalente, porm
em conformidade com as formas (3), (4), (5), (6) e (7):
354 Linguagens Formais - Teoria, Modelagem e Implementao
N
2
N
2
{X, Y}
P
2
P
2
{AB AY, AY XY, XY XD, XD CD}
Todas as produes de G
2
esto em algum dos formatos permitidos na forma normal
desejada, completando a prova.
Exemplo 7.5 De acordo com a etapa (iv), a produo A1A2A3 B1B2B3B4B5B6B7 deve ser
substituda pelo conjunto de regras:
{A1 B1X1, (7.1)
X1A2 B2X2, (7.2)
X2A3 B3X3, (7.3)
X3 B4X4, (7.4)
X4 B5X5, (7.5)
X5 B6X6, (7.6)
X6 B7} (7.7)
De fato, A1A2A3
+
B1B2B3B4B5B6B7, como se constata pela seguinte derivao:
A1A2A3 B1X1A2A3 B1B2X2A3 B1B2B3X3
B1B2B3B4X4 B1B2B3B4B5X5 B1B2B3B4B5B6X6 B1B2B3B4B5B6B7
Para completar, a produo (7.2) deve ainda ser substituda pelo conjunto:
{X1A2 X1N,
X1N MN,
MN MX2,
MX2 B2X2}
Transformao semelhante deve ser aplicada na produo (7.3), pois as demais j se encontram
enquadradas nos formatos originalmente propostos. 2
Exemplo 7.6 De acordo com a etapa (v), a produo A1A2A3A4A5A6A7 B1B2B3 deve ser
substituda pelo conjunto de produes:
{A6A7 X0Y0, (7.8)
X0Y0 Y0, (7.9)
A5Y0 X1Y1, (7.10)
X1Y1 Y1, (7.11)
A4Y1 X2Y2, (7.12)
X2Y2 Y2, (7.13)
A3Y2 X3Y3, (7.14)
X3Y3 Y3B3, (7.15)
A2Y3 X4Y4, (7.16)
X4Y4 Y4B2, (7.17)
A1Y4 Y5B1, (7.18)
Y5B1 B1} (7.19)
De fato, A1A2A3A4A5A6A7
+
B1B2B3, como se constata pela seguinte derivao:
A1A2A3A4A5A6A7 A1A2A3A4A5X0Y0 A1A2A3A4A5Y0 A1A2A3A4X1Y1
A1A2A3A4Y1 A1A2A3X2Y2 A1A2A3Y2 A1A2X3Y3 A1A2Y3B3
7 Linguagens Recursivamente Enumerveis 355
A1X4Y4B3 A1Y4B2B3 Y5B1B2B3 B1B2B3
Para completar, a produo (7.8) deve ainda ser substituda pelo conjunto:
{A6A7 A6N,
A6N MN,
MN MY0,
MY0 X0Y0}
Transformaes semelhantes devem ser aplicadas s produes (7.10), (7.12), (7.14), (7.15),
(7.16), (7.17) e (7.18). Assim, todas as produes resultantes se enquadram nas formas originalmente
propostas. 2
7.5 Equivalncia entre Gramticas Irrestritas e Linguagens
Recursivamente Enumerveis
As Mquinas de Turing com ta innita denem a classe das linguagens recursivamente
enumerveis, que tambm podem ser geradas pelas gramticas irrestritas. Tal resultado
pode ser comprovado atravs dos dois teoremas seguintes, que demonstram a equivalncia
dos dois tipos de dispositivos, no que se refere classe de linguagens que eles so capazes
de representar. A demonstrao original devida a Chomsky em [62].
Teorema 7.4 (Irrestritas recursivamente enumerveis) Seja L = L(G), sendo
G uma gramtica irrestrita. Ento L uma linguagem recursivamente enumervel.
Justicativa A demonstrao feita a partir da construo de uma Mquina de Turing
M no-determinstica que aceita L. M construda de tal modo que seus movimentos
simulam as derivaes das sentenas geradas por G. A mquina M que reconhece L(G)
apresenta trs tas de trabalho:
- Na primeira ta est inicialmente gravada a cadeia w que se deseja examinar para
determinar se ela pertence ou no a L;
- Na segunda ta ca gravada uma codicao C(G) da gramtica irrestrita G;
- Na terceira ta est inicialmente gravado, na primeira posio, o smbolo no-
terminal S, a raiz da gramtica G. A cadeia gravada na terceira ta ser denotada
por z e, portanto, inicialmente |z| = |S| = 1.
A operao de M no-determinstica e acontece da seguinte forma:
1. Determinar todos os pares (i, ) tais que, a partir da posio i da cadeia z, seja
possvel identicar uma subcadeia , tal que
1
|
2
| ... |
n
P, sendo P o
conjunto das regras de G gravado na segunda ta de trabalho;
2. Para cada par (i, ) obtido no passo (1), criar um novo thread para M, e deslocar
o respectivo cursor de acesso da ta nmero 3 at a posio i; encerrar o thread
original na congurao de rejeio;
3. Para cada thread criado no passo (2):
356 Linguagens Formais - Teoria, Modelagem e Implementao
a) Criar n novos threads para M, sendo que cada thread j , 1 j n, deve
substituir, na cadeia z, a partir da posio i, a subcadeia pela subcadeia

j
; encerrar o thread original na congurao de rejeio;
b) Para cada thread criado no passo (3.a):
i. Se z = w, desviar para o passo (1);
ii. Se z = w, encerrar o thread na congurao de aceitao.

Note-se que a gerao de uma nova forma sentencial na ta nmero 3 pode provocar
a manuteno, a reduo ou o aumento de seu comprimento, em relao forma sentencial
imediatamente anterior. Dessa forma, M deve ser capaz de efetuar a contrao ou a
expanso da cadeia que representa cada forma sentencial, evitando sua fragmentao ou
perda de informao.
A mquina M assim construda simula, na ta nmero 3, as derivaes de G. A
escolha da produo a ser aplicada em cada momento, no entanto, no-determinstica.
Se w L, certo que existe pelo menos uma derivao que a gera. Logo, fato que
alguma instncia de M inevitavelmente reproduzir essa derivao, o que resultar na
aceitao de w. Se, por outro lado, w L, isso signica que no existe derivao possvel
de w em G. Logo, nenhuma das instncias de M ser capaz de atingir uma congurao
nal. A cadeia de entrada ser rejeitada, ou ento M iniciar uma seqncia intermin-
vel de movimentaes. Portanto, L(M) = L(G), e L uma linguagem recursivamente
enumervel.
Cumpre notar a semelhana entre a tcnica descrita no Teorema 7.4 e o Algoritmo
5.2, que mostra como obter uma Mquina de Turing com ta limitada a partir de uma
gramtica sensvel ao contexto. A diferena que, naquele caso, as formas sentenciais ge-
radas possuem comprimento no-decrescente, e isso facilita a sua comparao sistemtica
com a cadeia de entrada. Alm disso, no existem garantias, como no caso do Algoritmo
5.2, de que todos os threads se encerram aps um tempo nito de execuo exceto,
naturalmente, para o thread que gera a seqncia de derivaes que resulta na cadeia
de entrada, caso essa seja uma sentena da linguagem gerada por G. Ao contrrio,
possvel que, para cadeias no pertencentes linguagem, existam threads de M exe-
cutando seqncias interminveis de movimentaes, sem que outros threads atinjam
uma congurao de aceitao. Por esse motivo, a tcnica descrita no Teorema 7.4 no
recebe a designao de algoritmo.
Teorema 7.5 (Irrestritas recursivamente enumerveis) Seja L = L(M), sendo
M uma Mquina de Turing com ta innita. Ento L = L(G), sendo G uma gramtica
irrestrita.
Justicativa Segue a mesma linha adotada na demonstrao do Teorema 5.3 e consiste
na obteno de uma gramtica irrestrita que reproduz, na derivao de suas sentenas,
os movimentos da Mquina de Turing M que aceita a mesma linguagem. Se a cadeia de
entrada aceita por M, ela tambm gerada pela gramtica. Cadeias no aceitas por
M no so geradas pela gramtica.
O Algoritmo 7.5 descrito a seguir especica os passos que devem ser executados na
transformao sistemtica de uma Mquina de Turing M = (Q, , , , q
0
, <, B, F) em
uma gramtica irrestrita G = (V, , P, S).
7 Linguagens Recursivamente Enumerveis 357
Algoritmo 7.5 (Irrestritas recursivamente enumerveis) Obteno de uma gra-
mtica irrestrita a partir de uma Mquina de Turing.
Entrada: uma Mquina de Turing M = (Q, , , , q
0
, <, B, F) com ta innita;
Sada: uma gramtica irrestrita G = (V, , P, S) tal que L(G) = L(M);
Mtodo:
Inicialmente so gerados os smbolos no-terminais de G. Esses smbolos possuem
o formato geral [, ], onde , uma cadeia sobre {, q, <, #} e q Q.
A primeira destas duas componentes do smbolo [, ...] representa um certo
terminal da cadeia de entrada. Sua segunda componente [..., ] representa
parte da congurao assumida pela Mquina de Turing no reconhecimento da
referida cadeia de entrada.
Os conjuntos P e S de G so inicialmente denidos como:
I. P {S [
i
, < q
0

i
]A,
i
}
N {S, A, [
i
, < q
0

i
],
i
}
II. P P {S [
i
, < q
0

i
#],
i
( {B})}
N N {[
i
, < q
0

i
#],
i
( {B})}
III. P P {A [
i
,
i
]A, A [
i
,
i
#],
i
}
N N {[
i
,
i
], [
i
,
i
#],
i
}
Eles permitem gerar formas sentenciais dos formatos seguintes:
(a) [B, < q
0
B#], ou
(b) [
i
, < q
0

i
#], ou
(c) [
i
, < q
0

i
][
j
,
j
][
k
,
k
]...[
u
,
u
#]
Em todos os casos, o smbolo # usado para delimitar, nas formas sentenciais
geradas pela gramtica, o trmino da cadeia gravada sobre a ta de trabalho de M.
O smbolo # pode ser deslocado direita, e neste caso smbolos B so adicio-
nados ao nal da cadeia de entrada. A cadeia de entrada vazia representada pela
forma sentencial do tipo (a). As cadeias de entrada no-vazias so representadas
pelas formas dos tipos (b) (cadeia unitria) e (c) (cadeia de comprimento maior
ou igual a dois).
Assim como na demonstrao do Teorema 5.3, essas formas sentenciais devem ser
interpretadas como a representao de duas componentes:
[
i
, ...][
j
, ...][
k
, ...]...[
u
, ...] =
i

k
...
u
, correspondente cadeia de en-
trada que se pretende vericar em M;
e
358 Linguagens Formais - Teoria, Modelagem e Implementao
[..., < q
0

i
][...,
j
][...,
k
]...[...,
u
#] =< q
0

k
...
u
#, correspondente
congurao inicial de M com a cadeia de entrada acima.
Um conjunto adicional de regras de P especicado, com a nalidade de garantir
que, qualquer que seja a movimentao efetuada por M, a partir de uma con-
gurao qualquer, haja sempre uma possibilidade correspondente de derivao em
G.
As transies de M enquadram-se em trs casos:
Caso (i): (q
i
, <) = (q
j
, <, D)
Caso (ii): (q
i
,
m
) = (q
j
,
n
, D)
Caso (iii): (q
i
,
m
) = (q
j
,
n
, E)
O conjunto das produes de G que so capazes de promover tais derivaes ,
naturalmente, obtido a partir da especicao da funo . Deve-se, portanto,
considerar cada um dos trs casos indicados. A partir de cada um deles, novas
produes so formuladas e, a partir destas, novos smbolos no-teminais so acres-
centados gramtica. Observe-se que nos casos (ii) e (iii) as transies so feitas
com smbolos do alfabeto , ou seja,
m
,
n
, o que inclui no apenas os smbo-
los originalmente empregados na composio da cadeia de entrada, mas tambm
smbolos gravados por M na ta de trabalho durante o seu prprio processamento.
Caso (i): (q
i
, <) = (q
j
, <, D)
IV. P P {[
m
, q
i
<
m
] [
m
, < q
j

m
],
m
}
N N {[
m
, q
i
<
m
],
m
}
N N {[
m
, < q
j

m
],
m
}
Caso (ii): (q
i
,
m
) = (q
j
,
n
, D)
O smbolo corrente (
m
) pode ser:
o primeiro da cadeia de entrada:
cadeia unitria: VIII;
cadeia de comprimento dois: IX;
cadeia de comprimento maior que dois: X;
o ltimo da cadeia de entrada:
cadeia unitria: VIII;
cadeia no-unitria: XI;
7 Linguagens Recursivamente Enumerveis 359
o penltimo da cadeia de entrada:
cadeia de comprimento dois: IX;
cadeia de comprimento maior que dois: XII;
ou ainda estar em qualquer posio diferente destas:
XIII;
VIII. P P {[
p
, < q
i

m
#] [
p
, <
n
][B, q
j
B#],
p
}
N N {[
p
, < q
i

m
#],
p
}
N N {[
p
, <
n
],
p
}
N N {[B, q
j
B#]}
IX. P P {[
p
, < q
i

m
][
q
,
r
#] [
p
, <
n
][
q
, q
j

r
#],

p
,
q
,
r
}
N N {[
p
, < q
i

m
],
p
}
N N {[
q
,
r
#],
q
,
r
}
N N {[
p
, <
n
],
p
}
N N {[
q
, q
j

r
#],
q
,
r
}
X. P P {[
p
, < q
i

m
][
q
,
r
] [
p
, <
n
][
q
, q
j

r
],

p
,
q
,
r
}
N N {[
p
, < q
i

m
],
p
}
N N {[
q
,
r
],
q
,
r
}
N N {[
p
, <
n
],
p
}
N N {[
q
, q
j

r
],
q
,
r
}
XI. P P {[
p
, q
i

m
#] [
p
,
n
][B, q
j
B#],
p
}
N N {[
p
, q
i

m
#],
p
}
N N {[
p
,
n
],
p
}
N N {[B, q
j
B#]}
XII. P P {[
p
, q
i

m
][
q
,
r
#] [
p
,
n
][
q
, q
j

r
#],

p
,
q
,
r
}
N N {[
p
, q
i

m
],
p
}
N N {[
q
,
r
#],
q
,
r
}
N N {[
p
,
n
],
p
}
N N {[
q
, q
j

r
#],
q
,
r
}
XIII. P P {[
p
, q
i

m
][
q
,
r
] [
p
,
n
][
q
, q
j

r
],

p
,
q
,
r
}
N N {[
p
, q
i

m
],
p
}
N N {[
q
,
r
],
q
,
r
}
N N {[
p
,
n
],
p
}
N N {[
q
, q
j

r
],
q
,
r
}
Caso (iii): (q
i
,
m
) = (q
j
,
n
, E)
360 Linguagens Formais - Teoria, Modelagem e Implementao
O smbolo corrente (
m
) pode:
ser o primeiro da cadeia de entrada:
cadeia unitria: XIV;
cadeia no-unitria: XV;
ser o ltimo da cadeia de entrada:
cadeia unitria: XIV;
cadeia de comprimento dois: XVI;
cadeia de comprimento maior que dois: XVII;
ser o segundo da cadeia de entrada:
cadeia de comprimento dois: XVI;
cadeia de comprimento maior que dois: XVIII;
estar em qualquer posio diferente destas:
XIX;
XIV. P P {[
p
, < q
i

m
#] [
p
, q
j
<
n
#],
p
}
N N {[
p
, < q
i

m
#],
p
}
N N {[
p
, q
j
<
n
#],
p
}
XV. P P {[
p
, < q
i

m
] [
p
, q
j
<
n
],
p
}
N N {[
p
, < q
i

m
],
p
}
N N {[
p
, q
j
<
n
],
p
}
XVI. P P {[
p
, <
q
][
r
, q
i

m
#] [
p
, < q
j

q
][
r
,
n
#],
p
,
q
,
r
}
N N {[
p
, <
q
],
p
,
q
}
N N {[
r
, q
i

m
#],
r
}
N N {[
p
, < q
j

q
],
p
,
q
}
N N {[
r
,
n
#],
r
}
XVII. P P {[
p
,
q
][
r
, q
i

m
#] [
p
, q
j

q
][
r
,
n
#],
p
,
q
,
r
}
N N {[
p
,
q
],
p
,
q
}
N N {[
r
, q
i

m
#],
r
}
N N {[
p
, q
j

q
],
p
,
q
}
N N {[
r
,
n
#],
r
}
XVIII. P P {[
p
, <
q
][
r
, q
i

m
] [
p
, < q
j

q
][
r
,
n
],
p
,
q
,
r
}
N N {[
p
, <
q
],
p
,
q
}
7 Linguagens Recursivamente Enumerveis 361
N N {[
r
, q
i

m
],
r
}
N N {[
p
, < q
j

q
],
p
,
q
}
N N {[
r
,
n
],
r
}
XIX. P P {[
p
,
q
][
r
, q
i

m
] [
p
, q
j

q
][
r
,
n
],
p
,
q
,
r
}
N N {[
p
,
q
],
p
,
q
}
N N {[
r
, q
i

m
],
r
}
N N {[
p
, q
j

q
],
p
,
q
}
N N {[
r
,
n
],
r
}
A operao de M cessa ao ser atingida uma congurao para a qual no exista
movimentao possvel, ou seja, quando (q
i
,
m
) = . Nesta situao, se q
i
F,
diz-se que M aceita a cadeia de entrada.
Condio semelhante deve ser alcanada atravs de G. Suponha-se que, quando
o autmato pra de se movimentar, a congurao seja (, q
i

m
). A forma
sentencial equivalente em G ser [...][...]...[
n
, q
i

m
][...].
Se, nesta situao, q
i
F e (q
i
,
m
) = , ento as seguintes regras devem ser
adicionadas gramtica G:
Caso (iv): q
i
F e (q
i
, <) =
XX. P P {[
p
, q
i
<
q
]
p
,
p
( {B}),
q
}
N N {[
p
, q
i
<
q
],
p
( {B}),
q
}
XXI. P P {[
p
, q
i
<
q
#]
p
#,
p
( {B}),
q
}
N N {[
p
, q
i
<
q
#],
p
( {B}),
q
}
Caso (v): q
i
F e (q
i
,
m
) =
XXII. P P {[
p
, < q
i

m
]
p
,
p
( {B})}
N N {[
p
, < q
i

m
],
p
( {B})}
XXIII. P P {[
p
, < q
i

m
#]
p
#,
p
( {B})}
N N {[
p
, < q
i

m
],
p
( {B})}
XXIV. P P {[
p
, q
i

m
#]
p
#,
p
( {B})}
N N {[
p
, q
i

m
],
p
( {B})}
XXV. P P {[
p
, q
i

m
]
p
,
p
( {B})}
N N {[
p
, q
i

m
],
p
( {B})}
Essas produes do incio ao processo de converso da cadeia armazenada no
lado esquerdo dos no-terminais e at ento intocada em uma sentena a
ser efetivamente gerada por G. A forma sentencial inicial obtida atravs da
derivao [...] [...] ... [
n
, q
i

m
] [...] [...] [...] ...
n
[...], se q
i
F e (q
i
,
m
) = .
Cumpre notar, caso a congurao nal de M seja atingida em uma situao que
corresponda, em G, aplicao de alguma das produes geradas em XXI, XXIII
e XXIV, que o smbolo #, originalmente gravado dentro de algum no-terminal
362 Linguagens Formais - Teoria, Modelagem e Implementao
de gramtica (isto , delimitado pelos smbolos [ e ]), transposto para fora
do mesmo (sendo que, neste caso, os delimitadores [ e ], e conseqentemente o
prprio no-terminal, deixam de existir), passando a indicar o trmino da cadeia
de entrada.
A partir deste ponto, devem ser acrescentadas produes em P de tal modo que os
no-terminais remanescentes na forma sentencial gerada por G sejam todos subs-
titudos por smbolos terminais, conforme o valor armazenado no lado esquerdo,
no interior do mesmo ([, ...]):
XXVI. P P {[
m
, ]
n

m

n
,
n
( {B}), [
m
, ] V}
XXVII. P P {
n
[
m
, w]
n

m
,
n
( {B}), [
m
, w] V, desde que
w no contenha o smbolo #}
XXVIII. P P {
n
[
m
, w]
n

m
#,
n
({B}), [
m
, w] V, desde que
w contenha o smbolo #}
Nesta situao, a forma sentencial produzida por G da forma #, onde

cadeia de entrada originalmente submetida Mquina de Turing, e {B}

representa smbolos B que foram adicionados ao nal da cadeia de entrada pelo


deslocamento para a direita do cursor de acesso ta de trabalho. A eliminao
da subcadeia # feita por intermdio das produes:
XXIX. P P {B# #}
XXX. P P {
i
#
i
,
i
}
A inspeo das produes geradas nos itens I a XXX (em particular nos itens XXIX
e XXX) permite concluir que toda e qualquer gramtica gerada por esse mtodo uma
gramtica irrestrita. Ser omitida a demonstrao formal da equivalncia das Mquinas
de Turing com as gramticas irrestritas assim construdas. Tal demonstrao pode, no
entanto, ser encontrada em [52].
Exemplo 7.7 Seja M tal que:
= {x, y, z}
= {x, y, z, X, Y, Z, B}
{(q0, x) (q1, X, D), (q1, y) (q2, Y, D), (q2, z) (q3, Z, D),
(q3, B) (q4, x, D), (q4, B) (q5, B, D), (q5, B) (q6, y, D),
(q6, B) (q7, B, D), (q7, B) (q8, z, D), (q8, B) (q9, B, E),
(q9, z) (q10, z, E)}
(q10, B) =
{q10} F
A seqncia de movimentos abaixo ilustra a aceitao da cadeia xyz por M:
(<, q0xyz) (< X, q1yz) (< XY, q2z) (< XYZ, q3B)
(< XYZx, q4B) (< XYZxB, q5B) (< XYZxBy, q6B) (< XYZxByB, q7B)
(< XYZxByBz, q8B) (< XYZxByB, q9zB) (< XYZxBy, q10BzB)
7 Linguagens Recursivamente Enumerveis 363
A seqncia de derivaes abaixo mostra as formas sentenciais geradas por uma gramtica
irrestrita G, correspondentes aos movimentos de M acima. As produes e os smbolos no-terminais
utilizados foram derivados diretamente da especicao de M, conforme o Algoritmo 7.5. Note-se
que S

xyz, e portanto xyz L(G).


S
[x, < q0x]A
[x, < q0x][y, y]A
[x, < q0x][y, y][z, z#]
[x, < X][y, q1y][z, z#]
[x, < X][y, Y][z, q2z#]
[x, < X][y, Y][z, Z][B, q3B#]
[x, < X][y, Y][z, Z][B, x][B, q4B#]
[x, < X][y, Y][z, Z][B, x][B, B][B, q5B#]
[x, < X][y, Y][z, Z][B, x][B, B][B, y][B, q6B#]
[x, < X][y, Y][z, Z][B, x][B, B][B, y][B, B][B, q7B#]
[x, < X][y, Y][z, Z][B, x][B, B][B, y][B, B][B, z][B, q8B#]
[x, < X][y, Y][z, Z][B, x][B, B][B, y][B, B][B, q9z][B, B#]
[x, < X][y, Y][z, Z][B, x][B, B][B, y][B, q10B][B, z][B, B#]
[x, < X][y, Y][z, Z][B, x][B, B][B, y]B[B, z][B, B#]
[x, < X][y, Y][z, Z][B, x][B, B]BB[B, z][B, B#]
[x, < X][y, Y][z, Z][B, x][B, B]BBB[B, B#]
[x, < X][y, Y][z, Z][B, x]BBBB[B, B#]
[x, < X][y, Y][z, Z][B, x]BBBBB#
[x, < X][y, Y][z, Z]BBBBBB#
[x, < X][y, Y]zBBBBBB#
[x, < X]yzBBBBBB#
xyzBBBBBB#
xyzBBBBB#
xyzBBBB#
xyzBBB#
xyzBB#
xyzB#
xyz#
xyz
2
7.6 Relao entre Linguagens Recursivamente Enumerveis
e Linguagens Recursivas
Os dois teoremas seguintes estabelecem a relao de incluso prpria que existe entre as
linguagens recursivas e as recursivamente enumerveis.
Teorema 7.6 (Recursivas recursivamente enumerveis) Toda linguagem recur-
siva tambm uma linguagem recursivamente enumervel.
Justicativa As classes de linguagens recursivas e recursivamente enumerveis foram
denidas como sendo aquelas cujas linguagens so aceitas por pelo menos uma Mquina
364 Linguagens Formais - Teoria, Modelagem e Implementao
de Turing. As linguagens recursivas, em particular, alm de serem aceitas, so tambm
decididas por pelo menos uma Mquina de Turing, o que no sempre verdade para as
linguagens estritamente recursivamente enumerveis.
Portanto, toda Mquina de Turing que decide uma linguagem tambm aceita a
mesma linguagem. No entanto, linguagens aceitas por uma Mquina de Turing podem
no ser decidveis por nenhuma Mquina de Turing. O critrio de deciso mais forte
do que o de aceitao. Logo, toda linguagem recursiva tambm recursivamente enume-
rvel.
Teorema 7.7 (Recursivas = recursivamente enumerveis) A classe das lingua-
gens recursivas constitui subconjunto prprio da classe das linguagens recursivamente
enumerveis.
Justicativa A linguagem L
U
, conforme demonstrado anteriormente no Teorema 6.4,
uma linguagem no-recursiva. A demonstrao de que L
U
uma linguagem recursiva-
mente enumervel, feita a seguir, basta para provar que a classe das linguagens recursivas
constitui subconjunto prprio da classe das linguagens recursivamente enumerveis.
L
U
= {C(M)w

| w L(M)}
onde
C(M) a codicao de uma Mquina de Turing com ta limitada, cujo alfabeto
de entrada , como cadeia sobre o prprio alfabeto ;
w

uma cadeia de entrada qualquer de M;


Para provar que L
U
recursivamente enumervel, basta mostrar que L
U
aceita
por uma Mquina de Turing N, a qual pode ser obtida conforme o Algoritmo 7.6.
Algoritmo 7.6 (Mquina de Turing para L
U
) Obteno de uma Mquina de Turing
que aceita a linguagem no-recursiva L
U
.
Entrada: a linguagem L
U
;
Sada: uma Mquina de Turing N que aceita L
U
;
Mtodo:
1. N simula a operao da Mquina M no processamento da cadeia de entrada
w, onde C(M)w a cadeia de entrada de N. N possui duas tas: na
primeira gravada a cadeia = C(M)w que se pretende analisar; a segunda
usada como rea de trabalho de N, e servir para guardar, em cada
instante, o estado corrente de M;
2. Trs possibilidades podem acontecer durante o processamento de N:
M aceita w. Neste caso, N dever encerrar sua operao aceitando
C(M)w;
M rejeita w. Neste caso, N dever encerrar sua operao rejeitando
C(M)w;
7 Linguagens Recursivamente Enumerveis 365
M inicia uma seqncia inndvel de movimentaes com w. Neste
caso, N inevitavelmente tambm iniciar, correspondentemente, com
C(M)w, uma seqncia interminvel de movimentaes.
Assim, fcil perceber que todas as cadeias que representam pares (M, w), em
que w L(M), sero tambm aceitas por N. J as cadeias que representam pares
(M, w), em que w L(M), faro com que N as rejeite ou inicie uma seqncia innita
de movimentaes. Portanto, L
U
uma linguagem recursivamente enumervel.
Tambm a linguagem L
K
= {w
i
| w
i
L(M
i
)}, denida e estudada no Teorema
6.5, constitui exemplo de linguagem recursivamente enumervel, porm no-recursiva.
Esta linguagem aceita pela Mquina de Turing M, construda de acordo com o
Algoritmo 7.7.
Algoritmo 7.7 (Mquina de Turing para L
K
) Obteno de uma Mquina de Tu-
ring que aceita a linguagem no-recursiva L
K
.
Entrada: a linguagem L
K
;
Sada: uma Mquina de Turing N que aceita L
K
;
Mtodo:
1. A ta de entrada de N contm, originalmente, a cadeia w

a ser
analisada;
2. i 0;
3. N gera a cadeia
i
;
4. Para cada cadeia
i
gerada, N compara
i
com w;
5. Se
i
for igual a w, ento:
a) N constri a Mquina de Turing M
i
correspondente cadeia
i
e
armazena C(M
i
) na ta de trabalho;
b) N simula M
i
com a entrada
i
;
c) Se M
i
aceita
i
, ento N aceita w;
6. i i + 1;
7. Desviar para (3).
N gera, uma por uma, porm uma de cada vez, todas as cadeias
i

, ordenadas
lexicogracamente. Uma vez identicado o valor de i para a cadeia de entrada fornecida
(o que acontece aps um tempo nito de processamento), N gera M
i
e verica se M
i
aceita
i
. N aceita a cadeia de entrada w se e apenas se
i
(w) for aceita por M
i
. Logo,
L
K
recursivamente enumervel.
366 Linguagens Formais - Teoria, Modelagem e Implementao
7.7 Linguagens que no so Recursivamente Enumerveis
A classe das linguagens recursivamente enumerveis no corresponde, como se poderia
supor, ao conjunto mais abrangente de linguagens que pode ser construdo sobre um
alfabeto nito qualquer.
Conforme ser demonstrado a seguir, existem inmeras linguagens para as quais
no possvel denir Mquinas de Turing que as aceitem ou gramticas que as gerem.
O conjunto das linguagens recursivamente enumerveis , na verdade, um subconjunto
prprio e de cardinalidade inferior ao conjunto de todas as linguagens que podem ser
denidas sobre um alfabeto nito, qualquer que seja ele. Pelos mesmos motivos, verica-
se que esta nova e mais abrangente classe de linguagens constituda por linguagens que
no possuem formalizao gramatical ([56]).
O conjunto das linguagens formadas sobre alfabetos e que no possuem gramticas
(e conseqentemente Mquinas Turing) correspondentes ser denominado de classe das
linguagens no-gramaticais ou no-recursivamente enumerveis. A Figura 7.1
ilustra essas relaes:
Figura 7.1: Linguagens gramaticais e no-gramaticais
Na seqncia demonstrada a existncia de linguagens no-gramaticais. Antes,
porm, necessrio demonstrar os Teoremas auxiliares 7.8, 7.9 e 7.10.
Teorema 7.8 (Mquinas de Turing so enumerveis) O conjunto C
1
= {M | M
uma Mquina de Turing e L(M)

} enumervel. C
1
corresponde ao conjunto de
todas as Mquinas de Turing denveis sobre um certo alfabeto .
Justicativa Uma Mquina de Turing representada atravs de uma cadeia de smbolos
de comprimento nito. O alfabeto utilizado pode ser amplo, como, por exemplo:
{a, b, c, ...z, 0, 1, 2...9, (, ), {, }, , ...}
utilizado na maioria das representaes algbricas construdas at o momento, ou, ainda,
um alfabeto restrito, como, por exemplo, o alfabeto:
{a, b, c}
empregado na demonstrao do Teorema 6.4.
7 Linguagens Recursivamente Enumerveis 367
Qualquer que seja o alfabeto nito utilizado, sabe-se que o conjunto

enu-
mervel. Uma maneira fcil de perceber isso considerar a ordenao lexicogrca das
cadeias geradas sobre , conforme foi feito na demonstrao do Teorema 7.2. Para gerar
tal ordenao, suciente convencionar uma relao de ordem entre os elementos de .
O estabelecimento de uma bijeo entre o conjunto dos nmeros naturais N e o conjunto

imediato. Logo,

enumervel.
Por outro lado, nem toda cadeia sobre representa uma Mquina de Turing vlida.
O conjunto que interessa a este estudo , portanto, um subconjunto de

. Conforme o
Teorema 1.4, qualquer subconjunto de um conjunto enumervel tambm enumervel.
Logo, C
1
um conjunto enumervel.
Teorema 7.9 (Gramticas so enumerveis) O conjunto C
2
= {G | G uma gra-
mtica e L(G)

} enumervel. C
2
corresponde ao conjunto de todas as gramticas
denveis sobre um certo alfabeto .
Justicativa A demonstrao feita de maneira anloga do Teorema 7.8
Teorema 7.10 (O conjunto de todas as linguagens no enumervel) O con-
junto C
3
= 2

no enumervel. C
3
corresponde ao conjunto de todas as linguagens
denveis sobre um certo alfabeto .
Justicativa O Teorema 1.3 garante que, para qualquer conjunto A, nito ou innito, a
cardinalidade de A sempre inferior cardinalidade de 2
A
. Logo, a cardinalidade de

menor do que a cardinalidade de 2

.
A demonstrao da existncia de linguagens no-gramaticais, e portanto da relao
de incluso prpria da classe das linguagens recursivamente enumerveis com a classe
das linguagens formadas sobre alfabetos, feita a seguir.
Teorema 7.11 (Linguagens no-recursivamente enumerveis) Existem linguagens
que no so recursivamente enumerveis.
Justicativa Como a cardinalidade de C
3
maior do que a cardinalidade de C
1
e de
C
2
, que por sua vez possuem a mesma cardinalidade, fcil perceber que no existe
relao um-para-um (funo bijetora) entre os elementos desses conjuntos (C
1
C
3
ou
C
2
C
3
). Portanto, existem inmeras linguagens para as quais no h Mquina de
Turing nem gramtica irrestrita correspondente, e portanto o conjunto das linguagens
recursivamente enumerveis constitui subconjunto prprio do conjunto de todas as lin-
guagens que podem ser denidas sobre um dado alfabeto. A correspondncia entre as
gramticas irrestritas e as Mquinas de Turing foi estabelecida nos Teoremas 7.4 e 7.5.
Assim, o conjunto das linguagens no-gramaticais possui cardinalidade maior do
que a cardinalidade do conjunto das linguagens recursivamente enumerveis. Apesar de
ambos os conjuntos serem innitos, isto indica a existncia de uma quantidade muito
maior (no-enumervel) de linguagens no-gramaticais do que de linguagens formaliz-
veis atravs de gramticas (enumervel), conforme pode ser inferido a partir do que foi
demonstrado no Teorema 1.7.
O Teorema 7.10 estabelece a existncia de linguagens no-gramaticais. Um exem-
plo importante de linguagem que no recursivamente enumervel, e portanto no-
gramatical, a linguagem:
L
N
= L
U
= {C(M)w

| w L(M)}
368 Linguagens Formais - Teoria, Modelagem e Implementao
A linguagem L
D
compreende o conjunto das cadeias C(M)w tais que w representa
uma cadeia que no aceita pela Mquina de Turing M, e corresponde ao complemento
da linguagem L
U
introduzida no Teorema 6.4 e posteriormente discutida no Teorema
7.7. A demonstrao dessa armao feita no Teorema 7.12.
Teorema 7.12 (L
N
no-gramatical) A linguagem L
N
no-gramatical.
Justicativa Suponha-se que L
N
seja uma linguagem recursivamente enumervel. Ento,
deve necessariamente existir pelo menos uma Mquina de Turing M
N
que aceite L
N
.
Portanto, L(M
N
) = L
N
.
Como certamente existe pelo menos uma Mquina de Turing que aceita pelo menos
uma cadeia, ento L
N
=

e, conseqentemente, L(M
N
) =

. Logo, fato que existe


pelo menos uma cadeia w
N
L(M
N
).
Por outro lado, a cadeia C(M
N
)w
N
deve pertencer a L
N
, por denio desta ltima.
Deve-se, agora, considerar as seguintes duas nicas possibilidades para a cadeia
C(M
N
)w
N
, no que se refere a M
N
:
1. C(M
N
)w
N
L(M
N
), ou
2. C(M
N
)w
N
L(M
N
).
Se a condio (1) for verdadeira, ento C(M
N
)w
N
L
N
, ou seja, C(M
N
)w
N

L(M
N
), o que uma contradio com (1). Se, por outro lado, a condio (2) for ver-
dadeira, ento C(M
N
)w
N
L
N
, ou seja, C(M
N
)w
N
L(M
N
), o que tambm uma
contradio com (2).
Logo, a hiptese original no vlida e, portanto, L
N
no pode ser recursivamente
enumervel.
Outra linguagem clssica, que no recursivamente enumervel, a linguagem:
L
D
= L
K
= {w
i
| w
i
M
i
}
Assim como a linguagem L
K
discutida no Teorema 6.5, ela supe uma certa orde-
nao (por exemplo, lexicogrca) das cadeias w
i
sobre um certo alfabeto , e tambm
do conjunto das Mquinas de Turing sobre o mesmo alfabeto. Diferentemente de L
K
, no
entanto, ela compreende as cadeias w
i
que no so aceitas pelas Mquinas de Turing M
i
correspondentes.
Teorema 7.13 (L
D
no-gramatical) A linguagem L
D
no-gramatical.
Justicativa Suponha-se que L
D
seja uma linguagem recursivamente enumervel. Ento,
deve existir necessariamente pelo menos uma Mquina de Turing M
D
que aceite L
D
, ou
seja, L(M
D
) = L
D
.
Considere-se a cadeia w
D
correspondente. Uma das duas seguintes situaes deve
necessariamente ser verdadeira:
1. w
D
L(M
D
), ou
2. w
D
L(M
D
).
Se a condio (1) for verdadeira, isso signica que w
D
L
D
. Mas, como L
D
=
L(M
D
), isso implica w
D
L(M
D
), uma contradio com (1). Se a condio (2) for
7 Linguagens Recursivamente Enumerveis 369
verdadeira, por outro lado, ento w
D
L
D
. Mas como L
D
= L(M
D
), isso implica
w
D
L(M
D
), uma contradio com (2).
Como a contradio acontece em ambos os casos, conclui-se que a hiptese inicial
falsa e, portanto, que L
D
no pode ser gramatical.
7.8 Propriedades de Fechamento
A seguir sero demonstradas algumas das propriedades de fechamento mais importantes
das linguagens recursivamente enumerveis. Esta classe de linguagens fechada em
relao s operaes de:
Unio
Concatenao
Fecho de Kleene
Interseco
As correspondentes demonstraes sero apresentadas a seguir. As linguagens re-
cursivamente enumerveis, no entanto, no so fechadas em relao operao de:
Complementao
resultado este que ser demonstrado na seqncia.
Teorema 7.14 (Fecho na unio) As linguagens recursivamente enumerveis so fe-
chadas em relao operao de unio.
Justicativa Sejam L
1
e L
2
duas linguagens recursivamente enumerveis quaisquer. En-
to, L
1
aceita por uma Mquina de Turing M
1
e L
2
aceita por uma Mquina de
Turing M
2
. A linguagem L
3
= L
1
L
2
aceita por M
3
, construda conforme o Algoritmo
7.8.
Algoritmo 7.8 (Fecho na unio) Construo de uma Mquina de Turing que aceita
a unio de duas linguagens recursivamente enumerveis a partir das Mquinas de Turing
que as aceitam.
Entrada: duas Mquinas de Turing M
1
e M
2
;
Sada: uma Mquina de Turing M
3
que aceita L(M
1
) L(M
2
);
Mtodo:
1. M
3
possui duas tas de entrada;
2. Uma cadeia w gravada na primeira ta;
3. M
3
copia w da primeira para a segunda ta;
4. M
3
simula M
1
e M
2
simultaneamente, utilizando ambas as tas de entrada
e executando, alternadamente, movimentos de M
1
e de M
2
;
370 Linguagens Formais - Teoria, Modelagem e Implementao
5. Se M
1
aceita w, ento M
3
pra e aceita w;
6. Se M
2
aceita w, ento M
3
pra e aceita w.
M
3
aceita w se e somente se w L
1
ou w L
2
. Logo, L
3
uma linguagem
recursivamente enumervel.
Teorema 7.15 (Fecho na concatenao) As linguagens recursivamente enumerveis
so fechadas em relao operao de concatenao.
Justicativa Sejam L
1
e L
2
duas linguagens recursivamente enumerveis quaisquer. En-
to, L
1
aceita por uma Mquina de Turing M
1
e L
2
aceita por uma Mquina de
Turing M
2
. A linguagem L
3
= L
1
L
2
aceita por M
3
, construda conforme o Algoritmo
7.9.
Algoritmo 7.9 (Fecho na concatenao) Construo de uma Mquina de Turing que
aceita a concatenao de duas linguagens recursivamente enumerveis a partir das M-
quinas de Turing que as aceitam.
Entrada: duas Mquinas de Turing M
1
e M
2
;
Sada: uma Mquina de Turing M
3
que aceita L(M
1
)L(M
2
);
Mtodo:
1. M
3
inicialmente simula M
1
com uma cadeia de entrada w, w = ;
2. Se M
1
aceita um prexo de w, ento M
3
simula M
2
com o suxo ;
3. Se M
2
aceita , ento M
3
pra e aceita a cadeia w.
M
3
aceita w se e somente se L
1
e L
2
. Logo, L
3
uma linguagem recursi-
vamente enumervel.
Teorema 7.16 (Fecho no fecho) As linguagens recursivamente enumerveis so fe-
chadas em relao operao de fecho de Kleene.
Justicativa Seja L
1
uma linguagem recursivamente enumervel qualquer. Ento, L
1
ge-
rada por uma gramtica irrestrita G
1
= (V
1
, , P
1
, S
1
). A gramtica G
2
= (V
2
, , P
2
, S
2
),
apresentada a seguir, e construda a partir de G
1
conforme o Algoritmo 7.10, gera a lin-
guagem L

1
.
Algoritmo 7.10 (Fecho no fecho) Construo de uma gramtica irrestrita que gera o
fecho de Kleene de uma linguagem denida atravs de uma gramtica irrestrita.
Entrada: uma gramtica irrestrita G
1
;
Sada: uma gramtica irrestrita G
2
tal que L(G
2
) = L(G
1
)

;
7 Linguagens Recursivamente Enumerveis 371
Mtodo:
1. V
2
V
1
{S
2
}
2. P
2
P
1
{S
2
S
1
S
2
, S
2
}
Como G
2
tambm uma gramtica irrestrita, ento L(G
2
) = L

1
recursivamente
enumervel.
Teorema 7.17 (Fecho na interseco) As linguagens recursivamente enumerveis
so fechadas em relao operao de interseco.
Justicativa Sejam L
1
e L
2
duas linguagens recursivamente enumerveis quaisquer. En-
to, L
1
aceita por uma Mquina de Turing M
1
e L
2
aceita por uma Mquina de
Turing M
2
. A linguagem L
3
= L
1
L
2
aceita por M
3
, construda conforme o Algoritmo
7.11.
Algoritmo 7.11 (Fecho na interseco) Construo de uma Mquina de Turing que
aceita a interseco de duas linguagens recursivamente enumerveis a partir das Mqui-
nas de Turing que as aceitam.
Entrada: duas Mquinas de Turing M
1
e M
2
;
Sada: uma Mquina de Turing M
3
que aceita L(M
1
) L(M
2
);
Mtodo:
1. M
3
possui duas tas de entrada;
2. Uma cadeia w gravada na primeira ta;
3. M
3
copia w da primeira para a segunda ta;
4. M
3
simula M
1
, utilizando a primeira ta;
5. Se M
1
aceita w, ento M
3
simula M
2
com a segunda ta;
6. Se M
2
aceita w, ento M
3
pra e aceita w.
M
3
aceita w se e somente se w L
1
L
2
. Logo, L
3
uma linguagem recursivamente
enumervel.
Teorema 7.18 (Fecho na complementao) As linguagens recursivamente enume-
rveis no so fechadas em relao operao de complementao.
Justicativa suciente mostrar que existe pelo menos uma linguagem recursivamente
enumervel cujo complemento no recursivamente enumervel.
A linguagem L
U
= {C(M)w

| w L(M)}, conforme demonstrado nos Teore-


mas 6.4 e 7.7, um exemplo de linguagem recursivamente enumervel, no-recursiva. Seu
372 Linguagens Formais - Teoria, Modelagem e Implementao
complemento, no entanto (a linguagem L
N
= {C(M)w

| w L(M)}), conforme
demonstrado no Teorema 7.11, uma linguagem no-gramatical.
Logo, a classe das linguagens recursivamente enumerveis no fechada em relao
operao de complementao.
Apesar de a classe das linguagens recursivamente enumerveis no ser fechada em
relao operao de complementao, um outro resultado interessante e bastante til
na demonstrao de certos teoremas, envolvendo tanto a classe das linguagens recursivas
quanto a prpria classe das linguagens recursivamente enumerveis, ser demonstrado a
seguir.
Teorema 7.19 (Recursivamente enumerveis e seu complemento) Se uma lin-
guagem e tambm seu complemento forem recursivamente enumerveis, ento ambas as
linguagens, alm de serem recursivamente enumerveis, so tambm recursivas.
Justicativa Sejam L
1
e L
2
=

L
1
duas linguagens recursivamente enumerveis
sobre o alfabeto . Ento, existem Mquinas de Turing M
1
e M
2
que aceitam, respec-
tivamente, L
1
e L
2
. Constri-se uma Mquina de Turing M
3
que decide L
1
, conforme o
Algoritmo 7.12.
Algoritmo 7.12 (Recursivamente enumerveis e seu complemento) Construo
de uma Mquina de Turing que decide L
1
a partir das Mquinas de Turing que aceitam
L
1
e seu complemento.
Entrada: duas Mquinas de Turing M
1
e M
2
, tais que L(M
2
) = L(M
1
);
Sada: uma Mquina de Turing M
3
que decide L(M
1
);
Mtodo:
1. M
3
possui duas tas de trabalho;
2. Uma cadeia w gravada na primeira ta;
3. M
3
copia w da primeira para a segunda ta;
4. M
3
simula M
1
e M
2
simultaneamente, utilizando ambas as tas de trabalho
e executando, alternadamente, movimentos em M
1
e M
2
;
5. Se M
1
aceita w, ento M
3
pra e aceita w;
6. Se M
2
aceita w, ento M
3
pra e rejeita w.
Qualquer que seja a cadeia de entrada w

, certo que, aps um nmero nito


de movimentaes, ou M
1
ou M
2
, de maneira exclusiva, aceitar w. Se w for aceita por
M
1
, ento ser aceita por M
3
. Se w for aceita por M
2
, ento ser rejeitada por M
3
.
Logo, M
3
aceita w se e somente se w L
1
, e rejeita w se e somente se w L
2
, ou
seja, se w L
1
. Logo, L
1
uma linguagem recursiva.
7 Linguagens Recursivamente Enumerveis 373
7.9 Questes Decidveis e No-Decidveis
Nenhum dos principais problemas de deciso mais comuns decidvel para a classe das
linguagens recursivamente enumerveis:
w L ?
L = ?
L =

?
L
1
= L
2
?
L
1
L
2
?
L
1
L
2
= ?
A demonstrao feita provando-se que, em todos os casos, as linguagens que
representam os respectivos problemas no so recursivas. As demonstraes no sero
apresentadas neste texto, mas podem ser encontradas em [46].
8 Concluses
O estudo das classes de linguagens discutidas neste livro, apresentadas em ordem cres-
cente de complexidade, e conguradas como conjuntos sucessivamente mais abrangentes,
permite que se obtenha uma viso estruturada do assunto, com especial nfase nos as-
pectos que diferenciam cada classe estudada da respectiva classe antecessora.
O presente captulo apresenta um resumo dos principais resultados registrados nos
captulos anteriores, oferecendo, assim, uma viso panormica da essncia contida em
cada um desses captulos, e tambm dos itens que fazem com que certas classes de
linguagens se assemelhem ou se diferenciem.
Por outro lado, a aplicabilidade de linguagens formais e autmatos, nos campos
prtico e terico, no se encerra em si mesma, apresentando grande relevncia para reas
que sero destacadas mais adiante neste captulo.
8.1 Uma Hierarquia de Classes de Linguagens
Este texto apresentou os principais resultados da teoria de linguagens formais e autma-
tos, seguindo estritamente uma seqncia que se iniciou com a classe de linguagens mais
restrita conhecida (a das linguagens regulares), e se encerrou com a classe de linguagens
mais ampla conhecida (a das linguagens recursivamente enumerveis), passando grada-
tivamente de uma classe mais restrita para a mais geral seguinte, dentro de uma escala
de complexidade crescente, baseada na Hierarquia de Chomsky, e procurando sempre
ampliar o horizonte do leitor, sem antecipar modelos, conceitos ou teorias relativos s
classes de linguagens mais avanadas.
A Figura 8.1 resume alguns dos principais resultados colhidos ao longo deste estudo,
1
para cada classe de linguagens considerada, e que sero brevemente revistos na seqncia.
1
N.A. indica No se aplica e ? indica que o resultado no conhecido at a presente data.
376 Linguagens Formais - Teoria, Modelagem e Implementao
Figura 8.1: Classes de linguagens e suas caractersticas princi-
pais
A partir da Hierarquia de Chomsky original (denida em [61] e [62]), foram iden-
ticadas, caracterizadas e situadas importantes classes adicionais de linguagens: a das
linguagens livres de contexto determinsticas, a das linguagens livres de contexto no-
ambguas, a das linguagens recursivas e a das linguagens no-gramaticais.
Excluindo, naturalmente, a classe das linguagens no-gramaticais, todas as demais
classes podem ser caracterizadas em termos gramaticais exceto a classe das linguagens
recursivas, cuja denio baseada unicamente no conceito de uma Mquina de Turing
que sempre pra, e no em gramticas.
Do ponto de vista do reconhecimento, trs modelos distintos, com seis variantes
importantes, foram apresentados: os autmatos nitos, os autmatos de pilha (nas ver-
ses determinstica e no-determinstica) e as Mquinas de Turing (nas verses com ta
limitada, sem limitao de ta e que sempre param, e sem limitao de ta, que podem
ou no parar). Cada um desses seis tipos de dispositivo est associado ao reconhecimento
de uma classe de linguagens prpria.
Quando a questo da equivalncia entre as verses determinstica e no-determinstica
de um mesmo modelo de reconhecedor considerada, sabe-se com certeza que apenas
os autmatos de pilha possuem verses que aceitam classes diferentes de linguagens.
Exceto a Mquina de Turing com ta limitada, para a qual ainda no se conseguiu
8 Concluses 377
demonstrar at hoje se existe ou no equivalncia entre as verses determinstica e no-
determinstica ([58]), todos os demais modelos e tipos de reconhecedor possuem verses
que so comprovadamente equivalentes quanto a esse quesito.
Finalmente, conveniente considerar as diferentes classes de linguagens do ponto
de vista exclusivo das propriedades sintticas que as distingem umas das outras
independentemente do tipo de gramticas ou reconhecedores empregados para a sua es-
pecicao. Dessa forma, pelo menos trs classes de linguagens podem ser facilmente
identicadas: a das linguagens regulares, a das linguagens livres de contexto determi-
nsticas e a das linguagens sensveis ao contexto. As demais classes de linguagens, at
o ponto em que se sabe, no exibem propriedades sintticas conhecidas que se possa
considerar como tpicas de todas as linguagens da mesma classe.
Conforme resultados demonstrados ao longo do texto, todas as classes de linguagens
consideradas constituem uma hierarquia de incluso prpria, que comea com a classe das
linguagens regulares e termina com a classe das linguagens no-gramaticais. A Figura
8.2 ilustra a referida hierarquia, incluindo exemplos de linguagens que tornam a relao
de incluso prpria em cada nvel.
Figura 8.2: Hierarquia de incluso prpria das classes de lingua-
gens, com exemplos
As Figuras 8.3 e 8.4 apresentam um resumo das principais propriedades de fecha-
mento e das principais questes de deciso consideradas para cada classe de linguagens.
Onde empregada, a letra N indica que a classe no fechada em relao a uma de-
378 Linguagens Formais - Teoria, Modelagem e Implementao
terminada propriedade ou, ainda, que a questo no decidvel para aquela classe de
linguagens.
Figura 8.3: Resumo das principais propriedades de fechamento
Figura 8.4: Resumo das principais propriedades de deciso
8.2 Decidibilidade e Complexidade
O estudo das linguagens formais e autmatos fundamental para o entendimento e o
domnio de vrias outras reas da computao, mas duas se destacam perante as demais:
Construo de processadores para linguagens de programao;
Estudo da complexidade de algoritmos.
As linguagens livres de contexto so a base para a especicao de linguagens de
programao de alto nvel, e tambm para o projeto e a implementao de seus res-
pectivos analisadores sintticos. Estes, por sua vez, so a base para a estruturao de
compiladores e interpretadores para as inmeras linguagens usadas no dia-a-dia do pro-
ssional e do leigo em computao, que as empregam extensivamente, de forma direta
ou indireta, consciente ou inconsciente. Pode-se dizer, portanto, que essa rea constitui
uma importante aplicao prtica da teoria de linguagens formais e autmatos.
Por outro lado, no campo terico, provavelmente a maior aplicao da teoria de
linguagens e autmatos recai sobre o estudo da complexidade de algoritmos. Conforme
discutido nos Captulos 6 e 7, a constatao da decibilidade de linguagens confere a
certeza da existncia de algoritmos que possam ser usados para resolver a classe de
problemas representada por tais linguagens. A constatao da indecidibilidade de uma
linguagem, por sua vez, garante a inexistncia de uma soluo geral para o problema,
quando se consideram todas as suas possveis instncias.
8 Concluses 379
A questo, no entanto, no se resume mera existncia ou inexistncia de algoritmos
para se resolver determinados problemas.
Alm da decidibilidade (tambm referida como computabilidade), deseja-se es-
tabelecer os parmetros que indiquem o grau de diculdade na busca de solues para
um certo problema. Assim, no basta um problema ser decidvel. importante tambm
que o mesmo possa ser solucionado (ou decidido) atravs de algoritmos que apresen-
tem parmetros considerados aceitveis de desempenho. Problemas decidveis, porm
cujas solues extrapolam os limites do que se considera aceitvel, denitivamente no
apresentam interesse prtico.
Assim, o estudo da complexidade de algoritmos se inicia onde o estudo da deci-
dibilidade de problemas se encerra. Uma vez analisada a decidibilidade de um certo
problema, h que se considerar os custos envolvidos na busca dessa soluo. Em funo
dessa anlise, possvel que se justiquem os esforos de busca da mesma, ou, ento, o
seu abandono.
Os custos envolvidos no estudo da complexidade de algoritmos normalmente se
referem aos custos de execuo dos mesmos, na busca das solues pretendidas. Desses,
sobressaem-se dois parmetros objetivos, facilmente mensurveis e com relao direta
nas realizaes mecanizadas efetuadas atravs de dispositivos computacionais. Trata-se
do tempo total de execuo e do volume total de memria necessrios para se chegar
soluo do problema atravs da execuo do algoritmo em questo.
comum que se estabeleam limites mximos para esses parmetros, que, vincula-
dos ao tamanho do problema que se deseja resolver normalmente representado pelo
volume de dados a ser processado, ou, mais freqentemente, pelo tamanho da cadeia de
entrada a ser processada , conguram a fronteira daquilo que se entende como critrios
de aceitao de desempenho na execuo de algoritmos.
Dessa forma, considera-se o estudo da complexidade no tempo e o estudo da
complexidade no espao para, respectivamente, designar a forma como o tempo total
de execuo de um algoritmo e o volume total de memria exigido por esse algoritmo
variam conforme o tamanho da entrada.
Reunidos sob a designao conjunta e genrica de complexidade, esses estudos so
complementares e normalmente antecedem quaisquer decises referentes alocao de
recursos para solucionar problemas considerados inicialmente apenas como decidveis. O
estudo da complexidade , portanto, uma extenso natural do estudo da computabilidade.
Para o leitor interessado em aprofundar seus conhecimentos nessa rea, recomenda-se o
estudo de [46], [51] ou ainda [48].
Referncias Bibliogrcas
Adaptatividade
[1] Adapting to Babel: adaptivity & context-sensitivity in parsing, Q. T. Jackson, Ibis
Publishing, 2006
[2] Adaptive automata for context-dependent languages, J. J. Neto, ACM SIGPLAN Notices,
v.29, n.9, 1994
[3] Adaptive automata for syntax learning, J. J. Neto and M. K. Iwai, XXIV Conferencia Latino-
americana de Informtica, Quito Ecuador, Centro Latinoamericano de Estudios en Informtica,
Ponticia Universidad Catlica del Ecuador, tomo 1, 1998
[4] Solving complex problems eciently with adaptative automata, J. J. Neto, CIAA 2000
Fifth International Conference on Implementation and Application of Automata, London, Ontario,
Canada, 2000
[5] A stochastic musical composer based on adaptive algorithms, B. A. Basseto e J. J. Neto,
Anais do XIX Congresso Nacional da Sociedade Brasileira de Computao, vol. 3, 1999
[6] Generation and recognition of formal languages by modiable grammars, B. Burshteyn,
ACM SIGPLAN Notices v.25, n.12, 1990
[7] Dynamic parsers and evolving grammars, S. Cabasino, P. S. Paolucci and G. M. Todesco,
ACM SIGPLAN Notices, v.27, n.11, 1992
[8] A survey of adaptable grammars, H. Christiansen, ACM SIGPLAN Notices, v.25, n.11, 1990
[9] Um ambiente de desenvolvimento de reconhecedores sintticos baseados em aut-
matos adaptativos, J. C. D. Pereira e J. J. Neto, II Brazilian Symposium on Programming
Languages, Campinas, SP, Brazil, 1997
[10] Self-modifying nite automata: an introduction, R. S. Rubinstein and J. N. Shutt, Infor-
mation Processing Letters, v.56, n.4, 1995
[11] Contribuio metodologia de construo de compiladores, J. J. Neto, Tese de livre-
docncia, Escola Politcnica da USP, So Paulo, 1993
[12] STAD Uma ferramenta para representao e simulao de sistemas atravs de
statecharts adaptativos, J. R. A. Jnior, Tese de doutorado, Escola Politcnica da USP, So
Paulo, 1995
[13] Um formalismo gramatical adaptativo para linguagens dependentes de contexto, M.
K. Iwai, Tese de doutorado, Escola Politcnica da USP, So Paulo, 2000
[14] Alguns aspectos de tratamento de dependncias de contexto em linguagem natural
empregando tecnologia adaptativa, M. de Moraes, Tese de doutorado, Escola Politcnica da
USP, So Paulo, 2006
382 Linguagens Formais - Teoria, Modelagem e Implementao
[15] Um estudo do processo de inferncia de gramticas regulares e livres de contexto
baseado em modelos adaptativos, I. P. Matsuno, Dissertao de mestrado, Escola Politcnica
da USP, 2006
[16] Um formalismo adaptativo com mecanismos de sincronizao para aplicaes con-
correntes, J. M. N. Santos, Dissertao de mestrado, Escola Politcnica da USP, So Paulo,
1997
[17] Mapeamento de ambientes desconhecidos por robs mveis utilizando autmatos
adaptativos, M. A. A. Sousa, Dissertao de mestrado, Escola Politcnica da USP, So Paulo,
2006
[18] Um mtodo para a construo de analisadores morfolgicos, aplicado lngua portu-
guesa, baseado em autmatos adaptativos, C. E. Menezes, Dissertao de mestrado, Escola
Politcnica da USP, So Paulo, 2000
[19] Recursive adaptable grammar, J. N. Shutt, M. S. thesis, Computer Science Department,
Worcester Polytecnic Institute, Worcester, Massachusetts, 1993
Autmatos de pilha estruturados
[20] Design of a separable transition diagram compiler, M. E. Conway, Communications of the
ACM, 6, 7, 1963
[21] A programmers view of automata, B. H. Barnes, ACM Computing Surveys, 4, 2, 1972
[22] A formalization of transition diagram systems, D. B. Lomet, Journal of the ACM, 20, 2,
1973
[23] Reconhecedores sintticos uma alternativa didtica para uso em cursos de enge-
nharia, J. J. Neto e M. E. S. Magalhes, Anais do XIV CNPD, So Paulo, 1981
Compiladores
[24] Introduo compilao, J. J. Neto, Editora LTC, 1987
[25] Compiler construction: an advanced course, Editado por F. L. Bauer e J. Eickel, Springer-
Verlag, 1976 - Segunda edio
[26] The theory and practice of compiler writing, J. P. Tremblay and P. G. Sorenson, McGraw-
Hill, 1985
[27] Crafting a compiler, C. N. Fischer and R. J. LeBlanc, Jr., Benjamin/Cummings, 1988
[28] Compilers: Principles, techniques and tools, A. V. Aho, R. Sethi and J. D. Ullman,
Addison-Wesley, 1986; Segunda edio: A. V. Aho, M. S. Lam, R. Sethi and J. D. Ullman,
2007
[29] Programming language processors in Java: Compilers and interpreters, D. A. Watt and
D. F. Brown, Prentice-Hall, 2000
Formalizao de linguagens de programao
[30] Semantics of programming languages, C. A. Gunter, Massachusetts Institute of Technology,
1992
Referncias Bibliogrcas 383
[31] The syntax and semantics of the proposed international algebraic language of the
Zurich ACM-GAMM Conference, J. W. Backus, Proc. of the International Conference on
Information Processing, UNESCO, 1959
[32] Report on the algorithmic language Algol 60, P. Naur, Communications of the ACM 3:5,
1960
[33] Revised report on the algorithmic language Algol 60, P. Naur, Communications of the
ACM 6:1, 1963
[34] Revised report on the Algorithmic Language Algol 68, A. V. Wijngaarden, Acta Informa-
tica, v.5, n.1-3, 1975
[35] What can we do about the unnecessary diversity of notation for syntactic denitions?,
N. Wirth, CACM, Vol. 20, issue 11, November 1977, pp. 822-823
[36] Extended BNF, International Standards Organization, ISO/IEC 14977, Primeira edio, 1996
Gramticas com derivaes controladas
[37] Formal languages, A. Salomaa, Academic Press, New York, 1973
[38] Grammars with regulated rewriting, J. Dassow, Em Formal languages and applications,
C. Martin-Vide, V. Mitrana e Gh. Paun, Studies in Fuzziness and Soft Computing 148, Springer-
Verlag, Berlin, 2004
[39] Regulated rewriting in formal language theory, J. Dassow, Gh. Paun, Akademie-Verlag,
Berlin e Springer-Verlag, Berlin, 1989
[40] Grammars with controlled derivations, J. Dassow, Gh. Paun, A. Salomaa. Em Handbook
of formal languages I III, G. Rozenberg, A. Salomaa, Volume II, Chapter 3, Springer-Verlag,
1997
[41] Gramticas livres de contexto adaptativas com vericao de aparncia, C. A. B. Pa-
riente, Tese de doutorado, Escola Politcnica da USP, 2004
[42] Some problems of nite representability, E. Altman, R. Banerji, Information and Control,
8, 1965
[43] Some questions of language theory, S. Abraham, International Conference on Computational
Linguistics, 1965
[44] Programmed grammars and classes of formal languages, D. J. Rosenkrantz, Journal of
the Association for Computing Machinery, 16, 1969
[45] Periodically time-variant context-free grammars, A. Salomaa, Information and Control,
17, 1970
Linguagens formais e autmatos & Teoria da computao
[46] Introduction to automata theory, languages and computation, J. E. Hopcroft and J. D.
Ullman, Addison Wesley, 1979; Segunda edio: J. E. Hopcroft, R. Motwani and J. D. Ullman,
2001; Terceira edio: 2007
[47] Formal languages and their relation to automata, J. E. Hopcroft and J. D. Ullman, Addison
Wesley, 1969
384 Linguagens Formais - Teoria, Modelagem e Implementao
[48] Languages and machines, T. A. Sudkamp, Addison Wesley, 1988; Terceira edio: 2006
[49] The theory of parsing, translation and compiling, volume 1, A. V. Aho and J. D. Ullman,
Prentice-Hall, 1972
[50] Introduction to formal language theory , M. A. Harrison, Addison Wesley, 1978
[51] Elements of the theory of computation, H. R. Lewis and C. H. Papadimitriou, Prentice-Hall,
1972; Segunda edio: 1998
[52] Introduction to languages and the theory of computation, J. C. Martin, McGraw-Hill,
1991
[53] Theory of nite automata, J. Carroll and D. Long, Prentice-Hall, 1989
[54] Mathematical foundations of programming, F. S. Beckman, Addison Wesley, 1980
[55] Introduction to formal languages, G. E. Rvsz, McGraw-Hill, 1983
[56] Discrete structures, logic and computability, J. L. Hein, Jones and Bartlett, 2002
[57] Contribution to the founding of the theory of transnite numbers, G. Cantor, Dover
Publications, 1955
[58] An introduction to formal languages and automata, P. Linz, Jones and Bartlett, 2001;
Quarta edio: 2006
[59] Handbook of theoretical computer science, vol.B: Formal models and semantics, J.
van Leeuwen, Elsevier Science Publishers, 1990
[60] Representation of events in nerve nets and nite automata, S. C. Kleene, Automata
Studies, Princeton University Press, 1956
[61] Three models for the description of language, N. Chomsky, IRE Transactions on Information
Theory 2, 1956
[62] On certain formal properties of grammar, N. Chomsky, Information and Control 2, 1959
[63] A new normal form theorem for context-free phrase structure grammars, S. A. Grei-
bach, Journal of the ACM, 12:1
[64] Nondeterministic space is closed under complementation, N. Immerman, Journal of Com-
puting 17, No.5, 1988
[65] Classes of languages and linear bounded automata, S. Y. Kuroda, Information and Control
7:2, 1964
Modelagem e UML
Ruby
[66] Programming Ruby, D. Thomas, Pragmatic Bookshelf, 2005

Potrebbero piacerti anche