Puisqu'il n'y a qu'une constante entre les bases des logarithmes, n'est-ce pas juste d'écrire , par opposition à , ou quelle que soit la base?
algorithms
time-complexity
Alex5207
la source
la source
Réponses:
Cela dépend où se trouve le logarithme. Si ce n'est qu'un facteur, cela ne fait aucune différence, car big-O ouθ vous permet de multiplier par n'importe quelle constante.
Si vous prenezO(2logn) la base est importante. Dans la base 2, vous auriez juste O(n) , dans la base 10, c'est environ O(n0.3010) .
la source
Parce que la notation asymptotique est inconsciente des facteurs constants et que deux logarithmes différents diffèrent par un facteur constant, la base ne fait aucune différence:logan=Θ(logbn) pour tout a,b>1 . Il n'est donc pas nécessaire de spécifier la base d'un logarithme lors de l'utilisation de la notation asymptotique.
la source
Commelogxy=1logyx etlogxy=logzylogzx , donc loganlogbn=lognblogna=logab . Commelogab est une constante positive (pour touta,b>1 ), alorslogan=Θ(logbn) .
la source
Dans la plupart des cas, il est prudent de supprimer la base du logarithme car, comme d'autres réponses l'ont souligné, la formule de changement de base des logarithmes signifie que tous les logarithmes sont des multiples constants les uns des autres.
Dans certains cas, cela n'est pas sûr. Par exemple, @ gnasher729 a souligné que si vous avez un logarithme dans un exposant, alors la base logarithmique est en effet significative.
Je voulais souligner un autre cas où la base du logarithme est significative, et c'est des cas où la base du logarithme dépend directement d'un paramètre spécifié en entrée du problème. Par exemple, l'algorithme de tri radix fonctionne en écrivant des nombres dans une baseb , en décomposant les nombres d'entrée en leurs chiffres de base b , puis en utilisant le tri par comptage pour trier ces nombres un chiffre à la fois. Le travail effectué par tour est alors Θ(n+b) et il y a à peu près logbU tours (où U est l'entier d'entrée maximum), donc le temps d'exécution total est O((n+b)logbU) b O(nlogU) b b=n O(n+lognU) lognU logUlogn O(nlogUlogn) logm/2+2
Pour résumer, dans le cas où vous avez un logarithme à base constante, vous pouvez généralement (sous réserve d'exceptions comme ce que @ gnasher729 a signalé) supprimer la base du logarithme. Mais lorsque la base du logarithme dépend de certains paramètres de l'algorithme, il n'est généralement pas sûr de le faire.
la source