R图形密度,直径,偏心率和最短路径

时间:2015-12-01 15:03:21

标签: r igraph

我希望有人可以帮助我。

我有一个无向图g,其中n = 2071个节点,m = 9023个边。 我使用igraph包计算了R中的图密度,得到了以下结果:

> graph.density(g,loop=FALSE)
[1] 0.00210475

然而,使用图密度的公式,即密度=平均度/(n-1),我得到以下结果:

> mean(degree(g))/(vcount(g)-1)
[1] 0.0042095

为什么graph.density()会给我一个不同的(是错误的?)答案?

另一个问题是,最大偏心率=直径=图的最大最短路径?或者我是否混淆了这些概念? 使用igraph包在R中计算,我得到以下结果:

> max(shortest.paths(g,mode="all"))
[1] 17
> diameter(g,directed=FALSE,unconnected=FALSE,weights=NULL)
[1] 17
> max(eccentricity(g,mode="all"))
[1] 8

我使用Gephi进行双重检查,直径= 8。 为什么值之间存在差异?

另外,我之前发现了一个几乎相似的问题(igraph radius and diameter),但它并没有提出/回答我想要的问题。它说错误已经修复。

2 个答案:

答案 0 :(得分:1)

igraph中的直径计算在执行计算时会考虑边缘权重,因此为了使igraph和Gephi中计算的直径相同,我们需要在igraph中将权重参数设置为'NA'。

diameter(graph_data, weights = NA)

答案 1 :(得分:0)

在计算密度之前,请确保始终simplify保留无向图以除去环路和多个边:

g <- igraph::simplify(g)