Ruta más corta entre múltiples puntos.

Necesito encontrar la ruta más corta entre los puntos multipe. Digamos que tengo estos cuatro puntos:

var startPoint = new Point(1, 1);
var pointsToGoPast = new List<Point> { new Point(3,1); new Point(2,4); };
var endPoint = new Point(10, 10);

Por lo tanto, quiero saber qué puntos se deben pasar primero para obtener la ruta más corta, desde startPoint hasta endPoint.

¿Alguien puede ayudarme?

Actualización: debe pasar cada uno de los puntos de la lista pointsToGoPast. El costo es incluso para cada ruta.

Respuestas a la pregunta(4)

Su respuesta a la pregunta