List of triangles to minimum amount of convex polygons
If a edge corner is concave then it needs to border 2 of the output polygons.

So one algorithm would be to find all concave corners (including the ones in the holes) and making cuts starting from them to other concave corners. This will split the polygon in two or join 2 holes into 1 or connect a hole to the outside. 

The cut from a concave corner should be constrained by the angle or it will create a new concave corner that then needs to be cut again.