Notação O grande aninhada


8

Digamos que eu tenho um gráfico |G|com arestas. Eu quero executar o BFS no que tem um tempo de execução de .|E|=O(V2)GO(V+E)

Parece natural escrever que o tempo de execução neste gráfico seria e, em seguida, simplificaria para .O(O(V2)+V)O(V2)

Existem armadilhas para usar esse atalho "remove-the-anested-O" (não apenas nesse caso, mas de maneira mais geral)?


4
Se você trabalhar com a definição de big-O, verá que Os aninhados são naturais e redundantes e que a regra de eliminar o O interno está correta.
Dave Clarke

Como V está em O (V ^ 2), acho que você poderia substituir O (V ^ 2) por V se não soubesse o que estava fazendo?
The Unfun Cat

3
Se você não sabe o que está fazendo, pode fazer coisas arbitrariamente erradas.
9338 Dave Clarke #

4
De fato. = não está = em terras grandes.
Dave12

3
Veja também esta excelente pergunta sobre math.SE about = na notação Landau.
Raphael

Respostas:


14

Deixe-me começar com uma recomendação: trate a notação Landau da mesma maneira que você deve tratar o arredondamento: arredondar raramente, arredondar tarde. Se você souber algo mais preciso do queO(.), use-o até concluir todos os cálculos e faça o Landauify no final.


Quanto à questão, vamos examinar esse abuso de notação¹. Como interpretaríamos algo comohO(f+O(g))? Devemos substituirOcom sua definição de dentro para fora. Então, nós temos

gO(g).hO(f+g)

e depois

gO(g).d>0.n.h(n)d(f(n)+g(n))

que é equivalente a

c>0.d>0.n.h(n)d(f(n)+cg(n)).

Como certamente² d(f(n)+cg(n))cd(f(n)+g(n)), vemos que isso é equivalente a hO(f+g); a perda de precisão é ignorada porO de qualquer forma.


E quanto a outras combinações, digamos hO(f+Ω(g))? Se tentarmos o mesmo aqui, obtemos

gΩ(g).hO(f+g).

Mas isso é uma tautologia: hé certamente delimitado acima por algo arbitrariamente grande. Portanto, combinar limites superior e inferior dessa maneira não é significativo.


  1. O(.)e os outros símbolos do Landau mapeiam funções para classes funcionais. Alimentá-lo com uma classe de função não é imediatamente significativo.
  2. Pelo menos se considerarmos apenas funções positivas, que podemos assumir com segurança ao falar sobre tempos de execução. Não tenho certeza se isso funciona em geral.

2

Eu só queria adicionar isso porque o encontrei recentemente. Embora este atalho seja bom com adição e multiplicação (quando não estiver misturandoO com Ω; veja a resposta aceita), deve-se tomar cuidado ao usar expoentes. Por exemplo:

O(nO(m))O(nm).
Neste exemplo, n2m pertence à primeira classe, mas não à segunda.

1

Por definição, O(g) é um conjunto e se você usar essa notação aninhada, você teria um conjunto em um conjunto, o que estaria errado.

A definição da notação O

O(g)={f|c>0x0>0x>x0:|f(x)|c|g(x)|}

O erro

Você usou termos como O(O(n)+k) onde k e n são funções e O(n)é um conjunto. Mas qual é o resultado de uma função adicionada a um conjunto? Não está definido!

Versão correta

Em vez de usar os símbolos do Landau aninhados, você pode fazer o seguinte: O(m+k),mO(n)


2
Sim, mas a notação Landau é frequentemente abusada por (suposta) facilidade de uso, por isso é melhor garantir que todos entendam a mesma coisa. Veja aqui uma abordagem estruturada.
Raphael

0

Na seção 9.3 "OManipulação "do livro Concrete Mathematics (Second Edition), Knuth listou algumas regras de manipulação noO-notation (A seguir, assumo que ambos f(n) e g(n)são positivos; observe que a ordem das regras foi alterada).

(1).nm=O(nm),mm(3).f(n)=O(f(n))(5).O(O(f(n)))=O(f(n))(4).cO(f(n))=O(f(n))(2).O(f(n))+O(g(n))=O(f(n)+g(n))(6).O(f(n))O(g(n))=O(f(n)g(n))=f(n)O(g(n))

By (3), you can wrap/unwrap a function f(n) with an O-notation. Then by (5), you can actually wrap/unwrap (or called, nest) it arbitrarily finite times. Using (4), you can also add/remove constant multiplication factors to/from O.

Then, (2) and (6) allow you to manipulate nested O-notations in the way compatible with + and ×.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.