我的任务是(课程@大学)实施一种寻路形式。现在,在规范中,我可以只实施蛮力,因为要搜索的节点数量有限制(开始,中间两个,结束),但我想重用这段代码并来实现Dijkstra 的算法。
我在 Wikipedia 上看到了伪,一个朋友也为我写了一些,但这完全没有意义。该算法看起来很简单,理解它对我来说不是问题,但我无法终生想象实现这种事情的代码。
有什么建议/提示吗?
编辑一些混淆:
是的,有一个目标节点和一个源节点。
我希望在一般情况下实现 Dijkstra,而不是“只有两个中间停止”的情况,因为我想在之后再次使用该代码。否则,我只会写一个蛮力实现。
我遇到一点麻烦的具体问题是存储次优的半形成路径,以防它们变得最优。当我访问给定节点时,我只是看不到如何更新通过它的所有连接。
更多编辑:
现在通过几个答案并试一试。
真正的编辑:我忘了提到一个严重的并发症,即任何两个顶点之间最多可以有 UINT_MAX 不同的距离。对不起。事实上,我忘记处理这个事实可能首先是导致该死问题的原因,尽管解决方案:选择最短的对我来说是幸运的。难怪其他人对距离变量的伪没有考虑到我的变量距离。