I don't know, whether this is an already known algorithm and I also don't know how optimal the resulting partitioning will be, but its description and implementation are simple:
identify the set of inflex points, i.e. where a right-turn is made when going around the polygon counter clockwise
calculate the nested convex hull of the inflex point set
cut the polygon along the edges of the nested convex hull, that are inside the polygon