log big algorithm recurrence

algorithm - big - n log n es O(n)?



log n graph (3)

Estoy tratando de resolver esta recurrencia.

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

He llegado a la solución de que pertenece al teorema de los maestros caso 2 ya que n lg n es O (n ^ 2)

pero después de consultar el manual de soluciones, me di cuenta de esta solución que tienen

La solución dice que n lg n = O (n ^ (lg 3 - e)) para e entre 0 y 0.58

así que esto significa que n lg n es O (n) ... ¿es esto correcto? ¿Me estoy perdiendo de algo?

¿No es nlgn O (n ^ 2)?


Esto explicará mejor las cosas.


n lg3 no es O (n). Vence a O (n) ... De hecho, cualquier exponente en n que sea mayor que 1 resulta en un tiempo asintóticamente más largo que O (n). Como lg (3) es aproximadamente 1.58, siempre que restes menos de .58 del exponente, es asintóticamente mayor que O (n).


n*log(n) no es O(n^2) . Se conoce como cuasi lineal y crece mucho más lento que O(n^2) . De hecho, n*log(n) es menor que el polinomio.

En otras palabras:

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

donde k > 1

En tu ejemplo:

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

Como O(n^1.585) es polinomial y domina O(n*log(n)) , el último término desaparece, por lo que la complejidad final es solo O(n^1.585) .