Shortest path to a segment and quickest visibility queries - ITN

Shortest path to a segment
and quickest visibility queries
Topi Talvitie
Esther M. Arkin, Alon Efrat, Christian Knauer,
Joseph S. B. Mitchell, Valentin Polishchuk,
Günter Rote, Lena Schlipf
SoCG 2015, Eindhoven
Shortest path queries
s
Shortest path queries
How should one move from s in order to reach q as soon as
possible?
q
s
Shortest path queries
How should one move from s in order to reach q as soon as
possible?
q
s
Shortest path queries
How should one move from s in order to reach q as soon as
possible?
q
s
Shortest path queries
How should one move from s in order to reach q as soon as
possible?
s
q
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
q
s
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
s
Shortest path queries
Fixed s:
Preprocessing:q
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
s
Shortest path queries
Fixed s:
Preprocessing:
Query: q
O(n log n)
[Hershberger & Suri]
O(log n)
s
Shortest path queries
Fixed s:
Preprocessing:
Query:q
O(n log n)
[Hershberger & Suri]
O(log n)
s
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
q
s
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
q
s
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
q
s
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
q
s
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
q
s
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
q
s
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
q
s
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
q
s
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
q
s
Shortest path queries
Fixed s:
Preprocessing:
Query:
O(n log n)
[Hershberger & Suri]
O(log n)
q
s
Shortest path queries
How should one move from s in order to reach q as soon as
possible?
q
s
Quickest visibility paths
How should one move from s in order to see q as soon as
possible?
x
q
s
Quickest visibility paths
Fixed s:
Preprocessing:
Query:
P =?
Q=?
q
s
Quickest visibility paths
Fixed s:
Preprocessing:
Query:
P =?
Q=?
q
s
Quickest visibility paths
Fixed s:
Preprocessing:
Query:
P =?
Q=?
q
s
Quickest visibility paths
Fixed s:
Preprocessing:
Query:
s
P =?
Q=?
q
Quickest visibility paths
Fixed s:
Preprocessing:
Query:
P =?
Q=?
q
s
Quickest visibility map
QVM = subdivision of the domain into cells such that QVP
from s to q is the same for all q in that cell.
Quickest visibility map
QVM = subdivision of the domain into cells such that QVP
from s to q is the same for all q in that cell.
Lower bound on worst-case complexity: Ω(n4 )
s
n holes
Quickest visibility map
QVM = subdivision of the domain into cells such that QVP
from s to q is the same for all q in that cell.
Lower bound on worst-case complexity: Ω(n4 )
s
n holes
n2 lines, Θ(n4 ) intersections
Quickest visibility map
QVM = subdivision of the domain into cells such that QVP
from s to q is the same for all q in that cell.
Quickest visibility map
QVM = subdivision of the domain into cells such that QVP
from s to q is the same for all q in that cell.
Quickest visibility map
QVM = subdivision of the domain into cells such that QVP
from s to q is the same for all q in that cell.
Lower bound on worst-case complexity: Ω(n4 )
s
n holes
n2 lines, Θ(n4 ) intersections
Quickest visibility map
QVM = subdivision of the domain into cells such that QVP
from s to q is the same for all q in that cell.
Lower bound on worst-case complexity: Ω(n4 )
s
Fixed s:
Preprocessing:
Query:
Size:
P = O(n8 log n)
Q = O(log n)
S = O(n7 )
Curse of visibility: 3SUM hardness
|L1 | = |L2 | = |L3 | = n.
(3SUM hard)
Find a ∈ L1 , b ∈ L2 , c ∈ L3
such that (a, b, c) is an arithmetic sequence.
Curse of visibility: 3SUM hardness
|L1 | = |L2 | = |L3 | = n.
(3SUM hard)
Find a ∈ L1 , b ∈ L2 , c ∈ L3
such that (a, b, c) is an arithmetic sequence.
s
L1
L2
Using quickest visibility paths: O(P + nQ) time.
Conjecture ⇒ P + nQ = Ω(n2 ).
L3
Curse of visibility: 3SUM hardness
|L1 | = |L2 | = |L3 | = n.
(3SUM hard)
Find a ∈ L1 , b ∈ L2 , c ∈ L3
such that (a, b, c) is an arithmetic sequence.
s
L1
L2
Using quickest visibility paths: O(P + nQ) time.
Conjecture ⇒ P + nQ = Ω(n2 ).
L3
Curse of visibility: 3SUM hardness
|L1 | = |L2 | = |L3 | = n.
(3SUM hard)
Find a ∈ L1 , b ∈ L2 , c ∈ L3
such that (a, b, c) is an arithmetic sequence.
s
L1
L2
Using quickest visibility paths: O(P + nQ) time.
Conjecture ⇒ P + nQ = Ω(n2 ).
L3
Curse of visibility: 3SUM hardness
|L1 | = |L2 | = |L3 | = n.
(3SUM hard)
Find a ∈ L1 , b ∈ L2 , c ∈ L3
such that (a, b, c) is an arithmetic sequence.
s
L1
L2
L3
Using quickest visibility paths: O(P + nQ) time.
Conjecture ⇒ P + nQ = Ω(n2− ) for > 0.
2
2 (log log n)
)
[Grønlund, Pettie 2014]: O(n
log n
Visibility polygon
s
q
Visibility polygon
s
q
Visibility polygon
s
q
Visibility polygon
s
q
Visibility polygon
Find the visibility polygon of any q:
Simple polygons:
[Joe, Simpson 1987]
[Guibas, Motwani, Raghavan 1997]
[Bose, Lubiw, Munro 2002]
[Aronov, Guibas, Teichman, Zhang 2002]
Preprocessing
–
O(n3 log n)
O(n3 log n)
O(n2 log n)
Query
O(n)
O(log n + K)
O(log n + K)
O(log2 n + K) s
Polygons with holes:
[Heffernan, Mitchell 1995]
[Zarei, Ghodsi 2008]
[Inkulu, Kapoor 2009]
[Lu, Yang, Wang q2011]
[Chen, Wang 2013]
[Chen, Wang 2013]
Preprocessing
–
O(n3 log n)
O(n2 log n)
O(n + h2 log h)
O(n2 log n)
O(n + h2 log h)
Query
O(n + h log h)
O(K + min(h, K) log n)
O(K log2 n)
O(K + log2 n + h log(n/h))
O(K + log2 n + min(h, K) log n)
O(K log n)
K = the size of the visibility polygon
h = the number of holes
Visibility polygon
Find the visibility polygon of any q:
Simple polygons:
[Joe, Simpson 1987]
[Guibas, Motwani, Raghavan 1997]
[Bose, Lubiw, Munro 2002]
[Aronov, Guibas, Teichman, Zhang 2002]
Preprocessing
–
O(n3 log n)
O(n3 log n)
O(n2 log n)
Query
O(n)
O(log n + K)
O(log n + K)
O(log2 n + K) s
Polygons with holes:
[Heffernan, Mitchell 1995]
[Zarei, Ghodsi 2008]
[Inkulu, Kapoor 2009]
[Lu, Yang, Wang q2011]
[Chen, Wang 2013]
[Chen, Wang 2013]
Preprocessing
–
O(n3 log n)
O(n2 log n)
O(n + h2 log h)
O(n2 log n)
O(n + h2 log h)
Query
O(n + h log h)
O(K + min(h, K) log n)
O(K log2 n)
O(K + log2 n + h log(n/h))
O(K + log2 n + min(h, K) log n)
O(K log n)
K = the size of the visibility polygon
h = the number of holes
Visibility polygon
s
q
Visibility polygon
s
q
Visibility polygon
s
q
Visibility polygon
s
q
Visibility polygon
s
q
Find quickest visibility path from s to any q:
Preprocessing: P = Pv + Ps = O(n2 log n + Ps )
Query:
Q = Qv + KQs = O(K(log2 n + Qs ))
Shortest path to segment
q
s
Shortest path to segment
s
q
Shortest path to segment
s
q
Shortest path to segment
s
q
Shortest path to segment
s
q
Shortest path to segment
s
q
Types of shortest paths to segments
q
Types of shortest paths to segments
q
Types of shortest paths to segments
q
Types of shortest paths to segments
q
Types of shortest paths to segments
q
Types of shortest paths to segments
q
Types of shortest paths to segments
q
Types of shortest paths to segments
q
Types of shortest paths to segments
q1
q
Shortest path to the segment q is the shortest of:
• Shortest path to endpoint q1 ,
• Shortest path to endpoint q2 ,
• Shortest orthogonal path to the interior of t.
q2
Types of shortest paths to segments
q1
q
Shortest path to the segment q is the shortest of:
• Shortest path to endpoint q1 ,
• Shortest path to endpoint q2 ,
• Shortest orthogonal path to the interior of t.
q2
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Wavefront propagation algorithm
q
s
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Critical times
Finding the previous critical time
q
Finding the previous critical time
q
Finding the previous critical time
q
Finding the previous critical time
q
Finding the previous critical time
q
Find out whether segment q lies in the geodesic disk of the
critical time using ray shooting queries:
Preprocessing:
Query:
O(n log n) [Chazelle, Edelsbrunner, Grigni, Guibas,
Hershberger, Sharir, Snoeyink 1994]
O(log n)
Finding the previous critical time
q
Find out whether segment q lies in the geodesic disk of the
critical time using ray shooting queries:
Preprocessing:
Query:
O(n log n) [Chazelle, Edelsbrunner, Grigni, Guibas,
Hershberger, Sharir, Snoeyink 1994]
O(log n)
Finding the colliding wavelet
q
Finding the colliding wavelet
q
Finding the colliding wavelet
q
Finding the colliding wavelet
q
Finding the collision point
q
Finding the collision point
q
Finding the collision point
q
Finding the collision point
q
Finding the collision point
q
Finding the collision point
q
Finding the collision point
q
Finding the collision point
q
Finding the collision point
q
Finding the collision point
q
Finding the collision point
q
Finding the collision point
q
Complexities
Shortest path to segment query
Preprocessing: Ps = O(n2 log n 2α(n) )
Query:
Qs = O(log2 n)
Complexities
Shortest path to segment query
Preprocessing: Ps = O(n2 log n 2α(n) )
Query:
Qs = O(log2 n)
⇒
Quickest visibility path query:
Preprocessing: P = O(n2 log n + Ps )
= O(n2 log n 2α(n) )
Query:
Q = O(K(log2 n + Qs ))
= O(K log2 n)
(K = the size of the visibility polygon)
Simple polygons
Shortest path to segment query
Preprocessing: Ps0 = O(n)
Query:
Q0s = O(log n)
⇒
Quickest visibility path query:
Preprocessing: P 0 = O(n)
Query:
Q0 = O(log n)
Simple polygons
Shortest path to segment query
Preprocessing: Ps0 = O(n)
Query:
Q0s = O(log n)
⇒
Quickest visibility path query:
Preprocessing: P 0 = O(n)
Query:
Q0 = O(log n)
Previously P 0 = O(n2 ) [Khosravi, Ghodsi 2005]
Thank you
Check out the visualization applet:
Visualizing Quickest Visibility Maps
SoCG Multimedia 2015
http://dy.fi/xwj