boost图库内存消耗大图

标签 boost graph memory-management

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

最佳答案

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

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

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

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

尽管当您想要检查边或添加一条边时,邻接矩阵很快,但迭代边并不好。

我可以说,在 BGL 和我自己的图中使用相同的属性,我的图要小得多。

关于boost图库内存消耗大图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5639653/

相关文章:

c++ - boost::filesystem::path 与 boost::filesystem::wpath

ubuntu - 我的 apt 在安装 boost 时搞砸了

objective-c - 自动引用计数是否会在运行时产生成本

r - DiagrammeR:如何在箭头旁边添加标签?

C++ STL 内存管理 : Stack or Heap?

Windows 2Gb 内存限制

c++ - 在现有数据结构上使用BGL算法(作为 vector <Object *>的边和顶点)需要什么?

未分配正在释放的 C++ 指针(可能是 unique_ptr 或 boost::ublas 的问题)

SQL 查询获取该月中每一天的计数

Java 并发实践 (2006) 图 12.1 TimedPutTakeTest