implementation of thorup's linear time algorithm for undirected single source shortest paths...

158
M T B U

Upload: nick-pruehs

Post on 19-May-2015

1.119 views

Category:

Technology


3 download

DESCRIPTION

Mikkel Thorup found the first deterministic algorithm to solve the classic single-source shortest paths problem for undirected graphs with positive integer weights in linear time and space. The algorithm requires a hierarchical bucketing structure for identifying the order the vertices have to be visited in without breaking this time bound, thus avoiding the sorting bottleneck of the algorithm proposed by Dijkstra in 1959.

TRANSCRIPT

Page 1: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Implementation of Thorup's Linear Time

Algorithm for Undirected Single-Source

Shortest Paths with Positive Integer Weights

Nick Prühs

Department of Computer Science, CAU Kiel

September 30, 2009

Page 2: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithm

Implementation details

Performance

Conclusion

Page 3: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithm

Implementation details

Performance

Conclusion

Page 4: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithm

Implementation details

Performance

Conclusion

Page 5: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithm

Implementation details

Performance

Conclusion

Page 6: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithm

Implementation details

Performance

Conclusion

Page 7: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithmOverviewmsb-Minimum spanning tree MComponent tree TBucketing structure BUnvisited data structure UVisiting components and vertices

Implementation details

Performance

Conclusion

Page 8: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe Single-Source Shortest Paths Problem

I in:

I undirected, connected graph G = (V ,E ) with |V | = n

vertices and |E | = m edgesI positive edge weight function w : V × V → N with∀(u, v) /∈ E : w(u, v) =∞

I distinguished source vertex s ∈ V

I out: d(v) = dist(v , s) for all other vertices v ∈ V \ s

Page 9: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe Single-Source Shortest Paths Problem

I in:I undirected, connected graph G = (V ,E ) with |V | = n

vertices and |E | = m edges

I positive edge weight function w : V × V → N with∀(u, v) /∈ E : w(u, v) =∞

I distinguished source vertex s ∈ V

I out: d(v) = dist(v , s) for all other vertices v ∈ V \ s

Page 10: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe Single-Source Shortest Paths Problem

I in:I undirected, connected graph G = (V ,E ) with |V | = n

vertices and |E | = m edgesI positive edge weight function w : V × V → N with∀(u, v) /∈ E : w(u, v) =∞

I distinguished source vertex s ∈ V

I out: d(v) = dist(v , s) for all other vertices v ∈ V \ s

Page 11: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe Single-Source Shortest Paths Problem

I in:I undirected, connected graph G = (V ,E ) with |V | = n

vertices and |E | = m edgesI positive edge weight function w : V × V → N with∀(u, v) /∈ E : w(u, v) =∞

I distinguished source vertex s ∈ V

I out: d(v) = dist(v , s) for all other vertices v ∈ V \ s

Page 12: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe Single-Source Shortest Paths Problem

I in:I undirected, connected graph G = (V ,E ) with |V | = n

vertices and |E | = m edgesI positive edge weight function w : V × V → N with∀(u, v) /∈ E : w(u, v) =∞

I distinguished source vertex s ∈ V

I out: d(v) = dist(v , s) for all other vertices v ∈ V \ s

Page 13: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionDijkstra's algorithm

I proposed by Edsger W. Dijkstra [Dij59]

I additional denitions:I set of visited vertices S ⊆ VI super distance D(v) ≥ d(v) for every vertex v ∈ V ,

with

D(v) =

d(v), v ∈ S

minu∈Sd(u) + w(u, v), v /∈ S

I initialization:I S = sI D(s) = d(s) = 0I ∀v 6= s : D(v) = w(s, v)

I algorithm:1. while S 6= V : visit the vertex v /∈ S minimizing D(v)

1.1 move v to S , because D(v) = d(v)1.2 for all (u, v) ∈ E , decrease D(u) to D(v) + w(u, v), if

the latter is less

Page 14: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionDijkstra's algorithm

I proposed by Edsger W. Dijkstra [Dij59]

I additional denitions:I set of visited vertices S ⊆ VI super distance D(v) ≥ d(v) for every vertex v ∈ V ,

with

D(v) =

d(v), v ∈ S

minu∈Sd(u) + w(u, v), v /∈ S

I initialization:I S = sI D(s) = d(s) = 0I ∀v 6= s : D(v) = w(s, v)

I algorithm:1. while S 6= V : visit the vertex v /∈ S minimizing D(v)

1.1 move v to S , because D(v) = d(v)1.2 for all (u, v) ∈ E , decrease D(u) to D(v) + w(u, v), if

the latter is less

Page 15: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionDijkstra's algorithm

I proposed by Edsger W. Dijkstra [Dij59]

I additional denitions:I set of visited vertices S ⊆ VI super distance D(v) ≥ d(v) for every vertex v ∈ V ,

with

D(v) =

d(v), v ∈ S

minu∈Sd(u) + w(u, v), v /∈ S

I initialization:I S = sI D(s) = d(s) = 0I ∀v 6= s : D(v) = w(s, v)

I algorithm:1. while S 6= V : visit the vertex v /∈ S minimizing D(v)

1.1 move v to S , because D(v) = d(v)1.2 for all (u, v) ∈ E , decrease D(u) to D(v) + w(u, v), if

the latter is less

Page 16: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionDijkstra's algorithm

I proposed by Edsger W. Dijkstra [Dij59]

I additional denitions:I set of visited vertices S ⊆ VI super distance D(v) ≥ d(v) for every vertex v ∈ V ,

with

D(v) =

d(v), v ∈ S

minu∈Sd(u) + w(u, v), v /∈ S

I initialization:I S = sI D(s) = d(s) = 0I ∀v 6= s : D(v) = w(s, v)

I algorithm:1. while S 6= V : visit the vertex v /∈ S minimizing D(v)

1.1 move v to S , because D(v) = d(v)1.2 for all (u, v) ∈ E , decrease D(u) to D(v) + w(u, v), if

the latter is less

Page 17: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionDijkstra's algorithm

I proposed by Edsger W. Dijkstra [Dij59]

I additional denitions:I set of visited vertices S ⊆ VI super distance D(v) ≥ d(v) for every vertex v ∈ V ,

with

D(v) =

d(v), v ∈ S

minu∈Sd(u) + w(u, v), v /∈ S

I initialization:I S = sI D(s) = d(s) = 0I ∀v 6= s : D(v) = w(s, v)

I algorithm:1. while S 6= V : visit the vertex v /∈ S minimizing D(v)

1.1 move v to S , because D(v) = d(v)1.2 for all (u, v) ∈ E , decrease D(u) to D(v) + w(u, v), if

the latter is less

Page 18: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe problem: The bottleneck of Dijkstra's algorithm

I running time results from two operations:

I deleteMin: nd a vertex v /∈ S minimizing D(v)(exactly n − 1 times)

I decreaseKey: decrease D(u) (at most m times)

I naive implementation:I deleteMin in O(n)I decreaseKey in O(1)I total running time is O(n2 + m)

I implementation with Fibonacci heaps [FT84]:I deleteMin has amortized running time O(log n)I decreaseKey has running time O(1)I total running time is O(n log n + m)

I linear time Dijkstra requires linear time sorting

I sorting using comparisons only requires Ω(n log n)comparisons

Page 19: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe problem: The bottleneck of Dijkstra's algorithm

I running time results from two operations:I deleteMin: nd a vertex v /∈ S minimizing D(v)

(exactly n − 1 times)

