【问题标题】:How to verify if a graph obeys a power law?如何验证图是否服从幂律?
【发布时间】:2015-11-23 13:51:42
【问题描述】:

我正在使用 GraphStream 来生成综合图。 验证图形是否服从幂律的公式是什么? (我只有节点和边的数量) 谢谢。

【问题讨论】:

  • 您能描述一下您的“幂律”要求吗?你的节点属性是什么?你想要什么?请提供一些链接并添加详细信息

标签: graph neo4j orientdb arangodb


【解决方案1】:

所以我们有一个带有名为relations 的边集合的图。 我们可以使用 ArangoDB 中的 AQL 对这个边缘集合进行全表扫描来收集所需的数据。 我们需要统一 _from 和 _to 以便我们计算它们。 我们使用 collect 语句来评估每个顶点的直径:

FOR oneEdge IN relations 
  FOR edgeLink IN [ oneEdge._from, oneEdge._to ]
    COLLECT edgesCounterItem = edgeLink WITH COUNT INTO graphDiameter
      RETURN { what: edgesCounterItem, count: graphDiameter }

现在我们知道了直径,我们需要再次按直径分组:

FOR oneEdge IN relations 
  FOR edgeLink IN [ oneEdge._from, oneEdge._to ]
    COLLECT edgesCounterItem = edgeLink WITH COUNT INTO graphDiameter
      COLLECT powerCounts = graphDiameter WITH COUNT INTO powerCounter
        RETURN {numberEdges: powerCounts, vertexCount: powerCounter}

现在我们想要很好地排序,以便我们可以轻松地绘制它:

FOR oneEdge IN relations 
  FOR edgeLink IN [ oneEdge._from, oneEdge._to ]
    COLLECT edgesCounterItem = edgeLink WITH COUNT INTO graphDiameter
      COLLECT powerCounts = graphDiameter WITH COUNT INTO powerCounter
        SORT powerCounts
          RETURN {numberEdges: powerCounts, vertexCount: powerCounter}

使用此图表,您将能够确定 power law 是否已满。

注意:这肯定需要大量系统资源来计算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多