Buscar

LFA II - Manual

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagens Formais e Autómatos 
78 
Capítulo 7 
 
Minimização de Autómatos Finitos Determinísticos. 
Lema de Repetição para LR’s 
 
É natural colocar a seguinte questão: exixtirá entre todos os autómatos reconhecendo uma 
linguagem algum que se possa dizer, num certo sentido, o mais simples de todos? Por exemplo, 
tem o número mínimo de estados. Vamos ver que sim. 
Existem muitos algoritmos para receber um autómato mínimo ou para minimizar um 
autómato dado. 
Vamos minimizar um AFD dado utilizando o conceito dos estados equivalentes. 
Seja 𝐴 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0) um AFD, introduzimos uma relação 𝑅𝐿
∗ em 𝑄. 
Definição 7.1. 
𝑅𝐿
∗ = {(𝑝, 𝑞)| 𝑝, 𝑞 ∈ 𝑄 𝑒 ∀𝑤 ∈ Σ∗(𝛿(𝑝, 𝑤) ∈ 𝐹 ⟺ 𝛿(𝑞, 𝑤) ∈ 𝐹)} 
 
 
 
 
 
 
Teorema 7.1. 𝑅𝐿
∗
 é uma relação de equivalência. 
Demonstração. Problema Proposto. 
 
Exemplo 7.1. (𝑝, 𝑞) ∉ 𝑅𝐿
∗
 se 𝑝 ∈ 𝐹, 𝑞 ∉ 𝐹. 
Solução. Seja 𝑤 = 𝜆. 𝛿(𝑝, 𝜆) ∈ 𝐹 𝑒 𝛿(𝑞, 𝜆) ∉ 𝐹 . 
 
𝐹 
 
𝑄 𝑤 
𝑤 
𝑝 
𝑞 
∉ 𝑅𝐿
∗ 
 Linguagens Formais e Autómatos 
79 
Construção de AFD mínimo 
 
Para minimizar um AFD dado (encontrar AFD reduzido) é preciso achar relação 𝑅𝐿
∗. Para 
encontrar 𝑅𝐿
∗ construímos o digrafo etiquetado 𝐺: No início eliminamos os estados não acessíveis 
do estado inicial (se existir). Cada vértice de 𝐺 é um par não ordenado de estados. 
Seja 𝑈 = {(𝑞𝑖 , 𝑞𝑗)| 𝑞𝑖 ∈ 𝐹, 𝑞𝑗 ∉ 𝐹}. Para cada (𝑞𝑖 , 𝑞𝑗) ∉ 𝑈 e 𝑖 ≠ 𝑗 e 𝑎 ∈ Σ construímos o arco 
 
 
(𝑞𝑖 , 𝑞𝑗) ∈ 𝑅𝐿
∗ se e só se não existe o caminho em 𝐺 de (𝑞𝑖 , 𝑞𝑗) para um vértice que pertence a 𝑈 
(vértice “mal”). 
Exemplo 7.2. Achar um AFD mínimo 𝐴1 para AFD 𝐴: 
 
 
 
 
 
 
Solução. Todos os estados são acessíveis do estado inicial. 
 
 
 
 
 
 
 
 
 
𝑞𝑖, 𝑞𝑗 𝛿(𝑞𝑖 , 𝑎), 𝛿(𝑞𝑗 , 𝑎) 
a 
1 0 
0,1 
1 
1 
0 
𝐴: 
0 
𝑞1 𝑞3 
𝑞0 
𝑞5 
𝑞4 𝑞2 
1 
1 
0 
0 
𝑞0, 𝑞1 𝑞0, 𝑞4 
𝑞5, 𝑞5 
1 
1 
0 
1 
𝑞1, 𝑞4 𝑞2, 𝑞3 
𝑞4, 𝑞5 𝑞2, 𝑞5 
𝑞4, 𝑞4 
𝑞3, 𝑞5 
1 
1 
0 
0 
vértice 
“mal” 
1 
0 
0 
0 
 Linguagens Formais e Autómatos 
80 
Assim, (𝑞0, 𝑞1) ∈ 𝑅𝐿
∗, (𝑞2, 𝑞3) ∈ 𝑅𝐿
∗ 
𝑅𝐿
∗ = {(𝑞0, 𝑞0), (𝑞1, 𝑞1), (𝑞2, 𝑞2), (𝑞3, 𝑞3), (𝑞4, 𝑞4), (𝑞5, 𝑞5), (𝑞0, 𝑞1), (𝑞1, 𝑞0), (𝑞2, 𝑞3), (𝑞3, 𝑞2)} 
[𝑞0] = {𝑞0, 𝑞1} = [𝑞1], [𝑞2] = {𝑞2, 𝑞3} = [𝑞3], [𝑞4] = {𝑞4}, [𝑞5] = {𝑞5}. 
𝑄 𝑅𝐿
∗⁄ = {{𝑞0, 𝑞1}, {𝑞2, 𝑞3}, {𝑞4}, {𝑞5}} − 𝑐𝑜𝑛𝑗𝑢𝑛𝑡𝑜 𝑞𝑢𝑜𝑐𝑖𝑒𝑛𝑡𝑒. 
 
 
 
 
 
O autómato mínimo para 𝐴 é 𝐴1: 
 
 
 
 
 
𝐿(𝐴) = 𝐿(𝐴1). 
 
Lema de Repetição para LR’s 
 
Lema de Repetição para LR’s é um dos resultados básicos sobre linguagens regulares. Este 
lema tem vários nomes: Pumping Lemma, Teorema de abcesso, 𝑢𝑣𝑤 – Teorema e aplica-se, de 
costume, para demonstrar que algumas linguagens não são regulares. 
Teorema 7.2. (Lema de Repetição para LR’s) 
 Seja 𝐿 uma linguagem regular. Então existe uma constante (inteiro positivo) 𝑛 que depende 
de 𝐿 tal que se 𝑥 é qualquer palavra de 𝐿 e |𝑥| ≥ 𝑛 então podemos representar 𝑥 = 𝑢𝑣𝑤 onde: 
* 
𝑞1 𝑞3 𝑞0 𝑞5 𝑞4 𝑞2 
* 
𝑞0, 𝑞1 
1 1 
0 0 
1 
0,1 
𝑞5 𝑞4 
0 
𝑞2, 𝑞3 𝐴1: 
 Linguagens Formais e Autómatos 
81 
1) |𝑢𝑣| ≤ 𝑛; 
2) |𝑣| ≥ 1 (𝑣 ≠ 𝜆); 
3) para todo 𝑘 ≥ 0, 𝑢𝑣𝑘𝑤 ∈ 𝐿. 
Demonstração. Seja 𝐿 uma linguagem regular. Pelo Teorema de Kleene existe um AFD 𝐴 que 
aceita 𝐿. Sem perda de generalidade podemos supor que o autómato 𝐴 é mínimo. Suponhamos que 
𝐴 tem 𝑛 estados e 𝑥 ∈ 𝐿 tal que |𝑥| ≥ 𝑛. O caminho de computação de 𝑥 envolve |𝑥| arcos e logo 
|𝑥| + 1 estados (vértices). Como 𝐴 tem 𝑛 estados então neste caminho alguns estados devem 
repetir-se. Seja 𝑞𝑖 o primeiro estado que se repete. O caminho de computação de 𝑥 podemos 
representar assim: 
 
 
 
 
Logo, 𝑥 = 𝑢𝑣𝑤 onde |𝑢𝑣| ≤ 𝑛, |𝑣| ≥ 1 e para todo 𝑘 ≥ 0, 𝑢𝑣𝑘𝑤 ∈ 𝐿. 
 
Problemas resolvidos 
 
7.1. Seja 𝐿(𝐴) = (0 + 1)∗101(0 + 1)∗. Achar constante 𝑛 que existe pelo Lema de Repetição. 
Escolher uma palavra 𝑥 ∈ 𝐿 tal que |𝑥| ≥ 𝑛. Representar 𝑥 na forma 𝑥 = 𝑢𝑣𝑤 onde 
|𝑢𝑣| ≤ 𝑛, |𝑣| ≥ 1. Verificar que 𝑢𝑤 ∈ 𝐿 e 𝑢𝑣2𝑤 ∈ 𝐿. 
Solução. Vamos inicialmente construir AFD 𝐴 tal que 𝐿(𝐴) = (0 + 1)∗101(0 + 1)∗. 
 
 
 
 
 
Assim, 𝑛 = 4 é o número de estados de 𝐴. 
v 
𝑞0 𝑞𝑖 𝑞𝑓 
w u 
1 
𝑞0 𝑞1 𝑞3 
0 
𝑞2 
1 
0,1 
0 
0 
1 
𝐴: 
 Linguagens Formais e Autómatos 
82 
Seja 𝑥 = 1101. Então |𝑥| ≥ 4 e 𝑥 ∈ 𝐿. 𝑥 = 𝑢𝑣𝑤 onde 𝑢 = 1, 𝑣 = 1, 𝑤 = 01. 
O caminho de computação de 𝑢 = 1 é , todos os estados são diferentes. 
O caminho de computação de 𝑢𝑣 = 11 é , 𝑞1 é o primeiro 
estado que se repete. Assim, |𝑢𝑣| = |11| = 2 ≤ 4, |𝑣| = |1| = 1 ≥ 1, o caminho de 
computação da palavra 𝑥 = 𝑢𝑣𝑤 = 1101 tem a forma: 
 
 
 
 
 
 
𝑢𝑤 = 101 ∈ 𝐿, 𝑢𝑣2𝑤 = 11101 ∈ 𝐿. 
 
Seja 𝑥 = 100101. Então |𝑥| = 6 ≥ 4 e 𝑥 ∈ 𝐿. 𝑥 = 𝑢𝑣𝑤 onde 𝑢 = 𝜆, 𝑣 = 100, 𝑤 = 101. 
O caminho de computação de 𝑢 = 𝜆 é , o caminho de computação de 𝑢𝑣 = 100 é 
 , 𝑞0 é o primeiro estado que se repete. 
Assim, |𝑢𝑣| = |100| = 3 ≤ 4, |𝑣| = |100| = 3 ≥ 1, o caminho de computação da 
palavra 𝑥 = 𝑢𝑣𝑤 = 100101 tem a forma: 
 
 
 
 
 
 
 
 
𝑢𝑤 = 101 ∈ 𝐿, 𝑢𝑣2𝑤 = 100100101 ∈ 𝐿. 
 
𝑞0 𝑞1 
1 
1 
𝑞0 𝑞1 
1 
𝑞1 
1 
𝑞0 𝑞1 𝑞3 
0 
𝑞2 
1 
v 
u 
w 
1 
𝑢 = 1, 𝑣 = 1, 𝑤 = 01 
𝑞0 
0 
𝑞0 𝑞1 
1 
𝑞2 
0 
𝑞0 
1 
𝑞0 𝑞1 𝑞3 
0 
𝑞2 
1 
1 
0 
0 
1 
𝑞1 𝑞2 
v 
w 
𝑢 = 𝜆, 𝑣 = 100, 𝑤 = 101 
 Linguagens Formais e Autómatos 
