universidade federal rural do semi-Árido … · 2015-09-22 · as funções computadas por...

31
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo

Upload: vuongkhanh

Post on 08-Nov-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO

CURSO: CIÊNCIA DA COMPUTAÇÃO

Prof.ª Danielle Casillo

� Funções computadas permitem introduzir algumasimportantes relações de equivalência de programas emáquinas como segue:

Teoria da Computação - Aula 05 2

12 3

� Relação Equivalência Forte de Programas: Um par deprogramas pertence à relação se as correspondentes funçõescomputadas coincidem para qualquer máquina;

� Relação Equivalência de Programas em uma Máquina: Um� Relação Equivalência de Programas em uma Máquina: Umpar de programas pertence à relação se as correspondentesfunções computadas coincidem para uma dada máquina;

� Relação Equivalência de Máquinas: Um par de máquinapertence à relação se as máquinas podem se simularmutuamente. A simulação de uma máquina por outra podeser feita usando programas diferentes.

Teoria da Computação - Aula 05 3

� A Relação Equivalência Forte de Programas éespecialmente importante pois, ao agrupar diferentesprogramas em classes de equivalência de programascujas funções coincidem, fornece subsídios paracujas funções coincidem, fornece subsídios paraanalisar propriedades de programas comocomplexidade estrutural.

Teoria da Computação - Aula 05 4

� Igualdade de Funções Parciais: Duas funções parciais f,g: X →→→→ Y são ditas iguais, ou seja, f = g, se, e somente se,para cada x ∈∈∈∈ X:

ou f(x) e g(x) são indefinidas;

ou ambas são definidas e f(x) = g(x).

� Composição Sucessiva de Funções: Para uma dadafunção f: S →→→→ S, a composição sucessiva de f com elaprópria é denotada usando expoente,

fn = f • f... • f (n vezes)

Teoria da Computação - Aula 05 5

� Relação Equivalência Forte de Programas, ProgramasEquivalentes Fortemente.

� Sejam P e Q dois programas arbitrários, nãonecessariamente do mesmo tipo.

Teoria da Computação - Aula 05 6

� Então o par (P, Q) está na Relação Equivalência Forte deProgramas, denotada por: P ≡≡≡≡ Q se, e somente se, paraqualquer máquina M, as correspondentes funções parciaiscomputadas são iguais, ⟨⟨⟨⟨P, M⟩⟩⟩⟩ = ⟨⟨⟨⟨Q, M⟩⟩⟩⟩.

� Neste caso, P e Q são ditos Programas EquivalentesFortemente.

� Considere os quatro programas abaixo.

� Os programas monolíticos P1 e P2 , o iterativo P3 e orecursivo P4 são todos equivalentes fortemente.

Teoria da Computação - Aula 05 7

FTv

f

parada

FTv

f

parada

partidapartida

vT

f

parada

ProgramaMonolítico

P1

ProgramaMonolítico

P2

Programa Iterativo P3enquanto T faça(F)

Programa Recursivo P4P4 é R onde

R def (se T então F;R senão )����

Programa monolítico Programa Monolítico P1

Instruções rotuladas

1: se T então vá_para 2 senão vá_para 32: faça F vá_para 1v

partida

Teoria da Computação - Aula 05 8

2: faça F vá_para 1FT

v

f

parada

ProgramaMonolítico

P1

� Permite identificar diferentes programas em umamesma classe de equivalência, ou seja, identificardiferentes programas cujas funções computadascoincidem, para qualquer máquina;

� As funções computadas por programas equivalentesfortemente têm a propriedade de que os mesmos testese as mesmas operações são efetuados na mesma ordem,independentemente do significado dos mesmos;

Teoria da Computação - Aula 05 9

� Fornece subsídios para analisar a complexidadeestrutural de programas. Por exemplo, analisando osprogramas monolíticos equivalentes fortemente P1 e P2

pode-se concluir que P1 é estruturalmente "maisotimizado" que P2, pois contém um teste a menos.otimizado" que P2, pois contém um teste a menos.

Teoria da Computação - Aula 05 10

FTv

f

parada

FTv

f

parada

partidapartida

vT

f

parada

Program aM ono lítico

P1

Program aM onolítico

P 2

� Podemos introduzir alguns resultados sobre tipos deprogramas, em que:

� Para todo programa iterativo, existe um programamonolítico fortemente equivalente;monolítico fortemente equivalente;

