background preloader

Delaunay

Facebook Twitter

Locality Sensitive Hashing (LSH) Home Page. Interval tree. The trivial solution is to visit each interval and test whether it intersects the given point or interval, which requires Θ(n) time, where n is the number of intervals in the collection.

Interval tree

Since a query may return all intervals, for example if the query is a large interval intersecting all intervals in the collection, this is asymptotically optimal; however, we can do better by considering output-sensitive algorithms, where the runtime is expressed in terms of m, the number of intervals produced by the query. Interval trees are dynamic, i.e., they allow insertion and deletion of intervals. They obtain a query time of O(log n) while the preprocessing time to construct the data structure is O(n log n) (but the space consumption is O(n)).

If the endpoints of intervals are within a small integer range (e.g., in the range [1,...,O(n)]), faster data structures[which?] Naive approach[edit] Interval trees solve this problem. Delaunay triangulation. A Delaunay triangulation in the plane with circumcircles shown For a set of points on the same line there is no Delaunay triangulation (the notion of triangulation is degenerate for this case).

Delaunay triangulation

For four or more points on the same circle (e.g., the vertices of a rectangle) the Delaunay triangulation is not unique: each of the two possible triangulations that split the quadrangle into two triangles satisfies the "Delaunay condition", i.e., the requirement that the circumcircles of all triangles have empty interiors. By considering circumscribed spheres, the notion of Delaunay triangulation extends to three and higher dimensions. Generalizations are possible to metrics other than Euclidean.

However in these cases a Delaunay triangulation is not guaranteed to exist or be unique. Relationship with the Voronoi diagram[edit] The Delaunay triangulation with all the circumcircles and their centers (in red).Connecting the centers of the circumcircles produces the Voronoi diagram (in red). Delaunay Triangulation. Some time back I spent a lot of time implementing, optimising and comparing two worst-case optimal Delaunay triangulation algorithms: the Guibas-Stolfi divide and conquer algorithm and Fortune's plane sweep algorithm.

Delaunay Triangulation

These algorithms are described in: Guibas, L. and Stolfi, J., "Primitives for the Manipulation of General Subdivisions and the Computation of Voronoi Diagrams", ACT TOG, 4(2), April, 1985. and Fortune, S., "A Sweepline Algorithm for Voronoi Diagrams", Algorithmica, 2:153-174, 1987. I wrote a paper about the comparison for the Fourth Canadian Conference on Computational Geometry in 1992.

The C code for the Guibas-Stolfi algorithm is available for you to use (non-commercially) The input/output model is simple: "dct < file1 > file2". The program (still) suffers from numerical problems, and this area of the implementation needs further work. Comments, advice, bug reports, etc. welcome. Its my first Java applet, and requires more work ... Here is the code if you're interested.