![Page 1: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/1.jpg)
Complexidade AssintóticaACH2002 - Introdução à Ciência da Computação II
Delano M. Beder
Escola de Artes, Ciências e Humanidades (EACH)Universidade de São Paulo
08/2008
Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 1 / 1
![Page 2: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/2.jpg)
Crescimento Assintótico de Funções
Custo da solução aumenta com o tamanho n do problemaO tamanho n fornece uma medida da dificuldade para resolver oproblema
Tempo necessário para resolver o problema aumenta quando ncresce
Exemplo: número de comparações para achar o maior elementode um vetor(array) ou para ordená-lo aumenta com o tamanho daentrada n.
Escolha do algoritmo não é um problema crítico quando n épequeno.
O problema é quando n cresce.
Por isso, é usual analisar o comportamento das funções de custoquando n é bastante grande.
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 2 / 1
![Page 3: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/3.jpg)
Comportamento Assintótico
Vamos comparar funções assintoticamente, ou seja, para valoresgrandes, desprezando constantes multiplicativas e termos demenor ordem.
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 3 / 1
![Page 4: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/4.jpg)
Comportamente Assintótico
1 milhão (106) de operações por segundo
Função de custo 10 20 30 40 50 60
n 0,00001s 0,00002s 0,00003s 0,00004s 0,00005s 0,00006s
n2 0,0001s 0,0004s 0,0009s 0,0016s 0,0025s 0,0036s
n3 0,001s 0,008s 0,027s 0,064s 0,125s 0,216s
n5 0,1s 3,2s 24,3s 1,7min 5,2min 12,96min
2n 0,001s 1,04s 17,9min 12,7dias 35,7 anos 366 séc.
3n 0,059s 58min 6,5anos 3855séc. 108séc. 1013séc.
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 4 / 1
![Page 5: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/5.jpg)
Comportamente Assintótico
Influência do aumento de velocidade dos computadores no tamanho xdo problema
Função de custo Computador Atual (C) Computador 100C Computador 1000C
n x 100x 1000x
n2 x 10x 31.6x
n3 x 4, 6x 10x
2n x x + 6, 6 x + 10
(Tabela 1.4 Página 18) Nívio Ziviani. Projeto de Algoritmos com implementações em C e Pascal.Editora Thomson, 2a. Edição, 2004.
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 5 / 1
![Page 6: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/6.jpg)
Comportamento Assintótico
Se f (n) é a função de complexidade de um algoritmo A
O comportamento assintótico de f (n) representa o limite docomportamento do custo (complexidade) de A quando n cresce.
A análise de um algoritmo (função de complexidade)
Geralmente considera apenas algumas operações elementares oumesmo uma operação elementar (e.g., o número de comparações).
A complexidade assintótica relata crescimento assintótico dasoperações elementares.
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 6 / 1
![Page 7: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/7.jpg)
Relacionamento assintótico
DefiniçãoUma função g(n) domina assintoticamente outra função f (n) seexistem duas constantes positivas c e m tais que, para n ≥ m, tem-se|f (n)| ≤ c|g(n)|.
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 7 / 1
![Page 8: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/8.jpg)
Relacionamento assintótico
Exemplo:
g(n) = n e f (n) = n2
|n| ≤ |n2| para todo n ∈ N.Para c = 1 e m = 0⇒ |g(n)| ≤ |f (n)|.Portanto, f (n) domina assintoticamente g(n).
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 8 / 1
![Page 9: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/9.jpg)
Notação O
Knuth criou a notação O (O grande) para expressar que g(n)domina assintoticamente f (n), escreve-se f (n) = O(g(n)) e lê-se:"f (n) é da ordem no máximo 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 umalgoritmo A é complicado.
É mais fácil determinar que f (n) é O(g(n)), isto é, queassintoticamente f (n) cresce no máximo como g(n).
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 9 / 1
![Page 10: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/10.jpg)
Notação O
DefiniçãoO(g (n)) = f (n): existem constantes positivas c e n0 tais que
0 ≤ f (n) ≤ cg(n), para todo n ≥ n0 .
Informalmente, dizemos que, se f (n) ∈ O(g(n)), então f (n) cresce nomáximo tão rapidamente quanto g(n).
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 10 / 1
![Page 11: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/11.jpg)
Notação O
DefiniçãoO(g (n)) = f (n): existem constantes positivas c e n0 tais que
0 ≤ f (n) ≤ cg(n), para todo n ≥ n0 .
Informalmente, dizemos que, se f (n) ∈ O(g(n)), então f (n) cresce nomáximo tão rapidamente quanto g(n).
Exemplo:32n2 − 2n ∈ O(n2)
Valores de c e n0 que satisfazem a definição são
c = 32 e n0 = 2
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 11 / 1
![Page 12: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/12.jpg)
Notação Ω
DefiniçãoΩ(g (n)) = f (n): existem constantes positivas c e n0 tais que
0 ≤ cg(n) ≤ f (n), para todo n ≥ n0 .
Informalmente, dizemos que, se f (n) ∈ Ω(g(n)), então f (n) cresce nomínimo tão lentamente quanto g(n).
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 12 / 1
![Page 13: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/13.jpg)
Notação Ω
DefiniçãoΩ(g (n)) = f (n): existem constantes positivas c e n0 tais que
0 ≤ cg(n) ≤ f (n), para todo n ≥ n0 .
Informalmente, dizemos que, se f (n) ∈ Ω(g(n)), então f (n) cresce nomínimo tão lentamente quanto g(n).
Exemplo:32n2 − 2n ∈ Ω(n2)
Valores de c e n0 que satisfazem a definição são
c = 12 e n0 = 2
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 13 / 1
![Page 14: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/14.jpg)
Notação Θ
DefiniçãoΘ(g (n)) = f (n): existem constantes positivas c1, c2 e n0 tais que
0 ≤ c1g(n) ≤ f (n) ≤ c2g(n), para todo n ≥ n0 .
Informalmente, dizemos que, se f (n) ∈ Θ(g(n)), então f (n) cresce tãorapidamente quanto g(n).
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 14 / 1
![Page 15: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/15.jpg)
Notação Θ
DefiniçãoΘ(g (n)) = f (n): existem constantes positivas c1, c2 e n0 tais que
0 ≤ c1g(n) ≤ f (n) ≤ c2g(n), para todo n ≥ n0 .
Informalmente, dizemos que, se f (n) ∈ Θ(g(n)), então f (n) cresce tãorapidamente quanto g(n).
Exemplo:32n2 − 2n ∈ Θ(n2)
Valores de c1, c2 e n0 que satisfazem a definição são
c1 = 12 , c2 = 3
2 e n0 = 2
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 15 / 1
![Page 16: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/16.jpg)
Notação o
Definiçãoo(g (n)) = f (n): para toda constante positiva c, existe uma constante
n0 > 0 tal que 0 ≤ f (n) < cg(n), para todo n ≥ n0 .
Informalmente, dizemos que, se f (n) ∈ o(g(n)), então f (n) crescemais lentamente que g(n).
Exemplo:
1000n2 ∈ o(n3)
Para todo valor de c, um n0 que satisfaz a definição é:
no = d1000c e+ 1
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 16 / 1
![Page 17: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/17.jpg)
Notação ω
Definiçãoω(g (n)) = f (n): para toda constante positiva c, existe uma constante
n0 > 0 tal que 0 ≤ cg(n) < f (n), para todo n ≥ n0 .
Informalmente, dizemos que, se f (n) ∈ ω(g(n)), então f (n) crescemais rapidamente que g(n).
Exemplo:1
1000n2 ∈ ω(n)
Para todo valor de c, um n0 que satisfaz a definição é:
no = d1000ce+ 1
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 17 / 1
![Page 18: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/18.jpg)
Definições equivalentes
f (n) ∈ o(g(n)) se limn→∞
f (n)
g(n)= 0
f (n) ∈ O(g(n)) se limn→∞
f (n)
g(n)<∞
f (n) ∈ Θ(g(n)) se 0 < limn→∞
f (n)
g(n)<∞
f (n) ∈ Ω(g(n)) se limn→∞
f (n)
g(n)> 0
f (n) ∈ ω(g(n)) se limn→∞
f (n)
g(n)=∞
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 18 / 1
Estas definições equivalentes não serão utilizadas como método de demonstração de relações assintóticas ao longo deste semestre, pois envolvem cálculos de limites que estão fora do contexto desta disciplina.
![Page 19: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/19.jpg)
Propriedades das Classes
Reflexividade:
f (n) ∈ O(f (n)).f (n) ∈ Ω(f (n)).f (n) ∈ Θ(f (n)).
Simetria:
f (n) ∈ Θ(g(n)) se, e somente se, g(n) ∈ Θ(f (n)).
Simetria Transposta:
f (n) ∈ O(g(n)) se, e somente se, g(n) ∈ Ω(f (n)).f (n) ∈ o(g(n)) se, e somente se, g(n) ∈ ω(f (n)).
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 19 / 1
![Page 20: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/20.jpg)
Propriedades das Classes
Transitividade:
Se f (n) ∈ O(g(n)) e g(n) ∈ O(h(n)), então f (n) ∈ O(h(n)).Se f (n) ∈ Ω(g(n)) e g(n) ∈ Ω(h(n)), então f (n) ∈ Ω(h(n)).Se f (n) ∈ Θ(g(n)) e g(n) ∈ Θ(h(n)), então f (n) ∈ Θ(h(n)).Se f (n) ∈ o(g(n)) e g(n) ∈ o(h(n)), então f (n) ∈ o(h(n)).Se f (n) ∈ ω(g(n)) e g(n) ∈ ω(h(n)), então f (n) ∈ ω(h(n)).
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 20 / 1
![Page 21: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/21.jpg)
Operações com a notação O
f (n) = O(f (n))c × f (n) = O(f (n)), c é uma constante
O(f (n)) + O(f (n)) = O(f (n))O(O(f (n))) = O(f (n))
O(f (n)) + O(g(n)) = O(max(f (n), g(n)))O(f (n))O(g(n)) = O(f (n)g(n)))
f (n)O(g(n)) = O(f (n)g(n)))
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 21 / 1
![Page 22: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/22.jpg)
Exercícios
Quais as relações de comparação assintótica (O, Ω, Θ) das funções:
f1(n) = 2π
f2(n) = 2n
f3(n) = n log nf4(n) = log nf5(n) = 100n2 + 150000nf6(n) = n + log nf7(n) = n2
f8(n) = n
f1 f2 f3 f4 f5 f6 f7 f8f1 Θf2 Θf3 Θf4 Θf5 Θf6 Θf7 Θf8 Θ
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 22 / 1
Exercício alternativo: ordene as funções acima da de menor valor (paravalores de n suficientemente altos) até a de maior valor. Entre cada para defunções indique a relação correta: o (o pequeno) ou Θ(teta).
![Page 23: ACH2002 - Introdução à Ciência da Computação II€¦ · 08/2008 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH](https://reader034.vdocuments.com.br/reader034/viewer/2022042919/5f62b50fc8c78d4440300639/html5/thumbnails/23.jpg)
Referências
[1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest &Clifford Stein. Algoritmos - Tradução da 2a. Edição Americana. EditoraCampus, 2002 (Capítulo 3).
[2] Michael T. Goodrich & Roberto Tamassia. Estruturas de Dados eAlgoritmos em Java. Editora Bookman, 4a. Ed. 2007 (Capítulo 4).
[3] Nívio Ziviani. Projeto de Algoritmos com implementações em C ePascal. Editora Thomson, 2a. Edição, 2004 (Seção 1.3).
Delano M. Beder (EACH - USP) Complexidade Assintótica ACH2002 23 / 1