¿Es una matriz que está en un orden ordenado un montón mínimo?

Si y no.

Un montón mínimo tiene una estructura de árbol binario y una matriz tiene una estructura de acceso aleatorio, por lo que, en ese sentido, no, son dos estructuras muy diferentes.

Pero si interpreta que la matriz tiene una estructura de árbol binario implícito, puede interpretarse como un montón dinámico válido.

Un montón mínimo tiene tres propiedades:

  1. Cada nodo tiene como máximo dos hijos
  2. Cada padre está clasificado menos que sus hijos
  3. El árbol binario está completo.

Una matriz a menudo se interpreta como un árbol binario donde los elementos secundarios de un índice dado [matemáticas] i [/ matemáticas] se encuentran en los índices [matemáticas] 2i + 1 [/ matemáticas] y [matemáticas] 2i + 2 [/ matemáticas] . Si la matriz tiene un tamaño inferior a [matemática] 2i + 1 [/ matemática] o [matemática] 2i + 2 [/ matemática], entonces esos hijos de [matemática] i [/ matemática] se consideran nulos .

Cuando una matriz se interpreta de esta manera, con esta implementación de un montón binario, se puede demostrar que cada padre tendrá un valor menor o igual que sus dos hijos. Por lo tanto, es un montón mínimo válido.

tl; dr:

Aquí hay una prueba de por qué es un montón mínimo válido (específicamente una matriz de enteros):

Enunciado: Una matriz de enteros ordenados en orden creciente es un montón mínimo válido.

debemos probar 3 cosas: cada nodo tiene como máximo dos hijos, el árbol (interpretado) está completo y el valor de cada nodo es menor que el valor de cada uno de sus hijos.

  1. Cada nodo tiene como máximo dos hijos
    1. deje que el árbol binario se interprete de manera tal que los hijos del índice [matemática] i [/ matemática] estén en índices [matemática] 2i + 1 [/ matemática] para todos [matemática] 2i + 1 <n [/ matemática] y [matemática ] 2i + 2 [/ matemática] para todos [matemática] 2i + 2 <n [/ matemática]
    2. (a) define exactamente dos posibles hijos para cada nodo, por lo tanto (1) es verdadero
  2. El árbol definido por (1.a) está completo
    1. dejemos que x se defina como una potencia de 2 tal que [math] \ frac {n} {2} \ le x \ lt n [/ math]
    2. que y se defina como una potencia de 2 tal que [matemática] n \ le y \ lt 2n [/ matemática]
    3. los nodos en los índices [matemáticas] [0, x-1] [/ matemáticas] son ​​todos nodos internos porque el nodo en el índice [matemáticas] x-1 [/ matemáticas] tiene al menos 1 hijo **
    4. los nodos en los índices [matemática] [x, n-1] [/ matemática] son ​​todos nodos hoja porque el nodo en el índice [matemática] x [/ matemática] no tiene hijos **
    5. el nodo en el índice [matemáticas] x-1 [/ matemáticas] es el nodo más a la derecha en el nivel $ h $, donde el nivel [matemáticas] h [/ matemáticas] contiene nodos en los índices [matemáticas] [2 ^ h-1, 2 ^ {h + 1} -2] [/ matemáticas] **
    6. declaraciones (ae) prueba declaración (2)
  3. Cada valor de nodos es menor que el valor de cada uno de sus hijos
    1. para un nodo en el índice [math] i [/ math], sus hijos (si existen) están en los índices [math] 2i + 1 [/ math] y [math] 2i + 2 [/ math]
    2. el valor en cualquier índice [matemática] i [/ matemática] es menor que el valor en el índice [matemática] i + 1 [/ matemática] (inferido por la definición de una matriz ordenada por valor creciente)
    3. por (a) y (b), la declaración (3) es verdadera
  4. Por la prueba de enunciado (1–3), el enunciado original es verdadero

EDITAR:

  1. definición actualizada de min-montón para incluir la integridad.
  2. prueba actualizada para compensar la integridad del árbol binario.

**: los detalles para la validez de esta declaración se omiten por simplicidad

No, en la capa superior del montón mínimo, el valor clave de todos los nodos es menor que los nodos de la capa inferior. Pero no hay comparación entre los mismos nodos de capa. Por lo tanto, no hay garantía de que en la misma capa todos los nodos estén ordenados. Por supuesto, el montón mínimo en capas se clasifica como discutí anteriormente. Por ejemplo, una matriz es así 10 14 19 26 31 42 27 44 35 33. Este conjunto ya está ordenado por montón mínimo. en la parte superior, hay un nodo con el valor clave 10. Debajo de la parte superior, hay dos nodos 14 y 19, que siempre es mayor que el valor clave del nodo superior. Debajo de esta capa, hay cuatro nodos con valores clave 26, 31, 42 y 27 respectivamente. Como puede ver el montón mínimo ordenado en capas pero en la misma capa, no hay garantía de que el montón mínimo esté ordenado (matriz). Y debajo de esta capa, hay tres nodos con valores clave 44,35 y 33 respectivamente. Finalmente, verá que la matriz no siempre se ordena en un montón mínimo. La imagen de nuestra discusión se muestra a continuación.

Si la matriz se ordena en orden ascendente, entonces sí. Sin embargo, aún puede tener un montón mínimo con los mismos elementos que no están completamente ordenados siempre que cada nodo sea mayor que su padre. Por ejemplo, 5 10 15 20 25 30 35 es un montón mínimo, pero también lo es 5 10 25 15 20 30 35.

¿Es una matriz que está en un orden ordenado un montón mínimo?

No. Un montón mínimo es un árbol binario completo donde cada padre es menor que cualquiera de sus hijos (y una matriz ordenada no lo es). Esto hace que sea bastante barato agarrar el elemento más pequeño en cualquier momento: está en la raíz, y cuando lo quitas, vuelves a mezclar los elementos para que el siguiente elemento más pequeño se mueva a la raíz.

También hace que sea bastante barato agregar un nuevo elemento, incluso si la cantidad de elementos que tiene es bastante grande.

More Interesting

Cómo reducir los componentes fuertemente conectados en nodos únicos de manera eficiente si estoy usando una representación de lista de adyacencia

¿Qué esfuerzos hará para crear un gráfico de la estructura de datos básicos, que también puede ser entendido por una persona no técnica?

¿Cuál es el tiempo de ejecución esperado de un algoritmo que genera aleatoriamente cadenas únicas de longitud D?

¿Por qué los estudiantes chinos tienen un talento extraordinario en programación y algoritmos?

¿Cuál es un ejemplo interesante del patrón de red del mundo pequeño?

¿Cuál es la mejor manera de implementar una lista cerrada para un algoritmo de búsqueda en C?

¿Cuál es el enunciado del problema resuelto por el algoritmo Bellman-Ford?

¿Existe un algoritmo de tiempo O (N) para esta pregunta?

Cómo resolver este problema usando árboles de segmentos

¿Son SHA256 y AES256 funciones hash o cifrados o algoritmos?

¿Qué otro género o sabores de la música se pueden programar algorítmicamente aparte de la música clásica?

¿Por qué la programación dinámica se llama programación dinámica?

¿Cuál sería un ejemplo de un problema de programación que sería difícil si no fuera posible sin el uso de array?

¿Cómo debería resolver mejor los problemas de programación?

¿Cuál es la mejor manera de analizar un currículum en los campos de la base de datos? ¿Qué hacer si tiene muchos currículums y necesita que los datos se extraigan en elementos individuales que se pueden colocar en una base de datos?