既存のグラフデータ構造とブーストグラフライブラリ(BGL)を使用して:次のように私は、自分自身の頂点およびエッジのクラスから構築された既存のグラフを有する
struct Graph;
struct OutPort {};
struct InPort {
OutPort* connectedOutput;
};
struct Node {
Graph* graph;
std::list<InPort> inputs;
std::list<OutPort> outputs;
};
struct Graph {
std::list<Node> nodes;
}
、グラフのノードで構成されているされていること、これらは0 .. *入出力ポートを持ちます。入力ポートは、任意のノード(それ自身を含む)の0..1出力ポートに接続される。
私は、このグラフにBGLアルゴリズムを適用したいと思いますが、上記の既存のデータ構造を保持するか、BGLデータ構造との間の適切なマッピングを提供する方法を理解することはできません。
私は入門例に感謝します。
ありがとうございました。私の例はまれな骨ですが、ポートは常に1つのノードによって所有されています。 OutPortsは何も参照しません.InPortsは0..1 OutPortを参照します。 –
だから、どのようにして頂点を識別したいですか?私は単一のインポートで計算しますか?その場合は、基本的にあなた自身のアドホックなadjacency_listがあります。 Boostの汎用モデルは、VertexAndEdgeListGraph、MutablePropertyGraph、CopyConstructible、Assignable、およびSerializableをモデル化しています。あなたはおそらくそれらのサブセットで十分でしょう:) – sehe