Convex Hull Tutorial

advertisement
A Tutorial On Convex Hulls
by
Fan Chen
Enrique Portillo
Daniel Yehdego
Paul Delgado
Convex Hull Tutorial
1. Introduction
To explain what a convex hull is, we will explain what it means to be ‘convex’. A subset
S of a space is titled convex if and only if for any pair of points p & q in the set S, the line
section from p to q is enclosed completely in the set of S, as portrayed on the images below.
Non-Convex
Convex
With this definition now we can explain what convex hull means, imagine in a two
dimensional space there exists a finite set of points K={k1, k2, … , kn} on a Cartesian plane.
The set K contains a subset of points L={l1, l2, … ,ln} where 2 ≤ L ≤ K, then L is the smallest
set of points that embrace all the points in K, as portrayed in the images below.
A Hull, but not convex
Convex Hull
With these images we can explain what a convex hull is. The image in the left is not a
convex hull because although all the points touching the red edges embrace all the points in the
entire set, this set of points cannot be a convex hull because there are line segments between
points that lie outside the outer boundary. The image on the right, on the other hand, is a convex
hull because all line segments between points lie entirely in (or on) the boundary. Note that the
purple edges indeed form the smallest set that embraces all the points in the entire set. There is
an analogy that help understand this problem really easy. Imagine that the blue points in the
images above are nails, then if you stretch a rubber band around them and release it the nails
touching the rubber band is the convex hull set.
Figure 1.2 – Rubber bands fitting tightly around a set of nails forms a convex hull
Our project is about finding ways to compute the convex hull for two, three, … , N
dimensions and applying it to real life applications like mesh generation, video games, path
finding and many more problems.
2. Significance
It is one of the most ubiquitous problems in mathematics and computer science. As one
of the oldest problems addressed in the field of computational geometry, it lays the foundation
for algorithms to many geometric and graph theoretic problems. Though algorithms (O(n^4))
have existed to compute a convex hull since medieval times, the first efficient algorithms didn’t
appear until the work of Chand & Kapur (1970). A wide variety of algorithms have been
developed since then, including optimal algorithms (Chan, 1996). Furthermore, advancement of
these algorithms has led to further development in other fields of mathematics and computer
science.
Among the applications of convex hulls include optimal path finding, collision detection /
avoidance, linear programming, mesh generation, and pattern detection. The real world
implications of these applications are detailed next.
2.1 – Application: Cleaning Your Floors
Figure 2.1 – The iRobot Roomba, with elapsed photography illustrating sweeping patterns. Source: Consumer Reports
The iRobot Roomba ® Vacuum Cleaning Robot is an innovative device which automatically
removes cleans entire household. The ability to detect walls, tables, chairs, and other objects
seems almost magical. But in fact, the ability to plot a path around obstacles is based upon the
capacity to identify the boundaries around these obstacles.
Figure 2.1 - An optimal path around obstacles, using convex hulls.
In two dimensions, the convex hull of an object is simply the smallest polygon that fits
tightly around the outer corners of an object. Moving around the room, the Roomba can detect
these corners and the boundaries encompassing the obstacle. With this information, it can
compute the optimal (minimal distance) path between any two points in any given room. This is
especially important to determine the sweeping patterns necessary to clean the room, and the
path to return to its charging station.
2.2 Application: Finding Your True Love
The popular dating website Eharmony.com claims to be the “first relationship service on the
web to use a scientific approach to match highly compatible singles” (Heineman et al, 2008).
Users of the service fill out a detailed survey, detailing 29 dimensions of compatibility. From
these surveys, eHarmony searches a database of over 14 million users for a close match. With
over 14 million users, one would think that the search for a close match in 29 dimensional space
would be computationally expensive.
Figure 2.2 - A system of linear constraints, depicting compatibility preferences.
To speed up the search, eHarmony can filter out users by using a convex hull. Each
compatibility metric forms a linear constraint, limiting the range of possible ‘closest’ matches.
The set of feasible solutions to these linear constraints forms a convex set whose boundaries
form a convex hull. The ‘points’ within the hull are all compatible matches to the user. Within
this set, the eHarmony can search for the closest matches and new matches very quickly.
2.3 Application: Building a skyscraper
Before any complex structure is built, an engineer must know with great certainty
whether it will withstand the forces likely to act on it. Some structures, such as a skyscraper, are
too large and expensive to risk building without near absolute certainty of its structural integrity.
Instead, engineers employ a process called finite element analysis, where a mathematical model
of the building is tested against these forces. The model is built by breaking the complex shape
of the building into a set of smaller, simpler shapes called a finite element mesh.
Figure 2.3 - Finite element mesh representing a beam bending under stress forces.
The convex hull plays an important role in the generation of a finite element mesh. By sampling
nodal points in a p dimensional space, one can projected these points onto a p+1 dimensional
paraboloid. Once the convex hull of these p+1 dimensional points is found, the lower part of the
hull can be project back to p dimensions to form a p dimensional mesh.
Figure 2.4 - 2D triangular mesh generated from the lower convex hull on a paraboloid.
2.4 – Application: Getting a Speeding Ticket
Traffic cameras are often employed to give moving violations to unsuspecting drivers, especially
in certain hotspots. In some cities, the number of traffic violations can be quite large, and
manually sorting through each image to determine the exact license plate number can be quite
tedious. Automatic pattern recognition algorithms are used to automatically determine not only
the license plate number, but also the state logo and registration number.
To determine the letter from a picture, a convex hull of the character in each position is
obtained. From these hulls, another algorithm determines the empty spaces within the hull and
matches it against a template shape corresponding to the specific character or number. The
algorithms to accomplish this were developed in the 1970’s (Toussaint, 1978) and were first
implemented traffic control technology in the late 1980’s (Gonzalez et al, 1989).
With so many applications of convex hulls, scientists and mathematicians have sought
efficient algorithms to compute them. The following section describes these algorithms in detail.
3. Existing Algorithms
In Computational geometry, numerous algorithmic techniques are proposed for computing the
convex hull of a finite set of points, with various computational complexities. The computational
complexity of the corresponding algorithms is usually estimated in terms of n, the number of
input points, and h, the number of points on the convex hull. It is interesting to note that many
algorithms for computing a convex hull are analogous to basic sorting algorithms. A brief
survey of these algorithms are described below.
3.1 – Graham’s Scan
Given a set of points on the plane, Graham's scan computes their convex hull. The algorithm
works in three phases:
1. Find an extreme point. This point will be the pivot, is guaranteed to be on the hull, and is
chosen to be the point with largest y coordinate.
2. Sort the points in order of increasing angle about the pivot. We end up with a star-shaped
polygon (one in which one special point, in this case the pivot can "see" the whole
polygon).
3. Build the hull, by marching around the star-shaped poly, adding edges when we make a
left turn, and back-tracking when we make a right turn.
Figure 3.1 – Graham’s Scan walks along the boundary, making right turns along the way
3.2 – Jarvis’s March (Gift Wrapping)
This is perhaps the most simple-minded algorithm for the convex hull, and yet in some cases it
can be very fast. The basic idea is as follows:
1. Start at some extreme point, which is guaranteed to be on the hull.
2. At each step, test each of the points, and find the one which makes the largest right-hand
turn. The point has to be the next one on the hull.
The simplest (although not the most time efficient in the worst case) algorithm in the plane was
proposed by R.A. Jarvis in 1973. It is also called gift wrapping algorithm. It has O(nh) time
complexity, where n is the number of points in the set, and h is the number of points in the hull,
in the worst cases the complexity is O(n^2).
Figure 3.2 – Execution of Jarvis’s March
3.3 - Divide and Conquer
The divide-and-conquer algorithm is an algorithm for computing the convex hull of a set of
points in two or more dimensions. The algorithm runs in O(nlogn) time, and is based on the
divide and conquer design technique. It can be viewed as a generalization of the Merge Sort
sorting algorithm. It begins by sorting the points by their x coordinate, in O(nlogn) time. The
remainder of the algorithm is shown below.
1. If |P|<=3 then compute the convex hull by brute force in O(1) time and return.
2. Otherwise, partition the point set P into two sets L and R, where L consists of half the
points with the lowest x coordinates and R consists of half of the points with the highest x
coordinates.
3. Recursively compute HL = CH(L) and HR = CH(R).
4. Merge the two hulls into a common convex hull, H, by computing the upper and lower
tangents for HL and HR and discarding all the points lying between these two tangents.
Figure 3.3 – The divide and conquer approach merges two sub-convex hulls into one.
3.4 - Quick Hull
Like the divide-and-conquer algorithm can be viewed as a sort of generalization of Merge-Sort,
the Quick-Hull algorithm can be thought of as a generalization of the Quick-Sort sorting
procedure. Like Quick-Sort, this algorithm runs in O(nlogn) time for favourable inputs but can
take as long as O(n2) time for unfavourable inputs.
The idea behind Quick-Hull is to discard points that are not on the hull as quickly as possible.
Quick-Hull begins by computing the points with the maximum and minimum, x- and ycoordinate. Clearly these points must be on the hull, and connect the four points we get a convex
quadrilateral, all the points within this quadrilateral can be eliminated from further consideration.
All of this can be done in O(n) time.
Figure 3.4 – Quck Hull successively eliminates points on the interior of the hull
3.5 Incremental
The incremental convex hull algorithm is usually relatively simple to implement, and generalize
well to higher dimensions. This algorithm operates by inserting points one at a time and
incrementally updating the hull. If the new point is inside the hull there is nothing to do.
Otherwise, we must delete all the edges that the new point can see. Than we connect the new
point to its two neighbour points to update the hull. By repeating this process for the rest points
outside the hull, finally, we get the convex hull for the points set
Figure 3.5 – Incremental Algorithm creates the hull, one point at a time.
The randomized version of the algorithm operates as follows. Permute the points randomly, let P
= (p0, p1,..., pn-1) be this sequence. Let H2 = CH(p0, p1, p2) (a triangle). For i running from 3 to n1, insert pi into the existing hull Hi-1.
As with other randomized algorithms, the expected running time depends on the random order of
insertion, but is independent of the point set. By a backwards analysis, we can know its running
time is O(nlogn).
A summary of the runtime of these, and other existing algorithms is shown in Figure 3.1
Algorithm
Brute Force
Graham Scan
Jarvis March
QuickHull
Divide-and-Conquer
Monotone Chain
Incremental
Chan's algorithm
Running Time
Discovered By
O(n3)
O(nlog n)
O(nh)
O(nh)
O(nlog n)
——
Graham, 1972
Jarvis, 1973
Eddy, 1977 ; Bykat, 1978
Preparata & Hong, 1977
O(nlog n)
O(nlog n)
O(nlog h)
Andrew, 1979
Kallay, 1984
Timothy Chan, 1993
Figure 3.6 – Summary of Asymptotic Behaviors of existing Convex Hull Algorithms
4. Proposed Projects
Three of our group members will work on developing and testing new algorithms in arbitrary
dimensions, while the fourth member works on an application on the convex hull. New
algorithms will be developed by merging two existing algorithms into a hybrid program that
may, in theory, lead to faster performance than either algorithm individually. The application of
convex hulls to be studied is that of creating triangular finite element meshes in 2 dimensions by
projecting the lower convex hull of a point set on a paraboloid. The work of each individual in
our group is divided as follows:
Fan Chen - Merging QuickHull and Incremental algorithms into a hybrid program.
Enrique Portillo - Merging Quick Hull and Gift Wrapping algorithms into a hybrid program.
Daniel Yehdego – Merging QuickHull and Divide and Conquer algorithms into a hybrid
program.
Paul Delgado - Generating convex hulls in 3D to generate triangular meshes in 2D. If time
permits, he will also use 4D convex hulls to create 3D tetrahedral meshes using an analogous
technique.
Download