Em qualquer árvore sintática, se a cadeia tiver comprimento maior que o número máximo de símbolos nas regras vezes o número de variáveis, então pelo menos uma variável aparecerá mais de uma vez no caminho da raiz para uma folha.
1. Autˆomatos e Computabilidade: Prova 2
1. (2 pontos) Seja G = (V,Σ,R,S) uma gram´atica livre-do-contexto que gera a linguagem L, e
b o n´umero m´aximo de s´ımbolos no lado direito de uma regra. Considere uma cadeia w ∈ L.
Mostre que, se |w| ≥ b|V |
+ 1, ent˜ao em qualquer ´arvore sint´atica para w existe um caminho
da raiz (vari´avel inicial) para uma folha (terminal) no qual alguma vari´avel aparece mais de
uma vez.
Resposta: Em qualquer ´arvore sint´atica, a quantidade de folhas (vari´aveis e terminais)
a um passo da var´ı´avel inicial ´e menor ou igual a b; a dois passos da vari´avel inicial, ´e
menor ou igual a b2
, e a n passos, ´e menor ou igual a bn
. Assim, uma ´arvore de altura
n gera uma cadeia w de comprimento |w| ≤ bn
. Tamb´em podemos afirmar que, se uma
cadeia tem comprimento |w| ≥ bn
+ 1, a altura da ´arvore dever´a ser pelo menos n + 1.
Substituindo b = |V |, concluimos que, se |w| ≥ b|V |
+ 1, ent˜ao qualquer ´arvore sint´atica
ter´a uma altura de, pelo menos, |V | + 1. Isto significa que existe um caminho da vari´avel
inicial a um terminal com |V | + 2 s´ımbolos (incluindo tanto a vari´avel inicial quanto o
terminal). Nesse conjunto de s´ımbolos, existe um terminal e |V | + 1 vari´aveis. Como a
quantidade total de vari´aveis em G ´e |V |, ent˜ao, ao longo do caminho, pelo menos uma
delas deve estar repetida.
2. (2 pontos) Desenhe o diagrama de estados de um autˆomato com pilha que reconhe¸ca a
linguagem {ai
bj
cj
bk
ai+k
| i, j, k ≥ 0}. Para receber pontos por esta quest˜ao, o autˆomato n˜ao
poder´a conter mais de 8 estados.
Resposta:
q0 q1 q2 q3 q4
q5q6
ε,ε → $
a,ε → x
ε,ε → ε
b,ε → y
ε,ε → ε
c,y → ε
ε,ε → ε
b,ε → x
ε,ε → ε
a,x → ε
ε,$ → ε
3. (1 ponto) Suponha que L ´e uma linguagem Turing-reconhec´ıvel sobre um alfabeto Σ, e que
M ´e uma m´aquina de Turing que reconhece L. Queremos construir um enumerador E para
L. Por que n˜ao podemos usar o seguinte algoritmo para E?
E= “Ignore a entrada:
1. Repita os seguintes passos para i = 1, 2, 3, . . .
2. Gere uma cadeia si ∈ Σ∗
(suponha que s1, s2, s3, . . . ´e uma lista de todas
as cadeias poss´ıveis em Σ∗
).
3. Rode M sobre si.
4. Se M aceita, imprima si.”
Resposta: N˜ao podemos, porque M pode “entrar em loop”, no passo 3, sobre uma
cadeia si. Se isso acontece, ent˜ao o enumerador n˜ao ir´a verificar as cadeias seguintes a si
e, consequentemente, n˜ao imprimir´a mais cadeias de L.
2. 4. (2 pontos) Seja A = { R,S | R e S s˜ao express˜oes regulares e L(R) ⊆ L(S)}. Prove que A
´e decid´ıvel. Na sua prova, descreva uma m´aquina de Turing que decide A, no formato
M= “Sobre a entrada R,S , onde R e S s˜ao express˜oes regulares:
1....
2....
...
n. Se... aceite; se... rejeite.”
Pode utilizar, como subprogramas, as m´aquinas de Turing que decidem AAFD, AAFN, AEXR,
VAFD e EQAFD, vistas em aula.
Resposta: Note que L(R) ⊆ L(S) se e somente se L(R) ∩ L(S) = ∅. Ent˜ao podemos
decidir A testando vacuidade, como no seguinte algoritmo.
M= “Sobre a entrada R,S , onde R e S s˜ao express˜oes regulares:
1. Construa um autˆomato finito determin´ıstico D tal que
L(D) = L(R) ∩ L(S). ´E poss´ıvel fazer isso, pois a classe das linguagens
regulares ´e fechada sobre a complementa¸c˜ao e a interse¸c˜ao.
2. Rode a m´aquina de Turing T que decide VAFD sobre D .
3. Se T aceita, aceite; se T rejeita, rejeite.”
5. (1 ponto) O conjunto de linguagens regulares sobre um alfabeto Σ ´e cont´avel? Justifique
sua resposta.
Resposta: Sim. Para cada linguagem regular, podemos construir um autˆomato finito
determin´ıstico (AFD) que o reconhece. Todo AFD possui uma descri¸c˜ao finita, que pode
ser codificada como uma cadeia sobre um alfabeto, por exemplo, {0, 1}. As cadeias sobre
{0, 1} que s˜ao representa¸c˜oes v´alidas de um AFD podem ser listadas em ordem lexico-
gr´afica, portanto, a quantidade de cadeias ´e cont´avel. Como existe uma correspondˆencia
entre linguagens regulares e cadeias que representam AFDs, concluimos que a quantidade
de linguagens regulares tamb´em ´e cont´avel.
6. (1 ponto) Se uma linguagem L ´e livre-do-contexto ent˜ao L ´e decid´ıvel? Justifique sua
resposta.
Resposta: Sim. Toda linguagem livre-do-contexto ´e decid´ıvel, e o complemento de uma
linguagem decid´ıvel tamb´em ´e decid´ıvel. Se uma m´aquina de Turing M decide uma
linguagem L, ent˜ao podemos decidir se uma cadeia w ∈ L rodando M sobre w. Se M
aceita w, ent˜ao w /∈ L, e se M rejeita w, ent˜ao w ∈ L.
7. (1 ponto) Descreva um algoritmo para decidir se uma gram´atica livre-do-contexto gera a
cadeia vazia. Utilize um formato similar ao da quest˜ao 4.
Resposta:
M= “Sobre a entrada G , onde G ´e uma gram´atica livre-do-contexto:
1. Converta G para uma gram´atica equivalente na forma normal de Chomsky.
2. Liste todas as deriva¸c˜oes com um passo.
3. Se alguma dessas deriva¸c˜oes gera ε, aceite; se n˜ao, rejeite.”