使用igraph / R获得前10个最短路径

时间:2015-09-30 18:59:13

标签: r igraph shortest-path

我在R中使用了igraph包,我正在寻找一种方法来从上一个图中显示最大前10个最短路径。

有人有什么建议吗?

1 个答案:

答案 0 :(得分:0)

首先创建一些图表:

set.seed(1)
require(igraph)
g <- erdos.renyi.game(100,.2)

然后提取所有最短路径并计算它们的长度:

plist <- do.call(c,
            lapply(V(g), function(v) get.shortest.paths(g,v,V(g), output='epath')$epath))

现在找出哪些路径是前十名:

psize <- data.frame(i = 1:length(plist), plength = sapply(plist,length))

top10 <- head(psize[order(-psize$plength),],10)

现在弄清楚这涉及哪些边缘:

elist <- unlist(plist[top10$i])

最后,获取包含这些顶点的子图:

finalg <- subgraph.edges(g, elist)

之前和之后的情节:

Some initial random graph

The final subgraph with top ten shortest paths only