Results 1 
5 of
5
Fibonacci heaps revisited
 CoRR
"... The Fibonacci heap is a classic data structure that supports deletions in logarithmic amortized time and all other heap operations in O(1) amortized time. We explore the design space of this data structure. We propose a version with the following improvements over the original: (i) Each heap is repr ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
The Fibonacci heap is a classic data structure that supports deletions in logarithmic amortized time and all other heap operations in O(1) amortized time. We explore the design space of this data structure. We propose a version with the following improvements over the original: (i) Each heap is represented by a single heapordered tree, instead of a set of trees. (ii) Each decreasekey operation does only one cut and a cascade of rank changes, instead of doing a cascade of cuts. (iii) The outcomes of all comparisons done by the algorithm are explicitly represented in the data structure, so none are wasted. We also give an example to show that without cascading cuts or rank changes, both the original data structure and the new version fail to have the desired efficiency, solving an open problem of Fredman. Finally, we illustrate the richness of the design space by proposing several alternative ways to do cascading rank changes, including a randomized strategy related to one previously proposed by Karger. We leave the analysis of these alternatives as intriguing open problems.
A back–to–basics empirical study of priority queues
, 2013
"... The theory community has proposed several new heap variants in the recent past which have remained largely untested experimentally. We take the field back to the drawing board, with straightforward implementations of both classic and novel structures using only standard, wellknown optimizations. We ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
The theory community has proposed several new heap variants in the recent past which have remained largely untested experimentally. We take the field back to the drawing board, with straightforward implementations of both classic and novel structures using only standard, wellknown optimizations. We study the behavior of each structure on a variety of inputs, including artificial workloads, workloads generated by running algorithms on real map data, and workloads from a discrete event simulator used in recent systems networking research. We provide observations about which characteristics are most correlated to performance. For example, we find that the L1 cache miss rate appears to be strongly correlated with wallclock time. We also provide observations about how the input sequence affects the relative performance of the different heap variants. For example, we show (both theoretically and in practice) that certain random insertiondeletion sequences are degenerate and can lead to misleading results. Overall, our findings suggest that while the conventional wisdom holds in some cases, it is sorely mistaken in others. 1
Hollow Heaps
"... We introduce the hollow heap, a very simple data structure with the same amortized efficiency as the classical Fibonacci heap. All heap operations except delete and deletemin take O(1) time, worst case as well as amortized; delete and deletemin take O(log n) amortized time. Hollow heaps are by far ..."
Abstract
 Add to MetaCart
We introduce the hollow heap, a very simple data structure with the same amortized efficiency as the classical Fibonacci heap. All heap operations except delete and deletemin take O(1) time, worst case as well as amortized; delete and deletemin take O(log n) amortized time. Hollow heaps are by far the simplest structure to achieve this. Hollow heaps combine two novel ideas: the use of lazy deletion and reinsertion to do decreasekey operations, and the use of a dag (directed acyclic graph) instead of a tree or set of trees to represent a heap. Lazy deletion produces hollow nodes (nodes without items), giving the data structure its name.
The WeakHeap Data Structure: Variants and Applications
, 2013
"... The weak heap is a priority queue that was introduced as a competitive structure for sorting. Its arraybased form supports the operations findmin in O(1) worstcase time, and insert and deletemin in O(lg n) worstcase time using at most dlg ne element comparisons. Additionally, its pointerbased ..."
Abstract
 Add to MetaCart
The weak heap is a priority queue that was introduced as a competitive structure for sorting. Its arraybased form supports the operations findmin in O(1) worstcase time, and insert and deletemin in O(lg n) worstcase time using at most dlg ne element comparisons. Additionally, its pointerbased form supports delete and decrease in O(lg n) worstcase time using at most dlg ne element comparisons. In this paper we enhance this data structure as follows: 1. We improve the arraybased form to support insert in O(1) amortized time. The main idea is to temporarily store the inserted elements in a buffer, and, once the buffer is full, to move its elements to the heap using an efficient bulkinsertion procedure. As an application, we use this variant in the implementation of adaptive heapsort. Accordingly, we guarantee, for several measures of disorder, that the formula expressing the number of element comparisons performed by the algorithm is optimal up to the constant factor of the highorder term. Unlike other previous constant