I decreaseKey: decrease D(u) (at most m times)

I naive implementation:I deleteMin in O(n)I decreaseKey in O(1)I total running time is O(n2 + m)

I implementation with Fibonacci heaps [FT84]:I deleteMin has amortized running time O(log n)I decreaseKey has running time O(1)I total running time is O(n log n + m)

I linear time Dijkstra requires linear time sorting

I sorting using comparisons only requires Ω(n log n)comparisons

Page 20: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe problem: The bottleneck of Dijkstra's algorithm

I running time results from two operations:I deleteMin: nd a vertex v /∈ S minimizing D(v)

(exactly n − 1 times)I decreaseKey: decrease D(u) (at most m times)

I naive implementation:I deleteMin in O(n)I decreaseKey in O(1)I total running time is O(n2 + m)

I implementation with Fibonacci heaps [FT84]:I deleteMin has amortized running time O(log n)I decreaseKey has running time O(1)I total running time is O(n log n + m)

I linear time Dijkstra requires linear time sorting

I sorting using comparisons only requires Ω(n log n)comparisons

Page 21: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe problem: The bottleneck of Dijkstra's algorithm

I running time results from two operations:I deleteMin: nd a vertex v /∈ S minimizing D(v)

(exactly n − 1 times)I decreaseKey: decrease D(u) (at most m times)

I naive implementation:I deleteMin in O(n)I decreaseKey in O(1)I total running time is O(n2 + m)

I implementation with Fibonacci heaps [FT84]:I deleteMin has amortized running time O(log n)I decreaseKey has running time O(1)I total running time is O(n log n + m)

I linear time Dijkstra requires linear time sorting

I sorting using comparisons only requires Ω(n log n)comparisons

Page 22: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe problem: The bottleneck of Dijkstra's algorithm

I running time results from two operations:I deleteMin: nd a vertex v /∈ S minimizing D(v)

(exactly n − 1 times)I decreaseKey: decrease D(u) (at most m times)

I naive implementation:I deleteMin in O(n)I decreaseKey in O(1)I total running time is O(n2 + m)

I implementation with Fibonacci heaps [FT84]:I deleteMin has amortized running time O(log n)I decreaseKey has running time O(1)I total running time is O(n log n + m)

I linear time Dijkstra requires linear time sorting

I sorting using comparisons only requires Ω(n log n)comparisons

Page 23: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe problem: The bottleneck of Dijkstra's algorithm

I running time results from two operations:I deleteMin: nd a vertex v /∈ S minimizing D(v)

(exactly n − 1 times)I decreaseKey: decrease D(u) (at most m times)

I naive implementation:I deleteMin in O(n)I decreaseKey in O(1)I total running time is O(n2 + m)

I implementation with Fibonacci heaps [FT84]:I deleteMin has amortized running time O(log n)I decreaseKey has running time O(1)I total running time is O(n log n + m)

I linear time Dijkstra requires linear time sorting

I sorting using comparisons only requires Ω(n log n)comparisons

Page 24: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe problem: The bottleneck of Dijkstra's algorithm

I running time results from two operations:I deleteMin: nd a vertex v /∈ S minimizing D(v)

(exactly n − 1 times)I decreaseKey: decrease D(u) (at most m times)

I naive implementation:I deleteMin in O(n)I decreaseKey in O(1)I total running time is O(n2 + m)

I implementation with Fibonacci heaps [FT84]:I deleteMin has amortized running time O(log n)I decreaseKey has running time O(1)I total running time is O(n log n + m)

I linear time Dijkstra requires linear time sorting

I sorting using comparisons only requires Ω(n log n)comparisons

Page 25: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe solution: Avoiding the sorting bottleneck

I Thorup [Tho99] does not visit the vertices in order ofincreasing distance from s

I identies vertex pairs that can be visited in any order,using a hierarchical bucketing structure

I requires several other data structures to be computedbefore

Page 26: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe solution: Avoiding the sorting bottleneck

I Thorup [Tho99] does not visit the vertices in order ofincreasing distance from s

I identies vertex pairs that can be visited in any order,using a hierarchical bucketing structure

I requires several other data structures to be computedbefore

Page 27: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe solution: Avoiding the sorting bottleneck

I Thorup [Tho99] does not visit the vertices in order ofincreasing distance from s

I identies vertex pairs that can be visited in any order,using a hierarchical bucketing structure

I requires several other data structures to be computedbefore

Page 28: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

IntroductionThe solution: Avoiding the sorting bottleneck

I Thorup [Tho99] does not visit the vertices in order ofincreasing distance from s

I identies vertex pairs that can be visited in any order,using a hierarchical bucketing structure

I requires several other data structures to be computedbefore

Page 29: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithmOverviewmsb-Minimum spanning tree MComponent tree TBucketing structure BUnvisited data structure UVisiting components and vertices

Implementation details

Performance

Conclusion

Page 30: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmOverview

I Thorup's algorithm inherits. . .

I . . . the denition of G , V , E , n, m, w , d , s, S and DI . . . the initialization of S and DI . . . visiting a vertex v ∈ V , which might decrease D(u)

for some adjacent vertices u ∈ V and moves v to S

I but Thorup allows visiting a vertex v /∈ S notminimizing D(v)

I in order to identify the next vertex to be visited, thevertices are placed in buckets

I every bucket is associated with a component, a node ofthe component tree explained later

Page 31: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmOverview

I Thorup's algorithm inherits. . .I . . . the denition of G , V , E , n, m, w , d , s, S and D

I . . . the initialization of S and DI . . . visiting a vertex v ∈ V , which might decrease D(u)

for some adjacent vertices u ∈ V and moves v to S

I but Thorup allows visiting a vertex v /∈ S notminimizing D(v)

I in order to identify the next vertex to be visited, thevertices are placed in buckets

I every bucket is associated with a component, a node ofthe component tree explained later

Page 32: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmOverview

I Thorup's algorithm inherits. . .I . . . the denition of G , V , E , n, m, w , d , s, S and DI . . . the initialization of S and D

I . . . visiting a vertex v ∈ V , which might decrease D(u)for some adjacent vertices u ∈ V and moves v to S

I but Thorup allows visiting a vertex v /∈ S notminimizing D(v)

I in order to identify the next vertex to be visited, thevertices are placed in buckets

I every bucket is associated with a component, a node ofthe component tree explained later

Page 33: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmOverview

I Thorup's algorithm inherits. . .I . . . the denition of G , V , E , n, m, w , d , s, S and DI . . . the initialization of S and DI . . . visiting a vertex v ∈ V , which might decrease D(u)

for some adjacent vertices u ∈ V and moves v to S

I but Thorup allows visiting a vertex v /∈ S notminimizing D(v)

I in order to identify the next vertex to be visited, thevertices are placed in buckets

I every bucket is associated with a component, a node ofthe component tree explained later

Page 34: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmOverview

I Thorup's algorithm inherits. . .I . . . the denition of G , V , E , n, m, w , d , s, S and DI . . . the initialization of S and DI . . . visiting a vertex v ∈ V , which might decrease D(u)

for some adjacent vertices u ∈ V and moves v to S

I but Thorup allows visiting a vertex v /∈ S notminimizing D(v)

I in order to identify the next vertex to be visited, thevertices are placed in buckets

I every bucket is associated with a component, a node ofthe component tree explained later

Page 35: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmOverview

I Thorup's algorithm inherits. . .I . . . the denition of G , V , E , n, m, w , d , s, S and DI . . . the initialization of S and DI . . . visiting a vertex v ∈ V , which might decrease D(u)

