多点之间的最短路线

Mar*_*tin -2 c# math geometry 2d

我需要找到多点之间的最短路径.让我们说我有以下四点:

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);
Run Code Online (Sandbox Code Playgroud)

因此,为了获得从startPoint到endPoint的最短路径,我想找出首先要经过的点.

谁能帮我?

更新:必须经过pointsToGoPast列表中的每个点.每条路线的成本都是均匀的.

jus*_*erb 6

你可以通过Dijkstra的算法来做到这一点.

示例项目包含代码

唯一需要改变的是项目中的权重,因为权重是基于两点之间的距离.(所以你需要修改Location存储a PointConnection计算构造函数中的权重(距离).

维基百科有一篇关于该算法的非常好的文章