Dijkstra不会在同一点开始和结束

时间:2015-01-10 08:50:36

标签: javascript graph-algorithm dijkstra path-finding pathfinder

我试图创建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' }};

并且值得注意的是,连接/边缘仅被视为一种方式。

任何帮助都会受到大力赞赏!

2 个答案:

答案 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

基本上,为了获得您想要的结果,您只需要停止算法创建从起点到自身的路径。但是,如果这段代码要经过审核以确定它的编写方式,或将来重新使用,我建议重新考虑它!