Escolar Documentos
Profissional Documentos
Cultura Documentos
Universidade de Brasília
Departamento de Ciência da Computação
Profa . Dra . Maria Emília Teles Walter
22/4/2011
3 Crescimento de Funções
3.1 Ordem de crescimento do tempo de execução do algo-
ritmo
- Caracterização simples da eficiência do algoritmo;
- Permite comparar custos de tempo de algoritmos diferentes para um mesmo
problema;
Merge-sort tempo de execução do pior caso Θ(n lg n);
Insertion-sort tempo de execução do pior caso Θ(n2 ).
3.2 Precisão
Podemos determinar, precisamente, o tempo de execução de um algoritmo.
(ex.: Insertion-sort no capítulo 1), mas:
→
As constantes multiplicativas do termo de maior ordem, Não Influenciam;
→
Os termos de menor ordem, Não Influenciam;
→ O tempo de execução é dominado pelo termo de maior ordem.
→
(função do tamanho da entrada).
1
de um algoritmo cresce com o tamanho da entrada, no limite, quando o
tamanho da entrada cresce ilimitadamente;
⇒ Um algoritmo assintoticamente mais eficiente é melhor do que um outro
algoritmo mais eficiente para entradas pequenas. Estudaremos métodos
para simplificar a análise assintótica dos algoritmos.
→
Descreve o tempo de execução do pior caso;
→ Definida para tamanhos de entrada inteiros.
3.4 notação-Θ
Dada uma função g(n) e considerando n suficientemente grande:
2
→ Com c1 g(n) abaixo de f (n) e acima de c2 g(n), para n ≥ n0 .
→ Com n ≥ n0 , f (n) = g(n) por fator constante.
→ g(n) é limite assintoticamente perto de f (n).
3.5 Exemplo 1
Ignoramos termos de menor ordem e coeficiente do termo de maior ordem
justificando esse fato:
1 2
n − 3n = Θ(n2 )
2
Determinar constantes c1 , c2 , n0 , tal que:
1 2
c1 n2 ≤ n − 3n ≤ c2 n2
2
Para todo n ≥ n0 , dividindo por n2 :
1 3
c1 ≤ − ≤ c2
2 n
Com n → ∞
1 3 1
h(n) = − , n → ∞ : h(n) =
2 n 2
Para h(n) ≤ c2 ? Basta tomar:
1
c2 ≥ en ≥ 1.
2
Para c1 ≤ h(n)? Basta tomar:
1 o
c1 ≥ 0, h(6) = 0, h(7) = , 1 positivo.
14
Então basta tomar:
1
c1 ≤ en≥7
14
Assim:
1 2 1 1
0≤ n ≤ n2 − 3n ≤ n2 , ∀ ≥ 7,
14 2 2
e
1 2
n − 3n = Θ(n2 )
2
3
3.6 Exemplo 2
6n3 6= Θ(n2 )
Supor, por contradição, que existem:
c2 e n0 | n3 ≤ c2 n2 , ∀n ≥ n0 .
c2
(÷n2 ) : 6n ≤ c2 → n ≤
6
Não vale para valores de n arbitrariamente grandes, pois, c2 é constante.
Intuitivamente: termos de menor ordem de uma função assintoticamente
positiva podem ser ignorados quando determinados limites próximos, pois, não
são significativos para n grande.
3.7 Exemplo 3
Tomando
a 7a
c1 = , c2 =
4 4
e r
|b| |c|
n0 = 2max( , )
a a
temos:
a 2 7a 2
0≤ n ≤ an2 + bn + c ≤ n ,
4 4
Para todo n ≥ n0 .
Resolvendo uma parte do exercício:
4
r
a b c |b| |c|
≤ a + + 2 , n ≥ 2max( , )
4 n n a a
Com:
b > 0, c > 0;
b > 0, c < 0;
a>0=
b < 0, c > 0;
b < 0, c < 0.
q
Para o caso max( |b|
a ,
|c|
a ) = |b|
a , temos:
a b c
≤ a + |b| + |b| =
4 2a (2 a )2
a ca2
=a+ + >0
2 4|b|2
q q
Sendo análogo para max( |b|
a , |c|
a ) = |c|
a .
Resolver para os outros casos.
Em geral, para qualquer polinômio:
d
X
p(n) = ai ni , ai ctes, > 0 → p(n) = Θ(nd )
i=0
3.8 notação-O
→
notação-Θ: limita assintoticamente uma função (acima e abaixo);
→ notação-O limite superior assintótico. Fornece limite superior de uma função, por fator constante.
5
Figura 2: f (n) = O(g(n))
Θ(g(n)) ⊆ O(g(n))
(
c = a + |b|
Basta Tomar = ⇒ 0 ≤ an + b ≤ (a + |b|)n2 ,
n0 = 1
Para:
6
3.9 notação-O
Avaliamos tempo de execução de um algoritmo investigando a estrutura geral
do algoritmo.
Exemplo: Insertion-Sort:
Exemplo:
⇒ Temos O(n2 ) como limite superior do tempo de execução do pior caso do
Insection-Sort
⇒ Temos O(n2 ) como limite superior do tempo de execução para qualquer
entrada.
mas
⇒ Θ(n2 ) é limite do tempo de execução do pior caso do Insection-Sort
⇒ Θ(n2 ) não é o limite de tempo de execução para qualquer entrada (entrada
já ordenada possui tempo de execução Θ(n))
⇒ Técnicamente:
É um abuso dizermos que o tempo de execução do Insertion-sort é O(n2 ),
para um dado n, pois o tempo de execução depende de uma particular entrada
para um dado n.
O tempo de n não é, de fato, uma função de n.
Dizer "tempo de execução"é O(n2 ) significa:
3.10 notação-Ω
A notação-Ω fornece limite inferior assintótico:
7
• notação-Ω: limite inferior de uma função, por um fator constante.
Exemplo
an2 + bn + c = Θ(n2 ) a, b, c constantes, a > 0 →
an2 + bn + c = Ω(ne ) e an2 + bn + c = O(ne )
Observação: Na prática, não usa Θ → O, Ω mas usamos o teorema na outra direção.
8
Mais ainda, limites assintóticamente próximos: tempo de execução do Insertion-
Sort não é Ω(n2 ) pois ele executa em Θ(n) para entradas ordenadas. Porém,
podemos dizer que o tempo de execução do pior caso é Ω(n2 ), pois existem
entradas que levam ao tempo de Ω(n2 ).
Tempo de execução de um algoritmo: Ω(n), para qualquer entrada de tama-
nho n, o tempo de execução do algoritmo, no conjunto das entradas, custa no
mínimo uma constante vezes g(n), n suficientemente grande.
• (1) existe alguma função f (n) ∈ Θ(n) tal que 2n2 + 3n + 1 = 2n2 + f (n)
para todo n.
9
• (2): para qualquer função g(n) ∈ Θ(n) (poderia ser a f (n) anterior) existe
uma função h(n) ∈ Θ(n2 ) tal que 2n2 + 3n + 1 = h(n) para todo n.
10