Dijkstra的算法实现

时间:2014-08-25 09:08:03

标签: graph dijkstra

我已经看到加权图的 dijkstra算法我该怎么做才能在未加权图中找到最短路径?

我应该考虑所有边缘0或1之间的权重吗?

其次,我想在10^5节点上实现bfs,以检查节点是否可以从任何其他节点访问?是否可能,因为定义[10^5][10^5]的二维数组会给出内存错误。

3 个答案:

答案 0 :(得分:0)

对于你的第一个问题,我确实在权重为1的未加权路径上实现了Dijkstra,它工作正常,但可能有更好的解决方案。

我不太记得bfs,抱歉!

答案 1 :(得分:0)

您可以将未加权的图表视为权重为1的每条边。

对于大图上的BFS,请查看大数据算法,这些算法使用“外部”内存(硬盘)来存储完整的图形,并使用有效的数据访问技巧来处理这些数据,以便算法运行的部分确实适合记忆。 一开始看: http://www.win.tue.nl/~hermanh/teaching/2IL35/AMM/04-elementary-graph-algorithms.pdf

答案 2 :(得分:0)

使用0作为弧的成本会导致图中每条可能路径的成本相等,因此任何人都可能是最短的。

使用1表示所有弧都具有相同的成本,因此Dijkstra将找到最小化开始和目标之间的弧数的路径。当然,可能会发生几条路径符合该条件,因此算法将返回其中一条路径。

我希望我的回答有所帮助。