83 
7.2. Achar um AFD mínimo 𝐴1 para AFD 𝐴: 
 
 
 
 
 
 
Solução. Todos os estados são acessíveis do estado inicial. 
 
 
 
 
 
 
 
 
 
 
 
 
Assim, (2,4) ∈ 𝑅𝐿
∗, (3,5) ∈ 𝑅𝐿
∗ 
𝑅𝐿
∗ = {(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (2, 4), (4, 2), (3, 5), (5, 3)} 
[1] = {1}, [2] = {2, 4} = [4], [3] = {3, 5} = [5]. 
𝑄 𝑅𝐿
∗⁄ = {{1}, {2, 4}, {3, 5}} − 𝑐𝑜𝑛𝑗𝑢𝑛𝑡𝑜 𝑞𝑢𝑜𝑐𝑖𝑒𝑛𝑡𝑒. 
 
 
 
* 
4 1 5 3 2 
a 
b 
b 
b 𝐴: 
a 
a,b 
1 2 
4 
3 
a 
5 
a,b 
1, 2 
1, 4 
b 
b 
a 
2, 4 3, 5 
4, 5 
3, 3 
2, 3 
5, 5 
a,b 
- vértice “mal” 
 
a 
b 
a 
- vértice “mal” 
 Linguagens Formais e Autómatos 
84 
O autómato mínimo para 𝐴 é 𝐴1: 
 
 
 
 
7.3. Demonstrar que a linguagem 𝐿 = {0𝑛1𝑛| 𝑛 ≥ 0} não é LR, utilizando o Lema de Repetição. 
Solução. Demonstramos que 𝐿 não é LR pelo método de redução à contradição. 
Suponhamos que 𝐿 é uma LR. Pelo Lema de Repetição deve existir um número 𝑛 tal que se 𝑥 ∈ 𝐿 
e |𝑥| ≥ 𝑛 então 𝑥 = 𝑢𝑣𝑤 onde |𝑢𝑣| ≤ 𝑛, |𝑣| ≥ 1 e para todo 𝑘 ≥ 0, 𝑢𝑣𝑘𝑤 ∈ 𝐿. 
Vamos escolher um número 𝑚 > 𝑛. 
A palavra 𝑥 = 0𝑚1𝑚 ∈ 𝐿 e |𝑥| = |0𝑚1𝑚| = 2𝑚 > 𝑛. Assim, 𝑥 = 𝑢𝑣𝑤 onde 𝑢, 𝑣, 𝑤 satisfazem 
as conclusões do Lema de Repetição. Logo, |𝑢𝑣| ≤ 𝑛, |𝑣| ≥ 1 e 𝑢𝑣𝑘𝑤 ∈ 𝐿 para todo 𝑘 ≥ 0. 
Como 𝑚 > 𝑛 e 𝑚 é o número de 0’s em 𝑥 e |𝑢𝑣| ≤ 𝑛 < 𝑚 então 𝑢𝑣 tem só 0’s. 
 
 
 
Pelo Lema de Repetição 𝑢𝑣2𝑤 ∈ 𝐿. 
Mas o número de 0’s de 𝑢𝑣2𝑤 é maior do que o número de 1’s, |𝑢𝑣2𝑤|0 > |𝑢𝑣
2𝑤|1. 
Logo, 𝑢𝑣2𝑤 ∉ 𝐿. É uma contradição. 
Assim, 𝐿 não é LR. 
7.4. Demonstrar que a linguagem 𝐿 = {1𝑛
2
| 𝑛 = 1,2, … } não é LR, utilizando o Lema de 
Repetição. 
Solução. Demonstramos que𝐿 não é LR pelo método de redução à contradição. 
a,b a,b 
a,b 
1 2, 4 3, 5 𝐴1: 
v u w 
𝑥 = 00 … 0 11 … 1 
m m 
 Linguagens Formais e Autómatos 
85 
Suponhamos que 𝐿 é uma LR. Pelo Lema de Repetição deve existir um número 𝑛 tal que se 𝑥 ∈ 𝐿 
e |𝑥| ≥ 𝑛 então 𝑥 = 𝑢𝑣𝑤 onde |𝑢𝑣| ≤ 𝑛, |𝑣| ≥ 1 e para todo 𝑘 ≥ 0, 𝑢𝑣𝑘𝑤 ∈ 𝐿. 
Seja 𝑥 = 1𝑛
2
onde 𝑛 é constante que existe pelo Lema de Repetição. Logo, |𝑥| = |1𝑛
2
| =
𝑛2 > 𝑛, 𝑥 ∈ 𝐿 e 𝑥 = 𝑢𝑣𝑤 onde |𝑢𝑣| ≤ 𝑛, 𝑛2 = |𝑥| = |𝑢𝑣𝑤| < |𝑢𝑣2𝑤| = |𝑢𝑣𝑤| + |𝑣| =
𝑛2 + |𝑣| ≤ 𝑛2 + 𝑛 < 𝑛2 + 2𝑛 + 1 = (𝑛 + 1)2 
Assim, 𝑛2 < |𝑢𝑣2𝑤| < (𝑛 + 1)2. 
Pelo Lema de Repetição 𝑢𝑣2𝑤 ∈ 𝐿, mas por outro lado 𝑢𝑣2𝑤 não é um quadrado perfeito e 
𝑢𝑣2𝑤 ∉ 𝐿. É uma contradição. Assim, 𝐿 não é LR. 
 
7.5. Demonstrar que 𝐿 = {1𝑝| 𝑝 ∈ ℙ − 𝑡𝑜𝑑𝑜𝑠 𝑜𝑠 𝑛ú𝑚𝑒𝑟𝑜𝑠 𝑝𝑟𝑖𝑚𝑜𝑠} não é LR, utilizando Lema 
de Repetição. 
Solução. Demonstramos que 𝐿 não é LR pelo método de redução à contradição. 
Suponhamos que 𝐿 é uma LR. Pelo Lema de Repetição deve existir um número 𝑛 tal que se 𝑥 ∈ 𝐿 
e |𝑥| ≥ 𝑛 então 𝑥 = 𝑢𝑣𝑤 onde |𝑢𝑣| ≤ 𝑛, |𝑣| ≥ 1 e para todo 𝑘 ≥ 0, 𝑢𝑣𝑘𝑤 ∈ 𝐿. 
Consideremos um número primo 𝑝 > 𝑛. Então, 1𝑝 ∈ 𝐿 e |1𝑝| = 𝑝 > 𝑛. Seja |𝑢| + |𝑤| = 𝑖, 
|𝑣| = 𝑗. Para todo 𝑘 ≥ 0, 𝑢𝑣𝑘𝑤 ∈ 𝐿, logo |𝑢𝑣𝑘𝑤| = |𝑢𝑤| + 𝑘|𝑣| = 𝑖 + 𝑘𝑗 é um número primo. 
Se 𝑘 = 0 então 𝑖 + 𝑘𝑗 = 𝑖 é um número primo e 𝑖 ≥ 2. 
Se 𝑘 = 𝑖 então 𝑖 + 𝑘𝑗 = 𝑖 + 𝑖𝑗 = 𝑖(1 + 𝑗) não é um número primo. É produto de dois números 
onde cada factor é maior ou igual a 2(𝑖 ≥ 2, 1 + 𝑗 = 1 + |𝑣| ≥ 2). 
Assim, por um lado, pelo Lema de Repetição, 𝑖 + 𝑘𝑗 é um número primo para todo 𝑘 ≥ 0, por 
outro lado para 𝑘 = 𝑖, 𝑖 + 𝑘𝑗 = 𝑖 + 𝑖𝑗 = 𝑖(1 + 𝑗). É uma contradição. Assim, 𝐿 não é LR. 
 
 
 
 Linguagens Formais e Autómatos 
86 
Problemas propostos 
 
7.6. Achar um AFD mínimo para AFD 𝐴: 
 
 
 
 
 
7.7. Achar um AFD mínimo para AFD 𝐴: 
 
 
 
 
 
 
 
7.8. Achar um AFD mínimo para AFD 𝐴: 
 
 
 
 
 
7.9. Achar um AFD mínimo para AFD 𝐴: 
 
 
 
 
 
7.10. Seja 𝐿(𝐴) = (0 + 1)∗011(0 + 1)∗. Construir AFD 𝐴 tal que 𝐿(𝐴) = 𝐿. Achar constante 𝑛 
que existe pelo Lema de Repetição. 
 ↓ ∗ ∗ 
𝛿 1 2 3 4 5 6 7 8 
𝑎 1 3 4 3 4 6 2 3 
𝑏 4 1 2 5 6 3 4 1 
 ↓ ∗ ∗ 
𝛿 1 2 3 4 5 6 7 8 
𝑎 3 8 7 6 1 2 1 5 
𝑏 5 7 2 2 8 3 4 1 
a 
b 
b 
𝐴: 
a 
b 
1 2 3 
a 
1 
𝑞0 𝑞1 𝑞3 
0 
𝑞2 
1 
0,1 
0 
0 
1 
𝐴: 
𝐴: 
𝐴: 
 Linguagens Formais e Autómatos 
87 
a) Escolher uma palavra 𝑥 ∈ 𝐿 e |𝑥| ≥ 𝑛. Representar 𝑥 na forma 𝑥 = 𝑢𝑣𝑤, |𝑢𝑣| ≤ 𝑛,
|𝑣| ≥ 1, para todo 𝑘 ≥ 0, 𝑢𝑣𝑘𝑤 ∈ 𝐿. 
b) Seja 𝑥 = 0111. Representar 𝑥 na forma 𝑥 = 𝑢𝑣𝑤, |𝑢𝑣| ≤ 𝑛, |𝑣| ≥ 1. Escrever 
separadamente 𝑢, 𝑣 e 𝑤. 
c) Fazer a mesma coisa para 𝑥 = 01111. 
 
7.11. Demonstrar que as linguagens seguintes não são LR’s: 
a) 𝐿 = {𝑎𝑛
3
| 𝑛 ≥ 1}; 
b) 𝐿 = {𝑎𝑛𝑏𝑛𝑐𝑛| 𝑛 ≥ 1}; 
c) 𝐿 = {𝑤𝑤𝑅| 𝑤 ∈ {0,1}∗}; 
d) 𝐿 = {0𝑖1𝑗| 𝑖 = 2𝑗}; 
e) 𝐿 = {0𝑖1𝑗| 𝑖 ≥ 0, 𝑗 ≥ 𝑖}; 
f) 𝐿 = {𝑤|𝑤 ∈ {0,1, … ,9, +, (, )}∗, 𝑤 é 𝑢𝑚𝑎 𝑒𝑥𝑝𝑟𝑒𝑠𝑠ã𝑜 𝑎𝑟𝑖𝑡𝑚é𝑡𝑖𝑐𝑎 
𝑠𝑖𝑛𝑡𝑎𝑐𝑡𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑒 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑎}; 
g) 𝐿 = {0𝑖1𝑗| 𝑖 ≠ 𝑗}. 
 
7.12. 
 
 
 
 
 
 
a) Construir AFD 𝐴1 tal que 𝐿(𝐴1) = 𝐿(𝐴). 
b) Achar AFD mínimo para AFD 𝐴1. 
a,b 
b 
𝑞0 𝑞2 
𝑞1 𝑞3 
b 
a 
a 𝐴: 
 Linguagens Formais e Autómatos 
88 
Respostas 
 
7.6. 
 
 
 
7.7. AFD 𝐴 já é mínimo. 
 
7.8. 
 
 
 
 
 
 
7.9. 
 
 
 
 
 
 
7.10. b) 𝑥 = 0111, 𝑢 = 011, 𝑣 = 1, 𝑤 = 𝜆 
 c) 𝑥 = 01111, 𝑢 = 011, 𝑣 = 1, 𝑤 = 1. 
 
7.11. g) Sugestão. (𝐿 ⊂ 0∗1∗). 
 
 
7.12. b) 
a 
b 
a,b 
1 2, 3 
a 
b 
b 
a 
b 
1,6 
2,5 
3,4 
a 
a 
b b 
a 
b 
1,2 
5,6,7 
3,4,8 
a 
a,b 
 Linguagens Formais e Autómatos 
89 
Capítulo 8 
 
Gramáticas e Linguagens Formais. A hierarquia de Chomsky. 
Autómatos e Gramáticas Regulares 
 
Como já sabemos existem as linguagens não regulares, não são reconhecíveis por autómatos 
finitos. Isto leva-nos a pensar que a classe das linguagens regulares é muito restrita. Realmente, 
linguagens regulares aplicam-se na elaboração de compiladores para criar identificadores. 
Introduzimos outros instrumentos para trabalhar com linguagens que se chamam gramáticas. 
Definição 8.1. Uma gramática 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) é um sistema de quatro elementos onde: 
1) 𝑁 é um conjunto finito de símbolos não terminais. 
2) 𝑇 é um conjunto finito de símbolos terminais, 𝑁 ∩ 𝑇 = ∅ e põe-se 𝑉 = 𝑁 ∪ 𝑇. 
3) 𝑃 ⊂ 𝑉∗𝑁 𝑉∗ × 𝑉∗ subconjunto finito dito produções. Cada produção (𝛼, 𝛽) ∈ 𝑃 vamos 
representar na forma 𝛼 → 𝛽 onde 𝛼 chama-se cabeça e 𝛽 chama-se corpo de produção. É 
importante que a cabeça de cada produção sempre tem pelomenos um símbolo não 
terminal. 
4) 𝑆 ∈ 𝑁 é o símbolo inicial. 
Se tivermos as produções com mesma cabeça, 𝛼 → 𝛽1, 𝛼 → 𝛽2, … , 𝛼 → 𝛽𝑛, podemos abreviar, 
escrevendo 𝛼 → 𝛽1|𝛽2| … |𝛽𝑛. 
Sejam 𝑢, 𝑣 ∈ 𝑉∗. Escrevemos 𝑢 ⇒ 𝑣 e dizemos que 𝑣 deriva directamente de 𝑢 se 
existem 𝑥, 𝑦 ∈ 𝑉∗ e uma produção 𝛼 → 𝛽 tais que 𝑢 = 𝑥𝛼𝑦 e 𝑣 = 𝑥𝛽𝑦. 
 
 
 
 
 
x α y 
x β y 
𝑢 = 
 
𝑣 = 
 
𝛼 → 𝛽 ∈ 𝑃, 𝑢 ⇒ 𝑣 
 Linguagens Formais e Autómatos 
90 
Escrevemos 𝑢 ⇒∗ 𝑣 e dizemos que 𝑣 deriva de 𝑢 se 𝑢 = 𝑣 ou existem 𝑤0, 𝑤1, … , 𝑤𝑛 ∈ 𝑉
∗ tais 
que 𝑢 = 𝑤0 ⇒ 𝑤1 ⇒ ⋯ ⇒ 𝑤𝑛 = 𝑣. Dizemos neste caso que 𝑑: 𝑢 ⇒ 𝑤1 ⇒ ⋯ ⇒ 𝑣 é uma 
derivação em 𝐺, o número 𝑛 diz-se o comprimento de derivação e denota-se por |𝑑|. 
Nota 8.1. No caso 𝑢 = 𝑣, |𝑑| = 0. O símbolo 𝑢 ⇒+ 𝑣 significa que |𝑑| ≥ 1. 
Definição 8.2. Uma palavra 𝑤 ∈ 𝑉∗ chama-se forma sentencial se 𝑆 ⇒∗ 𝑤. Uma palavra 
𝑤 ∈ 𝑇∗ chama-se sentença se 𝑆 ⇒∗ 𝑤. 
Definição 8.3. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) uma gramática. A linguagem gerada pela gramática 𝐺 (por 
vezes também dita linguagem da gramática 𝐺) é a linguagem 
𝐿(𝐺) = {𝑤|𝑤 ∈ 𝑇∗, 𝑆 ⇒∗ 𝑤}. 
Definição 8.4. Duas gramáticas 𝐺1 e 𝐺2 dizem-se equivalentes se gerem a mesma linguagem, isto 
é 𝐿(𝐺1) = 𝐿(𝐺2). Neste caso escrevemos que 𝐺1~𝐺2. 
Exemplo 8.1. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) onde 𝑁 = {𝑆}, 𝑇 = {𝑎, 𝑏}, 𝑃 = {𝑆 → 𝜆 | 𝑎𝑆𝑏}. Achar 𝐿(𝐺). 
Solução. Vamos encontrar algumas palavras concretas que pertencem a 𝐿(𝐺). 
𝑆 ⇒ 𝜆 ∈ 𝐿(𝐺); 
𝑆 ⇒ 𝑎𝑆𝑏 ⇒ 𝑎𝜆𝑏 = 𝑎𝑏 ∈ 𝐿(𝐺); 
𝑆 ⇒ 𝑎𝑆𝑏 ⇒ 𝑎𝑎𝑆𝑏𝑏 ⇒ 𝑎𝑎𝑏𝑏 = 𝑎2𝑏2 ∈ 𝐿(𝐺); 
𝑆 ⇒ 𝑎𝑆𝑏 ⇒ 𝑎2𝑆𝑏2 ⇒ ⋯ ⇒ 𝑎𝑛𝑆𝑏𝑛 ⇒ 𝑎𝑛𝑏𝑛 ∈ 𝐿(𝐺). 
Assim, se 𝑤 ∈ 𝐿(𝐺) então 𝑤 = 𝑎𝑛𝑏𝑛 isto é 𝐿(𝐺) ⊆ {𝑎𝑛𝑏𝑛 | 𝑛 ≥ 0}. 
Vamos demonstrar que {𝑎𝑛𝑏𝑛 | 𝑛 ≥ 0} ⊆ 𝐿(𝐺). 
Se 𝑢 ∈ 𝐿(𝐺) então 𝑆 ⇒∗ 𝑢 e 𝑆 ⇒ 𝑎𝑆𝑏 ⇒∗ 𝑎𝑢𝑏. 
Assim, se 𝑢 ∈ 𝐿(𝐺) então 𝑎𝑢𝑏 ∈ 𝐿(𝐺). 
 
Agora, utilizando a indução matemática demonstraremos que 𝑎𝑛𝑏𝑛 ∈ 𝐿(𝐺) para todo 𝑛 ≥ 0. 
(Base) 𝑛 = 0, 𝑎0𝑏0 = 𝜆 ∈ 𝐿(𝐺). 
(Passo Indutivo) Suponhamos que 𝑛 ≥ 0 e 𝑎𝑛𝑏𝑛 ∈ 𝐿(𝐺). 
 Linguagens Formais e Autómatos 
91 
Então 𝑎𝑛+1𝑏𝑛+1 = 𝑎 𝑎𝑛𝑏𝑛𝑏 ∈ 𝐿(𝐺) 
 
