Exercicios2
8 pág.

Exercicios2


DisciplinaTeoria da Computação543 materiais16.664 seguidores
Pré-visualização1 página
Universidade Federal de Lavras 
Departamento de Ciência da Computação 
2
o
 semestre de 2011 
 
 
GCC108 \u2013 Teoria da Computação 
Professor Responsável: Leonardo Andrade Ribeiro 
 
 
Avaliação: Exercícios 2 
Data: 20.10.2011 
Aluno:_________________________________Matrícula:_____________ Nota:____ 
Aluno:_________________________________Matrícula:_____________ Nota:____ 
Aluno:_________________________________Matrícula:_____________ Nota:____ 
Aluno:_________________________________Matrícula:_____________ Nota:____ 
 
 
 
 
1) Construa uma Máquina de Turing Numérica (MTN) que compute a função 
 ( ) \u230a \u230b, onde \u230a \u230b é o menor inteiro menor ou igual a ? 
 
 
 
2) Considere o seguinte repertório de macros : 
MDk \u2013 move a cabeça le k números naturais à direita. A macro termina com a 
cabeça le posicionada sobre o símbolo branco imediatamente posterior ao kth 
número natural à direita da posição atual. 
MEk \u2013 move a cabeça le k números naturais à esquerda. A macro termina com a 
cabeça le posicionada sobre o símbolo branco imediatamente anterior ao kth 
número natural à esquerda da posição atual. 
ED \u2013 Posiciona a cabeça le sobre símbolo branco imediatamente anterior ao 
primeiro natural à direita da posição atual. 
EE \u2013 Posiciona a cabeça le sobre símbolo branco imediatamente anterior ao 
primeiro natural à esquerda da posição atual. 
Ak \u2013 Apaga k números naturas à direita da posição atual cabeça le. A macro 
termina com a cabeça le na posição original. 
CPk \u2013 Copia k números naturais para as posições iniciando-se imediatamente à 
direita do último número a ser copiado e termina com a cabeça le na posição 
original. 
CPk,i \u2013 Copia k números naturais para as posições iniciando-se i números naturais à 
direita do último número a ser copiado e termina com a cabeça le na posição 
original. 
T \u2013 Move o primeiro número natural à direita da cabeça le para a posição 
imediatamente à direita da mesma; termina com a cabeça le na posição original. 
ADD \u2013 Soma os dois números naturais à direita da cabeça le. A macro termina 
com a cabeça le na posição original e o resultado da soma escrito na posição 
imediatamente à direita da mesma. 
 
Usando R, construa máquinas para computar: 
a) ( ) 
b) ( ) 
 
 
 
 
3) Considere a macro MULT acima que computa a multiplicação de dois números 
naturais. Baseando-se em MULT, mas sem usar a mesma, construa uma macro que 
compute ( ) . 
 
 
4) Considere uma função definida pela seguinte composição funcional: 
 ( 
( ) ( 
( ) 
( ))) 
Calcule o valor de ( ) apresentando as etapas intermediárias da calculação. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5) Seja ( ) e ( ) e seja ( ) a função definida por e 
via recursão primitiva. Calcule o valor de ( ) apresentando as etapas 
intermediárias da calculação. 
 
 
 
 
 
 
 
 
 
 
6) Seja ( ) uma função recursiva primitiva. Mostre que a função também é 
recusiva primitiva: 
 ( ) ( ) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7) Usando apenas as funções básicas, composição e recursão primitiva (para recursão 
primitiva, apresente as funções e ), mostre que ( ) é recursiva 
primitiva. 
 
Tabela 1 
Descrição Função Definição 
adição ( ) 
x+y 
 ( ) 
 ( ) ( ) 
multiplicação mult( ) 
x*y 
mult( ) 
 ( ) ( ) 
predecessor pred(y) pred(0) 
pred(y+1) = y 
sub sub(x,y) sub(x,0)=0 
sub(x,y+1)=pred(sub(x,y)) 
sinal sg(y) (0) = 0 
 (y+1) = 1 
sinal comp. cosg(y) (0) = 1 
 (y+1) = 0 
par par(y) 
 
par(0) = 1 
par(y+1) = cosg(par(y)) 
less than lt(x,y) sg(sub(y,x)) 
greater than gt(x,y) sg(sub(x,y)) 
equal to eq(x,y) ( ( ) ( )) 
 
 
 
 
 
 
8) Seja e funções recursivas primitivas. Mostre que função abaixo é recursiva 
primitiva (Voce pode usar qualquer função da Tabela1 e também qualquer 
operador limitado): 
 ( ) {
 ( ) ( ) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9) Descreva a seguinte função primitiva recursiva (pode usar uma descrição informal, 
desde que precisa): 
 ( ) 
 
 
[ ( ) ( 
 
 
[ ( )])]