You are on page 1of 36

Crescimento de Funes

PPGI/200
9

Prof. Lucdio Cabral - Estrutura de Dados e Complexidade de Algoritmo


s

Anlise de Algoritmos
tempo de processamento em funo dos dados de
entrada;
espao de memria total requerido para os dados;
comprimento total do cdigo;
correcta obteno do resultado pretendido;
robustez (como comporta-se com as entradas
invlidas ou no previstas).
quantidade de "trabalho" necessria para a sua
execuo, expressa em funo das operaes
fundamentais, as quais variam de acordo com o
algoritmo, e em funo do volume de dados.

Complexidade

Porqu o estudo da Complexidade?


Performance
Escolher entre vrios algoritmos o mais eficiente
para implementar;
Desenvolver novos algoritmos para problemas que
j tm soluo;
Desenvolver algoritmos mais eficientes (melhorar os
algoritmos), devido ao aumento constante do
"tamanho" dos problemas a serem resolvidos.
Complexidade Computacional - torna possvel
determinar se a implementao de determinado
algoritmo vivel.

Complexidade
Tipos de Complexidade
Espacial
Este tipo de complexidade representa, por exemplo, o
espao de memria usado para executar o algoritmo.
Temporal
Este tipo de complexidade o mais usado podendo
dividir-se em dois grupos:
Tempo (real) necessrio execuo do algoritmo.
(como podemos medir?)
Nmero de instrues necessrias execuo.

Analise de Algoritmos
Medidas de Anlise
Devem ser independentes da tecnologia
(hardware/software)
Modelos Matemticos simplificados baseados nos fatores
relevantes:
Tempo de Execuo
Uma funo que relaciona o tempo de execuo com o
tamanho de entrada:
t = F(n)
Conjunto de operaes a serem executadas.
Custo associado execuo de cada operao.
Ocupao de Espao em Memria

Complexidade
Exemplo

Sejam 5 algoritmos A1 a A5 para resolver um mesmo


problema, de complexidades diferentes. (Supomos que uma
operao leva 1 ms para ser efetuada.)
Tk(n) a complexidade ou seja o nmero de operaes que o
algoritmo efetua para n entradas

n
16
32
512

A1

T1(n)= n

0.016s
0.032s
0.512s

A2

T2(n)=nlog n

0.064s
0.16s
9s

tempo necessrio para o algoritmo em funo de n entradas

A3

A4

A5

T3(n)=n2

T4(n)=n3

T5(n)=2n

0.256s
1s
4m22s

4s
33s
1 Dia 13h

1m4s
46 Dias
10137 Sculos

Operaes primitivas

Atribuio de valores a variveis


Chamadas de mtodos
Operaes aritmticas
Comparao de dois nmeros
Acesso a elemento de um array
Seguir uma referncia de objeto (acesso a
objeto)
Retorno de um mtodo

Complexidade de
Algoritmos
Complexidade de pior caso big-Oh g(n)
Complexidade de melhor caso big-Omega g(n)
de uso bem menos freqente
em algumas situaes especficas

Complexidade de caso mdio big-Theta g(n)


menos utilizada apesar de importante
difcil conhecer a distribuio de probabilidades das diferentes
entradas

Notaes assintticas

Limite assinttico apertado ou exato


Limite assinttico superior
Limite assinttico inferior
Limite superior que no
assintoticamente apertado

Limite inferior que no

assintoticamente apertado

Por que as notaes assintticas so importantes?

Elas fornecem uma caracterizao simples da eficincia de um


algoritmo.

Elas permitem a comparaode desempenho entre vrios algoritmos.

Para valores elevados de componentes/entradas, as constantes


multiplicativas e termos de baixa ordem de um tempo de execuo
exato so dominados pelo efeito do tamanho de entrada (o nmero
de componentes).

O tempo de execuo de uma algoritmo sobre uma entrada particular, o nmero de operaes
primitivas ou passos executados.

O tamanho da entrada depende problema sendo estudado. Mas na maioria dos casos este o
nmero de itens na entrada, por exemplo: o nmero total de bits.

Resumindo, em geral, quando observamos tamanhos de entrada


suficientemente grandes para tornar a ordem de crescimento do
tempo de execuo relevante para um algoritmo, ns estamos
estudando a eficincia assinttica de um algoritmo.
E um algoritmo que assintoticamente mais eficiente ser
efetivamente a melhor escolha. Isto pode no ser verdade para
todas as entradas consideradas pequenas!

