Sunteți pe pagina 1din 53

Analise de Algoritmos

Anlise assinttica: ordens O, e

p. 1/35

Anlise assinttica
Ao ver uma expresso como n + 10 ou n2 + 1, pensamos geralmente em valores pequenos de n, valores prximos de zero. A anlise de algoritmos faz exatamente o contrrio: ignora os valores pequenos e concentra-se nos valores enormes de n. Esse tipo de anlise chama-se anlise assinttica.

p. 2/35

Anlise assinttica - exemplo


Considere o nmero de operaes de dois algoritmos que resolvem um mesmo problema, como funo do tamanho n da entrada. Algoritmo 1: f1 (n) = 2n2 + 5n operaes Algoritmo 2: f2 (n) = 500n + 4000 operaes Dependendo do valor de n, o Algoritmo 1 pode requerer mais ou menos operaes que o Algoritmo 2. (Compare as duas funes para n = 10 e n = 100.)
p. 3/35

Anlise assinttica - exemplo


Nosso interesse estudar o comportamento assintotico das funes, ou seja, quando n . Em geral, os termos inferiores e as constantes multiplicativas contribuem pouco na comparao e podem ser descartados.

p. 4/35

Anlise assinttica - exemplo


O importante observar que f1 (n) tem crescimento proporcional a n2 (quadrtico), ao passo que f2 (n) tem crescimento proporcional a n (linear). Um crescimento quadrtico pior que um crescimento linear. Assim, vamos preferir o Algoritmo 2.

p. 5/35

Anlise assinttica - outro exemplo


Para valores enormes de n, as funes n2 , 3 2 n, 2 9999n2 , n2 , 1000 n2 + 100n

crescem todas com a mesma velocidade e portanto so todas equivalentes. Nesse estudo, as funes so classicadas em ordens; todas as funes de uma mesma ordem so equivalentes. As cinco funes acima, por exemplo, pertencem mesma ordem.
p. 6/35

Importncia da anlise assinttica


Na tabela abaixo, os valores representam o tamanho da maior instncia solucionvel em uma hora.
Computador Funo n n log n n2 n3 2n atual N N1 N2 N3 N4 Computador 100 vezes mais rpido 100N 22, 5N1 10N2 4, 6N3 N4 + 6 Computador 1000 vezes mais rpido 1000N 140, 2N1 31, 6N2 10N3 N4 + 10

p. 7/35

Funes assintoticamente no negativas


Restringiremos a ateno a funes assintoticamente no negativas, ou seja, funes f tais que f (n) 0 para todo n sucientemente grande. Mais explicitamente, f assintoticamente no negativa se existe n0 tal que f (n) 0 para todo n maior que n0 .

p. 8/35

Analise de Algoritmos

Anlise assinttica: ordem O

p. 9/35

Ordem O
Dadas funes assintoticamente no negativas f e na ordem O de g e g , dizemos que f esta escrevemos f = O (g ) se f (n) c.g (n) para algum c positivo e para todo n sucientemente grande.

p. 10/35

Ordem O
Em outras palavras, f = O (g ) se existe um nmero positivo c e um nmero n0 tais que f (n) c.g (n) para todo n maior que n0 .

p. 11/35

Ordem O - Exemplos
A notao O fornece limites superiores de funes que, por sua vez, correspondem a tempos de execuo de algoritmos.

p. 12/35

Ordem O - Exemplos
A notao O fornece limites superiores de funes que, por sua vez, correspondem a tempos de execuo de algoritmos.
Exemplo 1:

Se f (n) 9999g (n) para todo n 1000

p. 12/35

Ordem O - Exemplos
A notao O fornece limites superiores de funes que, por sua vez, correspondem a tempos de execuo de algoritmos.
Exemplo 1:

Se f (n) 9999g (n) para todo n 1000 ento 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 +

2 n

e que

g (n) = 1.

p. 14/35

Ordem O - Exemplos
Exemplo 3:

Suponha que f (n) = 3 + g (n) = 1. Ento

2 n

e que

2 3 + 3 + 1 = 4 = 4.g (n) n para todo n 2.

p. 14/35

Ordem O - Exemplos
Exemplo 3:

Suponha que f (n) = 3 + g (n) = 1. Ento

2 n

e que

2 3 + 3 + 1 = 4 = 4.g (n) 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 que g (n) = 200n2 . Ser verdade que f (n) = O (g (n))?

p. 15/35

Ordem O - Exemplos
Exemplo 4:

