UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO … · inicial, com amemória ... Computação...
Transcript of UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO … · inicial, com amemória ... Computação...
� Definição: A computação de um programadeve ser associada a uma entrada e a umasaída. Adicionalmente, espera-se que aresposta (saída) seja gerada em um tempofinito. Essas noções induzem a definição definito. Essas noções induzem a definição defunção computada.
Teoria da Computação - Aula 04 2
� A função computada por um programa monolíticosobre uma máquina:� a computação inicia na instrução identificada pelo rótulo
inicial, com a memória contendo o valor inicial resultanteinicial, com a memória contendo o valor inicial resultanteda aplicação da função de entrada sobre o dado fornecido;
� executa, passo a passo, testes e operações, na ordemdeterminada pelo programa, até atingir um rótulo final,quando pára;
� o valor da função computada pelo programa é o valorresultante da aplicação da função de saída ao valor damemória quando da parada.
Teoria da Computação - Aula 04 3
� Função Computada por um Programa Monolítico emuma Máquina:
Sejam M = (V, X, Y, πX, πY, ПF, ПT) uma máquina
P um programa monolítico para M.
� A Função Computada pelo Programa Monolítico P na Máquina M é denotada por:
⟨⟨⟨⟨P, M⟩⟩⟩⟩: X →→→→ Y
é uma função parcial definida para x ∈∈∈∈ X se a cadeia: (s0, v0)(s1, v1)...(sn, vn)
Teoria da Computação - Aula 04 4
É uma computação finita de P em M, onde o valorinicial da memória é dado pela função de entrada, ouseja, v0 = πX(x). Neste caso, a imagem de x é dada pelafunção de saída aplicada ao último valor da memória nacomputação, ou seja:computação, ou seja:
⟨⟨⟨⟨P, M⟩⟩⟩⟩(x) = πY(vn)
Teoria da Computação - Aula 04 5
• Função Computada por Programa Monolítico naMáquina de Dois Registradores.• Considere o programa monolítico mon_b←←←←a para a
máquina dois_reg.
Programa Monolítico mon_b←←←←a
Teoria da Computação - Aula 04 6
• A correspondente função computada é a função identidade⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩: N →→→→ N
tal que, para qualquer n ∈∈∈∈ N, tem-se que:⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩(n) = n
Programa Monolítico mon_b←←←←a1: se a_zero então vá_para 9 senão vá_para 22: faça subtrai_a vá_para 33: faça adiciona_b vá_para 1
� Por exemplo, para o valor entrada de 3, tem-se que:
πX(3) = (3, 0);
⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩(3) = πY(0, 3) = 3.Portanto, ⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩ é definida para 3.Portanto, ⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩ é definida para 3.
Teoria da Computação - Aula 04 7
� Função Computada por Programa Monolítico naMáquina de Dois Registradores.� Considere o programa monolítico comp_infinita para a
máquina dois_reg.
(1, (3, 0)) instrução inicial e valor de entrada armazenado(1, (3, 1)) adicionou no registrador b e permanece em 1(1, (3, 2)) adicionou no registrador b e permanece em 1
� A função computada ⟨⟨⟨⟨comp_infinita, dois_reg⟩⟩⟩⟩: N →→→→N, para a entrada de valor 3: � πX(3) = (3, 0);� Como a cadeia é infinita, a função computada não é
definida para o valor de entrada 3. Teoria da Computação - Aula 04 8
(1, (3, 2)) adicionou no registrador b e permanece em 1(1, (3, 3)) adicionou no registrador b e permanece em 1
... repete 1, adicionando no registrador b, indefinidamente
� A função computada por um programa recursivo sobreuma máquina é análoga à de um monolítico:� a computação inicia na expressão inicial com a memória
contendo o valor inicial resultante da aplicação da funçãode entrada sobre o dado fornecido;de entrada sobre o dado fornecido;
� executa, passo a passo, testes e operações, na ordemdeterminada pelo programa, até que a expressão de sub-rotina resultante seja a expressão vazia, quando pára;
� o valor da função computada pelo programa é o valorresultante da aplicação da função de saída ao valor damemória quando da parada.
Teoria da Computação - Aula 04 9
� Função Computada por um Programa Recursivo emuma Máquina.
Sejam M = (V, X, Y, πX, πY, ПF, ПT) uma máquinaP um programa recursivo para M. P um programa recursivo para M.
� A Função Computada pelo Programa Recursivo P na Máquina M é denotada por:
⟨⟨⟨⟨P, M⟩⟩⟩⟩: X →→→→ Y
é uma função parcial definida para x ∈∈∈∈ X se a seguinte cadeia é uma computação finita de P em M: (D0, v0) (D1, v1)...(Dn, vn)
Teoria da Computação - Aula 04 10
onde: D0 = E0 é expressão inicial de Pv0 = πX(x)
Neste caso, tem-se que: ⟨⟨⟨⟨ ⟩⟩⟩⟩Neste caso, tem-se que: ⟨⟨⟨⟨P, M⟩⟩⟩⟩(x) = πY(vn)
Teoria da Computação - Aula 04 11
� Função Computada por Programa Recursivo.� Considere o programa recursivo qq_máquina e uma
máquina M = (V, X, Y, πX, πY, ПF, ПT) qualquer.� A correspondente função computada é: ⟨⟨⟨⟨qq_máquina, M⟩⟩⟩⟩:X →→→→ Y e é indefinida para qualquer entrada.X →→→→ Y e é indefinida para qualquer entrada.
Teoria da Computação - Aula 04 12
(1, (3, 0)) instrução inicial e valor de entrada armazenado(1, (3, 1)) adicionou no registrador b e permanece em 1(1, (3, 2)) adicionou no registrador b e permanece em 1(1, (3, 3)) adicionou no registrador b e permanece em 1
... repete 1, adicionando no registrador b, indefinidamente
� Função Computada por Programa Recursivo naMáquina de Um Registrador.� Considere o programa recursivo duplica para a máquinaum_reg.
Programa Recursivo duplica
� A correspondente função computada é: ⟨⟨⟨⟨duplica, um_reg⟩⟩⟩⟩:N →→→→ N e é tal que, para qualquer n ∈∈∈∈ N: ⟨⟨⟨⟨duplica,um_reg⟩⟩⟩⟩(n) = 2n.
Teoria da Computação - Aula 04 13
Programa Recursivo duplica
duplica é R ondeR def (se zero então senão sub; R; ad; ad)����
1. Qual a diferença entre Computação e FunçãoComputada?
Computação é a sequência de instruções executadas para umprograma e os diferentes valores da memória ao longo de sua
Teoria da Computação - Aula 04 14
programa e os diferentes valores da memória ao longo de suaexecução (histórico do funcionamento da máquina para oprograma).
Função computada é o resultado obtido ao fim de umacomputação, desde que a computação seja finita.
2. Escreva um programa iterativo onde a computação sejainfinita.
Programa Iterativo
enquanto a = a faça F
Teoria da Computação - Aula 04 15
3. Relativamente à função computada por um programaem uma máquina:
a) Considere o programa monolítico mon_b←a para a máquinadois_reg. A correspondente função computada <mon_b←a,dois_reg> é total?
Programa Monolítico mon_b←←←←a
R: Sim, pois para cada elementodo domínio (entrada) existe um
16
Programa Monolítico mon_b←←←←a1: se a_zero então vá_para 9 senão vá_para 22: faça subtrai_a vá_para 33: faça adiciona_b vá_para 1
Dois_reg = (N2, N, N, armazena_a, retorna_b, {subtrai_a, adiciona_b}, {a_zero})
N2, N, N - Conjuntos de Memória, Entrada e Saídaarmazena_a (n) = (n, 0)retorna_b (n, m) = msubtrai_a (n, m) = (n-1, m) se n ≠ 0 e (0, m) se n = 0adiciona_b (n, m) = (n, m+1)a_zero (n, m) = verdadeiro se n = 0 e falso se n ≠ 0
do domínio (entrada) existe umúnico elemento da imagem(saída).
b) Considere o programa recursivo qq_máquina e umamáquina M = (V, X, Y, πX, πY, ПF, ПT) qualquer. Por quea correspondente função computada <qq_máquina,M>é indefinida para qualquer entrada?
Programa Recursivo qq_máquina
Teoria da Computação - Aula 04 17
Programa Recursivo qq_máquina
qq_máquina é R ondeR def R
Porque não existe nenhuma condição que façacom que o programa R pare de ser chamadoindefinidamente. A cadeia gerada pelacomputação deste programa é infinita.
4. Traduza os programas monolíticos representados porfluxogramas em programas recursivos e simplifique sepossível.
Teoria da Computação - Aula 04 18