Para los montones máximos, ¿por qué el orden de build_maxheap () [math] n \ log (n), [/ math] cuando solo tiene que recorrer n / 2 elementos?

La respuesta corta es que [math] n / 2 \ log (n / 2) [/ math] es de orden [math] O (n \ log n) [/ math]. El factor constante no hace una diferencia en el análisis asintótico.

Probablemente estés viendo código como este:

CONSTRUIR-MAX-HEAP
heap-size = length (A)
para i = \ l longitud del piso (A) / 2 \ r piso abajo 1
MaxHeapify (A, i)

Fuente: http://www.cs.toronto.edu/~krueg…

MaxHeapify toma como máximo [math] \ log n [/ math] tiempo. Ejecutarlo [math] n / 2 [/ math] veces proporciona una estimación de [math] n / 2 \ log n [/ math] con is [math] O (n \ log n) [/ math]. No tiene sentido mantener el [math] 1/2 [/ math] porque el tiempo “[math] \ log n [/ math]” no tiene unidades o factores constantes asociados, lo que podría empequeñecer cualquier factor constante de [ matemática] 1/2 [/ matemática] aplicada al bucle exterior.

Pero … también debería estar aprendiendo que BUILD-MAX-HEAP tiene un límite más estricto, es decir, [math] O (n) [/ math]. Consulte Insertar un elemento en un montón toma O (log n). ¿Aún si insertamos n elementos en el montón, resulta ser O (n)? o ¿Alguien puede dar una prueba intuitiva del tiempo de ejecución del proceso de almacenamiento dinámico en O (n)? o ¿Por qué el tiempo de ejecución de construir un montón binario O (n) y no O (n * log n)?

More Interesting

¿Hay algún fractal completo de Turing?

¿Qué tan buena o mala es una idea para comenzar un doctorado teórico de CS a la edad de 27 años?

¿Existe alguna analogía en la vida real con el concepto de expresiones regulares?

¿Es Python el mejor lenguaje de programación para las matemáticas aplicadas?

¿Cómo es tomar CS 154 (Introducción a los autómatas y la teoría de la complejidad) en Stanford?

¿Cómo diseñas un algoritmo?

¿Cuál es la complejidad temporal de un programa que calcula el número n de Fibonacci mediante la memorización?

¿Por qué los estadísticos no querían trabajar en el aprendizaje automático hasta que los informáticos pusieron el campo 'de moda'?

¿Qué conceptos matemáticos difíciles se pueden entender fácilmente mediante la programación?

X resuelve el problema de la Torre de Hanoi, primero con n discos en el tiempo t1 y luego con n + 2 discos en el tiempo t2. Suponiendo que él toma la misma cantidad de tiempo para cada movimiento de disco y resuelve el problema en los menores pasos posibles, ¿cuál será la relación entre t1 y t2?

¿Cómo escribimos código para verificar si el año es bisiesto o no en Verilog, sin usar el operador de módulo?

¿Qué es la reducción en la teoría de la complejidad computacional?

Cómo comprender completamente los condicionales en matemáticas discretas

¿Cuál es la mejor manera de aprender el aprendizaje automático aprovechando mi sólida formación matemática?

¿Cuál es la diferencia entre la lógica temporal y el cálculo del proceso?