Limite assinttico apertado


ou exato

OBS:

Limite assinttico apertado


ou exato

Eg.

Limite assinttico apertado


ou exato

Eg.

Limite assinttico superior

Limite assinttico superior

Qual melhor algoritmo?


Sejam A e B dois algoritmos que o
resolvem o problema P, cujos tempos de
execuo so
TA(n) e TB(n)
comportamento assinttico tamanho da
entrada arbitrariamente grande
caracterizado pela notao O (big O)

Diagrama

Definio do Big-Oh

Ordens mais comuns


2n
(exponencial)

n2
(quadrtica)

n log n
f
n (linear)

log n (logartmica)
1 (constante)

Fonte: Sahni, "Data Structures, Algorithms and Applications in C++"

Alguns conceitos

T (n) = O (1) : constante


T (n) = O (log log n) : super-rpido
T (n) = O (log n) : logartmico muito bom
T (n) = O (n) : linear toda a entrada visitada
T (n) = O (n log n) : limite de muitos problemas
T (n) = O (n2) : quadrtico
T (n) = O (nk) : polinomial no tamanho da entrada
T (n) = O (kn), O (n!), O (nn) : exponencial ruim!

Teoremas
1. Comportamento assinttico da soma de duas
funes cujos comportamentos assintticos
particulares so conhecidos:
Se f1(n) = O(g1(n)) e f2(n) = O(g2(n)), ento:
f1(n) + f2(n) = O(max(g1(n)) , g2(n)))
2. O(k f(n)) = O(f(n))
3. O(f(n)) O(g(n)) = O(f(n) g(n))

Eficincia de um Algoritmo, mais um


exemplo

Trs algoritmo para calcular


1 + 2 + n para um n > 0

Eficincia de um Algoritmo

O(n)

O(n2)

O(1)

Nmero de operaes necessrias

A notao
f(n) = 8n + 128 O (n2)?
f(n) c.n2 ?
Seja c =1
8n + 128 n2, ento
0 n2 8n 128
0 (n 16)(n+8) n0 = 16
c =1, no = 16, f (n) c.n2 para todo n n0

A notao
A funo atua como um limite superior
assinttico da funo f
f = n2 -1

f = (n2)
f = n2 -1

f = (n3)
f = 403

f = (1)
f = 5+2logn +3log2n

f=
(log2n)
f = 5+2 log n +3log2n

f = (n)
f = 5.2n +5n10

f = (2n)

Limite assinttico inferior

Limite superior que no


assintoticamente apertado

Limite inferior que no


assintoticamente apertado

Notaes assintticas em equaes

Relaes de Funes Assintticas

Limites podem ser usados para


determinar a ordem de complexidade

c ento f (n) = ( g (n)) se c > 0

se lim f (n) / g (n) = 0 or c > 0 ento f (n) = ( g(n))


n
or c > 0ento f (n) = ( g (n))

Exemplo usando limites


5n 3n (n ) dado que,
3

5n 3n
5n
3n
lim
lim 2 lim 2
2
n
n n
n n
n
3

Regra de LHopital
Se f(x) e g(x) so ambas funes diferenciveis
com derivadas f(x) e g(x), respectivamente, e
se

lim g ( x) lim f ( x ) ento


x

f ( x)
f ' ( x)
lim
lim
x g ( x )
x g ' ( x )
sempre que o limite a direita existe

Exemplos usando limites


10n 3 3n (n 3 ) dado que,
10n 3 3n
10n 3
3n
lim
lim 3 lim 3 10
3
n
n n
n n
n
n log e n O(n 2 ) dado que,
n log e n
log e n
lim
lim
? Use a Regra de L' Hopital
2
n
n
n
n
(log e n)'
1/ n
lim
lim
0
n
n 1
(n)'

Exemplo usando limites


lg n O (n )
ln n
lg n
ln 2

ln n
1
(lg n)'
'=
ln 2
nln2

lg n
(lg n)'
1
lim
lim
0
lim
n n
n
n n ln 2
n'

Exemplo usando limites


n

n
O (2 )
k

onde k uma constante inteira positiva


ln 2
2n e n
( 2 )' (e
n

n ln 2

)'= ln2 e
1

n ln 2

2n ln 2

nk
kn k
lim n

lim
n
n 2
n 2 ln 2
k2

k ( k 1)n
k!
lim

0
...
lim
2
n
n
k
n
n 2 ln 2
2 ln 2

You might also like