Você está na página 1de 0

_______________________________________________________________________________________________________________ - 1 -

Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03




Cursos: Bacharelado em Cincia da Computao e
Bacharelado em Sistemas de Informao
Disciplinas: (1493A) Teoria da Computao e Linguagens Formais,
(4623A) Teoria da Computao e Linguagens Formais e
(1601A) Teoria da Computao
Professora: Simone das Graas Domingues Prado
e-mail: simonedp@fc.unesp.br
home-page: wwwp.fc.unesp.br/~simonedp/discipl.htm





Apostila 03
Assunto: Linguagens Livres de Contexto



Objetivos:
Estudar as linguagens livres de contexto
Estudar as gramticas livres de contexto
Estudar os autmatos com pilha



Contedo:
1. Introduo
2. Gramtica Livre de Contexto
3. rvore de derivao
4. Ambigidade
5. Simplificao de GLC
6. Formas Normais
7. Autmato com pilha
8. Propriedades das Linguagens Livres de Contexto
_______________________________________________________________________________________________________________ - 2 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

1. Introduo


Foi visto na primeira apostila (TC01.pdf) a hierarquia de Chomsky (veja a figura 1). Na segunda
(TC02.pdf) foram tratadas as linguagens regulares que so as mais simples das linguagens, sendo possvel
desenvolver algoritmos de reconhecimento ou de gerao de pouca complexidade, grande eficincia e de
fcil implementao.


Figura 1. Hierarquia de Chomsky


As Linguagens Livres de Contextos compreendem uma abordagem mais ampla do que as Linguagens
Regulares tratando, de forma apropriada, as questes de balanceamentos entre parnteses e blocos de
programas. Os seus algoritmos so simples e possuem uma boa eficincia.

Nessa Apostila sero abordadas as Linguagens Livres de Contexto a partir de dois formalismos:
Operacional ou reconhecedor uso dos autmatos com pilha (AP)
Axiomtico ou gerador gramtica livre de contexto (GLC)




2. Gramtica Livre de Contexto


Definio 1.

Uma gramtica G = (V, T, S, P) dita ser uma Gramtica Livre de Contexto (GLC) se todas as suas
produes, em P, so da forma:
A
onde A V e (V T)*.


Como A V, ento, do lado esquerdo da produo, aparece somente uma varivel. Entretanto, do lado
direito, podem aparecer quaisquer combinaes, j que (V T)*, ou seja, quaisquer combinaes
entre as variveis e os smbolos terminais.


_______________________________________________________________________________________________________________ - 3 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Exemplo 01
L
1
= { a
n
b
n
| n 0} uma LLC
com G
1
= ({S}, {a,b}, S, P) tal que
P = { S aSb
S }
Ento as cadeias { , ab, aabb, aaabbb ... } pertencem a L
1



Exemplo 02
L
2
= { ww
R
| w {a,b}*} uma LLC
com G
2
= ({S}, {a,b}, S, P) tal que
P = { S aSa
S bSb
S }
Ento as cadeias { , aa, bb, abba, aabbaa, aabbbbaa ... } pertencem a L
2


Exemplo 03
L
3
composta de expresses aritmticas contendo parnteses balanceados, um operador e dois operandos:
com G
3
= ({S}, {+, *, (, ), a}, S, P) tal que
P = { S S + S
S S * S
S ( S )
S a }
Ento as cadeias { a, a+a, a*a, (a+a), (a*a), (a+a)*a ... } pertencem a L
3




3. rvore de derivao


Definio 2

Seja uma Gramtica G = (V, T, S, P).
Uma Derivao Esquerda aquela que, em cada passo, a varivel A V, mais esquerda,
substituda.
Uma Derivao Direita aquela que, em cada passo, a varivel A V, mais direita, substituda.



Exemplo 04
Seja L = {a
n
b
m
| n m}, uma linguagem livre de contexto, com G = ({S,T,A,B}, {a,b}, S, P), onde as
produes so da forma:
S AT | TB
T aTb |
A aA | a
B bB | b
_______________________________________________________________________________________________________________ - 4 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Verifique as derivaes abaixo:

Derivao 01: S AT aAT aaT aaaTb aaab
Derivao 02: S AT AaTb Aab aAab aaab

Pela Definio02 tem-se que a Derivao 01 uma derivao esquerda e a Derivao 02 uma
derivao direita. Percebe-se que as duas derivaes so diferentes e resultam na mesma cadeia. Isso
quer dizer que a gramtica construda ambgua. Esse conceito ser mais bem formalizado adiante.

Outra forma de mostrar as derivaes atravs das rvores de derivao.

Definio 3

Para uma determinada Gramtica Livre de Contexto, G = (V, T, S, P), a representao da derivao das
cadeias na forma de rvore, denominada rvore de Derivao, como segue:
a) a raiz o smbolo inicial da gramtica, portanto S;
b) os vrtices interiores obrigatoriamente so variveis.
Se A um vrtice interior e X
1
, X
2
, ..., X
n
so os filhos de A, ento A X
1
X
2
... X
n
uma
produo da gramtica e os vrtices X
1
, X
2
, ..., X
n
so ordenados da esquerda para a direita;
c) um vrtice folha um smbolo terminal ou o smbolo (vazio).
Se a folha o smbolo vazio, ele o nico filho, ou seja, A .


Exemplo 05
L
1
= { a
n
b
n
| n 0} uma LLC, com G
1
= ({S},{a,b},S,P
1
) tal que P
1
= { S aSb, S }
Ento a cadeia aabb pertence a L
1
. A rvore de derivao dada pela figura 2.

Exemplo 06
L
2
composta de expresses aritmticas contendo parnteses balanceados, um operador e dois operandos,
com G
2
= ({S}, {+, *, (, ), a}, S, P
2
) tal que P
2
= {S S + S | S * S | ( S ) | a }
Ento a cadeia a+a*a pertence a L
2
. A rvore de derivao dada pela figura 3.











Figura 2. cadeia aabb L
1
Figura 3. cadeia a+a*a L
2



S
S
S
a b

a b
S
+
S
S S
a
a * S
a
_______________________________________________________________________________________________________________ - 5 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

4. Ambigidade


Definio 4

Uma Gramtica Livre de Contexto dita ser Gramtica Ambgua, se existe uma cadeia que possua duas
ou mais derivaes ou duas ou mais rvores de derivao.


Exemplo 07
L
1
composta de expresses aritmticas contendo parnteses balanceados, um operador e dois operandos,
com G
1
= ({S}, {+, *, (, ), a}, S, P
1
) tal que P
1
= {S S + S | S * S | ( S ) | a }
A cadeia a+a*a, pertencente a L
1
pode ter as derivaes:

S S + S a + S a + S * S a + a * S a + a * a
S S + S S + S * S S + S * a S + a * a a + a * a

e as rvores de derivao:











Ento a gramtica ambgua.



Definio 5

Uma Linguagem uma Linguagem Inerentemente Ambgua se qualquer Gramtica Livre de Contexto
que a define ambgua.

Uma Linguagem uma Linguagem No Ambgua se existir uma Gramtica Livre de Contexto, que a
define, no ambgua.







S
+
S
S S
a
a * S
a
S
*
S
S S
a
+ a S
a
_______________________________________________________________________________________________________________ - 6 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Exemplo 08 - Linguagens no ambguas.

Seja G
1
= ({S}, {a, +}, S, P
1
), tal que P
1
= { S a | S + S}
Ento se pode gerar a cadeia a + a da forma:
S S + S S + a a + a (derivao direita)
S S + S a + S a + a (derivao esquerda)
Portanto G
1
ambgua

Seja G
2
= ({S}, {a, +}, S, P
2
), tal que P
2
= { S a | a + S}
Ento se pode gerar a cadeia a + a da forma:
S a + S a + a a + a
Portanto G
2
no ambgua

Seja G
3
= ({S}, {a, +}, S, P
3
), tal que P
3
= { S a | a + a | S + S}
Ento se pode gerar a cadeia a + a da forma:
S a + a
S S + S S + a a + a (derivao direita)
S S + S a + S a + a (derivao esquerda)
Portanto G
3
ambgua

Entretanto a Linguagem, L = L(G
1
) = L(G
2
) = L(G
3
), no ambgua, j que existe uma gramtica
(G
2
) que no ambgua.


Exemplo 09 - Linguagens inerentemente ambguas.

A linguagem L = { a
n
b
m
c
m
| n 0, m 0} { a
n
b
m
c
n
| n 0, m 0} inerentemente ambgua.
Vejamos porque:
L = L
1
L
2

L
1
gerada pela Gramtica G
1
= ({S
1
, A},{a,b,c}, S
1
, P
1
), tal que P
1
= {S
1
S
1
c | A, A aAb | }
L
2
gerada pela Gramtica G
2
= ({S
2
, B},{a,b,c}, S
2
, P
2
), tal que P
2
= {S
2
aS
2
| B, B bBc | }
L gerada pela gramtica, G = ({S
1
, A, S
2
, B},{a,b,c}, S, P), tal que P = P
1
P
2
{ S S
1
| S
2
}


A gramtica G ambgua desde que a cadeia a
n
b
n
c
n
(a nica resultante da unio das duas linguagens) tem
duas derivaes distintas (uma a partir de S
1
e outra a partir de S
2
).











_______________________________________________________________________________________________________________ - 7 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

5. Simplificao de Gramticas Livres de Contexto

A simplificao acontece para a otimizao de construes de gramticas e por conseqncia na
otimizao de algoritmos e demonstrao de teoremas. A seguir sero vistas as seguintes simplificaes:
Retirada de produes vazias da forma A
Retirada de produes da forma A B que simplesmente substituem uma varivel por outra.
Retirada de variveis ou smbolos terminais no usados



5.1. Retirada de produes vazias

Considere a Gramtica Livre de Contexto G = (V, T, S, P). O algoritmo para retirada das produes vazias
composto por trs etapas, como segue:
Etapa1: Definio do conjunto de variveis que constituem produes vazias (V

)
Etapa2: Definio do conjunto de produes sem produes vazias.
Etapa3: Incluso de gerao da palavra vazia, se necessrio.


Etapa1: Conjunto de variveis que constituem produes vazias
No final dessa etapa ser construdo um conjunto de variveis que geram , ou seja, V

.

Rotina para construo de V

= {A | A };
Repita
V

= V

