1

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

谢谢!

4

3 回答 3

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
于 2010-06-24T10:20:07.153 回答
2

您应该使用最短路径算法之一,Dijkstra Shortest Path是最合适的,因为您只需要找到两个顶点之间的路径。在 boost 发行版中有一个使用示例。从该函数获取输出有多种选择:通过提供距离属性图或构建前驱图或编写自定义访问者。

于 2009-02-25T14:46:44.597 回答
-2

您需要使用最小生成树:搜索算法。这是一个非常简单直接的贪心算法。

于 2009-01-14T13:03:17.010 回答