comparaÇÃo mÉtodos diretos e iterativos. medida do tempo de execuÇÃo de um programa o projeto...

13
COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS

Upload: internet

Post on 16-Apr-2015

105 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS

Page 2: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA

O projeto de algoritmos é fortemente influenciado pelo estudo de seus comportamentos.

Depois que um problema é analisado e decisões de projeto são finalizadas, é necessário estudar as várias opções de algoritmos a serem utilizados, considerando os aspectos de tempo de execução e espaço ocupado.

Muitos desses algoritmos são encontrados em áreas como pesquisa operacional, otimização, teoria dos grafos, estatística, probabilidades, entre outras.

Page 3: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

CUSTO DE UM ALGORITMO

Determinando o menor custo possível para resolver problemas de uma dada classe, temos a medida da dificuldade inerente para resolver o problema.

Quando o custo de um algoritmo é igual ao menor custo possível, o algoritmo é ótimo para a medida de custo considerada.

Podem existir vários algoritmos para resolver o mesmo problema.

Se a mesma medida de custo é aplicada a diferentes algoritmos, então é possível compará-los e escolher o mais adequado.

Page 4: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

FUNÇÃO DE COMPLEXIDADE A complexidade computacional de um algoritmo se

refere à estimativa do esforço computacional despendido para resolver o problema e é medido pelo número necessário de operações aritméticas e lógicas. (Ex.: número de Adições e Multiplicações para resolver um sistema linear).

Para medir o custo de execução de um algoritmo é comum definir uma função de custo ou função de complexidade f.

f(n) é a medida do tempo necessário para executar um algoritmo para um problema de tamanho n.

A complexidade de tempo na realidade não representa tempo diretamente, mas o número de vezes que determinada operação considerada relevante é executada.

Page 5: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

EXEMPLO - MAIOR ELEMENTO Considere o algoritmo para encontrar o maior

elemento de um vetor de inteiros A[1::n]; n 1.

function Max (var A: Vetor ) : integer ;var i , Temp: integer ;beginTemp := A[1] ;for i := 2 to n do i f Temp < A[ i ] then Temp := A[ i ] ;Max := Temp;end;

Seja f uma função de complexidade tal que f(n) é o número de comparações entre os elementos de A, se A contiver n elementos.

Logo f(n) = n - 1; para n > 0. Qualquer algoritmo para encontrar o maior elemento

de um conjunto com n elementos, n ≥ 1, faz pelo menos n - 1 comparações.

Page 6: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

TAMANHO DA ENTRADA DE DADOS

A medida do custo de execução de um algoritmo depende principalmente do tamanho da entrada dos dados.

É comum considerar o tempo de execução de um programa como uma função do tamanho da entrada.

Page 7: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

ELIMINAÇÃO DE GAUSS Algoritmo:

function [x] = gauss(n, A, b)c = [A b];for ( j = 1:(n - 1) )

r = 1 / c(j,j);for ( i = (j + 1):n )

Mult = c(i,j) * r;c(i,j) = c(i,j) - Mult * c(j,j);for ( k = (j + 1):(n + 1) )

c(i,k) = c(i,k) - Mult * c(j,k);endfor

endforendforx = zeros(n,1);x(n) = c(n,(n+1)) / c(n,n);for ( i = (n - 1):-1:1 )

Soma = 0;for ( j = (i + 1):n )

Soma = Soma + c(i,j) * x(j);endforx(i) = ( c(i,(n+1)) - Soma ) / c(i,i);

endforendfunction

Page 8: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

ELIMINAÇÃO DE GAUSS

Principal parte:for ( j = 1:(n - 1) )

...for ( i = (j + 1):n )

...for ( k = (j + 1):(n + 1) )...endfor

endforendfor

Complexidade O(n3) Métodos Diretos = O(n3)

Page 9: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

JACOBI Algoritmo:

function [x] = jacobi(n, A, b, Toler, IterMax)for ( i = 1:n )

r = 1 / A(i,i);for ( j = 1:n )

if ( i ~= j ) A(i,j) = A(i,j) * r; endifendforb(i) = b(i) * r; x(i) = b(i);

endforIter = 0; while (1)

Iter = Iter + 1;for ( i = 1:n )

Soma = 0;for ( j = 1:n )

if ( i ~= j ) Soma = Soma + A(i,j) * x(j); endifendforv(i) = b(i) - Soma;

endforNormaNum = 0; NormaDen = 0;for ( i = 1:n )

t = abs( v(i) - x(i) );if ( t > NormaNum ) NormaNum = t; endifif ( abs(v(i)) > NormaDen ) NormaDen = abs(v(i)); endifx(i) = v(i);

endforNormaRel = NormaNum / NormaDen;if ( (NormaRel <= Toler) | (Iter >= IterMax) ) break; endif

endwhileif ( NormaRel <= Toler ) CondErro = 0; else CondErro = 1; endifendfunction

Page 10: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

JACOBI Principal parte:

while (1)...for ( i = 1:n )

...for ( j = 1:n )...endfor

endfor...for ( i = 1:n )...endfor...if ( (NormaRel <= Toler) | (Iter >= IterMax) ) break; endif

endwhile

Complexidade 2kn2 + n2 + n + 2k = O(n2) Métodos Iterativos = O(n2)

Page 11: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

EXECUÇÃO

A = 10x10, 20x20, 30x30, ..., 200x200 n = 10, 20, 30, ..., 100.

Método Direto - Eliminação de Gauss

Método Iterativo - Jacobi Toler = 10-7

IterMax = 50

Page 12: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

COMPARAÇÃO ENTRE ELIMINAÇÃO DE GAUSS E JACOBI

Page 13: COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS. MEDIDA DO TEMPO DE EXECUÇÃO DE UM PROGRAMA O projeto de algoritmos é fortemente influenciado pelo estudo de seus

DÚVIDAS?