web-dev-qa-db-fra.com

Est-ce que Big O(logn) log base e?

Pour le type d'arbre de recherche binaire des structures de données, je vois que la notation Big O est généralement notée comme O (logn). Avec un "l" en minuscule dans log, cela implique-t-il une base de log e (n) telle que décrite par le logarithme naturel? Désolé pour la question simple, mais j'ai toujours eu du mal à distinguer les différents logarithmes implicites.

84
BuckFilledPlatypus

Une fois exprimés en notation big-O (), les deux sont corrects. Cependant, lors de la dérivation du polynôme O(), dans le cas de la recherche binaire, seul le journal2 est correct. Je suppose que cette distinction a été l'inspiration intuitive pour commencer votre question.

Aussi, à mon avis, écrire O (log2 N) est meilleur pour votre exemple, car il communique mieux la dérivation de l'exécution de l'algorithme.

En notation big-O (), les facteurs constants sont supprimés. La conversion d'une base de logarithme en une autre implique la multiplication par un facteur constant.

Donc O (log N) est équivalent à O (log2 N) en raison d'un facteur constant.

Cependant, si vous pouvez facilement composer le journal2 N dans votre réponse, le faire est plus pédagogique. Dans le cas de la recherche d'arbre binaire, vous avez raison ce journal2 N est introduit lors de la dérivation du runtime big-O ().

Avant d'exprimer le résultat sous forme de notation big-O (), la différence est très importante. Lors de la dérivation du polynôme à communiquer via la notation big-O, il serait incorrect pour cet exemple d'utiliser un logarithme autre que log2 N, avant d'appliquer la notation O (). Dès que le polynôme est utilisé pour communiquer un runtime dans le pire des cas via la notation big-O (), peu importe le logarithme utilisé.

66
Heath Hunnicutt

La notation Big O n'est pas affectée par la base logarithmique, car tous les logarithmes dans différentes bases sont liés par un facteur constant , O(ln n) est équivalent à O(log n).

enter image description here

71
Cade Roux

Peu importe la base, car la notation big-O est généralement écrite montrant uniquement l'ordre asymptotiquement le plus élevé de n, donc les coefficients constants disparaîtront. Puisqu'une base de logarithme différente équivaut à un coefficient constant, elle est superflue.

Cela dit, je supposerais probablement la base de journal 2.

8
Daniel Pryden

Les deux sont corrects. Penses-y

log2(n)=log(n)/log(2)=O(log(n))
log10(n)=log(n)/log(10)=O(log(n))
logE(n)=log(n)/log(E)=O(log(n))
4
cartonn

Vous devez d'abord comprendre ce que signifie qu'une fonction f(n) doit être O (g(n)).

La définition formelle est: * Une fonction f(n) est dite O(g(n)) ssi | f (n) | <= C * | g (n) | chaque fois que n> k, où C et k sont des constantes. *

donc soit f(n) = log base a de n, où a> 1 et g(n) = log base b de n, où b> 1

REMARQUE: Cela signifie que les valeurs a et b peuvent être n'importe quelle valeur supérieure à 1, par exemple a = 100 et b = 3

Nous obtenons maintenant ce qui suit: la base de log a de n est dite O (base de log b de n) ssi | la base de log a de n | <= C * | base log b de n | chaque fois que n> k

Choisissez k = 0 et C = log base a de b.

Maintenant, notre équation ressemble à ceci: | log base a de n | <= log base a de b * | log base b de n | chaque fois que n> 0

Remarquez le côté droit, nous pouvons manipuler l'équation: = log base a de b * | log base b de n | = | log base b de n | * log base a de b = | log base a de b ^ (log base b de n) | = | log base a de n |

Maintenant, notre équation ressemble à ceci: | log base a de n | <= | log base a de n | chaque fois que n> 0

L'équation est toujours vraie quelles que soient les valeurs n, b ou a, autres que leurs restrictions a, b> 1 et n> 0. Donc, la base de log a de n est O (base de log b de n) et puisque a, b n'a pas d'importance, nous pouvons simplement les omettre.

Vous pouvez voir une vidéo YouTube à ce sujet ici: https://www.youtube.com/watch?v=MY-VCrQCaVw

Vous pouvez lire un article à ce sujet ici: https://medium.com/@randerson112358/omitting-bases-in-logs-in-big-o-a619a46740ca

1
tempmail

Techniquement, la base n'a pas d'importance, mais vous pouvez généralement la considérer comme la base-2.

1
Tim Sylvester

Oui, quand on parle de notation big-O, la base n'a pas d'importance. Cependant, sur le plan informatique, face à un réel problème de recherche, cela importe.

Lors du développement d'une intuition sur les structures arborescentes, il est utile de comprendre qu'un arbre de recherche binaire peut être recherché en temps O (n log n) car c'est la hauteur de l'arbre - c'est-à-dire, dans un arbre binaire avec n nœuds, l'arbre la profondeur est O (n log n) (base 2). Si chaque nœud a trois enfants, l'arbre peut toujours être recherché en temps O (n log n), mais avec un logarithme en base 3. Sur le plan du calcul, le nombre d'enfants de chaque nœud peut avoir un impact important sur les performances (voir par exemple: texte du lien )

Prendre plaisir!

Paul

1
Paul