如何提高igraph单路径计算效率

时间:2018-05-16 13:07:43

标签: r performance igraph memory-efficient network-analysis

我正在使用all_simple_paths R包中的函数igraph :( 1)生成网络中所有简单路径的列表(对象List_paths_Mp); (2)计算简单路径的总数(对象n_paths)。

我正在使用以下形式的函数:

pathsMp <- unlist(lapply(V(graphMp), function(x)all_simple_paths(graphMp, from = x)), recursive =FALSE)

List_paths_Mp <- lapply(1:length(pathsMp), function(x)as_ids(pathsMp[[x]]))

n_paths<-length(List_paths_Mp) 

其中:   Mp是一个带有10值的方阵,graphMp是通过函数igraph获得的graph_from_adjacency_matrix图表。

该功能可以满足我的需求,但随着变量和交互次数的增加,识别和存储网络中不同single paths的处理时间增长过多,获得结果需要很长时间

特别是,使用具有11个变量和60个交互的网络,总共有146338个可能的简单路径。这已经需要很长时间才能计算出来。使用一个更大的网络,有13个变量和91个交互,导致程序需要更长的时间来处理(2小时后,该功能仍未运行,并且当被调用以停止它崩溃时)。

有没有办法提高任务的效率(即以更快的方式获得结果)?有没有人遇到类似的问题,并找到了解决方案?而且,我知道,我可以使用具有更高处理能力的CPU,但重点是让功能在普通的个人计算机中高效运行(尽可能多)。

编辑:这里我从图形对象进行计算,但如果其他人有任何想法从邻接矩阵做同样的事情,我也欢迎它!

0 个答案:

没有答案