External memory priority queues with decrease-key and applications to graph algorithms

03/07/2019
by   John Iacono, et al.
0

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

Please sign up or login with your details

Forgot password? Click here to reset
Success!
Error Icon An error occurred

Sign in with Google

×

Use your Google Account to sign in to DeepAI

×

Consider DeepAI Pro