for some adjacent vertices u ∈ V and moves v to S

I but Thorup allows visiting a vertex v /∈ S notminimizing D(v)

I in order to identify the next vertex to be visited, thevertices are placed in buckets

I every bucket is associated with a component, a node ofthe component tree explained later

Page 36: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmOverview

I Thorup's algorithm inherits. . .I . . . the denition of G , V , E , n, m, w , d , s, S and DI . . . the initialization of S and DI . . . visiting a vertex v ∈ V , which might decrease D(u)

for some adjacent vertices u ∈ V and moves v to S

I but Thorup allows visiting a vertex v /∈ S notminimizing D(v)

I in order to identify the next vertex to be visited, thevertices are placed in buckets

I every bucket is associated with a component, a node ofthe component tree explained later

Page 37: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe main routine

The whole algorithm can be summarized in top-levelpseudo-code as follows:

1. Construct an msb-minimum spanning tree M in O(m).

2. Construct the component tree T in O(m).

3. Construct the unvisited data structure U in O(n).

4. Set S = s.5. Set D(s) = 0.

6. For all v ∈ V with v 6= s: Set D(v) = w(s, v).

7. Visit the root of the component tree T .

8. Return D.

Page 38: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe main routine

The whole algorithm can be summarized in top-levelpseudo-code as follows:

1. Construct an msb-minimum spanning tree M in O(m).

2. Construct the component tree T in O(m).

3. Construct the unvisited data structure U in O(n).

4. Set S = s.5. Set D(s) = 0.

6. For all v ∈ V with v 6= s: Set D(v) = w(s, v).

7. Visit the root of the component tree T .

8. Return D.

Page 39: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe main routine

The whole algorithm can be summarized in top-levelpseudo-code as follows:

1. Construct an msb-minimum spanning tree M in O(m).

2. Construct the component tree T in O(m).

3. Construct the unvisited data structure U in O(n).

4. Set S = s.5. Set D(s) = 0.

6. For all v ∈ V with v 6= s: Set D(v) = w(s, v).

7. Visit the root of the component tree T .

8. Return D.

Page 40: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe main routine

The whole algorithm can be summarized in top-levelpseudo-code as follows:

1. Construct an msb-minimum spanning tree M in O(m).

2. Construct the component tree T in O(m).

3. Construct the unvisited data structure U in O(n).

4. Set S = s.5. Set D(s) = 0.

6. For all v ∈ V with v 6= s: Set D(v) = w(s, v).

7. Visit the root of the component tree T .

8. Return D.

Page 41: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe main routine

The whole algorithm can be summarized in top-levelpseudo-code as follows:

1. Construct an msb-minimum spanning tree M in O(m).

2. Construct the component tree T in O(m).

3. Construct the unvisited data structure U in O(n).

4. Set S = s.5. Set D(s) = 0.

6. For all v ∈ V with v 6= s: Set D(v) = w(s, v).

7. Visit the root of the component tree T .

8. Return D.

Page 42: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe main routine

The whole algorithm can be summarized in top-levelpseudo-code as follows:

1. Construct an msb-minimum spanning tree M in O(m).

2. Construct the component tree T in O(m).

3. Construct the unvisited data structure U in O(n).

4. Set S = s.5. Set D(s) = 0.

6. For all v ∈ V with v 6= s: Set D(v) = w(s, v).

7. Visit the root of the component tree T .

8. Return D.

Page 43: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithmOverviewmsb-Minimum spanning tree MComponent tree TBucketing structure BUnvisited data structure UVisiting components and vertices

Implementation details

Performance

Conclusion

Page 44: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmConstructing a minimum spanning tree in linear time?

I construction of a minimum spanning tree is possible inlinear time [FW90]

I this requires a priority queue called atomic heap, whichrequires n > 212

20

I nd a dierent way for today's computers

Page 45: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmConstructing a minimum spanning tree in linear time?

I construction of a minimum spanning tree is possible inlinear time [FW90]

I this requires a priority queue called atomic heap, whichrequires n > 212

20

I nd a dierent way for today's computers

Page 46: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmConstructing a minimum spanning tree in linear time?

I construction of a minimum spanning tree is possible inlinear time [FW90]

I this requires a priority queue called atomic heap, whichrequires n > 212

20

I nd a dierent way for today's computers

Page 47: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe msb-minimum spanning tree M

I let msb(x) = blog2 xc denote the position of the mostsignicant bit of x ∈ N

I an msb-minimum spanning tree of a graph G is aspanning tree that is minimal in G where each weight xis replaced by msb(x)

I use such an msb-minimum spanning tree forconstructing the component tree

Page 48: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe msb-minimum spanning tree M

I let msb(x) = blog2 xc denote the position of the mostsignicant bit of x ∈ N

I an msb-minimum spanning tree of a graph G is aspanning tree that is minimal in G where each weight xis replaced by msb(x)

I use such an msb-minimum spanning tree forconstructing the component tree

Page 49: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe msb-minimum spanning tree M

I let msb(x) = blog2 xc denote the position of the mostsignicant bit of x ∈ N

I an msb-minimum spanning tree of a graph G is aspanning tree that is minimal in G where each weight xis replaced by msb(x)

I use such an msb-minimum spanning tree forconstructing the component tree

Page 50: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmAn example of an input graph G (n = 11,m = 16)

Page 51: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe input graph G after having replaced each weight x by msb(x)

Page 52: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmAn msb-minimum spanning tree of G

Page 53: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmHow to construct an msb-minimum spanning tree

1. sort all edges according to their msb-weights in lineartime using simple bucketing

2. compute a minimum spanning tree with Kruskal'salgorithm [Kru56], using the pre-sorted edges

Page 54: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmHow to construct an msb-minimum spanning tree

1. sort all edges according to their msb-weights in lineartime using simple bucketing

2. compute a minimum spanning tree with Kruskal'salgorithm [Kru56], using the pre-sorted edges

Page 55: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmHow to construct an msb-minimum spanning tree

I the clustering is done with Tarjan's union-nd algorithm[Tar75]

I the use of union with size, and nd with path

compression leads to a time bound of O(α(m, n)m)

Page 56: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmHow to construct an msb-minimum spanning tree

I the clustering is done with Tarjan's union-nd algorithm[Tar75]

I the use of union with size, and nd with path

compression leads to a time bound of O(α(m, n)m)

Page 57: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithmOverviewmsb-Minimum spanning tree MComponent tree TBucketing structure BUnvisited data structure UVisiting components and vertices

Implementation details

Performance

Conclusion

Page 58: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component hierarchy

I let Gi be the subgraph of G containing all edges e ∈ E

with w(e) < 2i

I Level i of Thorup's component hierarchy consists of thecomponents of Gi

I use the msb-minimum spanning tree here

I let [v ]i denote the component on level i containing thevertex v ∈ V

I the children of a component [v ]i are all components[w ]i−1 with [w ]i = [v ]i , in other words with w ∈ [v ]i

I [v ]i 6= [w ]i ⇒ dist(v ,w) ≥ 2i

Page 59: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component hierarchy

I let Gi be the subgraph of G containing all edges e ∈ E

with w(e) < 2i

I Level i of Thorup's component hierarchy consists of thecomponents of Gi

I use the msb-minimum spanning tree here

I let [v ]i denote the component on level i containing thevertex v ∈ V

I the children of a component [v ]i are all components[w ]i−1 with [w ]i = [v ]i , in other words with w ∈ [v ]i

