Beruflich Dokumente
Kultur Dokumente
Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva
Por isso, é usual analisar o comportamento das funções de custo
quando n é bastante grande.
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 1 / 23 Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 2 / 23
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 3 / 23 Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 4 / 23
Comportamente Assintótico Comportamento Assintótico
Influência do aumento de velocidade dos computadores no tamanho x Se f (n) é a função de complexidade de um algoritmo A
do problema
O comportamento assintótico de f (n) representa o limite do
Função de custo Computador Atual (C) Computador 100C Computador 1000C comportamento do custo (complexidade) de A quando n cresce.
n x 100x 1000x
A análise de um algoritmo (função de complexidade)
n2 x 10x 31.6x
Geralmente considera apenas algumas operações elementares ou
n3 x 4, 6x 10x mesmo uma operação elementar (e.g., o número de comparações).
2n x x + 6, 6 x + 10
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 5 / 23 Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 6 / 23
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 7 / 23 Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 8 / 23
Notação O Notação O
Definição
O(g (n)) = { f (n): existem constantes positivas c e n0 tais que
Knuth criou a notação O (O grande) para expressar que g(n) 0 ≤ f (n) ≤ cg(n), para todo n ≥ n0 }.
domina assintoticamente f (n), escreve-se f (n) = O(g(n)) e lê-se:
"f (n) é da ordem no máximo g(n)". Informalmente, dizemos que, se f (n) ∈ O(g(n)), então f (n) cresce no
máximo tão rapidamente quanto g(n).
Para que serve isto para o bacharel em Sistemas de Informação?
Muitas vezes calcular a função de complexidade g(n) de um
algoritmo A é complicado.
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 9 / 23 Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 10 / 23
Notação O Notação Ω
Definição
Definição Ω(g (n)) = { f (n): existem constantes positivas c e n0 tais que
O(g (n)) = { f (n): existem constantes positivas c e n0 tais que 0 ≤ cg(n) ≤ f (n), para todo n ≥ n0 }.
0 ≤ f (n) ≤ cg(n), para todo n ≥ n0 }.
Informalmente, dizemos que, se f (n) ∈ Ω(g(n)), então f (n) cresce no
Informalmente, dizemos que, se f (n) ∈ O(g(n)), então f (n) cresce no mínimo tão lentamente quanto g(n).
máximo tão rapidamente quanto g(n).
Exemplo:
3 2
2n − 2n ∈ O(n2 )
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 11 / 23 Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 12 / 23
Notação Ω Notação Θ
Definição
Definição Θ(g (n)) = { f (n): existem constantes positivas c1 , c2 e n0 tais que
Ω(g (n)) = { f (n): existem constantes positivas c e n0 tais que 0 ≤ c1 g(n) ≤ f (n) ≤ c2 g(n), para todo n ≥ n0 }.
0 ≤ cg(n) ≤ f (n), para todo n ≥ n0 }.
Informalmente, dizemos que, se f (n) ∈ Θ(g(n)), então f (n) cresce tão
Informalmente, dizemos que, se f (n) ∈ Ω(g(n)), então f (n) cresce no rapidamente quanto g(n).
mínimo tão lentamente quanto g(n).
Exemplo:
3 2
2n − 2n ∈ Ω(n2 )
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 13 / 23 Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 14 / 23
Notação Θ Notação o
Definição Definição
Θ(g (n)) = { f (n): existem constantes positivas c1 , c2 e n0 tais que o(g (n)) = { f (n): para toda constante positiva c, existe uma constante
0 ≤ c1 g(n) ≤ f (n) ≤ c2 g(n), para todo n ≥ n0 }. n0 > 0 tal que 0 ≤ f (n) < cg(n), para todo n ≥ n0 }.
Informalmente, dizemos que, se f (n) ∈ Θ(g(n)), então f (n) cresce tão Informalmente, dizemos que, se f (n) ∈ o(g(n)), então f (n) cresce
rapidamente quanto g(n). mais lentamente que g(n).
Exemplo: Exemplo:
3 2
2n − 2n ∈ Θ(n2 ) 1000n2 ∈ o(n3 )
Valores de c1 , c2 e n0 que satisfazem a definição são Para todo valor de c, um n0 que satisfaz a definição é:
c1 = 12 , c2 = 3
2 e n0 = 2 no = d 1000
c e+1
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 15 / 23 Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 16 / 23
Notação ω Definições equivalentes
Definição
ω(g (n)) = { f (n): para toda constante positiva c, existe uma constante f (n)
f (n) ∈ o(g(n)) se lim =0
n0 > 0 tal que 0 ≤ cg(n) < f (n), para todo n ≥ n0 }. n→∞ g(n)
f (n)
Informalmente, dizemos que, se f (n) ∈ ω(g(n)), então f (n) cresce f (n) ∈ O(g(n)) se lim <∞
n→∞ g(n)
mais rapidamente que g(n). f (n)
f (n) ∈ Θ(g(n)) se 0 < lim <∞
n→∞ g(n)
Exemplo:
f (n)
1 2 ∈ ω(n) f (n) ∈ Ω(g(n)) se lim >0
1000 n n→∞ g(n)
f (n)
Para todo valor de c, um n0 que satisfaz a definição é: f (n) ∈ ω(g(n)) se lim =∞
n→∞ g(n)
no = d1000ce + 1
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 17 / 23 Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 18 / 23
Reflexividade:
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 19 / 23 Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 20 / 23
Operações com a notação O Exercícios
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 21 / 23 Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 22 / 23
Referências