Buscar

P1 - 2017/1 - Turma B - Teoria da Computação -UFRGS

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Teoria da Computação – INF05501 – Prova 1 – Turma B
26 de Abril de 2017
Nome: RESOLUÇÃO Cartão UFRGS:
Questões:
1. [3pt]Considere os programas P1 e P2 para a máquina Norma2.
P1 = P2 =
a) Considere o valor de entrada 2. Apresente e compare a computação de P1 e a com-
putação de P2 para essa mesma entrada, indicando qual delas possui o menor número
de passos. Rótulos de instruções podem ser escritos diretamente ao lado dos nodos do
fluxograma (ao invés de traduzir todo o fluxograma para instruções rotuladas).
Conversão do diagrama de P1 para instru-
ções rotuladas:
1: if X=0 then goto 2 else goto 4
2: do Y:=Y+1 goto 3
3: do Y:=Y+1 goto 0
4: do X:=X-1 goto 5
5: do X:=X-1 goto 6
6: do Y:=Y+1 goto 1
Computação de P1 para entrada 2:
Rótulo X Y
1 2 0
4 2 0
5 1 0
6 0 0
1 0 1
2 0 1
3 0 2
0 0 3
Conversão do diagrama de P2 para instru-
ções rotuladas:
1: do Y:=Y+1 goto 2
2: if X=0 then goto 3 else goto 4
3: do Y:=Y+1 goto 0
4: do X:=X-1 goto 5
5: do X:=X-1 goto 6
6: do Y:=Y+1 goto 2
Computação de P2 para entrada 2:
Rótulo X Y
1 2 0
2 2 1
4 2 1
5 1 1
6 0 1
2 0 2
3 0 2
0 0 3
Ambas computações 〈P1,Norma2〉(2) e 〈P2,Norma2〉(2) possuem o mesmo tamanho
(8 passos).
1
b) O programa P1 é fortemente equivalente a P2? Justifique.
Não. Serem P1 e P2 fortemente equivalentes significa que ambos possuem a mesma
função computada em todas as máquinas possíveis.
Considere um máquina Norma20 similar à máquina Norma2, porém que interprete
o rótulo de instrução Y := Y + 1 como a operação que incrementa Y mas tam-
bém atribui zero ao registrador X. Nesse caso, teríamos 〈P1,Norma20〉(2) = 4 e
〈P2,Norma20〉(2) = 2
c) O programa P1 é Norma2-equivalente a P2? Justifique.
Sim. A função computada de ambos os programas na máquina Norma2 é a mesma.
Em outras palavras, 〈P1,Norma2〉 = 〈P2,Norma2〉 = (x 7→ dx/2e+ 2)
2. [1pt]Considere as seguintes afirmações:
I Em qualquer máquina podemos encontrar um programa recursivo fortemente equiva-
lente a um programa iterativo qualquer.
Verdadeiro. Para programa iterativo I há um programa monolítico M fortemente equi-
valente. Para M, há um programa recursivo R fortemente equivalente. R é fortemente
equivalente a I por transitividade.
II Se duas máquinas M1 e M2 possuem os mesmos conjuntos de entrada e de saída e M1
simula fortemente M2, então certamente M2 simula fortemente M1.
Falso. Norma2 simula fortemente um_reg, porém um_reg não simula fortemente
Norma2.
III A noção de equivalência entre máquinas é baseada na noção de simulação entre má-
quinas. Uma máquina universal é aquela que simula qualquer outra máquina.
Verdadeiro.
Estão corretas somente as afirmações
A. I e II
B. I, II e III
C. II e III
D. I e III
E. todas as afirmações estão erradas
2
3. [2pt]Considere o seguinte programa monolítico P = (I, 1) para a máquina dois_reg, onde I é:
1 : do subtrai_a goto 2
2 : if a_zero then goto 0 else goto 3
3 : do subtrai_a goto 4
4 : do adiciona_b goto 2
a) Considere a enumeração de operações (adiciona_b = 1, subtrai_a = 2) e a enume-
ração de testes (a_zero = 1). Descreva (na forma de expressão aritmética) o número
natural que codifica o programa P .
i1 = (0, 2, 2, 2)
i2 = (1, 1, 0, 3)
i3 = (0, 2, 4, 4)
i4 = (0, 1, 2, 2)
î1 = 20 · 32 · 52 · 72
î2 = 21 · 31 · 50 · 73
î3 = 20 · 32 · 54 · 74
î4 = 20 · 31 · 52 · 72
P̂ = 2î1 · 3î2 · 5î3 · 7î4
b) Descreva a função computada 〈P,dois_reg〉.
〈P,um_reg〉(x) =
{
0 se x = 0
x− 1 se x > 0
4. [2pt]Apresente um programa para a máquina Norma que implemente a rotina
A := maior(B,C)
isto é, faça o registrador A receber o maior valor dentre os valores armazenados nos re-
gistradores B e C. A rotina deve preservar os valores dos registradores B e C, e os
registradores auxiliares que forem utilizados devem conter o valor 0 ao final da execução.
Todas as subrotinas utilizadas devem ser declaradas.
Uma das respostas possíveis:
3
5. [2pt]Considere a seguinte descrição para a máquinaNorma321. Assim como Norma, Norma321
é uma máquina constituída por um número arbitrário de registradores que armazenam
números naturais, na qual a entrada é feita pelo registrador X e a saída, pelo registrador
Y . Contudo, Norma321 disponibiliza diferentes operações e testes, conforme descrito
abaixo:
Reg = {X,Y,A,B,C, . . . }
Norma321 = ((Reg → N),N,N, ent, sai,ΠF ,ΠT )
onde
• ent(x) = {X 7→ x, Y 7→ 0, A 7→ 0, B 7→ 0, . . .}
• sai({X 7→ x, Y 7→ y,A 7→ a,B 7→ b, . . . }) = y
• dom(ΠF ) = {mais3R,menos2R}R∈Reg onde
– ΠF (mais3R) soma (em naturais) o valor 3 ao número armazenado no registrador
R, sem alterar os valores armazenados nos demais registradores.
– ΠF (menos2R) subtrai (em naturais, saturando em 0) o valor 2 do número arma-
zenado no registrador R, sem alterar os valores armazenados nos demais registra-
dores.
• dom(ΠT ) = {igual1R}R∈Reg onde igual1R retorna true se o valor armazenado em R
for igual a 1, e false caso contrário.
A máquina Norma321 simula a máquina Norma? Justifique sua resposta, descrevendo
detalhes da simulação (caso simule), ou apresentando um contraexemplo (caso não simule).
A máquina Norma321 simula a Máquina Norma. Para cada programa P em Norma, é
possível construir um programa equivalente Q em Norma321, trocando as operações e testes
de P pelas seguintes subrotinas em Norma321:
menos2(R)
Partida
Parada
mais3(R)
R:=R+1
4

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando