使用Boost Graph Library(BGL)和现有的图形数据结构

时间:2017-01-25 08:32:22

标签: c++ boost boost-graph

我有一个现有的图形,由我自己的顶点和边缘类构建,如下所示:

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 个答案:

答案 0 :(得分:0)

让这个例子有点参与。但是,您需要为您选择的图形概念建模。

http://www.boost.org/doc/libs/1_63_0/libs/graph/doc/graph_concepts.html

enter image description here

我发现很难从模型中看到边缘是如何表示的(端口可以很好地断开连接,或者OutPort可能会引用Node等等。我觉得你可能想要模拟AdjacencyGraph。所需操作列在链接页面上。