igraph包计算中的Closeness和shortest.paths函数定义是什么?

时间:2015-05-18 17:20:32

标签: r igraph

我在我正在处理的一些数据中发现了一个奇怪的结果,并决定使用以下矩阵测试closeness和shortest.paths函数。

test<-c(0,0.3,0.7,0.9,0.3,0,0,0,0.7,0,0,0.5,0.9,0,0.5,0)
test<-matrix(test,nrow=4)
colnames(test)<-c("A","B","C,","D")
rownames(test)<-c("A","B","C,","D")
test
    A   B   C   D
A 0.0 0.3 0.7 0.9
B 0.3 0.0 0.0 0.0
C 0.7 0.0 0.0 0.5
D 0.9 0.0 0.5 0.0

grafo=graph.adjacency(abs(test),mode="undirected",weighted=TRUE,diag=FALSE)

当我衡量亲密度()时,我得到了这个:

> closeness(grafo)
        A         B         C         D 
0.5263158 0.4000000 0.4545455 0.3846154 

这仅仅是权重的总和而不是距离(1权重)。

> 1/(0.7+(0.7+0.3)+0.5)
[1] 0.4545455

当我将距离定义为1-weight时,我得到了这个

> 1/((1-0.7)+((1-0.7)+(1-0.3))+(1-0.5))
[1] 0.5555556

在igraph手册中,它在公式中说它是距离的总和。我的问题是,该功能是否实际考虑了权重,因此,它是一个错误,或者我们应该考虑(和修改)我们的图表&#39;边缘作为运行此功能的距离?

使用shortest.paths函数btw会出现SAME问题。它给出了权重的总和,而不是距离。

> shortest.paths(grafo)
    A   B   C   D
A 0.0 0.3 0.7 0.9
B 0.3 0.0 1.0 1.2
C 0.7 1.0 0.0 0.5
D 0.9 1.2 0.5 0.0

感谢。

0 个答案:

没有答案