

Building a Minimal Convex Hull - skazka16
http://kukuruku.co/hub/algorithms/building-a-minimal-convex-hull

======
nilkn
I became pretty interested in this topic not too long ago. Convex hulls are
pretty well understood. I wanted to figure out a decent notion of "concave
hull" (which is not a uniquely defined construct, unlike the convex hull). It
turns out alpha shapes are pretty well suited to this:

[http://bl.ocks.org/zpconn/11387143](http://bl.ocks.org/zpconn/11387143)

------
chaoxu
I have a hard time understanding why the author go out of his/her way to
rename standard definitions.

1\. The definition of convex hull of a set S in the article, is the boundary
of a convex set that contains all the points in S. The standard definition is
the "intersection of all convex sets that contains S". Edit: Yes, this is not
a good definition for the article, but there is a equivalent for finite set of
points in 2D which is much better suited: "The smallest convex polygon contain
all the points in S"

2\. The definition of minimal convex hull in the article, in the standard
terminology, is the boundary of the convex hull.

The article links to wikipedia which clearly explains what is a convex hull,
but still decides to come up with new terminology. As a warning, the "convex
hull" in this article is not equivalent to the "convex hull" in wikipedia(or
any other textbook definitions I have seen).

~~~
Tloewald
I don't think the writer is really doing anything much wrong. In the Wikipedia
article on the topic "convex hull" is defined as you suggest for sets in
abstract, but for a _finite set of points_ , as being the polygon (and not the
interior of the polygon), which is consistent with the writer's terms and it
is rather closer to both the intuitive understanding of the matter at hand and
the algorithms under discussion.

It seems to me that the term "convex hull" is ambiguous, even among geometers
-- sometimes meaning the set and sometimes the boundary. A hull tends to be
hollow, so I'd suggest that the boundary definition is nearer normal usage and
intuition. In any event, the writer defines the terms and uses them as
defined.

I think the two algorithms he examines are interesting. The second is the one
I first think of. The two methods are _almost_ duals of each other. It seems
to me that if you start by taking the top, left, right, and bottom points as
your initial hull and then add on for any points not in that hull, it's almost
certainly faster than either algorithm (especially in practice).

~~~
chaoxu
Of course, using the most abstract definition is not the best idea, but
anything equivalent to the standard terminology is ok. For example, in 2d, we
can san say the convex hull of a finite set of points is the smallest
enclosing convex polygon.

The name convex hull is related to linear hull and conic hull, therefore
defining it to not contain the interior is strange, but reasonable because in
many applications we only care about the description of the convex hull by
describing the polygon.

~~~
Tloewald
Well in abstract there are plenty of possible spaces where a set can be
bounded but its boundary does not exist within the set (e.g. consider the
transcendentals between 0 and 1) so talking about the "hull" as a boundary is
completely useless. Even so, picking the word "hull" was perhaps careless.

A lot of people, even mathematicians, are confused on the definition of circle
vs. sphere (the circle is the boundary, the sphere is the volume), so even if
you use these terms "correctly" you probably want to define your understanding
of them.

------
filereaper
There's also Chan's algorithm
([http://en.wikipedia.org/wiki/Chan%27s_algorithm](http://en.wikipedia.org/wiki/Chan%27s_algorithm))

~~~
dllu
Output-sensitive algorithms are pretty interesting in general. Previous to
Chan's algorithm there was the Kirkpatrick-Seidel algorithm
([https://en.wikipedia.org/wiki/Kirkpatrick%E2%80%93Seidel_alg...](https://en.wikipedia.org/wiki/Kirkpatrick%E2%80%93Seidel_algorithm)),
which is more complicated but runs in the same time complexity. Their paper
also provides a proof of optimality.

For interested students, Dave Mount's computational geometry notes
([http://www.cs.umd.edu/~mount/754/Lects/754lects.pdf](http://www.cs.umd.edu/~mount/754/Lects/754lects.pdf))
provides an excellent overview of algorithms used for most things.

------
nacs
Another good source for convex hull code (I was using this recently):
[http://marknelson.us/2007/08/22/convex/](http://marknelson.us/2007/08/22/convex/)

