boost图库内存消耗大图

发布于 2024-10-31 17:05:18 字数 118 浏览 0 评论 0 原文

我有一个大图(30k 个顶点,250m 条边),并且使用 boost 图库邻接列表(我尝试了 vec 和列表)消耗超过 25GB。由于要获得一台具有 16GB 以上 RAM 的电脑并不容易,您有什么建议可以减少内存使用量?

I have a large graph (30k vertices, 250m edges) and using boost graph library adjacency list (I tried both vecs and lists) consumes more than 25gb. since it is not very easy to get a pc with more than 16gb ram, what do you recommend to decrease memory usage ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终遇你 2024-11-07 17:05:18

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

如果有很多边,则应该考虑使用邻接矩阵。
边具有权重,因此您可以使用如下内容:

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

您可以使用优化的 vector > 仅使用一位来表示每条边(如果边没有属性)。

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

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

I've had the same problem with a verification technique using graphs I'm working on.
If you will work with a huge amount of data (vertices and also edges) you should use a fine tuned data structure created by yourself.

If you have a lot of edges, you should consider using an Adjacency Matrix.
The edges have weights, so you could use something like this:

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

You could use the optimized vector<vector<bool> > that uses only one bit to represent each edge, if the edges didn't have a property.

Although the adjacency matrix is fast when you want to check for an edge or add one, it's not good to iterate over edges.

I can say that, using the same properties in BGL and in my own graph, my graph is way smaller.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文