fbpx
Wikipedia

Montículo binario

Los Montículos binarios (binary heaps en inglés) son un caso particular y sencillo de la estructura de datos Montículo, y está basada en un árbol binario balanceado, que puede verse como un árbol binario con dos restricciones adicionales:

Propiedad de montículo
Cada nodo contiene un valor superior al de sus hijos (para un montículo por máximos) o más pequeño que el de sus hijos (para un montículo por mínimos).
Árbol semicompleto
El árbol está balanceado y en un mismo nivel las inserciones se realizan de izquierda a derecha.

Los montículos por mínimos se utilizan frecuentemente para representar colas de prioridad. A continuación se muestran dos montículos: el primero por mínimos y el segundo por máximos, que representan el mismo conjunto de valores y además son semicompletos.

 1  11 / \  / \ 2 3 9 10 / \ / \ / \ / \ 4 5 6 7 5 6 7 8 / \ / \ / \ / \ 8 9 10 11 1 2 3 4 

El orden de los nodos hermanos en un montículo no está especificado en la propiedad de montículo, de manera que los subárboles de un nodo son intercambiables.

Operaciones sobre montículos

Inserción de un elemento

La inserción de un elemento se realiza agregando el elemento en la posición que respeta la restricción de árbol semicompleto pero posiblemente invalidando la propiedad de montículo, para luego remontar hacia la raíz restaurando la propiedad de montículo por intercambio del valor de la posición desordenada por el valor de su padre. Esta reorganización se realiza en tiempo O(log n).

Ejemplo

En el siguiente montículo por máximos la posición donde se puede insertar está marcada con una letra X.

 11 / \ 5 8 / \ / 3 4 X 

Para insertar el valor 15 en este montículo, se inserta el valor en la posición marcada con lo cual se invalida la propiedad de montículo dado que 15 es mayor que 8. Para restaurar la propiedad de montículo se intercambia primero el 15 con el 8, obteniéndose el siguiente árbol:

 11 / \ 5 15 / \ / 3 4 8 

Sin embargo, la propiedad de montículo todavía no se cumple, dado que 15 es mayor que 11, de manera que hay que realizar un nuevo intercambio:

 15 / \ 5 11 / \ / 3 4 8 

El resultado si es un montículo por máximos.

Eliminación del elemento máximo

Para borrar el elemento máximo del montículo, de la manera más eficiente se puede tomar el elemento de la posición que debe quedar vacía, colocándolo en la raíz (así cumpliendo la propiedad de árbol completo), y luego intercambiar ese valor con el máximo de sus hijos hasta satisfacer la propiedad de montículo (si es de máximos), o intercambiarlo con el mínimo de sus hijos (si es de mínimos). Esta reorganización se puede realizar también en tiempo O(log n). Partiendo del mismo montículo que antes:

 11 / \ 5 8 / \ 3 4 

Al eliminarse el 11, éste se remplaza por 4 (el valor del nodo que se debe eliminar):

 4 / \ 5 8 / 3 

En este árbol no se cumple la propiedad de montículo dado que 8 es mayor que 4. Al intercambiarse estos dos valores se obtiene un montículo:


 8 / \ 5 4 / 3 

Representación de montículos

Si bien se puede utilizar un árbol binario para representar un montículo, la condición de árbol completo permite representar fácilmente un montículo en un vector colocando los elementos por niveles y en cada nivel, los elementos de izquierda a derecha.

 

Dado que el árbol es completo, no es necesario almacenar apuntadores en el árbol. Siempre se puede calcular la posición de los hijos o la del padre a partir de la posición de un nodo en el arreglo (contando las posiciones del arreglo a partir de cero):

  • El nodo raíz se almacena en la posición 0 del arreglo.
  • Los hijos de un nodo almacenado en la posición k se almacenan en las posiciones 2k+1 y 2k+2 respectivamente.

Se deduce que el padre de un nodo que está en la posición k (k>0) está almacenado en la posición  . Donde   es la función parte entera de x.

Enlaces externos

  •   Datos: Q803847
  •   Multimedia: Binary heaps

