Jump to content

Kirkpatrick–Seidel algorithm

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Altenmann (talk | contribs) at 19:05, 10 June 2007 (Created page with 'The '''Kirkpatrick-Seidel algorithm''', called '''the ultimate convex hull algorithm''' is the first output-sensitive algorithm of computing of the [[convex hul...'). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

The Kirkpatrick-Seidel algorithm, called the ultimate convex hull algorithm is the first output-sensitive algorithm of computing of the convex hull of the set of points in the plane with O(n log h) time complexity, where n is the number of input points and h is the number of points in the hull. [1]

Algoritm

The basic idea of the algorithm is a kind of reversal of the divide-and-conquer algorithm for convex hulls of Preparata and Hong, dubbed as "marriage-before-conquest" by the authors.

The traditional divide-and-conquer would require splitting the input points into two equal parts, e.g., by a vertical line, recursively finding convex hulls for the left and right pointsets, and then merging the two hulls into one by finding the "bridge edges", tangential to the two hulls from above and below.

The "ultimate" algorithm first finds the median of the x-coordinates of the input pointset. Then the algorithm finds the edges of the convex hull that intersect the vertical line with this median x-coordinate (and the corresponding vertices on the conex hull), which turns out to require the linear time. After that the input points are split into the left and right halves, in linear time.

Since at each level of recursion new output points are found, the depth of recursion is logarithmic on the number of the output points, hence the staed tiome complexity.

See also

References

  1. ^ David G. Kirkpatrick and Raimund Seidel. The ultimate planar convex hull algorithm. SIAM J. Comput., 15(1):287–299, 1986.