使用Boost的图形breadth_first_search()在未加权的无向图中查找路径

时间:2009-01-14 12:51:40

标签: search boost shortest-path boost-graph

我正在使用adjacency_list图,带有无向和未加权的边。我需要找到顶点u和顶点v之间的最短路径。 我应该从u开始使用breadth_first_search()吗?到达v时,如何获取路径,以及如何停止搜索?

谢谢!

3 个答案:

答案 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:搜索算法。这是一个非常简单直接的贪婪算法。