Logo, 𝑎𝑛𝑏𝑛 ∈ 𝐿(𝐺) para todo 𝑛 ≥ 0. 
Assim, 𝐿(𝐺) = {𝑎𝑛𝑏𝑛 | 𝑛 ≥ 0}. 
Exemplo 8.2. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) onde 𝑁 = {< 𝑓𝑟𝑎𝑠𝑒 >, < 𝑠𝑢𝑗𝑒𝑖𝑡𝑜 >, < 𝑝𝑟𝑒𝑑𝑖𝑐𝑎𝑑𝑜 >, 
< 𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑛𝑡𝑒 >, < 𝑛𝑜𝑚𝑒 >, < 𝑣𝑒𝑟𝑏𝑜 >, < 𝑐𝑜𝑚𝑝𝑙𝑒𝑚𝑒𝑛𝑡𝑜 𝑑𝑖𝑟𝑒𝑐𝑡𝑜 >}; 
𝑇 = {𝑐𝑜𝑒𝑙ℎ𝑜, 𝑒𝑟𝑣𝑎, 𝑐𝑜𝑚𝑒, 𝑜, 𝑎}; 𝑃 = {< 𝑓𝑟𝑎𝑠𝑒 > → < 𝑠𝑢𝑗𝑒𝑖𝑡𝑜 >< 𝑝𝑟𝑒𝑑𝑖𝑐𝑎𝑑𝑜>, 
< 𝑠𝑢𝑗𝑒𝑖𝑡𝑜 > → < 𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑛𝑡𝑒 >< 𝑛𝑜𝑚𝑒 >, < 𝑝𝑟𝑒𝑑𝑖𝑐𝑎𝑑𝑜 > → < 𝑣𝑒𝑟𝑏𝑜 > 
< 𝑐𝑜𝑚𝑝𝑙𝑒𝑚𝑒𝑛𝑡𝑜 𝑑𝑖𝑟𝑒𝑐𝑡𝑜 >, < 𝑐𝑜𝑚𝑝𝑙𝑒𝑚𝑒𝑛𝑡𝑜 𝑑𝑖𝑟𝑒𝑐𝑡𝑜 >→< 𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑛𝑡𝑒 >< 𝑛𝑜𝑚𝑒 >,
< 𝑛𝑜𝑚𝑒 > → 𝑐𝑜𝑒𝑙ℎ𝑜|𝑒𝑟𝑣𝑎, < 𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑛𝑡𝑒 > → 𝑜|𝑎, < 𝑣𝑒𝑟𝑏𝑜 > → 𝑐𝑜𝑚𝑒}; 
𝑆 = < 𝑓𝑟𝑎𝑠𝑒 >. 
Esta gramática pode ser usada para gerar frases. Por exemplo, 
< 𝑓𝑟𝑎𝑠𝑒 > ⇒ < 𝑠𝑢𝑗𝑒𝑖𝑡𝑜 > < 𝑝𝑟𝑒𝑑𝑖𝑐𝑎𝑑𝑜 > ⇒ < 𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑛𝑡𝑒 > < 𝑛𝑜𝑚𝑒 > 
< 𝑝𝑟𝑒𝑑𝑖𝑐𝑎𝑑𝑜 > ⇒ < 𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑛𝑡𝑒 >< 𝑛𝑜𝑚𝑒 > < 𝑣𝑒𝑟𝑏𝑜 > < 𝑐𝑜𝑚𝑝𝑙𝑒𝑚𝑒𝑛𝑡𝑜 𝑑𝑖𝑟𝑒𝑐𝑡𝑜 >
⇒ < 𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑛𝑡𝑒 > < 𝑛𝑜𝑚𝑒 > < 𝑣𝑒𝑟𝑏𝑜 > < 𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑛𝑡𝑒 > < 𝑛𝑜𝑚𝑒 > ⇒ < 𝑜 > 
< 𝑛𝑜𝑚𝑒 > < 𝑣𝑒𝑟𝑏𝑜 > < 𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑛𝑡𝑒 > < 𝑛𝑜𝑚𝑒 > ⇒∗ 𝑜 𝑐𝑜𝑒𝑙ℎ𝑜 𝑐𝑜𝑚𝑒 𝑎 𝑒𝑟𝑣𝑎. 
É claro que a frase “a erva come o coelho” podia também ser gerada por esta gramática. 
Exemplo 8.3. (Gramática de números inteiros) 
Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) onde 
𝑁 = {< 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 >, < 𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 >, < 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 >, < 𝑑𝑖𝑔𝑖𝑡 >}; 
𝑇 = {0,1, … ,9, +, −}; 
𝑃 = {< 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > → < 𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > | < 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > 
< 𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > → + < 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > |− < 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > 
< 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > → < 𝑑𝑖𝑔𝑖𝑡 > | < 𝑑𝑖𝑔𝑖𝑡 >< 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > 
< 𝑑𝑖𝑔𝑖𝑡 > → 0|1| … |9 }; 
𝑆 = < 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 >. 
𝑢 ∈ 𝐿(𝐺) 
 Linguagens Formais e Autómatos 
92 
Vamos considerar uma derivação nesta gramática 
< 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > ⇒ < 𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > ⇒ − < 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > ⇒ − < 𝑑𝑖𝑔𝑖𝑡 >
< 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > ⇒ −2 < 𝑢𝑛𝑠𝑖𝑔𝑛𝑒𝑑 𝑖𝑛𝑡𝑒𝑔𝑒𝑟 > ⇒ −2 < 𝑑𝑖𝑔𝑖𝑡 > ⇒ −27. 
Podemos demonstrar que nesta gramática é possível derivar qualquer número inteiro e nada mais. 
Exemplo 8.4. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) onde 𝑁 = {𝑆, 𝐵}, 𝑇 = {𝑎, 𝑏, 𝑐}, 𝑃 = {𝑆 → 𝑎𝑆𝐵𝑐 | 𝑎𝑏𝑐,
𝑐𝐵 → 𝐵𝑐, 𝑏𝐵 → 𝑏𝑏 }. Achar 𝐿(𝐺). 
Solução. 𝑆 ⇒ 𝑎𝑏𝑐 ∈ 𝐿(𝐺); 
𝑆 ⇒ 𝑎𝑆𝐵𝑐 ⇒ 𝑎𝑎𝑏𝑐𝐵𝑐 ⇒ 𝑎𝑎𝑏𝐵𝑐𝑐 ⇒ 𝑎𝑎𝑏𝑏𝑐𝑐 = 𝑎2𝑏2𝑐2 ∈ 𝐿(𝐺); 
𝑆 ⇒ 𝑎𝑆𝐵𝑐 ⇒ 𝑎𝑎𝑆𝐵𝑐𝐵𝑐 ⇒ ⋯ ⇒ 𝑎𝑛−1𝑆(𝐵𝑐)𝑛−1 ⇒ 𝑎𝑛𝑏𝑐𝐵𝑐 … 𝐵𝑐 ⇒ ⋯ ⇒ 𝑎𝑛𝑏𝐵𝑛−1𝑐𝑛 ⇒
⋯ ⇒ 𝑎𝑛𝑏𝑛𝑐𝑛 ∈ 𝐿(𝐺). 
Logo, 𝐿(𝐺) = {𝑎𝑛𝑏𝑛𝑐𝑛 | 𝑛 ≥ 1}. 
 
Hierarquia de Chomsky 
 
Vamos fazer a classificação de gramáticas utilizando a forma das produções. 
Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) uma gramática, 𝑉 = 𝑁 ∪ 𝑇. A classificação de Chomsky tem 4 tipos de 
gramáticas: 
Tipo 0 (Gramáticas não restringidas) 
➢ Pode ter as produções de qualquer forma. 
Tipo 1 (Gramáticas dependentes do contexto ou gramáticas sensíveis ao contexto, GSC) 
➢ Pode ter só as produções da forma 𝑢 → 𝑣, onde 𝑢, 𝑣 ∈ 𝑉+, e |𝑢| ≤ |𝑣|. 
Tipo 2 (Gramáticas independentes (livres) do contexto, GIC) 
➢ Pode ter só as produções da forma 𝐴 → 𝛿, onde 𝐴 ∈ 𝑁, e 𝛿 ∈ 𝑉∗. 
Tipo 3 (Gramáticas regulares, GR) 
➢ Pode ter só as produções da forma 𝐴 → 𝑥𝐵| 𝑥 |𝜆, onde 𝐴, 𝐵 ∈ 𝑁, e 𝑥 ∈ 𝑇. 
𝑛 − 1 
 Linguagens Formais e Autómatos 
93 
Exemplo 8.5. Achar os tipos de gramáticas de Exemplos 8.1 – 8.4. 
Solução. Exemplo 8.1 – GIC (Tipo 2); Exemplo 8.2 – GIC (Tipo 2); Exemplo 8.3 – GIC (Tipo 2); 
Exemplo 8.4 – GSC (Tipo 1). 
Definição 8.5. (Classificação de linguagens) 
Uma linguagem 𝐿 é do tipo 𝑖 (𝑖 = 0, 1, 2, 3) se existe uma gramática 𝐺 do tipo 𝑖 que gere 𝐿, 
𝐿 = 𝐿(𝐺). 
Designemos por ℒ𝑖 a classe das linguagens do tipo 𝑖 (𝑖 = 0, 1, 2, 3), então: 
ℒ0 – linguagens recursivamente enumeráveis; 
ℒ1– linguagens dependentes de contexto ou sensíveis ao contexto (LSC); 
ℒ2– linguagens independentes de contexto (LIC); 
ℒ3– linguagens regulares (LR). 
Tem-se as seguintes inclusões estritas; 
 ℒ3 ⊂ ℒ2 ⊂ ℒ1 ⊂ ℒ0. 
Por exemplo, a linguagem do Exemplo 8.1 𝐿 = {𝑎𝑛𝑏𝑛| 𝑛 ≥ 0} ∈ ℒ2 e 𝐿 = {𝑎
𝑛𝑏𝑛| 𝑛 ≥ 0} ∉ ℒ3. 
A linguagem do Exemplo 8.4 𝐿 = {𝑎𝑛𝑏𝑛𝑐𝑛| 𝑛 ≥ 1} ∈ ℒ1 e 𝐿 = {𝑎
𝑛𝑏𝑛𝑐𝑛| 𝑛 ≥ 1} ∉ ℒ2. 
 
Autómatos e Gramáticas Regulares 
 
Mostraremos que as gramáticas regulares do tipo 3 realmente geram todas as linguagens regulares 
no sentido de Capítulo 3. 
Exemplo 8.6. Seja 𝐴 AFD seguinte: 
 
 
 
 
Achar uma gramática 𝐺 tal que 𝐿(𝐴) = 𝐿(𝐺). 
𝑞0 
b 
𝐴: 𝑞1 
b 
a 
a 
 Linguagens Formais e Autómatos 
94 
Solução. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) onde 𝑁 = {𝑞0, 𝑞1}, 𝑇 = {𝑎, 𝑏}, 𝑆 = 𝑞0, 
𝑃 = {𝑞0 → 𝑏𝑞0 , 𝑞0 → 𝑎𝑞1, 𝑞1 → 𝑏𝑞1, 𝑞1 → 𝑎𝑞0, 𝑞1 → 𝜆 } 
Vamos encontrar o caminho de computação para a palavra 𝑤 = 𝑏𝑎: 
 𝑏𝑎 ∈ 𝐿(𝐴). 
Também, existe derivação de 𝑤 = 𝑏𝑎 em 𝐺: 𝑞0 ⇒ 𝑏𝑞0 ⇒ 𝑏𝑎𝑞1 ⇒ 𝑏𝑎 ∈ 𝐿(𝐺). Não é difícil 
mostrar que 𝐿(𝐴) = 𝐿(𝐺). 
Teorema 8.1. Seja 𝐴 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0) um autómato. 
Consideremos 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) onde 𝑁 = 𝑄, 𝑇 = Σ, 𝑆 = 𝑞0, 
𝑃 = {𝑞 → 𝑎 𝑝|𝛿(𝑞, 𝑎) = 𝑝} ∪ {𝑝 → 𝜆 |𝑝 ∈ 𝐹}. 
Então, 𝐿(𝐴) = 𝐿(𝐺). 
Demonstração. Vamos demonstrar que 𝐿(𝐴) ⊆ 𝐿(𝐺). 
Seja 𝑤 ∈ 𝐿(𝐴), 
1) Se 𝑤 = 𝜆 então 𝑞0 ∈ 𝐹. Existe produção 𝑞0 → 𝜆 ∈ 𝑃. Logo 𝑞0 ⇒ 𝜆 ∈ 𝐿(𝐺). 
2) Suponhamos que 𝑤 ≠ 𝜆 e 𝑤 ∈ 𝐿(𝐴). Então 𝑤 = 𝑎1𝑎2 … 𝑎𝑛 e existe caminho de 
computação , 𝑞𝑛 ∈ 𝐹. Assim, em 𝐺 
existem produções 𝑞0 → 𝑎1𝑞1, 𝑞𝑖−1 → 𝑎𝑖𝑞𝑖 , 𝑖 = 2, … , 𝑛, 𝑞𝑛 → 𝜆 e existe derivação 
𝑞0 ⇒ 𝑎1𝑞1 ⇒ 𝑎1𝑎2𝑞2 ⇒ ⋯ ⇒ 𝑎1𝑎2 … 𝑎𝑛𝑞𝑛 ⇒ 𝑎1𝑎2 … 𝑎𝑛 = 𝑤 ∈ 𝐿(𝐺) 
Logo, 𝐿(𝐴) ⊆ 𝐿(𝐺). 
Analogamente podemos demonstrar que 𝐿(𝐺) ⊆ 𝐿(𝐴). 
Suponhamos que 𝑥 ∈ 𝐿(𝐴). 
Se 𝑥 = 𝜆, então 𝐺 tem produção 𝑆 → 𝜆 (Por quê?). 
Então, 𝑆 = 𝑞0 ∈ 𝐹 e 𝜆 ∈ 𝐿(𝐴). 
Seja 𝑥 ≠ 𝜆 e 𝑥 = 𝑎1𝑎2 … 𝑎𝑛, 𝑎𝑖 ∈ 𝑇 = Σ, 𝑖 = 1, 2, … , 𝑛. 
Existe uma derivação em 𝐺: 𝑆 = 𝑞0 ⇒ 𝑎1𝑞1 ⇒ 𝑎1𝑎2𝑞2 ⇒ ⋯ ⇒ 𝑎1𝑎2 … 𝑎𝑛𝑞𝑛 ⇒ 𝑎1𝑎2 … 𝑎𝑛. 
Devem existir produções em 𝐺: 𝑆 = 𝑞0 → 𝑎1𝑞1 , 𝑞1 → 𝑎2𝑞2, … , 𝑞𝑛−1 → 𝑎𝑛𝑞𝑛, 𝑞𝑛 → 𝜆. 
a 
𝑞0 𝑞0 
b 
𝑞1 
𝑎2 
𝑞0 𝑞1 
𝑎1 … 
𝑎𝑛 
𝑞𝑛 
 Linguagens Formais e Autómatos 
95 
Exixte um caminho de computação em 𝐴: 
 e 𝑞𝑛 ∈ 𝐹. 
Logo, 𝑥 = 𝑎1𝑎2 … 𝑎𝑛 ∈ 𝐿(𝐴) e 𝐿(𝐺) ⊆ 𝐿(𝐴). 
Assim, 𝐿(𝐴) ⊆ 𝐿(𝐺) e 𝐿(𝐺) ⊆ 𝐿(𝐴). Então, 𝐿(𝐴) = 𝐿(𝐺). O que foi preciso demonstrar. 
 
