提升图库内存消耗大图

时间:2011-04-12 18:06:57

标签: boost graph memory-management

我有一个大图(30k顶点,250米边)和使用boost图库邻接列表(我尝试过vecs和列表)消耗超过25gb。因为获得超过16GB RAM的电脑不是很容易,你建议什么来减少内存使用?

1 个答案:

答案 0 :(得分:3)

我使用我正在处理的图表的验证技术遇到了同样的问题。 如果您将处理大量数据(顶点和边缘),则应使用自己创建的精细数据结构。

如果你有很多边缘,你应该考虑使用邻接矩阵。 边缘有权重,所以你可以使用这样的东西:

vector<int> vertices;
vector<vector<int> > edges;

如果边缘没有属性,您可以使用仅使用一位表示每条边的优化vector<vector<bool> >

虽然当您想要检查边缘或添加边缘时,邻接矩阵很快,但迭代边缘并不好。

我可以说,在BGL和我自己的图表中使用相同的属性,我的图形更小。