Você está na página 1de 7

Área Conhecimento em Algoritmos e Teoria DCC/UFMG Fundamentos de Teoria da

Computação 2021/1

SOLUÇÃO DE LISTA DE EXERCÍCIOS


Lista 2
(Linguagens Livres-do-Contexto)

Leitura necessária:

• Introdução à Teoria da Computação, 2a Edição (Michael Sipser):

– Capı́tulo 2.1: Gramáticas Livres-do-Contexto


– Capı́tulo 2.2: Autômato com Pilha
– Capı́tulo 2.3: Linguagens Não-livres-do-contexto

Revisão.

1. Responda formalmente às seguintes perguntas:

(a) Qual a definição formal de uma gramática livre-do-contexto?

Solução do professor: Uma gramática livre-do-contexto (GLC) é uma 4-tupla (V, Σ, R, S),
onde:
1. V é um conjunto finito denominado variáveis,
2. Σ é um conjunto finito, disjunto de V , denominado terminais,
3. R é um conjunto finito de regras, com cada regra sendo uma variável e uma cadeia de variáveis
e terminais, e
4. S ∈ V é uma variável inicial (ou variável de partida).

(b) O que é uma linguagem livre-do-contexto?

Solução do professor: Uma linguagem livre-do-contexto é uma linguagem que pode ser gerada
por uma gramática livre-do-contexto.

(c) O que significa dizer que uma gramática ambı́gua? O que significa dizer que uma linguagem é
inerentemente ambı́gua?

Solução do professor: Uma gramática G é ambı́gua se ela gera alguma cadeia ambiguamente,
ou seja, se existe pelo menos uma cadeia w que possui duas ou mais derivações mais à esquerda
diferentes em G.
Uma linguagem L é inerentemente ambı́gua se toda GLC para L é ambı́gua (ou seja, se não é
possı́vel construir uma GLC não-ambı́gua para L).

(d) Qual a definição formal de um autômato com pilha?

1
Solução do professor: Um autômato com pilha (AP) é uma 6-tupla (Q, Σ, Γ, δ, q0 , F ), onde:
1. Q é um conjunto finito de estados,
2. Σ é o alfabeto (finito) de entrada,
3. Γ é o alfabeto (finito) de pilha,
4. δ : Q × Σ × Γ → P(Q × Γ ) é a função de transição (onde Σ = Σ ∪ {} e Γ = Γ ∪ {}),
5. q0 ∈ Q é o estado inicial, e
6. F ⊆ Q é o conjunto de estados de aceitação (ou estados finais).

(e) O que diz o lema do bombeamento para linguagens livres-do-contexto?

Solução do professor: O Lema do bombeamento (LB) para linguagens livres-do-contexto diz


que se A é uma linguagem livre do contexto, então existe um número p, chamado de comprimento
de bombeamento, tal que, se s é uma cadeia qualquer em A de comprimento pelo menos p, então
s pode ser divida em cinco partes
s = uvxyz
satisfazendo as seguintes condições:
1. para cada i ≥ 0, uv i xy i z ∈ A,
2. |vy| > 0, e
3. |vxy| ≤ p.

(f) Explique como o lema do bombeamento para linguagens livres-do-contexto pode ser utilizado
para demonstrar que uma linguagem não é livre-do-contexto.

Solução do professor: Para usar o lema do bombeamento para linguagens livres-do-contexto


para mostrar que uma linguagem L não é livre-do-contexto:
1. Assuma que L seja livre-do-contexto.
2. Use o LB para garantir que existe um comprimento p tal que toda cadeia s ∈ L com compri-
mento maior que p possa ser bombeada.
3. Encontre uma cadeia s ∈ L com comprimento maior que p que não possa ser bombeada,
mostrando que para qualquer divisão de s = uvxyz (satisfazendo as condições do LB de que
|vy| > 0 e |vxy| ≤ p), existe pelo menos um valor de i tal que uv i xy i z ∈
/ L.
4. Como você chegou a uma contradição, pois (3) contradiz (2), sua hipótese em (1) era falsa, e
L não pode ser uma linguagem livre-do-contexto.

Exercı́cios.

2. (Sipser 2.2)

Solução do professor:

a) A linguagem A = {am bm cn | m, n ≥ 0} é uma LLC, pois possui a seguinte GLC:

P → AY
A → aA | 
Y → bY c | 

