Upload
nguyenthuy
View
214
Download
0
Embed Size (px)
Citation preview
TEORIA DA COMPUTAÇÃOTEORIA DA COMPUTAÇÃO
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDOCURSO: CIÊNCIA DA COMPUTAÇÃO
TEORIA DA COMPUTAÇÃOTEORIA DA COMPUTAÇÃO
Aula 06 Aula 06 –– Função ComputadaFunção Computada
Prof.ª Danielle Casillo
Função computadaFunção computada
� 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 06 2
Função computada Função computada -- programa programa monolíticomonolítico
� A função computada por um programamonolítico sobre uma máquina corresponde ànoção intuitiva, ou seja:◦ a computação inicia na instrução identificada◦ a computação inicia na instrução identificadapelo rótulo inicial, com a memória contendo ovalor inicial resultante da aplicação da função deentrada sobre o dado fornecido;
Teoria da Computação - Aula 06 3
Função computada Função computada -- programa programa monolíticomonolítico
◦ executa, passo a passo, testes e operações, naordem determinada pelo programa, até atingirum rótulo final, quando pára;
◦ o valor da função computada pelo programa é ovalor resultante da aplicação da função de saídaao valor da memória quando da parada.
Teoria da Computação - Aula 06 4
Função computada Função computada -- programa programa monolíticomonolítico
� Função Computada por um ProgramaMonolítico em uma Máquina:
Sejam M = (V, X, Y, πX, πY, ПF, ПT) uma máquina 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
Teoria da Computação - Aula 06 5
Função computada Função computada -- programa programa monolíticomonolítico⟨⟨⟨⟨P, M⟩⟩⟩⟩: X →→→→ Y
é uma função parcial definida para x ∈∈∈∈ X se a cadeia:
(s0, v0)(s1, v1)...(sn, vn)
• É uma computação finita de P em M, onde o valorinicial da memória é dado pela função de entrada,ou seja, v0 = πX(x). Neste caso, a imagem de x édada pela função de saída aplicada ao último valorda memória na computação, ou seja:
⟨⟨⟨⟨P, M⟩⟩⟩⟩(x) = πY(vn)
Teoria da Computação - Aula 06 6
Exemplo 01Exemplo 01
• 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.
Teoria da Computação - Aula 06 7
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
Exemplo 01Exemplo 01
A correspondente função computada é afunção identidade
⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩: N →→→→ Ntal que, para qualquer n ∈∈∈∈ N, tem-se que:
⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩(n) = n⟨⟨⟨⟨mon_b←←←←a, dois_reg⟩⟩⟩⟩(n) = n
Teoria da Computação - Aula 06 8
Exemplo 01Exemplo 01
� 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⟩⟩⟩⟩ é definidapara 3.
Teoria da Computação - Aula 06 9
Exemplo 02Exemplo 02
� Função Computada por Programa Monolítico naMáquina de Dois Registradores.◦ Considere o programa monolítico comp_infinitapara a máquina dois_reg.
Teoria da Computação - Aula 06 10
(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
Exemplo 02Exemplo 02
� 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 � Como a cadeia é infinita, a função computada não é definida para o valor de entrada 3.
Teoria da Computação - Aula 06 11
Função computada Função computada –– programa programa recursivorecursivo
� A função computada por um programarecursivo sobre uma máquina é análoga à deum monolítico:
◦ a computação inicia na expressão inicial com amemória contendo o valor inicial resultante daaplicação da função de entrada sobre o dadofornecido;
Teoria da Computação - Aula 06 12
Função computada Função computada –– programa programa recursivorecursivo
◦ executa, passo a passo, testes e operações, naordem determinada pelo programa, até que aexpressão de sub-rotina resultante seja aexpressão vazia, quando pára;
◦ o valor da função computada pelo programa éo valor resultante da aplicação da função desaída ao valor da memória quando da parada.
Teoria da Computação - Aula 06 13
Função computada Função computada –– programa programa recursivorecursivo
� Função Computada por um Programa Recursivoem uma Máquina.
Sejam M = (V, X, Y, πX, πY, ПF, ПT) umamáquinamáquina
P um programa recursivo para M.
� A Função Computada pelo Programa Recursivo P na Máquina M é denotada por:
⟨⟨⟨⟨P, M⟩⟩⟩⟩: X →→→→ Y
Teoria da Computação - Aula 06 14
Função computada Função computada –– programa programa recursivorecursivo⟨⟨⟨⟨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)
onde: onde: D0 = E0 é expressão inicial de Pv0 = πX(x)
Neste caso, a imagem de x é dada pela função desaída aplicada ao último valor da memória nacomputação:
⟨⟨⟨⟨P, M⟩⟩⟩⟩(x) = πY(vn)
Teoria da Computação - Aula 06 15
Exemplo 03Exemplo 03
� Função Computada por Programa Recursivo.◦ Considere o programa recursivo qq_máquinae uma máquina M = (V, X, Y, πX, πY, ПF, ПT)qualquer.
Programa Recursivo qq_máquina
◦ A correspondente função computada é:⟨⟨⟨⟨qq_máquina, M⟩⟩⟩⟩: X →→→→ Y e é indefinida paraqualquer entrada.
Teoria da Computação - Aula 06 16
Programa Recursivo qq_máquina
qq_máquina é R ondeR def R
Exemplo 04Exemplo 04
� Função Computada por Programa Recursivo naMáquina de Um Registrador.◦ Considere o programa recursivo duplica para amáquina um_reg.
◦ 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 06 17
Programa Recursivo duplica
duplica é R ondeR def (se zero então senão sub; R; ad; ad)����
ExercíciosExercícios
1. Qual a definição de Computação e FunçãoComputada?
Computação é a sequência de instruções executadaspara um programa e os diferentes valores da memóriaao longo de sua execução (histórico do funcionamento
Teoria da Computação - Aula 06 18
ao longo de sua execução (histórico do funcionamentoda máquina para o programa).
Função computada é o resultado obtido ao fim deuma computação, desde que a computação sejafinita.
ExercíciosExercícios
2. Escreva um programa iterativo onde acomputação seja infinita.
Programa Iterativo
enquanto a = a faça F
Teoria da Computação - Aula 06 19
enquanto a = a faça F
ExercíciosExercícios
3. Relativamente à função computada por umprograma em uma máquina:
� Considere o programa monolítico mon_b←a para amáquina dois_reg. A correspondente função computada<mon_b←a, dois_reg> é total?
Programa Monolítico mon_b←←←←a
R: Sim, pois para cadaelemento do domínio(entrada) existe um
Teoria da Computação - Aula 06 20
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
(entrada) existe umúnico elemento daimagem (saída).
EExercíciosxercícios
4. Traduza os programas monolíticos representadospor fluxogramas em programas recursivos esimplifique se possível.
Teoria da Computação - Aula 06 21