おそらくこれはばかげた質問ですが、BGL を使用しようとしていますdijkstra_shortest_paths
。特に、Edge バンドル プロパティのフィールドをウェイトマップとして使用しようとしています。私の試みは現在、数十ページのコンパイラエラーにつながっているので、誰かが私を助ける方法を知っていることを願っています. これは基本的に私のコードがどのように見えるかです:
struct GraphEdge {
float length;
// other cruft
};
struct GraphVertex {
...
};
typedef boost::adjacency_list
<boost::vecS, boost::vecS, boost::directedS,
GraphVertex, GraphEdge> GraphType;
問題なくグラフを作成できますが、 を呼び出すと問題dijkstra_shortest_paths
が発生します。length
フィールドを利用したい。具体的には、次のような通話に適合するために必要なブードゥー教のブーストが何であるかを知りたいです。
GraphType m_graph;
vector<int> predecessor(num_vertices(m_graph));
vector<float> distances(num_vertices(m_graph), 0.0f);
vector<int> vertex_index_map(num_vertices(m_graph));
for (size_t i=0; i<vertex_index_map.size(); ++i) {
vertex_index_map[i] = i;
}
dijkstra_shortest_paths(m_graph, vertex_from, predecessor, distances,
weightmap, vertex_index_map,
std::less<float>(), closed_plus<float>(),
(std::numeric_limits<float>::max)(), 0.0f,
default_dijkstra_visitor());
// How do I write the right version of weightmap here?
length
そのような重みマップは、グラフの特定のエッジをプロパティの対応するフィールドに何らかの方法で関連付けます。これを行う簡単な方法があると確信していますが、BGL のドキュメントは非常にわかりにくいものです。この例がドキュメントのどこに記載されているか教えていただければ、私も大変嬉しく思います。
前もって感謝します!