Escolar Documentos
Profissional Documentos
Cultura Documentos
Computação 2021/1
Leitura necessária:
Revisão.
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).
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).
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).
(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.
Exercı́cios.
2. (Sipser 2.2)
Solução do professor:
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:
a) GLC: dada no livro-texto.
Diagrama do autômato com pilha dado na figura seguinte.
3
Solução do professor:
6. (Sipser 2.8)
7. (Sipser 2.11)
8. (Sipser 2.14)
A → BAB | B |
B → 00 |
4
Figura 1: Solução do Exercı́cio 2.11
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
S→A|
A → BAB | B | AB | BA | BB
B → 00
S→A|
A → BAB | AB | BA | BB | 00
B → 00
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
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:
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.