{ X | X X
1
... X
n
P tal que X
1
, ...., X
n
V

}
At que o cardinal de V

no aumente
Lembre-se que cardinal de um conjunto corresponde ao tamanho deste conjunto. Assim, a rotina encerra o
comando Repita ... At ... quando o conjunto V

no se alterar.


Etapa2: Conjunto de produes sem produes vazias.
A gramtica resultante dessa etapa G
1
= (V, T, S, P
1
) onde o conjunto de produes P
1
construdo pela
rotina abaixo.

Rotina para construo de P
1

P
1
= {A | }
Repita
para toda produo A P e X V

tal que =
1
X
2
e
1

2
faa
P
1
= P
1
{ A
1

2
}
At que o cardinal de P
1
no aumente


Etapa3: Incluso de gerao da palavra vazia, se necessrio.
Se a palavra vazia pertence linguagem, ento a gramtica resultante desta etapa G
2
= (V, T, S, P
2
),
com P
2
= P
1
{ S }
_______________________________________________________________________________________________________________ - 8 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Exemplo 10
Seja G = ({S, X, Y}, {a,b}, P, S) com P = {S aXa | bXb | , X a | b | Y, Y ab | }

Etapa1:
V

= {Y | Y } = { Y }
V

= {S | S } = { S, Y }
1
a
. iterao: V

= { Y } { X | X Y } = {S, Y, X}
Portanto V

= {S, X, Y}

Etapa2:
P
1
= { S aXa | bXb , X a | b | Y, Y ab }
1
a
. iterao - P
1
= { S aXa | bXb , X a | b | Y , Y ab } { S aa | bb } =
= { S aXa | bXb | aa | bb , X a | b | Y, Y ab }
2
a
. iterao - P
1
= { S aXa | bXb | aa | bb, X a | b | Y , Y ab } =
= { S aXa | bXb | aa | bb , X a | b | Y, Y ab }
Ento G
1
= (V, T, S, P
1
) onde P
1
= { S aXa | bXb | aa | bb , X a | b | Y , Y ab }

Etapa3:
P
2
= P
1
{ S }


Ento G
2
= (V, T, S, P
2
), com P
2
= { S aXa | bXb | aa | bb | , X a | b | Y , Y ab }




5.2. Retirada de produes da forma A B


Considere a Gramtica Livre de Contexto G = (V, T, S, P). O algoritmo para retirada dessas produes
composto por duas etapas, como segue:
Etapa1: Construo do fecho de cada varivel
Etapa2: Excluso das produes da forma A B.

Etapa1: construo do fecho de cada varivel
Rotina para construo dos fechos
Para toda varivel A V faa
fecho-A = {B | A B e A
+
B usando exclusivamente produes da forma X Y};

Etapa2: excluso das produes da forma A B.
A gramtica resultante dessa etapa G
1
= (V, T, P
1
, S) onde P
1
construdo como na rotina a seguir:
Rotina para gerao de P
1
P
1
= { A | V};
Para toda varivel A V e B fecho-A faa
Se B P e V
Ento P
1
= P
1
{ A };
_______________________________________________________________________________________________________________ - 9 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Exemplo 11
Considere a Gramtica obtida do exerccio 10:
G = ({S,X,Y}, {a,b}, S, P), com P

= { S aXa | bXb | aa | bb | , X a | b | Y, Y ab }

Etapa1:
Para toda varivel A V, ento S, X e Y
fecho-S =
fecho-X = {Y}
fecho-Y =

Etapa2:
P
1
= { S aXa | bXb | aa | bb | , X a | b , Y ab }
1
a
.iterao - S {S,X,Y}
fecho-S = ento (FALHA)
2
a
.iterao - X {S,X,Y} e Y fecho-X = {Y}
Como Y ab, ento X ab
Ento P
1
= {S aXa | bXb | aa | bb | , Xa|b,Yab} {X ab} =
P
1
= {S aXa | bXb | aa | bb | , Xa | b | ab, Yab}

A gramtica resultante G
1
= (V, T, P
1
, S) onde P
1
= {S aXa | bXb | aa | bb | , Xa | b | ab, Yab}



5.3. Retirada de smbolos no usados

Considere a Gramtica Livre de Contexto G = (V, T, S, P). O algoritmo para retirada dos smbolos inteis
composto por duas etapas, como segue:
Etapa1: Garantia de que qualquer varivel gera terminais.
Etapa2: Garantia de que qualquer smbolo atingvel a partir do smbolo inicial.


Etapa1: garante que qualquer varivel gera terminais. Resultado: G
1
= (V
1
, T, S, P
1
)
Ao final dessa etapa construda a Gramtica Livre de Contexto G
1
= (V
1
, T, S, P
1
) com V
1
construdo
como na rotina a seguir e P
1
possuir os mesmos elementos de P excetuando-se as produes cujas
variveis no pertencem a V
1
.

Rotina para gerao de V
1
:
V
1
= ;
Repita
V
1
= V
1
{ A | A P e (T V
1
)*}
At que o cardinal de V
1
no se altere.

Lembre-se que cardinal de um conjunto corresponde ao tamanho deste conjunto. Assim, a rotina encerra o
comando Repita ... At ... quando o conjunto V
1
no se alterar.


_______________________________________________________________________________________________________________ - 10 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Etapa2: garante que qualquer smbolo atingvel a partir do smbolo inicial.
Ao final dessa etapa construda a Gramtica Livre de Contexto G
2
= (V
2
, T
2
, S, P
2
) com V
2
construdo e
T
2
construdos como a rotina abaixo e o conjunto P
2
possuir os mesmos elementos de P
1
excetuando-se
as produes cujos smbolos no pertencem a V
2
ou T
2.


Rotina para a gerao de V
2
e T
2
:
T
2
= ;
V
2
= { S };
Repita
V
2
= V
2
{ A | X A P
1
, X V
2
};
T
2
= T
2
{ a | X a P
1
, X V
2
};
At que os cardinais de V
2
e T
2
no aumentem.


Exemplo 12
A gramtica resultante do exerccio 11 foi G = (V, T, P, S) onde
P = {S aXa | bXb | aa | bb | , Xa | b | ab, Yab}

Etapa1:
A gerao de V
1

V
1
= ;
1
a
. interao - V
1
= { S, X, Y | S aa | bb, X a | b | ab, Yab } = {S, X, Y}
Ento V
1
= {S, X, Y}
Ento P
1
= P

Etapa2:
A gerao de V
2
e T
2

T
2
= ;
V
2
= { S };
1
a
. interao - V
2
= {S} { A | B A P
1
, B {S}} =
= {S} { X | S a X a } = {S, X}
T
2
= { a | B a P
1
, B {S, X}} =
= { a | X a} = {a}
2
a
. interao - V
2
= {S, X} { A | B A P
1
, B {S,X}} =
= {S, X} = {S, X}
T
2
= {a} { a | B a P
1
, B {S, X}} =
= {a} { b | X b } = {a,b}
Ento V
2
= {S, X} e T
2
= {a,b}

Ento P
2
= P = {S aXa | bXb | aa | bb | , Xa | b | ab } , j que Y V
2

Assim, G
2
= ({S, X}, {a,b}, S, P
2
), com P
2
= {S aXa | bXb | aa | bb | , Xa | b | ab }

Portanto, a partir de:
G = ({S, X, Y}, {a,b}, P, S) com P = {S aXa | bXb | , X a | b | Y, Y ab | }
Obteve-se:
G
2
= ({S, X}, {a,b}, S, P
2
), com P
2
= {S aXa | bXb | aa | bb | , Xa | b | ab }
_______________________________________________________________________________________________________________ - 11 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

5.4. Simplificaes combinadas

Deve-se seguir a seguinte seqncia:
1. Retirada de produes vazias (A )
2. Retirada de produes da forma A B
3. Retirada de smbolos no usados


Exemplo 13
Seja G = ({S,X,Y,Z,A,B}, {a,b,u,v}, S, P), onde
P = { S XYZ,
X AXA | BXB| Z | ,
Y AYB | BYA | Z | ,
Z Zu | Zv | ,
A a,
B b}


1. Fase: Retirada das produes vazias
Etapa 1.1: Definio do conjunto de variveis que constituem produes vazias (V

)
V

= {X, Y, Z}, j que X , Y e Z


Mas como S XYZ e todas essas variveis j pertencem a V

, ento S pertence, tambm a V


Ento V

= {S, X, Y, Z}

Etapa 1.2: Definio do conjunto de produes sem produes vazias.
Primeiramente, faro parte do conjunto de produes, as produes que no so vazias, ou seja,
{A | }
Ento, P
1
= {SXYZ, X AXA | BXB| Z, Y AYB | BYA | Z, Z Zu | Zv, A a, B b}
Depois, sero includas as produes que obedecem regra:
Se A P e X V

tal que =
1
X
2
e
1

2
faa P
1
= P
1
{ A
1

2
}
Assim,
P
1
= P
1
{ S YZ | XZ | XY | X | Y | Z, X AA | BB, Y AB | BA, Z u | v }
Portanto P
1
= {SXYZ | YZ | XZ | XY | X | Y | Z, X AXA | BXB| Z | AA | BB,
Y AYB | BYA | Z | AB | BA, Z Zu | Zv | u | v, A a, B b}

Etapa 1.3: Incluso de gerao da palavra vazia, se necessrio (S )
A palavra vazia pertencia linguagem, portanto precisa ser recolocada.
Portanto, G
2
= ({S,X,Y,Z,A,B}, {a,b,u,v}, S, P
2
), onde
P
2
= { SXYZ | YZ | XZ | XY | X | Y | Z | , X AXA | BXB| Z | AA | BB,
Y AYB | BYA | Z | AB | BA, Z Zu | Zv | u | v, A a, B b}






_______________________________________________________________________________________________________________ - 12 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

2. Fase: Retirada de produes da forma A B
Etapa 2.1: Construo do fecho de cada varivel
fecho-S = {X,Y,Z}
fecho-X = {Z}
fecho-Y = {Z}
fecho-Z =
fecho-A =
fecho-B =

