External memory priority queues with decrease-key and applications to graph algorithms
We present priority queues in the external memory model with block size B and main memory size M that support on N elements, operation Update (a combination of operations Insert and Decrease-Key) in O(1/B_M/BN/B) amortized I/Os, operation Extract-Min in O(M^ε/B_M/BN/B) amortized I/Os and operation Delete in O(M^ε/B^2_M/BN/B) amortized I/Os, for any real ε∈(0,1), using O(N/B_M/BN/B) blocks. Previous I/O-efficient priority queues either support these operations in O(1/B_2 N/B) amortized I/Os [Kumar and Schwabe, SPDP '96], or support only operations Insert, Delete and Extract-Min in optimal O(1/B_M/BN/B) amortized I/Os, however without supporting Decrease-Key [Fadel et al., TCS '99]. We also present buffered repository trees that support on a multi-set of N elements, operations Insert and Extract (on K extracted elements) in O(1/B_M/BN/B) and O(_M/BN/B + K/B) amortized I/Os, respectively, using O(N/B) blocks. This improves upon the previous I/O-bounds that achieve a base-2 logarithm instead [Buchsbaum et al., SODA '00]. Our results imply improved O(E/B_M/BE/B) I/Os for single-source shortest paths, depth-first search and breadth-first search algorithms on massive directed graphs with an edge-to-node ratio E/V=Ω(M^ε), which is equal to the I/O-optimal bound for sorting E values in external memory.
READ FULL TEXT