Академический Документы
Профессиональный Документы
Культура Документы
Por GH:
Vou dar a ideia da resolução. Usa uma MT de 3 fitas, na primeira ia ficar o resultado, na
segunda o primeiro número e, na terceira o segundo número; tem que colocar um
passo como "Copie a cadeia antes do # para a segunda fita e copie a cadeia depois do
# para a terceira fita. Apague o conteúdo da primeira fita". Depois faz um loop pra ficar
fazendo umas varreduras da direita pra esquerda e fazendo a subtração bit a bit e
colocando o resultado na primeira fita. Na hora eu avisei que era pra usar complemento
de 2, então tem que tomar cuidado com umas negações que talvez precisem ser feitas
em alguns bits. No final, apaga as cadeias na segunda e da terceira fita.
dam4:
No caso não poderia usar uma subrotina para pegar o número binário e representar ele
por 1’s na fita não? Exemplo: 010 (2) ficaria 11 na fita, 011 (3) ficaria 111 na fita.
Colocava o cabeçote no final e iria voltando na esquerda procurando por um 1 então
trocaria 1 por 0, e voltaria a cabeça pro inicio, trocando o primeiro 1 que achasse por 0
também, ai ia para o lado direito de novo e repetiria até acabar o número de 1’s, depois
apagaria os 0’s da fita (no caso quando o cabeçote do lado direito achasse o hashtag
teria acabado). Ex: (pulando uns passos)
3 - 2 seria
111 # 11
111 # 10
110 # 10
110 # 00
100 # 00 (terminou porque achou o # então nenhum 1 resta do lado direito, agora
apagaria os 0’s ou uma alternativa era do começo fazer uma varredura e adicionar
cada 1 na fita principal e fazer a subrotina para transformar em binário novamente)
1 b b b b b b…
Por GH:
Nesse daí a entrada é uma fórmula phi e um inteiro n, dizendo o tamanho máximo da
prova. Aí é só fazer um loop que ia gerando as cadeias que de tamanho entre 1 até n,
verificando se elas correspondiam a codificação de uma prova e, então verificando
cada proposição (i+1) decorria da proposição i pelas regras de dedução natural:
implicação, and, or, not, raa; se a última proposição fosse igual a phi, a máquina
aceitava. Se tivesse testado todas as provas de tamanho até n e nenhuma satisfizesse
as condições, rejeita. Mais ou menos assim:
!
M = na entrada <G, L>
1) Para cada cadeia s de L:
1.1) Construir uma GLC B, onde L(B) = L(G) interseção (E*sE*)
1.2) Rode o decisor de Vglc sobre <B>. Se rejeitar, aceite.
2) Rejeite.
Como L é finita, ela também é regular, logo, L(B) sempre será uma linguagem livre de
contexto.
Por GH:
Outra forma de fazer é usar o fato de que, se uma linguagem A é regular e B é livre-do-
contexto, então AnB é livre-do-contexto.(exercício 2.18 (a)).
Daí, dados a GLC G e a cadeia x, podemos construir um AFD que reconhece {0, 1}*x{0,
1}*, i.e., todas as cadeias que tem x como subcadeia, pegar a intersecção dessa
linguagem com a linguagem da gramática e testar se dá vazia:
2012.2
---------------------------------------------------------------------------------
b. Seja Dr um decisor para R.
Dr = “Sobre a entrada <B>, onde B é um AFD:
1) Contrua um AFD Br | L(Br) = L(B)^R.
2) Rode o decisor de EQafd sobre <B, Br> e aceite se ele aceitar. Se não,
rejeite.”
!
branco = b
q00101
bq1101
b1q201
bq3111
q3b111
bq0111
bbq511
bbbq51 ←----- aqui duhan e lucas
bbbbq5b ←----- como veio pra isso ? (luquitas - tipo, no final da fita, dps da entrada,
tem espaço em branco. a gente só botou o ‘b’ no final pra indicar esse espaço em
branco. mas no papel eu botei em todos o b no final já)
marlon: ah é porra, só me lgiuei agora q b é branco
bbbbbq6
MP 4 2010. v2
(ii) Se existe uma MT para decidir a linguagem L, então existe uma MT para decidir o
complemento de L.
(iii) Suponha que exista uma MT M que decida esse problema. Rode M considerando
que q seja o estado de aceitação da outra MT. Note então que M decide se a outra MT
para ou não. Logo M decide o problema da parada. Como o problema da parada não é
decidível, então M não pode existir. Portanto a resposta é FALSO.
3. (3.0) Seja Σ = {0,1}. Mostre que o problema de se determinar se uma GLC gera
alguma
cadeia em 1* é decidível. Em outras palavras, mostre que
{<G>| G é uma GLC sobre {0,1} e 1* ∩ L(G) ≠ ϕ }
é uma linguagem decidível.
M então decide o problema. Logo existe uma MT decisora para tal linguagem, portanto
o problema é decidível.
MP 2011.1
____
01(4.0). Seja A uma MT e L(A) uma LTD(Linguagem Turing Decidível), prove que L(A)
também é LTD.
02(3.0). Seja A = {<M> | M é uma AFD que não aceita nenhuma cadeia contendo um
número ímpar de 1s }. Mostre que A é decidível.
Definir V.
V = “Sobre a entrada <D>, onde D é um AFD:
1. Marque o estado inicial de D.
2. Repita até que nenhum estado novo venha a ser marcado:
3. Marque qualquer estado que tem uma transição chegando nele a partir
de qualquer estado que já esteja marcado.
4. Se nenhum estado de aceitação está marcado, aceite; caso contrário, rejeite.”
(phtg) M = “Sobre a entrada <A>, onde A eh um AFD:
1. Construa um AFD N tal que L(N) eh o conjunto de todas as cadeias que tenha
um
numero impar de 1’s
2. Construa um AFD H de modo de que L(H) = L(N) ∩ L(A)
3. Rode V sobre H
4. Se V aceitar, aceite
5. Se V rejeitar, rejeite”
Esse algoritmo funciona porque um AFD que aceita uma quantidade infinita de cadeias
tem que aceitar cadeias arbitrariamente longas. Logo ele aceita esses AFD’s. Se o
algoritmo aceita um AFD, e o AFD aceita uma cadeia de comprimento k ou mais quer
dizer que em algum momento se passa mais de uma vez pelo mesmo estado, existe
um loop, logo essa cadeia pode ser bombeada de maneira a gerar infinitas cadeias
aceitas.
MP4 2009.2
1. (0.6) Seja A = { B, C | B e C são ERs e L(B) ⊂ L(C)}, prove que L(A) é
decidível.
3. (0.2) Seja A uma MT e L(A) uma LTD, prove que L(A’) também é LTD.
(phtg) M = “Sobre a entrada <A, w>, onde A eh uma MT:
1. Rode A com a entrada w
2. Se A aceita, rejeite
3. Se A reijeita, aceite”
MP 2009.1
1. Seja A = {<A,B>| A e B são Expressões Regulares e L(A) e L(B) são partes de ∑*}.
Mostre que A é decidível.
(rfccg) Nao achei a prova a baixo completa, pois envolve uma cadeia w não
especificada. Então aqui vai uma breve descriçao do que seria a minha soluçao
Das expressões regulares crie as AFDs correspondentes. Crie uma AFD que
reconheça ∑*, Crie os AFDs correspondente a intersecção de AFD(A) e AFD(B) com
AFD(∑*). Use a subrotina de equivalencia para dectar se L(AFD(A)) eq L(AFD(A)
Interseçao L( ∑*)) e o mesmo para a linguagem B, se ambas linguagens forem
equivalentes aceite, caso contrario rejeite.
M = “Sobre a entrada <A, B, w, ∑>, onde A e B são ER’s, w eh uma cadeia e ∑ eh um
alfabeto:
1. Converta as ER’s A e B para seus AFN’s equivalentes, respectivamente A’ e B’
2. Converta agora os AFN’s A’ e B’ para AFD’s equivalentes, respectivamente C
eD
3. Rode C com a entrada w. Se C aceita e w for parte de ∑*, aceite
4. Rode D com a entrada w. Se D aceita e w for parte de ∑*, aceite
5. Senao, rejeite
U eh o complemento de M
U = “Sobre a entrada <M, w>, onde M eh uma MT e w eh uma cadeia:
1. Rode M com a entrada w
2. Se M aceita, rejeite
3. Senao, aceite”
H subrotina de D
D = “Sobre a entrada <M>, onde M eh uma MT e w eh uma cadeia:
1. Rode H com a entrada <M, <M>>
2. Se H aceita, rejeite
3. Senao, aceite”
EE2 - 2013.2
!
(mfl3) Aqui estão as resoluções que eu elaborei do EE2 resolvido na última aula de
monitoria. Fiquem à vontade para comentar (espero que dê para enxergar direito ._.) =)
!
!
!
!