【发布时间】:2014-08-05 18:14:09
【问题描述】:
我已经可以使用 Dijkstra 算法找到两个顶点之间的最短路径:wiki Dijkstra's。
但是。我的一些边缘旨在用作“检查点”,因为您必须通过至少一个检查点才能获得可用的路线。
有时,算法会找到一条不包含这些边缘检查点的路径。在那种情况下,我想找到第二个。最短路线 - 如果该路线也不包含检查点,则找到第三条。最短路径等等。
任何想法如何让我开始?
编辑:
是否可以在第一条路线上遍历所有的前辈,然后从前辈跑到目的地的Dijkstras(并排除前辈的下一个goto顶点的原始选择)。这样我就可能找到所有可能的路线,然后将它们相互比较?
示例。
A = 来源 Z = 目的地
最短路径:A -> B -> C -> D -> Z
第二。最短路径:A -> B -> C -> D ->“成本最低的顶点,不是 Z”(如果在当前尝试中找不到可用路径,则循环遍历所有 D 的未访问邻居)
如果是第二个。最短路径也不包含检查点,尝试第三个最短路径
第三。最短路径:A -> B -> C -> 成本最低的顶点,不是 D
或者这个解决方案无论如何都不可能?
编辑 2:
可能很难看到,但紫色 1x3 像素是顶点。黄色的道路是边缘,粉红色的 3x3 像素也是如此。粉红色的也是所谓的检查站。所以我必须找到最短的路线,并且至少要经过一个检查站。
【问题讨论】:
-
您还有其他关于图形地形的信息吗?它是一个有向图吗?如果是,它可以包含循环吗?
-
请在问题中明确说明您必须使用 Dijkstra 算法。
-
还有,怎么去Greenalnd?
标签: c# algorithm dijkstra path-finding