Finding a minimum polygon of a set of points
tobyschachman.com
tobyschachman.com
One can transform the problem to the following, and solve it in around O(n^7) time. http://dl.acm.org/citation.cfm?id=73853
There probably exist faster algorithm for this special case using smarter parametric search...
You can do this as a "rolling" algorithm. Start with three points, defining a triangle. Then repeatedly add the next point.
To add a point, first check if it's inside the (convex) polygon found so far. If it is, you're done. Just continue to the next point to add.
If it isn't, you walk along both directions along the (convex) polygon until you hit the first point that doesn't violate the convexity constraint. (Just compare slopes of the lines between the next point and the target point, and the target point and the point to be added). Then just splice it in in place of the chunk removed.
Now, this isn't particularly fast - O(n^3) I think, but it's still faster than spinning up a LP solver.
(Again, I'm probably missing something.)
That makes much more sense.
You can find where to add a new point in O(lg h) time with a binary search, but you may need to eject O(h) old points. Points can only be ejected once, so there might still be some nice aggregate bound in terms of n.
And playing with the program, I find minimal pentagons that seem to be defined by 5 points.