Etapa 2.2: Excluso das produes da forma A B.
Primeiramente, forme o conjunto de produes excluindo as produes da forma A B
P
3
= { SXYZ | YZ | XZ | XY | , X AXA | BXB| AA | BB,
Y AYB | BYA | AB | BA, Z Zu | Zv | u | v, A a, B b}
Passe por todas as variveis e seus fechos e faa:
Para varivel X e Z em seu fecho, acrescentaremos: X Zu | Zv | u | v
Para varivel Y e Z em seu fecho, acrescentaremos: Y Zu | Zv | u | v,
Para varivel S e X em seu fecho, acrescentaremos: S AXA | BXB| AA | BB
Para varivel S e Y em seu fecho, acrescentaremos: S AYB | BYA | AB | BA
Para varivel S e Z em seu fecho, acrescentaremos: S Zu | Zv | u | v,
Assim, P
3
= { SXYZ |YZ|XZ|XY||AXA | BXB|AA |BB |AYB |BYA |AB |BA | Zu |Zv | u | v,
X AXA | BXB| AA | BB | Zu | Zv | u | v,
Y AYB | BYA | AB | BA | Zu | Zv | u | v,
Z Zu | Zv | u | v, A a, B b }


3. Fase: Retirada de smbolos no usados
Etapa 3.1: Garantia de que qualquer varivel gera terminais.
V
1
= ;
V
1
= { W | W P e (a,b,u,v)*} = {S, X, Y, Z, A, B}
Assim, P
3
no se altera.

Etapa 3.2: garante que qualquer smbolo atingvel a partir do smbolo inicial.
T
2
= ;
V
2
= {S};
1
a
. interao - verifica quais variveis so vistas pelas variveis que esto em V
2
= {S}.
Assim, V
2
= {S} {X, Y, Z, A, B} = {S, X,Y,Z,A,B}
Verifica quais terminais so vistos pelas variveis que esto em V
2

Assim, T
2
= { a, b, u, v} = {a, b, u, v}
Ento V
2
= { S, X, Y, Z, A, B} e T
2
= {a, b, u, v}

Portanto a gramtica simplificada :
G
3
= ({S,X,Y,Z,A,B}, {a,b,u,v}, S, P
3
), onde:
P
3
= { SXYZ | YZ | XZ | XY | | AXA | BXB| AA | BB | AYB | BYA | AB | BA | Zu | Zv | u | v,
X AXA | BXB| AA | BB | Zu | Zv | u | v,
Y AYB | BYA | AB | BA | Zu | Zv | u | v,
Z Zu | Zv | u | v, A a, B b }
_______________________________________________________________________________________________________________ - 13 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

6. Formas Normais


Existem vrios conjuntos de formas normais para linguagens livres de contexto. Algumas delas so mais
teis e so mais estudadas. Aqui sero vistas duas: a Forma Normal de Chomsky e a Forma Normal de
Greibach.

Uma forma normal, a pesar de impor restries sobre as gramticas, suficientemente abrangentes para
permitir que qualquer gramtica tenha uma gramtica equivalente na forma normal.



6.1. Forma Normal de Chomsky


Definio 6

Uma Gramtica Livre de Contexto dita estar na Forma Normal de Chomsky se todas as produes so
da forma:
A BC ou A a
Onde A, B e C so variveis e a um terminal.



Teorema 1

Qualquer Gramtica Livre de Contexto G = (V, T, S, P) com L(G)
tem uma gramtica G
fnc
= (V
fnc
, T
fnc
, S, P
fnc
)
na Forma Normal de Chomsky





Algoritmo
Transforma uma Gramtica Livre de Contexto em uma Gramtica na Forma Normal de Chomsky em trs
etapas:
Etapa1: Simplificao da gramtica
Etapa2: Transformao do lado direito das produes de comprimento maior ou igual a dois.
Etapa3: Transformao do lado direito das produes de comprimento maior ou igual a trs, em
produes com exatamente duas variveis.





_______________________________________________________________________________________________________________ - 14 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Etapa1: Simplificao da gramtica
A gramtica resultante desta etapa : G
1
= (V
1
, T
1
, S, P
1
)

Etapa2: Transformao do lado direito das produes de comprimento maior ou igual a dois.
A gramtica resultante desta etapa : G
2
= (V
2
, T
1
, S, P
2
), onde V
2
e P
2
so construdos atravs da rotina
abaixo:
V
2
= V
1
;
P
2
= P
1
;
Para toda produo A X
1
X
2
... X
n
P
2
tal que n 2 faa
se r {1, ..., n}, X
r
um smbolo terminal
ento (suponha X
r
= a)
V
2
= V
2
{C
a
};
substitui a pela varivel C
a
em A X
1
X
2
... X
n
P
2
;
P
2
= P
2
{C
a
a};


Etapa3: Transformao do lado direito das produes de comprimento maior ou igual a trs, em
produes com exatamente duas variveis.
A gramtica resultante desta etapa : G
3
= (V
3
, T
1
, S, P
3
), onde V
3
e P
3
so construdos atravs da rotina
abaixo:

V
3
= V
2
;
P
3
= P
2
;
Para toda produo A B
1
B
2
... B
n
P
3
tal que n 3 faa
P
3
= P
3
{ A B
1
B
2
... B
n
};
V
3
= V
3
{ D
1
D
2
... D
n-2
};
P
3
= P
3
{A B
1
D
1
, D
1
B
2
D
2
, , D
n-3
B
n-2
D
n-2
, D
n-2
B
n-1
B
n
};



Exemplo 14
Considere a Gramtica G = ({S}, {+, *, [, ], x}, P, S), onde P = { S S + S | S * S | [ S ] | x}

Etapa1: Simplificao j est simplificada

Etapa2:
V
2
= V = {S}
P
2
= P = { S S + S | S * S | [ S ] | x}
Para toda produo A X
1
X
2
... X
n
P
2
tal que n 2
S S + S
Faa: se para r {1, ..., 3}, X
r
um smbolo terminal
ento (suponha X
r
= +)
V
2
= {S} {C
+
} = { S, C
+
}
S S C
+
S
P
2
= { S S C
+
S | S * S | [ S ] | x} {C
+
+} =
P
2
= { S S C
+
S | S * S | [ S ] | x, C
+
+}
_______________________________________________________________________________________________________________ - 15 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

