R,igraph,大数据:用超大网络计算顶点到顶点的最短距离

时间:2018-05-15 22:32:34

标签: r bigdata igraph

我有一个非常大的网络,基于100K唯一顶点和500M边缘(注意:边缘都是距离1(二进制)和无向)。

我需要创建每个顶点对之间最短距离的100K×100K矩阵。

我正在使用igraphdistances()命令,它可以创建我想要的东西:

distance_mat <- distances(network, v=V(network), to=V(network), weights=NA)

然而,对于如此规模的网络而言,它变得非常缓慢 - 目前的估计需要我的代码&gt;在具有16GB RAM的2.5 GHz i7 Mac上完成10天。

有没有人优化过一个例行程序,用如此庞大的网络做这样的事情,或者有关于如何加快速度的想法?

以下是一些示例代码,用于构建一个大型(但不是完整大小)网络,以便在有帮助时进行练习:

require(igraph)

n_id <- 100000
n_connect <- 100000000
id1 <- sample(1:n_id,n_connect,replace=T)
id2 <- sample(1:n_id,n_connect,replace=T)
nbr <- rep(1,n_connect)
idall <- unique(c(id1,id2))
df <- as.data.frame(cbind(id1,id2,nbr))

network <- graph_from_data_frame(d=df, vertices=idall, directed=F)

Sys.time()
dist_df <- distances(network, v=V(network)[1:1000], to=V(network)[1:1000], weights=NA)
Sys.time()

0 个答案:

没有答案