Análise de Algoritmos - Análise Assintótica
-
Upload
delacyr-ferreira -
Category
Education
-
view
110 -
download
0
Transcript of Análise de Algoritmos - Análise Assintótica
Analise de Algoritmos
Análise assintótica: ordens O, ! e "
– p. 1/35
Análise assintótica
Ao ver uma expressão como n+ 10 ou n2 + 1,pensamos geralmente em valores pequenos de n,valores próximos de zero.
A análise de algoritmos faz exatamente o contrário:ignora os valores pequenos e concentra-se nosvalores enormes de n. Esse tipo de análisechama-se análise “assintótica”.
– p. 2/35
Análise assintótica - exemplo
Considere o número de operações de doisalgoritmos que resolvem um mesmo problema,como função do tamanho n da entrada.
Algoritmo 1: f1(n) = 2n2 + 5n operações
Algoritmo 2: f2(n) = 500n+ 4000 operações
Dependendo do valor de n, o Algoritmo 1 poderequerer mais ou menos operações que oAlgoritmo 2. (Compare as duas funções paran = 10 e n = 100.)
– p. 3/35
Análise assintótica - exemplo
Nosso interesse é estudar o comportamentoassintotico das funções, ou seja, quando n ! ".
Em geral, os termos inferiores e as constantesmultiplicativas contribuem pouco na comparação epodem ser descartados.
– p. 4/35
Análise assintótica - exemplo
O importante é observar que f1(n) tem crescimentoproporcional a n2 (quadrático), ao passo que f2(n)
tem crescimento proporcional a n (linear). Umcrescimento quadrático é pior que um crescimentolinear. Assim, vamos preferir o Algoritmo 2.
– p. 5/35
Análise assintótica - outro exemplo
Para valores enormes de n, as funções
n2,3
2n2, 9999n2,
n2
1000, n2 + 100n
crescem todas com a mesma velocidade eportanto são todas “equivalentes”. Nesse estudo,as funções são classificadas em “ordens”; todas asfunções de uma mesma ordem são equivalentes.As cinco funções acima, por exemplo, pertencem àmesma ordem.
– p. 6/35
Importância da análise assintótica
Na tabela abaixo, os valores representam otamanho da maior instância solucionável em umahora.
Computador Computador 100 Computador 1000Função atual vezes mais rápido vezes mais rápido
n N 100N 1000N
n log n N1 22, 5N1 140, 2N1
n2 N2 10N2 31, 6N2
n3 N3 4, 6N3 10N3
2n N4 N4 + 6 N4 + 10
– p. 7/35
Funções assintoticamente não negativas
Restringiremos a atenção a funçõesassintoticamente não negativas, ou seja, funções ftais que f(n) # 0 para todo n “suficientementegrande”.
Mais explicitamente, f é assintoticamente nãonegativa se existe n0 tal que f(n) # 0 para todo n
maior que n0.
– p. 8/35
Analise de Algoritmos
Análise assintótica: ordem O
– p. 9/35
Ordem O
Dadas funções assintoticamente não negativas f eg, dizemos que f esta na ordem O de g eescrevemos f = O(g) se
f(n) $ c.g(n)
para algum c positivo e para todo n suficientementegrande.
– p. 10/35
Ordem O
Em outras palavras, f = O(g) se existe um númeropositivo c e um número n0 tais que
f(n) $ c.g(n)
para todo n maior que n0.
– p. 11/35
Ordem O - Exemplos
A notação O fornece limites superiores de funçõesque, por sua vez, correspondem a tempos deexecução de algoritmos.
– p. 12/35
Ordem O - Exemplos
A notação O fornece limites superiores de funçõesque, por sua vez, correspondem a tempos deexecução de algoritmos.
Exemplo 1: Se f(n) $ 9999g(n) para todo n # 1000
– p. 12/35
Ordem O - Exemplos
A notação O fornece limites superiores de funçõesque, por sua vez, correspondem a tempos deexecução de algoritmos.
Exemplo 1: Se f(n) $ 9999g(n) para todo n # 1000
então f = O(g).
– p. 12/35
Ordem O - Exemplos
Exemplo 2: Suponha que f(n) = 2n2 + 3n+ 4.
– p. 13/35
Ordem O - Exemplos
Exemplo 2: Suponha que f(n) = 2n2 + 3n+ 4.
2n2 + 3n+ 4 $ 2n2 + 3n2 + 4n2 = 9n2
para todo n # 1.
– p. 13/35
Ordem O - Exemplos
Exemplo 2: Suponha que f(n) = 2n2 + 3n+ 4.
2n2 + 3n+ 4 $ 2n2 + 3n2 + 4n2 = 9n2
para todo n # 1. Portanto, f(n) = O(n2).
– p. 13/35
Ordem O - Exemplos
Exemplo 3: Suponha que f(n) = 3 + 2n e que
g(n) = 1.
– p. 14/35
Ordem O - Exemplos
Exemplo 3: Suponha que f(n) = 3 + 2n e que
g(n) = 1. Então
3 +2
n$ 3 + 1 = 4 = 4.g(n)
para todo n # 2.
– p. 14/35
Ordem O - Exemplos
Exemplo 3: Suponha que f(n) = 3 + 2n e que
g(n) = 1. Então
3 +2
n$ 3 + 1 = 4 = 4.g(n)
para todo n # 2. Portanto, f(n) = O(g(n)) = O(1).
– p. 14/35
Ordem O - Exemplos
Exemplo 4: Suponha que f(n) = n3 e queg(n) = 200n2. Será verdade que f(n) = O(g(n))?
–p. 15/35
Ordem O - Exemplos
Exemplo 4: Suponha que f(n) = n3 e queg(n) = 200n2. Será verdade que f(n) = O(g(n))?
Se existem c e n0 tais que f(n) $ c.g(n), teremos
n $ 200c
para todo n # n0. Mas isso é absurdo!
– p. 15/35
Ordem O - Exemplos
Exemplo 4: Suponha que f(n) = n3 e queg(n) = 200n2. Será verdade que f(n) = O(g(n))?
Se existem c e n0 tais que f(n) $ c.g(n), teremos
n $ 200c
para todo n # n0. Mas isso é absurdo!
Logo, f(n) %= O(g(n)).
– p. 15/35
Ordem O - ExercíciosProve os disprove as afirmações:1. 10n = O(n)
2. 10n2 = O(n)
3. 10n55 = O(2n)
4. n2 + 200n+ 300 = O(n2)
5. n2 & 200n& 300 = O(n)
6. 32n
2 + 72n& 4 = O(n)
7. 32n
2 + 72n& 4 = O(n2)
8. n3 & 999999n2 & 1000000 = O(n2)
– p. 16/35
Ordem O - Exercícios
9. Seja!nk
"o número de combinações de n objetos
tomados k a k. Mostre!n2
"= O(n2).
Prove os disprove as afirmações:10. 2n+1 = O(2n)
11. 3n = O(2n)
12. log2 n = O(log3 n)
13. log3 n = O(log2 n)
14. log2 n = O(n)
15. 100 log n& 10n+ 2n log n = O(n log n)
– p. 17/35
Limite superior (upper bound)
A notação O também é utilizada para indicarlimites superiores para problemas.
– p. 18/35
Limite superior (upper bound)
A notação O também é utilizada para indicarlimites superiores para problemas.
Dado um problema, por exemplo, o demultiplicação de duas matrizes quadradas n' n.
– p. 18/35
Limite superior (upper bound)
A notação O também é utilizada para indicarlimites superiores para problemas.
Dado um problema, por exemplo, o demultiplicação de duas matrizes quadradas n' n.
Conhecemos um algoritmo para resolver esteproblema (pelo método trivial) de complexidadeO(n3).
– p. 18/35
Limite superior
Sabemos assim que a complexidade desteproblema não deve superar O(n3), uma vez queexiste um algoritmo que o resolve com estacomplexidade, e dizemos que uma cota superior oulimite superior para este problema é O(n3).
– p. 19/35
Limite superior
Sabemos assim que a complexidade desteproblema não deve superar O(n3), uma vez queexiste um algoritmo que o resolve com estacomplexidade, e dizemos que uma cota superior oulimite superior para este problema é O(n3).
A cota superior de um problema pode mudar sealguém descobrir um outro algoritmo melhor.
– p. 19/35
Limite superior
V. Strassen apresentou em 1969 um algoritmopara multiplicação de matrizes de complexidadeO(nlog 7) = O(n2.807).
– p. 20/35
Limite superior
V. Strassen apresentou em 1969 um algoritmopara multiplicação de matrizes de complexidadeO(nlog 7) = O(n2.807).Assim a cota superior para o problema demultiplicação de matrizes passou a ser O(nlog 7).
– p. 20/35
Limite superior
Em 1990, Coppersmith e Winograd melhoraramesta marca para O(n2.376);
– p. 21/35
Limite superior
Em 1990, Coppersmith e Winograd melhoraramesta marca para O(n2.376);
Em 2010, A. Stothers apresentou um algoritmode complexidade O(n2.373);
– p. 21/35
Limite superior
Em 1990, Coppersmith e Winograd melhoraramesta marca para O(n2.376);
Em 2010, A. Stothers apresentou um algoritmode complexidade O(n2.373);
Em 2011, V. Willians melhorou ainda mais estamarca para O(n2.372).
– p. 21/35
Limite superior
Em 1990, Coppersmith e Winograd melhoraramesta marca para O(n2.376);
Em 2010, A. Stothers apresentou um algoritmode complexidade O(n2.373);
Em 2011, V. Willians melhorou ainda mais estamarca para O(n2.372).
Portanto, a cota superior atual para o problema damultiplicação de matrizes é O(n2.372).
– p. 21/35
Analogia com record mundial
A cota superior para um problema é análoga aorecord mundial de uma modalidade de atletismo.Ele é estabelecido pelo melhor atleta (algoritmo)do momento. Assim como o record mundial, a cotasuperior pode ser melhorada por um algoritmo(atleta) mais veloz.
– p. 22/35
Analogia com record mundial
“Cota superior” - 100m. rasos
1988 Carl Lewis 9s 921993 Linford Christie 9s 871999 Maurice Greene 9s 792007 Asafa Powell 9s 742008 Usain Bolt 9s 722009 Usain Bolt 9s 58
– p. 23/35
Limite inferior (lower bound)
As vezes é possível demonstrar que, para um dadoproblema, qualquer que seja o algoritmo a serusado, o problema requer pelo menos um certonúmero de operações.
– p. 24/35
Limite inferior (lower bound)
As vezes é possível demonstrar que, para um dadoproblema, qualquer que seja o algoritmo a serusado, o problema requer pelo menos um certonúmero de operações.
Essa complexidade é chamada cota inferior (lowerbound) do problema.
– p. 24/35
Limite inferior
Para o problema da multiplicação de matrizesquadradas n' n, apenas para ler os elementosdas duas matrizes de entrada ou para produzir oselementos da matriz produto leva tempo O(n2).Assim uma cota inferior trivial é !(n2).
– p. 25/35
Algoritmo ótimo
Se um algoritmo tem uma complexidade igual ácota inferior do problema, ele é assintoticamenteotimo ou simplesmente otimo.
– p. 26/35
Analise de Algoritmos
Análise assintótica: ordem !
– p. 27/35
Ordem !
A expressão “f = O(g)” tem o mesmo sabor que“f $ g”. Agora precisamos de um conceito quetenha o sabor de “f # g”.
– p. 28/35
Ordem !
Dadas funções assintoticamente não negativas f eg, dizemos que f esta na ordem ! de g eescrevemos f = !(g) se
f(n) # c.g(n)
para algum c positivo e para todo n suficientementegrande.
– p. 29/35
Ordem !
Em outras palavras, f = !(g) se existe um númeropositivo c e um número n0 tais que
f(n) # c.g(n)
para todo n maior que n0.
– p. 30/35
Ordem !
Em outras palavras, f = !(g) se existe um númeropositivo c e um número n0 tais que
f(n) # c.g(n)
para todo n maior que n0.
Qual a relação entre O e !?
–p. 30/35
Ordem !
Em outras palavras, f = !(g) se existe um númeropositivo c e um número n0 tais que
f(n) # c.g(n)
para todo n maior que n0.
Qual a relação entre O e !?
f = O(g) ( g = !(f)
– p. 30/35
Ordem ! - Exercícios
1. Seja!nk
"o número de combinações de n objetos
tomados k a k. Mostre!n2
"= !(n2).
2. Prove que 100 log n& 10n+ 2n log n está em !(n log n).3. É verdade que 2n+ 1 está em !(n)?
– p. 31/35
Analise de Algoritmos
Análise assintótica: ordem "
– p. 32/35
Ordem "
Além dos conceitos que têm o sabor de “f $ g” ede “f # g”, precisamos de um que tenha o saborde “f = g.
– p. 33/35
Ordem "
Dizemos que as funções f e g estão na mesmaordem e escrevemos f = "(g) se f = O(g) ef = !(g).
Em outras palavras, f = "(g) significa que existenúmeros positivos c e d tais que
c.g(n) $ f(n) $ d.g(n)
para todo n suficientemente grande.
– p. 34/35
Ordem " - ExercíciosProve ou disprove:1. 9999n2 = "(n2)
2. (3/2)n2 + (7/2)n& 4 = "(n2)
3. n2/1000& 999n = "(n2)
4. log2 n+ 1 = "(log10 n)
– p. 35/35