teoria da computaÇÃo - ufersa.edu.br · a computação inicia na expressão inicial com a...

22
TEORIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 06 Aula 06 – Função Computada Função Computada Prof.ª Danielle Casillo

Upload: nguyenthuy

Post on 25-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

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

EExercíciosxercícios

Teoria da Computação - Aula 06 22