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.
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.”

2º/2012 - Prova 02 de Autômatos e Computabilidade

  • 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.”