有一个加权的有向网络
,如下所示:library(igraph)
g <- erdos.renyi.game(25, 1/10, directed = TRUE)
E(g)$weight <- runif(length(E(g)), 1, 5)
当运行最短路径函数sp <- shortest.paths(g)
时,我显然得到了一个矩阵,其中加权边缘的总和介于两者之间。但是,我想计算一下这条路径上有多少个顶点。
这个想法来自于为火车网络寻找最短路径,边缘作为火车站,因为我希望看到每条最短路径的传输量(在顶点或节点之间(。
编辑:例如,如果最短路径是A到C,我想知道中间有多少个顶点。例如,如果完整路径是 A - E - B - C,那么 E 和 B 是中间顶点,所以我的值为 2。完整的顶点路径也可以,所以在这种情况下,它会为我提供 4 个顶点作为完整的最短路径。
找到了该问题的替代解决方案。
sp <- shortest_paths(g, V(g), V(g), mode = "all",
weights = E(g)$weight, output = "vpath")$vpath
lengths(sp)
这给出了该路径上的确切顶点数。因此,对于中间停止,只需减去 2 的值即可。