Geometric k Shortest Paths - Life and Death in the Parking - ITN

Geometric k Shortest Paths
Life and Death in the Parking Garage
Sylvester Eriksson-Bique
Courant Institute, NYU
John Hershberger
Mentor Graphics Corporation
Valentin Polishchuk
ITN, Linköping University
Bettina Speckmann
TU Eindhoven
Subhash Suri
CS Dept, University of California
Topi Talvitie
CS Dept, University of Helsinki
Kevin Verbeek
TU Eindhoven
Hakan Yıldız
Microsoft
SoDA 2015, San Diego
Geometric shortest paths
t
s
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Continuous Dijkstra
I
A wavefront expanding at unit speed from source point s
covers each point p at time d(s, p).
Shortest path map
I
Shortest path map from s: O(n) size, O(n log n) time to build
[Hershberger & Suri 1999].
I
Query shortest path from s to any point in O(log n) time.
Beyond shortest paths
I
Near-shortest paths may be preferred for some external reason.
t
s
Beyond shortest paths
I
Near-shortest paths may be preferred for some external reason.
t
s
kth shortest paths in graphs
I
kth shortest path O(m + n log n + k) [Eppstein 1997]
I
kth shortest simple path O(kn(m + n log n)) [Yen 1971]
n, m – number of vertices and edges
Defining geometric kth shortest paths
I
What does it mean? You can make arbitrarily small detours!
t
s
Defining geometric kth shortest paths
I
What does it mean? You can make arbitrarily small detours!
t
s
Defining geometric kth shortest paths
I
What does it mean? You can make arbitrarily small detours!
t
s
Defining geometric kth shortest paths
I
What does it mean? You can make arbitrarily small detours!
t
s
Defining geometric kth shortest paths
I
I
What does it mean? You can make arbitrarily small detours!
Disallow such detours by requiring paths to be locally shortest.
kth shortest path := kth shortest locally shortest path.
t
s
Locally shortest paths
I
Path γ : [0, 1] → P is locally shortest path if for some > 0
there does not exist a shorter path α : [0, 1] → P with
||α − γ||∞ < I
Equivalent to γ being the shortest path of its homotopy type
Locally shortest paths
I
Path γ : [0, 1] → P is locally shortest path if for some > 0
there does not exist a shorter path α : [0, 1] → P with
||α − γ||∞ < I
I
Equivalent to γ being the shortest path of its homotopy type
Requirements for a locally shortest path:
1. The path is a polygonal chain with vertices in vertices of P
Locally shortest paths
I
Path γ : [0, 1] → P is locally shortest path if for some > 0
there does not exist a shorter path α : [0, 1] → P with
||α − γ||∞ < I
I
Equivalent to γ being the shortest path of its homotopy type
Requirements for a locally shortest path:
1. The path is a polygonal chain with vertices in vertices of P
2. Path always turns towards the obstacle in the vertices
Locally shortest paths
I
Path γ : [0, 1] → P is locally shortest path if for some > 0
there does not exist a shorter path α : [0, 1] → P with
||α − γ||∞ < I
I
Equivalent to γ being the shortest path of its homotopy type
Requirements for a locally shortest path:
1. The path is a polygonal chain with vertices in vertices of P
2. Path always turns towards the obstacle in the vertices
I
These conditions are sufficient!
Finding locally shortest paths: Visibility graph
I
Find all s-t-paths in the tangent visibility graph that do not
contain outward turns.
Finding locally shortest paths: Visibility graph
I
Find all s-t-paths in the tangent visibility graph that do not
contain outward turns.
Finding locally shortest paths: Visibility graph
I
Find all s-t-paths in the tangent visibility graph that do not
contain outward turns.
Finding locally shortest paths: Visibility graph
I
Find all s-t-paths in the tangent visibility graph that do not
contain outward turns.
Finding locally shortest paths: Visibility graph
I
Find all s-t-paths in the tangent visibility graph that do not
contain outward turns.
I
O(m log n + k) using Eppstein algorithm, where m = tangent
visibility graph size.
Finding locally shortest paths: Visibility graph
I
Find all s-t-paths in the tangent visibility graph that do not
contain outward turns.
I
O(m log n + k) using Eppstein algorithm, where m = tangent
visibility graph size.
We can find kth shortest simple path in
O(k 2 m(m + kn) log(kn)) by adapting Yen algorithm.
I
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Finding locally shortest paths: Continuous Dijkstra
I
We find all locally shortest paths from s, ordered by distance.
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
Continuous Dijkstra with the Parking Garage
1:
2:
3:
*:
“3D” view (mind the ramps!): k-SPM
http://cs.helsinki.fi/u/totalvit/ksp/coveringspace/
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
k-SPM complexity
k-SPM
(k + 1)-SPM
k-SPM complexity
k-SPM
(k + 1)-SPM
I
Relate the number of features in (k + 1)-SPM to the number
of features in k-SPM using recurrence relations.
I
By solving them we get upper bound O(k 2 n) for k-SPM
complexity.
k-SPM complexity lower bound
p
s
Path length equalizer
Delay inserter
d = D + i∆, i ∈ Z+
k-SPM complexity lower bound
A
dA,α (p) = dA (p) + α∆
B
dB,β (p) = dB (p) + β∆
p
dC ,γ (p) = dC (p) + γ∆
Point p is a vertex of k-SPM if
dA,α (p) = dB,β (p) = dA,γ (p)
C
with
α, β, γ ∈ Z+
α + β + γ = k + 2.
Number of such vertices in k2 = Θ(k 2 ).
Thus k-SPM complexity is O(k 2 n) in the
worst case.
s
Computing the k-SPM
Extend the continuous Dijkstra algorithm of [Hershberger & Suri
1999]:
I
Make bisector arcs domain boundaries [Hershberger, Suri &
Yıldız 2013].
I
Propagate wavefronts from boundary arcs.
I
Runs in O(k 3 n log n).
I
Visualization applet available at http://dy.fi/wsn.