其他分享
首页 > 其他分享> > c – 如何在广度优先搜索中快速找到最短路径?

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

作者:互联网

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

谢谢.

解决方法:

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

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

希望这可以帮助!

标签:breadth-first-search,c,algorithm,graph
来源: https://codeday.me/bug/20190825/1723886.html