如何在广度优先搜索中快速找到最短路径?

时间:2013-02-06 23:48:49

标签: c++ algorithm graph breadth-first-search

我正在使用广度优先搜索来查找图表中的位置,我很确定我的算法正常工作,但是当我完成时,我很难找到结果的最短路径。基本上,我可以使用BFS从我的起始位置到达我的最终位置,但我不知道如何构建从最终到开头的最短路径。任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:6)

一种选择如下。创建某种方式将每个节点与“父”节点相关联(可能是哈希表,或者可能通过向表示节点的任何类型添加“父”字段)。然后,每当您从队列中将节点u从队列中出队并且即将将节点v添加到队列中时,将v的父指针设置为节点u。这标志着你到达节点v的方式是遵循u的路径,然后将路径扩展到一条边以获得v。

完成此操作并完成BFS后,您可以从目标节点开始读取最短路径的反向,然后重复跟随父指针,直到返回到起始节点。一旦你有了这个,你就可以反转这条路径来恢复实际的最短路径。

希望这有帮助!