I [v ]i 6= [w ]i ⇒ dist(v ,w) ≥ 2i

Page 60: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component hierarchy

I let Gi be the subgraph of G containing all edges e ∈ E

with w(e) < 2i

I Level i of Thorup's component hierarchy consists of thecomponents of Gi

I use the msb-minimum spanning tree here

I let [v ]i denote the component on level i containing thevertex v ∈ V

I the children of a component [v ]i are all components[w ]i−1 with [w ]i = [v ]i , in other words with w ∈ [v ]i

I [v ]i 6= [w ]i ⇒ dist(v ,w) ≥ 2i

Page 61: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component hierarchy

I let Gi be the subgraph of G containing all edges e ∈ E

with w(e) < 2i

I Level i of Thorup's component hierarchy consists of thecomponents of Gi

I use the msb-minimum spanning tree here

I let [v ]i denote the component on level i containing thevertex v ∈ V

I the children of a component [v ]i are all components[w ]i−1 with [w ]i = [v ]i , in other words with w ∈ [v ]i

I [v ]i 6= [w ]i ⇒ dist(v ,w) ≥ 2i

Page 62: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component hierarchy

I let Gi be the subgraph of G containing all edges e ∈ E

with w(e) < 2i

I Level i of Thorup's component hierarchy consists of thecomponents of Gi

I use the msb-minimum spanning tree here

I let [v ]i denote the component on level i containing thevertex v ∈ V

I the children of a component [v ]i are all components[w ]i−1 with [w ]i = [v ]i , in other words with w ∈ [v ]i

I [v ]i 6= [w ]i ⇒ dist(v ,w) ≥ 2i

Page 63: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component hierarchy

I let Gi be the subgraph of G containing all edges e ∈ E

with w(e) < 2i

I Level i of Thorup's component hierarchy consists of thecomponents of Gi

I use the msb-minimum spanning tree here

I let [v ]i denote the component on level i containing thevertex v ∈ V

I the children of a component [v ]i are all components[w ]i−1 with [w ]i = [v ]i , in other words with w ∈ [v ]i

I [v ]i 6= [w ]i ⇒ dist(v ,w) ≥ 2i

Page 64: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe subgraph G4

Page 65: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component tree T

I the component tree T skips all nodes [v ]i = [v ]i−1:

I Every leaf of T is a singleton component [v ]0 = v,v ∈ V .

