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:

