Projeto e Análise de Algoritmos - PUC-Rio

Propaganda
Projeto e Análise de
Algoritmos
Prof. Ruy Luiz Milidiú
Eficácia
3/6/2014
Ruy Luiz Milidiú
2
Resumo
 Objetivo
 Examinar as soluções algorítmicas
quanto a sua eficácia
 Sumário
 Correção Parcial
 Correção Total
 Ênfase do curso
3/6/2014
Ruy Luiz Milidiú
3
Solução Algorítmica
PROBLEMA
 Parcialmente Correto
ALGORITMO
 Totalmente Correto
VERIFICADOR
SIM
NÃO
SOLUÇÃO
CORRETA
ERROS...
3/6/2014
Solução Algorítmica
=
Totalmente Correto
Ruy Luiz Milidiú
4
M.D.C.
 ENTRADA: x,y  Z*
 SAÍDA: mdc(x,y)
mdc(x,y)
=
max{z  Z  a,b  Z , x = a.z e y = b.z }
3/6/2014
Ruy Luiz Milidiú
5
M.D.C.
function mdc(x,y: integer): integer;
var t: integer;
begin
if x < y then t := x
else t := y;
while (x mod t <> 0) or (y mod t <> 0) do
t := t - 1;
mdc := t;
end;
3/6/2014
Ruy Luiz Milidiú
6
Correção Parcial
 Pontos de Verificação
 Invariantes
 Exemplo: z = mdc(x,y)
3/6/2014
Ruy Luiz Milidiú
7
Correção Parcial
inicio
x := |x|
y := |y|
x<y
F
x,y 
Z*
x,y 
N+
t := y
V
A
t\x
ou
t\y
t  mdc(x,y)
t := t - 1
z := t
t := x
3/6/2014
A
fim
t = min(x,y)Ruy Luiz Milidiú
z= mdc(x,y)
8
Correção Total
 Correção Parcial + Término = Correção Total
 Término
 0 < t < min(x,y)
 t = 1 então NÃO ITERA
t
a cada iteração
t
é o convergente
 algoritmo TOTALMENTE CORRETO !
3/6/2014
Ruy Luiz Milidiú
9
Algoritmo de Euclides
Mdc(54.180, 13.125) = ?
4
7
1
4
3
54.180 13.125 1.680 1.365 315 105
1.680
1.365
315
105
0
Mdc(54.180, 13.125) = 105
INGENUO: 13.020 iterações
3/6/2014
Ruy Luiz Milidiú
EUCLIDES: 5 iterações
10
Algoritmo de Euclides
function mdcE(x,y: integer): integer;
begin
if y = 0 then mdcE := x
else mdcE := mdcE(y,x mod y)
end;
3/6/2014
Ruy Luiz Milidiú
11
Correção
mdc(x,0) = x
Resultado básico usado no método de solução !
Proposição.
3/6/2014
Ruy Luiz Milidiú
12
Correção
mdc(x,y) = mdc(y, x mod y)
Resultado básico usado no método de solução !
Proposição. d\x,y  d\y e d\(x mod y)
Dem.: x = q.y + r com 0  r <y
 x = a.d , y = b.d então r = (a-q.b).d
 y = b.d , r = k.d então x = (q.b+k).d
3/6/2014
Ruy Luiz Milidiú
13
Correção
mdc(x,y) = mdc(y, x mod y)
x
y
y
3/6/2014
x-y
y
r
Ruy Luiz Milidiú
14
Correção
 Método de Solução
 Fórmulas / Propriedades
 Proposições / Lemas / Teoremas
 Conjunto de Instruções
 Invariantes & Convergentes
 Prova de Teoremas
3/6/2014
Ruy Luiz Milidiú
15
Correção
… Enfoque do Curso
 Modularização
 Argumentação informal
 Justificativas
 Refinamentos Sucessivos
3/6/2014
Ruy Luiz Milidiú
16
Download