我正在使用adjacency_list图,带有无向和未加权的边。我需要找到顶点u和顶点v之间的最短路径。 我应该从u开始使用breadth_first_search()吗?到达v时,如何获取路径,以及如何停止搜索?
谢谢!
答案 0 :(得分:3)
是的,从你开始做breadth_first_search()。
FOR every vertex i meet
IF i==v: BREAK
record predecessor of i as i.p
要找到最短路径,请从v:
开始PRINT_PATH(u, v)
IF v==u
print u
ELSEIF v.p==NIL
print 'no path from u to v exists'
ELSE PRINT_PATH(u, v.p)
print v
答案 1 :(得分:2)
您应该使用最短路径算法之一,Dijkstra Shortest Path是最合适的,因为您需要找到两个顶点之间的路径。在boost分配中使用example。有几个选项可以从该函数获取输出:通过提供距离属性映射或构建前置映射或编写自定义访问者。
答案 2 :(得分:-2)
您需要使用minimum spanning tree:搜索算法。这是一个非常简单直接的贪婪算法。