TEORIA DA COMPUTAÇÃO · 2015-09-22 · Relativamente aos programas equivalentes fortemente,...

33
TEORIA DA TEORIA DA COMPUTAÇÃO COMPUTAÇÃO UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 07 Aula 07 – Equivalência de Equivalência de Programas e Máquinas Programas e Máquinas Prof.ª Danielle Casillo

Transcript of TEORIA DA COMPUTAÇÃO · 2015-09-22 · Relativamente aos programas equivalentes fortemente,...

TEORIA DA TEORIA DA COMPUTAÇÃOCOMPUTAÇÃO

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDOCURSO: CIÊNCIA DA COMPUTAÇÃO

TEORIA DA TEORIA DA COMPUTAÇÃOCOMPUTAÇÃO

Aula 07 Aula 07 –– Equivalência de Equivalência de Programas e MáquinasProgramas e Máquinas

Prof.ª Danielle Casillo

Equivalência de programas e Equivalência de programas e máquinasmáquinas

� Funções computadas permitem introduziralgumas importantes relações de equivalênciade programas e máquinas como segue:

Teoria da Computação - Aula 07 2

12 3

Equivalência de programas e Equivalência de programas e máquinasmáquinas

� Relação Equivalência Forte de Programas:Um par de programas pertence à relação se ascorrespondentes funções computadascoincidem para qualquer máquina;coincidem para qualquer máquina;

� Relação Equivalência de Programas emuma Máquina: Um par de programas pertenceà relação se as correspondentes funçõescomputadas coincidem para uma dadamáquina;

Teoria da Computação - Aula 07 3

Equivalência de programas e Equivalência de programas e máquinasmáquinas

� Relação Equivalência de Máquinas: Um parde máquina pertence à relação se as máquinaspodem se simular mutuamente. A simulaçãode uma máquina por outra pode ser feitade uma máquina por outra pode ser feitausando programas diferentes.

Teoria da Computação - Aula 07 4

Equivalência de programas e Equivalência de programas e máquinasmáquinas

� Relativamente aos programas equivalentesfortemente, verifica-se que programasrecursivos são mais gerais que osmonolíticos os quais, por sua vez, são maismonolíticos os quais, por sua vez, são maisgerais que os iterativos, induzindo umahierarquia de tipos de programas.

Teoria da Computação - Aula 07 5

Equivalência de programas e Equivalência de programas e máquinasmáquinas

� Existe um algoritmo para determinar se doisprogramas monolíticos (respectivamente,iterativos) são ou não equivalentesfortemente;fortemente;

� Até o momento, não é conhecido se existe umalgoritmo para mostrar equivalência forte dedois programas recursivos.

Teoria da Computação - Aula 07 6

Equivalência de programas e Equivalência de programas e máquinasmáquinas

� A Relação Equivalência Forte deProgramas é especialmente importante pois,ao agrupar diferentes programas emclasses de equivalência de programas cujasclasses de equivalência de programas cujasfunções coincidem, fornece subsídios paraanalisar propriedades de programas comocomplexidade estrutural.

Teoria da Computação - Aula 07 7

Equivalência de programas e Equivalência de programas e máquinasmáquinas

� Para o estudo da equivalência de programas,devemos considerar:

a) Igualdade de Funções Parciais: Duasa) Igualdade de Funções Parciais: Duasfunçõ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).

Teoria da Computação - Aula 07 8

Equivalência de programas e Equivalência de programas e máquinasmáquinas

b) Composição Sucessiva de Funções: Parauma dada função f: S →→→→ S, a composiçãosucessiva de f com ela própria é denotadausando expoenteusando expoente

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

Teoria da Computação - Aula 07 9

Equivalência forte de Equivalência forte de programasprogramas

� Relação Equivalência Forte de Programas,Programas Equivalentes Fortemente.◦ Sejam P e Q dois programas arbitrários, não

necessariamente do mesmo tipo.◦ Então o par (P, Q) está na Relação Equivalência Forte◦ Então o par (P, Q) está na Relação Equivalência Forte

de Programas, denotada porP ≡≡≡≡ Q

◦ se, e somente se, para qualquer máquina M, ascorrespondentes funções parciais computadas são iguais

⟨⟨⟨⟨P, M⟩⟩⟩⟩ = ⟨⟨⟨⟨Q, M⟩⟩⟩⟩.◦ Neste caso, P e Q são ditos Programas Equivalentes

Fortemente.

Teoria da Computação - Aula 07 10

Programas Programas equivalentes equivalentes fortementefortemente

� Considere os quatro programas abaixo.� Os programas monolíticos P1 e P2 , o iterativo

P3 e o recursivo P4 são todos equivalentesfortemente.fortemente.

Teoria da Computação - Aula 07 11

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 P4

P4 é R ondeR def (se T então F; R senão )

Programas equivalentes Programas equivalentes fortementefortemente

partida

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 1

Teoria da Computação - Aula 07 12

FTv

f

parada

ProgramaMonolítico

P1

2: faça F vá_para 1

Relação equivalência forte de Relação equivalência forte de programasprogramas

� 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 programasequivalentes fortemente têm a propriedade de queos mesmos testes e as mesmas operações sãoefetuados na mesma ordem, independentementedo significado dos mesmos;

Teoria da Computação - Aula 07 13

Relação equivalência forte de Relação equivalência forte de programasprogramas

� Fornece subsídios para analisar a complexidadeestrutural de programas. Por exemplo, analisandoos programas monolíticos equivalentes fortementeP1 e P2 pode-se concluir que P1 é estruturalmente"mais otimizado" que P , pois contém um teste a"mais otimizado" que P2, pois contém um teste amenos.

14

FTv

f

parada

FTv

f

parada

partidapartida

vT

f

parada

Program aM onolítico

P1

Program aM ono lítico

P 2

Relação equivalência forte de Relação equivalência forte de programasprogramas

� Podemos introduzir alguns resultados sobretipos de programas, em que:

◦ Para todo programa iterativo, existe um◦ Para todo programa iterativo, existe umprograma monolítico fortemente equivalente;

◦ Para todo programa monolítico, existe umprograma recursivo fortemente equivalente.

Teoria da Computação - Aula 07 15

Relação equivalência forte de Relação equivalência forte de programasprogramas

Programas It e rat ivos

Programas Monolít icos

Programas Recursivos

� Entretanto, a inversa não necessariamente éverdadeira, ou seja, relativamente à Relação EquivalênciaForte de Programas, programas recursivos são maisgerais que os monolíticos, os quais, por sua vez, sãomais gerais que os iterativos, induzindo umahierarquia de classes de programas.

Teoria da Computação - Aula 07 16

Equivalência forte de programasEquivalência forte de programasiterativo iterativo →→ monolíticomonolítico

� 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ídoSeja Pm um programa monolítico construídocomo segue:a) Para a operação vazia corresponde o

fluxograma elementar:

Teoria da Computação - Aula 07 17

����

���� ou simplesmente,

Equivalência forte de programasEquivalência forte de programasiterativo iterativo →→ monolíticomonolítico

b) Para cada identificador de operação F de Picorresponde o seguinte fluxograma elementar:

F

b) Composição sequencial V; W

Teoria da Computação - Aula 07 18

WV

Equivalência forte de programasEquivalência forte de programasiterativo iterativo →→ monolíticomonolítico

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

Tv f

V W

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

Teoria da Computação - Aula 07 19

Tv f

V

Equivalência forte de programasEquivalência forte de programasiterativo iterativo →→ monolíticomonolítico

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

Tv f

V

Para cada uma das composições acima, dependendose trata-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 07 20

Equivalência forte de programasEquivalência forte de programasmonolítico monolítico →→ recursivorecursivo

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

� Prova: Seja Pm um programa monolítico qualqueronde L = {r1, r2, ..., rn} é o correspondenteconjunto de rótulos. Suponha que, em P , r é oconjunto de rótulos. Suponha que, em Pm, rn é oúnico rótulo final. Então Pr é um programa recursivoconstruído a partir de Pm e é tal que:

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 07 21

����

Equivalência forte de programasEquivalência forte de programasmonolítico monolítico →→ recursivorecursivo

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'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 07 22

Equivalência forte de programasEquivalência forte de programasIterativo Iterativo →→ recursivorecursivo

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

Teoria da Computação - Aula 07 23

Equivalência forte de programasEquivalência forte de programasrecursivo recursivo →→ monolíticomonolítico

� Dado um programa recursivo Pr qualquer, nãonecessariamente existe um programamonolítico Pm, tal que Pr ≡≡≡≡ Pm.

� Prova: Para provar, é suficiente apresentar umprograma recursivo que, para umadeterminada máquina, não apresenteprograma monolítico fortemente equivalente.

Teoria da Computação - Aula 07 24

Equivalência forte de programasEquivalência forte de programasrecursivo recursivo →→ monolíticomonolítico

� Considere o programa recursivo duplica e amáquina um_reg.

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

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

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

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

Teoria da Computação - Aula 07 25

EExemploxemploPrograma Recursivo duplica

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

?partida

Teoria da Computação - Aula 07 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

?adzero sub ad

parada

Equivalência forte de programasEquivalência forte de programasrecursivo recursivo →→ monolíticomonolítico

� Na função computada por dois programasequivalentes fortemente, os mesmos testes e asmesmas operações são efetuados na mesmaordem; portanto, o programa monolíticocorrespondente não pode intercalar testes decontrole de fim de ciclo na sequência decontrole de fim de ciclo na sequência deoperações ad (no programa recursivo, asoperações ad não são intercaladas por qualqueroutra operação ou teste) .

� Logo, não existe um programa monolíticofortemente equivalente ao programa recursivoduplica.

Teoria da Computação - Aula 07 27

Equivalência forte de programasEquivalência forte de programasrecursivo recursivo →→ monolíticomonolítico

� Para melhor entender esse resultado:

◦ Um programa de qualquer tipo não pode sermodificado dinamicamente, durante umacomputação;computação;

◦ Um programa, para ser fortemente equivalente aoutro, não pode conter ou usar facilidadesadicionais como memória auxiliar ou operaçõesou testes extras;

Teoria da Computação - Aula 07 28

Equivalência forte de programasEquivalência forte de programasrecursivo recursivo →→ monolíticomonolítico

◦ Para que um programa monolítico possa simularuma recursão sem um número finito epredefinido de quantas vezes a recursão podeocorrer, seriam necessárias infinitas opções deocorrências das diversas operações ou testesocorrências das diversas operações ou testesenvolvidos na recursão em questão;

◦ Infinitas opções implicam um programa infinito, oque contradiz a definição de programamonolítico, o qual é constituído por umconjunto finito de instruções rotuladas.

Teoria da Computação - Aula 07 29

Equivalência forte de programasEquivalência forte de programasMonolítico Monolítico →→ iterativoiterativo

� Dado um programa monolítico Pm qualquer,não necessariamente existe um programaiterativo Pi, tal que Pm ≡≡≡≡ Pi.

� Prova: Para provar, é suficiente apresentar umprograma monolítico que, para umadeterminada máquina, não apresenteprograma iterativo fortemente equivalente.

Teoria da Computação - Aula 07 30

Equivalência forte de programasEquivalência forte de programasMonolítico Monolítico →→ iterativoiterativo

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

� A função computada ⟨⟨⟨⟨par, um_reg⟩⟩⟩⟩: N →→→→ N é talque, para qualquer n ∈∈∈∈ N:que, 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, e zero, caso contrário.

Teoria da Computação - Aula 07 31

Equivalência forte de programasEquivalência forte de programasMonolítico Monolítico →→ iterativoiterativo

Programa monolítico par

partida Programa Iterativo par

(se zero então ad senão

Teoria da Computação - Aula 07 32

v f

parada

zero

vzero

fsub

subad

(se zero então ad senãosub; (até zero faça

sub ; ))����

Equivalência forte de programasEquivalência forte de programasMonolítico Monolítico →→ iterativoiterativo

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

� Logo, não existe um programaiterativo fortemente equivalente aoprograma monolítico par.

Teoria da Computação - Aula 07 33