Minimal number of hyperplanes needed to separate sets of points from one other set Let $\mathbb{R}^d$ be our space. We have a single good set of points $g$, and a collection of bad sets of points $B$. 

We assume that for all $b \in B$ the convex hulls of $g$ and $b$ are disjoint. This means that there exist a hyperplane separating $g$ and $b$ (which we can find  in poly time with linear programming). We could repeatedly cut our space, eliminating one $b$ at a time, and be left with a subspace that only contains $g$ from our initial sets - this is what we want.

But we can do (a lot) better - we could separate multiple $b \in B$ from $g$ simultaneously with a single hyperplane. Is there an efficient algorithm that finds the minimal number of hyperplanes needed (and the partition of $B$ into groups you eliminate simultaneously)?
Your problem is NP-complete, even in the following two highly restricted cases:


The dimension $d$ is part of the input, and the question is whether you can separate set $B$ from set $G$ by $k=2$ hyperplanes.
The dimension is $d=2$ (and the number $k$ of separating hyperplanes is part of the input).


This has been proved in:


  Nimrod Megiddo
  On the Complexity of Polyhedral Separability
  Discrete and Computational Geometry 3, pp 325-337, (1988).