R:igraph的偏心似乎没有使用称重的边缘

时间:2016-07-29 02:14:45

标签: r igraph

我使用igraph来计算顶点偏心率,图表是加权的,随机生成如下

n <- 500
g <- sample_smallworld(1, n, 10, 0.05)
E(g)$weight <- (runif(1)+0.1)*10
is.weighed(g)
dia <- diameter(g)
dia

这是一个小型世界网络,有500个顶点和随机加权边。使用diameter和'is.weighted'来检查它是否已加权。但是,eccentricity不使用权重,并生成以下结果,

d_list <- eccentricity(g)
summary(d_list)

输出如下,

  

d_list&lt; - 偏心(g)
  摘要(d_list)
      闵。第一曲。中位数第3曲。最大
    4.000 4.000 4.000 4.004 4.000 5.000

如何解决这个问题?

现在我使用max(distances(g))来解决它,但我认为这不是一种有效而优雅的方式。

1 个答案:

答案 0 :(得分:0)

我不认为怪癖会给你选择,但如果我不会发表关于距离()方法的优点,从效率的角度来看,两种算法都会在O(|V|^2*log(|V|))中执行(假设{{ 1}})计算每个节点的偏心率,如果你运行一些测试就得到这个:

|E| = O(|V|)

Unscaled time performance of the different algorithm

正如你所看到的,它们都具有相同的渐近复杂度,但在未加权的情况下,使用BFS可以提供​​更好的时间常数。 (为了说明渐近的复杂性,请参见下面的缩放图:)

Scaled time performance