Вы находитесь на странице: 1из 22

Universidade Estadual de Mato Grosso do Sul

Bacharelado em Cincia da Computao


Algoritmos e Estruturas de Dados II
Prof. Fabrcio Srgio de Paula
Tpicos
Complexidade de algoritmos
Notao assinttica
Exerccios
Complexidade de algoritmos
Tempo de execuo: caracterstica importante de um
algoritmo
Possibilita prever recursos necessrios para execuo
Clculo do tempo de execuo
1. Mtodo emprico: mede-se o tempo durante execuo
Diversas entradas distintas
Tempo depende de software/hardware usado
2. Mtodo analtico: modelo matemtico
Independe de hardware/software
Nem sempre simples

Complexidade de algoritmos
Mtodo analtico
Tempo de execuo medido em funo do tamanho da
entrada
Exemplos:
Ordenao: quantidade de elementos no vetor
Multiplicao de dois nmeros grandes: quantidade de bits
Considera operao dominante: operaes bsicas com
maior frequncia de execuo
Exemplos:
Ordenao: comparao de elementos
Multiplicao de matrizes: multiplicaes realizadas
Complexidade de algoritmos
Exemplo 1: Inverso de uma sequncia





Tamanho da entrada: n elementos da sequncia
Operao dominante: troca de elementos
Cada troca envolve trs operaes bsicas
Complexidade: n/2 operaes dominantes
Complexidade de algoritmos
Exemplo 2: Soma de matrizes




Tamanho da entrada?
Operao dominante?
Complexidade?
Complexidade de algoritmos
Exemplo 3: Multiplicao de matrizes





Tamanho da entrada?
Operao dominante?
Complexidade?
Complexidade de algoritmos
Complexidade do pior caso: considera a situao onde o
algoritmo executa o maior nmero de operaes possvel
Mais utilizada: prever recursos (CPU) para execuo
Complexidade do melhor caso: considera a situao onde
o algoritmo executa o menor nmero de operaes
possvel
Complexidade do caso mdio: considera todas as
situaes possveis e suas probabilidades de ocorrncia

Complexidade de espao: necessidade de memria, etc.
Complexidade de algoritmos
Exemplo: Busca em vetor pelo elemento x
Operao dominante?
Complexidade do pior caso?
Complexidade do melhor caso?
Complexidade do caso mdio?

Notao assinttica
Anlise assinttica
Estudo do comportamento de algoritmos com entradas
grandes
Ordem de crescimento do tempo de execuo em funo
do tamanho da entrada
Em geral
Algoritmo assintoticamente mais eficiente: melhor
Exceto para entradas pequenas
Notao assinttica
Notaes assintticas
Notaes utilizadas para descrever o tempo de execuo
assinttico de algoritmos
Exemplos:
O: limite superior
Em geral, pior caso
: limite inferior
Em geral, melhor caso
: limite superior e inferior justo
Ordem de crescimento
Notao O
Dada funo g(n)
O(g(n)) um conjunto de funes
O(g(n)) = { f(n) : existem constantes positivas c e n
0
tais que
0 f(n) cg(n) para todo n n
0
}
f(n) O(g(n)) se existem c e n
0
tais que f(n) nunca supere cg(n)
f(n) = O(g(n)) sinnimo para f(n) O(g(n))

g(n) limite assinttico superior para f(n)
Notao O

Notao O
Exemplo: mostar que f(n) = 20n
2
+ 10n O(n
2
)
O que fazer?
Encontrar constantes positivas c e n
0
tais que 20n
2
+ 10n

cn
2

para todo n n
0
f(n) = O(n
3
) ?
f(n) = O(n
4
) ?
f(n) = O(n n) ?
f(n) = O(n lg n) ?
Notao
Dada funo g(n)
(g(n)) um conjunto de funes
(g(n)) = { f(n) : existem constantes positivas c e n
0
tais que
0 cg(n) f(n) para todo n n
0
}
f(n) (g(n)) se existem c e n
0
tais que f(n) nunca supere cg(n)
f(n) = (g(n)) sinnimo para f(n) (g(n))

g(n) limite assinttico inferior para f(n)
Notao

Notao
Exemplo: mostar que f(n) =
n
2
20
- 10n (n
2
)
O que fazer?
Encontrar constantes positivas c e n
0
tais que cn
2

n
2
20
- 10n para
todo n n
0
f(n) = (n
3
) ?
f(n) = (n
4
) ?
f(n) = (n n) ?
f(n) = (n lg n) ?

Notao
Dada funo g(n)
(g(n)) um conjunto de funes
(g(n)) = { f(n) : existem constantes positivas c
1
, c
2
e n
0
tais que
0 c
1
g(n) f(n) c
2
g(n) para todo n n
0
}
f(n) (g(n)) se existem c
1
, c
2
e n
0
tais que f(n) difere de g(n) apenas
por fatores constantes
f(n) = (g(n)) sinnimo para f(n) (g(n))

g(n) limite assinttico restrito (superior e inferior) para f(n)

Notao

Notao
Exemplo: mostar que f(n) =
n
2
2
3n (n
2
)
O que fazer?
Encontrar constantes positivas c
1
, c
2
e n
0
tais que
c
1
n
2

n
2
2
3n

c
2
n
2
para todo n n
0

f(n) = (n
3
) ?
f(n) = (n) ?

Algoritmo timo
Seja um problema P que requer (n) operaes para ser
resolvido para uma entrada de tamanho n.
Algoritmo timo: algoritmo que resolve P com O(n)
operaes
Um algoritmo timo apresenta a menor complexidade
possvel

Exerccios
Livro Szwarcfiter:
1.4, 1.14, 1.15, 1.17, 1.18, 1.19, 1.20

Вам также может понравиться