R igraph:找到通过节点g的节点u和v之间最短路径的总数

莉迪亚斯

我有以下矩阵可生成无向网络图:

  a b c d e f g h i j
a 0 1 1 0 0 0 0 0 0 0
b 1 0 1 0 0 0 0 0 0 0
c 1 1 0 1 1 0 1 0 0 0
d 0 0 1 0 1 0 0 0 0 0
e 0 0 1 1 0 1 0 0 0 0
f 0 0 0 0 1 0 1 0 0 0
g 0 0 1 0 0 1 0 1 0 0
h 0 0 0 0 0 0 1 0 1 1
i 0 0 0 0 0 0 0 1 0 0
j 0 0 0 0 0 0 0 1 0 0

m <- structure(c(0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 
0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 
0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 1L, 0L, 0L), .Dim = c(10L, 10L), .Dimnames = list(
    c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j"), c("a", 
    "b", "c", "d", "e", "f", "g", "h", "i", "j")))

library(igraph)
g3n <- graph.adjacency(m)

我对手动计算节点“ g”之间的间隔感兴趣,这需要在所有可能的节点中找到最短路径作为分母和分子,因为最短路径数包含节点“ g”。

我使用以下代码生成所有节点之间最短路径的长度:

shortest.paths(g3n, v=V(g3n), to=V(g3n))

最短路径矩阵:

  a b c d e f g h i j
a 0 1 1 2 2 3 2 3 4 4
b 1 0 1 2 2 3 2 3 4 4
c 1 1 0 1 1 2 1 2 3 3
d 2 2 1 0 1 2 2 3 4 4
e 2 2 1 1 0 1 2 3 4 4
f 3 3 2 2 1 0 1 2 3 3
g 2 2 1 2 2 1 0 1 2 2
h 3 3 2 3 3 2 1 0 1 1
i 4 4 3 4 4 3 2 1 0 2
j 4 4 3 4 4 3 2 1 2 0

有没有一种方法可以计算两个节点之间的最短路径包含节点“ g”作为矩阵的次数,或者仅以R中的任何其他方式计算次数?

挣扎

因此,我不确定该解决方案有多优雅,但是以下方法应该可以工作:

#initialize a list to populate with all the shortest paths in the graphy
allpaths <- list()


#Assuming this is an undirected graph, we don't want to calculate both a %--% b and b %--% a  
for(x in V(g3n)$name){
  for(y in V(g3n)$name){
    if(x < y){
      shortest_path_options <- all_shortest_paths(g3n, x, y)$res

      #sometimes there are multiple shortest paths, we will include them all
      for(z in shortest_path_options){
        allpaths[[length(allpaths)+1]] <- z$name
      }
    }
}

#create a boolean of whether a shortest path contains 'g' or not
allpaths_bool <- sapply(allpaths, function(x){
  ('g' %in% x) & (head(x, 1) != 'g') & (tail(x, 1) != 'g')
  })

#Show all the paths that contain 'g'
allpaths[allpaths_bool]

通过将所有内容包装到sapply函数中,可以为每个顶点计算该值。

sapply(V(g3n)$name, function(x){
  temp_bool <- sapply(allpaths, function(y){
    (x %in% y) & (head(y, 1) != x) & (tail(y, 1) != x)
  })
  length(allpaths[temp_bool])
})

}

必须有一种更简单的方法,但是我不确定。可能有一种方法可以通过使用betweeness提供相互之间的中心度度量函数来推断此信息,但是我对图论的理解并不那么好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用R中的igraph根据某些边缘属性找到两个节点之间的最短路径?

来自分类Dev

连接iGraph R中多个节点的最短路径

来自分类Dev

使用R / igraph,是否有一种方法可以在考虑到唯一节点属性的数量的情况下找到节点之间的最短路径?

来自分类Dev

如何从 igraph R 连接最短路径

来自分类Dev

R igraph:在igraph中找到最短路径,为其增加权重并寻找替代方法

来自分类Dev

GraphViz,找到两个节点之间的最短路径

来自分类Java

