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
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)?
Cela expliquera mieux les choses
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)
où 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)
.
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).