Universidade Federal de Alfenas
Projeto e Análise de Algoritmos
Aula 07 – Notações θ, Ω, ω, ο
[email protected]Última aula
Notação O
•
Uma função f(n) domina assintoticamente outra função
g(n)
se existem duas constantes positivas
Última aula
Notação O
•
Uma função f(n) domina assintoticamente outra função
g(n) se existem duas constantes positivas
▫ c e n0•
tais que, para qualquer
Última aula
Notação O
•
Uma função f(n) domina assintoticamente outra função
g(n) se existem duas constantes positivas
▫ c e n0•
tais que, para qualquer
▫ n >= n0,
•
temos
Outras notações
•
Assim como
a notação O fornece uma maneira
assintótica de dizer que uma função é “menor ou igual
a”outra
, existem outras notação que fornecem outras
conclusões sobre a complexidade de algoritmos;
Outras notações
•
Assim como
a notação O fornece uma maneira
assintótica de dizer que uma função é “menor ou igual
a”outra
, existem outras notação que fornecem outras
conclusões sobre a complexidade de algoritmos;
Outras notações
•
Assim como
a notação O fornece uma maneira
assintótica de dizer que uma função é “menor ou igual
a”outra
, existem outras notação que fornecem outras
conclusões sobre a complexidade de algoritmos;
▫
Θ
▫
Ω
Outras notações
•
Assim como
a notação O fornece uma maneira
assintótica de dizer que uma função é “menor ou igual
a”outra
, existem outras notação que fornecem outras
conclusões sobre a complexidade de algoritmos;
▫
Θ
▫
Ω
▫
ω
Outras notações
•
Assim como
a notação O fornece uma maneira
assintótica de dizer que uma função é “menor ou igual
a”outra
, existem outras notação que fornecem outras
conclusões sobre a complexidade de algoritmos;
▫
Θ
▫
Ω
▫
ω
▫
ο
Notação Ω
•
A notação Ω é bem parecida com a notação O;
▫ „O‟ define um limite assintótico superior, e;
▫
Ω define um limite assintótico inferior.
Notação Ω
•
A notação Ω é bem parecida com a notação O;
▫ „O‟ define um limite assintótico superior, e;
▫
Ω define um limite assintótico inferior.
•
Exemplos:
4(
3)
n
n
Notação Ω
•
A notação Ω é bem parecida com a notação O;
▫ „O‟ define um limite assintótico superior, e;
▫
Ω define um limite assintótico inferior.
•
Exemplos:
4(
3)
n
n
)
1
(
n
Notação Ω
•
A notação Ω é bem parecida com a notação O;
▫ „O‟ define um limite assintótico superior, e;
▫
Ω define um limite assintótico inferior.
•
Exemplos:
4(
3)
n
n
)
1
(
n
))
(log(
)
log(
3
n
n
Notação Ω
•
A notação Ω é bem parecida com a notação O;
▫ „O‟ define um limite assintótico superior, e;
▫
Ω define um limite assintótico inferior.
•
Exemplos:
4(
3)
n
n
)
1
(
n
))
(log(
)
log(
3
n
n
)
1
(
1
Notação Ω
•
A notação Ω é bem parecida com a notação O;
▫ „O‟ define um limite assintótico superior, e;
▫
Ω define um limite assintótico inferior.
•
Exemplos:
4(
3)
n
n
)
1
(
n
))
(log(
)
log(
3
n
n
)
1
(
1
)
2
(
!
nn
Notação Ω
}
n
n
f(n)
g(n)
c
|
n
e
c
{f(n):
(g(n))
0 00
0
Notação Ω
Notação Ω
•
Na prática a notação Ω não é vista sozinha em análises
de algoritmos;
Notação Ω
•
Na prática a notação Ω não é vista sozinha em análises
de algoritmos;
Notação Ω
•
Na prática a notação Ω não é vista sozinha em análises
de algoritmos;
▫ Pelo motivo de não interessar para a análise de algoritmos;
▫ A notação O possui sua importância, pois o programador conclui que seu algoritmo é no máximo tão complexo a uma função.
Notação Ω
•
Na prática a notação Ω não é vista sozinha em análises
de algoritmos;
▫ Pelo motivo de não interessar para a análise de algoritmos;
▫ A notação O possui sua importância, pois o programador conclui que seu algoritmo é no máximo tão complexo a uma função.
▫ Mas no mínimo tão complexo, como a notação Ω descreve, não é importante para conclusões práticas sobre algoritmos.
Notação Ω
•
Na prática a notação Ω não é vista sozinha em análises
de algoritmos;
▫ Pelo motivo de não interessar para a análise de algoritmos;
▫ A notação O possui sua importância, pois o programador conclui que seu algoritmo é no máximo tão complexo a uma função.
▫ Mas no mínimo tão complexo, como a notação Ω descreve, não é importante para conclusões práticas sobre algoritmos.
•
Ω vem na maioria das vezes acompanhada a notação Θ;
• Conhecida também como “limite firme” ou “limite assintoticamente restrito”.
• Conhecida também como “limite firme” ou “limite assintoticamente restrito”.
• A notação O, apesar de fornecer informações sobre a complexidade do algoritmo, nem sempre nos revela algo importante;
• Conhecida também como “limite firme” ou “limite assintoticamente restrito”.
• A notação O, apesar de fornecer informações sobre a complexidade do algoritmo, nem sempre nos revela algo importante;
• Não faz sentido, para algum algoritmo, dizer que suas complexidade é por exemplo O(n!).
▫ Ou faz?
• Conhecida também como “limite firme” ou “limite assintoticamente restrito”.
• A notação O, apesar de fornecer informações sobre a complexidade do algoritmo, nem sempre nos revela algo importante;
• Não faz sentido, para algum algoritmo, dizer que suas complexidade é por exemplo O(n!). Ou faz?
• Exemplos da falta de precisão de O:
Notação θ
)
!
(
)
2
(
)
(
)
(
)
(
)
(
1000 5 4 3n
O
n
O
n
n
O
n
n
O
n
n
O
n
n
O
n
n
Notação θ
• Uma função f(n) pertence ao conjunto θ(g(n)) se existem constantes positivas n0, c1 e c2
Notação θ
}
n
n
g(n)
c
f(n)
g(n)
c
|
n
e
,c
c
{f(n):
Θ(g(n))
0 2 1 0 2 10
0
• Uma função f(n) pertence ao conjunto θ(g(n)) se existem
constantes positivas n0, c1 e c2 tais que ela possa ser “imprensada” entre
c1.g(n) e c2.g(n),
para um valor de n suficientemente grande.
• Exemplo:
• Para isso, devemos definir constantes c1, c2 e n0 tais que:
• Encontre constantes que satisfaça as duas desigualdades...
Notação θ
)
Θ(n
n
n
2 23
2
2 2 2 2 13
2
1
n
c
n
n
n
c
}
n
n
g(n)
c
f(n)
g(n)
c
|
n
e
,c
c
{f(n):
Θ(g(n))
0 2 1 0 2 10
0
• Exemplo de constantes:
Notação θ
2 13
2
1
c
n
c
2 2 2 2 13
2
1
n
c
n
n
n
c
Dividindo por n2 ...• Exemplo de constantes:
• Portanto, se existem tais constantes
Notação θ
7
2
1
14
1
0 2 1
n
c
c
)
Θ(n
n
n
2 23
2
2 13
2
1
c
n
c
2 2 2 2 13
2
1
n
c
n
n
n
c
Dividindo por n2 ...Notação θ
))
(
(
)
(
))
(
(
)
(
)
(
)
(
x
g
x
f
e
x
g
O
x
f
sse
)
x
Θ(g
x
f
• Observação:• O limite assintótico superior fornecido pela notação O (ó-zão) pode:
• O limite assintótico superior fornecido pela notação O (ó-zão) pode:
▫ Ser assintoticamente restrito;
• O limite assintótico superior fornecido pela notação O (ó-zão) pode:
▫ Ser assintoticamente restrito;
▫ Não ser assintoticamente restrito;
• O limite assintótico superior fornecido pela notação O (ó-zão) pode:
▫ Ser assintoticamente restrito;
▫ Não ser assintoticamente restrito;
• Exemplos:
▫ Assintoticamente restrito:
▫ Não assintoticamente restrito:
Notação ο
)
(
2
n
2
O
n
2)
(
)
log(
)
(
2
2 nc
O
n
n
O
n
Notação ο
• Todas as funções de O (ó-zão) que não definem um limite assintoticamente restrito pertencem a „‟o” (ó-zinho)
Notação ο
))
(
(
)
(
))
(
(
)
(
))
(
(
)
(
n
g
n
f
entao
n
g
n
f
e
n
g
O
n
f
se
• Todas as funções de O (ó-zão) que não definem um limite assintoticamente restrito pertencem a „‟o” (ó-zinho)
Notação ο
)
(
)
log(
)
(
2
2n
n
n
n
))
(
(
)
(
))
(
(
)
(
))
(
(
)
(
n
g
n
f
entao
n
g
n
f
e
n
g
O
n
f
se
• Todas as funções de O (ó-zão) que não definem um limite assintoticamente restrito pertencem a „‟o” (ó-zinho)
• Comparativo com a notação O;
Notação ο
}
n
n
g(n)
c
n
f
|
n
c
{f(n):
(g(n))
0 0)
(
0
0
,
0
0
c
constantes
as
todas
para
válido
é
)
(
)
(
0
limite
o
)),
(
(
)
(
0
c
constante
alguma
para
válido
mantém
se
)
(
)
(
0
limite
o
)),
(
(
)
(
n
cg
n
f
n
g
n
f
n
cg
n
f
n
g
O
n
f
Não é <=, é somente <Notação ο
0
)
(
)
(
lim
então
Se
g
n
n
f
ο(g(n))
f(n)
n • Facilitando o entendimento...• O limite assintótico inferior fornecido pela notação Ω (omega-zão) pode:
▫ Ser assintoticamente restrito;
▫ Não ser assintoticamente restrito;
• Exemplos:
▫ Assintoticamente restrito:
▫ Não assintoticamente restrito:
Notação ω
)
(
2
n
2
n
2)
(
2
n
3
n
Notação ω
))
(log(
2
)
1
(
2
2n
n
n
))
(
(
)
(
))
(
(
)
(
))
(
(
)
(
n
g
n
f
entao
n
g
n
f
e
n
g
O
n
f
se
• Todas as funções de Ω (omegazão) que não definem um limite assintoticamente restrito pertencem a ω
Notação ω
}
n
n
n
f
g(n)
c
|
n
c
{f(n):
(g(n))
0 0)
(
0
0
,
0
Não é <=, é somente <Notação ω
(
)
)
(
lim
então
Se
n
g
n
f
(g(n))
f(n)
n
• Facilitando o entendimento...Exercícios – V ou F
))
(
(
)
(
))
(
(
)
(
n
g
n
sse
g
n
f
n
f
))
(
(
)
(
))
(
(
)
(
n
g
n
entao
f
n
g
n
f
se
(a) (b) (c) (d) (e) (f) (g) (h) (i)))
(
(
)
(
))
(
(
)
(
n
g
n
entao
f
n
g
n
f
se
))
(
(
)
(
))
(
(
)
(
n
g
n
entao
f
n
g
n
f
se
))
(
(
)
(
))
(
(
)
(
n
O
g
n
entao
f
n
g
n
f
se
))
(
(
)
(
))
(
(
)
(
n
g
n
entao
f
n
g
n
f
se
))
(
(
)
(
))
(
(
)
(
n
g
n
entao
f
n
g
n
f
se
))
(
(
)
(
))
(
(
)
(
n
g
n
entao
f
n
g
n
f
se
))
(
(
)
(
))
(
(
)
(
n
g
n
entao
f
n
g
n
f
se
Exercício para próxima aula
• Descreva e implemente 3 algoritmos para a seguinte espiral:
• Eles devem ter respectivamente as seguintes complexidades:
▫ Θ(n);
▫ Θ(sqrt(n)); ▫ Θ(1).
Leitura para próxima aula
•
Livro: Algoritmos (Cormen)
▫ 4 Recorrências;
4.1 O método de substituição;
4.2 O método de árvore de recursão
Bibliografia
• CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; (2002).
Algoritmos – Teoria e Prática. Tradução da 2ª edição americana. Rio de Janeiro. Editora Campus.
• TAMASSIA, ROBERTO; GOODRICH, MICHAEL T. (2004). Projeto