使用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分配“A” - “AB”到B - “AC”到C - “ACD”到D. - “ACE”到E
这只是一个例子,我实际上必须进行矩阵乘法,所以我不想在最后开始,因为我实际上必须先计算前驱的值才能计算叶子。此外,某些顶点可能无法连接到起始顶点(可能很多)
从源节点走到其他节点并进行某种类似的计算会有什么提升语法?