I Every internal node of T is a component [v ]i , v ∈ V ,with i > 0 and [v ]i−1 ( [v ]i .

I The root of T is the node [v ]r = G with r minimized.

I the parent of a node [v ]i is its nearest ancestor in thecomponent hierarchy with at least two children

I T has no nodes with exactly one child ⇒ the totalnumber of nodes is bounded by 2n ∈ O(n)

Page 66: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component tree T

I the component tree T skips all nodes [v ]i = [v ]i−1:

I Every leaf of T is a singleton component [v ]0 = v,v ∈ V .

I Every internal node of T is a component [v ]i , v ∈ V ,with i > 0 and [v ]i−1 ( [v ]i .

I The root of T is the node [v ]r = G with r minimized.

I the parent of a node [v ]i is its nearest ancestor in thecomponent hierarchy with at least two children

I T has no nodes with exactly one child ⇒ the totalnumber of nodes is bounded by 2n ∈ O(n)

Page 67: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component tree T

I the component tree T skips all nodes [v ]i = [v ]i−1:

I Every leaf of T is a singleton component [v ]0 = v,v ∈ V .

I Every internal node of T is a component [v ]i , v ∈ V ,with i > 0 and [v ]i−1 ( [v ]i .

I The root of T is the node [v ]r = G with r minimized.

I the parent of a node [v ]i is its nearest ancestor in thecomponent hierarchy with at least two children

I T has no nodes with exactly one child ⇒ the totalnumber of nodes is bounded by 2n ∈ O(n)

Page 68: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component tree T

I the component tree T skips all nodes [v ]i = [v ]i−1:

I Every leaf of T is a singleton component [v ]0 = v,v ∈ V .

I Every internal node of T is a component [v ]i , v ∈ V ,with i > 0 and [v ]i−1 ( [v ]i .

I The root of T is the node [v ]r = G with r minimized.

I the parent of a node [v ]i is its nearest ancestor in thecomponent hierarchy with at least two children

I T has no nodes with exactly one child ⇒ the totalnumber of nodes is bounded by 2n ∈ O(n)

Page 69: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component tree T

I the component tree T skips all nodes [v ]i = [v ]i−1:

I Every leaf of T is a singleton component [v ]0 = v,v ∈ V .

I Every internal node of T is a component [v ]i , v ∈ V ,with i > 0 and [v ]i−1 ( [v ]i .

I The root of T is the node [v ]r = G with r minimized.

I the parent of a node [v ]i is its nearest ancestor in thecomponent hierarchy with at least two children

I T has no nodes with exactly one child ⇒ the totalnumber of nodes is bounded by 2n ∈ O(n)

Page 70: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component tree T

I the component tree T skips all nodes [v ]i = [v ]i−1:

I Every leaf of T is a singleton component [v ]0 = v,v ∈ V .

I Every internal node of T is a component [v ]i , v ∈ V ,with i > 0 and [v ]i−1 ( [v ]i .

I The root of T is the node [v ]r = G with r minimized.

I the parent of a node [v ]i is its nearest ancestor in thecomponent hierarchy with at least two children

I T has no nodes with exactly one child ⇒ the totalnumber of nodes is bounded by 2n ∈ O(n)

Page 71: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe component tree T of G

Page 72: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe components of G4

Page 73: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe subgraph G4

Page 74: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmHow to construct the component tree T

1. sort the edges of M according to the most signicantbits of their weights

2. process the resulting sequence of edges e1, . . . , en−1 inthe following way: For i = 1 to n − 1:

2.1 Let (v ,w) = ei .2.2 Call union(v ,w).2.3 If msb(w(ei )) < msb(w(ei+1)): Insert all new

components of the union-nd structure into T .

Page 75: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmHow to construct the component tree T

1. sort the edges of M according to the most signicantbits of their weights

2. process the resulting sequence of edges e1, . . . , en−1 inthe following way: For i = 1 to n − 1:

2.1 Let (v ,w) = ei .2.2 Call union(v ,w).2.3 If msb(w(ei )) < msb(w(ei+1)): Insert all new

components of the union-nd structure into T .

Page 76: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmHow to construct the component tree T

1. sort the edges of M according to the most signicantbits of their weights

2. process the resulting sequence of edges e1, . . . , en−1 inthe following way: For i = 1 to n − 1:

2.1 Let (v ,w) = ei .2.2 Call union(v ,w).2.3 If msb(w(ei )) < msb(w(ei+1)): Insert all new

components of the union-nd structure into T .

Page 77: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmHow to construct the component tree T

I using Tarjan's union-nd algorithm [Tar75] again, therunning time is O(α(m, n)m)

I construction T in linear time is also possible:I requires the tabulation-based union-nd algorithm by

Gabow and Tarjan which runs in O(m + n) time [GT85]I much more complicated than the one by TarjanI we use the simpler one here

Page 78: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmHow to construct the component tree T

I using Tarjan's union-nd algorithm [Tar75] again, therunning time is O(α(m, n)m)

I construction T in linear time is also possible:

I requires the tabulation-based union-nd algorithm byGabow and Tarjan which runs in O(m + n) time [GT85]

I much more complicated than the one by TarjanI we use the simpler one here

Page 79: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmHow to construct the component tree T

I using Tarjan's union-nd algorithm [Tar75] again, therunning time is O(α(m, n)m)

I construction T in linear time is also possible:I requires the tabulation-based union-nd algorithm by

Gabow and Tarjan which runs in O(m + n) time [GT85]

I much more complicated than the one by TarjanI we use the simpler one here

Page 80: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmHow to construct the component tree T

I using Tarjan's union-nd algorithm [Tar75] again, therunning time is O(α(m, n)m)

I construction T in linear time is also possible:I requires the tabulation-based union-nd algorithm by

Gabow and Tarjan which runs in O(m + n) time [GT85]I much more complicated than the one by TarjanI we use the simpler one here

Page 81: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithmOverviewmsb-Minimum spanning tree MComponent tree TBucketing structure BUnvisited data structure UVisiting components and vertices

Implementation details

Performance

Conclusion

Page 82: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe bucketing structure B

I visit the nodes of the component tree T in the rightorder

I whenever a component [v ]i is visited, so are all itsancestors in T

I bucket the children [w ]h of a component [v ]i intoB([v ]i ,minD([w ]−h ) i − 1)

I maintain two additional properties for every component:I ix([v ]i ) ≤ the smallest index of a nonempty bucket of

[v ]iI ∆([v ]i ) = number buckets of [v ]i

I the total number of buckets is bounded by 8n

Page 83: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe bucketing structure B

I visit the nodes of the component tree T in the rightorder

I whenever a component [v ]i is visited, so are all itsancestors in T

I bucket the children [w ]h of a component [v ]i intoB([v ]i ,minD([w ]−h ) i − 1)

I maintain two additional properties for every component:I ix([v ]i ) ≤ the smallest index of a nonempty bucket of

[v ]iI ∆([v ]i ) = number buckets of [v ]i

I the total number of buckets is bounded by 8n

Page 84: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe bucketing structure B

I visit the nodes of the component tree T in the rightorder

I whenever a component [v ]i is visited, so are all itsancestors in T

I bucket the children [w ]h of a component [v ]i intoB([v ]i ,minD([w ]−h ) i − 1)

I maintain two additional properties for every component:I ix([v ]i ) ≤ the smallest index of a nonempty bucket of

[v ]iI ∆([v ]i ) = number buckets of [v ]i

I the total number of buckets is bounded by 8n

Page 85: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe bucketing structure B

I visit the nodes of the component tree T in the rightorder

I whenever a component [v ]i is visited, so are all itsancestors in T

I bucket the children [w ]h of a component [v ]i intoB([v ]i ,minD([w ]−h ) i − 1)

I maintain two additional properties for every component:I ix([v ]i ) ≤ the smallest index of a nonempty bucket of

[v ]iI ∆([v ]i ) = number buckets of [v ]i

I the total number of buckets is bounded by 8n

Page 86: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe bucketing structure B

I visit the nodes of the component tree T in the rightorder

I whenever a component [v ]i is visited, so are all itsancestors in T

I bucket the children [w ]h of a component [v ]i intoB([v ]i ,minD([w ]−h ) i − 1)

I maintain two additional properties for every component:I ix([v ]i ) ≤ the smallest index of a nonempty bucket of

[v ]iI ∆([v ]i ) = number buckets of [v ]i

I the total number of buckets is bounded by 8n

Page 87: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithmOverviewmsb-Minimum spanning tree MComponent tree TBucketing structure BUnvisited data structure UVisiting components and vertices

Implementation details

Performance

Conclusion

Page 88: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe unvisited data structure U

I The unvisited data structure U . . .

I . . . represents the unvisited subforest of the componenttree T

I . . . is required for maintaining the changing valuesminD([v ]−i ) for the changing set of roots [v ]i in theunvisited part of T in linear total time

I [v ]i is a root of a tree in U if and only if [v ]i is anunvisited child of a visited component in T

I [v ]i = [v ]−i for each of these roots, because they areunvisited

Page 89: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe unvisited data structure U

I The unvisited data structure U . . .I . . . represents the unvisited subforest of the component

tree T

I . . . is required for maintaining the changing valuesminD([v ]−i ) for the changing set of roots [v ]i in theunvisited part of T in linear total time

I [v ]i is a root of a tree in U if and only if [v ]i is anunvisited child of a visited component in T

I [v ]i = [v ]−i for each of these roots, because they areunvisited

Page 90: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe unvisited data structure U

I The unvisited data structure U . . .I . . . represents the unvisited subforest of the component

tree TI . . . is required for maintaining the changing values

minD([v ]−i ) for the changing set of roots [v ]i in theunvisited part of T in linear total time

I [v ]i is a root of a tree in U if and only if [v ]i is anunvisited child of a visited component in T

I [v ]i = [v ]−i for each of these roots, because they areunvisited

Page 91: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe unvisited data structure U

I The unvisited data structure U . . .I . . . represents the unvisited subforest of the component

tree TI . . . is required for maintaining the changing values

minD([v ]−i ) for the changing set of roots [v ]i in theunvisited part of T in linear total time

I [v ]i is a root of a tree in U if and only if [v ]i is anunvisited child of a visited component in T

I [v ]i = [v ]−i for each of these roots, because they areunvisited

Page 92: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe unvisited data structure U

I The unvisited data structure U . . .I . . . represents the unvisited subforest of the component

tree TI . . . is required for maintaining the changing values

minD([v ]−i ) for the changing set of roots [v ]i in theunvisited part of T in linear total time

I [v ]i is a root of a tree in U if and only if [v ]i is anunvisited child of a visited component in T

I [v ]i = [v ]−i for each of these roots, because they areunvisited

Page 93: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe problem: Operations of the unvisited data structure

I two operations in amortized constant time:

1. Update minD([v ]i ) whenever D(v) is decreased forsome vertex v ∈ V with unvisited root [v ]i .

2. Turn all children [w ]h of [v ]i in T into roots in U andcompute minD([w ]−h ) for all of them whenever anunvisited root [v ]i is visited.

I transform this problem into another one that can besolved by the split-ndmin structure by Gabow [Gab85]

Page 94: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe problem: Operations of the unvisited data structure

I two operations in amortized constant time:

1. Update minD([v ]i ) whenever D(v) is decreased forsome vertex v ∈ V with unvisited root [v ]i .

2. Turn all children [w ]h of [v ]i in T into roots in U andcompute minD([w ]−h ) for all of them whenever anunvisited root [v ]i is visited.

I transform this problem into another one that can besolved by the split-ndmin structure by Gabow [Gab85]

Page 95: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe initial unvisited data structure U of G

[1, 2, 3, 10, 8, 9, 4, 5, 7, 11, 6]

Page 96: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe unvisited data structure U after having called visit([1]11)

[1, 2, 3, 10, 8, 9, 4, 5, 7, 11] [6]

Page 97: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe unvisited data structure U after having called visit([1]9)

[1, 2, 3, 10, 8, 9, 4, 5, 7] [11] [6]

Page 98: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe unvisited data structure U after having called visit([1]7)

[1, 2, 3, 10, 8, 9] [4, 5, 7] [11] [6]

Page 99: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmTotal running time of the operations of the unvisited data structure

I for k ∈ N, k > 2, each split in k can be implemented byk − 1 splits in two

I at most n − 1 splits in two, because |V | = n

I at most m decreases, one for each edge in G

I Gabow's split-ndmin data structure supports exactlythese two operations

I the total runinng time for n− 1 splits and m decreases isO(α(m, n)m)

Page 100: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmTotal running time of the operations of the unvisited data structure

I for k ∈ N, k > 2, each split in k can be implemented byk − 1 splits in two

I at most n − 1 splits in two, because |V | = n

I at most m decreases, one for each edge in G

I Gabow's split-ndmin data structure supports exactlythese two operations

I the total runinng time for n− 1 splits and m decreases isO(α(m, n)m)

Page 101: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmTotal running time of the operations of the unvisited data structure

I for k ∈ N, k > 2, each split in k can be implemented byk − 1 splits in two

I at most n − 1 splits in two, because |V | = n

I at most m decreases, one for each edge in G

I Gabow's split-ndmin data structure supports exactlythese two operations

I the total runinng time for n− 1 splits and m decreases isO(α(m, n)m)

Page 102: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmTotal running time of the operations of the unvisited data structure

I for k ∈ N, k > 2, each split in k can be implemented byk − 1 splits in two

I at most n − 1 splits in two, because |V | = n

I at most m decreases, one for each edge in G

I Gabow's split-ndmin data structure supports exactlythese two operations

I the total runinng time for n− 1 splits and m decreases isO(α(m, n)m)

Page 103: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmTotal running time of the operations of the unvisited data structure

I for k ∈ N, k > 2, each split in k can be implemented byk − 1 splits in two

I at most n − 1 splits in two, because |V | = n

I at most m decreases, one for each edge in G

I Gabow's split-ndmin data structure supports exactlythese two operations

I the total runinng time for n− 1 splits and m decreases isO(α(m, n)m)

Page 104: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmOperations of the unvisited data structure in linear total time?

I Thorup presented an O(m + n) solution [Tho99]), whichis based on the atomic heaps by Fredman and Willard

I as mentioned above, these priority queues requiren > 212

20

I fall back to the solution by Gabow and to a totalrunning time of O(α(m, n)m)

Page 105: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmOperations of the unvisited data structure in linear total time?

I Thorup presented an O(m + n) solution [Tho99]), whichis based on the atomic heaps by Fredman and Willard

I as mentioned above, these priority queues requiren > 212

20

I fall back to the solution by Gabow and to a totalrunning time of O(α(m, n)m)

Page 106: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmOperations of the unvisited data structure in linear total time?

I Thorup presented an O(m + n) solution [Tho99]), whichis based on the atomic heaps by Fredman and Willard

I as mentioned above, these priority queues requiren > 212

20

I fall back to the solution by Gabow and to a totalrunning time of O(α(m, n)m)

Page 107: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithmOverviewmsb-Minimum spanning tree MComponent tree TBucketing structure BUnvisited data structure UVisiting components and vertices

Implementation details

Performance

Conclusion

Page 108: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe main routine revisited

1. Construct an msb-minimum spanning tree M in O(m).(done)

2. Construct the component tree T in O(m). (done)

3. Construct the unvisited data structure U in O(n).(done)

4. Set S = s. (done)5. Set D(s) = 0. (done)

6. For all v ∈ V with v 6= s: Set D(v) = w(s, v). (done)

7. Visit the root of the component tree T .

8. Return D.

Page 109: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe main routine revisited

1. Construct an msb-minimum spanning tree M in O(m).(done)

2. Construct the component tree T in O(m). (done)

3. Construct the unvisited data structure U in O(n).(done)

4. Set S = s. (done)5. Set D(s) = 0. (done)

6. For all v ∈ V with v 6= s: Set D(v) = w(s, v). (done)

7. Visit the root of the component tree T .

8. Return D.

Page 110: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe main routine revisited

1. Construct an msb-minimum spanning tree M in O(m).(done)

2. Construct the component tree T in O(m). (done)

3. Construct the unvisited data structure U in O(n).(done)

4. Set S = s. (done)5. Set D(s) = 0. (done)

6. For all v ∈ V with v 6= s: Set D(v) = w(s, v). (done)

7. Visit the root of the component tree T .

8. Return D.

Page 111: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe main routine revisited

1. Construct an msb-minimum spanning tree M in O(m).(done)

2. Construct the component tree T in O(m). (done)

3. Construct the unvisited data structure U in O(n).(done)

4. Set S = s. (done)5. Set D(s) = 0. (done)

6. For all v ∈ V with v 6= s: Set D(v) = w(s, v). (done)

7. Visit the root of the component tree T .

8. Return D.

Page 112: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmThe main routine revisited

1. Construct an msb-minimum spanning tree M in O(m).(done)

2. Construct the component tree T in O(m). (done)

3. Construct the unvisited data structure U in O(n).(done)

4. Set S = s. (done)5. Set D(s) = 0. (done)

6. For all v ∈ V with v 6= s: Set D(v) = w(s, v). (done)

7. Visit the root of the component tree T .

8. Return D.

Page 113: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmVisit([v ]i ): Step 1

If [v ]i is the root of T ,

1. then: Set j = ω + 1.

2. else: Let [v ]j be the parent of [v ]i in T .

Page 114: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmVisit([v ]i ): Step 2

If i = 0:

1. Add v to S .

2. For all edges (u, v) ∈ E :2.1 If D(v) + w(u, v) < D(w):

2.1.1 Let [u]h be the unvisited root of [u]0 in U .2.1.2 Let [u]i be the visited parent of [u]h in T .2.1.3 Set oldMin = minD([u]−

h) i − 1.

2.1.4 Decrease D(u) to D(v) + w(u, v).2.1.5 If minD([u]−

h) i − 1 < oldMin: Move [u]h to bucket

B([u]i ,minD([u]h) i − 1).

3. Remove [v ]i from its bucket of [v ]j .

4. Return.

Page 115: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmVisit([v ]i ): Step 3

If [v ]i is visited for the rst time:

1. Construct the ∆([v ]i ) buckets of [v ]i .

2. Delete [v ]i from U , turning its children into roots in U .

3. For all children [w ]h of [v ]i :

3.1 Bucket [w ]h in B([v ]i ,minD([w ]−h ) i − 1).

Page 116: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmVisit([v ]i ): Steps 4-6

I Set oldIndex = ix([v ]i ) j − i .

I While [v ]−i 6= ∅ and oldIndex = ix([v ]i ) j − i :1. While B([v ]i , ix([v ]i )) 6= ∅:

1.1 Let [w ]h ∈ B([v ]i , ix([v ]i )).1.2 Call visit([w ]h).

2. Increment ix([v ]i ).

I If [v ]−i = ∅,1. then: If [v ]i is not the root of T , remove it from its

bucket of [v ]j .2. else: Move [v ]i to bucket B([v ]j , ix([v ]i ) j − i).

Page 117: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmVisit([v ]i ): Steps 4-6

I Set oldIndex = ix([v ]i ) j − i .

I While [v ]−i 6= ∅ and oldIndex = ix([v ]i ) j − i :1. While B([v ]i , ix([v ]i )) 6= ∅:

1.1 Let [w ]h ∈ B([v ]i , ix([v ]i )).1.2 Call visit([w ]h).

2. Increment ix([v ]i ).

I If [v ]−i = ∅,1. then: If [v ]i is not the root of T , remove it from its

bucket of [v ]j .2. else: Move [v ]i to bucket B([v ]j , ix([v ]i ) j − i).

Page 118: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Thorup's algorithmVisit([v ]i ): Steps 4-6

I Set oldIndex = ix([v ]i ) j − i .

I While [v ]−i 6= ∅ and oldIndex = ix([v ]i ) j − i :1. While B([v ]i , ix([v ]i )) 6= ∅:

1.1 Let [w ]h ∈ B([v ]i , ix([v ]i )).1.2 Call visit([w ]h).

2. Increment ix([v ]i ).

I If [v ]−i = ∅,1. then: If [v ]i is not the root of T , remove it from its

bucket of [v ]j .2. else: Move [v ]i to bucket B([v ]j , ix([v ]i ) j − i).

Page 119: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithmOverviewmsb-Minimum spanning tree MComponent tree TBucketing structure BUnvisited data structure UVisiting components and vertices

Implementation details

Performance

Conclusion

Page 120: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Implementation detailsThe strategy pattern

I Java implementation:I imperative programming languageI ts the required RAM modelI object-orientedI word length ω = 32, number of vertices n ≤ 232

I allows the extensive use of the strategy pattern

Page 121: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Implementation detailsImplemented data structures

I an undirected, weighted graph using adjacency lists

I an array priority queue

I a Fibonacci heap [FT84]

I a split-ndmin structure [GT85]

I a union-nd structure [Tar75]

Page 122: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Implementation detailsImplemented algorithms

I Kruskal [Kru56]

I Dijkstra [Dij59]

I Thorup [Tho99]

Page 123: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithmOverviewmsb-Minimum spanning tree MComponent tree TBucketing structure BUnvisited data structure UVisiting components and vertices

Implementation details

Performance

Conclusion

Page 124: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceThe performance tests

I average of ve passes

I the test system:I Intel Core 2 Duo E6300 at 1,86 GHzI 2048 MB DDR2 667 PC2-5300 RAMI Java 1.6.0_15

Page 125: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceThe performance tests

I average of ve passes

I the test system:I Intel Core 2 Duo E6300 at 1,86 GHzI 2048 MB DDR2 667 PC2-5300 RAMI Java 1.6.0_15

Page 126: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceVarying the number of vertices

I start with n = 1000 and increase it in steps of 1000 untiln = 10000

I about m = 5n edges

I edge weights 1 ≤ w ≤ 100000

Page 127: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceVarying the number of vertices: Results

Figure: Running times for 1000 ≤ n ≤ 10000,m = 5n.

Page 128: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceVarying the number of vertices

I start with n = 4000 and increase it in steps of 4000 untiln = 40000

I about m = 5n edges again

I edge weights 1 ≤ w ≤ 100000 again

I leave out the naive implementation of Dijkstra'salgorithm and focus on the faster one

I nd out which n is required for Thorup to catch up withDijkstra

Page 129: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceVarying the number of vertices

I start with n = 4000 and increase it in steps of 4000 untiln = 40000

I about m = 5n edges again

I edge weights 1 ≤ w ≤ 100000 again

I leave out the naive implementation of Dijkstra'salgorithm and focus on the faster one

I nd out which n is required for Thorup to catch up withDijkstra

Page 130: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceVarying the number of vertices

I start with n = 4000 and increase it in steps of 4000 untiln = 40000

I about m = 5n edges again

I edge weights 1 ≤ w ≤ 100000 again

I leave out the naive implementation of Dijkstra'salgorithm and focus on the faster one

I nd out which n is required for Thorup to catch up withDijkstra

Page 131: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceVarying the number of vertices: Results

Figure: Running times for 4000 ≤ n ≤ 40000,m = 5n.

Page 132: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceVarying the number of edges per vertex

I x the number of vertices n = 20000

I start with m = 3n edges and increase it in steps of 3nuntil m = 24n

I edge weights 1 ≤ w ≤ 100000 again

Page 133: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceVarying the number of edges per vertex: Results

Figure: Running times for n = 20000, 3n ≤ m ≤ 24n.

Page 134: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceVarying the maximum edge weight

I x the number of vertices n = 20000

I x the number of edges m = 5n

I start by choosing all edge weights 1 ≤ w ≤ 5 andincrease the maximum edge weight in steps of 5 until1 ≤ w ≤ 100

Page 135: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceVarying the maximum edge weight: Results

Figure: Running times for n = 20000,m = 5n, and maximum edgeweights between 5 and 100.

Page 136: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceVarying the maximum edge weight: Results

maximum edge weight 256 1024 16384 262144

Dijkstra (Fibonacci heap) 212 209 212 219

Thorup (MST) 148 153 145 168Thorup (other DS) 153 171 156 140

Thorup (visit) 461 423 430 403

Table: Running times for n = 20000,m = 5n and maximum edgeweights 28, 210, 214 and 218.

Page 137: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceRepetitive queries

I nd out whether Thorup's algorithm can catch up withthe one by Dijkstra making repetive queries

I at the rst query, all required data structures arecomputed once

I this is the initial lead Dijkstra's algorithm has over theone by Thorup

I clean up between two queries:

1. Reset the set S of visited vertices.2. Clear all buckets.3. Reset the unvisited data structure U , making it contain

only the root of T .

I still takes signicantly less time than before the rstquery

Page 138: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceRepetitive queries

I nd out whether Thorup's algorithm can catch up withthe one by Dijkstra making repetive queries

I at the rst query, all required data structures arecomputed once

I this is the initial lead Dijkstra's algorithm has over theone by Thorup

I clean up between two queries:

1. Reset the set S of visited vertices.2. Clear all buckets.3. Reset the unvisited data structure U , making it contain

only the root of T .

I still takes signicantly less time than before the rstquery

Page 139: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceRepetitive queries

I nd out whether Thorup's algorithm can catch up withthe one by Dijkstra making repetive queries

I at the rst query, all required data structures arecomputed once

I this is the initial lead Dijkstra's algorithm has over theone by Thorup

I clean up between two queries:

1. Reset the set S of visited vertices.2. Clear all buckets.3. Reset the unvisited data structure U , making it contain

only the root of T .

I still takes signicantly less time than before the rstquery

Page 140: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceRepetitive queries

I nd out whether Thorup's algorithm can catch up withthe one by Dijkstra making repetive queries

I at the rst query, all required data structures arecomputed once

I this is the initial lead Dijkstra's algorithm has over theone by Thorup

I clean up between two queries:

1. Reset the set S of visited vertices.2. Clear all buckets.3. Reset the unvisited data structure U , making it contain

only the root of T .

I still takes signicantly less time than before the rstquery

Page 141: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceRepetitive queries

I test instance: the road network of New York CityI number of vertices n = 264, 346I number of edges m = 733, 846 (about m = 3n)

I source: 9th DIMACS Implementation Challenge -

Shortest Paths [Dem06]

I nd the shortest paths from the vertices with indices 0to 9 to all other ones

I accumulate the resulting running times

I the initialization of Thorup's algorithm takes about 2100ms and is added to the rst accumulated time

I the time required for cleaning up all data structures isalways about 200 ms and is added to the accumulatedtime of the query the clean-up has been done before

Page 142: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceRepetitive queries

I test instance: the road network of New York CityI number of vertices n = 264, 346I number of edges m = 733, 846 (about m = 3n)

I source: 9th DIMACS Implementation Challenge -

Shortest Paths [Dem06]

I nd the shortest paths from the vertices with indices 0to 9 to all other ones

I accumulate the resulting running times

I the initialization of Thorup's algorithm takes about 2100ms and is added to the rst accumulated time

I the time required for cleaning up all data structures isalways about 200 ms and is added to the accumulatedtime of the query the clean-up has been done before

Page 143: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceRepetitive queries

I test instance: the road network of New York CityI number of vertices n = 264, 346I number of edges m = 733, 846 (about m = 3n)

I source: 9th DIMACS Implementation Challenge -

Shortest Paths [Dem06]

I nd the shortest paths from the vertices with indices 0to 9 to all other ones

I accumulate the resulting running times

I the initialization of Thorup's algorithm takes about 2100ms and is added to the rst accumulated time

I the time required for cleaning up all data structures isalways about 200 ms and is added to the accumulatedtime of the query the clean-up has been done before

Page 144: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceRepetitive queries

I test instance: the road network of New York CityI number of vertices n = 264, 346I number of edges m = 733, 846 (about m = 3n)

I source: 9th DIMACS Implementation Challenge -

Shortest Paths [Dem06]

I nd the shortest paths from the vertices with indices 0to 9 to all other ones

I accumulate the resulting running times

I the initialization of Thorup's algorithm takes about 2100ms and is added to the rst accumulated time

I the time required for cleaning up all data structures isalways about 200 ms and is added to the accumulatedtime of the query the clean-up has been done before

Page 145: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

PerformanceRepetitive queries: Results

Figure: Accumulated running times for ten queries on the roadnetwork of New York City.

Page 146: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Introduction

Thorup's algorithmOverviewmsb-Minimum spanning tree MComponent tree TBucketing structure BUnvisited data structure UVisiting components and vertices

Implementation details

Performance

Conclusion

Page 147: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Conclusion

I Thorup's algorithm does not require comparison-basedsorting and is today's theoretically fastest SSSPalgorithm, . . .

I . . . but our implementation of the algorithm is stillsignicantly slower than our implementation ofDijkstra's algorithm using a Fibonacci heap

I possbile reasons are:I an inecient implementationI a word length which is still too small for realizing the

full potential of Thorup's algorithm

I these observations essentially equal the conclusion madeby Yasuhito Asano and Hiroshi Imai [AI00]

Page 148: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Conclusion

I Thorup's algorithm does not require comparison-basedsorting and is today's theoretically fastest SSSPalgorithm, . . .

I . . . but our implementation of the algorithm is stillsignicantly slower than our implementation ofDijkstra's algorithm using a Fibonacci heap

I possbile reasons are:I an inecient implementationI a word length which is still too small for realizing the

full potential of Thorup's algorithm

I these observations essentially equal the conclusion madeby Yasuhito Asano and Hiroshi Imai [AI00]

Page 149: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Conclusion

I Thorup's algorithm does not require comparison-basedsorting and is today's theoretically fastest SSSPalgorithm, . . .

I . . . but our implementation of the algorithm is stillsignicantly slower than our implementation ofDijkstra's algorithm using a Fibonacci heap

I possbile reasons are:I an inecient implementationI a word length which is still too small for realizing the

full potential of Thorup's algorithm

I these observations essentially equal the conclusion madeby Yasuhito Asano and Hiroshi Imai [AI00]

Page 150: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Conclusion

I Thorup's algorithm does not require comparison-basedsorting and is today's theoretically fastest SSSPalgorithm, . . .

I . . . but our implementation of the algorithm is stillsignicantly slower than our implementation ofDijkstra's algorithm using a Fibonacci heap

I possbile reasons are:I an inecient implementationI a word length which is still too small for realizing the

full potential of Thorup's algorithm

I these observations essentially equal the conclusion madeby Yasuhito Asano and Hiroshi Imai [AI00]

Page 151: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

ConclusionFuture work

I implement the strictly linear time parts of Thorup'salgorithm:

I the linear time algorithm for constructing minimumspanning trees [FW90]

I the linear time union-nd [GT85] structureI the linear time split-ndmin structure [Tho99]

I see how well Thorup's algorithm does compared to fastall shortest paths algorithms

I see if his component tree can be useful for otherapplications

I run the algorithm on signicantly larger graphs andcheck whether it is as attractive for repetitive queries asexpected, as soon as we are able to

Page 152: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

ConclusionFuture work

I implement the strictly linear time parts of Thorup'salgorithm:

I the linear time algorithm for constructing minimumspanning trees [FW90]

I the linear time union-nd [GT85] structureI the linear time split-ndmin structure [Tho99]

I see how well Thorup's algorithm does compared to fastall shortest paths algorithms

I see if his component tree can be useful for otherapplications

I run the algorithm on signicantly larger graphs andcheck whether it is as attractive for repetitive queries asexpected, as soon as we are able to

Page 153: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

ConclusionFuture work

I implement the strictly linear time parts of Thorup'salgorithm:

I the linear time algorithm for constructing minimumspanning trees [FW90]

I the linear time union-nd [GT85] structureI the linear time split-ndmin structure [Tho99]

I see how well Thorup's algorithm does compared to fastall shortest paths algorithms

I see if his component tree can be useful for otherapplications

I run the algorithm on signicantly larger graphs andcheck whether it is as attractive for repetitive queries asexpected, as soon as we are able to

Page 154: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

ConclusionFuture work

I implement the strictly linear time parts of Thorup'salgorithm:

I the linear time algorithm for constructing minimumspanning trees [FW90]

I the linear time union-nd [GT85] structureI the linear time split-ndmin structure [Tho99]

I see how well Thorup's algorithm does compared to fastall shortest paths algorithms

I see if his component tree can be useful for otherapplications

I run the algorithm on signicantly larger graphs andcheck whether it is as attractive for repetitive queries asexpected, as soon as we are able to

Page 155: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Conclusion

Thank you for your attention!

Page 156: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Yasuhito Asano and Hiroshi Imai.Practical eciency of the linear-time algorithm for thesingle source shortest path problem.Journal of the Operations Research, 43:431447, 2000.

Camil Demetrescu.9th dimacs implementation challenge - shortest paths.http://www.dis.uniroma1.it/~challenge9/

download.shtml, 2006.

Edsger W. Dijkstra.A note on two problems in connection with graphs.Numer. Math., 1:269271, 1959.

Michael L. Fredman and Robert Endre Tarjan.Fibonacci heaps and their uses in improved networkoptimization algorithms.In FOCS, pages 338346. IEEE, 1984.

Michael L. Fredman and Dan E. Willard.

Page 157: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Trans-dichotomous algorithms for minimum spanningtrees and shortest paths.In FOCS, volume II, pages 719725. IEEE, 1990.

Harold N. Gabow.A scaling algorithm for weighted matching on generalgraphs.In FOCS, pages 90100. IEEE, 1985.

Harold N. Gabow and Robert Endre Tarjan.A linear-time algorithm for a special case of disjoint setunion.J. Comput. Syst. Sci., 30(2):209221, 1985.

Joseph B. Kruskal.On the shortest spanning subtree of a graph and thetraveling salesman problem.Proc. Am. Math. Soc, 7:4850, 1956.

Robert Endre Tarjan.Eciency of a good but not linear set union algorithm.J. ACM, 22(2):215225, 1975.

Page 158: Implementation of Thorup's Linear Time Algorithm for Undirected Single Source Shortest Paths With Positive Integer Weights

Implementationof Thorup'sLinear TimeAlgorithm forUndirected

Single-SourceShortest Pathswith Positive

Integer Weights

Nick Prühs

Introduction

Thorup'salgorithm

Overview

msb-Minimumspanning tree M

Component treeT

Bucketingstructure B

Unvisited datastructure U

Visitingcomponents andvertices

Implementationdetails

Performance

Conclusion

Mikkel Thorup.Undirected single-source shortest paths with positiveinteger weights in linear time.J. ACM, 46(3):362394, 1999.