S S * S
Faa se r {1, ..., 3}, X
r
um smbolo terminal
ento (suponha X
r
= *)
V
2
= { S, C
+
} {C
*
} = { S, C
+
,C
*
}
S S C
*
S
P
2
= { S S C
+
S | S C
*
S | [ S ] | x, C
+
+} {C
*
*} =
P
2
= { S S C
+
S | S C
*
S | [ E ] | x, C
+
+, C
*
*}
S [ S ]
Faa se r {1, ..., 3}, X
r
um smbolo terminal
ento (suponha X
r
= [)
V
2
= { S, C
+
,C
*
} {C
[
} = { S, C
+
,C
*
,C
[
}
S C
[
S ]
P
2
= { S S C
+
S | S C
*
S | C
[
S ] | x, C
+
+} {C
[
[} =
P
2
= { S S C
+
S | S C
*
S | C
[
S ] | x, C
+
+, C
[
[}
ento (suponha X
r
= ])
V
2
= { S, C
+
,C
*
,C
[
} {C
]
} = { S, C
+
,C
*
,C
[
,C
]
}
S C
[
S C
]

P
2
= { S S C
+
S | S C
*
S | C
[
S C
]
| x, C
+
+, C
[
[} {C
]
]}
P
2
= { S S C
+
S | S C
*
S | C
[
S C
]
| x, C
+
+, C
[
[,C
]
]}

Ento V
2
= { S, C
+
,C
*
,C
[
,C
]
}
P
2
= { S S C
+
S | S C
*
S | C
[
S C
]
| x, C
+
+, C
[
[, C
]
]}

Etapa3:
V
3
= V
2
= { S, C
+
,C
*
,C
[
,C
]
}
P
3
= P
2
= { S S C
+
S | S C
*
S | C
[
S C
]
| x, C
+
+, C
[
[, C
]
]}
Para toda produo A B
1
B
2
... B
n
P
3
tal que n 3
S S C
+
S
P
3
= P
3
{ S S C
+
S } = { S S C
*
S | C
[
S C
]
| x, C
+
+, C
[
[, C
]
]}
V
3
= V
3
{ D
1
} = { S, C
+
,C
*
,C
[
,C
]
, D
1
}
P
3
= P
3
{S SD
1
, D
1
C
+
S} =
= { S S C
*
S | C
[
S C
]
| x | SD
1
, C
+
+, C
[
[, C
]
], D
1
C
+
S}

S S C
*
S
P
3
= P
3
{ S S C
*
S } =
= {S C
[
S C
]
| x | SD
1
, C
+
+, C
[
[, C
]
], D
1
C
+
S}
V
3
= V
3
{ D
2
} = { S, C
+
,C
*
,C
[
,C
]
, D
1
, D
2
}
P
3
= P
3
{S SD
2
, D
2
C
*
S} =
= {S C
[
SC
]
| x | SD
1
| SD
2
, C
+
+, C
[
[, C
]
], D
1
C
+
S, D
2
C
*
S}

S C
[
S C
]

P
3
= P
3
{ S C
[
S C
]
} =
= {S x | SD
1
| SD
2
, C
+
+, C
[
[, C
]
], D
1
C
+
S, D
2
C
*
S}
V
3
= V
3
{ D
3
} = { S, C
+
,C
*
,C
[
,C
]
, D
1
, D
2
, D
3
}
P
3
= P
3
{S C
[
D
3
, D
3
S C
]
} =
= {S x|SD
1
|SD
2
|C
[
D
3
, C
+
+, C
[
[, C
]
], D
1
C
+
S, D
2
C
*
S, D
3
S C
]
}
_______________________________________________________________________________________________________________ - 16 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Portanto, a Gramtica na Forma Normal de Chomsky, pode ser dada por:

G
fnc
= (V
fnc
, T
fnc
, S, P
fnc
), onde
V
fnc
= { S, C
+
,C
*
,C
[
,C
]
, D
1
, D
2
, D
3
}
T
fnc
= {+, *, [, ], x}
P
fnc
= {S x,
S SD
1,
S SD
2,
S C
[
D
3
,
C
+
+,
C
[
[,
C
]
],
D
1
C
+
S,
D
2
C
*
S,
D
3
S C
]
}



Exemplo 15
Considere a Gramtica G = ({S, A, B}, {a,b}, S, P), P = {S abAB, A bAB|, B BAa|A|}

Etapa1: Simplificao

1. Fase: Retirada das produes vazias
Etapa 1.1: Definio do conjunto de variveis que constituem produes vazias (V

)
V

= {A, B}, j que A e B


Ento V

= {A,B}

Etapa 1.2: Definio do conjunto de produes sem produes vazias.
Primeiramente, faro parte do conjunto de produes, as produes que no so vazias
Ento, P
1
= {S abAB, A bAB, B BAa | A}
Depois, sero includas as produes que obedecem regra:
Se A P e X V

tal que =
1
X
2
e
1

2
faa P
1
= P
1
{ A
1

2
}
Assim, P
1
= P
1
{ S abB | abA | ab , A bB | bA | b, B Ba | Aa | a}
Portanto P
1
= { S abAB| abB | abA | ab, A bAB | bB | bA | b, B BAa | A | Ba | Aa | a }

Etapa 1.3: Incluso de gerao da palavra vazia, se necessrio (S )
A palavra vazia no pertencia linguagem, portanto no precisa ser recolocada.

Portanto, G
1
= ({S, A, B}, {a,b}, S, P
1
), onde
P
1
= { S abAB| abB | abA | ab, A bAB | bB | bA | b, B BAa | A | Ba | Aa | a }


2. Fase: Retirada de produes da forma A B
Etapa 2.1: Construo do fecho de cada varivel
fecho-S =
fecho-A =
fecho-B = {A}

_______________________________________________________________________________________________________________ - 17 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Etapa 2.2: Excluso das produes da forma A B.
Primeiramente, forme o conjunto de produes excluindo as produes da forma A B
P
2
= { S abAB| abB | abA | ab, A bAB | bB | bA | b, B BAa | Ba | Aa | a }
Passe por todas as variveis e seus fechos:
Para fecho-B = {A}, acrescentaremos: B bAB | bB | bA | b
Assim, P
2
={SabAB| abB |abA |ab, AbAB | bB | bA | b, BBAa |Ba | Aa | bAB | bB | bA |a|b}

Portanto, G
2
= ({S, A, B}, {a,b}, S, P
2
), onde
P
2
={SabAB| abB |abA |ab, AbAB | bB | bA | b, BBAa |Ba | Aa | bAB | bB | bA |a|b}

3. Fase: Retirada de smbolos no usados
Etapa 3.1: Garantia de que qualquer varivel gera terminais.
V
2
= ;
V
2
= { W | W P e (a,b)*} = {S, A, B}
Assim, P
2
no se altera.

Etapa 3.2: garante que qualquer smbolo atingvel a partir do smbolo inicial.
T
3
= ;
V
3
= {S};
1
a
. interao - verifica quais variveis so vistas pelas variveis que esto em V
3
= {S}.
Assim, V
3
= {S} { A, B} = {S, A,B}
Verifica quais terminais so vistos pelas variveis que esto em V
3

Assim, T
3
= { a, b } = {a, b }
Ento V
3
= { S, A, B} e T
3
= {a, b}


Portanto a gramtica simplificada G
2
= ({S, A,B}, {a,b}, S, P
2
), onde:
P
2
= { S abAB | abB | abA | ab,
A bAB | bB | bA | b,
B BAa | Ba | Aa | bAB | bB | bA | a | b}


Etapa2: Transformao do lado direito das produes de comprimento maior ou igual a dois.
V
3
= {S,A,B};
P
3
= {S abAB | abB | abA | ab, A bAB | bB | bA | b, B BAa | Ba | Aa | bAB | bB | bA | a | b};
V
3
= V
3
{C
a
, C
b
} = {S,A,B,C
a
,C
b
};
deve-se acrescentar as produes: {C
a
a, C
b
b} e fazer as substituies.
P
3
= { S C
a
C
b
AB | C
a
C
b
B | C
a
C
b
A | C
a
C
b
, A C
b
AB | C
b
B | C
b
A | b,
B BAC
a
| BC
a
| AC
a
| C
b
AB | C
b
B | C
b
A | a | b, C
a
a, C
b
b};

Etapa3: Transformao do lado direito das produes de comprimento maior ou igual a trs, em produes
com exatamente duas variveis.
V
4
= V
3
= {S,A,B,C
a
,C
b
};
P
4
= P
3
;
Verifique as produes que possuam mais de 2 variveis e as retire de P
4
Ento: P
4
= {S C
a
C
b
, A C
b
B | C
b
A | b, B BC
a
| AC
a
| C
b
B | C
b
A | a | b, C
a
a, C
b
b};
Para cada produo retirada, { S C
a
C
b
AB | C
a
C
b
B | C
a
C
b
A, A C
b
AB, B BAC
a
| C
b
AB}
S C
a
C
b
AB
V
4
= V
4
{D
1
, D
2
} = {S,A,B,C
a
,C
b
,D
1
, D
2
}
P
4
= P
4
{S C
a
D
1
, D
1
C
b
D
2
, D
2
AB}
_______________________________________________________________________________________________________________ - 18 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

S C
a
C
b
B
V
4
= V
4
{D
3
} = {S,A,B,C
a
,C
b
,D
1
,D
2
,D
3
}
P
4
= P
4
{S C
a
D
3
, D
3
C
b
B}
S C
a
C
b
A
V
4
= V
4
{D
4
} = {S,A,B,C
a
,C
b
,D
1
,D
2
,D
3
,D
4
}
P
4
= P
4
{S C
a
D
4
, D
4
C
b
A}
A C
b
AB
V
4
= V
4
{D
5
} = {S,A,B,C
a
,C
b
,D
1
,D
2
,D
3
,D
4
,D
5
}
P
4
= P
4
{ A C
b
D
5
, D
5
AB}
B BAC
a

V
4
= V
4
{D
6
} = {S,A,B,C
a
,C
b
,D
1
,D
2
,D
3
,D
4
,D
5
,D
6
}
P
4
= P
4
{ B BD
6
, D
6
AC
a
}
B C
b
AB
V
4
= V
4
{D
7
} = {S,A,B,C
a
,C
b
,D
1
,D
2
,D
3
,D
4
,D
5
,D
6
,D
7
}
P
4
= P
4
{ B C
b
D
7
, D
7
AB}

Portanto, a Gramtica G = ({S, A, B}, {a,b}, S, P), P = {S abAB, A bAB|, B BAa|A|}, na
Forma Normal de Chomsky :
G = ({S,A,B,C
a
,C
b
,D
1
,D
2
,D
3
,D
4
,D
5
,D
6
,D
7
}, {a,b}, S, P
4
),
P
4
= { S C
a
C
b
| C
a
D
1
| C
a
D
3
| C
a
D
4

A C
b
B | C
b
A | C
b
D
5
| b
B BC
a
| AC
a
| C
b
B | C
b
A | BD
6
| C
b
D
7
| a | b
D
1
C
b
D
2
,
D
2
AB,
D
3
C
b
B,
D
4
C
b
A,
D
5
AB,
D
6
AC
a
,
D
7
AB,
C
a
a,
C
b
b }





6.2. Forma Normal de Greibach


Definio 7

Uma Gramtica Livre de Contexto dita estar na Forma Normal de Greibach se todas as produes so
da forma:
A a

Onde A uma varivel, a um terminal e uma cadeia de variveis.

_______________________________________________________________________________________________________________ - 19 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Teorema 2

Qualquer Gramtica Livre de Contexto G = (V, T, S, P) com L(G)
tem uma gramtica G
fng
= (V
fng
, T
fng
, S, P
fng
)
na Forma Normal de Greibach



Algoritmo

Transforma uma Gramtica Livre de Contexto em uma Gramtica na Forma Normal de Greibach em seis
etapas:
Etapa 1: Simplificao da gramtica
Etapa 2: Renomeao das variveis em uma ordem crescente qualquer
Etapa 3: Transformao de produes para a forma A
r
A
s
, onde r s
Etapa 4: Excluso das recurses da forma A
r
A
r
.
Etapa 5: Um terminal no incio do lado direito de cada produo.
Etapa 6: Produes na forma A a onde composta por variveis.



Etapa1: Simplificao da gramtica
A gramtica resultante desta etapa : G
1
= (V
1
, T
1
, S, P
1
)


Etapa2: Renomeao das variveis em uma ordem crescente qualquer
A gramtica resultante desta etapa : G
2
= (V
2
, T
1
, S, P
2
) onde V
2
e P
2
so construdos como segue:
Supondo que o cardinal de V
1
n,
V
2
= { A
1
, A
2
, ..., A
n
} e V
1
onde as variveis so renomeadas;
P
2
P
1
renomeando as variveis nas produes.


Etapa 3 e 4: Transformao de produes para a forma A
r
A
s
, onde r s e Excluso das
recurses da forma A
r
A
r
.
A gramtica resultante destas duas etapas realizadas em conjunto : G
3
= (V
3
, T
1
, S, P
3
) onde V
3
e P
3
so
construdos como a rotina a seguir e supondo o cardinal de V
2
= n

P
3
= P
2
;
V
3
= V
2
;
Para r variando de 1 at n faa
Para s variando de 1 at r-1 faa
Para toda produo A
r
A
s
P
3
faa
Excluir a produo A
r
A
s
de P
3

Para toda produo A
s
P
3
faa
P
3
= P
3
{ A
r
}

_______________________________________________________________________________________________________________ - 20 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Para toda produo Ar Ar P3 faa
Excluir a produo A
r
A
r
de P
3

V
3
= V
3
{B
r
}
P
3
= P
3
{B
r
} {B
r
B
r
}
Para toda produo A
r
P
3
tal que no inicia por A
r
e alguma A
r
A
r
foi excluda
faa
P
3
= P
3
{ A
r
B
r
}



Etapa 5: Um terminal no incio do lado direito de cada produo.
A gramtica resultante destas duas etapas realizadas em conjunto : G
4
= (V
3
, T
1
, S, P
4
) onde P
4

construdo a partir da rotina:

P
4
= P
3
;
Para r variando de n-1 at 1 e toda A
r
A
s
P
4
faa
Excluir a produo A
r
A
s
de
P4
;
Para toda produo A
s
P
4
faa
P
4
= P
4
{ A
r
}
Tambm necessrio garantir que as produes relativas s variveis auxiliares Br iniciam por um
terminal do lado direito, como segue:

Rotina para produes B
r

Para toda produo B
r
A
s

r
P
4
faa
Excluir a produo B
r
A
s

r
de P
4

Para toda produo A
s
a faa
P
4
= P
4
{ B
r
a
r
}


Etapa 6: Produes na forma A a onde composta por variveis.
A gramtica resultante desta etapa : G
5
= (V
4
, T
1
, S, P
5
) onde P
5
construdo a partir da rotina:

V
4
= V
3
;
P
5
= P
4
;
Para toda produo A aX
1
X
2
... X
n
P
5
faa
se para r {1, ..., n}, X
r
um smbolo terminal
ento (suponha X
r
= b)
V
4
= V
4
{C
b
};
substitui b pela varivel C
b
em A aX
1
X
2
... X
n
P
5
;
P
5
= P
5
{C
b
b};






_______________________________________________________________________________________________________________ - 21 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Exemplo 16
Considere a Gramtica Livre de Contexto G = ({S,A}, {a,b}, S, P) onde P = { S AA | a, A SS | b}

Etapa1: Simplificao da gramtica
A gramtica j est simplificada.

Etapa2: Renomeao das variveis em uma ordem crescente qualquer
G
2
= (V
2
, T, S, P
2
) onde V
2
e P
2
so dados abaixo:
V
2
= { A
1
, A
2
}
P
2
= { A
1
A
2
A
2
| a, A
2
A
1
A
1
| b}

Etapa 3 e 4: Transformao de produes para a forma A
r
A
s
, onde r s e Excluso das
recurses da forma A
r
A
r
.
P
3
= P
2
= { A
1
A
2
A
2
| a, A
2
A
1
A
1
| b}
V
3
= V
2
=

{A
1
, A
2
};
Para r =1 (at 2) faa
Para s =1 (at r-1 = 0) .....
Para toda A
1
A
1
P3 ....
Para toda A
1
P
3
tal que no inicia por A
1
e alguma A
1
A
1
foi excluda ....

Para r = 2 (at 2) faa
Para s =1 (at 1)
Para A
2
A
1
P
3
, portanto A
2
A
1
A
1
( = A
1
)
Excluir A
2
A
1
A
1
de P
3
ento P
3
= { A
1
A
2
A
2
| a, A
2
b}
Para toda A
1
P
3
, ou seja, A
1
A
2
A
2
e A
1
a , faa
P
3
= P
3
{ A
2
} = P
3
{ A
2
A
2
A
2
A
1
} { A
2
aA
1
}
P
3
= { A
1
A
2
A
2
| a, A
2
b | A
2
A
2
A
1
| aA
1
}

Para toda A
2
A
2
P
3
, portanto: A
2
A
2
A
2
A
1
, com = A
2
A
1
, faa
Excluir A
2
A
2
A
2
A
1
de P
3
, portanto P
3
= { A
1
A
2
A
2
| a, A
2
b | aA
1
}
V
3
= V
3
{B
2
} = {A
1
, A
2
, B
2
}
P
3
= P
3
{B
2
A
2
A
1
} {B
2
A
2
A
1
B
2
}
P
3
= { A
1
A
2
A
2
| a, A
2
b | aA
1
, B
2
A
2
A
1
| A
2
A
1
B
2
}

Para toda A
2
P
3
, ou seja: A
2
b | aA
1
, e A
2
A
2
A
2
A
1
foi excluda faa
P
3
= P
3
{ A
2
B
2
} = P
3
{ A
2
b B
2
| aA
1
B
2
}
P
3
= { A
1
A
2
A
2
| a, A
2
b | aA
1
| b B
2
| aA
1
B
2
, B
2
A
2
A
1
| A
2
A
1
B
2
}

Assim, G
3
= ({A
1
, A
2
, B
2
}, {a,b}, S, P
3
) onde
P
3
= { A
1
A
2
A
2
| a, A
2
b | aA
1
| bB
2
| aA
1
B
2
, B
2
A
2
A
1
| A
2
A
1
B
2
}

Etapa 5: Um terminal no incio do lado direito de cada produo.
P
4
= { A
1
A
2
A
2
| a, A
2
b | aA
1
| bB
2
| aA
1
B
2
, B
2
A
2
A
1
| A
2
A
1
B
2
}
Para r = 2 (at 1) e toda A
2
A
s
P
4
.....
Para r = 1 (at 1) e toda A
1
A
s
P
4
, ento A
1
A
2
A
2
, com = A
2
, faa
Excluir A
1
A
2
A
2
de P
4
, ento
P
4
= { A
1
a, A
2
b | aA
1
| bB
2
| aA
1
B
2
, B
2
A
2
A
1
| A
2
A
1
B
2
}
Para toda A
2
P
4
, ou seja: A
2
b | aA
1
| bB
2
| aA
1
B
2
, faa
P
4
= P
4
{ A
1
} = P
4
{ A
1
bA
2
| aA
1
A
2
| bB
2
A
2
| aA
1
B
2
A
2
}
_______________________________________________________________________________________________________________ - 22 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

P
4
= { A
1
bA
2
| aA
1
A
2
| bB
2
A
2
| aA
1
B
2
A
2
| a, A
2
b | aA
1
| bB
2
| aA
1
B
2
,
B
2
A
2
A
1
| A
2
A
1
B
2
}

Para toda B
r
A
s

r
P
4
, ou seja, B
2
A
2
A
1
| A
2
A
1
B
2
, faa
B
2
A
2
A
1
, ento r = 2, A
s
= A
2
e
r
= A
1

Excluir B
2
A
2
A
1
de P
4
, ento
P
4
= { A
1
bA
2
| aA
1
A
2
| bB
2
A
2
| aA
1
B
2
A
2
| a, A
2
b | aA
1
| bB
2
| aA
1
B
2
,
B
2
A
2
A
1
B
2
}
Para toda A
2
a, ou seja, A
2
b | aA
1
| bB
2
| aA
1
B
2
, faa
P
4
= P
4
{ B
2
a
r
} = P
4
{ B
2
bA
1
| aA
1
A
1
| bB
2
A
1
| aA
1
B
2
A
1
}
P
4
= { A
1
bA
2
| aA
1
A
2
| bB
2
A
2
| aA
1
B
2
A
2
| a, A
2
b | aA
1
| bB
2
| aA
1
B
2
,
B
2
A
2
A
1
B
2
| bA
1
| aA
1
A
1
| bB
2
A
1
| aA
1
B
2
A
1
}

B
2
A
2
A
1
B
2
, ento r = 2, A
s
= A
2
e
r
= A
1
B
2

Excluir B
2
A
2
A
1
B
2
de P
4
, ento
P
4
= { A
1
bA
2
| aA
1
A
2
| bB
2
A
2
| aA
1
B
2
A
2
| a, A
2
b | aA
1
| bB
2
| aA
1
B
2
,
B
2
bA
1
| aA
1
A
1
| bB
2
A
1
| aA
1
B
2
A
1
}
Para toda A
2
a, ou seja, A
2
b | aA
1
| bB
2
| aA
1
B
2
, faa
P
4
= P
4
{B
2
a
r
} = P
4
{B
2
b A
1
B
2
| aA
1
A
1
B
2
| bB
2
A
1
B
2
| aA
1
B
2
A
1
B
2
}
P
4
= { A
1
bA
2
| aA
1
A
2
| bB
2
A
2
| aA
1
B
2
A
2
| a, A
2
b | aA
1
| bB
2
| aA
1
B
2
,
B
2
bA
1
| aA
1
A
1
| bB
2
A
1
| aA
1
B
2
A
1
| bA
1
B
2
| aA
1
A
1
B
2
| bB
2
A
1
B
2
| aA
1
B
2
A
1
B
2
}

G
4
= ({A
1
, A
2
, B
2
}, {a,b}, A
1
, P
4
) com
P
4
= { A
1
bA
2
| aA
1
A
2
| bB
2
A
2
| aA
1
B
2
A
2
| a, A
2
b | aA
1
| bB
2
| aA
1
B
2
,
B
2
bA
1
| aA
1
A
1
| bB
2
A
1
| aA
1
B
2
A
1
| bA
1
B
2
| aA
1
A
1
B
2
| bB
2
A
1
B
2
| aA
1
B
2
A
1
B
2
}

Etapa 6: Produes na forma A a onde composta por variveis.
Toda produo A a, composta por variveis. Ento no tem nada para fazer.

Portanto, a Gramtica G = ({S,A}, {a,b}, S, P) onde P = { S AA | a, A SS | b}
na Forma Normal de Greibach :
G
4
= ({A
1
, A
2
, B
2
}, {a,b}, A
1
, P
4
) com
P
4
= { A
1
bA
2
| aA
1
A
2
| bB
2
A
2
| aA
1
B
2
A
2
| a,
A
2
b | aA
1
| bB
2
| aA
1
B
2
,
B
2
bA
1
| aA
1
A
1
| bB
2
A
1
| aA
1
B
2
A
1
| bA
1
B
2
| aA
1
A
1
B
2
| bB
2
A
1
B
2
| aA
1
B
2
A
1
B
2
}














_______________________________________________________________________________________________________________ - 23 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Exemplo 17
Considere a Gramtica Livre de Contexto G = ({S,A}, {a,b}, S, P), P = {S aSaA | A, A abA | b}

Etapa1: Simplificao

1. Fase: Retirada das produes vazias no h produes vazias

2. Fase: Retirada de produes da forma A B
Etapa 2.1: Construo do fecho de cada varivel
fecho-S = {A}
fecho-A =

Etapa 2.2: Excluso das produes da forma A B.
Primeiramente, forme o conjunto de produes excluindo as produes da forma A B
P
2
= { S aSaA, A abA | b }
Passe por todas as variveis e seus fechos:
Para fecho-S = {A}, acrescentaremos: S abA | b
Assim, P
2
={ S aSaA | abA | b, A abA | b }

Portanto, G
2
= ({S, A, B}, {a,b}, S, P
2
), onde P
2
={ S aSaA | abA | b, A abA | b }

3. Fase: Retirada de smbolos no usados
Etapa 3.1: Garantia de que qualquer varivel gera terminais.
V
2
= ;
V
2
= { W | W P e (a,b)*} = {S, A}
Assim, P
2
no se altera.

Etapa 3.2: garante que qualquer smbolo atingvel a partir do smbolo inicial.
T
3
= ;
V
3
= {S};
1
a
. interao - verifica quais variveis so vistas pelas variveis que esto em V
3
= {S}.
Assim, V
3
= {S} { A } = {S, A}
Verifica quais terminais so vistos pelas variveis que esto em V
3

Assim, T
3
= {a, b} = {a, b}
Ento V
3
= { S, A} e T
3
= {a, b}

Portanto a gramtica simplificada G
2
= ({S, A}, {a,b}, S, P
2
), onde:
P
2
={ S aSaA | abA | b,
A abA | b }


Etapa2: Renomeao das variveis em uma ordem crescente qualquer
G
3
= ({ A
1
, A
2
}, T, S, P
3
) , P
3
= { A
1
a A
1
a A
2
| abA
2
| b, A
2
ab A
2
| b }


Etapa 3 e 4: Transformao de produes para a forma A
r
A
s
, onde r s e Excluso das
recurses da forma A
r
A
r
.
Como no temos A
r
A
s
, r s e nem A
r
A
r
, nada muda.
G
3
= (V
3
, T, S, P
3
) , V
3
=

{A
1
, A
2
}, P
3
= { A
1
a A
1
a A
2
| abA
2
| b, A
2
ab A
2
| b }

_______________________________________________________________________________________________________________ - 24 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Etapa 5: Um terminal no incio do lado direito de cada produo.
Como j temos um terminal no incio de cada produo, nada se altera.
G
3
= (V
3
, T, S, P
3
) , V
3
=

{A
1
, A
2
}, P
3
= { A
1
a A
1
a A
2
| abA
2
| b, A
2
ab A
2
| b }


Etapa 6: Produes na forma A a onde composta por variveis.
V
4
= V
3
=

{A
1
, A
2
};
P
4
= P
3
= { A
1
a A
1
a A
2
| abA
2
| b, A
2
ab A
2
| b }
Como temos terminais em , ento se retira essas produes de P
4
, ficando P
4
={ A
1
b, A
2
b }
Faz: V
4
= V
4
{C
a
, C
b
} = {A
1
, A
2
, C
a
, C
b
};
E: P
4
= P
4
{ C
a
a, C
b
b};
Substitui os terminais nas produes excludas: { A
1
a A
1
a A
2
| abA
2
, A
2
ab A
2
}
Obtendo: {A
1
a A
1
C
a
A
2
, A
1
a C
b
A
2
,A
2
a C
b
A
2
}
Ento: V
4
= {A
1
, A
2
, Ca, Cb};
P
4
={ A
1
aA
1
C
a
A
2
| aC
b
A
2
| b, A
2
aC
b
A
2
| b , C
a
a, C
b
b}

Portanto, a Gramtica G = ({S,A}, {a,b}, S, P), P = {S aSaA | A, A abA | b},
na Forma Normal de Greibach :
G
4
= ({A
1
, A
2
, C
a
, C
b
}, {a,b}, A
1
, P
4
),
P
4
={ A
1
aA
1
C
a
A
2
| aC
b
A
2
| b,
A
2
aC
b
A
2
| b ,
C
a
a,
C
b
b}





7. Autmatos com Pilha (Pushdown Automata)

Os aceitadores ou reconhecedores das Linguagens Livres de Contexto so os Autmatos com Pilha. Os
Autmatos com Pilha podem ser determinsticos ou no determinsticos. Os mais usuais so os Autmatos
com Pilha no determinsticos.

Esses Autmatos possuem uma memria auxiliar para o processamento da entrada. Essa memria
definida como sendo uma pilha que no possui limite mximo de armazenamento, portanto, sendo infinita.
Por ser uma pilha o ltimo smbolo gravado na pilha o primeiro a ser lido.

Enquanto os Autmatos Finitos eram definidos como sendo M = ( Q, , , q
0
, F), onde
Q conjunto finito de estados
alfabeto de entrada, conjunto finito de smbolos
funo de transio ou funo programa definido por : Q x Q
q
0
estado inicial ( q
0
Q )
F conjunto de estados finais ( F Q )

O Autmato com Pilha pode ser definido como abaixo.

_______________________________________________________________________________________________________________ - 25 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03


Definio 8

Um Autmato com Pilha No Determinstico (APND) definido pela stupla: M = (Q, , , , q
0
, z, F)


Onde: Q conjunto finito de estados
alfabeto de entrada, conjunto finito de smbolos
conjunto finito de smbolos, chamado de alfabeto da pilha
funo de transio ou funo programa definido por : Q x ( {}) x ( {}) 2
Qx*

q
0
estado inicial ( q
0
Q )
z smbolo inicial da pilha ( z )
F conjunto de estados finais ( F Q )


Exemplo 18
Seja a funo de transio (q
1
, a, b) = {(q
2
, cd), (q
3
, )}
Ento:
Se em algum momento, o AP estiver no estado q
1
, o smbolo lido a e o smbolo desempilhado b (o
topo da pilha continha b)
Ento: vai para o estado q
2
e cd empilhado
vai para o estado q
3
e nada empilhado

Assume-se que a insero de um conjunto de smbolos (por exemplo o cd do exemplo anterior) na pilha
feita smbolo por smbolo, da direita para a esquerda.


Exemplo 19
Seja o Autmato com Pilha No Determinstico:
M = ({ q
0
, q
1
, q
2
, q
3
}, {a, b}, {0,1}, , q
0
, 0, {q
3
}), onde:
(q
0
, a, 0) = {(q
1
,10), (q
3
, )},
(q
0
, , 0) = {(q
3
,)},
(q
1
, a, 1) = {(q
1
,11)},
(q
1
, b, 1) = {(q
2
, )},
(q
2
, b, 1) = {(q
2
, )},
(q
2
, , 0) = {(q
3
, )}.

A leitura das funes de transio pode ser feita:
(q
0
, a, 0) = {(q
1
,10), (q
3
, )}
Estando no estado q
0
, lido o smbolo a e desempilhado o smbolo 0,
ento desempilha 0 e pode-se ir para q
1
e empilhar 10 ou ir para q
3
e no empilhar nada.

(q
0
, , 0) = {(q
3
,)}
Estando no estado q
0
, lido o smbolo e desempilhado o smbolo 0,
ento desempilha 0, vai para q
3
e no se empilha nada.

_______________________________________________________________________________________________________________ - 26 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

(q
1
, a, 1) = {(q
1
,11)}
Estando no estado q
1
, lido o smbolo a e desempilhado o smbolo 1,
ento desempilha 1, vai para q
1
e empilha-se 11.

(q
1
, b, 1) = {(q
2
, )},
Estando no estado q
1
, lido o smbolo b e desempilhado o smbolo 1,
ento desempilha 1, vai para q
2
e no se empilha nada.

(q
2
, b, 1) = {(q
2
, )},
Estando no estado q
2
, lido o smbolo b e desempilhado o smbolo 1,
ento desempilha 1, vai para q
2
e no se empilha nada.

(q
2
, , 0) = {(q
3
, )}.
Estando no estado q
2
, lido o smbolo e desempilhado o smbolo 0,
ento desempilha 0, vai para q
3
e no se empilha nada.




7.1. A linguagem aceita por um Autmato com Pilha

Definio 9

Um Autmato com Pilha No Determinstico (APND) definido pela stupla:
M = (Q, , , , q
0
, z, F)
A linguagem aceita por M o conjunto:
L(M) = { w *: (q
0
, w, z) *
M
(p, , u), p F, u *}


Ou seja, a linguagem aceita por um autmato o conjunto de todas as cadeias/palavras que podem colocar
o autmato em um estado final quando atingir o fim da string. O contedo da pilha irrelevante para essa
definio.

Considerando o APND do exerccio 19,
M = ({ q
0
, q
1
, q
2
, q
3
}, {a, b}, {0,1}, , q
0
, 0, {q
3
}), onde:
(q
0
, a, 0) = {(q
1
,10), (q
3
, )},
(q
0
, , 0) = {(q
3
,)},
(q
1
, a, 1) = {(q
1
,11)},
(q
1
, b, 1) = {(q
2
, )},
(q
2
, b, 1) = {(q
2
, )},
(q
2
, , 0) = {(q
3
, )}.

Sabendo-se que:
q
0
estado inicial
0 smbolo inicial da pilha, portanto Pilha = {0}
{q
3
} conjunto de estados finais
_______________________________________________________________________________________________________________ - 27 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Pode-se intuitivamente concluir:
(1) As cadeias {a, } so reconhecidas pelo autmato, j que:
Por (q
0
, a, 0) = {(q
3
, )}, chega-se ao estado final. Portanto a reconhecida pelo autmato.
Por (q
0
, , 0) = {(q
3
, )}, chega-se ao estado final. Portanto reconhecida pelo autmato.

(2) A cadeia {ab} reconhecida pelo autmato, j que:
Pilha = {0}
Por (q
0
, a, 0) = {(q
1
,10)}, Pilha = {10}
Por (q
1
, b, 1) = {(q
2
, )}, Pilha = {0}
Por (q
2
, , 0) = {(q
3
, )}, Pilha = {}

(3) A cadeia {aabb} reconhecida pelo autmato, j que:
Pilha = {0}
Por (q
0
, a, 0) = {(q
1
,10)}, Pilha = {10}
Por (q
1
, a, 1) = {(q
1
,11)}, Pilha = {110}
Por (q
1
, b, 1) = {(q
2
, )}, Pilha = {10}
Por (q
1
, b, 1) = {(q
2
, )}, Pilha = {0}
Por (q
2
, , 0) = {(q
3
, )}, Pilha = {}

Percebe-se que esse autmato reconhece a linguagem:
L = { a, , ab, aabb, ....} = {a
n
b
n
: n0} {a}


Exemplo 20
Seja a linguagem L = {w {a,b}* | w possui o mesmo nmero de a e de b}
Ento o autmato M = ({q
0
, q
f
}, {a, b}, {0, 1, z}, , q
0
, z, {q
f
}), onde:
(q
0
, , z) = {(q
f
, z)},
(q
0
, a, z) = {(q
0
, 0z) },
(q
0
, b, z) = {(q
0
, 1z)},
(q
0
, a, 0) = {(q
0
, 00)},
(q
0
, b, 0) = {(q
0
, )},
(q
0
, a, 1) = {(q
0
, )},
(q
0
, b, 1) = {(q
0
, 11)}.

Processando:
(q
0
, baab, z) (q
0
, aab, 1z)
(q
0
, ab, z)
(q
0
, b, 0z)
(q
0
, , z)
(q
f
, , z) aceita baab

(q
0
, aab, z) (q
0
, ab, 0z)
(q
0
, b, 00z)
(q
0
, , 0z) no aceita aab
_______________________________________________________________________________________________________________ - 28 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Exemplo 21
Seja a linguagem L = {ww
R
| w {a,b}
+
}
Ento o autmato M = ({ q
0
, q
1
, q
f
}, {a, b}, {a, b, z}, , q
0
, z, {q
f
}), onde:
(q
0
, a, a) = {(q
0
, aa)},
(q
0
, b, a) = {(q
0
, ba)},
(q
0
, a, b) = {(q
0
, ab)},
(q
0
, b, b) = {(q
0
, bb)},
(q
0
, a, z) = {(q
0
, az)},
(q
0
, b, z) = {(q
0
, bz)},
(q
0
, , a) = {(q
1
, a)},
(q
0
, , b) = {(q
1
, b)}.
(q
1
, a, a) = {(q
1
, )},
(q
1
, b, b) = {(q
1
, )},
(q
1
, , z) = {(q
2
, z)}.

Processando:
(q
0
, abba, z) (q
0
, bba, az)
(q
0
, ba, baz)
(q
0
, a, bbaz)
(q
0
, , abbaz)
(q
1
, , abbaz) no aceita

(q
0
, abba, z) (q
0
, bba, az)
(q
0
, ba, baz)
(q
1
, ba, baz)
(q
1
, a, az)
(q
1
, , z)
(q
2
, , z) aceita




7.2. Autmatos com Pilha, Gramticas Livres de Contexto e Linguagens Livres de
Contexto


Teorema 03

Se L uma Linguagem Livre de Contexto, ento existe um Autmato com Pilha No Determinstico tal
que L = L(M).


_______________________________________________________________________________________________________________ - 29 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Se L uma Linguagem Livre de Contexto, ento existe uma Gramtica Livre de Contexto G, tal que L =
L(G). Se a partir de G for possvel determinar um Autmato com Pilha No Determinstico M, tal que
L(G) = L(M), ento teremos L = L(G) = L(M).

Seja G uma Gramtica Livre de Contexto na forma Normal de Greibach, tal que G = (V, T, S, P) com
L(G) . Ento para construir um Autmato com Pilha No Determinstico M a partir de G, faz-se:
M = ({ q
0
, q
1
, q
f
}, T, V {z}, , q
0
, z, {q
f
}), onde:
(q
0
, , z) = {(q
1
, Sz)},
(q
1
, a, A) = {(q
1
, ) para A a P},
(q
1
, , z) = {(q
f
, z)},
Se L, ento basta construir um autmato como feito anteriormente e incluir a transio:
(q
0
, , z) = {(q
f
, z)}


Exemplo 22
Considere a Gramtica Livre de Contexto na Forma Normal de Greibach:
G = ({S,B}, {a,b}, S, P) com P = { S aB | aSB, B b}

Ento M = ({q
0
, q
1
, q
f
}, {a, b}, {S, B, z}, , q
0
, z, {q
f
}), onde:
(q
0
, , z) = {(q
1
, Sz)},
(q
1
, a, S) = {(q
1
, B)},
(q
1
, a, S) = {(q
1
, SB)},
(q
1
, b, B) = {(q
1
, )},
(q
1
, , z) = {(q
f
, z)}.

L(G) = {ab, aabb, aaabbb, ...} de forma intuitiva
(q
0
, ab, z) (q
1
, ab, Sz)
(q
1
, b, Bz)
(q
1
, , z)
(q
f
, , z) aceita

(q
0
, aabb, z) (q
1
, aabb, Sz)
(q
1
, abb, SBz)
(q
1
, bb, BBz)
(q
1
, b, Bz)
(q
1
, , z)
(q
f
, , z) aceita

(q
0
, aaabbb, z) (q
1
, aaabbb, Sz)
(q
1
, aabbb, SBz)
(q
1
, abbb, SBBz)
(q
1
, bbb, BBBz)
_______________________________________________________________________________________________________________ - 30 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

(q
1
, bb, BBz)
(q
1
, b, Bz)
(q
1
, , z)
(q
f
, , z) aceita


Exemplo 23
Considere a Gramtica Livre de Contexto na Forma Normal de Greibach:
G = ({S,A,B,C}, {a,b,c}, S, P) com P = { S aA, AaABC| bB| a, B b, C c}
Ento M = ({q
0
, q
1
, q
f
}, {a, b, c}, {S, A, B, C, z}, , q
0
, z, {q
f
}), onde:
(q
0
, , z) = {(q
1
, Sz)},
(q
1
, a, S) = {(q
1
, A)},
(q
1
, a, A) = {(q
1
, ABC)},
(q
1
, b, A) = {(q
1
, B)},
(q
1
, a, A) = {(q
1
, },
(q
1
, b, B) = {(q
1
, )},
(q
1
, c, C) = {(q
1
, )},
(q
1
, , z) = {(q
f
, z)}.

A cadeia aaabc pertence a L(G) = L(M) ?
S aA aaABC aaaBC aaabC aaabc
(q
0
, aaabc, z) (q
1
, aaabc, Sz)
(q
1
, aabc, Az)
(q
1
, abc, ABCz)
(q
1
, bc, BCz)
(q
1
, c, Cz)
(q
1
, , z)
(q
f
, , z)


Teorema 04
Se L aceita por um Autmato com Pilha No Determinstico ento L uma Linguagem Livre de
Contexto.


Se for possvel a partir de um Autmato com Pilha No Determinstico M, tal que L = L(M), encontrar
uma Gramtica Livre de Contexto G tal que L(G) = L(M) = L, ento L uma Linguagem Livre de
Contexto.
Seja M = (Q, , , , q
0
, z, F) com as seguintes restries:
F = {q
f
}, ou seja, possui um nico estado final
Todas as Funes de Transio so da forma:
(q
i
, a, A) = {c
1
, c
2
, ..... , c
n
}, onde c
i
= (q
j
, ) ou c
i
= (q
j
, BC)
ou seja, cada movimento incrementa ou decrementa a pilha de um smbolo.
_______________________________________________________________________________________________________________ - 31 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Suponha que uma Gramtica que tenha as variveis da forma (q
i
Aq
j
) * v se no Autmato com Pilha
No Determinstico apaga A da pilha enquanto faz a leitura de v e passa do estado q
i
para q
j
. Apagar A
da pilha significa que A e todos seus efeitos sero removidos da pilha.

Suponha que em tal Gramtica se possa escolher (q
0
zq
f
) como varivel inicial, ento (q
0
zq
f
) * w, ou
seja, o Autmato com Pilha No Determinstico consegue aceitar w partindo de q
0
e indo at qf. Assim a
Linguagem gerada pela Gramtica ser a mesma gerada pelo Autmato com Pilha No Determinstico.

Para criar a Gramtica, segundo essas condies, faz-se:
- a partir das produes da forma: (q
i
, a, A) = (q
j
, ), cria-se as regras de produo na forma:
(q
i
Aq
j
) a

- a partir das produes da forma: (q
i
, a, A) = (q
j
, BC), cria-se as regras de produo na forma:
(q
i
Aq
k
) a(q
j
Bq
l
)(q
l
Cq
k
)
onde q
k
e q
l
so todas os possveis smbolos do conjunto Q do Autmato com Pilha No Determinstico

- escolhe-se o (q
0
zq
f
) como varivel inicial da Gramtica, onde q
0
o smbolo inicial e q
f
, o smbolo final
do Autmato com Pilha No Determinstico.


Exemplo 24
Considere o Autmato com Pilha No Determinstico M = ({q
0
,q
1
,q
2
}, {a,b}, {A,z}, , q
0
, z, {q
2
}) com
(q
0
,a,z) = {(q
0
,Az)}
(q
0
,a,A)={(q
0
,A)}
(q
0
,b,A)={(q
1
,)}
(q
1
,,z)={(q
2
,)}

Vejamos as restries:
F = {q
2
}, ou seja, possui um nico estado final - OK
(q
i
, a, A)={c
1
,c
2
,..,c
n
}, onde c
i
=(q
j
, ) ou c
i
=(q
j
,BC) NO est na forma: (q
0
,a,A)={(q
0
,A)}

Ento se cria a partir de (q
0
,a,A)={(q
0
,A)}, faz-se:
(q
3
,,z)={(q
0
,Az)}
(q
0
,a,A)={(q
3
,)}

Assim tem-se: (q
0
,a,z) = {(q
0
,Az)}
(q
3
,,z)={(q
0
,Az)}
(q
0
,a,A)={(q
3
,)}
(q
0
,b,A)={(q
1
,)}
(q
1
,,z)={(q
2
,)}

Agora temos de encontrar as regras de produo a partir das funes de transio:
- as ltimas trs funes de transio so convertidas diretamente j que so da forma c
i
= (q
j
, ):
(q
0
,a,A)={(q
3
,)}, ento (q
0
Aq
3
) a
(q
0
,b,A)={(q
1
,)}, ento (q
0
Aq
1
) b
(q
1
,,z)={(q
2
,)}, ento (q
1
zq
2
)
_______________________________________________________________________________________________________________ - 32 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03


- as duas primeiras, que so da forma c
i
= (q
j
, BC), geram:
(q
0
,a,z) = {(q
0
,Az)}, ento (q
0
zq
0
) a(q
0
Aq
0
)(q
0
zq
0
)| a(q
0
Aq
1
)(q
1
zq
0
)| a(q
0
Aq
2
)(q
2
zq
0
)| a(q
0
Aq
3
)(q
3
zq
0
)
(q
0
zq
1
) a(q
0
Aq
0
)(q
0
zq
1
)| a(q
0
Aq
1
)(q
1
zq
1
)| a(q
0
Aq
2
)(q
2
zq
1
)| a(q
0
Aq
3
)(q
3
zq
1
)
(q
0
zq
2
) a(q
0
Aq
0
)(q
0
zq
2
)| a(q
0
Aq
1
)(q
1
zq
2
)| a(q
0
Aq
2
)(q
2
zq
2
)| a(q
0
Aq
3
)(q
3
zq
2
)
(q
0
zq
3
) a(q
0
Aq
0
)(q
0
zq
3
)| a(q
0
Aq
1
)(q
1
zq
3
)| a(q
0
Aq
2
)(q
2
zq
3
)| a(q
0
Aq
3
)(q
3
zq
3
)

(q
3
,,z)={(q
0
,Az)}, ento (q
3
zq
0
) (q
0
Aq
0
)(q
0
zq
0
)| (q
0
Aq
1
)(q
1
zq
0
)| (q
0
Aq
2
)(q
2
zq
0
)| (q
0
Aq
3
)(q
3
zq
0
)
(q
3
zq
1
) (q
0
Aq
0
)(q
0
zq
1
)| (q
0
Aq
1
)(q
1
zq
1
)| (q
0
Aq
2
)(q
2
zq
1
)| (q
0
Aq
3
)(q
3
zq
1
)
(q
3
zq
2
) (q
0
Aq
0
)(q
0
zq
2
)| (q
0
Aq
1
)(q
1
zq
2
)| (q
0
Aq
2
)(q
2
zq
2
)| (q
0
Aq
3
)(q
3
zq
2
)
(q
3
zq
3
) (q
0
Aq
0
)(q
0
zq
3
)| (q
0
Aq
1
)(q
1
zq
3
)| (q
0
Aq
2
)(q
2
zq
3
)| (q
0
Aq
3
)(q
3
zq
3
)

- varivel inicial (q
0
zq
f
) = (q
0
zq
2
)

Ento a Gramtica Livre de Contexto G = (V, {a,b}, (q
0
zq
2
), P) onde P so as produes acima e V o
conjunto formado por todas as variveis geradas: {(q
0
Aq
3
), (q
0
Aq
1
), (q
1
zq
2
), (q
0
zq
0
), (q
0
zq
1
), (q
0
zq
2
),
(q
0
zq
3
), (q
0
Aq
0
), (q
0
zq
0
), ...}

Verifiquemos se a cadeia aab aceita pelo Autmato M e pela Gramtica G:
(q
0
, aab, z) (q
0
, ab, Az)
(q
3
, b, z)
(q
0
, b, Az)
(q
1
, , z)
(q
2
, , ) ACEITA

(q
0
zq
2
) a(q
0
Aq
3
)(q
3
zq
2
)
aa(q
3
zq
2
)
aa(q
0
Aq
1
)(q
1
zq
2
)
aab(q
1
zq
2
)
aab ACEITA




7.3. Autmato com Pilha Determinstico

Definio 10

Um Autmato com Pilha Determinstico, M = (Q, , , , q
0
, z, F) um Autmato com Pilha No
Determinstico sujeito as seguintes restries, para todo q Q, a {} e b :
(1) (q,a,b) contm ao menos um elemento
(2) se (q,,b) no vazio, ento (q,c,b) deve ser vazio para todo c


_______________________________________________________________________________________________________________ - 33 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Exemplo 25
Seja L = { ww
R
| w {a,b}+} e M = ({q
0
,q
1
,q
2
}, {a,b}, {a,b,z},, q
0
, z, {q
2
}) com as funes de transio:
(q
0
,a,a) = {(q
0
,aa)}
(q
0
,b,a) = {(q
0
,ba)}
(q
0
,a,b) = {(q
0
,ab)}
(q
0
,b,b) = {(q
0
,bb)}
(q
0
,a,z) = {(q
0
,az)}
(q
0
,b,z) = {(q
0
,bz)}
(q
0
,,a) = {(q
1
,a)}
(q
0
,,b) = {(q
1
,b)}
(q
1
,a,a) = {(q
1
,)}
(q
1
,b,b) = {(q
1
,)}
(q
1
,,z) = {(q
2
,z)}
M no determinstico, j que (q
0
,,a) = {(q
1
,a)} e (q
0
,a,a) = {(q
0
,aa)} vazio ....


Exemplo 26
Seja L = {a
n
b
n
| n 0} com M = ({q
0
,q
1
,q
2
}, {a,b}, {0,1},, q
0
, 0, {q
0
}) com as funes de transio:
(q
0
,a,0) = {(q
1
,10)}
(q
1
,a,1) = {(q
1
,11)}
(q
1
,b,1) = {(q
2
, )}
(q
2
,b,1) = {(q
2
, )}
(q
2
,,0) = {(q
0
, )}
M determinstico, j que (q
2
,,0) = {(q
0
, )} e (q
2
,a,0) = (q
2
,b,0) = {}


Definio 11

L dita ser uma Linguagem Livre de Contexto Determinstica se e somente se existe um Autmato com
Pilha Determinstico M tal que L = L(M).


Como no exemplo 26, M determinstico ento L = {a
n
b
n
| n 0} uma Linguagem Livre de Contexto
Determinstica.










_______________________________________________________________________________________________________________ - 34 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

8. Propriedades das Linguagens Livres de Contexto


8.1. Lema do Bombeamento

Lema:
Se L uma Linguagem Livre de Contexto, ento existe uma constante m 0 tal que para qualquer
palavra w L com | w | m, w pode ser decomposta como w = uvxyz com | vxy | m, | vy | 1 tal que
uv
i
xy
i
z palavra de L, i 0.


Exemplo 27:
Seja a Linguagem L = {a
n
b
n
c
n
| n 0}.
Aplicando o Lema do Bombeamento, w = uvxyz = a
r
b
r
c
r
com | vxy | r, | vy | 1 e para i 0,
uv
i
xy
i
z tem de ser uma palavra de L.
Supondo que vy possui os smbolos a e c, x deve conter smbolos b. S que uv
i
xy
i
z no palavra de L, j
que tem desbalanceamento no nmero de a, b e c.


8.2. Operaes sobre as Linguagens Livres de Contexto

Teorema 05
A Classe das Linguagens Livres de Contexto fechada para as operaes de Unio e Concatenao.


Prova - Unio
Sejam L
1
e L
2
duas Linguagens Livres de Contexto geradas, respectivamente, pelas Gramticas Livres de
Contexto G
1
= (V
1
, T
1
, S
1
, P
1
) e G
2
= (V
2
, T
2
, S
2
, P
2
). Considere L
3
= L
1
L
2
, ento G
3
= (V
3
, T
3
, S
3
, P
3
)
(S
3
V
1
V
2
) tal que
V
3
= V
1
V
2
{S
3
},
T
3
= T
1
T
2
e
P
3
= P
1
P
2
{S
3
S
1
|S
2
}
Suponha w L
1
, ento w L
3
, j que S
3
S
1
* w.
Suponha v L
2
, ento v
L3
, j que S
3
S
2
* v.
Portanto L
3
= L(G
3
) uma Linguagem Livre de Contexto.

Pode-se provar tambm usando Autmatos com Pilha No Determinsticos.
Sejam L
1
e L
2
duas Linguagens Livres de Contexto aceitas, respectivamente, pelos Autmatos com Pilha
No Determinsticos M
1
= (Q
1
,
1
,
1
,
1
, q
01
, z
1
, F
1
) e M
2
= (Q
2
,
2
,
2
,
2
, q
02
, z
2
, F
2
). Seja M
3
= (Q
3
,
3
,

3
,
3
, q
03
, z
3
, F
3
) com q
03
Q
1
Q
2
, z
3
z
1
z
2
, tal que
Q
3
= Q
1
Q
2
{q
03
}

3
=
1

2
,

3
=
1

2
{z
3
}
F
3
= F
1
F
2

Dessa forma, M3 reconhece L
1
L
2


_______________________________________________________________________________________________________________ - 35 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Prova Concatenao
Retomando a prova para Unio acima usando Gramtica Livre de Contexto, pode-se definir G
4
= (V
4
, T
4
,
S
4
, P
4
) (S
4
V
1
V
2
) tal que
V
4
= V
1
V
2
{S
4
},
T
4
= T
1
T
2
e
P
4
= P
1
P
2
{S
4
S
1
S
2
}
Ento L(G
4
) = L(G
1
)L(G
2
) que possui como prefixo uma cadeia de L
1
e como sufixo uma cadeia de L
2
.

Se construir G
5
= (V
5
, T
5
, S
5
, P
5
) (S
5
V
1
) tal que
V
5
= V
1
{S
5
},
T
5
= T
1

P
5
= P
1
{S
5
S
1
S
5
|}
Ento L(G
5
) = L(G
1
)*


Teorema 06
A Classe das Linguagens Livres de Contexto no fechada para as operaes de Interseco e
Complemento.


Prova Interseco.
Faamos a prova com um contra-exemplo.
Considere as Linguagens Livres de Contexto L
1
= {a
n
b
n
c
m
| n 0, m 0} e L
2
= {a
n
b
m
c
m
| n 0, m 0}.
Seja L = L
1
L
2
= {a
n
b
n
c
n
| n 0} no uma Linguagem Livre de Contexto.

Prova Complemento
Sabe-se que
2 1 2 1
L L L L = . Como para a interseco a operao no fechada, ento tambm no o
para o complemento.


Teorema 07
Seja L
1
uma Linguagem Livre de Contexto e L
2
uma Linguagem Regular. Ento L
1
L
2
uma
Linguagem Livre de Contexto.


Prova
Seja M
1
= (Q, , ,
1
, q
0
, z, F
1
) um Autmato com Pilha No Determinstico que aceita L
1
e M
2
= (P, ,

2
, p
0
, F
2
) um Autmato Finito Determinstico que aceita L
2
.

Seja M
3
= (Q
3
, , ,
3
, q
03
, z, F
3
) um Autmato com Pilha No Determinstico que aceita L = L
1
L
2

Onde Q3 = Q x P,
q03 = (q01,p0),
F3 = F1 x F2,

3
definido tal que ((q
k
,p
l
),x)
3
((q
i
,p
j
),a,b), se e somente se (q
k
,x)
1
(q
i
,a,b) e
2
(p
j
,a) = p
l
.
se a = , ento p
j
= p
l
.

_______________________________________________________________________________________________________________ - 36 -
Teoria da Computao e Linguagens Formais - Simone Domingues Prado Apostila 03

Assim uma cadeia aceita por M
3
se e somente se ela aceita por M
1
e por M
2
ou seja, se ela est em
L(M
1
) L(M
2
) = L
1
L
2
.


Exemplo 28
A linguagem L = {a
n
b
n
| n 0, n 100} uma Linguagem Livre de Contexto.
Seja L
1
= {a
n
b
n
| n 0} e L
2
= {a
100
b
100
}, onde L
1
uma Linguagem Livre de Contexto e L
2
uma
Linguagem Regular,
2
L tambm Regular. Ento L1
2
L = L Livre de Contexto.

Você também pode gostar