Exemplo 8.7. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) uma gramática regular, onde 𝑁 = {𝑆, 𝐶}, 𝑇 = {𝑎, 𝑏}, 
𝑃 = {𝑆 → 𝑏𝑆 , 𝑆 → 𝑎𝐶, 𝐶 → 𝑏𝐶, 𝐶 → 𝑏 }. Achar um autómato 𝐴 tal que 𝐿(𝐺) = 𝐿(𝐴). 
Solução. Podemos representar três primeiras produções 𝑆 → 𝑏𝑆 , 𝑆 → 𝑎𝐶, 𝐶 → 𝑏𝐶: 
 
 
 
Falta representar última produção 𝐶 → 𝑏. Mas em vez de produção 𝐶 → 𝑏 podemos considerar 
duas produções 𝐶 → 𝑏Φ e Φ → 𝜆. 
É facil ver que a gramática 𝐺1 = (𝑁1, 𝑇, 𝑃1, 𝑆) 𝑁1 = {𝑆, 𝐶, Φ}, 𝑇 = {𝑎, 𝑏} 
𝑃1 = {𝑆 → 𝑏𝑆 , 𝑆 → 𝑎𝐶, 𝐶 → 𝑏Φ, Φ → 𝜆 } é equivalente a gramática 𝐺, isto é 𝐿(𝐺) = 𝐿(𝐺1). 
Agora podemos construir o autómato 𝐴: 
 
 
 
𝐿(𝐴) = 𝐿(𝐺1) = 𝐿(𝐺). 
 
Teorema 8.2. 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) uma gramática regular e Σ = 𝑇, 𝑆 = 𝑞0, 𝑄 = 𝑁 ∪ {Φ}, 
𝐹 = {𝐶|𝐶 → 𝜆 ∈ 𝑃} ∪ {Φ}, 
𝛿(𝐶, 𝑎) = {𝐶′|𝐶 → 𝑎𝐶′ ∈ 𝑃} ∪ {Φ |𝐶 → 𝑎 ∈ 𝑃}. 
Seja autómato 𝐴 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0). 
Então, 𝐿(𝐴) = 𝐿(𝐺). 
Dos teoremas 8.1, 8.2 e de Kleene segue 
𝑎1 
𝑞0 𝑞1 
𝑎2 
𝑞2 
𝑎𝑛 
… 𝑞𝑛 
𝑆 
b 
𝐶 
b 
a 
a b 
b b 
𝑆 𝐶 Φ 𝐴: 
𝑎3 
 
 Linguagens Formais e Autómatos 
96 
Teorema 8.3. Uma linguagem 𝐿 é regular (no sentido de Capítulo 3) se e só se existe uma 
gramática regular 𝐺 que gera 𝐿, isto é, 𝐿 = 𝐿(𝐺). 
 
Problemasresolvidos 
 
8.1. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) onde 𝑁 = {𝑆}, 𝑇 = {0,1}, 𝑃 = {𝑆 → 𝜆 | 0𝑆 |1𝑆 }. 
a) Que tipo tem gramática 𝐺? 
b) Obtem uma derivação para as palavras 01, 101 em 𝐺. 
c) Achar 𝐿(𝐺). 
Solução. a) 𝐺 tem tipo 3, GR. 
b) 𝑆 ⇒ 0𝑆 ⇒ 01𝑆 ⇒ 01 
 𝑆 ⇒ 1𝑆 ⇒ 10𝑆 ⇒ 101𝑆 ⇒ 101 
c) 𝐿(𝐺) = {0,1}∗. 
 
 
8.2. 
 
 
 
 
 
Para AFD 𝐴 achar uma GR 𝐺 tal que 𝐿(𝐴) = 𝐿(𝐺). 
Solução. 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆, 𝐴, 𝐵}, 𝑇 = {𝑎, 𝑏}, 
𝑃 = {𝑆 → 𝑎𝐴 | 𝑏𝐵, 𝐴 → 𝑎𝑆 | 𝑏𝐴 | 𝜆, 𝐵 → 𝑏𝑆|𝑎𝐴 | 𝜆 }. 
(Teorema 8.1). 
8.3. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), 𝑁 = {𝑆, 𝐴}, 𝑇 = {𝑎, 𝑏}, 𝑃 = {𝑆 → 𝑏𝑆 | 𝑎𝐴 | 𝑏, 𝐴 → 𝑎𝑆|𝑏𝐴 | 𝑎 }. 
Achar AFND – 𝜆 𝐴 tal que 𝐿(𝐴) = 𝐿(𝐺). 
b 
𝐵 
b 
a 
a 
b 
𝐴 𝑆 𝐴: 
a 
 Linguagens Formais e Autómatos 
97 
Solução. 
 
 
 
 
 
8.4. Thomas A. Sudkamp, Languages and Machines, Examples 3.6.1, 3.6.2, 3.6.3 pp.79-82. 
8.5. Achar uma gramática regular 𝐺 que gera todas as palavras sobre {𝑎, 𝑏} de comprimento par. 
𝐿(𝐺) = {𝑤|𝑤 ∈ {𝑎, 𝑏}∗, |𝑤| é 𝑢𝑚 𝑛ú𝑚𝑒𝑟𝑜 𝑝𝑎𝑟}. 
Solução. Introduzimos duas variáveis não terminais 𝑆 e 𝐼 que vão servir como contadores. 𝑆 
significa que a forma sentencial tem um número par de símbolos terminais e 𝐼 significa que a 
forma sentencial tem um número ímpar de símbolos terminais. Assim, 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), 
𝑁 = {𝑆, 𝐼}, 𝑇 = {𝑎, 𝑏}, 𝑃 = {𝑆 → 𝑎𝐼| 𝑏𝐼 |𝜆, 𝐼 → 𝑎𝑆| 𝑏𝑆}. 
Outro método. No início podemos construir o autómato 𝐴 tal que 𝐿(𝐴) = 𝐿(𝐺) e depois 
utilizando Teorema 8.1 achar GR 𝐺. 
 
 
 
𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆, 𝐼}, 𝑇 = {𝑎, 𝑏}, 𝑃 = {𝑆 → 𝑎𝐼| 𝑏𝐼 |𝜆, 𝐼 → 𝑎𝑆| 𝑏𝑆}. 
 
8.6. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆, 𝐴}, 𝑇 = {𝑎, 𝑏}, 𝑃 = {𝑆 → 𝑎𝑆| 𝑏𝐴 |𝜆, 𝐴 → 𝑎𝐴| 𝑏𝑆}. 
a) Achar derivações das palavras bab, aba. 
b) Construir o autómato 𝐴 tal que 𝐿(𝐺) = 𝐿(𝐴). 
c) Achar a linguagem 𝐿(𝐺). 
Solução. a) 𝑆 ⇒ 𝑏𝐴 ⇒ 𝑏𝑎𝐴 ⇒ 𝑏𝑎𝑏𝑆 ⇒ 𝑏𝑎𝑏 
𝑆 ⇒ 𝑎𝑆 ⇒ 𝑎𝑏𝐴 ⇒ 𝑎𝑏𝑎𝐴 
a a 
b b 
𝑆 𝐴 Φ 𝐴: 
a 
b 
(Teorema 8.2). 
a,b 
a,b 
𝐼 𝑆 𝐴: 
 Linguagens Formais e Autómatos 
98 
Não existe a derivação da palavra aba. 
 
b) 
 
 
 
c) 𝐿(𝐺) = 𝐿(𝐴) são todas as palavras sobre {𝑎, 𝑏} que têm um número par de letras “b”. 
 
 
Problemas propostos 
 
8.7. Achar uma GR 𝐺 tal que 𝐿(𝐺) = 𝑎+𝑏∗. 
8.8. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆}, 𝑇 = {𝑎, 𝑏}, 𝑃 = {𝑆 → 𝑎𝑆𝑎| 𝑏𝑆𝑏 | 𝑎 | 𝑏 |𝜆}. 
a) Que tipo tem a gramática 𝐺? 
b) Achar derivações das palavras bab, abb. 
c) Achar a linguagem 𝐿(𝐺). 
 
8.9. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆, 𝐴, 𝐵}, 𝑇 = {𝑎, 𝑏}, 
𝑃 = {𝑆 → 𝑏𝑆|𝑎𝐴, 𝐴 → 𝑏𝑆| 𝑎𝐵, 𝐵 → 𝑎𝐵| 𝑏𝐵 |𝜆, }. 
a) Que tipo tem a gramática 𝐺? 
b) Achar derivações das palavras baab, abb. 
c) Construir o autómato 𝐴 tal que 𝐿(𝐴) = 𝐿(𝐺). 
d) Achar a linguagem 𝐿(𝐺). 
 
8.10. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆, 𝐴, 𝐵}, 𝑇 = {𝑎, 𝑏}, 
𝑃 = {𝑆 → 𝑎𝑆| 𝑏𝐴 |𝜆, 𝐴 → 𝑎𝐴| 𝑏𝐵, 𝐵 → 𝑏}. 
Achar autómato 𝐴 tal que 𝐿(𝐴) = 𝐿(𝐺). 
a 
b 
b 
a 
𝐴 𝑆 𝐴: 𝐿(𝐴) = 𝐿(𝐺) 
 Linguagens Formais e Autómatos 
99 
8.11. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆, 𝐴, 𝐶}, 𝑇 = {𝑎, 𝑏}, 
𝑃 = {𝑆 → 𝑎𝑆|𝑏𝐴 , 𝐴 → 𝑎𝐴| 𝑏𝐶, 𝐶 → 𝑎𝐶|𝜆}. 
Achar 𝐿(𝐺). 
8.12. Demonstrar Teorema 8.2. 
8.13. Demonstrar Teorema 8.3. 
 
 
Respostas 
 
8.7. 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆, 𝐵}, 𝑇 = {𝑎, 𝑏}, 𝑃 = {𝑆 → 𝑎𝑆|𝑎𝐵 , 𝐵 → 𝑏𝐵|𝜆}. 
 
8.8. a) Tipo 2, GIC. 
b) 𝑆 ⇒ 𝑏𝑆𝑏 ⇒ 𝑏𝑎𝑏; 
 𝑆 ⇒ 𝑎𝑆𝑎, derivação de abb não existe. 
c) 𝐿(𝐺) = {𝑤|𝑤 ∈ {𝑎, 𝑏}∗, 𝑤 = 𝑤𝑅}. 
 
8.9. a) Tipo 3, GR. 
b) 𝑆 ⇒ 𝑏𝑆 ⇒ 𝑏𝑎𝐴 ⇒ 𝑏𝑎𝑎𝐵 ⇒ 𝑏𝑎𝑎𝑏𝐵 ⇒ 𝑏𝑎𝑎𝑏; 
 𝑆 ⇒ 𝑎𝐴 ⇒ 𝑎𝑏𝑆 ⇒ 𝑎𝑏𝑏𝑆, derivação de abb não existe. 
 
 
c) 
 
 
d) 𝐿(𝐺) = (𝑎 + 𝑏)∗𝑎𝑎(𝑎 + 𝑏)∗. 
 
a a 
a,b b 
𝑆 𝐴 𝐵 𝐴: 
b 
 Linguagens Formais e Autómatos 
100 
8.10. 
 
 
8.11. 𝐿(𝐺) = 𝑎∗𝑏𝑎∗𝑏𝑎∗. 
 
 
 
b b 
a 
b 
𝐴: 
a 
𝑆 𝐴 𝐵 Φ 
 Linguagens Formais e Autómatos 
101 
Capítulo 9 
 
Gramáticas Independentes de Contexto. Árvores de Derivação. 
Ambiguidade 
 
Definição 9.1. Uma gramática 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) chama-se gramática independente de contexto 
(GIC) se todas as produções de 𝐺 tem a forma 
𝐴 → 𝛿, 𝐴 ∈ 𝑁, 𝛿 ∈ (𝑁 ∪ 𝑇)∗. 
A linguagem 𝐿 gerada por uma GIC 𝐺 chama-se linguagem independente de contexto (LIC). 
Muitas linguagens de programação utilizam parênteses. Os parênteses devem ser balanceados. 
 
Definição 9.2. A sequência de parênteses é balanceada (bem casada) se para cada parêntese 
esquerdo “(“ existe o parêntese direito “)” correspondente à direita do primeiro. A linguagem de 
todos parênteses balanceados designa-se por 𝐿𝑏𝑎𝑙. 
Exemplo 9.1. ( ), (( )), (( ) ( )), 𝜆 − 𝑠𝑒𝑞𝑢ê𝑛𝑐𝑖𝑎𝑠 𝑏𝑎𝑙𝑎𝑛𝑐𝑒𝑎𝑑𝑎𝑠; 
)(, ((), ()( − 𝑠𝑒𝑞𝑢ê𝑛𝑐𝑖𝑎𝑠 𝑛ã𝑜 𝑏𝑎𝑙𝑎𝑛𝑐𝑒𝑎𝑑𝑎𝑠. 
Exemplo 9.2. Uma gramática que gere 𝐿𝑏𝑎𝑙 é 𝐺𝑏𝑎𝑙 = (𝑁, 𝑇, 𝑃, 𝑆) onde 𝑁 = {𝑆}, 𝑇 = {(, )}, 
𝑃 = {𝑆 → 𝑆𝑆|(𝑆)|𝜆}. Então 𝐿𝑏𝑎𝑙 = 𝐿(𝐺𝑏𝑎𝑙). 
A produção 𝑆 → 𝜆 significa que 𝜆 ∈ 𝐿(𝐺𝑏𝑎𝑙). 
A produção 𝑆 → (𝑆) significa que se vamos por parênteses sobre uma palavra de 𝐿(𝐺𝑏𝑎𝑙) o 
resultado pertence a 𝐿(𝐺𝑏𝑎𝑙). 
A produção 𝑆 → 𝑆𝑆 significa que a concatenação de duas palavras de 𝐿(𝐺𝑏𝑎𝑙) pertence a 𝐿(𝐺𝑏𝑎𝑙). 
Também, podemos dar a definição recursiva de 𝐿𝑏𝑎𝑙. 
Definição 9.3. 
Base: 𝜆 ∈ 𝐿𝑏𝑎𝑙 . 
 Linguagens Formais e Autómatos 
102 
Passo Recursivo: Se 𝑥 ∈ 𝐿𝑏𝑎𝑙 , então (𝑥) ∈ 𝐿𝑏𝑎𝑙; 
 Se 𝑥 ∈ 𝐿𝑏𝑎𝑙 , então 𝑥𝑥 ∈ 𝐿𝑏𝑎𝑙. 
Fecho: Qualquer palavra de 𝐿𝑏𝑎𝑙 ou da Base ou do Passo Recursivo. 
Teorema 9.1. Qualquer sequência de parênteses balanceados é gerada pela gramática 𝐺𝑏𝑎𝑙. 
Demonstração. Vamos usar o princípio da indução matemática. 
Base: 𝜆 ∈ 𝐿(𝐺𝑏𝑎𝑙). Realmente 𝑆 ⇒ 𝜆 ∈ 𝐿(𝐺𝑏𝑎𝑙). 
Passo Indutivo: Suponhamos que para todo 𝑛 par e 𝑛 ≥ 0 se 𝑥 é balanceada e |𝑥| ≤ 𝑛 então 
𝑥 ∈ 𝐿(𝐺𝑏𝑎𝑙). 
Seja |𝑥| = 𝑛 + 2 
1) Se 𝑥 = (𝑦), então 𝑦 é balanceada e |𝑦| = 𝑛. Logo, 𝑦 ∈ 𝐿(𝐺𝑏𝑎𝑙) e existe derivação 𝑆 ⇒
∗ 𝑦 
em 𝐺𝑏𝑎𝑙. Então, existe derivação 𝑆 ⇒ (𝑆) ⇒
∗ (𝑦) = 𝑥 em 𝐺. Assim, 𝑥 ∈ 𝐿(𝐺𝑏𝑎𝑙). 
2) Se 𝑥 = (𝑦) e 𝑦 não é balanceada, então 𝑥 = (𝑦1)(𝑦2) = 𝑥1𝑥2, onde 𝑥1 e 𝑥2 são 
balanceados, e |𝑥1| ≤ 𝑛, |𝑥2| ≤ 𝑛. 
Logo, 𝑥1, 𝑥2 ∈ 𝐿(𝐺𝑏𝑎𝑙). Existem derivações em 𝐺 𝑆 ⇒
∗ 𝑥1 e 𝑆 ⇒
∗ 𝑥2. Então, existe derivação 
em 𝐺 𝑆 ⇒ 𝑆𝑆 ⇒∗ 𝑥1𝑆 ⇒
∗ 𝑥1𝑥2 = 𝑥 ∈ 𝐿𝑏𝑎𝑙. 
Assim, qualquer sequência balanceada de comprimento par pertence a linguagem 𝐿(𝐺𝑏𝑎𝑙). 
 Outro exemplo importante onde aplica-se GIC é a linguagem de enunciados condicionais 
(if ... else). Em várias linguagens de programação if pode entrar sem else ou pode ser associado 
com um else. 
 Por exemplo, as palavras ieie, iie, ii são correctas; as palavras ei, ieei não são correctas. 
Exemplo 9.3. (Gramática que gera a linguagem de enunciados condicionais) 
𝐺𝑒𝑐 = (𝑁, 𝑇, 𝑃, 𝑆) onde 𝑁 = {𝑆}, 𝑇 = {𝑖, 𝑒}, 𝑃 = {𝑆 → 𝑆𝑆| 𝑖𝑆 |𝑖𝑆𝑒|𝜆}. 
 
 
𝑦 
 Linguagens Formais e Autómatos 
103 
Árvores de derivação. Derivações esquerda e direita. 
Ambiguidade 
 
Exemplo 9.4. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝐸) uma GIC para expressões simples, onde 𝑁 = {𝐸, 𝐼}; 
 𝑇 = {+,∗, (, ), 𝑎, 𝑏}; 𝑃 = {𝐸 → 𝐸 + 𝐸| 𝐸 ∗ 𝐸 |(𝐸)|𝐼, 𝐼 → 𝑎|𝑏}. 
 
