Estruturas de Dados e Algoritmos
O que veremos nesta aula?
A relevância da eficiência dos algoritmos
Notação e Análise
Assintótica
Formalização da notação assintótica
Dalton Serey
Departamento de Sistemas e Computação
Universidade Federal de Campina Grande
Análise assintótica de algoritmos
© Dalton Serey DSC/UFCG
© Dalton Serey DSC/UFCG
Pra que algoritmos eficientes?
Por que fazer algoritmos eficientes?
“Se o algoritmo vai ser usado para pequenos
Suponha que você tenha no máximo 1000s para
problemas e por pequenos usuários... não há
porque se preocupar com eficiência.”
resolver certo problema... (+/-17 minutos)
Qual o maior problema que podemos resolver
nesse tempo se o algoritmo é T(n)?
“Se o algoritmo vai ser usado para resolver
T(n)
100n
5n^2
0.5n^3
2^n
grandes problemas, certamente será usado por
grandes usuários! Nesse caso, dá pra resolver o
problema da eficiência comprando hardware
mais rápido...”
1.000s
10
14
12
10
© Dalton Serey DSC/UFCG
© Dalton Serey DSC/UFCG
Por que fazer algoritmos eficientes?
Por que fazer algoritmos eficientes?
Podemos tratar problemas maiores se usarmos um
Eis a tabela com os dados
Por exemplo, qual passará a ser o maior problema
T(n)
100n
5n^2
0.5n^3
2^n
hardware mais rápido?
se usarmos uma máquina 10 vezes mais rápida?
Certamente, a máquina mais lenta resolveria o
mesmo problema em 10x o tempo disponível
em nosso exemplo, isso dá 10.000 segundos
© Dalton Serey DSC/UFCG
1.000s
10
14
12
10
10.000s
100
45
27
13
"!$#% & ' () *!+#+%, -+./ 0 1&2
© Dalton Serey DSC/UFCG
Por que fazer algoritmos eficientes?
Vejamos mais dados...
3 Que ganho tivemos com a mudança?
3 Tempos para problemas de vários tamanhos...
T(n)
100n
5n^2
0.5n^3
2^n
1.000s
10
14
12
10
10.000s
100
45
27
13
T(n)
1000 log n
100 n
5n^2
n^4/100
2^n/1000
Ganho
10.0
3.2
2.3
1.3
457689:57;<=> 8? @5BA/C D>5
<:E&F&5G&<G&6C 8? HI5@8GJ57K;<
LIMIN F&8&A8*=>8><? J&5AOC 8G&8
5
A ;<>P;<7Q MIMMIN ;<J:R STT T
10
3322
1000
500
100
1
25
4644
2500
3125
3906
33554
50
75
100
1000
10000
5644
6229
6644
9966
13288
5000
7500
10000 100000 1000000
12500 28125 50000 5000000 ###
62500 316406 1000000 ###
###
1.1E+12 3.8E+19 1.3E+27 1.1E+298
-
3 Assuma que cada unidade de tempo na tabela
acima corresponde a um milissegundo...
© Dalton Serey DSC/UFCG
Mais argumentos...
Notação Assintótica
3 Os tempos não são nada animadores...
T(n)
1000 log n
100 n
5n^2
n^4/100
2^n/1000
10.0
3.3
1.0
0.5
0.1
0
25.0
4.6
2.5
3.1
3.9
34
50.0
60.0
100
5.6
5.9
6.6
5.0
6.0
10.0
12.5
18.0
50.0
10m25s 21m36s 2h46m
>35anos >300séc
© Dalton Serey DSC/UFCG
3 Definimos O(g(n)) como o conjunto das funções
1000
10000
10.0
13.3
1m40s 16m40s
1h23m >3anos
>3anos >300séc
assintoticamente limitadas por g(n). Formalmente,
O g n U
V
f n : W c , n 0 X 0 : 0 Y f n Y cg n , Z n [ n 0 \
3 Usada para indicar limites assintóticos superiores.
3 Observe que na prática, escrevemos
f(n) = O(g(n))
para denotar que f(n) pertence a O(g(n))
© Dalton Serey DSC/UFCG
© Dalton Serey DSC/UFCG
Notação Assintótica
Notação Assintótica
3 Exemplos positivos:
] 5n + 2 = O(n), pois 5n + 2 <= n, para n > 0
] n = O(5n + 2), pois n <= (5n + 2)/5, para n > 0
] 3n2 + 5n = O(n2), pois 3n2 + 5n <= 3n2, para n > 5
3 Para encontrar c e n , devemos encontrar soluções
0
3 Exemplos negativos:
] 3n2 + 5n não é O(n), pois não há constantes positivas
c e n0 tais que 3n2 + 5n <= cn, a partir de n0
para a inequação obtida da definição...
3 Por exemplo,
] 3n2 + 5n <= cn2, para valores de n > n0
] pelos métodos convencionais, podemos verificar que
as soluções para a inequação são tais que
n >= 5/(c-3), para valores de c > 3
] logo, uma solução é c = 4 e n0 = 5
3 Exercício: prove o último resultado!
© Dalton Serey DSC/UFCG
© Dalton Serey DSC/UFCG
Notação Assintótica
Notação Assintótica
^ Se não houver soluções, então f(n) não é O(g(n)).
^ Definimos j
^ Por exemplo, não há solução para
_ 3n2 + 5n <= cn, para valores de n > n0
_ para se convencer disso, perceba que a derivada de
`
g n acb f n : d c , n 0 e 0 : 0 f cg n f f n , g n h n 0 i
^ Usada para indicar limites assintóticos inferiores
3n2 + 5n – cn é sempre positiva na faixa de valores
permitida...
^ É a definição complementar de O(g(n)).
^ Exemplo: 3n 2 k 5n l j n 2
_ logo, não é possível que 3n2 + 5n – cn <= 0, que é
equivalente à inequação dada...
^
g n como o conjunto das funções
inferiormente limitadas por g(n). Formalmente,
Portanto, 3n2 + 5n não é O(n)!
© Dalton Serey DSC/UFCG
Notação Assintótica
m Definimos n
g n como o conjunto das funções
para as quais g(n) é tanto limite superior quanto
limite inferior. Formalmente,
o
g n
pcq f n : f n p O g n e f n psr
g n
t
m É usada para indicar limites assintóticos estritos.
m Por exemplo, 2 k
3n 5n lvu n 2
© Dalton Serey DSC/UFCG
© Dalton Serey DSC/UFCG
Download

Notação e Análise Assintótica