montículo, binario, para, otros, usos, este, término, véase, montículo, desambiguación, montículos, binarios, binary, heaps, inglés, caso, particular, sencillo, estructura, datos, montículo, está, basada, árbol, binario, balanceado, puede, verse, como, árbol, . Para otros usos de este termino vease Monticulo desambiguacion Los Monticulos binarios binary heaps en ingles son un caso particular y sencillo de la estructura de datos Monticulo y esta basada en un arbol binario balanceado que puede verse como un arbol binario con dos restricciones adicionales Propiedad de monticulo Cada nodo contiene un valor superior al de sus hijos para un monticulo por maximos o mas pequeno que el de sus hijos para un monticulo por minimos Arbol semicompleto El arbol esta balanceado y en un mismo nivel las inserciones se realizan de izquierda a derecha Los monticulos por minimos se utilizan frecuentemente para representar colas de prioridad A continuacion se muestran dos monticulos el primero por minimos y el segundo por maximos que representan el mismo conjunto de valores y ademas son semicompletos 1 11 2 3 9 10 4 5 6 7 5 6 7 8 8 9 10 11 1 2 3 4 El orden de los nodos hermanos en un monticulo no esta especificado en la propiedad de monticulo de manera que los subarboles de un nodo son intercambiables Indice 1 Operaciones sobre monticulos 1 1 Insercion de un elemento 1 1 1 Ejemplo 1 2 Eliminacion del elemento maximo 2 Representacion de monticulos 3 Enlaces externosOperaciones sobre monticulos EditarInsercion de un elemento Editar La insercion de un elemento se realiza agregando el elemento en la posicion que respeta la restriccion de arbol semicompleto pero posiblemente invalidando la propiedad de monticulo para luego remontar hacia la raiz restaurando la propiedad de monticulo por intercambio del valor de la posicion desordenada por el valor de su padre Esta reorganizacion se realiza en tiempo O log n Ejemplo Editar En el siguiente monticulo por maximos la posicion donde se puede insertar esta marcada con una letra X 11 5 8 3 4 X Para insertar el valor 15 en este monticulo se inserta el valor en la posicion marcada con lo cual se invalida la propiedad de monticulo dado que 15 es mayor que 8 Para restaurar la propiedad de monticulo se intercambia primero el 15 con el 8 obteniendose el siguiente arbol 11 5 15 3 4 8 Sin embargo la propiedad de monticulo todavia no se cumple dado que 15 es mayor que 11 de manera que hay que realizar un nuevo intercambio 15 5 11 3 4 8 El resultado si es un monticulo por maximos Eliminacion del elemento maximo Editar Para borrar el elemento maximo del monticulo de la manera mas eficiente se puede tomar el elemento de la posicion que debe quedar vacia colocandolo en la raiz asi cumpliendo la propiedad de arbol completo y luego intercambiar ese valor con el maximo de sus hijos hasta satisfacer la propiedad de monticulo si es de maximos o intercambiarlo con el minimo de sus hijos si es de minimos Esta reorganizacion se puede realizar tambien en tiempo O log n Partiendo del mismo monticulo que antes 11 5 8 3 4 Al eliminarse el 11 este se remplaza por 4 el valor del nodo que se debe eliminar 4 5 8 3 En este arbol no se cumple la propiedad de monticulo dado que 8 es mayor que 4 Al intercambiarse estos dos valores se obtiene un monticulo 8 5 4 3Representacion de monticulos EditarSi bien se puede utilizar un arbol binario para representar un monticulo la condicion de arbol completo permite representar facilmente un monticulo en un vector colocando los elementos por niveles y en cada nivel los elementos de izquierda a derecha Dado que el arbol es completo no es necesario almacenar apuntadores en el arbol Siempre se puede calcular la posicion de los hijos o la del padre a partir de la posicion de un nodo en el arreglo contando las posiciones del arreglo a partir de cero El nodo raiz se almacena en la posicion 0 del arreglo Los hijos de un nodo almacenado en la posicion k se almacenan en las posiciones 2k 1 y 2k 2 respectivamente Se deduce que el padre de un nodo que esta en la posicion k k gt 0 esta almacenado en la posicion k 1 2 displaystyle lfloor k 1 2 rfloor Donde x displaystyle lfloor x rfloor es la funcion parte entera de x Enlaces externos EditarWeisstein Eric W Heap En Weisstein Eric W ed MathWorld en ingles Wolfram Research https web archive org web 20040611075754 http www policyalmanac org games binaryHeaps htm Cola de prioridad implementada en java http users cis fiu edu weiss dsj4 code weiss util PriorityQueue java Datos Q803847 Multimedia Binary heapsObtenido de https es wikipedia org w index php title Monticulo binario amp oldid 120646888, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos