Efficient Algorithms to Test Digital Convexity
A set S ⊂Z^d is digital convex if conv(S) ∩Z^d = S, where conv(S) denotes the convex hull of S. In this paper, we consider the algorithmic problem of testing whether a given set S of n lattice points is digital convex. Although convex hull computation requires Ω(n n) time even for dimension d = 2, we provide an algorithm for testing the digital convexity of S⊂Z^2 in O(n + h r) time, where h is the number of edges of the convex hull and r is the diameter of S. This main result is obtained by proving that if S is digital convex, then the well-known quickhull algorithm computes the convex hull of S in linear time. In fixed dimension d, we present the first polynomial algorithm to test digital convexity, as well as a simpler and more practical algorithm whose running time may not be polynomial in n for certain inputs.
READ FULL TEXT