Representação de produções por árvoresEm geral 
 
 
 
 
E 
E E + 
𝐸 → 𝐸 + 𝐸 
E 
( ) E 
𝐸 → (𝐸) 
E 
𝐼 
𝐸 → 𝐼 
E 
𝜆 
𝐸 → 𝜆 
A 
𝛿 
𝐴 → 𝛿 
 Linguagens Formais e Autómatos 
104 
𝛿 são símbolos de corpo ordenados da esquerda para a direita. 
Consideremos uma derivação na gramática do Exemplo 9.3. Por exemplo, 
𝐸 ⇒ 𝐸 + 𝐸 ⇒ 𝐸 + 𝐸 ∗ 𝐸 
As árvores correspondentes 
 
 
 
 
 
 
Definição 9.4. (Construção de árvore de derivação). 
Sejam 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) uma GIC e 𝑆 ⇒∗ 𝑤 uma derivação em 𝐺. A árvore de derivação (AD) 
para 𝑆 ⇒∗ 𝑤 podemos construir da maneira iterativa: 
1) Inicializamos AD com único vértice (raíz) 𝑆; 
2) Se 𝐴 → 𝑥1𝑥2 … 𝑥𝑛 , 𝑥𝑖 ∈ (𝑁 ∪ 𝑇) 𝑖 = 1, 2, … , 𝑛 uma produção que se aplica na 
derivação para a forma sentencial 𝑢𝐴𝑣, então adicionamos 𝑥1, 𝑥2, … , 𝑥𝑛 como filhos de 𝐴 
na árvore de derivação; 
3) Se 𝐴 → 𝜆 é a produção que se aplica na derivação para a forma sentencial 𝑢𝐴𝑣, então 
adicionamos 𝜆 como único filho de 𝐴 em AD; 
No final, as folhas de AD (que é preciso ler da esquerda para a direita) representam a palavra 𝑤 
que é o resultado da derivação 𝑆 ⇒∗ 𝑤. 
Exemplo 9.5. Achar AD’s para duas derivações da palavra 𝑎 + 𝑎 ∗ 𝑎. Gramática do Exemplo 9.4. 
Solução. 
1) 𝐸 ⇒ 𝐸 + 𝐸 ⇒ 𝐸 + 𝐸 ∗ 𝐸 ⇒ 𝐼 + 𝐸 ∗ 𝐸 ⇒ 𝑎 + 𝐸 ∗ 𝐸 ⇒ 𝑎 + 𝐼 ∗ 𝐸 ⇒ 𝑎 + 𝑎 ∗ 𝐸 ⇒
 𝑎 + 𝑎 ∗ 𝐼 ⇒ 𝑎 + 𝑎 ∗ 𝑎 
E 
E E + 
𝐸 ⟹ ⟹ 
E 
E E + 
E E * 
 Linguagens Formais e Autómatos 
105 
 
 
 
 
 
 
 
 
 
2) 𝐸 ⇒ 𝐸 ∗ 𝐸 ⇒ 𝐸 + 𝐸 ∗ 𝐸 ⇒ 𝐼 + 𝐸 ∗ 𝐸 ⇒ 𝑎 + 𝐸 ∗ 𝐸 ⇒ 𝑎 + 𝐼 ∗ 𝐸 ⇒ 𝑎 + 𝑎 ∗ 𝐸 ⇒
 𝑎 + 𝑎 ∗ 𝐼 ⇒ 𝑎 + 𝑎 ∗ 𝑎 
 
 
 
 
 
 
 
 
 
 
 
Definição 9.5. Uma GIC 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) chama-se ambígua se existe pelo menos uma palavra 
𝑤 ∈ 𝐿(𝐺) que tem árvores de derivação diferentes. Se cada palavra de 𝐿(𝐺) tem única árvore de 
derivação, então 𝐺 chama-se não ambígua ou inambígua. 
Como mostrou Exemplo 9.5 a gramática do Exemplo 9.4 é ambígua. A palavra 𝑎 + 𝑎 ∗ 𝑎 ∈ 𝐿(𝐺) 
tem duas árvores de derivação diferentes. 
I 
a 
E 
E E + 
E E * 
I 
a 
I 
a 
I 
a 
E 
E E * 
E E + I 
a I 
a 
 Linguagens Formais e Autómatos 
106 
Por exemplo, se 𝑎 = 3 então o resultado aplicando primeira AD é igual a 3 + 3 ∗ 3 = 12, 
aplicando segunda AD é igual a (3 + 3) ∗ 3 = 18. 
Nota 9.1. As derivações diferentes podem ter AD’s iguais. 
Exemplo 9.6. (GIC do Exemplo 9.4) 
1) 𝐸 ⇒ 𝐸 + 𝐸 ⇒ 𝐼 + 𝐸 ⇒ 𝑎 + 𝐸 ⇒ 𝑎 + 𝐼 ⇒ 𝑎 + 𝑏 
 
 
 
 
 
 
 
 
 
2) 𝐸 ⇒ 𝐸 + 𝐸 ⇒ 𝐸 + 𝐼 ⇒ 𝐼 + 𝐼 ⇒ 𝐼 + 𝑏 ⇒ 𝑎 + 𝑏 
 
 
 
 
 
 
 
 
Assim, o problema de ambiguidade não é nas derivações diferentes. O problema de ambiguidade 
nas AD’s diferentes para a mesma palavra. 
 
 
I 
a 
E 
E E + 
I 
b 
I 
a 
E 
E E + 
I 
b 
 Linguagens Formais e Autómatos 
107 
Derivações esquerdas e direitas 
Definição 9.6. Uma derivação 𝛼 ⇒∗ 𝛽 numa GIC 𝐺 chama-se derivação esquerda (direita) se 
em cada passo da derivação a produção aplica-se para o símbolo não terminal que está mais à 
esquerda (direita) na forma sentencial correspondente. Neste caso utilizam-se os símbolos 
𝛼 ⇒𝑒
 ∗ 𝛽 (𝛼 ⇒𝑟
 ∗ 𝛽). De costume, vamos aplicar a derivação esquerda. 
Exemplo 9.7. Achar as derivações esquerdas da palavra 𝑎 + 𝑎 ∗ 𝑎. Gramática do Exemplo 9.4. 
Solução. 
1) 𝐸 ⇒𝑒
 𝐸 + 𝐸 ⇒𝑒
 𝐼 + 𝐸 ⇒𝑒
 𝑎 + 𝐸 ⇒𝑒
 𝑎 + 𝐸 ∗ 𝐸 ⇒𝑒
 𝑎 + 𝐼 ∗ 𝐸 ⇒𝑒
 𝑎 + 𝑎 ∗ 𝐸 ⇒𝑒
 
𝑎 + 𝑎 ∗ 𝐼 ⇒𝑒
 𝑎 + 𝑎 ∗ 𝑎 
Árvore para esta derivação: 
 
 
 
 
 
 
 
 
 
 
 
2) 𝐸 ⇒𝑒
 𝐸 ∗ 𝐸 ⇒𝑒
 𝐸 + 𝐸 ∗ 𝐸 ⇒𝑒
 𝐼 + 𝐸 ∗ 𝐸 ⇒𝑒
 𝑎 + 𝐸 ∗ 𝐸 ⇒𝑒
 𝑎 + 𝐼 ∗ 𝐸 ⇒𝑒
 
𝑎 + 𝑎 ∗ 𝐸 ⇒𝑒
 𝑎 + 𝑎 ∗ 𝐼 ⇒𝑒
 𝑎 + 𝑎 ∗ 𝑎 
 
AD correspondente: 
 
I 
a 
E 
E E + 
E E * 
I 
a 
I 
a 
 Linguagens Formais e Autómatos 
108 
 
 
 
 
 
 
 
 
 
 
Podemos ver que derivações esquerdas diferentes têm AD’s diferentes. 
Teorema 9.2. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) uma GIC. Uma palavra 𝑤 ∈ 𝐿(𝐺) se e só se existe 𝑆 ⇒𝑒
 ∗ 𝑤. 
Este teorema significa que se existe uma derivação 𝑆 ⇒∗ 𝑤 ∈ 𝐿(𝐺) então existe derivação 
esquerda 𝑆 ⇒𝑒
 ∗ 𝑤 ∈ 𝐿(𝐺). 
Nota 9.2. O teorema 9.2 não é valido para as formas sentenciais. 
Exemplo 9.8. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆, 𝐴, 𝐵}; 𝑇 = {𝑎, 𝑏}; 
𝑃 = {𝑆 → 𝐴𝐵, 𝐴 → 𝑎𝐴|𝜆, 𝐵 → 𝑏𝐵|𝜆}. 
Nesta gramática existe derivação 𝑆 ⇒ 𝐴𝐵 ⇒ 𝐴. Mas não existe derivação esquerda 𝐴 de 𝑆. 
Teorema 9.3. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) uma GIC e 𝐴 uma AD cuja raíz é 𝑆 e as folhas representam 
uma palavra 𝑤 ∈ 𝐿(𝐺). Então, existe uma derivação esquerda 𝑆 ⇒𝑒
 ∗ 𝑤 ∈ 𝐿(𝐺) em 𝐺 cuja AD 
é 𝐴. 
Assim, existe uma bijecção entre as AD’s para as palavras 𝐿(𝐺) e as derivações esquerdas para 
as palavras de 𝐿(𝐺). Então podemos dar uma outra definição de ambiguidade de GIC. 
Definição 9.7. Uma GIC 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) é ambígua se e só se existe pelo menos uma palavra 
𝑤 ∈ 𝐿(𝐺) que tem derivações esquerdas diferentes. 
 
I 
a 
E 
E E * 
E E + I 
a I 
a 
 Linguagens Formais e Autómatos 
109 
Eliminação de ambiguidade 
 
Como uma linguagem pode ser gerada por várias gramáticas parece que ambiguidade é uma 
propriedade da gramática e não é da linguagem. 
Vamos eliminar ambiguidade da gramática do Exemplo 9.4. Por outras palavras, é preciso achar 
uma gramática equivalente que é inambígua. 
Exemplo 9.9. Eliminar ambiguidade da gramática do Exemplo 9.4. 
Solução. No Exemplo 9.5 construímos duas AD’s diferentes para a palavra 𝑎 + 𝑎 ∗ 𝑎 o que 
significa que a gramática correspondente é ambíguia 
1) 2) 
 
 
 
 
 
 
 
 
Para eliminar ambiguidade é preciso achar uma gramática equilavente onde só a primeira AD é 
correcta. 
A sequências de operações idênticas podemos agrupar da esquerda para direita (ou da direita para 
esquerda). As operações + e * são associativas e por isso não é importante que maneira escolher: 
1) ou 2) 
 
 
 
I 
a 
E 
E E + 
E E * 
I 
a 
I 
a 
I 
a 
E 
E E * 
E E + I 
a I 
a 
E 
E E + 
(*) 
 
E E + 
(*) 
 
E 
E E + 
(*) 
 
E E + 
(*) 
 Linguagens Formais e Autómatos 
110 
Mas para eliminar ambiguidade escolhemos o segundo caso. Este significa que 𝐸 + 𝐸 + 𝐸 =
(𝐸 + 𝐸) + 𝐸 e 𝐸 ∗ 𝐸 ∗ 𝐸 = (𝐸 ∗ 𝐸) ∗ 𝐸. 
Para resolver o problema de ambiguidade dividimos as expressões por vários níveis: 
1) Factor é uma expressão que não podemos partir usando operações + e *. Os factores da 
nossa linguagem são identificadores e quaisquer expressões parentisadas. Não é importante 
o que temos dentro de parentesis. 
 
 
 
 
2) Termo é uma expressão que não podemos partir por +. No nosso caso (temos duas 
operações + e *) o termo é um produto de um ou mais que um factor. 
Por exemplo, para termo 𝑎 ∗ 𝑏 podemos adicionar à esquerda 𝑎 ∗ e recebemos 𝑎 ∗ 𝑎 ∗ 𝑏 que 
é igual a (𝑎 ∗ 𝑎) ∗ 𝑏. Logo, partimos o termo 𝑎 ∗ 𝑏. 
Não podemos partir o termo 𝑎 ∗ 𝑏 adicionando 𝑎 + à esquerda ou à direita. Realmente, 
𝑎 + 𝑎 ∗ 𝑏 é igual a 𝑎 + (𝑎 ∗ 𝑏) e 𝑎 ∗ 𝑏 + 𝑎 é igual a (𝑎 ∗ 𝑏) + 𝑎. 
 
 
 
