Est de complexité O(log(n)) équivalent à O(sqrt(n))?
Mon professeur titulaire nous a appris que toute opération qui réduit de moitié la longueur de l'entrée a un O(log(n)) de la complexité comme un pouce à la règle. Pourquoi n'est-il pas O(sqrt(n)), ne sont pas à la fois de leur équivalent?
Tracer les graphes de
log(1) = 0 et sqrt(1) = 1
Désolé, je ne sais pas ce que je pensais, toutes les réponses sont extrêmement instructif. Merci
log(n)
et sqrt(n)
jusqu'à environ n==1000
, voir si vous avez encore de penser qu'ils sont équivalents, ce que vous entendez par là.log(1) = 0 et sqrt(1) = 1
Désolé, je ne sais pas ce que je pensais, toutes les réponses sont extrêmement instructif. Merci
OriginalL'auteur white_tree | 2017-02-04
Vous devez vous connecter pour publier un commentaire.
Ils ne sont pas équivalents: sqrt(N) va augmenter beaucoup plus que log2(N). Il n'existe pas de constante C de sorte que vous avez sqrt(N) < C. log(N) pour toutes les valeurs de N est supérieure à la valeur minimale.
Un moyen facile de saisir, c'est que log2(N) sera une valeur proche du nombre d' (binaire) chiffres de N, tandis que sqrt(N) sera un nombre qui est elle-même la moitié du nombre de chiffres que N. Ou, en l'état avec une égalité:
log2(N) = 2log2(sqrt(N))
Si vous avez besoin de prendre le logarithme(!) de sqrt(N) pour le ramener à un même ordre de complexité que log2(N).
Par exemple, pour un nombre binaire à 11 chiffres, 0b10000000000 (=210), la racine carrée est 0b100000, mais le logarithme est seulement 10.
log(N) will be a value close to the number of (binary) digits of N, while sqrt(N) will be a number that has itself half the number of digits that N has.
Fantastique réponse.
OriginalL'auteur trincot
En supposant
natural logarithm
(sinon, il suffit de multiplier par une constante), nous avonslim {n->inf} log n /sqrt(n) = (inf /inf)
Reportez-vous à https://en.wikipedia.org/wiki/Big_O_notation pour alternative defination de
O(.)
et, partant, à partir de ci-dessus, nous pouvons direlog n = O(sqrt(n))
,Également de comparer la croissance de f les fonctions ci-dessous,
log n
est toujours supérieure délimitée parsqrt(n)
pour les grandesn
.OriginalL'auteur Sandipan Dey
Non, Il n'est pas équivalent.
@trincot a donné une excellente explication avec un exemple dans sa réponse. Je vais ajouter un point de plus. Votre professeur vous a enseigné que
Il est également vrai que,
C'est même vrai pour toute la réduction des longueurs de l'entrée en
(B-1)/Bth.
Il a alors une complexité deO(logB(n))
N:B:
O(logB(n))
signifieB
en fonction du logarithme den
OriginalL'auteur jbsu32
Non, ils sont pas équivalent; vous pouvez même prouver que
pour tout
k > 0
etbase > 1
(k = 1/2
en cas desqrt
).Lorsque vous parlez
O(f(n))
nous voulons étudier le comportement de grandn
,limites est un bon moyen pour cela. Supposons que les deux grandes
O
sont équivalentes:qui signifie qu'il ya une certaine constante
C
tels queà partir de quelques assez grand
n
; en d'autres termes (log(n, base)
n'est pas0
à partir de grandesn
, les deux fonctions sont continûment dérivable):Pour trouver la limite de la valeur, nous pouvons utiliser La Règle de l'Hospital, c'est à dire prendre des produits dérivés pour le numérateur et le dénominateur et de les diviser:
nous pouvons donc conclure qu'il n'y a pas de constante
C
tels queO(n**k) < C*log(n, base)
ou en d'autres termesOriginalL'auteur Dmitry Bychenko