� Para todo programa monolítico, existe um programarecursivo fortemente equivalente.

Teoria da Computação - Aula 05 11

Programas It e rat ivos

Programas Monolít icos

Programas Recursivos

� Entretanto, a inversa não necessariamente éverdadeira, ou seja, relativamente à RelaçãoEquivalência Forte de Programas, programas recursivossão mais gerais que os monolíticos, os quais, por suavez, são mais gerais que os iterativos, induzindo umahierarquia de classes de programas.

Teoria da Computação - Aula 05 12

� Para qualquer programa iterativo Pi, existe umprograma monolítico Pm, tal que Pi ≡≡≡≡ Pm.

� Prova: Seja Pi um programa iterativo qualquer. Seja Pm

um programa monolítico construído como segue:

Para a operação vazia corresponde o fluxogramaa) Para a operação vazia corresponde o fluxogramaelementar:

Teoria da Computação - Aula 05 13

����

���� ou simplesmente,

b) Para cada identificador de operação F de Pi corresponde oseguinte fluxograma elementar:

F

b) Composição sequencial V; W

Teoria da Computação - Aula 05 14

WV

d) Composição Condicional. (se T então V senão W)

Tv f

V W

e) Composição Enquanto. enquanto T faça (V)

Teoria da Computação - Aula 05 15

Tv f

V

e) Composição Até. até T faça (V)

Tv f

V

Para cada uma das composições acima, dependendo setrata-se do início ou fim do programa iterativo, ocorrespondente fluxograma deve ser antecedido ousucedido dos componentes elementares de partida ouparada.

Teoria da Computação - Aula 05 16

� Para qualquer programa monolítico Pm, existe umprograma recursivo Pr, tal que Pm ≡≡≡≡ Pr.

� Prova: Seja Pm um programa monolítico qualquer ondeL = {r1, r2, ..., rn} é o correspondente conjunto de rótulos.Suponha que, em P , r é o único rótulo final. Então P é

1 2 n

Suponha que, em Pm, rn é o único rótulo final. Então Pr éum programa recursivo construído a partir de Pm e é talque:

Pr é R1 onde

R1 def E1, R2 def E2, ...,Rn def

para k ∈∈∈∈ {1, 2, ..., n-1}, Ek é definido como segue:

Teoria da Computação - Aula 05 17

����

a) Operação: Se rk é da forma:

rk: faça F vá_para rk'

então Ek é a seguinte expressão de sub-rotinas: F; Rk'

b) Teste: Se rk é da forma:

rk: se T então vá_para rk' senão vá_para rk"

então Ek é a seguinte expressão de sub-rotinas:

