260 likes | 552 Views
I/O-Efficient Construction of Constrained Delaunay Triangulations. Pankaj K. Agarwal, Lars Arge, and Ke Yi Duke University. DT vs. Constrained DT. Delaunay Triangulation. Constrained Delaunay Triangulation As much “Delaunay” as possible while keeping the constrained edges.
E N D
I/O-Efficient Construction of Constrained Delaunay Triangulations Pankaj K. Agarwal, Lars Arge, and Ke Yi Duke University
DT vs. Constrained DT Delaunay Triangulation Constrained Delaunay Triangulation As much “Delaunay” as possible while keeping the constrained edges
Constrained DT: Definition • A set of points: P • A set of non-intersecting obstacle segments S with endpoints in P • CDT(P,S) consists of all segments in S and all edges connecting pairs of points p,q ofP such that (1) p and q can see each other, and (2) there exists a circle passing through p and q, that contains only points of P that cannot see both p and q p q A valid edge in DT p q A valid edge in CDT
Constrained DT: Definition (2) • A set of points: P • A set of non-intersecting obstacle segments S with endpoints in P • Or equivalently, CDT(P,S) consists of all triangles pqr such that (1) any two of p, q, and r can see each other or are connected by a segment of S; (2) their circumcircle contains only points that cannot see the interior of pqr. r p q A valid triangle in DT r p q A valid triangle in CDT
I/O Model CPU N elements Scan: O(N/B) I/Os (linear) Sort: O(N/B logMN) I/Os Main memory: M Disk size = B Disk
Previous Results • Internal memory algorithms • DT: many algorithms [Aurenhammer and Klein], practical • CDT: [Chew 1987], [Wang and Schubert 1987], runs in O(N log N) time but impractical; Use incremental construction in practice • External memory algorithms • DT: [Crauser et al. 2001] runs in expected O(N/B logMN) I/Os • CDT: not known
Our Results • The first external memory algorithm for building the constrained Delaunay triangulation • Runs in expected O(N/B logMN) I/Os when #segments < M • Implementation
Algorithm • Take asample R of size M including all segment endpoints • Build CDT(R,S) • Construct the conflict list of each edge of CDT(R,S) The conflict list of an edge e consists of all points in two adjacent circumcircles and visible from e
Algorithm • Build CDT of each conflict list (recurse if still too large to fit in memory) • Assemble results together (discussed later) Linear I/Os (in the total size of conflict lists) if ignore recursion
Analysis • Lemma: Expected size of each conflict list = O(N/M) • Following Clarkson and Shor framework • Difference: Only a constant fraction of the samples are random • O(logMN) levels of recursion • Total: O(N/B logMN)
Kernels Kernel
Assemble Results Together • Lemma 1: A triangle is a valid triangle of CDT(P,S) iff its circumcenter lies inside the kernel Kernel
Assemble Results Together • Lemma 2: The circumcenter of each triangle of CDT(P,S) lies inside exactly one kernel Kernel
Implementation & Experiments • Using TPIE • Compared with Shewchuk’s Triangle program • Incremental construction • Delete all edges intersected by s • Retriangulate two polygons on both sides of s • Pre-sort points and segments along some space filling curve (Hilbert curve)
Experiment: Uniform Data 10 million points Varying #segments Ave segment length = 0.003 Memory: 128M
Experiment: Segment Length 10 million points 10,000 segments Varying segment length Memory: 128M
Experiments: Real World Data points: LIDAR points from the Neuse River Basin Segments: TIGER roaddata Largest dataset: 0.5 billion points, 1 million segment (input file: 80GB)
Experiments: Real World Data 7.5 hours Couldn’t run internalalgorithm 16M 28M 44M 59M 91M 116M 163M 257M 503M
Open Questions • External memory algorithms for arbitrary #segments • Analysis of the (internal memory) randomized incremental algorithm • O(n log2 n) • Ω(n log n)
Extending the Plane Secondary sheet Primary sheet [Seidel, 1989]
Extending the Plane Secondary sheets Primary sheet [Seidel, 1989]
Traveling Rule x Secondary sheets z y Primary sheet [Seidel, 1989]
Extended Voronoi Diagram Secondary sheets Primary sheet p [Seidel, 1989]
Extended Voronoi Diagram Secondary sheets Primary sheet CDT(P,S) is dual to EVD(P,S) [Seidel, 1989]
Kernels Secondary sheets Primary sheet