Percurso mais curto entre vários pontos

Eu preciso encontrar o caminho mais curto entre os pontos de múltiplas. Digamos que eu tenha esses quatro pontos:

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);

Então, quero descobrir quais pontos passam primeiro, para obter a rota mais curta, de startPoint para endPoint.

Alguém pode me ajudar?

Atualização: Tem que passar por cada um dos pontos da lista pointsToGoPast. O custo é igual para cada rota.

questionAnswers(4)

yourAnswerToTheQuestion