(se T então Rk' senão Rk")

Teoria da Computação - Aula 05 18

� Para qualquer programa iterativo Pi, existe umprograma recursivo Pr, tal que Pi ≡ Pr.

Teoria da Computação - Aula 05 19

� Dado um programa recursivo Pr qualquer, nãonecessariamente existe um programa monolítico Pm, talque Pr ≡≡≡≡ Pm.

� Prova: Para provar, é suficiente apresentar umprograma recursivo que, para uma determinadamáquina, não apresente programa monolíticofortemente equivalente.

Teoria da Computação - Aula 05 20

� Considere o programa recursivo duplica e a máquinaum_reg.

� A função computada ⟨⟨⟨⟨duplica, um_reg⟩⟩⟩⟩: N →→→→ N, paraqualquer n ∈∈∈∈ N:qualquer n ∈∈∈∈ N:

⟨⟨⟨⟨duplica, um_reg⟩⟩⟩⟩(n) = 2n

� Suponha que existe um programa monolítico Pm quecomputa a mesma função, ou seja, que ⟨⟨⟨⟨Pm, um_reg⟩⟩⟩⟩: N→→→→ N e:

⟨⟨⟨⟨duplica, um_reg⟩⟩⟩⟩ = ⟨⟨⟨⟨Pm, um_reg⟩⟩⟩⟩

Teoria da Computação - Aula 05 21

� Suponha que Pm é constituído de k operações ad.

� Suponha n ∈∈∈∈ N tal que n ≥≥≥≥ k.

Então,Então,

� para que ⟨⟨⟨⟨Pm, um_reg⟩⟩⟩⟩ (n) = 2n, é necessário que Pm

execute n vezes a operação ad.

Mas, como n ≥≥≥≥ k,

� então pelo menos uma das ocorrências de ad seráexecutada mais de uma vez, ou seja, existe um ciclo emPm.

Teoria da Computação - Aula 05 22

� Na função computada por dois programas equivalentesfortemente, os mesmos testes e as mesmas operaçõessão efetuados na mesma ordem; portanto, o programamonolítico correspondente não pode intercalar testesmonolítico correspondente não pode intercalar testesde controle de fim de ciclo na sequência de operaçõesad (no programa recursivo, as operações ad não sãointercaladas por qualquer outra operação ou teste) .

� Logo, não existe um programa monolítico fortementeequivalente ao programa recursivo duplica.

Teoria da Computação - Aula 05 23

� Para melhor entender esse resultado:

� Um programa de qualquer tipo não pode ser modificadodinamicamente, durante uma computação;dinamicamente, durante uma computação;

� Um programa, para ser fortemente equivalente a outro,não pode conter ou usar facilidades adicionais comomemória auxiliar ou operações ou testes extras;

Teoria da Computação - Aula 05 24

� Para que um programa monolítico possa simular umarecursão sem um número finito e predefinido dequantas vezes a recursão pode ocorrer, seriamnecessárias infinitas opções de ocorrências dasdiversas operações ou testes envolvidos na recursãodiversas operações ou testes envolvidos na recursãoem questão;

� Infinitas opções implicam um programa infinito, oque contradiz a definição de programa monolítico, oqual é constituído por um conjunto finito deinstruções rotuladas.

Teoria da Computação - Aula 05 25

Programa Recursivo duplica

duplica é R ondeR def (se zero então senão sub; R; ad; ad)����

partida

Teoria da Computação - Aula 05 26

1: se zero então vá_para 6 senão vá_para 22: faça sub vá_para 13: faça ad vá_para 44: faça ad vá_para 5

?ad

partida

zero sub ad

parada

� Dado um programa monolítico Pm qualquer, nãonecessariamente existe um programa iterativo Pi, tal quePm ≡≡≡≡ Pi.

� Prova: Para provar, é suficiente apresentar umprograma monolítico que, para uma determinadamáquina, não apresente programa iterativo fortementeequivalente.

Teoria da Computação - Aula 05 27

� Considere o programa monolítico par e a máquinaum_reg.

� A função computada ⟨⟨⟨⟨par, um_reg⟩⟩⟩⟩: N →→→→ N é tal que,para qualquer n ∈∈∈∈ N:para qualquer n ∈∈∈∈ N:

⟨⟨⟨⟨par, um_reg⟩⟩⟩⟩(n) = 1, se n é par;

⟨⟨⟨⟨par, um_reg⟩⟩⟩⟩(n) = 0, se n é ímpar.

� Ou seja, retorna o valor 1 sempre que a entrada é par, ezero, caso contrário.

Teoria da Computação - Aula 05 28

Programa monolítico par

partida

Programa Iterativo par

(se zero então ad

Teoria da Computação - Aula 05 29

v f

parada

zero

vzero

fsub

subad

(se zero então adsenão sub; (até zero faça

sub ; ))����

� Suponha que existe um programa iterativo Pi quecomputa a mesma função, ou seja, que ⟨⟨⟨⟨Pi, um_reg⟩⟩⟩⟩: N→→→→ N e:

⟨⟨⟨⟨par, um_reg⟩⟩⟩⟩ = ⟨⟨⟨⟨P , um_reg⟩⟩⟩⟩⟨⟨⟨⟨par, um_reg⟩⟩⟩⟩ = ⟨⟨⟨⟨Pi, um_reg⟩⟩⟩⟩

� Suponha que Pi é constituído de k operações sub.

n ∈∈∈∈ N tal que n ≥≥≥≥ k.

� Então, é necessário que Pi execute n vezes a operaçãosub.

Teoria da Computação - Aula 05 30

� Mas, como n ≥≥≥≥ k, então pelo menos uma das ocorrênciasde sub será executada mais de uma vez, ou seja, existeum ciclo iterativo (do tipo enquanto ou até) em Pi.

� Em qualquer caso, o ciclo terminará sempre na mesmacondição, independentemente se o valor for par ouímpar.

� Logo, não existe um programa iterativo fortementeequivalente ao programa monolítico par.

Teoria da Computação - Aula 05 31