我发现这个general example用于构建访问者进行深度优先搜索,但我不确定如何为我的意图构建访问者。
我有一个未加权的树。我想找到从根到每个分支端的所有最短路径,一个只有一条边连接到图的其余部分的顶点。
例如,在此图表中(从其他地方借来)
如果12
是根,则分支结束将是4
,1
,9
,10
和7
。第一条路线包含12
,11
,5
,2
,4
。第二条路线包含12
,11
,5
,2
,1
。等等。
在提供的示例中
class MyVisitor : public boost::default_dfs_visitor
{
public:
void discover_vertex(MyVertex v, const MyGraph& g) const
{
cerr << v << endl;
return;
}
};
我找不到确定当前正在搜索哪条路线discover_vertex
的方法。
我的意图如何实施?
答案 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,然后简单地查看前一个地图并生成您感兴趣的顶点感兴趣的路径。