Boost(BGL):在调用djikstra的最短路径后,我需要走树

时间:2015-03-04 00:51:18

标签: c++ boost graph boost-graph

使用Boost Graph库的那种菜鸟:

鉴于我已经捆绑了顶点和边缘,如下所示:

struct MarkerVertex{
    MarkerID id;
};

struct RelationshipEdge{
    float weight; 
    //there's other things in here too
    //this is the only part that's relevant
};

和这样的图形描述符:

typedef boost::adjacency_list<
boost::vecS, boost::vecS, boost::undirectedS,
MarkerVertex, RelationshipEdge>
Graph_t;

我用以下方式呼叫dijkstra的最短路径:

dijkstra_shortest_paths(m_graph, startDescriptor,
                            weight_map(get(&RelationshipEdge::weight, m_graph))
                                .distance_map(make_iterator_property_map(distances.begin(),
                                                                     get(boost::vertex_index, m_graph))));

使用weight结构的RelationshipEdge属性作为路径距离

然后我想从开始到每个节点遍历图形,并根据遍历中的前一个节点进行计算

例如

  • A-&GT;乙
  • A-&以及c
  • A-&GT; C-&GT; d
  • A-&GT; C-&GT,E

然后说我想给A分配“A” - “AB”到B - “AC”到C - “ACD”到D. - “ACE”到E

这只是一个例子,我实际上必须进行矩阵乘法,所以我不想在最后开始,因为我实际上必须先计算前驱的值才能计算叶子。此外,某些顶点可能无法连接到起始顶点(可能很多)

从源节点走到其他节点并进行某种类似的计算会有什么提升语法?

0 个答案:

没有答案