静态分配boost图

时间:2013-11-08 11:33:06

标签: c++ boost graph boost-graph adjacency-matrix

亲爱的,这很容易,我希望!

我有一个图表,我想静态分配。我知道每个节点都会有N个节点和最多 K << N个边缘(例如,N = 1,000,000K = 3)。如果我不仅可以初始化具有一定数量节点的图形,而且还可以使用预定义的边数来初始化。

你知道这是否可能吗?

如果没有,你会建议放弃邻接列表的邻接矩阵吗?我将拥有大量的边缘,这就是为什么静态分配会很棒。

干杯!

2 个答案:

答案 0 :(得分:2)

Boost.Graph有Compressed Sparse Row Graph,可以接近你想要的东西。它非常友好。与其他Boost图一样,您可以将其声明为有向,无向等,并将属性与其元素相关联。

作为警告,此图表是不可变的,这意味着您可以创建并填充它,但不能在以后更新。 生成图形时,需要准备好所有边缘。请参阅类似的SO主题here

答案 1 :(得分:0)

我没有测试它,但考虑enum { A, B, C, D, E, F, N };意味着A = 0, B = 1, ..., N = 6Graph g(N);似乎在编译时为N = 6节点和N*N分配内存边缘。 除非使用无向图,否则似乎不可能减少或限制边数。

来源:http://www.boost.org/doc/libs/1_54_0/libs/graph/doc/adjacency_matrix.html