Vous êtes sur la page 1sur 37

UNIVERSIDADE DO ESTADO DO AMAZONAS

ESCOLA SUPERIOR DE TECNOLOGIA


NCLEO DE COMPUTAO - NUCOMP

Projeto e Anlise de Algoritmos


Notao assinttica e classes bsicas de
eficincia

Prof. Flvio Jos Mendes Coelho


fcoelho@uea.edu.br

Notao Assinttica
Sejam CA(n) e CB(n) os custos de
eficincia dos algoritmos A e B.
Para valores pequenos de n os custos
no diferem muito. Ento, como saber
quem mais eficiente, A ou B?

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Notao Assinttica
Estuda-se o comportamento de C(n)
quando n assume valores grandes (que
tal n = 10100?), isto , seu
comportamento assinttico.
Para simplificar, comparar e classificar
CA(n) e CB(n) assintoticamente:
Notao O (O grande - micron),
Notao (mega grande), e
Notao (Theta grande)
UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

definio
O(g(n)) = {t(n): existem as constantes
positivas c e n0 tais que 0 t(n) c.g(n),
para todo n n0}.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

definio
Diz-se que g(n) domina assintoticamente
t(n), e que g(n) um limite assinttico
superior para t(n).

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

interpretao
Se t(n) o custo da eficincia de tempo
de um algoritmo e t(n) O(g(n)), ento
O(g(n)) a sua complexidade de
tempo.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

interpretao
Se O(g(n)) a complexidade de tempo de
um algoritmo, ento o algoritmo no
consome mais tempo do que c.g(n).

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

interpretao
Utiliza-se t(n) = O(g(n)) em lugar de t(n)
O(g(n)).
Se T(n) = O(n2), ento existem constantes
positivas c e n0 tais que para n n0 temse T(n) c.n2.
Se T(n) = 3n3 + 2n2 + n = O(n3), pois para c = 6
e n0 = 0, tem-se 3n3 + 2n2 + n 6n3.
UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

interpretao

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

interpretao

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

10

interpretao

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

11

interpretao

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

12

interpretao

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

13

exemplos
T(n) = 3n3 + 2n2 + n = O(n4), mas mais forte
afirmar que T(n) = O(n3).
T(n) = (n + 1)2 = O(n2), pois para c = 4 e n0 = 1,
tem-se (n + 1)2 4n2.
T(n) = 100n + 5 = O(n2), pois para c = 1 e n0 =
0, tem-se 100n + 5 n2.
T(n) = n(n-1) = O(n2).
UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

14

Operaes com O
f = O( f )
c.O( f ) = O( f ), onde c uma constante
O( f ) + O( f ) = O( f )
O(O( f )) = O( f )
O( f ) + O( g ) = O(max( f, g ))
O( f ).O( g ) = O( f.g )
f.O( g ) = O( f.g )
UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

15

Operaes com O
Exemplos

Suponha trs trechos de um algoritmo


cujos tempos de execuo so O(n),
O(n2) e O(nlog n).
O tempo de execuo dos trs trechos
O(max(n2, n, nlog n)), que O(n2).

[log n + k + O(1/n)].[n + O(n)] =


nlog n + kn + O(n.log n).
UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

16

definio
(g(n)) = {t(n): existem as constantes
positivas c e n0 tais que 0 c.g(n) t(n),
para todo n n0}.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

17

interpretao
Diz-se que g(n) domina assintoticamente
t(n), e que g(n) um limite assinttico
inferior para t(n).

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

18

interpretao
Se t(n) o tempo de execuo de um
algoritmo e t(n) (g(n)), ento t(n) no
roda mais rpido do que c.g(n).

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

19

interpretao
Utiliza-se t(n) = (g(n)) em lugar de t(n)
(g(n)).
Se T(n) = (n2), ento existem constantes
positivas c e n0 tais que para n n0 temse T(n) cn2.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

20

exemplos
T(n) = 3n3 + 2n2 (n3) pois, para c = 1 e n
0, tem-se 3n3 + 2n2 n3.
T(n) = n4 - 10 (n4), pois para c = e n 3,
tem-se n4 - 10 n4.
T(n) = n4 - 10 (n3), pois para c = 1 e n 3,
tem-se n4 - 10 n3.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

21

