Académique Documents
Professionnel Documents
Culture Documents
Delano M. Beder
Escola de Artes, Cincias e Humanidades (EACH) Universidade de So Paulo dbeder@usp.br
08/2008
Complexidade de Algoritmos
ACH2002
1 / 17
Projeto de Algoritmos
Algoritmos so projetados para resolver problemas Problema: encontrar a melhor rota, em termos de tempo de entrega, dos produtos das Casas Cear em Ermelino Matarazzo Soluo: algoritmo para descoberta da melhor rota tendo como entrada os locais de entrega Projetar algoritmos implica estudar o seu comportamento No tempo: quanto tempo vai demorar para encontrar a soluo do problema No espao: quanto de memria ser necessrio para encontrar a soluo
Complexidade de Algoritmos
ACH2002
2 / 17
Anlise de algoritmos
Complexidade de Algoritmos
ACH2002
3 / 17
Anlise de algoritmos
2
Complexidade
Como medir o custo de um algoritmo? Como comparar o custo de vrios algoritmos que resolvem um problema?
1
Medio direta do tempo de execuo em um computador real. Problemas: depende do compilador; depende do hardware; medidas de tempo podem se inuenciadas pela memria disponvel. Computador ideal em que cada instruo tem seu custo determinado (soluo de Donald Knuth). Considerar apenas as operaes mais signicativas. Mais usual.
Exemplo: Ordenao nmero de comparaes.
Complexidade de Algoritmos
ACH2002
5 / 17
Funo de complexidade
Para medir o custo de execuo de um algoritmo Denio de uma funo de custo ou complexidade f (n)
f (n) a medida do tempo ou espao necessrio para executar um algoritmo para uma entrada de tamanho n.
Se a medida de tempo, ento f (n) chamada de funo de complexidade de tempo ou temporal do algoritmo. Se a medida a da memria necessria (espao) para executar o algoritmo, ento f (n) a funo de complexidade espacial. Se nada for dito, entende-se f (n) como complexidade de tempo.
Complexidade de Algoritmos
ACH2002
6 / 17
Exemplo
int maxArray(int [] A) { int i, max; max = A[0]; for(i=1; i < A.length; ++i) { if(max < A[i]) { max = A[i]; } } return max; }
Complexidade de Algoritmos
ACH2002
7 / 17
Funo de complexidade
Seja f (n) uma funo de complexidade f (n) o nmero de comparaes para um vetor A de tamanho n Como seria f (n) ?
f (n) = n 1, para n > 0.
Complexidade de Algoritmos
ACH2002
8 / 17
Funo de complexidade
Teorema Qualquer algoritmo para encontrar o maior elemento de um conjunto de n elementos, n 1, faz ao menos n 1 comparaes. Prova: Cada um dos n 1 elementos tem que ser vericado, por meio de comparaes, que menor do que algum outro elemento. Logo, n 1 comparaes so necessrias. Como maxArray() possui complexidade igual ao limite inferior de custo, ento seu algoritmo timo.
Complexidade de Algoritmos
ACH2002
9 / 17
Funo de complexidade
Complexidade de Algoritmos
ACH2002
10 / 17
Funo de complexidade
void maxArray1(int [] A) { int i, max, min; max = min = A[0]; for(i=1; i < A.length; ++i) { if(max < A[i]) { max = A[i]; } else if(A[i] < min) { min = A[i]; } } System.out.print("Mnimo = " + min); System.out.print(", Mximo = " + max); }
Delano M. Beder (EACH - USP) Complexidade de Algoritmos ACH2002 11 / 17
Funo de complexidade
Qual a funo de complexidade de maxMin1? Depende: Se o arranjo j estiver ordenado em ordem crescente
f (n) = n 1
Complexidade de Algoritmos
ACH2002
12 / 17
Funo de complexidade
Trs situaes podem ser observadas:
1
Caso mdio: um elemento A[i] tem 50% de chances de ser maior ou menor que max
Mdia dos tempos de execuo de todas as entradas de tamanho n
Complexidade de Algoritmos
ACH2002
13 / 17
Caso mdio
Normalmente, o caso mdio muito mais difcil de determinar do que o melhor caso e o pior caso.
Usalmente, supe-se que todas as entradas tm a mesma chance de ocorrer equiprovveis. Nem sempre isto verdade, por isto, o caso mdio determinado apenas se zer sentido.
Complexidade de Algoritmos
ACH2002
14 / 17
Resumo
Problemas requerem algoritmos que os solucione. Algoritmo adequado depende do seu comportamento
complexidade temporal e espacial.
Algoritmo timo
soluciona o problema com o menor custo possvel.
Funo de complexidade
melhor caso, pior caso e caso mdio.
Complexidade de Algoritmos
ACH2002
15 / 17
Exerccios
Determine a funo de complexidade da busca seqencial de um vetor A de tamanho n para o melhor caso, pior caso e caso mdio. Determine a funo de complexidade do algoritmo de ordenao por insero direta no pior caso para um vetor de tamanho n. (Ver [1] Seo 2.2, pginas 16-21)
Complexidade de Algoritmos
ACH2002
16 / 17
Referncias
[1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest & Clifford Stein. Algoritmos - Traduo da 2a. Edio Americana. Editora Campus, 2002.
[2] Nvio Ziviani. Projeto de Algoritmos com implementaes em C e Pascal. Editora Thomson, 2a. Edio, 2004.
Complexidade de Algoritmos
ACH2002
17 / 17