3) Expressão é qualquer expressão possível que podemos partir com operações * ou +. 
Assim, as expressões no nosso caso são somas de um ou mais que um termo. 
 
 
 
Assim, a nova gramática inambígua equivalente (gera a mesma linguagem) é 𝐺1 = (𝑁, 𝑇, 𝑃, 𝑆), 
onde 𝑁 = {𝐸, 𝑇, 𝐹,𝐼}; 𝑇 = {𝑎, 𝑏,∗, +, (, )}; 
𝑃 = {𝐸 → 𝐸 + 𝑇|𝑇, 𝑇 → 𝑇 ∗ 𝐹|𝐹, 𝐹 → (𝐸)|𝐼, 𝐼 → 𝑎|𝑏}; 𝑆 = 𝐸. 
Vamos achar a derivação esquerda e AD para palavra 𝑎 + 𝑎 ∗ 𝑎: 
F 
I 
F 
(E) 
T 
* 
E 
+ 
 Linguagens Formais e Autómatos 
111 
𝐸 ⇒𝑒
 𝐸 + 𝑇 ⇒𝑒
 𝑇 + 𝑇 ⇒𝑒
 𝐹 + 𝑇 ⇒𝑒
 𝐼 + 𝑇 ⇒𝑒
 𝑎 + 𝑇 ⇒𝑒
 𝑎 + 𝑇 ∗ 𝐹 ⇒𝑒
 𝑎 + 𝐹 ∗ 𝐹 ⇒𝑒
 
𝑎 + 𝐼 ∗ 𝐹 ⇒𝑒
 𝑎 + 𝑎 ∗ 𝐹 ⇒𝑒
 𝑎 + 𝑎 ∗ 𝐼 ⇒𝑒
 𝑎 + 𝑎 ∗ 𝑎 
 
 
 
 
 
 
 
 
 
 
 
 
Agora derivação esquerda e AD para palavra 𝑎 + 𝑎 ∗ 𝑎 são únicas. 
 
Linguagens inerentemente ambíguas 
 
Definição 9.8. Uma LIC 𝐿 chama-se inerentemente ambígua se toda a gramática que gera 𝐿 é 
ambígua. 
Exemplo 9.10. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), uma GIC, onde 𝑁 = {𝑆, 𝐴, 𝐵, 𝐶, 𝐷}; 𝑇 = {𝑎, 𝑏, 𝑐, 𝑑}; 
𝑃 = {𝑆 → 𝐴𝐵|𝐶, 𝐴 → 𝑎𝐴𝑏|𝑎𝑏, 𝐵 → 𝑐𝐵𝑑|𝑐𝑑, 𝐶 → 𝑎𝐶𝑑|𝑎𝐷𝑑 , 𝐷 → 𝑏𝐷𝑐|𝑏𝑐}. A linguagem 
𝐿(𝐺) é inerentemente ambígua. 
Solução. Nesta gramática existem as produções para derivar as palavras da forma 
{𝑎𝑛𝑏𝑛𝑐𝑚𝑑𝑚|𝑛, 𝑚 ≥ 1} = 𝐿1 e outras produções para derivar as palavras da forma 
{𝑎𝑛𝑏𝑚𝑐𝑚𝑑𝑛|𝑛, 𝑚 ≥ 1} = 𝐿2. 𝐿(𝐺) = 𝐿1 ∪ 𝐿2 e 𝐿1 ∩ 𝐿2 ≠ ∅, 𝐿1 ∩ 𝐿2 = {𝑎
𝑛𝑏𝑛𝑐𝑛𝑑𝑛|𝑛 ≥ 1}. 
T 
F 
E 
E T + 
T F * 
F 
I 
I 
a I 
a a 
 Linguagens Formais e Autómatos 
112 
As palavras de 𝐿1 ∩ 𝐿2 podemos derivar aplicando as produções para 𝐿1 e tambem podemos 
derivar aplicando as produções para 𝐿2. Por exemplo, 
1) 𝑆 ⇒𝑒
 𝐴𝐵 ⇒𝑒
 𝑎𝐴𝑏𝐵 ⇒𝑒
 𝑎𝑎𝑏𝑏𝐵 ⇒𝑒
 𝑎𝑎𝑏𝑏𝑐𝐵𝑑 ⇒𝑒
 𝑎𝑎𝑏𝑏𝑐𝑐𝑑𝑑 
2) 𝑆 ⇒𝑒
 𝐶 ⇒𝑒
 𝑎𝐶𝑑 ⇒𝑒
 𝑎𝑎𝐷𝑑𝑑 ⇒𝑒
 𝑎𝑎𝑏𝐷𝑐𝑑𝑑 ⇒𝑒
 𝑎𝑎𝑏𝑏𝑐𝑐𝑑𝑑 
É claro que qualquer gramática que gera 𝐿(𝐺) deve ter uma derivação esquerda para as palavras 
de 𝐿1 e ter outra derivação esquerda para palavras de 𝐿2. Assim, devem existir derivações 
esquerdas diferentes para cada palavra de 𝐿1 ∩ 𝐿2. 
Não existe o algoritmo que para qualquer GIC 𝐺 responde 𝐺 é ambígua ou não. Logo o 
problema de ambiguidade para GIC’s é indecidível. 
O problema de saber se uma LIC arbitrátia é inerentemente ambígua também é indecidível. 
Mas existem as técnicas que permitem eliminar ambiguidade em certos casos de interesse. 
 
Lema de Repetição para linguagens independentes de contexto 
 
Teorema 9.4. (Lema de Repetição para LIC’s) 
Seja 𝐿 uma LIC. Existe um número 𝑛 que depende de 𝐿 tal que se 𝑧 ∈ 𝐿 e |𝑧| > 𝑛 então 
𝑧 = 𝑢𝑣𝑤𝑥𝑦 onde: 
1) |𝑣𝑤𝑥| ≤ 𝑛; 
2) |𝑣| + |𝑥| > 0; 
3) 𝑢𝑣𝑖𝑤𝑥𝑖𝑦 ∈ 𝐿 e para todo 𝑖 ≥ 0. 
Exemplo 9.11. Demonstrar que 𝐿 = {𝑎𝑖𝑏𝑖𝑐𝑖| 𝑖 ≥ 0} não é LIC. 
Solução. Suponhamos que 𝐿 é uma LIC. 
Pelo Lema de Repetição existe um número 𝑛. Seja 𝑧 = 𝑎𝑛𝑏𝑛𝑐𝑛. Então, 𝑧 ∈ 𝐿 e |𝑧| = 3𝑛 > 𝑛. 
Logo, 𝑧 = 𝑢𝑣𝑤𝑥𝑦 onde |𝑣𝑤𝑥| ≤ 𝑛 e |𝑣| + |𝑥| > 0. 
 Linguagens Formais e Autómatos 
113 
 
 
Assim, 𝑣𝑤𝑥 ou entre a’s ou entre a’s e b’s, ou entre b’s, ou entre b’s e c’s ou entre c’s. Em qualquer 
caso a palavra 𝑢𝑣2𝑤𝑥2𝑦 ∉ 𝐿. É uma contradição com Lema de Repetição. Logo 𝐿 não é LIC. 
 
Problemas resolvidos 
 
9.1. Achar uma GIC 𝐺 que gera a linguagem de palíndromos 𝐿𝑝𝑎𝑙 = {𝑤|𝑤 ∈ {𝑎, 𝑏}, 𝑤 = 𝑤
𝑅}. 
Solução. 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆}, 𝑇 = {𝑎, 𝑏}, 𝑃 = {𝑆 → 𝜆|𝑎𝑆𝑎|𝑏𝑆𝑏}. 
Produção 𝑆 → 𝜆 significa que 𝜆 é palíndromo. 
Produções 𝑆 → 𝑎𝑆𝑎|𝑏𝑆𝑏 significam que se 𝑆 é palíndromo então 𝑎𝑆𝑎 e 𝑏𝑆𝑏 também são 
palíndromos. 
9.2. Demonstrar que a linguagem de enunciados condicionais 𝐿𝑒𝑐 não é linguagem regular. 
Solução. Vamos usar o lema de repetição para linguagens regulares. 
Suponhamos que 𝐿𝑒𝑐 é LR. Então, 𝐿𝑒𝑐
𝑅 também é LR. Assim, existe uma constante 𝑛 que depende 
de 𝐿𝑒𝑐
𝑅 Escolhemos um número 𝑘 ≥ 𝑛. A palavra 𝑥 = 𝑒𝑘𝑖𝑘 ∈ 𝐿𝑒𝑐
𝑅 e |𝑥| = 2𝑘 > 𝑛. Logo, 
𝑥 = 𝑢𝑣𝑤 onde |𝑢𝑣| ≤ 𝑛 e |𝑣| ≥ 1. Pelo lema de repetição 𝑢𝑣2𝑤 ∈ 𝐿𝑒𝑐
𝑅. Mas 𝑢𝑣2𝑤 = 𝑒𝑚𝑖𝑘 
onde 𝑚 > 𝑛. Assim 𝑢𝑣2𝑤 ∉ 𝐿𝑒𝑐
𝑅. É uma contradição. Logo, 𝐿𝑒𝑐
𝑅 não é LR. Portanto, 𝐿𝑒𝑐 
também não é LR. 
9.3. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆}, 𝑇 = {𝑎, 𝑏}, 𝑃 = {𝑆 → 𝑎𝑆𝑏|𝑎𝑆𝑏𝑏|𝜆}. 
a) Mostrar que 𝐺 é ambígua. 
b) Achar 𝐿(𝐺). 
c) Eliminar ambiguidade (achar 𝐺′ inambígua equivalente). 
d) Construir AD’s para 𝑎2𝑏3 nas gramáticas 𝐺 e 𝐺′. 
vwx 
𝑥 = 𝑎 … 𝑎 𝑏 … 𝑏 𝑐 … 𝑐 
n n n 
 Linguagens Formais e Autómatos 
114 
Solução. 
a) 1) 𝑆 ⇒𝑒
 𝑎𝑆𝑏 ⇒𝑒
 𝑎𝑎𝑆𝑏𝑏𝑏 ⇒𝑒
 𝑎𝑎𝑏𝑏𝑏 = 𝑎2𝑏3 
 2) 𝑆 ⇒𝑒
 𝑎𝑆𝑏𝑏 ⇒𝑒
 𝑎𝑎𝑆𝑏𝑏𝑏 ⇒𝑒
 𝑎𝑎𝑏𝑏𝑏 = 𝑎2𝑏3 
A palavra 𝑎2𝑏3 ∈ 𝐿(𝐺) e tem duas derivações esquerdas diferentes. Logo, 𝐺 é ambígua. 
b) 𝐿(𝐺) = {𝑎𝑛𝑏𝑚|0 ≤ 𝑛 ≤ 𝑚 ≤ 2𝑛} 
c) Uma estratégia para eliminar ambiguidade no início produzir a’s com único b 
correspondente e depois produzir a’s com dois b’s correspondentes. 
Assim, 𝑃′ = {𝑆 → 𝑎𝑆𝑏|𝐴|𝜆, 𝐴 → 𝑎𝐴𝑏𝑏|𝑎𝑏𝑏}. 
Agora a derivação esquerda para palavra 𝑎2𝑏3 ∈ 𝐿(𝐺′) é única 
𝑆 ⇒𝑒
 𝑎𝑆𝑏 ⇒𝑒
 𝑎𝐴𝑏 ⇒𝑒
 𝑎𝑎𝑏𝑏𝑏 = 𝑎2𝑏3 
Assim, 𝐺′ = (𝑁′, 𝑇, 𝑃′, 𝑆), onde 𝑁′ = {𝑆, 𝐴}, 𝑇 = {𝑎, 𝑏}, 
𝑃′ = {𝑆 → 𝑎𝑆𝑏|𝐴|𝜆, 𝐴 → 𝑎𝐴𝑏𝑏|𝑎𝑏𝑏} é inambígua e 𝐿(𝐺′) = 𝐿(𝐺). 
d) AD’s para gramática 𝐺: 
1) 2) 
 
 
 
 
 
 
AD para gramática 𝐺′: 
 
 
 
 
S 
a b S 
 
a b S b 
𝜆 
S 
a b S 
 
a b S 
b 
𝜆 
S 
a b S 
 
a b 
A 
b 
 Linguagens Formais e Autómatos 
115 
9.4. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), onde 𝑁 = {𝑆, 𝐴, 𝐵}, 𝑇 = {𝑎, 𝑏}, 
𝑃 = {𝑆 → 𝑎𝑆|𝑎𝐴, 𝐴 → 𝑎𝐴| 𝑏𝐵, 𝐵 → 𝜆}. 
a) Que tipo tem gramática 𝐺? 
b) Mostrar que 𝐺 é ambígua (achar duas derivações esquerdas diferentes para palavra aab). 
c) Construir AD’s diferentes para palavra aab. 
d) Eliminar ambiguidade. 
e) Achar 𝐿(𝐺). 
Solução. a) 𝐺 é uma gramática regular (Tipo 3). 
b) 1) 𝑆 ⇒𝑒
 𝑎𝑆 ⇒𝑒
 𝑎𝑎𝐴 ⇒𝑒
 𝑎𝑎𝑏𝐵 ⇒𝑒
 𝑎𝑎𝑏 
 2) 𝑆 ⇒𝑒
 𝑎𝐴 ⇒𝑒
 𝑎𝑎𝐴 ⇒𝑒
 𝑎𝑎𝑏𝐵 ⇒𝑒
 𝑎𝑎𝑏 
𝐺 é ambígua. 
c) 
 1) 2) 
 
 
 
 
 
 
 
 
d) 𝐺 é uma gramática regular. Então, para achar uma gramática equivalente que não é ambígua é 
preciso contruir AFD 𝐴 tal que 𝐿(𝐴) = 𝐿(𝐺) e depois achar gramática 𝐺1 tal que 
𝐿(𝐺1) = 𝐿(𝐴) = 𝐿(𝐺). 
Autómato que corresponde a gramática 𝐺 é 
S 
a 
A 
S 
 
𝜆 
B 
a 
b 
S 
a 
A 
A 
 
𝜆 
B 
a 
b 
 Linguagens Formais e Autómatos 
116 
 
 
 
Mas este autómato não é AFD (logo, 𝐺 é ambígua) 
Vamos achar AFD 𝐴: 𝐿(𝐴) = 𝐿(𝐴1) 
 
 
 
 
 
 
 
 
 
 
 
 
 
