*** Welcome to piglix ***

Pairing heap


A pairing heap is a type of heap data structure with relatively simple implementation and excellent practical amortized performance, introduced by Michael Fredman, Robert Sedgewick, Daniel Sleator, and Robert Tarjan in 1986. Pairing heaps are heap-ordered multiway tree structures, and can be considered simplified Fibonacci heaps. They are considered a "robust choice" for implementing such algorithms as Prim's MST algorithm, and support the following operations (assuming a min-heap):

The analysis of pairing heaps' time complexity was initially inspired by that of splay trees. The amortized time per delete-min is O(log n), and the operations find-min, merge, and insert run in O(1) amortized time.

Determining the precise asymptotic running time of pairing heaps when a decrease-key operation is needed has turned out to be difficult. Initially, the time complexity of this operation was conjectured on empirical grounds to be O(1), but Fredman proved that the amortized time per decrease-key is at least for some sequences of operations. Using a different amortization argument, Pettie then proved that insert, meld, and decrease-key all run in amortized time, which is . Elmasry later introduced a variant of pairing heaps for which decrease-key runs in amortized time and with all other operations matching Fibonacci heaps, but no tight bound is known for the original data structure. Moreover, it is an open question whether a amortized time bound for decrease-key and a amortized time bound for insert can be achieved simultaneously.


...
Wikipedia

...