TEORIA DA COMPUTAÇÃO · 2015-09-22 · Relativamente aos programas equivalentes fortemente,...
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