【问题标题】:Density in a weighted, directed graph加权有向图中的密度
【发布时间】:2015-04-07 15:47:51
【问题描述】:

很抱歉背靠背发帖,但我只是在查看 igraph 的密度函数,它似乎没有考虑图中的权重(如果我错了,请纠正我)。我查了文献,才发现这个

“图中边的权重之和,除以可能的边数,即|V| x (|V|-1)”

在我的例子中,我有一个 188x188 的单模网络,它是定向的、非对称加权的。总边权重2112,边数468。

从 igraph 我得到 ~0,013,从这个解决方案我得到 ~0,06

我现在的问题是,您是否认为这是一种有效的方法,或者是否有人听说过解决此问题的不同方法。

【问题讨论】:

  • 到底是什么问题? “密度”只是一个定义,你想达到什么目的?另外 - 我的猜测是 igraph(无论是什么)正在计算无向图的密度,因此是结果。
  • 如果你除以|V|(|V|-1)/2,你得到0.12。通常你除以 2,以免对无向图计算同一条边两次。
  • 那么问题是密度对于加权有向图是否有意义。它通常是一种描述性度量,用于显示一个图的连接程度,这就是我想要展示的。 Igraph 做了 468/(188+(188-1)=0,013,这是针对未加权的有向网络。我也做了 2112/(188+(188-1)=0,06 来考虑权重。
  • 加权图的密度定义不是很好。正权重有时是可以的,但只要考虑一个既有正权又有负权的图表。那么你的密度可能接近于零,即使图形充满(强加权)边缘!所以 igraph 只是忽略了权重。

标签: algorithm graph network-programming igraph


【解决方案1】:

irgraph 的函数 edge_density 不考虑权重。 如果您在加权图上调用它,它会将图视为未加权并返回密度:nb_edges / V*(V-1) 用于有向图,nb_edges / V*(V-1) / 2 用于无向图。

据我所知,这在 igraph 的文档中没有说明。

然而,我不确定密度对于一般加权网络是否有意义,所以我看不出你所指的定义的优点。

类似的东西可能对更具体的应用程序有用,但这里可能应该编写自己的函数。

【讨论】:

    【解决方案2】:

    我知道这已经很老了,但我只是注意到您在上面给出的公式中有一个错误。

    您实际上需要 l 乘以 2,而不是在无向图中除以 2。

    在无向图中,您必须将图中的线数加倍,因为它们是无向的。

    OP:当您说“在我的情况下,我有一个 188x188 单模网络,它是定向的、不对称加权的。总边权重为 2112,边数为 468。”

    这是 L/n*(n-1) = 2112 / 35156 = 0.06

    但是,如果 igraph 不考虑权重,则答案是:

    L/n*(n-1) = 468 / 35156 = 0.013,这与您之前报告的一致。我希望这已得到解决。

    【讨论】:

      猜你喜欢
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 2013-08-30
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      相关资源
      最近更新 更多