如何解决一机大图处理
在普通用户计算机(通常为 8-16 GB RAM)上处理大型图形的算法是什么。
有一项任务是处理在给定条件下不完全适合操作记忆的足够大的图(以计算 PageRank)。
我想知道为此存在哪些算法或从哪个方向开始学习更好?据我了解,划分图形的算法可以帮助我解决这个问题,但不是很清楚,因为不可能在程序中一次构建整个图形。
也许有算法可以为图表的每个单独部分计算 PageRank,然后组合计数结果。
更新:
更具实质性。在大图上计算 Pagerank
存在问题。计数是在 Python
程序中完成的。
使用 networkx
基于数据构建图表,并且将使用相同的 networkx
执行 PageRank 计算。问题是存在 RAM 限制,整个图形不适合内存。
所以我想知道是否有任何算法可以让我计算比原始图更小的图(子图?)的 PageRank?
解决方法
一般来说,如果一个图太大而无法放入内存,则必须将其划分为多个分区。
假设顶点可以放入内存并且边驻留在磁盘上。程序每次将边缘的一个分区加载到内存中,计算PageRank,然后再加载另一个分区。 xstream 为这种情况提供了一个很好的解决方案:http://sigops.org/s/conferences/sosp/2013/papers/p472-roy.pdf
更复杂的情况是,顶点和边都不能放入内存,那么它们都需要多次加载到内存中。网格图为这种情况提供了一个很好的解决方案:https://www.usenix.org/system/files/conference/atc15/atc15-paper-zhu.pdf
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。