COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS

Slides:



Advertisements
Apresentações semelhantes
Estratégias Pipelined
Advertisements

Analise de Algoritmos e Notação Assintótica
Complexidade de Algoritmos
Pesquisa de Informação
Solved Exercises 1. Finding the Peak. Let A= a1,…,an be a sequence of n numbers with the following property: there is p in {1,…,n} for which (i) the.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
Vectores (e Listas) : Pesquisa e Ordenação
Fase II - Refinamento Aurora Pozo.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
David Menotti Estruturas de Dados I DECOM – UFOP
Classificação e Pesquisa de Dados
Métodos de Classificação por Seleção: HeapSort
Introdução a Análise de Complexidade de Algoritmos
SISTEMAS LINEARES Métodos Diretos: Método de Eliminação de Gauss
Crescimento de Funções
Complexidade de Algoritmos
Programação Dinámica Análise de algoritmos UNISUL
Operadores Aritméticos Valores lógicos Relacionais e lógicos MF.
O Portal do Estudante de Computação
Aula T04 – BCC202 Análise de Algoritmos (Parte 2) Túlio Toffolo www
Variáveis, Tipos de Dados e Constantes
FATORAÇÃO LU.
ICC2 Aula 7 Fábio Nakano.
MÉTODO JACOBI.
Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção.
Professora: Ana Cristina G. e Silva Natal-RN
Cálculo Numérico / Métodos Numéricos
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
Adpt. por Prof. Guilherme Amorim
MÉTODOS NUMÉRICOS APLICAÇÃO NO MATLAB
Estruturas de Dados, Algoritmos e Complexidade
Indução Matemática Recursão
Algoritmos Crescimento de Funções
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Algoritmos.
QuickSort Dividir: A[p…r] é particionado (reorganizado) em dois subvetores não vazios A[p…q] e A[q+1…r] tal que cada elemento de A[p…q] é menor ou igual.
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
DCC 001 Programação de Computadores
Equações algébricas e transcendentais
Como analisar um algoritmo
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004
Recursividade Profs. De Prog2 e Lab2.
Teste Simbólico Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural.
ALGORITMIA. ALGORITMO Conjunto de instruções ou acções que ao serem executadas, permitirão realizar uma determinada tarefa.
Complexidade de Computação Katia Guimarães. Avaliando a Qualidade de um Algoritmo É preciso ter bem definido –O que é dado de entrada e –O que é esperado.
Solved Exercises 1. Finding the Peak. Let A= a 1,…,a n be a sequence of n numbers with the following property: there is p in {1,…,n} for which (i) the.
Programação de Computadores - 1
Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro1 Projeto e Análise de Algoritmos Celso Carneiro Ribeiro
Analise de Algoritmos e Notação Assintótica
CÁLCULO NUMÉRICO Aula 5 – Sistema de Equações lineares.
Berilhes Borges Garcia Algoritmos Uma ferramenta para resolver um problema de computação bem- especificado (O espírito da computação) Exemplo: ordenação.
Laço ou loop e repetição
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
Ordenação (Sorting) Ordenar é dispor os elementos de um conjunto numa ordem ascendente ou descendente. Problema: Dados n números, arranjá-los em ordem.
Análise e Complexidade de Algoritmos
Abordagens para Problemas Intratáveis Katia S. Guimarães
Técnicas de Análise de Algoritmos Cristiano Arbex Valle Vinicius Fernandes dos Santos
UNIVERSIDADE FEDERAL DE MINAS GERAIS Exercícios de Revisão 1 Crisitano Arbex Valle Vinicius Fernandes dos Santos
Comportamento Assintótico
Teorema de Jacobi e Método de Chió Professora Thais Clara da Costa Haveroth.
Algoritmos Grupos de Slides No 2. Prof. SIMÃO Estrutura de decisão simples “Se” if end Feito por Prof. Jean Marcelo SIMÃO e revisado por Prof. Luis Alberto.
Disciplina: Estrutura de dados e Algoritmos Docentes: MSc. Manuel Zunguze.
Algoritmos Grupos de Slides No 7. Prof. SIMÃO Estrutura de Repetição “para - passo”” for Feito por Prof. Jean Marcelo SIMÃO e revisado por Prof. Luis Alberto.
Transcrição da apresentação:

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 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.

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.

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.

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 ; begin Temp := 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.

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.

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 x = 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); x(i) = ( c(i,(n+1)) - Soma ) / c(i,i); endfunction

ELIMINAÇÃO DE GAUSS Principal parte: Complexidade O(n3) for ( j = 1:(n - 1) ) ... for ( i = (j + 1):n ) for ( k = (j + 1):(n + 1) ) endfor Complexidade O(n3) Métodos Diretos = O(n3)

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; endif endfor b(i) = b(i) * r; x(i) = b(i); Iter = 0; while (1) Iter = Iter + 1; Soma = 0; if ( i ~= j ) Soma = Soma + A(i,j) * x(j); endif v(i) = b(i) - Soma; NormaNum = 0; NormaDen = 0; t = abs( v(i) - x(i) ); if ( t > NormaNum ) NormaNum = t; endif if ( abs(v(i)) > NormaDen ) NormaDen = abs(v(i)); endif x(i) = v(i); NormaRel = NormaNum / NormaDen; if ( (NormaRel <= Toler) | (Iter >= IterMax) ) break; endif endwhile if ( NormaRel <= Toler ) CondErro = 0; else CondErro = 1; endif endfunction

Jacobi Principal parte: Complexidade 2kn2 + n2 + n + 2k = O(n2) while (1) ... for ( i = 1:n ) for ( j = 1:n ) endfor if ( (NormaRel <= Toler) | (Iter >= IterMax) ) break; endif endwhile Complexidade 2kn2 + n2 + n + 2k = O(n2) Métodos Iterativos = O(n2)

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

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

Dúvidas?