Escolar Documentos
Profissional Documentos
Cultura Documentos
2 Ordem de Crescimento e Somatorio
2 Ordem de Crescimento e Somatorio
Somatórios
ÉFREN L. SOUZA
Variamos o tamanho da
entrada de 1K, 2K, 4K e 8K
EFREN L. SOUZA / PROJETO E ANÁLISE DE ALGORITMOS / UFOPA – IEG – PC 7
Resultado
Esse resultado vai ser
diferente em
computadores
diferentes
Essa diferença se dá
por um fator
constante
Qual a relação do
tempo de execução
com o tamanho da
entrada?! EFREN L. SOUZA / PROJETO E ANÁLISE DE ALGORITMOS / UFOPA – IEG – PC 8
Limitações da Análise Experimental
Necessidade de se implementar e executar o algoritmo
Aproximações 𝑁3
≅ 166.666.667 −
𝑁2 𝑁
+ = 499.667
6 2 3
Além de ignorar os
termos de mais baixa
ordem, também
podemos ignorar os
fatores constantes
Assim obtemos a
ordem de
crescimento
EFREN L. SOUZA / PROJETO E ANÁLISE DE ALGORITMOS / UFOPA – IEG – PC 14
Grandes Constantes
Com as aproximações, nós ignoramos coeficientes
constantes dos termos de mais baixa ordem que podem ser
importantes
Por exemplo, quando aproximamos a função 2𝑁 2 + 𝑐𝑁
para 2𝑁 2 , estamos assumindo que 𝑐 é pequeno
Mas supondo que 𝑐 é 106 ou 1015 essa aproximação pode
levar a uma interpretação errada
Dessa forma, temos que ficar abertos à possibilidade de
grandes constantes em cenários práticos
EFREN L. SOUZA / PROJETO E ANÁLISE DE ALGORITMOS / UFOPA – IEG – PC 15
Análise
Cada linha é executada
com uma determinada
frequência
A ideia principal que é
somente as instruções
executadas com mais
frequência são
determinantes
Essas instruções ficam
localizadas no laço mais
interno do programa
(inner loop) EFREN L. SOUZA / PROJETO E ANÁLISE DE ALGORITMOS / UFOPA – IEG – PC 16
EFREN L. SOUZA / PROJETO E ANÁLISE DE ALGORITMOS / UFOPA – IEG – PC 17
Classificação das Ordens de Crescimento
EFREN L. SOUZA / PROJETO E ANÁLISE DE ALGORITMOS / UFOPA – IEG – PC 18
Principais
Ordens de
Crescimento
Frequentemente, a
ordem de
crescimento de um
algoritmo é uma de
algumas funções
𝑎𝑘
𝑘=1
𝑐 = 𝑐𝑛
𝑛 𝑘=1
𝑐 = 𝑐(𝑛 − 𝑚 + 1)
𝑘=𝑚 𝑛
𝑛 = 𝑛2
𝑘=1
𝑐𝑎𝑘 = 𝑐 𝑎𝑘
𝑘=1 𝑘=1
𝑛 𝑛 𝑛
(𝑎𝑘 ± 𝑏𝑘 ) = 𝑎𝑘 ± 𝑏𝑘
𝑘=1 𝑘=1 𝑘=1
𝑘 = 1 + 2 + ⋯+ 𝑛
𝑘=1
é uma série aritmética e tem o valor
𝑛
𝑛 𝑛+1
𝑘=
2
𝑘=1
𝑛
𝑛 𝑛 + 1 2𝑛 + 1
2
𝑘 =
6
𝑘=0
𝑛 2 2
3
𝑛 𝑛+1
𝑘 =
4
𝑘=0
EFREN L. SOUZA / PROJETO E ANÁLISE DE ALGORITMOS / UFOPA – IEG – PC 33
Série Geométrica
Para números reais 𝑥 ≠ 1, o somatório
𝑛
𝑥𝑘 = 1 + 𝑥 + 𝑥2 + ⋯ + 𝑥𝑛
𝑘=0
Qual comando
determina o tempo 𝑛−1 𝑖−1 𝑛−1 𝑛−1
de execução desse 𝑆3 = 𝑐3 = 𝑐3 (𝑖 − 1 − 0 + 1) = 𝑐3 𝑖
𝑖=1 𝑗=0 𝑖=1 𝑖=1
algoritmo? 𝑛−1
𝑛(𝑛 + 1) 𝑛2 + 𝑛
= 𝑐3 𝑖 = 𝑐3 − 𝑛 = 𝑐3 −𝑛
Quantas vezes ele é 𝑖=1
2 2
executado? 𝑛2 −𝑛
= 𝑐3
2
Qual a sua ordem de
crescimento?
EFREN L. SOUZA / PROJETO E ANÁLISE DE ALGORITMOS / UFOPA – IEG – PC 35
Bibliografia
Sedgewick, R.; Wayne, K. Algorithms. 4th Edition.
Pearson, 2011.
Cormen, T.H.; Rivest, R.L.; Leiserson, C.E.; Stein, C.
Algoritmos: Teoria e Prática. Campus, 3a Edição, 2012.
Ascencio, A.F.G.; Araújo, G.S. Estruturas de Dados:
Algoritmos, Análise da Complexidade e
Implementações em JAVA e C/C++. Pearson, 2011.