Table of Contents
Fetching ...

Exploring Monotone Priority Queues for Dijkstra Optimization

Jonas Costa, Lucas Castro, Rosiane de Freitas

TL;DR

This paper presents a comprehensive review of monotone priority queues, a class of data structures that play a crucial role in solving the Shortest Path Problem efficiently.

Abstract

This paper presents a comprehensive overview of monotone priority queues, focusing on their evolution and application in shortest path algorithms. Monotone priority queues are characterized by the property that their minimum key does not decrease over time, making them particularly effective for label-setting algorithms like Dijkstra's. Some key data structures within this category are explored, emphasizing those derived directly from Dial's algorithm, including variations of multi-level bucket structures and radix heaps. Theoretical complexities and practical considerations of these structures are discussed, with insights into their development and refinement provided through a historical timeline.

Exploring Monotone Priority Queues for Dijkstra Optimization

TL;DR

This paper presents a comprehensive review of monotone priority queues, a class of data structures that play a crucial role in solving the Shortest Path Problem efficiently.

Abstract

This paper presents a comprehensive overview of monotone priority queues, focusing on their evolution and application in shortest path algorithms. Monotone priority queues are characterized by the property that their minimum key does not decrease over time, making them particularly effective for label-setting algorithms like Dijkstra's. Some key data structures within this category are explored, emphasizing those derived directly from Dial's algorithm, including variations of multi-level bucket structures and radix heaps. Theoretical complexities and practical considerations of these structures are discussed, with insights into their development and refinement provided through a historical timeline.
Paper Structure (14 sections, 4 theorems, 4 figures, 1 table, 2 algorithms)

This paper contains 14 sections, 4 theorems, 4 figures, 1 table, 2 algorithms.

Key Result

Proposition 1

In any round $r\geq 0$, the range of the active bucket in level $i$ corresponds to the bounds of level $i-1$, for every level $i \in \{1, 2, \dots, k-1\}$.

Figures (4)

  • Figure 1: Example on how Dial's algorithm works with a 1-level bucket. The input graph with $C= 4$ is shown in (\ref{['fig:graph']}). The numbers around the arcs denote their weights. Outside the main loop, the source vertex $s$ was inserted in $\mathcal{B} [0]$. In the first iteration of the loop, $s$ is removed and its out-neighbors are added into the proper buckets (\ref{['fig:it1']}). Another vertex is selected in the following step and its neighbors are also added in $\mathcal{B}$ . The vertex $h$ is relocated from $\mathcal{B} [4]$ to $\mathcal{B} [2]$ (\ref{['fig:it2']}).
  • Figure 2: Conceptual view of a 2-level bucket structure. The numbers on the right side of each top-level bucket stand for its range.
  • Figure 3: The two levels of a 2-level bucket implementation for $C = 15$. The numbers on the right side of each top-level bucket stand for its range.
  • Figure 4: Representation of a one-level radix heap at the initial state assuming $C=15$.

Theorems & Definitions (4)

  • Proposition 1
  • Theorem 2
  • Theorem 3: thorup_integer_2004
  • Theorem 4: thorup_ram_1996