En informática , un montón fusionable (también llamado montón meldable ) es un tipo de dato abstracto , que es un montón que admite una operación de fusión.
Definición
Un montón fusionable admite las operaciones de montón habituales: [ 1 ]
Make-Heap(), crear un montón vacío.Insert(H,x), insertar un elementoxen el montónH.Min(H), devuelve el elemento mínimo, oNilsi no existe tal elemento.Extract-Min(H), extrae y devuelve el elemento mínimo, oNilsi no existe tal elemento.
Y una más que la distingue: [ 1 ]
Merge(H1,H2), combina los elementos deH1yH2en un solo montón.
Implementación trivial
Es sencillo implementar un montón fusionable a partir de un montón simple:
Merge(H1,H2):
x ← Extract-Min(H2)while x ≠ NilInsert(H1, x)x ← Extract-Min(H2)
Sin embargo, esto puede ser un desperdicio, ya que cada uno Extract-Min(H)y Insert(H,x)normalmente tienen que mantener la propiedad del montón .
Implementaciones más eficientes
Algunos ejemplos de estructuras de datos de montón fusionables son:
Una lista más completa con comparaciones de rendimiento se puede encontrar en Heap (estructura de datos) § Comparación de límites teóricos para variantes .
En la mayoría de las estructuras de montículos fusionables, la fusión es la operación fundamental sobre la que se basan las demás. La inserción se implementa fusionando un nuevo montículo de un solo elemento con el montículo existente. La eliminación se implementa fusionando los hijos del nodo eliminado.
Véase también
Referencias
- ^ Cormen , Thomas H .; Leiserson, Charles E .; Rivest, Ronald L .; Stein, Clifford (2009) [1990]. Introducción a los algoritmos (3ª ed.). MIT Press y McGraw-Hill. págs. 505– 506. ISBN 0-262-03384-4.
- Montones (estructuras de datos)