Suponha que f (n) = n3 e que g (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 que g (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 - Exerccios
Prove os disprove as armaes: 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. 7. 8.
3 2 7 n + 2 2 n 4 = O ( n) 3 2 7 2) n + n 4 = O ( n 2 2 n3 999999n2 1000000

= O ( n2 )

p. 16/35

Ordem O - Exerccios
9. Seja n k o nmero de combinaes de n objetos 2 ). = O ( n tomados k a k . Mostre n 2 Prove os disprove as armaes: 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 notao O tambm utilizada para indicar limites superiores para problemas.

p. 18/35

Limite superior (upper bound)


A notao O tambm utilizada para indicar limites superiores para problemas. Dado um problema, por exemplo, o de multiplicao de duas matrizes quadradas n n.

p. 18/35

Limite superior (upper bound)


A notao O tambm utilizada para indicar limites superiores para problemas. Dado um problema, por exemplo, o de multiplicao de duas matrizes quadradas n n. Conhecemos um algoritmo para resolver este problema (pelo mtodo trivial) de complexidade O (n3 ).

p. 18/35

Limite superior
Sabemos assim que a complexidade deste problema no deve superar O (n3 ), uma vez que existe um algoritmo que o resolve com esta complexidade, e dizemos que uma cota superior ou limite superior para este problema O (n3 ).

p. 19/35

Limite superior
Sabemos assim que a complexidade deste problema no deve superar O (n3 ), uma vez que existe um algoritmo que o resolve com esta complexidade, e dizemos que uma cota superior ou limite superior para este problema O (n3 ). A cota superior de um problema pode mudar se algum descobrir um outro algoritmo melhor.

p. 19/35

Limite superior
V. Strassen apresentou em 1969 um algoritmo para multiplicao de matrizes de complexidade O (nlog 7 ) = O (n2.807 ).

p. 20/35

Limite superior
V. Strassen apresentou em 1969 um algoritmo para multiplicao de matrizes de complexidade O (nlog 7 ) = O (n2.807 ). Assim a cota superior para o problema de multiplicao de matrizes passou a ser O (nlog 7 ).

p. 20/35

Limite superior
Em 1990, Coppersmith e Winograd melhoraram esta marca para O (n2.376 );

p. 21/35

Limite superior
Em 1990, Coppersmith e Winograd melhoraram esta marca para O (n2.376 ); Em 2010, A. Stothers apresentou um algoritmo de complexidade O (n2.373 );

p. 21/35

Limite superior
Em 1990, Coppersmith e Winograd melhoraram esta marca para O (n2.376 ); Em 2010, A. Stothers apresentou um algoritmo de complexidade O (n2.373 ); Em 2011, V. Willians melhorou ainda mais esta marca para O (n2.372 ).

p. 21/35

Limite superior
Em 1990, Coppersmith e Winograd melhoraram esta marca para O (n2.376 ); Em 2010, A. Stothers apresentou um algoritmo de complexidade O (n2.373 ); Em 2011, V. Willians melhorou ainda mais esta marca para O (n2.372 ). Portanto, a cota superior atual para o problema da multiplicao de matrizes O (n2.372 ).
p. 21/35

Analogia com record mundial


A cota superior para um problema anloga ao record mundial de uma modalidade de atletismo. Ele estabelecido pelo melhor atleta (algoritmo) do momento. Assim como o record mundial, a cota superior pode ser melhorada por um algoritmo (atleta) mais veloz.

p. 22/35

Analogia com record mundial


Cota superior - 100m. rasos

1988 Carl Lewis 1993 Linford Christie

9s 92 9s 87

1999 Maurice Greene 9s 79 2007 Asafa Powell 2008 Usain Bolt 2009 Usain Bolt 9s 74 9s 72 9s 58

p. 23/35

Limite inferior (lower bound)


As vezes possvel demonstrar que, para um dado problema, qualquer que seja o algoritmo a ser usado, o problema requer pelo menos um certo nmero de operaes.

p. 24/35

Limite inferior (lower bound)


As vezes possvel demonstrar que, para um dado problema, qualquer que seja o algoritmo a ser usado, o problema requer pelo menos um certo nmero de operaes. Essa complexidade chamada cota inferior (lower bound) do problema.

p. 24/35

Limite inferior
Para o problema da multiplicao de matrizes quadradas n n, apenas para ler os elementos das duas matrizes de entrada ou para produzir os elementos 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 assintoticamente ou simplesmente otimo . otimo

p. 26/35

Analise de Algoritmos

Anlise assinttica: ordem

p. 27/35

Ordem
A expresso f = O (g ) tem o mesmo sabor que f g . Agora precisamos de um conceito que tenha o sabor de f g .

p. 28/35

Ordem
Dadas funes assintoticamente no negativas f e na ordem de g e g , dizemos que f esta escrevemos f = (g ) se f (n) c.g (n) para algum c positivo e para todo n sucientemente grande.

p. 29/35

Ordem
Em outras palavras, f = (g ) se existe um nmero positivo c e um nmero 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 nmero positivo c e um nmero n0 tais que f (n) c.g (n) para todo n maior que n0 . Qual a relao entre O e ?

p. 30/35

Ordem
Em outras palavras, f = (g ) se existe um nmero positivo c e um nmero n0 tais que f (n) c.g (n) para todo n maior que n0 . Qual a relao entre O e ? f = O (g ) g = (f )
p. 30/35

Ordem - Exerccios
1. Seja n k o nmero de combinaes de n objetos 2 ). = ( n tomados k a k . Mostre n 2 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

Anlise assinttica: ordem

p. 32/35

Ordem
Alm dos conceitos que tm o sabor de f g e de f g , precisamos de um que tenha o sabor de f = g .

p. 33/35

Ordem
Dizemos que as funes f e g esto na mesma ordem e escrevemos f = (g ) se f = O (g ) e f = (g ). Em outras palavras, f = (g ) signica que existe nmeros positivos c e d tais que c.g (n) f (n) d.g (n) para todo n sucientemente grande.

p. 34/35

Ordem - Exerccios
Prove 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

S-ar putea să vă placă și