Fibonacci heaps and their uses in improved network optimization algorithms

In this paper we develop a new data structure for implementing heaps (priority queues). Our structure, <italic>Fibonacci heaps</italic> (abbreviated <italic>F-heaps</italic>), extends the binomial queues proposed by Vuillemin and studied further by Brown. F-heaps support arbitrary deletion from an <italic>n</italic>-item heap in <italic>O</italic>(log <italic>n</italic>) amortized time and all other standard heap operations in <italic>O</italic>(1) amortized time. Using F-heaps we are able to obtain improved running times for several network optimization algorithms. In particular, we obtain the following worst-case bounds, where <italic>n</italic> is the number of vertices and <italic>m</italic> the number of edges in the problem graph:<list><item><italic>O</italic>(<italic>n</italic> log <italic>n</italic> + <italic>m</italic>) for the single-source shortest path problem with nonnegative edge lengths, improved from <italic>O</italic>(<italic>m</italic>log<subscrpt>(<italic>m/n</italic>+2)</subscrpt><italic>n</italic>); </item><item><italic>O</italic>(<italic>n</italic><supscrpt>2</supscrpt>log <italic>n</italic> + <italic>nm</italic>) for the all-pairs shortest path problem, improved from <italic>O</italic>(<italic>nm</italic> log<subscrpt>(<italic>m/n</italic>+2)</subscrpt><italic>n</italic>); </item><item><italic>O</italic>(<italic>n</italic><supscrpt>2</supscrpt>log <italic>n</italic> + <italic>nm</italic>) for the assignment problem (weighted bipartite matching), improved from <italic>O</italic>(<italic>nm</italic>log<subscrpt>(<italic>m/n</italic>+2)</subscrpt><italic>n</italic>); </item><item><italic>O</italic>(<italic>mβ</italic>(<italic>m, n</italic>)) for the minimum spanning tree problem, improved from <italic>O</italic>(<italic>m</italic>log log<subscrpt>(<italic>m/n</italic>+2)</subscrpt><italic>n</italic>); where <italic>β</italic>(<italic>m, n</italic>) = min {<italic>i</italic> ↿ log<supscrpt>(<italic>i</italic>)</supscrpt><italic>n</italic> ≤ <italic>m/n</italic>}. Note that <italic>β</italic>(<italic>m, n</italic>) ≤ log<supscrpt>*</supscrpt><italic>n</italic> if <italic>m</italic> ≥ <italic>n</italic>. </item></list>Of these results, the improved bound for minimum spanning trees is the most striking, although all the results give asymptotic improvements for graphs of appropriate densities.

[1]  Matthias F. Stallmann,et al.  Efficient Algorithms for Graphic Matroid Intersection and Parity (Extended Abstract) , 1985, ICALP.

[2]  Robert E. Tarjan,et al.  Efficient Algorithms for a Family of Matroid Intersection Problems , 1984, J. Algorithms.

[3]  Francesco Maffioli,et al.  A note on finding optimum branchings , 1979, Networks.

[4]  Robert E. Tarjan,et al.  Finding Minimum Spanning Trees , 1976, SIAM J. Comput..

[5]  Andrew Chi-Chih Yao,et al.  An O(|E| log log |V|) Algorithm for Finding Minimum Spanning Trees , 1975, Inf. Process. Lett..

[6]  Robert E. Tarjan,et al.  A Class of Algorithms which Require Nonlinear Time to Maintain Disjoint Sets , 1979, J. Comput. Syst. Sci..

[7]  Donald E. Knuth,et al.  A Generalization of Dijkstra's Algorithm , 1977, Inf. Process. Lett..

[8]  Donald B. Johnson,et al.  Efficient Algorithms for Shortest Paths in Sparse Networks , 1977, J. ACM.

[9]  Robert E. Tarjan,et al.  Data structures and network algorithms , 1983, CBMS-NSF regional conference series in applied mathematics.

[10]  Harold N. Gabow,et al.  Efficient Algorithms for Graphic Intersection and Parity (Extended Abstract) , 1985 .

[11]  R. Tarjan Amortized Computational Complexity , 1985 .

[12]  Jan van Leeuwen,et al.  Worst-case Analysis of Set Union Algorithms , 1984, JACM.

[13]  Donald E. Knuth,et al.  The art of computer programming: sorting and searching (volume 3) , 1973 .

[14]  Edsger W. Dijkstra,et al.  A note on two problems in connexion with graphs , 1959, Numerische Mathematik.

[15]  R. Prim Shortest connection networks and some generalizations , 1957 .

[16]  Mark R. Brown,et al.  Implementation and Analysis of Binomial Queue Algorithms , 1978, SIAM J. Comput..

[17]  Ronald L. Graham,et al.  On the History of the Minimum Spanning Tree Problem , 1985, Annals of the History of Computing.

[18]  Jean Vuillemin,et al.  A data structure for manipulating priority queues , 1978, CACM.

[19]  János Komlós Linear Verification for Spanning Trees , 1984, FOCS.

[20]  Charles J. McCallum A generalized upper bounding approach to a communications network planning problem , 1977, Networks.

[21]  Robert E. Tarjan,et al.  Self-Adjusting Heaps , 1986, SIAM J. Comput..

[22]  Donald Ervin Knuth,et al.  The Art of Computer Programming, 2nd Ed. (Addison-Wesley Series in Computer Science and Information , 1978 .

[23]  Robert E. Tarjan,et al.  A quick method for finding shortest pairs of disjoint paths , 1984, Networks.

[24]  Zvi Galil,et al.  Efficient Implementation of Graph Algorithms Using Contraction , 1984, FOCS.

[25]  Robert E. Tarjan,et al.  Efficient algorithms for finding minimum spanning trees in undirected and directed graphs , 1986, Comb..

[26]  Robert E. Tarjan,et al.  Applications of Path Compression on Balanced Trees , 1979, JACM.

[27]  Richard M. Karp,et al.  Theoretical Improvements in Algorithmic Efficiency for Network Flow Problems , 1972, Combinatorial Optimization.

[28]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[29]  Dan Gusfield,et al.  Bounds for Naive Multiple Machine Scheduling with Release Times and Deadlines , 1984, J. Algorithms.

[30]  Robert E. Tarjan,et al.  Finding optimum branchings , 1977, Networks.

[31]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[32]  S. Micali,et al.  Priority queues with variable priority and an O(EV log V) algorithm for finding a maximal weighted matching in general graphs , 1982, FOCS 1982.