我想知道识别影响焦点节点i的中介中心性的节点(j,k)的最佳方法 . 由于介于基于通过i的j和k之间的测地线,因此实现此目的的一种方法是获取网络中的所有最短路径,仅选择包含i的那些路径,并获取这些路径上的节点ID . 然而

library(igraph)    
test <- shortest_paths(sample_gnp(200,.001),from=1)

运行大约需要9秒钟,这只是来自第一个节点的路径;据我了解, shortest_paths 将一次只计算一个节点的路径 . 这涉及很多不相关的信息,因为我真的只想要通过i的测地线 . 我假设中介函数本身使用广度优先搜索或其他算法以更有效的方式执行此操作,但我在igraph或sna的文档中看不到任何允许执行此操作的内容 . 我想避免在这里重新发明轮子 .

简而言之,给定网络和焦点节点i,找到包含i的j和k之间的所有测地线的最佳方法是什么?

更新:这是我写的一个函数似乎做了伎俩(我还没有仔细检查过这个) . 在具有连接概率的100个节点的随机图上,它很慢但不是非常慢 . 我相信有更好的方法可以做到这一点 .

find.shortest.paths <- function(net,focus){
  nodes.on.path <- vector(mode="numeric")
  n <- length(V(net))
  for(i in 1:n){
    for(j in 1:n){
      if(i !=  focus & j != focus){
        p <- all_shortest_paths(net,i,j)
        if(focus %in% (unlist(p$res))==T){
          nodes.on.path <- unique(c(nodes.on.path,unlist(p$res)))
        }
      }
    }
  }  
  return(sort(nodes.on.path))
}

ex <- sample_gnp(100,.2)
#try e.g. node 14 as focal node
system.time(test <- find.shortest.paths(ex,focus=14))