UNIVERSIDADE DO ESTADO DO AMAZONAS ESCOLA SUPERIOR DE TECNOLOGIA NÚCLEO DE COMPUTAÇÃO - NUCOMP
Projeto e Análise de Algoritmos Notação assintótica e classes básicas de eficiência
Prof. Flávio José Mendes Coelho
[email protected]
Notação Assintótica Sejam C (n) e C (n) os custos de eficiência dos algoritmos A e B. A
B
Para valores pequenos de n os custos não diferem muito. Então, como saber quem é mais eficiente, A ou B?
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
2
Notação Assintótica Estuda-se o comportamento de C (n) quando n assum assumee valo valores res grande grandess (que (que tal n = 10100?), isto é, seu comportamento assintótico. Para simplificar, comparar e classificar C (n) e C (n) assintoticamente: Notação O (O grande - ômicron), Notação ! (Ômega grande), e Notação (Theta grande) A
B
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
3
O definição
= {t (n): existem as constantes positivas c e n0 tais que 0 # t (n) # c.g (n), para todo n $ n0}.
O( g (n))
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
4
O definição
Diz-se que g (n) domina assintoticamente t (n), e que g (n) é um limite assintótico superior para t (n).
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
5
O interpretação
Se t (n) é o custo da eficiência de tempo de um algoritmo e t (n) % O( g (n)), então O( g (n)) é a sua complexidade de tempo.
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
6
O interpretação
Se O( g (n)) é a complexidade de tempo de um algoritmo, então o algoritmo não consome mais tempo do que c.g (n).
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
7
O interpretação
Utiliza-se O( g (n)).
t (n) = O( g (n)) em
lugar de t (n) %
Se T (n) = O(n2), então existem constantes positivas c e n0 tais que para n $ n0 temse T (n) # c.n2. Se T (n) = 3n3 + 2n2 + n = O(n3), pois para c = 6 e n0 = 0, tem-se 3n3 + 2n2 + n # 6n3. UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
8
O interpretação
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
9
O interpretação
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
10
O interpretação
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
11
O interpretação
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
12
O interpretação
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
13
O exemplos T (n) = 3n3 + 2n2 + n = O(n4), mas afirmar que T (n) = O(n3). T (n) = (n + 1)2 = O(n2), pois tem-se (n + 1)2 # 4n2.
é mais forte
para c = 4 e n0 = 1,
T (n) = 100n + 5 = O(n2), pois 0, tem-se 100n + 5 # n2.
para c = 1 e n0 =
T (n) = !n(n-1) = O(n2). UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
14
Operações com O f = O( f ) c.O( f ) = O( f ), onde c é uma constante O( f ) + O( f ) = O( f ) O(O( f )) = O( f ) O( f ) + O( g ) = O(max( f , g )) O( f ).O( g ) = O( f . g ) f .O( g ) = O( f . g ) UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
15
Operações com O Exemplos
Suponha três trechos de um algoritmo cujos tempos de execução são O(n), O(n2) e O(nlog n). O tempo de execução dos três trechos é O(max(n2, n, nlog n)), que é O(n2). [log n + k + O(1/n)].[n + O( & n)] = nlog n + kn + O( & n.log n). UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
16
definição ( g (n)) =
{t (n): existem as constantes positivas c e n0 tais que 0 # c.g (n) # t (n), para todo n $ n0}.
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
17
interpretação
Diz-se que g (n) domina assintoticamente t (n), e que g (n) é um limite assintótico inferior para t (n).
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
18
interpretação
Se t (n) é o tempo de execução de um algoritmo e t (n) % !( g (n)), então t (n) não roda mais rápido do que c.g (n).
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
19
interpretação
Utiliza-se !( g (n)).
t (n) = !( g (n)) em
lugar de t (n) %
Se T (n) = !(n2), então existem constantes positivas c e n0 tais que para n $ n0 temse T (n) $ cn2.
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
20
exemplos T (n) = 3n3 + 2n2 é !(n3) pois, 0, tem-se 3n3 + 2n2 ! n3.
para c = 1 e n !
T(n) = n4 - 10 é "(n4), pois tem-se n4 - 10 ! !n4.
para
c = ! e n ! 3,
T(n) = n4 - 10 é "(n3), pois tem-se n4 - 10 ! n3.
para
c = 1 e n ! 3,
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
21
definição ( g (n)) =
{t (n): existem constantes positivas c1, c2 e n0 tais que 0 # c1.g (n) # t (n) # c2.g (n), para todo n $ n0}.
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
22
definição
Diz-se que g (n) é igual t (n) dentro de um fator constante, e que g (n) é um limite assintótico estrito (ou firme) para t (n).
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
23
interpretação
Se t (n) é o custo da eficiência de tempo de um algoritmo e t (n) % "( g (n)), então "( g (n)) é a sua complexidade de tempo.
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
24
interpretação
Se "( g (n)) é a complexidade de tempo de um algoritmo, então o algoritmo tem tempo equivalente a g (n).
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
25
interpretação
Utiliza-se "( g (n)).
t (n) = "( g (n)) em
lugar de t (n) %
Se T (n) = "(n2), então existem constantes positivas c1, c2 e n0 tais que para n $ n0 tem-se c1.n2 # T (n) # c2.n2.
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
26
interpretação
Problema. A contagem de custo de um algoritmo no pior caso é T (n) = n2 + 2n. Qual o seu limite assintótico estrito? Resposta: T (n) = "(n2), pois n2 # n2 + 2n # 2n2, para n $ 2.
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
27
Classes de eficiência assintóticas Sejam O( f (n)) e O( g (n)) as complexidades de tempo dos algoritmos F e G. Se f (n) = O( g (n)) e g (n) = O( f (n)) , então f (n) e g (n) dominam-se assintoticamente, e F e G não podem ser comparados pois diferem por uma constante. f (n) = 3 g (n). Logo, O( f (n)) = O( g (n)). Logo, pertencem à mesma classe de eficiência. UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
28
Classes de eficiência assintóticas Algoritmos podem ser comparados, comparando-se suas funções de complexidade, abstraindo-se das constantes de proporcionalidade. Porém, as constantes de proporcionalidade podem alterar esta consideração se forem muito grandes.
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
29
Classes de eficiência... Rápido T (n) = "(1) T (n) = "(log n) T (n) = "(n) T (n) = "(nlog n) T (n) = "(n2) T (n) = "(n3) T (n) = "(2n) T (n) = "(n!) Lento
constante logarítmica linear superlinear quadrática cúbica exponencial exponencial “
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
c o m t e p l m e x p d i o a .. d . e d e ”
30
Algoritmos polinomiais e exponenciais T (n) T (n) T (n) T (n) T (n) T (n) T (n) T (n)
= "(1) = "(log n) = "(n) = "(nlog n) = "(n2) = "(n3) = "(2n) = "(n!)
Algoritmo polinomial O( p(n)), p(n) é um
polinômio
Algoritmo exponencial complexidade O(c n); c > 1
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
31
Algoritmos polinomiais e exponenciais • A distinção entre os dois tipos vale assintoticamente
• Algoritmos polinomiais resultam de um entendimento profundo da estrutura do problema • Algoritmos exponenciais são geralmente simples variações de pesquisa exaustiva (força bruta) UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
32
Problemas tratáveis e intratáveis Problema intratável não existe um algoritmo polinomial para resolvê-lo Problema bem resolvido existe um algoritmo polinomial para resolvê-lo
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
33
Exemplo de problema intratável Um caixeiro viajante quer visitar n cidades de tal forma que sua viagem inicie e termine em uma mesma cidade, e cada cidade seja visitada uma única vez (sempre há uma estrada entre duas cidades). O problema é encontrar a menor rota para a viagem. UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
34
Exemplo de problema intratável
é uma solução com percurso total =24 Algoritmo exponencial 1.gere todas as rotas; 2.escolha e menor delas.
UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
35
Exemplo de problema intratável • Há (n - 1)! rotas possíveis. • Distância total percorrida em cada rota envolve n adições, logo o número total de adições é n! • No exemplo, anterior teríamos 24 adições. Suponha agora 50 cidades: o número de adições seria 50! ' 1064. • Em um computador executando 109 adições/ s, o tempo total para resolver o problema com 50 cidades seria maior do que 1045 séculos só para executar as adições. UEA/ EST – Projeto e Análise de Algoritmos – Prof. Flávio José M. Coelho
36