注册 登录
编程论坛 C++ Builder

关于boost graph library的问题

zza14006045 发布于 2016-08-23 11:07, 4330 次点击
在调用boost图库中crauser_et_al_shortest_paths最短路径算法时,如何获取前驱点列表,或者说,如何获取到其最短路径所经过的节点或边线?
typedef property_map<Graph_Mpi, vertex_index_t>::const_type IndexMap;
typedef iterator_property_map<vector<int>::iterator, IndexMap> DistanceMap;
typedef iterator_property_map<vector<graph_traits<Graph_Mpi>::vertex_descriptor>::iterator, IndexMap> Parent_Mpi;
crauser_et_al_shortest_paths(g, start, dummy_property_map(), distance);
对于dijkstra_shortest_paths我知道怎么获取,dijkstra_shortest_paths(g, start, predecessor_map(&parent[0]).distance_map(&dist[0]))这样就可以了,但是对于crauser_et_al_shortest_paths算法我搞了几天都不知道怎么获取前驱点列表,或者最短路径所经过的节点或边线。求助大神帮忙...
2 回复
#2
zza140060452016-08-23 17:32
自己解决了...左猜右猜,猜了三天...
定义typedef iterator_property_map<vector<graph_traits<Graph_Mpi>::vertex_descriptor>::iterator, IndexMap> Parent_Mpi;
对其进行初始化后,代替原来的dummy_property_map()就可以了...
#3
zza140060452016-08-23 17:32
补充:typedef adjacency_list<listS, distributedS<mpi_process_group, vecS>, directedS, VertexProperty, EdgeProperty> Graph_Mpi;
1