MathOverflow will be down for maintenance for approximately 3 hours, starting Monday evening (06/24/2013) at approximately 9:00 PM Eastern time (UTC-4).
show/hide this revision's text 2 Updated according to the OP's edit of the question.

I don't know of an algorithm for your specific problem. But if your polygonal holes are well-separated in the sense that their convex hulls are disjoint (as in your example)example—and now the OP edited to specify convex holes), then you might be able to adapt cluster-partition algorithms to your task. The figure below, which I extracted from a paper by Li et al., "On cluster tree for nested and multi-density data clustering," Pattern Recognition, 2010 (Elsevier link), illustrates my suggestion:


         Cluster Partition

show/hide this revision's text 1

I don't know of an algorithm for your specific problem. But if your polygonal holes are well-separated in the sense that their convex hulls are disjoint (as in your example), then you might be able to adapt cluster-partition algorithms to your task. The figure below, which I extracted from a paper by Li et al., "On cluster tree for nested and multi-density data clustering," Pattern Recognition, 2010 (Elsevier link), illustrates my suggestion:


         Cluster Partition