¿Qué es O (nlog (n)) de notación big-O? ¿Cuáles son algunos ejemplos de sus algoritmos?

[matemática] O (n \ log n) [/ matemática] es [matemática] O (n \ log n) [/ matemática]

No se puede aproximar a [matemática] O (n) [/ matemática] o [matemática] O (n ^ 2) [/ matemática] por lo que es una “familia” de algoritmos en sí misma y también es una complejidad de algoritmo muy común.

Puede obtenerlo, por ejemplo, de un algoritmo de divide y vencerás en el que resuelve subproblemas y combina el resultado.

Quicksort , mergesort y heapsort se ejecutan en [math] O (n \ log n) [/ math] y son probablemente los algoritmos más famosos [math] O (n \ log n) [/ math] desde el límite inferior de cualquier tipo de comparación es de hecho [matemáticas] O (n \ log n) [/ matemáticas] y se han realizado muchas investigaciones sobre esto.

Otros [math] O (n \ log n) [/ math] son ​​menos comunes o simplemente específicos para problemas particulares (por ejemplo, subsecuencia creciente más larga , una solución no óptima para el problema de 2sum , etc.).

Encuentro lo siguiente muy útil para comprender la notación Big O y el rendimiento relativo de los algoritmos a medida que N aumenta. El último gráfico es particularmente valioso porque explica por qué nos preocupamos por Big O en primer lugar.

[math] O (nlogn) [/ math] contiene un [math] logn [/ math]; por lo tanto, debe haber algo relacionado con estructuras binarias o divide y vencerás.

Hay muchos ejemplos.

Por ejemplo, el ordenamiento dinámico es un algoritmo de clasificación [matemático] O (nlogn) [/ matemático] muy famoso. Y la complejidad de Tarjan LCA (Offline LCA) es [math] O (n) [/ math] ~ [math] O (nlogn) [/ math]. La complejidad de construir un árbol de segmentos es [matemática] O (nlogn) [/ matemática]. Además, el preprocesamiento ST (tabla dispersa) para RMQ (consulta de rango máximo / mínimo) es [matemática] O (nlogn) [/ matemática] etc.

Por lo general, [math] logn [/ math] representa [math] log_2n [/ math] porque la mayoría de esas estructuras son estructuras de datos binarios. Y una vez que [math] logn [/ math] se presenta en la complejidad, debe haber algo relacionado con estructuras o algoritmos binarios (Binary Search, por ejemplo).

La transformada discreta rápida de Fourier (FFT) es O (n * log (n)), que fue una gran

mejora sobre la ingenua versión O (n ^ 2) del algoritmo

(n ^ 2 es n al cuadrado)

La mejor conceptualización que se me ocurre es que [matemáticas] O (n * log_b (N)) [/ matemáticas] implica que está visitando cada elemento de un árbol equilibrado con hasta [matemáticas] b [/ matemáticas] niños en cada nodo, pero cada vez que desee acceder a un nodo, debe comenzar desde la raíz. Por lo tanto, necesita [math] log_b (N) [/ math] tiempo para descender el árbol hasta llegar a un solo elemento, y está haciendo esto [math] N [/ math] veces en general.

Tenga en cuenta que en la mayoría de las situaciones, [math] b [/ math] está implícito en 2. Por ejemplo, en QuickSort, en cada etapa, la lista se divide en 2.

Big O denota la peor complejidad del caso. La peor complejidad del caso significa que, en cualquier caso, su programa no cruzará el tiempo O (nlogn). Hay muchos Algo que toman tiempo O (nlogn). Uno de estos algoritmos de clasificación es la combinación de clasificación, que es un algoritmo de división y conquista, y toma O (nlogn) en todos los casos. La ordenación por fusión es eficiente para un gran tamaño de entrada.

More Interesting

¿Cuál sería la relación más efectiva entre las matemáticas y la programación en educación?

¿Cuál es el enfoque más fácil para abordar los problemas de programación dinámica?

¿Cuáles son algunas de las aplicaciones comunes de Machine Learning?

¿Cómo puede la informática teórica informar el estudio del origen de la vida?

¿Qué es una mónada?

Si el universo es una simulación, ¿no estaría sujeto al problema de detención?

¿Qué son las matemáticas básicas y fundamentales para la visión por computadora, el aprendizaje automático, la inteligencia artificial, la estructura de datos y algoritmos, sistemas de control, sistemas en tiempo real y procesamiento de señales digitales?

Cómo usar el lema de bombeo para demostrar que [matemáticas] A = \ {www \ mid w \ in \ {a, b \} ^ * \} [/ matemáticas] no es un lenguaje normal

Cómo diseñar una máquina de Turing con este RE a ^ (2n + 1) b ^ (2n-1)

¿Cuál es la complejidad temporal de T (n) = T (n / a) + T (n / b) + cn cuando 1 / a + 1 / b> 1? Por ejemplo T (18n / 20) + T (5n / 20) + n.

¿Cuál es una buena manera de entender que FSA (automatización de estado finito) o los lenguajes regulares están cerrados bajo diferencia, complementación e intersección, pero FST (traductores de estado finito) o relaciones regulares no lo están?

¿Cuánto conocimiento matemático profundo deberías tener como diseñador de juegos?

¿Cuál es el mejor libro para explorar la profundidad del problema P versus NP?

Si tengo un número (ej .: n = 28), ¿existe una fórmula cerrada para saber cuántos son los pares ordenados de números enteros (a, b) de manera que [matemáticas] a \ cdot b = n [/ matemáticas]?

Cómo encontrar la suma de todos los números distintos cuyo MCM es N