web-dev-qa-db-fra.com

n log n est O (n)?

J'essaie de résoudre cette récurrence

T (n) = 3 T(n/2) + n lg n ..

J'en suis arrivé à la solution selon laquelle il appartient au cas du théorème maître 2 puisque n lg n est O (n ^ 2)

mais après avoir fait référence au manuel de la solution, j'ai remarqué cette solution qu'ils ont

enter image description here

La solution dit que n lg n = O (n ^ (lg 3 - e)) pour e entre 0 et 0,58

donc cela signifie que n lg n est O(n) .. est-ce vrai? Est-ce que je manque quelque chose ici?

Nlgn O n'est-il pas (n ^ 2)?

21
Wael Awada

Cela expliquera mieux les choses enter image description here

80
Sreenath Nannat

n*log(n) n'est pas O(n^2). Il est connu comme quasi-linéaire et se développe beaucoup plus lentement que O(n^2). En fait, n*log(n) est inférieur au polynôme.

En d'autres termes:

O(n*log(n)) < O(n^k)

k > 1

Dans votre exemple:

3*T(2n) -> O(n^1.585)

Puisque O(n^1.585) est polynomiale et domine O(n*log(n)), ce dernier terme disparaît donc la complexité finale est juste O(n^1.585).

14
Mysticial

nlg3 n'est pas O (n). Il dépasse O (n) ... En fait, tout exposant sur n supérieur à 1 entraîne un temps asymptotiquement plus long que O (n). Puisque lg (3) est d'environ 1,58, tant que vous soustrayez moins de 0,58 de l'exposant, il est asymptotiquement supérieur à O (n).

6
bdares