2
A linguagem B = {an bn cm | m, n ≥ 0} é uma LLC, pois possui a seguinte GLC:
P → XC
X → aXb | 
C → cC | 
Mas a interseção delas é A ∩ B = {an bn cn | n ≥ 0}, que pelo Exemplo 2.36 sabemos não ser uma
LLC. Logo LLCs não são fechadas sob interseção.
b) Vamos mostrar que a classe das LLCs não é fechada sob complementação. A prova é por con-
tradição.
Assuma que a classe das linguagens livres-do-contexto fosse fechada sob complementação.
Mas note que sabemos que LLCs são fechadas sob união, e sabemos que (por DeMorgan)
A ∩ B = A ∪ B.
Logo, se LLCs fossem fechadas sob complementação, elas também seriam fechadas sob interseção,
o que é um absurdo (já provamos que elas não são). Assim concluı́mos que a classe das LLCs não
é fechada sob complementação.

3. (Sipser 2.3)

Solução do professor: Solução dada no livro-texto.

4. (Sipser 2.4 - itens (a), (d))


Obs: Também dê diagramas de estados de autômatos com pilha para estas linguagens.

Solução do professor:
a) GLC: dada no livro-texto.
Diagrama do autômato com pilha dado na figura seguinte.

Solução do exercı́cio 2.4 (a)

d) GLC: dada no livro-texto.


Diagrama do autômato com pilha dado na figura seguinte.

Solução do exercı́cio 2.4 (d)

5. (Sipser 2.6 - itens (a), (c))


Obs: Também dê diagramas de estados de autômatos com pilha para estas linguagens.

3
Solução do professor:

a) GLC: dada no livro-texto.


Diagrama do autômato com pilha dado na figura seguinte.

Solução do exercı́cio 2.6 (a)

c) GLC: dada no livro-texto.


Diagrama do autômato com pilha dado na figura seguinte.

Solução do exercı́cio 2.6 (c)

6. (Sipser 2.8)

Solução do professor: Dada no livro-texto.

7. (Sipser 2.11)

Solução do professor: Solução dada na Figura 1.

8. (Sipser 2.14)

Solução do professor: Para colocar a seguinte GLC na forma normal de Chomsky

A → BAB | B | 
B → 00 | 

4
Figura 1: Solução do Exercı́cio 2.11

nós seguimos os seguintes passos.


Primeiro adicionamos uma nova variável de partida:

S→A
A → BAB | B | 
B → 00 | 

Eliminamos a regra B → :

S→A
A → BAB | B |  | AB | BA | A
B → 00

Eliminamos a regra A → :

S→A|
A → BAB | B | AB | BA | A | BB
B → 00

Eliminamos a regra inútil A → A:

S→A|
A → BAB | B | AB | BA | BB
B → 00

Eliminamos a regra unitária A → B:

S→A|
A → BAB | AB | BA | BB | 00
B → 00

Eliminamos a regra unitária S → A:

S →  | BAB | AB | BA | BB | 00
A → BAB | AB | BA | BB | 00
B → 00

5
Incluı́mos uma nova regra Z → 0:
S →  | BAB | AB | BA | BB | ZZ
A → BAB | AB | BA | BB | ZZ
B → ZZ
Z→0

Incluı́mos uma nova regra U → BA:


S →  | U B | AB | BA | BB | ZZ
A → U B | AB | BA | BB | ZZ
B → ZZ
Z→0
U → BA

Note que a GLC acima está na forma normal de Chomsky pois toda regra ou tem exatamente duas
variáveis ou exatamente um terminal no lado direito, e a única regra  está na variável de partida.

9. (Sipser 2.16)

Solução do professor: Solução dada nos slides da disciplina.

10. (Sipser 2.27 - Item (a))

Solução do professor:
a) A gramática é ambı́gua porque a sentença if condition then if condition then a:=1 else
a:=1 tem duas derivações mais à esquerda distintas. A primeira é
hstmti ⇒ hif-theni
⇒ if condition then hstmti
⇒ if condition then hif-then-elsei
⇒ if condition then if condition then hstmti else hstmti
⇒ if condition then if condition then hassigni else hstmti
⇒ if condition then if condition then a := 1 else hstmti
⇒ if condition then if condition then a:=1 else hassigni
⇒ if condition then if condition then a:=1 else a:=1
na qual o else está alinhado com o segundo if, enquanto a segunda é
hstmti ⇒ hif-then-elsei
⇒ if condition then hstmti else hstmti
⇒ if condition then hif-theni else hstmti
⇒ if condition then if condition then hstmti else hstmti
⇒ if condition then if condition then hassigni else hstmti
⇒ if condition then if condition then a := 1 else hstmti
⇒ if condition then if condition then a:=1 else hassigni
⇒ if condition then if condition then a:=1 else a:=1

6
na qual o else está alinhado com o primeiro if.

11. (Sipser 2.30 - itens (b) e (c))

Solução do professor: Dada no livro-texto.

Você também pode gostar