我试图创建Dijkstra寻路的实现,除了我要求它创建一条在同一个地方开始和结束的路线之外,它似乎工作得很好。
JSFiddle:http://jsfiddle.net/Lt6b4ecr/
我需要它选择尽可能低的加权路线,它应该是B-C-E-B,但它只是位于0 :(
我的图表设计如下:
var graph = {
A: { B: '5', D: '5', E: '7' },
B: { C: '4' },
C: { D: '8', E: '2' },
D: { C: '8', E: '6' },
E: { B: '3' }};
并且值得注意的是,连接/边缘仅被视为一种方式。
任何帮助都会受到大力赞赏!
答案 0 :(得分:1)
你得到的结果是正确的。空路径是有效路径。
答案 1 :(得分:0)
您获得的结果是正确的,因为空路径总是比非空路径更短(假设所有距离都是非负路径)!
我发现你的代码难以调试(尝试保持较短的功能,所以每个只做一个明确的工作!)但作为一个起点我发现你的算法实际上是这样的:
B -> B (distance 0)
B -> B -> C (distance 4)
B -> B -> C -> E (distance 6)
"Cannot find a route back to B, as it's already been used"
...
B -> B (distance 0) was the shortest
基本上,为了获得您想要的结果,您只需要停止算法创建从起点到自身的路径。但是,如果这段代码要经过审核以确定它的编写方式,或将来重新使用,我建议重新考虑它!