I am currently writing a program where I have a set of points within a 2D plane that I would like to convert to a triangle mesh in such a way, that the mesh has the least number of triangles possible.
Currently I use constrained delaunay triangulation but while it gives me the correctly triangulated mesh, this mesh is not optimal regarding the number of triangles:
The mesh above has 11 triangles, but one can trivially see, that it would be possible to triangulate the exact same shape using only 7 triangles as seen below:

My question is: Is there an algorithm, that can optimize the mesh derived from constrained delaunay triangulation as demonstrated above and if so can you please explain it shortly?
If there is no way to postprocess the mesh, is it possible to either filter the point cloud beforehand, or to use a different algorithm for triangulation, which will return the optimal triangulation by default?