我有两个由邻接矩阵(g1
和g2
创建的图(mtx1
和mtx2
),一个未加权(g1
),另一个加权(g2
),我正在计算两个图的边缘中间度。
我的理解是,使用edge_betweenness(g, weights = E(g)$weight)
可以将边缘权重合并到加权图的边缘中间度的计算中,但是当我这样做时,加权和未加权图的结果完全相同。
为什么在边缘中间度的计算中增加权重不会更改结果分数?
考虑以下示例
library(igraph)
# create non-weighted adjacency matrix (mtx1) and a weighted matrix (mtx2)
mtx1 <- matrix(c(0,1,0,0,0,1,0,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0), ncol = 5)
mtx2 <- matrix(c(0,2,0,0,0,1,0,2,2,0,0,1,0,0,2,0,1,0,0,0,0,0,1,0,0), ncol = 5)
# convert to igraph objects
g1 <- graph.adjacency(mtx1)
g2 <- graph.adjacency(mtx2, weighted = TRUE)
# calculate edge betweenness for the two graphs
edge_betweenness(g1)
[1] 4 4 6 4 6 4 4 4
edge_betweenness(g2, weights = E(g2)$weight)
[1] 4 4 6 4 6 4 4 4
答案 0 :(得分:2)
顶点的edge_betweeness的定义是最短路径的 number 通过那个顶点。对于g1和g2,任何两个节点之间的最短路径是相同的。由于您的体重,这些路径的长度不相同,但是边的顺序相同。
如果您希望看到一个示例,其中加权图给出了两个之间的不同,则必须构建一个示例,其中权重发生变化 东西是否是最短的路径。
这是您精神的榜样。
mtx3 <- matrix(c(0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0), ncol=4)
mtx4 <- matrix(c(0,2,1,0,2,0,0,1,1,0,0,1,0,1,1,0), ncol=4)
g3 <- graph.adjacency(mtx3)
g4 <- graph.adjacency(mtx4, weighted = TRUE)
edge_betweenness(g3)
[1] 2 2 2 2 2 2 2 2
edge_betweenness(g4, weights = E(g4)$weight)
[1] 1 2 1 2 2 3 2 3
请注意,路径1-> 2-> 4是g3的最短路径,但不是g4的最短路径。