Voronoi diagrams and their duals, Delaunay triangulations, are used in many areas of computing and the sciences. Starting in 3-dimensions, there is a substantial (i.e. polynomial) difference between the best case and the worst case complexity of these objects when starting with n points. This motivates the search for algorithms that are output-senstiive rather than relying only on worst-case guarantees. In this talk, I will describe a simple, new algorithm for computing Voronoi diagrams in d-dimensions that runs in O(f log n log spread) time, where f is the output size and the spread of the input points is the ratio of the diameter to the closest pair distance. For a wide range of inputs, this is the best known algorithm. The algorithm is novel in the that it turns the classic algorithm of Delaunay refinement for mesh generation on its head, working backwards from a quality mesh to the Delaunay triangulation of the input. Along the way, we will see instances of several other classic problems for which no higher-dimensional results are known, including kinetic convex hulls and splitting Delaunay triangulations.
5. Voronoi Diagrams
The Voronoi cell of p is the set of reverse nearest neighbors of p.
The Voronoi diagram is dual to the Delaunay triangulation.
6. Voronoi Diagrams
The Voronoi cell of p is the set of reverse nearest neighbors of p.
The Voronoi diagram is dual to the Delaunay triangulation.
7. Voronoi Diagrams
The Voronoi cell of p is the set of reverse nearest neighbors of p.
The Voronoi diagram is dual to the Delaunay triangulation.
8. Voronoi Diagrams
The Voronoi cell of p is the set of reverse nearest neighbors of p.
The Voronoi diagram is dual to the Delaunay triangulation.
Voronoi k-face Delaunay (d-k)-face
10. Voronoi Diagrams and Delaunay
triangulations are used everywhere.
Descartes 1644
11. Voronoi Diagrams and Delaunay
triangulations are used everywhere.
Descartes 1644
Dirichlet 1850
12. Voronoi Diagrams and Delaunay
triangulations are used everywhere.
Descartes 1644
Dirichlet 1850
Snow 1854 (probably a myth, but a fun one)
13. Voronoi Diagrams and Delaunay
triangulations are used everywhere.
Descartes 1644
Dirichlet 1850
Snow 1854 (probably a myth, but a fun one)
Voronoi 1908
14. Voronoi Diagrams and Delaunay
triangulations are used everywhere.
Descartes 1644
Dirichlet 1850
Snow 1854 (probably a myth, but a fun one)
Voronoi 1908
Thiessen 1911 (meteorology)
15. Voronoi Diagrams and Delaunay
triangulations are used everywhere.
Descartes 1644
Dirichlet 1850
Snow 1854 (probably a myth, but a fun one)
Voronoi 1908
Thiessen 1911 (meteorology)
Geographical Information Systems
16. Voronoi Diagrams and Delaunay
triangulations are used everywhere.
Descartes 1644
Dirichlet 1850
Snow 1854 (probably a myth, but a fun one)
Voronoi 1908
Thiessen 1911 (meteorology)
Geographical Information Systems
Graphics
17. Voronoi Diagrams and Delaunay
triangulations are used everywhere.
Descartes 1644
Dirichlet 1850
Snow 1854 (probably a myth, but a fun one)
Voronoi 1908
Thiessen 1911 (meteorology)
Geographical Information Systems
Graphics
Topological Data Analysis
18. Voronoi Diagrams and Delaunay
triangulations are used everywhere.
Descartes 1644
Dirichlet 1850
Snow 1854 (probably a myth, but a fun one)
Voronoi 1908
Thiessen 1911 (meteorology)
Geographical Information Systems
Graphics
Topological Data Analysis
Mesh Generation
24. Delaunay triangulations and Voronoi
diagrams are projections of polyhedra.
Parabolic lifting into d+1 dimensions.
The Delaunay triangulation is the projection of lower hull.
Other liftings yield weighted Delaunay triangulations.
25. Delaunay triangulations and Voronoi
diagrams are projections of polyhedra.
Parabolic lifting into d+1 dimensions.
The Delaunay triangulation is the projection of lower hull.
Other liftings yield weighted Delaunay triangulations.
26. Delaunay triangulations and Voronoi
diagrams are projections of polyhedra.
Parabolic lifting into d+1 dimensions.
The Delaunay triangulation is the projection of lower hull.
Other liftings yield weighted Delaunay triangulations.
27. Delaunay triangulations and Voronoi
diagrams are projections of polyhedra.
Parabolic lifting into d+1 dimensions.
The Delaunay triangulation is the projection of lower hull.
Other liftings yield weighted Delaunay triangulations.
28. Delaunay triangulations and Voronoi
diagrams are projections of polyhedra.
Parabolic lifting into d+1 dimensions.
The Delaunay triangulation is the projection of lower hull.
Other liftings yield weighted Delaunay triangulations.
35. (Convex Hull)
A brief history of Voronoi Diagram algorithms.
d/2
Chazelle O(n log n + n )
36. (Convex Hull)
A brief history of Voronoi Diagram algorithms.
d/2
Chazelle O(n log n + n )
Avis O(nf )
37. (Convex Hull)
A brief history of Voronoi Diagram algorithms.
d/2
Chazelle O(n log n + n )
Avis O(nf )
2
Seidel O(n + f log n)
38. (Convex Hull)
A brief history of Voronoi Diagram algorithms.
d/2
Chazelle O(n log n + n )
Avis O(nf )
2
Seidel O(n + f log n)
Matousek and 2− 2
O(1)
Schwartzkopf O(n
d/2 +1 log n + f log n)
39. (Convex Hull)
A brief history of Voronoi Diagram algorithms.
d/2
Chazelle O(n log n + n )
Avis O(nf )
2
Seidel O(n + f log n)
Matousek and 2− 2
O(1)
Schwartzkopf O(n
d/2 +1 log n + f log n)
1
1− O(1)
Chan O(n log f + (nf ) d/2 +1 log n)
40. (Convex Hull)
A brief history of Voronoi Diagram algorithms.
d/2
Chazelle O(n log n + n )
Avis O(nf )
2
Seidel O(n + f log n)
Matousek and 2− 2
O(1)
Schwartzkopf O(n
d/2 +1 log n + f log n)
1
1− O(1)
Chan O(n log f + (nf ) d/2 +1 log n)
Chan, 1 2
1− 1− O(1)
Snoeyink, O((n + (nf ) d/2 + fn d/2 ) log n)
Yap
41. (Convex Hull)
A brief history of Voronoi Diagram algorithms.
d/2
Chazelle O(n log n + n )
Avis O(nf )
2
Seidel O(n + f log n)
Matousek and 2− 2
O(1)
Schwartzkopf O(n
d/2 +1 log n + f log n)
1
1− O(1)
Chan O(n log f + (nf ) d/2 +1 log n)
Chan, 1 2
1− 1− O(1)
Snoeyink, O((n + (nf ) d/2 + fn d/2 ) log n)
Yap
Miller and Sheehy O(f log n log ∆)
(today’s talk)
47. Mesh Generation
Decompose a domain
Mesh Quality Conforming to Input
into simple elements.
X ✓ X
Radius/Edge < const
48. Mesh Generation
Decompose a domain
Mesh Quality Conforming to Input
into simple elements.
X ✓ X
Radius/Edge < const
49. Mesh Generation
Decompose a domain
Mesh Quality Conforming to Input
into simple elements.
X ✓ X
Radius/Edge < const
50. Mesh Generation
Decompose a domain
Mesh Quality Conforming to Input
into simple elements.
X ✓ X
Radius/Edge < const
51. Mesh Generation
Decompose a domain
Mesh Quality Conforming to Input
into simple elements.
X ✓ X
Radius/Edge < const
Voronoi Diagram
52. Mesh Generation
Decompose a domain
Mesh Quality Conforming to Input
into simple elements.
X ✓ X
Radius/Edge < const
Voronoi Diagram OutRadius/InRadius < const
53. Mesh Generation
Decompose a domain
Mesh Quality Conforming to Input
into simple elements.
X ✓ X
Radius/Edge < const
X ✓
Voronoi Diagram OutRadius/InRadius < const
54. Mesh Generation
Decompose a domain
Mesh Quality Conforming to Input
into simple elements.
X ✓ X
Radius/Edge < const
X ✓
Voronoi Diagram OutRadius/InRadius < const
55. Meshing Points
Input: P ⊂ Rd
Output: M ⊃ P with a “nice” Voronoi diagram
n = |P |, m = |M |
56. Meshing Points
Input: P ⊂ Rd
Output: M ⊃ P with a “nice” Voronoi diagram
n = |P |, m = |M |
57. Meshing Points
Input: P ⊂ Rd
Output: M ⊃ P with a “nice” Voronoi diagram
n = |P |, m = |M |
58. Meshing Points
Input: P ⊂ Rd
Output: M ⊃ P with a “nice” Voronoi diagram
n = |P |, m = |M |
59. Meshing Points
Input: P ⊂ Rd
Output: M ⊃ P with a “nice” Voronoi diagram
n = |P |, m = |M |
Counterintuitive Fact about Meshing:
It’s sometimes easier to build the Voronoi/Delaunay
of a superset of the input, than of the input alone.
60. Meshing Guarantees
Aspect Ratio (quality): v
Rv
Rv rv
≤τ
rv
Cell Sizing:
lfs(x) := d(x, P {NN(x)})
1
lfs(v) ≤ Rv ≤ Klfs(v)
K
Constant Local Complexity:
Each cell has at most a constant number of faces.
Optimality and Running time:
|M | = Θ(|Optimal|)
Running time: O(n log n + |M |)
61. Mesh Generation in reverse?
Build a quality mesh.
Increase the weights
of the input points.
Update the structure
for each local change.
62. Mesh Generation in reverse?
Build a quality mesh.
Increase the weights
of the input points.
Update the structure
for each local change.
63. Mesh Generation in reverse?
Build a quality mesh.
Increase the weights
of the input points.
Update the structure
for each local change.
64. Mesh Generation in reverse?
Build a quality mesh.
Increase the weights
of the input points.
Update the structure
for each local change.
65. Mesh Generation in reverse?
Build a quality mesh.
Increase the weights
of the input points.
Update the structure
for each local change.
66. Mesh Generation in reverse?
Build a quality mesh.
Increase the weights
of the input points.
Update the structure
for each local change.
67. Mesh Generation in reverse?
Build a quality mesh.
Increase the weights
of the input points.
Update the structure
for each local change.
68. Mesh Generation in reverse?
Build a quality mesh.
Increase the weights
of the input points.
Update the structure
for each local change.
69. Mesh Generation in reverse?
Build a quality mesh.
Increase the weights
of the input points.
Update the structure
for each local change.
70. Mesh Generation in reverse?
Build a quality mesh.
Increase the weights
of the input points.
Update the structure
for each local change.
71. Mesh Generation in reverse?
Build a quality mesh.
Increase the weights
of the input points.
Update the structure
for each local change.
79. Local changes are flips.
Flips correspond to intersections of the Voronoi diagram of the
mesh and the Voronoi diagram of the input points.
80. Computing the flip times only requires a
single determinant computation.
81. Computing the flip times only requires a
single determinant computation.
p1 ··· pd+2
d+2 points cospherical iff det 1 ··· 1 =0
2 2
p1 ··· pd+2
82. Computing the flip times only requires a
single determinant computation.
p1 ··· pd+2
d+2 points cospherical iff det 1 ··· 1 =0
2 2
p1 ··· pd+2
d+2 weighted points on a common orthosphere iff
p1 ··· pd+2
det 1 ··· 1 =0
p1 2 − w 1 · · · pd+2 2 − wd+2
83. Computing the flip times only requires a
single determinant computation.
p1 ··· pd+2
d+2 points cospherical iff det 1 ··· 1 =0
2 2
p1 ··· pd+2
d+2 weighted points on a common orthosphere iff
p1 ··· pd+2
det 1 ··· 1 =0
p1 2 − w 1 · · · pd+2 2 − wd+2
t if pi ∈ P
Define wi =
0 otherwise
84. Computing the flip times only requires a
single determinant computation.
p1 ··· pd+2
d+2 points cospherical iff det 1 ··· 1 =0
2 2
p1 ··· pd+2
d+2 weighted points on a common orthosphere iff
p1 ··· pd+2
det 1 ··· 1 =0
p1 2 − w 1 · · · pd+2 2 − wd+2
t if pi ∈ P
Define wi =
0 otherwise
p1 ··· pd+2
So, det 1 ··· 1 is linear in t.
p1 2 − w 1 ··· pd+2 2 − wd+2
87. The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
88. The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
Keep potential flips on a heap ordered by flip time.
89. The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
Keep potential flips on a heap ordered by flip time.
(flip time is the weight of the input points when the flip happens)
90. The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
Keep potential flips on a heap ordered by flip time.
(flip time is the weight of the input points when the flip happens)
Repeatedly pop a flip, attempt to do it, and update.
91. The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
Keep potential flips on a heap ordered by flip time.
(flip time is the weight of the input points when the flip happens)
Repeatedly pop a flip, attempt to do it, and update.
(at most O(1) new potential flips are added to the heap)
92. The Algorithm
Add a bounding box around the points.
Build a quality mesh of the points.
Keep potential flips on a heap ordered by flip time.
(flip time is the weight of the input points when the flip happens)
Repeatedly pop a flip, attempt to do it, and update.
(at most O(1) new potential flips are added to the heap)
When the heap is empty, remove the bounding box and
all incident Delaunay faces.
98. A summary of the analysis.
Full dimensional mesh cells intersect output faces at
most log(spread) times.
99. A summary of the analysis.
Full dimensional mesh cells intersect output faces at
most log(spread) times.
Since each mesh cell has only a constant number of
faces, we only get O(f log(spread)) total flips.
100. A summary of the analysis.
Full dimensional mesh cells intersect output faces at
most log(spread) times.
Since each mesh cell has only a constant number of
faces, we only get O(f log(spread)) total flips.
Each flip generates at most O(1) new flips on the heap.
101. A summary of the analysis.
Full dimensional mesh cells intersect output faces at
most log(spread) times.
Since each mesh cell has only a constant number of
faces, we only get O(f log(spread)) total flips.
Each flip generates at most O(1) new flips on the heap.
The heap operations require O(log n) time each.
102. A summary of the analysis.
Full dimensional mesh cells intersect output faces at
most log(spread) times.
Since each mesh cell has only a constant number of
faces, we only get O(f log(spread)) total flips.
Each flip generates at most O(1) new flips on the heap.
The heap operations require O(log n) time each.
Total running time is O(f log n log (spread)).
104. Summary
A new output-sensitive algorithm for Voronoi diagrams and
Delaunay triangulations in d-dimensions.
105. Summary
A new output-sensitive algorithm for Voronoi diagrams and
Delaunay triangulations in d-dimensions.
Start with a quality mesh and then remove the Steiner points.
106. Summary
A new output-sensitive algorithm for Voronoi diagrams and
Delaunay triangulations in d-dimensions.
Start with a quality mesh and then remove the Steiner points.
Use geometry to bound the combinatorial changes.
107. Summary
A new output-sensitive algorithm for Voronoi diagrams and
Delaunay triangulations in d-dimensions.
Start with a quality mesh and then remove the Steiner points.
Use geometry to bound the combinatorial changes.
Running time: O(f log n log ∆)
108. Summary
A new output-sensitive algorithm for Voronoi diagrams and
Delaunay triangulations in d-dimensions.
Start with a quality mesh and then remove the Steiner points.
Use geometry to bound the combinatorial changes.
Running time: O(f log n log ∆)
Thank you.