definio
(g(n)) = {t(n): existem constantes
positivas c1, c2 e n0 tais que 0 c1.g(n)
t(n) c2.g(n), para todo n n0}.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

22

definio
Diz-se que g(n) igual t(n) dentro de um
fator constante, e que g(n) um limite
assinttico estrito (ou firme) para
t(n).

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

23

interpretao
Se t(n) o custo da eficincia de tempo
de um algoritmo e t(n) (g(n)), ento
(g(n)) a sua complexidade de
tempo.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

24

interpretao
Se (g(n)) a complexidade de tempo de
um algoritmo, ento o algoritmo tem
tempo equivalente a g(n).

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

25

interpretao
Utiliza-se t(n) = (g(n)) em lugar de t(n)
(g(n)).
Se T(n) = (n2), ento existem constantes
positivas c1, c2 e n0 tais que para n n0
tem-se c1.n2 T(n) c2.n2.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

26

interpretao
Problema. A contagem de custo de um
algoritmo no pior caso T(n) = n2 + 2n.
Qual o seu limite assinttico estrito?
Resposta:
T(n) = (n2), pois n2 n2 + 2n 2n2, para n 2.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

27

Classes de eficincia
assintticas
Sejam O(f(n)) e O(g(n)) as complexidades de
tempo dos algoritmos F e G.
Se f(n) = O(g(n)) e g(n) = O(f(n)) , ento f(n) e
g(n) dominam-se assintoticamente, e F e
G no podem ser comparados pois
diferem por uma constante.
f(n) = 3g(n). Logo, O(f(n)) = O(g(n)). Logo,
pertencem mesma classe de
eficincia.
UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

28

Classes de eficincia
assintticas
Algoritmos podem ser comparados,
comparando-se suas funes de
complexidade, abstraindo-se das
constantes de proporcionalidade.
Porm, as constantes de
proporcionalidade podem alterar esta
considerao se forem muito grandes.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

29

Classes de eficincia...
constante
logartmica
linear
superlinear
quadrtica
cbica
exponencial
exponencial

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

complexidade de
tempo...

Rpido
T(n) = (1)
T(n) = (log n)
T(n) = (n)
T(n) = (nlog n)
T(n) = (n2)
T(n) = (n3)
T(n) = (2n)
T(n) = (n!)
Lento

30

Algoritmos polinomiais e
exponenciais
T(n)
T(n)
T(n)
T(n)
T(n)
T(n)
T(n)
T(n)

=
=
=
=
=
=
=
=

(1)
(log n)
(n)
(nlog n)
(n2)
(n3)
(2n)
(n!)

Algoritmo polinomial
O(p(n)), p(n) um
polinmio

Algoritmo exponencial
complexidade O(cn);
c>1

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

31

Algoritmos polinomiais e
exponenciais
A distino entre os dois tipos vale
assintoticamente
Algoritmos polinomiais resultam de um
entendimento profundo da estrutura do
problema
Algoritmos exponenciais so geralmente
simples variaes de pesquisa exaustiva
(fora bruta)
UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

32

Problemas tratveis e
intratveis
Problema intratvel
no existe um algoritmo polinomial para
resolv-lo
Problema bem resolvido
existe um algoritmo polinomial para
resolv-lo

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

33

Exemplo de problema
intratvel
Um caixeiro viajante
quer visitar n cidades
de tal forma que sua
viagem inicie e termine
em uma mesma
cidade, e cada cidade
seja visitada uma nica
vez (sempre h uma
estrada entre duas
cidades). O problema
encontrar a menor
rota para a viagem.
UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

34

Exemplo de problema
intratvel
<c1, c3, c4, c2, c1> uma soluo com
percurso total =24
Algoritmo exponencial
1.gere todas as rotas;
2.escolha e menor delas.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

35

Exemplo de problema
intratvel
H (n - 1)! rotas possveis.
Distncia total percorrida em cada rota
envolve n adies, logo o nmero total de
adies n!
No exemplo, anterior teramos 24 adies.
Suponha agora 50 cidades: o nmero de
adies seria 50! 1064.
Em um computador executando 109 adies/
s, o tempo total para resolver o problema
com 50 cidades seria maior do que 1045
sculos s para executar as adies.
UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

36

Bibliografia
Levitin.
Ziviani.
Cormen.

UEA/ EST Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

37

Vous aimerez peut-être aussi