A gramática inambígua 𝐺1 tal que 𝐿(𝐺) = 𝐿(𝐺1) é 𝐺1 = (𝑁′, 𝑇, 𝑃′, 𝑆), onde 𝑁
′ = {𝑆, 𝐵, 𝐶, 𝐷},
𝑇 = {𝑎, 𝑏}, 𝑃′ = {𝑆 → 𝑎𝐶|𝑏𝐷, 𝐶 → 𝑎𝐶|𝑏𝐵, 𝐵 → 𝑎𝐷|𝑏𝐷|𝜆, 𝐷 → 𝑎𝐷|𝑏𝐷} 
e) Utilizando AFD 𝐴 é fácil ver que 𝐿(𝐴) = 𝑎𝑎∗𝑏 = 𝑎+𝑏 = 𝐿(𝐺). 
9.5. Achar duas gramáticas regulares uma ambígua outra não que geram a linguagem 𝐿 = 𝑎∗. 
Construir autómatos correspondentes. 
Solução. 𝐺1 = (𝑁1, 𝑇1, 𝑃1, 𝑆), onde 𝑁1 = {𝑆}, 𝑇1 = {𝑎, 𝑏}, 𝑃1 = {𝑆 → 𝑎𝑆|𝜆}. 𝐺1 não é 
ambígua. Autómato correspondente é AFD 𝐴1: 
 
𝛿′ 𝑎 𝑏 
→ {𝑆} {𝑆, 𝐴} ∅ 
{𝑆, 𝐴} {𝑆, 𝐴} {𝐵} 
∅ ∅ ∅ 
∗ {𝐵} ∅ ∅ 
a b 
a 
𝑆 𝐴 𝐵 𝐴1: 
a 
{𝑆} − 𝑆 
{𝑆, 𝐴} − 𝐶 
{𝐵} − 𝐵 
∅ − 𝐷 
a b 
a 
b 
𝐴: 
a,b 
𝑆 𝐶 𝐵 
𝐷 
a,b 
a 
𝑆 𝐴1: 
 Linguagens Formais e Autómatos 
117 
𝐺2 = (𝑁2, 𝑇2, 𝑃2, 𝑆), onde 𝑁2 = {𝑆, Φ}, 𝑇2 = {𝑎}, 𝑃2 = {𝑆 → 𝑎𝑆|𝑎|𝜆}. 𝐺2 é ambígua.1) 𝑆 ⇒𝑒
 𝑎𝑆 ⇒𝑒
 𝑎 ∈ 𝐿(𝐺2) 
2) 𝑆 ⇒𝑒
 𝑎 ∈ 𝐿(𝐺2) 
Autómato correspondente é AFND – 𝜆 𝐴2: 
 
 
 
A gramática que corresponde ao autómato 𝐴2 é 
𝐺3 = (𝑁3, 𝑇3, 𝑃3, 𝑆) 
𝑁3 = {𝑆, Φ}, 𝑇3 = {𝑎}, 𝑃3 = {𝑆 → 𝑎𝑆|𝑎Φ|𝜆, Φ → 𝜆}. 
Esta gramática ambígua é equivalente a 𝐺2 e gera 𝑎
∗. 𝐿(𝐺1) = 𝐿(𝐺2) = 𝐿(𝐺3). 
 
Problemas propostos 
 
9.6. Demonstrar que a linguagem 𝐿𝑏𝑎𝑙 não é linguagem regular. 
9.7. Demonstrar que a linguagem 𝐿𝑝𝑎𝑙 não é linguagem regular. 
9.8. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) onde 𝑁 = {𝑆}, 𝑇 = {𝑎}, 𝑃 = {𝑆 → 𝑎𝑆|𝑆𝑎|𝑎}. 
a) Mostrar que 𝐺 é ambígua. 
b) Achar 𝐿(𝐺). 
c) Achar uma gramática inambígua equivalente. 
9.9. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) onde 𝑁 = {𝑆}, 𝑇 = {𝑎}, 𝑃 = {𝑆 → 𝑏𝑆|𝑆𝑏|𝑎}. 
a) Mostrar que 𝐺 é ambígua (achar duas derivações esquerdas diferentes para palavra 
𝑏𝑎𝑏 ∈ 𝐿(𝐺)). 
b) Construir AD’s correspondentes. 
a 
a 
Φ 𝑆 𝐴2: 
 Linguagens Formais e Autómatos 
118 
c) Achar 𝐿(𝐺). 
d) Achar duas gramáticas inambíguas equivalentes a 𝐺. 
9.10. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆) onde 𝑁 = {𝑆}, 𝑇 = {𝑎}, 𝑃 = {𝑆 → 𝑎|𝑆𝑏𝑆}. 
a) Mostrar que 𝐺 é ambígua (achar duas derivações esquerdas diferentes para palavra 
𝑎𝑏𝑎𝑏𝑎 ∈ 𝐿(𝐺)). 
b) Construir AD’s correspondentes. 
c) Achar duas gramáticas inambíguas equivalentes a 𝐺. 
9.11. Seja 𝐺 = (𝑁, 𝑇, 𝑃, 𝑆), 𝑁 = {𝑆, 𝐴}, 𝑇 = {𝑎, 𝑏}, 𝑃 = {𝑆 → 𝐴𝑆|𝜆, 𝐴 → 𝑎|𝜆 }. Mostrar que 
𝐺 é ambígua. Eliminar ambiguidade. 
9.12. Especifique uma GIC 𝐺 sobre alfabeto 𝑇 = {𝑎, 𝑏, (, ),∗, ∅, 𝜆, +} que gere a linguagem de 
todas expressões regulares sobre alfabeto {𝑎, 𝑏}. Demonstra que esta linguagem não é regular. 
9.13. A.V. Aho, Ravi Sethi, J.D, Ullman. COMPILADORES: Princípios, Técnicas e 
Ferramentas, Editora Alfiada, 1995. 
Eliminando a Ambiguidade pp 78–79 (Autoaprendizagem) 
 
Respostas 
 
9.8. a) 
 1) 𝑆 ⇒𝑒
 𝑎𝑆 ⇒𝑒
 𝑎𝑎 
2) 𝑆 ⇒𝑒
 𝑆𝑎 ⇒𝑒
 𝑎𝑎 
b) 𝐿(𝐺) = 𝑎+. 
 
9.9. a) 
1) 𝑆 ⇒𝑒
 𝑏𝑆 ⇒𝑒
 𝑏𝑆𝑏 ⇒𝑒
 𝑏𝑎𝑏 
 2) 𝑆 ⇒𝑒
 𝑆𝑏 ⇒𝑒
 𝑏𝑆𝑏 ⇒𝑒
 𝑏𝑎𝑏 
 Linguagens Formais e Autómatos 
119 
b) 
1) 2) 
 
 
 
 
 
 c) 𝐿(𝐺) = 𝑏∗𝑎𝑏∗. 
 
d) 𝐺1: 𝑆 → 𝑏𝑆|𝑎𝐴, A → 𝑏𝐴|𝜆 
 𝐺2: 𝑆 → 𝑏𝑆|𝐴, A → 𝐴𝑏|𝑎 
 
9.10. a) 
1) 𝑆 ⇒𝑒
 𝑆𝑏𝑆 ⇒𝑒
 𝑆𝑏𝑆𝑏𝑆 ⇒𝑒
 𝑎𝑏𝑆𝑏𝑆 ⇒𝑒
 𝑎𝑏𝑎𝑏𝑆 ⇒𝑒
 𝑎𝑏𝑎𝑏𝑎 
2) 𝑆 ⇒𝑒
 𝑆𝑏𝑆 ⇒𝑒
 𝑎𝑏𝑆 ⇒𝑒
 𝑎𝑏𝑆𝑏𝑆 ⇒𝑒
 𝑎𝑏𝑎𝑆𝑏 ⇒𝑒
 𝑎𝑏𝑎𝑏𝑎 
b) 1) 2) 
 
 
 
 
 
 
c) 𝐺1: 𝑆 → 𝑎𝑏𝑆|𝑎 
𝐺2: 𝑆 → 𝑆𝑏𝑎|𝑎 
9.11. 𝐺: 𝑆 → 𝐴𝑆|𝜆, A → 𝑎 
9.12. 𝐺: 𝑆 → (𝑆 + 𝑆) | (𝑆𝑆) | (𝑆∗) | 𝑎 | 𝑏 | ∅ |𝜆. 
 
S 
b 
b 
S 
 
S 
a 
S 
S 
b 
b 
 
S 
a 
a 
S 
S S b 
S S b a 
a 
a 
S 
S S b 
S S b 
a a 
 Linguagens Formais e Autómatos 
120 
Capítulo 10 
 
Autómatos de Pilha 
 
 Consideremos o seguinte exemplo: 
Exemplo 10.1. Sejam 𝐿5 = {0
𝑛1𝑛| 1 ≤ 𝑛 ≤ 5} e 𝐿 = {0𝑛1𝑛| 1 ≤ 𝑛 ≤ 5}. A linguagem 𝐿5 é 
regular, pois é finita e a linguagem 𝐿 não é regular, 𝐿 é uma LIC (Problema 7.3 e Exemplo 8.1). 
 Vamos construir um AFND – 𝜆 𝐴 que reconhece 𝐿5 (𝐿(𝐴) = 𝐿5). 
 
 
 
 
 
 
 Os estados 𝑞1, 𝑞2, … , 𝑞5 são usados para conter o número de 0’s no inicio da palavra de 
entrada e 𝑞1′, 𝑞2′, … , 𝑞5′ são usados para contar o número de 1’s. É claro que esta técnica não 
funciona para 𝐿. É preciso um número infinito de estados. 
 Vamos construir um autómato 𝑃 com 3 estados 𝑄 = {𝑞0, 𝑞1, 𝑓} que tem uma “memória de 
pilha” sobre alfabeto Γ = {$, 𝐴} onde $ é o símbolo inicial da pilha e a letra vamos utilizar para 
contar 0’s. 
Definimos a função de transição 
𝛿: 𝑄 × (Σ ∪ {𝜆}) × (Γ ∪ {𝜆}) → 𝑄 × Γ∗ 
𝛿(𝑞0, 0, $) = (𝑞0, 𝐴$), 𝛿(𝑞0, 0, 𝐴) = (𝑞0, 𝐴𝐴), 
𝛿(𝑞0, 1, 𝐴) = (𝑞1, 𝜆), 𝛿(𝑞1, 1, 𝐴) = (𝑞1, 𝜆), 
𝛿(𝑞1, 𝜆, $) = (𝑓, $). 
1 
𝑞0 𝑞1 
𝑓 
0 
𝑞2 
1 
𝜆 
0 0 
1 
𝐴: 
𝑞4 𝑞5 𝑞3 
𝑞1′ 𝑞2′ 𝑞4′ 𝑞5′ 𝑞3′ 
0 
1 
0 
1 
𝜆 𝜆 𝜆 𝜆 
 Linguagens Formais e Autómatos 
121 
Ou na forma de tabela: 
 
 
 
 
 
Vamos construir o diagrama de transição para este autómato 𝑃 
 
 
 
 
 
 Um termo (𝑞, 𝑥, 𝛼) onde 𝑞 ∈ 𝑄 é um estado, 𝑥 ∈ Σ∗, 𝛼 ∈ Γ∗ chama-se configuração do 
autómato de pilha. Configuração inicial é (𝑞0, 𝑥, $), 𝑞0 − estado inicial, 𝑥 ∈ Σ
∗, $ − símbolo 
inicial da pilha. 
 Vamos realizar algumas computações no nosso autómato. 
1) (𝑞0, 0011, $) ⊢ (𝑞0, 011, 𝐴$) ⊢ (𝑞0, 11, 𝐴𝐴$) ⊢ (𝑞1, 1, 𝐴$) ⊢ (𝑞1, 𝜆, $) ⊢ (𝑓, 𝜆, $). 
2) (𝑞0, 011, 𝐴$) ⊢ (𝑞0, 11, 𝐴$) ⊢ (𝑞1, 1, $). 
3) (𝑞0, 010, 𝐴$) ⊢ (𝑞0, 10, 𝐴$) ⊢ (𝑞1, 0, $). 
4) (𝑞0, 0
𝑛1𝑛, $) ⊢ (𝑞0, 0
𝑛−11𝑛, 𝐴$) ⊢ (𝑞0, 0
𝑛−21𝑛 𝐴𝐴$) ⊢∗ (𝑞0, 01
𝑛, 𝐴𝑛−1$) ⊢
(𝑞0, 1
𝑛, 𝐴𝑛$) ⊢ (𝑞1, 1
𝑛−1, 𝐴𝑛−1$) ⊢∗ (𝑞1, 1, 𝐴$) ⊢ (𝑞1, 𝜆, $) ⊢ (𝑓, 𝜆, $). 
 Assim, um autómato de pilha tem os elementos seguintes: 
 
 
 
 
𝛿 0 1 𝜆 
𝑞0, $ 𝑞0, 𝐴$ − − 
𝑞0, 𝐴 𝑞0, 𝐴𝐴 𝑞1, 𝜆 − 
𝑞1, 𝐴 − 𝑞1, 𝜆 − 
𝑞1, $ − − 𝑓, $ 
 a . . . 
𝑞0 
0 $/A$ 
𝑃: 𝑞1 
1 A/𝜆 
0 A/𝜆 
0 A/AA 
𝑓 
𝜆 $/$ 
Estados 
Fita 
Cursor
 
Controlo Central 
Pilha
 
 Linguagens Formais e Autómatos 
122 
 Um autómato de pilha tem uma memória infinita (uma pilha). 
 Em cada transição o autómato de pilha pode alterar o estado e o topo da pilha. Uma 
transição é determinada pelo estado actual, pelo símbolo do topo da pilha e pelo símbolo da palavra 
de entrada que está na célula activa (pode ter também transições por 𝜆). 
 Como o resultado de transição o autómato altera o estado actual (pode ser por um conjunto 
finito de estados (não determinístico)), move o cursor por uma célula para a direita (excepto a 
transição por 𝜆) e substitui o elemento no topo da pilha por uma sequência de outros símbolos 
(possivelmente vazia). 
Vamos dar a definição formal 
Definição 10.1. Um Autómato de Pilha (AP) é um sistema de 7 (sete) elementos 
𝑃 = (𝑄, Σ, Γ, 𝛿, 𝐹, 𝑞0, $) onde: 
1) 𝑄 é um conjunto finito de estados; 
2) Σ é o alfabeto de entrada; 
3) Γ é o alfabeto da pilha (letras maiúsculas); 
4) 𝛿: 𝑄 × (Σ ∪ {𝜆}) × (Γ ∪ {𝜆}) → 𝑃𝑓𝑖𝑛(𝑄 × Γ
∗) é a função de transição; 
5) 𝐹 ⊆ 𝑄 é o conjunto de estados finais; 
6) 𝑞0 ∈ 𝑄 é dito estado inicial; 
7) $ é o símbolo inicial da pilha. 
Definição 10.2. Substituição do topo da pilha. Substituir o topo da pilha 𝑋 pela sequência 
𝑋1 … 𝑋𝑘 , 𝑘 ≥ 1, 𝑋, 𝑋𝑖 ∈ Γ, 𝑖 = 1, … , 𝑘 corresponde a retirar 𝑋 e colocar sucessivamente 
𝑋𝑘 … 𝑋1, passando o topo a ser 𝑋1. Substituir o elemento no topo da pilha 𝑌 por 𝜆 corresponde a 
rectificar o elemento no topo da pilha. 
 O topo da pilha no inicio. Quando o autómato começa a processar a palavra, o único 
