我希望有人可以帮助我。
我有一个无向图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),但它并没有提出/回答我想要的问题。它说错误已经修复。
答案 0 :(得分:1)
igraph中的直径计算在执行计算时会考虑边缘权重,因此为了使igraph和Gephi中计算的直径相同,我们需要在igraph中将权重参数设置为'NA'。
diameter(graph_data, weights = NA)
答案 1 :(得分:0)
在计算密度之前,请确保始终simplify
保留无向图以除去环路和多个边:
g <- igraph::simplify(g)