Shortest Paths in Intersection Graphs of Unit Disks Sergio Cabello sergio.cabello@fmf.uni-lj.si University of Ljubljana Slovenija Material based on joint work with Miha Jejˇ ciˇ c and Panos Giannopoulos Sergio Cabello
Setting P : n points in the plane G ( P ): connect two points when distance ≤ 1 intersection graph congruent disks s 1 Sergio Cabello
Setting P : n points in the plane G ( P ): connect two points when distance ≤ 1 intersection graph congruent disks s Objective: fast computation of sssp in G ( P ) Sergio Cabello
Motivation Bounded communication range: ◮ minimize hops/links → unweighted G ( P ) ◮ minimize energy → weighted G ( P ) Sergio Cabello
Motivation Bounded communication range: ◮ minimize hops/links → unweighted G ( P ) ◮ minimize energy → weighted G ( P ) s Separation in the plane: ◮ set D of unit disks ◮ s and t in R 2 \ � D ◮ min | D ′ | s.t. D ′ ⊆ D , D ′ separates s and t t Sergio Cabello
Overview ◮ Setting/Motivation ◮ Related work for sssp ◮ Unweighted • O ( n log n ) time • implementable: Delaunay, Voronoi, point location ◮ Weighted: • O ( n 1+ ε ) time • unimplementable: dynamic bichromatic closest pair, shallow cuttings ◮ Separation with unit disks: • O ( n 2 polylog n ) time • Implementable, but many ingredients Sergio Cabello
Overview ◮ Setting/Motivation ◮ Related work for sssp ◮ Unweighted • O ( n log n ) time • implementable: Delaunay, Voronoi, point location ◮ Weighted: • O ( n 1+ ε ) time • unimplementable: dynamic bichromatic closest pair, shallow cuttings ◮ Separation with unit disks: • O ( n 2 polylog n ) time • Implementable, but many ingredients Sergio Cabello
Related work exact SSSP ◮ Roditty and Segal, 2011 • unweighted: O ( n log 6 n ) expected time via Chan’s dynamic NN DS • weighted: O ( n 4 / 3+ ε ) time ◮ C. and Jejˇ ciˇ c, 2014 • unweighted: O ( n log n ) time; implementable • weighted: O ( n 1+ ε ) time Sergio Cabello
More related work ◮ Roditty and Segal, 2011 • (1 + ε )-approximate distance oracles, improving Bose, Maheshwari, Narasimhan, Smid, and Zeh, 2004. ◮ Gao and Zhang, 2005 • WSPD of size O ( n log n ) for unit-disk metric • (1 + ε )-approximate sssp distance in O ( n log n ) time ◮ Chan and Efrat, 2001 (Fuel consumption) • distances ℓ : R 2 × R 2 → R > 0 • O ( n log n ) time when ℓ ( p , q ) = f ( | pq | ) · | pq | 2 , f increasing. • O ( n 4 / 3+ ε ) time when ℓ has constant size description. Sergio Cabello
More related work ◮ Roditty and Segal, 2011 • (1 + ε )-approximate distance oracles, improving Bose, Maheshwari, Narasimhan, Smid, and Zeh, 2004. ◮ Gao and Zhang, 2005 • WSPD of size O ( n log n ) for unit-disk metric • (1 + ε )-approximate sssp distance in O ( n log n ) time ◮ Chan and Efrat, 2001 (Fuel consumption) • distances ℓ : R 2 × R 2 → R > 0 • O ( n log n ) time when ℓ ( p , q ) = f ( | pq | ) · | pq | 2 , f increasing. • O ( n 4 / 3+ ε ) time when ℓ has constant size description. ◮ Faster algorihtms for geometric intersection graphs Sergio Cabello
Overview ◮ Setting/Motivation ◮ Related work for sssp ◮ Unweighted • O ( n log n ) time • implementable: Delaunay, Voronoi, point location ◮ Weighted: • O ( n 1+ ε ) time • unimplementable: dynamic bichromatic closest pair, shallow cuttings ◮ Separation with unit disks: • O ( n 2 polylog n ) time • Implementable, but many ingredients Sergio Cabello
Unweighted ◮ BFS in G ( P ) without building G ( P ) ◮ W i = { p ∈ P | d G ( P ) ( s , p ) = i } ◮ Build W 0 = { s } ◮ Iteratively build W i from W i − 1 ◮ Edge connecting p to NN ( p , W i − 1 ) for all p ∈ W i ◮ Until W i empty Sergio Cabello
Unweighted - Growing W i W 4 W 3 1 s Sergio Cabello
Unweighted - Growing W i W 4 W 3 1 s Sergio Cabello
Unweighted - Growing W i W 4 W 3 1 s Sergio Cabello
Unweighted - Growing W i W 4 W 3 1 s Sergio Cabello
Unweighted ◮ BFS in G ( P ) without building G ( P ) ◮ W i = { p ∈ P | d G ( P ) ( s , p ) = i } ◮ Build W 0 = { s } ◮ Iteratively build W i from W i − 1 ◮ edge connecting p to NN ( p , W i − 1 ) for all p ∈ W i ◮ Until W i empty ◮ Use DT ( P ) to guide the search of candidate points for W i ◮ Candidate points for W i : • points adjacent to W i − 1 in DT ( P ) • points adjacent to W i in DT ( P ) ◮ Is this good enough? Sergio Cabello
Unweighted - Growing W i Sergio Cabello
Unweighted - Growing W i Sergio Cabello
Unweighted - Growing W i 1 s Sergio Cabello
Unweighted - Growing W i Lemma Let p ∈ W i . There exists a path q 1 , . . . , q k = p in G ( P ) ∩ DT ( P ) with q 1 ∈ W i − 1 and q 2 , . . . , q k ∈ W i . Sergio Cabello
Unweighted - Growing W i Lemma Let p ∈ W i . There exists a path q 1 , . . . , q k = p in G ( P ) ∩ DT ( P ) with q 1 ∈ W i − 1 and q 2 , . . . , q k ∈ W i . cell( P, q k − 1 ) cell( P, q 2 ) cell( P, p ) cell( P, q 1 ) p q 1 . . . Sergio Cabello
Unweighted - Growing W i Lemma Let p ∈ W i . There exists a path q 1 , . . . , q k = p in G ( P ) ∩ DT ( P ) with q 1 ∈ W i − 1 and q 2 , . . . , q k ∈ W i . ◮ Data structure to decide whether candidate q is ∈ W i • DS for NN ( q , W i − 1 ) • check if distance ≤ 1 ◮ each edge of DT ( P ) explored twice ◮ building W i takes time �� � � � | W i − 1 | + | W i | + deg DT ( P ) ( p ) log n O p ∈ W i − 1 ∪ W i Sergio Cabello
1. for p ∈ P do 2. dist[ p ] ← ∞ ; 3. dist[ s ] ← 0 4. build the Delaunay triangulation DT ( P ) W 0 ← { s } 5. 6. i ← 1 7. while W i − 1 � = ∅ do 8. build data structure for nearest neighbour queries in W i − 1 9. Q ← W i − 1 (* generator of candidate points *) 10. W i ← ∅ 11. while Q � = ∅ do 12. q an arbitrary point of Q 13. remove q from Q 14. for qp edge in DT ( P ) do 15. w ← NN ( W i − 1 , q ) 16. if dist[ p ] = ∞ and | pw | ≤ 1 then 17. dist[ p ] ← i 18. add p to Q and to W i 19. i ← i + 1 20. return dist[ · ] Sergio Cabello
Overview ◮ Setting/Motivation ◮ Related work for sssp ◮ Unweighted ← − Done • O ( n log n ) time • implementable: Delaunay, Voronoi, point location ◮ Weighted: • O ( n 1+ ε ) time • unimplementable: dynamic bichromatic closest pair, shallow cuttings ◮ Separation with unit disks: • O ( n 2 polylog n ) time • Implementable, but many ingredients Sergio Cabello
Overview ◮ Setting/Motivation ◮ Related work for sssp ◮ Unweighted • O ( n log n ) time • implementable: Delaunay, Voronoi, point location ◮ Weighted: • O ( n 1+ ε ) time • unimplementable: dynamic bichromatic closest pair, shallow cuttings ◮ Separation with unit disks: • O ( n 2 polylog n ) time • Implementable, but many ingredients Sergio Cabello
Weighted - Ingredient - BCP Bichromatic closest pair (BCP) ◮ weighted Euclidean ◮ red points R ◮ blue points B ◮ weights w b for each b ∈ B ◮ δ : B × R → R δ ( b , r ) = w b + | br | 4 2 2 3 Sergio Cabello
Weighted - Ingredient - BCP Bichromatic closest pair (BCP) ◮ weighted Euclidean ◮ red points R ◮ blue points B ◮ weights w b for each b ∈ B ◮ δ : B × R → R δ ( b , r ) = w b + | br | ◮ Eppstein 1995 + Agarwal, Efrat, Sharir 1999: dynamic BCP in O ( n ε ) amortized per operation • insertion/deletion • query for minima min r , b δ ( r , b ) Sergio Cabello
Weighted - Idea ◮ Modification of Dijkstra’s algorithm ◮ Standard Dijsktra’s algorithm • keep an array dist[ · ] • dist[ v ] is an (over)estimate of d G ( P ) ( s , v ) • keep partition P into S and P \ S • S contains vertices with dist[ s ] = d G ( P ) ( s , v ) S P \ S s Sergio Cabello
Weighted - Idea ◮ Modification of Dijkstra’s algorithm ◮ Standard Dijsktra’s algorithm • keep an array dist[ · ] • dist[ v ] is an (over)estimate of d G ( P ) ( s , v ) • keep partition P into S and P \ S • S contains vertices with dist[ s ] = d G ( P ) ( s , v ) • an iteration: find a vertex q ∗ ∈ arg min min dist[ p ] + | pq | q ∈ P \ S p ∈ S ,, | pq |≤ 1 • move q ∗ from P \ S to S • usually we keep dist[ q ] = min p ∈ S dist[ p ] + | pq | Sergio Cabello
Weighted - Idea ◮ Modification of Dijkstra’s algorithm • array dist[ · ], dist[ v ] is an (over)estimate of d G ( P ) ( s , v ) • keep partition P into S and R = P \ S • partition S into D and B • D are “dead”points, irrelevant when min dist[ p ] + | pq | • an iteration: find a pair ( b ∗ , r ∗ ) ∈ arg min dist[ b ] + | br | ( b , r ) ∈∈ B × R • if | b ∗ r ∗ | > 1, move b ∗ from B to D • else normal Dijsktra’s step Sergio Cabello
Weighted - Idea ◮ Modification of Dijkstra’s algorithm B R D s S Sergio Cabello
for p ∈ P do 1. 2. dist[ p ] ← ∞ 3. dist[ s ] ← 0 4. B ← { s } 5. D ← ∅ 6. R ← P \ { s } store R ∪ B in a BCP dynamic DS wrt δ ( b , r ) = dist[ b ] + | br | 7. while R � = ∅ do 8. ( b ∗ , r ∗ ) ← BCP( B , R ) 9. if | b ∗ r ∗ | > 1 then 10. delete( B , b ∗ ) 11. D ← D ∪ { b ∗ } 12. 13. else dist[ r ∗ ] ← dist[ b ∗ ] + | b ∗ r ∗ | 14. delete( R , r ∗ ) 15. insert( B , r ∗ ) 16. 17. return dist[ · ] Sergio Cabello
Recommend
More recommend