4

Let $S = \{P_1, P_2, ..., P_m\}$ be a set of convex polygons in $\mathbb R^2$ with a total of $n$ vertices. Polygons are defined by ordered lists of vertices, and each vertex is represented by a pair $(x,y)$ of its Cartesian coordinates. Polygons may have non-empty pairwise intersections.

A convex polygon is called stabbed by a line, if there is a non-empty intersection between them. A set $L$ of lines is called stabbing set for the set $S$, if each polygon in the $S$ is stabbed by at least one line from the $L$. Find a minimum stabbing set for the set $S$.

Are there any algorithms (papers, research) for this problem?

This problem is related to this question on SO.

HEKTO
  • 3,173
  • 16
  • 19

1 Answers1

1

As others have pointed out, the problem is NP-hard. The best we can expect in this case is an approximation algorithm. Set-Cover is a natural choice for this. But the main hurdle here is that the subsets are not explicitly handed out to us. If we somehow have a subset of all possible stabbings, we immediately have a $O(\log n)$ approximation algorithm via Set-Cover. Just iteratively pick the set covering the largest number of elements that are yet to be covered.

Observe that if there is a line $l$ that stabs a subset of $S$, we can shift/rotate the line so that it still stabs the same set. In the extermal case, we would have a line $l'$ that passes through two vertices of any of the two polygons it stabs. Therefore, we are to only observe $n\choose 2$ such lines, which would give us the required subsets for Set-Cover.

codeR
  • 1,983
  • 7
  • 17