一种带有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))));
使用 RelationshipEdge
struct的 weight
属性作为路径距离
然后我想从开始到每个节点遍历图形,并根据遍历中的前一个节点进行计算
例如
-
A-> B.
-
A-> C.
-
A-> C-> D.
-
A-> C-> E.
然后说我想把“A”分配给A - “AB”分配给B - “AC”分配给C - “ACD”分配给D - “ACE”分配给E
这只是一个例子,我实际上必须进行矩阵乘法,所以我不想从最后开始,因为我实际上必须在计算叶子之前计算先前的值 . 此外,一些顶点可能无法连接到起始顶点(可能很多)
从源节点走到其余节点并进行某种类似的计算会有什么提升语法?