5

私が考えているさまざまなネットワークの問題にブースト グラフ ライブラリを適用するために、ブースト グラフ ライブラリの使用を調査しています。

私が見てきた例では、グラフ エッジの値 (「重み」) は常に整数として初期化されます。これらのBellman-FordおよびKruskalアルゴリズムでは、次のようになります。

int weights[] = { 1, 1, 2, 7, 3, 1, 1, 1 };

私の問題は、重みを2倍に変更しようとすると、変換などに関する警告メッセージが大量に表示されることです。これまでのところ、克服する方法を理解できていません。

誰かがこれを回避する方法を見ていますか?

4

1 に答える 1

6

weights[]これは、配列と、ブースト グラフ/アルゴリズムによってエッジの重みに使用される型との間の不一致が原因です。

たとえば、最初のリンクされたサンプルでは、​​変更する必要があります

struct EdgeProperties {
  int weight;
};
[...]
property_map<Graph, int EdgeProperties::*>::type 

struct EdgeProperties {
  double weight;
};
[...]
property_map<Graph, double EdgeProperties::*>::type 

第二に

typedef adjacency_list < vecS, vecS, undirectedS,
    no_property, property < edge_weight_t, int > > Graph;

typedef adjacency_list < vecS, vecS, undirectedS,
    no_property, property < edge_weight_t, double > > Graph;
于 2010-04-09T14:59:02.393 に答える