5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
5COP096 Teoria da ComputaçãoTeoria da Computação
Aula 3
Prof. Dr. Sylvio Barbon Junior
1Sylvio Barbon Jr – [email protected]
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Sumário
1) Exercícios Medida de Tempo de Execução.
2) Comportamento Assintótico de Funções.
3) Exercícios sobre Comportamento Assintótico de Funções.
2Sylvio Barbon Jr – [email protected]
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Medida de Tempo de Execução1- Calcule a função de tempo de execução do seguinte código:
(1) menor= i;(2) for(j = i+1; j < n; j++)(3) if (A[j] < A[menor])(4) menor = j;(5)
3Sylvio Barbon Jr – [email protected]
2 – Obtenha o T(n) do seguinte algoritmo:
(1) for(int i=0; i<n-1; i++)(2) int min=1;(3) for(int j=i+1; j<n; j++)(4) if(v[j]<v[min])(5) min = j;(6) int x = v[min];(7) v[min] = v[i];(8) v[i] = x;(9)
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Medida de Tempo de Execução3- Qual a função de tempo de execução do seguinte código:
(1) void pesquisa(n)(2) if(n<=1)(3) n+1;(4) else (5) pesquisa(n/3)(6)
4Sylvio Barbon Jr – [email protected]
(6) (7)
4- Descreva a função de tempo de execução do seguinte código:(1) float RaizQ(int x, float x0, float e)(2) if(fabs(x0*x0-x)<=e)(3) return x0;(4) else(5) RaizQ(x, ((x0*x0)+x)/(2*x0) , e);(6) (7)
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de Funções-O custo para obter uma solução para um dado problema aumenta com o tamanho n do problema;
-O parâmetro n fornece uma medida da dificuldade para se resolver o problema;
-A escolha de um algoritmo se torna relevante quando o problema tem grandes valores para n, para isso estuda-se o comportamento assintótico das funções de custo.
5Sylvio Barbon Jr – [email protected]
para n, para isso estuda-se o comportamento assintótico das funções de custo.
-O comportamento assintótico de f(n) representa o limite do comportamento, quando n cresce.
Uma função f(n) domina assintoticamente outra função g(n) se existem duas constantes positivas c e m tais que, para n ≥ m, temos |g(n) | ≤ c|f(n)|
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de Funções
DEFINIÇÃO DA NOTAÇÃO ”O” (BIG Oh)Uma função g(n) é O(f(n)) se existirem duas constantes c e m tais que g(n) ≤ c
f(n), para todo n ≥ m
6Sylvio Barbon Jr – [email protected]
Dominação Assintótica de f(n) sobre g(n)
ou
g(n) = O(f(n))
Lê –se: g(n) é da ordem máxima f(n)
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesExemplo: Seja g(n) = (n+1)². Logo g(n) é O(n²), quando m =1 e c=4, isso porque (n+1)² ≤ 4n² para n ≥ 1.
Exemplo: A função g(n) = 3n³+2n²+n é O(n³), para confirmar tal afirmação basta mostrar que 3n³+2n²+n ≤ 6n³, para n ≥ 0. A função g(n) = 3n³+2n²+n é também O(n4), entretanto essa afirmação é fraca, quando comparada a g(n) ser O(n³).
7Sylvio Barbon Jr – [email protected]
Definições:
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de Funções
Definição da notação “Ω” (Big Omega) Uma função g(n) é Ω(f(n)) se existirem duas constantes c e m tais que g(n) ≥ c f(n), para
todo n ≥ m.
8Sylvio Barbon Jr – [email protected]
Exemplo: Para mostrar que g(n) = 3n³+2n² éΩ(n³), basta fazer c = 1, e então 3n³+2n² ≥ n³ para n ≥
0.
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de Funções
Definição da notação “Θ” (Big Theta) Uma função g(n) é Θ(f(n)) se existirem duas constantes positivas c1, c2 e m tais que 0 ≤
c1f(n) ≤ g(n) ≤ c2f(n), para todo n ≥ m.
9Sylvio Barbon Jr – [email protected]
Exemplo: Para mostrar que g(n) = n²/3 - 2n éΘ(n²), basta fazer c1, c2 e m
tais que:
C1n² ≤ n²/3 - 2n ≤ c2n²
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de Funções-O limite assintótico superior definido pela notação O pode ser assintoticamente firme
(tight) ou não.
Assintóticamente FIRME2n² = O(n²)
10Sylvio Barbon Jr – [email protected]
2n² = O(n²)
Não é Assintóticamente FIRME2n = O(n²)
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de Funções
Definição da notação “o” (Little oh) Uma função g(n) é o(f(n)) se existirem duas constantes c > 0 tais que 0 ≤ g(n) < c
f(n), para todo n ≥ m
Exemplo: 2n = o(n²), mas 2n² ≠ o(n²)
11Sylvio Barbon Jr – [email protected]
Definição da notação “ω” (Little omega) Uma função g(n) é ωωωω(f(n)) se existirem duas constantes c > 0 tais que 0 ≤ c f(n) <
g(n), para todo n ≥ m
Exemplo: n²/2 = ω(n), mas n²/2 ≠ ω(n²)
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de Funções
12Sylvio Barbon Jr – [email protected]
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de comportamento Assintótico
Se f é a função de complexidade para o algoritmo F, então O(f) é considerada a complexidade assintótica ou o comportamento assintótico do algoritmo F.
Se g é a função de complexidade para o algoritmo G, então O(g) é considerada a complexidade assintótica ou o comportamento assintótico do algoritmo G.
13Sylvio Barbon Jr – [email protected]
a complexidade assintótica ou o comportamento assintótico do algoritmo G.
f(n) = 3g(n)
F leva 3x o tempo de G,
Porém são de mesma classeO(g(n)) = O(f(n))
* Ou seja, nem sempre a complexidade assintótica é o melhor fator de
comparação entre algoritmos.
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de comportamento Assintótico
Considere o problema f(n) = O(n) e g(n) = O(n²), com f(n) = 100n e g(n) = 2n², qual dos dois algoritmos é o melhor (menor complexidade)?
-Depende do tamanho do problema!
14Sylvio Barbon Jr – [email protected]
- Para problemas n < 50, n² é superior! Ou seja, para pequenas entradas o tempo O(n²) é melhor!
- Caso o n cresça, o ideal seria o problema de classe O(n).
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de Comportamento Assintótico
15Sylvio Barbon Jr – [email protected]
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de Comportamento Assintótico
1) f(n) = O(1): Complexidade Constante, independente do tamanho de n, o algoritmo é executado um número fixo de vezes. Exemplos, comparação de números binários, verificar se o topo de uma pilha tem um elemento negativo, verificar se um número binário é par ou ímpar.
16Sylvio Barbon Jr – [email protected]
2) f(n) = O(log n): Complexidade Logarítmica, característica de algoritmos que transformam o problema em menores. Quando n é 1000 e a base do logaritmo é 2, temos log2 n ≈ 10, quando n é 1.000.000, log2 n ≈ 20. Exemplo, pesquisa binária.
3) f(n) = O(n): Complexidade Linear, um pequeno trabalho é realizado sobre cada elemento da entrada. Cada vez que n dobra, o tempo de execução também dobra. Exemplo, percorrer um vetor.
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de Comportamento Assintótico
4) f(n) = O(nlogn): Essa complexidade ocorre geralmente quando o problema é quebrado em menores, resolvendo cada um independentemente, ao final todos são acumulados. Quando n é 1.000.000, nlog2n ≈ 20.000.000, quando n é 2.000.000, nlog2n ≈ 42.000.000, pouco mais que o dobro. Exemplo algoritmos “dividir e conquistar”.
17Sylvio Barbon Jr – [email protected]
dobro. Exemplo algoritmos “dividir e conquistar”.
5) f(n) = O(n²): Complexidade Quadrática, quando itens são processados aos pares, como um laço dentro de outro. Esses algoritmos são úteis para resolver problemas pequenos. Exemplo, varredura de matriz.
6) f(n) = O(n³): Complexidade Cúbica, úteis para resolver problemas pequenos. Exemplo, multiplicação de matrizes.
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de Comportamento Assintótico
18Sylvio Barbon Jr – [email protected]
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de Comportamento Assintótico
19Sylvio Barbon Jr – [email protected]
f(n) = O(n) f(n) = O(n²) f(n) = O(n³)
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de Comportamento Assintótico
20Sylvio Barbon Jr – [email protected]
f(n) = O(n²)
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de Comportamento Assintótico
21Sylvio Barbon Jr – [email protected]
f(n) = O(nLogn) e f(n) = O(n³)
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de Comportamento Assintótico
7) f(n) = O(2n): Complexidade Exponencial, algoritmos dessa complexidade não são praticamente viáveis. Exemplo, resolução do problema do caixeiro viajante com programação dinâmica.
8) f(n) = O(n!): Complexidade Fatorial, algoritmos desta complexidade são, na
22Sylvio Barbon Jr – [email protected]
8) f(n) = O(n!): Complexidade Fatorial, algoritmos desta complexidade são, na maioria dos casos, inviáveis. Exemplo, algoritmos de força bruta.
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de Comportamento Assintótico
Considere o problema f(n) = 2n e g(n) = n5 + 20n, qual a complexidade e qual o cenário ideal para cada problema.
f(n) é O(2n) – Complexidade Exponencial, ideal para n < 23g(n)é O(n5) – Complexidade n5 , ideal para n ≥ 23
23Sylvio Barbon Jr – [email protected]
g(n)é O(n5) – Complexidade n5 , ideal para n ≥ 23n 2^n n^5+ 20n
1 2 21
2 4 72
3 8 303
5 32 3225
10 1024 100200
15 32768 759675
20 1048576 3200400
21 2097152 4084521
22 4194304 5154072
23 8388608 6436803
25 33554432 9766125-5000000
0
5000000
10000000
15000000
20000000
25000000
30000000
35000000
40000000
0 5 10 15 20 25 30
2^n
n^5+ 20n
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Comportamento Assintótico de FunçõesClasses de Comportamento Assintótico
1) Considere os algoritmos do inicio da aula e descreva quais são as respectivas complexidades.
2) Sejam duas funções não negativas f(n) e g(n). Diz-se que f(n) = Θ(g(n)) se f(n) = O(g(n)) e g(n) = O(f(n)). Mostre que max(f(n), g(n)) = Θ(f(n)+g(n)).
24Sylvio Barbon Jr – [email protected]
f(n) = O(g(n)) e g(n) = O(f(n)). Mostre que max(f(n), g(n)) = Θ(f(n)+g(n)).
3) Considere os algoritmos A e B com funções de complexidade a(n)=n²- n +
549 e b(n) = 49n + 49, respectivamente. Quais os valores de n pertencentes ao conjunto dos números naturais para os quais A leva menos tempo para executar do que B.
4) Comprove que 2n+1 = O(2n)
5COP096 – Teoria da ComputaçãoAula 3 – Comportamento Assintótico
Referências
Ziviani, Nivio. Projeto de algoritmos: com implementações em Java e C. Thomson Learning, 2007.
Leiserson, Charles E., Ronald L. Rivest, and Clifford Stein. Introduction to algorithms. Ed. Thomas H. Cormen. The MIT press, 2001.
Top Related