símbolo que está na pilha é o símbolo inicial da pilha $. 
Definição 10.3. Aceitação por estados finais. Uma palavra 𝑤 ∈ Σ∗ é aceite pelo AP 𝑃 por estados 
finais se e somente se 𝑤 leva o autómato do estado inicial a algum dos estados finais, sendo 
totalmente processada. 
 Linguagens Formais e Autómatos 
123 
 A linguagem que aceita o autómato 𝑃 por estados finais é: 
𝐿𝐹(𝑃) = {𝑤|𝑤 ∈ Σ
∗: (𝑞0, 𝑤, $) ⊢
∗ (𝑞, 𝜆, 𝛼), 𝑞 ∈ 𝐹}. 
Definição 10.4. Aceitação por pilha vazia. Uma palavra 𝑤 ∈ Σ∗ é aceite pelo AP 𝑃 por pilha 
vazia se e somente se 𝑤 leva o autómato do estado inicial a pilha vazia, sendo totalmente 
processada. 
 A linguagem que aceita o autómato 𝑃 por estados finais é: 
𝐿𝑉(𝑃) = {𝑤|𝑤 ∈ Σ
∗: (𝑞0, 𝑤, $) ⊢
∗ (𝑞, 𝜆, 𝜆)}. 
Nestecaso o conjunto de estados finais 𝐹 = ∅. 
Exemplo 10.2. Seja 𝑃 = (𝑄, Σ, Γ, 𝛿, 𝐹, 𝑞0, $) onde 𝑄 = {𝑞0, 𝑞1}, Σ = {0,1}, Γ = {$, 𝐴}, 
𝐹 = ∅. 
𝛿(𝑞0, 𝜆, $) = (𝑞1, $), 𝛿(𝑞0, 0, $) = (𝑞0, 𝐴$), 
𝛿(𝑞0, 0, 𝐴) = (𝑞0, 𝐴𝐴), 𝛿(𝑞0, 1, 𝐴) = (𝑞1, 𝜆), 
𝛿(𝑞1, 1, 𝐴) = (𝑞1, 𝜆), 𝛿(𝑞1, 1, $) = (𝑞1, $), , 𝛿(𝑞1, 1, $) = (𝑞1, 𝜆). 
 
 
 
 
 
 
 
 
 
 
 
 
Vamos faze a computação de 𝑃 quando a palavra de input é 𝑤 = 00111: 
(𝑞0, 00111, $) ⊢ (𝑞0, 0111, 𝐴$) ⊢ (𝑞0, 111, 𝐴𝐴$) ⊢ (𝑞1, 11, 𝐴$) ⊢ (𝑞1, 1, $) ⊢ (𝑞1, 𝜆, 𝜆). 
𝛿 0 1 𝜆 
𝑞0, $ 𝑞0, 𝐴$ − 𝑞1, $ 
𝑞0, 𝐴 𝑞0, 𝐴𝐴 𝑞1, 𝜆 − 
𝑞1, 𝐴 − 𝑞1, 𝜆 − 
𝑞1, $ − 𝑞1, $ − 
𝑞1, $ − 𝑞1, 𝜆 − 
𝑞0 
0 $/A$ 
0 A/AA 
 
𝑞1 
𝜆 $/$ 
1 A/𝜆 
 
1 A/𝜆 
1 $/$ 
1 S/𝜆 
 Linguagens Formais e Autómatos 
124 
Logo, 00111 ∈ 𝐿𝑉(𝑃). 
Analisando o diagrama de transição de 𝑃 é fácil ver que 𝐿𝑉(𝑃) = {0
𝑛1𝑚|𝑚 > 𝑛}. 
Teorema 10.1. Seja 𝐿 uma linguagem. Se existe um AP 𝑃 tal que 𝐿 = 𝐿𝐹(𝑃) então existe um AP 
𝑃′ tal que 𝐿 = 𝐿𝑉(𝑃′ ) e vice-versa se existe um AP 𝑃 tal que 𝐿𝑉(𝑃) = 𝐿 então existe um AP 𝑃′ 
tal que 𝐿 = 𝐿𝐹(𝑃′ ). 
Demonstração. Seja 𝐴 = (𝑄, Σ, Γ, 𝛿, 𝐹, 𝑞0, $) um AP e 𝐿 = 𝐿𝐹(𝐴). Então existe um AP 𝐴′ tal 
que 𝐿 = 𝐿𝑉(𝐴′ ). Realmente 𝐴′ = (𝑄 ∪ {𝑞0
′ , 𝑆}, Σ, Γ ∪ {$′}, 𝛿′, ∅, 𝑞0
′ , $′) onde $′ é um novo 
símbolo de pilha ($′ ∉ Γ) e 𝑞0
′ , 𝑆 são os novos estados (𝑆 vai ser usado para esvaziar a pilha). 
Onde a função de transição 𝛿′ é: 
1) 𝛿′(𝑞, 𝑎, 𝑍) = 𝛿(𝑞, 𝑎, 𝑍) para todos 𝑞 ∈ 𝑄, 𝑎 ∈ Σ ∪ {𝜆}, 𝑍 ∈ Γ; 
2) 𝛿′(𝑞0
′ , 𝜆, $) = {(𝑞0, $$)}; 
3) 𝛿′(𝑓, 𝜆, 𝑍) ∋ {(𝑆, 𝜆)} para todos 𝑓 ∈ 𝐹, 𝑍 ∈ Γ ∪ {$′}; 
4) 𝛿′(𝑆, 𝜆, 𝑍) = {(𝑆, 𝜆)} para todo 𝑍 ∈ Γ ∪ {$′}. 
 Agora, seja 𝐴 = (𝑄, Σ, Γ, 𝛿, ∅, 𝑞0, $) um AP e 𝐿 = 𝐿𝑉(𝐴). Então existe um AP 𝐴′ tal que 
𝐿 = 𝐿𝐹(𝐴′ ). Sejam $′ é um novo símbolo de pilha ($′ ∉ Γ) e 𝑞0
′ , 𝑓 dois novos estados. 
 O autómato 𝐴′ trabalha da mesma maneira que 𝐴, mas quando 𝐴 fica com pilha vazia, 𝐴′ 
tem $′ na pilha passando o estado final 𝑓. Então 𝐴′ = (𝑄 ∪ {𝑞0
′ , 𝑓}, Σ, Γ ∪ {$′}, 𝛿′, {𝑓}, 𝑞0
′ , $′) 
Onde a função de transição 𝛿′ é: 
1) 𝛿′(𝑞, 𝑎, 𝑍) = 𝛿(𝑞, 𝑎, 𝑍) para todos 𝑞 ∈ 𝑄, 𝑎 ∈ Σ ∪ {𝜆}, 𝑍 ∈ Γ; 
2) 𝛿′(𝑞0
′ , 𝜆, $′) = {(𝑞0, $$′)}; 
3) 𝛿′(𝑞, 𝜆, $′) ∋ {(𝑓, $′)} para todo 𝑞 ∈ 𝑄. 
Teorema 10.2. A classe de linguagens reconhecidas por autómatos de pilha é precisamente a 
classe de linguagens independentes de contexto. 
Problemas resolvidos 
10.1. Seja 𝐴 é AP do Exemplo 10.2. 
 Linguagens Formais e Autómatos 
125 
 
 
 
 
 𝐿𝑉(𝑃) = {0
𝑛1𝑚|𝑚 > 𝑛}. 
a) Achar AP 𝐴′ tal que 𝐿𝐹(𝐴′) = 𝐿𝑉(𝐴) = {0
𝑛1𝑚|𝑚 > 𝑛}. 
b) Fazer a computação para palavra de entrada 𝑤 = 00111 no AP 𝐴′. 
Solução. a) Aplicando o teorema 10.1 podemos achar AP 𝐴′: 
 
 
 
 
 
 
 
Então, 𝐿𝐹(𝐴′) = {0
𝑛1𝑚|𝑚 > 𝑛}. 
b) 𝑤 = 00111 
(𝑞0′, 00111, $′) ⊢ (𝑞0, 00111, $$′) ⊢ (𝑞0, 0111, 𝐴$$′) ⊢ (𝑞0, 111, 𝐴𝐴$$′) ⊢
(𝑞1, 11, 𝐴$$′) ⊢ (𝑞1, 1, $$′) ⊢ (𝑞1, 𝜆, $′) ⊢ (𝑓, 𝜆, $′). 
Logo, 00111 ∈ 𝐿𝐹(𝐴′). 
 
10.2. Seja 𝐴 é AP do Exemplo 10.1. 
 
 
 
𝑞0 
0 $/A$ 
0 A/AA 
 
𝑞1 
𝜆 $/$ 
1 A/𝜆 
 
1 A/𝜆 
1 $/$ 
1 $/𝜆 
𝐴: 
𝑞0 
0 $/A$ 
0 A/AA 
 
𝑞1 
𝜆 $/$ 
1 A/𝜆 
 
1 A/𝜆 
1 $/$ 
1 $/𝜆 𝐴′: 
𝜆 $´/$$´ 
𝜆 $´/$´ 
𝜆 $´/$´ 
𝑞0′ 𝑓 
𝑞0 
0 $/A$ 
0 A/AA 
𝐴: 𝑞1 
1 A/𝜆 
0 A/𝜆 
𝑓 
𝜆 $/$ 
 Linguagens Formais e Autómatos 
126 
 𝐿𝐹(𝐴) = {0
𝑛1𝑛|𝑛 ≥ 1}. 
a) Achar AP 𝐴′ tal que 𝐿𝑉(𝐴′) = 𝐿𝐹(𝐴) = {0
𝑛1𝑛|𝑛 ≥ 1}. 
b) Fazer a computação para palavra de entrada 𝑤 = 0011 no AP 𝐴′. 
Solução. a) Aplicando o teorema 10.1 podemos achar AP 𝐴′: 
 
 
 
 
 
 
 
 
 
 
 
Então, 𝐿𝑉(𝐴′) = {0
𝑛1𝑛|𝑛 ≥ 1}. 
b) 𝑤 = 0011 
(𝑞0′, 0011, $′) ⊢ (𝑞0, 0011, $$′) ⊢ (𝑞0, 011, 𝐴$$′) ⊢ (𝑞0, 11, 𝐴𝐴$$′) ⊢ (𝑞1, 1, 𝐴$$′) ⊢
(𝑞1, 𝜆, $$′) ⊢ (𝑆, 𝜆, $′) ⊢ (𝑆, 𝜆, 𝜆). 
Logo, 0011 ∈ 𝐿𝑉(𝐴′). 
 
Problemas propostos 
10.3. Seja 𝐿 = {𝑤|𝑤 ∈ {0,1}∗ , |𝑤|0 = |𝑤|1}. 
a) Achar AP 𝐴1: 𝐿𝐹(𝐴1) = 𝐿. 
b) Fazer a computação para palavra de entrada 𝑤 = 1001 no autómato 𝐴1. 
c) Achar AP 𝐴2: 𝐿𝑉(𝐴2) = 𝐿 (utilizar o teorema 10.1). 
d) Fazer a computação para palavra de entrada 𝑤 = 1001 no autómato 𝐴2. 
𝑞0 
0 $/A$ 
0 A/AA 
𝐴′: 𝑞1 
1 A/𝜆 
0 A/𝜆 
𝑓 
𝜆 $/$ 
𝜆 $´/$$´ 
𝑞0′ 𝑆 
𝜆 $/𝜆 
𝜆 A/𝜆 
𝜆 $´/𝜆 
𝜆 A/𝜆 
𝜆 $/𝜆 
𝜆 $´/𝜆 
 Linguagens Formais e Autómatos 
127 
10.4. Seja 𝐿 − linguagem de enunciados condicionais (if...else) (veja capítulo 9). 
a) Achar AP 𝐴1: 𝐿𝑉(𝐴1) = 𝐿𝑒𝑐. 
b) Fazer a computação para as palavras de entrada 𝑤1 = 𝑖𝑖𝑒, 𝑤2 = 𝑖𝑒𝑒𝑖 no autómato 𝐴1. 
c) Achar AP 𝐴2: 𝐿𝐹(𝐴2) = 𝐿𝑒𝑐 (utilizar o teorema 10.1). 
d) Fazer a computação para as palavras de entrada 𝑤1 = 𝑖𝑖𝑒, 𝑤2 = 𝑖𝑒𝑒𝑖 no autómato 𝐴2. 
 
10.5. Seja 𝐿 = {𝑤𝑐𝑤𝑅|𝑤 ∈ {𝑎, 𝑏}∗}. 
a) Achar AP 𝐴1: 𝐿𝐹(𝐴1) = 𝐿. 
b) Fazer a computação para palavra de entrada 𝑤 = 𝑎𝑏𝑐𝑏𝑎 no autómato 𝐴1. 
c) Achar AP 𝐴2: 𝐿𝑉(𝐴2) = 𝐿 (utilizar o teorema 10.1). 
d) Fazer a computação para palavra de entrada 𝑤 = 𝑎𝑏𝑐𝑏𝑎 no autómato 𝐴2. 
 
Respostas 
10.3. 
 
a) 
 
 
 
 
 
 
b) 𝑤 = 1001 
(𝑞0, 1001, $) ⊢ (𝑞1, 001, 𝐵$) ⊢ (𝑞1, 01, $) ⊢ (𝑞1, 1, 𝐴$) ⊢ (𝑞1, 𝜆, $) ⊢ (𝑓, 𝜆, $). 
 
 
𝑞0 
0 $/A$ 
1 $/B$ 
𝐴1: 𝑞1 
0 A/AA 
0 B/𝜆 
1 B/BB 
1 A/𝜆 
 
𝑓 
𝜆 $/$ 
 Linguagens Formais e Autómatos 
128 
c) 
 
 
 
 
 
 
 
 
 
 
d) 𝑤 = 1001 
(𝑞0′, 1001, $′) ⊢ (𝑞0, 1001, $$′) ⊢ (𝑞1, 001, 𝐵$) ⊢ (𝑞1, 01, $) ⊢ (𝑞1, 1, 𝐴$) ⊢ (𝑞1, 𝜆, $) ⊢
(𝑓, 𝜆, $) ⊢ (𝑆, 𝜆, $′) ⊢ (𝑆, 𝜆, 𝜆). 
 
10.4. 
a) 
 
 
 
10.5. 
a) 
 
 
 
 
𝑞0 
0 $/A$ 
1 $/B$ 
𝐴1: 𝑞1 
0 A/AA 
0 B/𝜆 
1 B/BB 
1 A/𝜆 
 
𝑓 
𝜆 $/$ 
𝜆 $´/$$´ 
𝑞0′ 𝑆 
𝜆 $/𝜆 
𝜆 $´/𝜆 
𝜆 $/𝜆 
𝜆 $´/𝜆 
𝑞0 
i $/A$ 
i A/AA 
e A/𝜆 
 
𝑞1 
𝜆 A/𝜆 
𝜆 $/$ 
𝜆 A/𝜆 
𝜆 $/𝜆 
𝐴1: 
𝑞0 
a $/A$ 
a A/AA 
b $/B$ 
b B/BB 
𝐴1: 𝑞1 
a A/𝜆 
b B/𝜆 
c A/A 
c B/B 
c $/$ 
𝑓 
𝜆 $/$

Continue navegando