访问者提供从根到每个分支端的所有顶点路由

时间:2014-12-10 06:05:54

标签: c++ boost depth-first-search boost-graph visitor

我发现这个general example用于构建访问者进行深度优先搜索,但我不确定如何为我的意图构建访问者。

我有一个未加权的树。我想找到从根到每个分支端的所有最短路径,一个只有一条边连接到图的其余部分的顶点。

例如,在此图表中(从其他地方借来

enter image description here

如果12是根,则分支结束将是419107。第一条路线包含1211524。第二条路线包含1211521。等等。

在提供的示例中

class MyVisitor : public boost::default_dfs_visitor
{
public:
  void discover_vertex(MyVertex v, const MyGraph& g) const
  {
    cerr << v << endl;
    return;
  }
};

我找不到确定当前正在搜索哪条路线discover_vertex的方法。

我的意图如何实施?

1 个答案:

答案 0 :(得分:0)

如果你想&#34;追踪&#34;哪个&#34;路线&#34;顶点目前正在探索中,你可以使用类似于&#34; predecessor_recorder&#34;的代码。在你的访客中。

有关预定义的predecessor_recorder的详细信息,请访问:http://www.boost.org/doc/libs/1_57_0/libs/graph/doc/predecessor_recorder.html

事实上,你最好用dijkstra_shortest_paths。该算法为您报告前导映射。您可以致电Dijkstra,然后简单地查看前一个地图并生成您感兴趣的顶点感兴趣的路径。