通过广度优先搜索找到最短路径节点

来自分类Dev

r igraph - 找到连接选定节点的边

来自分类Dev

图中节点之间的最短路径

来自分类Dev

是否有图算法可以找到节点之间的最短路径,合并节点以避免?

来自分类Dev

找到从给定节点 s 到任何其他节点 v 的最短路径数的算法?

来自分类Dev

对于具有不同的必须通过节点集的最短路径,我可以使用哪种算法?

来自分类Dev

如何使用R igraph访问给定最短路径中的访问顶点

来自分类Dev

如何使用igraph提取R中所有最短路径的边缘类型?

来自分类Dev

R IGraph计算定向网络中的无向最短路径吗?

来自分类Dev

R igraph:仅计算所有顶点对的子集的最短路径

来自分类Dev

在Tinkerpop 3.1中找到两个节点之间最短路径的最佳方法

来自分类Dev

Dijkstra算法来找到大图中两个节点之间的最短路径?

来自分类Dev

如何在neo4j中的有向图上找到节点之间的最短路径?

来自分类Dev

在负权重的加权DAG中找到两个节点之间的最短路径

来自分类Dev

我如何找到从任何节点到集合A的最短路径

来自分类Dev

在最短路径中找到osm节点列表的方式ID

来自分类Dev

O(E + V)算法计算给定图上两个节点之间的最短路径数

来自分类Javascript

如何获得网格上节点之间的最短路径?

来自分类Dev

两个Trie节点之间的最短路径

来自分类Dev

使用BFS查找2个节点之间的最短路径

来自分类Dev

图中每个节点与列表中元素之间的最短路径

来自分类Dev

两个节点之间的最便宜和最短路径

来自分类Dev

R / Network Analysis-如何通过节点的属性创建边

Related 相关文章

  1. 1

    如何使用R中的igraph根据某些边缘属性找到两个节点之间的最短路径?

  2. 2

    连接iGraph R中多个节点的最短路径

  3. 3

    使用R / igraph,是否有一种方法可以在考虑到唯一节点属性的数量的情况下找到节点之间的最短路径?

  4. 4

    如何从 igraph R 连接最短路径

  5. 5

    R igraph:在igraph中找到最短路径,为其增加权重并寻找替代方法

  6. 6

    GraphViz,找到两个节点之间的最短路径

  7. 7

    通过广度优先搜索找到最短路径节点

  8. 8

    r igraph - 找到连接选定节点的边

  9. 9

    图中节点之间的最短路径

  10. 10

    是否有图算法可以找到节点之间的最短路径,合并节点以避免?

  11. 11

    找到从给定节点 s 到任何其他节点 v 的最短路径数的算法?

  12. 12

    对于具有不同的必须通过节点集的最短路径,我可以使用哪种算法?

  13. 13

    如何使用R igraph访问给定最短路径中的访问顶点

  14. 14

    如何使用igraph提取R中所有最短路径的边缘类型?

  15. 15

    R IGraph计算定向网络中的无向最短路径吗?

  16. 16

    R igraph:仅计算所有顶点对的子集的最短路径

  17. 17

    在Tinkerpop 3.1中找到两个节点之间最短路径的最佳方法

  18. 18

    Dijkstra算法来找到大图中两个节点之间的最短路径?

  19. 19

    如何在neo4j中的有向图上找到节点之间的最短路径?

  20. 20

    在负权重的加权DAG中找到两个节点之间的最短路径

  21. 21

    我如何找到从任何节点到集合A的最短路径

  22. 22

    在最短路径中找到osm节点列表的方式ID

  23. 23

    O(E + V)算法计算给定图上两个节点之间的最短路径数

  24. 24

    如何获得网格上节点之间的最短路径?

  25. 25

    两个Trie节点之间的最短路径

  26. 26

    使用BFS查找2个节点之间的最短路径

  27. 27

    图中每个节点与列表中元素之间的最短路径

  28. 28

    两个节点之间的最便宜和最短路径

  29. 29

    R / Network Analysis-如何通过节点的属性创建边

热门标签

归档