Engineering Parallel Bi-Criteria Shortest Path Search

The multi-criteria shortest path problem is concerned with the minimization of multiple, possibly conflicting objectives such as travel time and highway tolls. Sanders and Mandow [60] present a parallel algorithm for this problem. They generalize Dijkstra’s [18] single-criterion shortest path algorithm to multiple criteria, while parallelizing all additional work induced by this generalization. For the bi-criteria case they even show that their algorithm performs less work than classic bi-criteria algorithms. We discuss in how far these theoretical results translate into an efficient implementation for modern shared-memory multiprocessors. In particular, we focus on a cache-efficient implementation of the bi-criteria case and present an extensive evaluation of the algorithm and its underlying data structures. The evaluation indicates that parallel bi-criteria shortest path search is feasible in practice. Our implementation exhibits significant speedups when solving difficult problem instances in parallel. In addition, even a sequential implementation is competitive to classic bicriteria shortest path algorithms. As an additional contribution of independent interest, we present parallel bulk updates for weight-balanced B-trees [3]. We use this technique to implement the Pareto queue, a multi-dimensional generalization of a priority queue proposed by Sanders and Mandow [60] and required by their algorithm. Zusammenfassung Bei der Berechnung von kürzesten Wegen gibt es häufig nicht nur ein, sondern mehrere interessante Kriterien, wie zum Beispiel die Reisezeit und die Mautkosten für die jeweilige Strecke. Sanders und Mandow [60] präsentieren einen parallel Algorithmus für dieses multi-kriterielle kürzesten Wege Problem. Bei dem Algorithmus handelt es sich um eine Verallgemeinerung des Algorithmus von Dijkstra [18] von einem auf mehrere Kriterien, jedoch unter Parallelisierung jeglicher zusätzlich entstehender Arbeit. Für den bi-kriteriellen Fall kann sogar gezeigt werden, dass im parallelen Algorithmus weniger Arbeit als in klassischen Ansätzen anfällt. In der vorliegenden Arbeit wird untersucht, inwieweit sich diese theoretischen Ergebnisse in die Praxis übertragen lassen. Wir erarbeiten hierzu eine cache-effiziente, bi-kriterielle Implementierung des Algorithmus für moderne Multiprozessorsysteme mit geteiltem Speicher. Unsere experimentellen Untersuchungen zeigen die Praktikabilität paralleler bi-kriterieller Suche. Die parallele Implementierung des Algorithmus liefert signifikante Beschleunigungen für Probleminstanzen mit unkorrelierten oder negativ korrelierten Kriterien. Darüber hinaus kann für diese Instanzen sogar gezeigt werden, dass selbst im sequentiellen Fall der parallele Algorithmus kompetitiv zu klassischen bi-kriteriellen Verfahren ist. Als zusätzlicher Beitrag allgemeineren Interesses präsentieren wir parallele Massenupdates für gewichtsbalancierte B-Bäume [3]. Wir verwenden diese Technik zur Realisierung der Pareto queue, einer mehrdimensionalen Verallgemeinerung von Prioritätswarteschlangen, welche von Sanders und Mandow [60] im Zuge ihres parallelen Algorithmus eingeführt wurde.