【发布时间】:2013-04-06 17:18:07
【问题描述】:
我有一个data.frame,它描述了一个具有非常大(数百万)和相当小的(数百)独立集合的二分图。
我想在较小的独立集上获得图的二分投影,但没有首先创建大型二分图,尤其是对较大独立集的巨大二分投影。这种限制的原因是igraph segfault 和 RAM 限制(我只有 8GB RAM)。
例如,给定
data.frame(beg=c("a","a","b","b","c","c"),
end=c("1","2","1","2","1","2"),
weight=1:6)
我想要数据框
data.frame(beg=c("a","a","b"),
end=c("b","c","c"),
weight=c(1+3+2+4,1+5+2+6,3+5+4+6))
边的权重相加。
(在本例中,abc 是“较小”集,12 是“较大”集)。
【问题讨论】:
-
我写了一个答案,然后我想我可能不明白你的意思。 “不构建二分图”是指您要避免构建其邻接矩阵?您是否假设该图是稀疏的?
-
@amit:我的担忧纯粹是务实的:我想避免内存不足和在
igraph中崩溃(请参阅编辑)。 -
每种模式有多少个节点,二分图的预期密度是多少?如果使用稀疏矩阵不能解决问题(据我所知,这就是 igraph 使用的方法),那么在 R 中执行此操作可能会遇到一些麻烦。
-
@ndoogan:igraph 的问题是段错误
-
@ndoogan:用户(3,234,178)x 发布者(100)4,775,955 条边(密度 1.476714 %)的二分图