Disons que j'ai un graphique avec bords. Je veux exécuter BFS sur qui a une durée de .
Il semble naturel d'écrire que le temps d'exécution sur ce graphique serait puis simplifier pour .
Y a-t-il des pièges à utiliser un tel raccourci "supprimer-le-nested-O" (pas seulement dans ce cas, mais plus généralement)?
terminology
asymptotics
landau-notation
Le chat unfun
la source
la source
Réponses:
Permettez-moi de commencer par une recommandation: traiter la notation Landau comme vous (devriez) traiter l'arrondi: arrondir rarement, arrondir tard. Si vous savez quelque chose de plus précis queO(.) , utilisez-le jusqu'à ce que vous ayez terminé tous les calculs, et Landauify à la fin.
Quant à la question, creusons cet abus de notation¹. Comment interpréterions-nous quelque chose commeh∈O(f+O(g)) ? Nous devons remplacerO avec sa définition de l'intérieur. Donc, nous obtenons
et alors
ce qui équivaut à
Comme certainement²d(f(n)+cg(n))≤cd(f(n)+g(n)) , nous voyons que cela équivaut à h∈O(f+g) ; la perte de précision est ignorée parO en tous cas.
Qu'en est-il des autres combinaisons, disonsh∈O(f+Ω(g)) ? Si nous essayons la même chose ici, nous obtenons
Mais c'est une tautologie:h est certainement délimité au-dessus par quelque chose d’arbitrairement grand. Donc, combiner les limites supérieures et inférieures de cette manière n'a pas de sens.
la source
Je voulais juste ajouter ceci parce que je l'ai rencontré récemment. Bien que ce raccourci soit parfait avec l'addition et la multiplication (lorsqu'il ne mélange pasO avec Ω ; voir la réponse acceptée), des précautions doivent être prises lors de l'utilisation d'exposants. Par exemple:
la source
Par définition,O(g) est un ensemble et si vous utilisez cette notation imbriquée, vous auriez un ensemble dans un ensemble, ce qui serait faux.
La définition de la notation O
L'erreur
Vous avez utilisé des termes commeO(O(n)+k) où k et n sont des fonctions et O(n) est un ensemble. Mais quel est le résultat d'une fonction ajoutée à un ensemble? Ce n'est pas défini!
Version correcte
Au lieu d'utiliser les symboles Landau imbriqués, vous pouvez effectuer les opérations suivantes:O ( m + k ) , m ∈ O ( n )
la source
Dans la section 9.3 "O Manipulation "du livre Concrete Mathematics (Second Edition), Knuth a énuméré quelques règles de manipulation sur leO -notation (Dans ce qui suit, je suppose que les deux F( n ) et g( n ) sont positifs; notez que l'ordre des règles a été modifié).
By (3), you can wrap/unwrap a functionf(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 nestedO -notations in the way compatible with + and × .
la source