我已经在维基百科上看到了伪代码,我的一个朋友也写了一些代码给我,但它根本就不可理解。该算法似乎非常简单,我没有问题理解它,但是我就是无法想象出能够实现这种算法的代码。
有什么建议或提示吗?
针对一些混淆的问题进行编辑:
是的,有目标节点和源节点。
我想要实现Dijkstra算法的一般情况,而不是“只有两个中间站”的情况,因为我之后想要再次使用这段代码。否则,我会写一个暴力实现。
我遇到的具体问题是存储半成品子路径,以防它们变得更优。当我访问给定节点时,我不知道如何更新通过它的所有连接。
更多编辑:
现在正在查看一些答案并尝试解决问题。
真正的编辑: 我忘记提到一个严重的复杂性,即任意两个顶点之间可以有最多UINT_MAX个不同的距离。抱歉。事实上,我忘记处理这个问题可能是问题的根本原因,尽管解决方案:选择最短距离对我来说很明显。难怪其他人的伪距离变量没有考虑我的距离变量。