【发布时间】:2015-11-23 13:51:42
【问题描述】:
我正在使用 GraphStream 来生成综合图。 验证图形是否服从幂律的公式是什么? (我只有节点和边的数量) 谢谢。
【问题讨论】:
-
您能描述一下您的“幂律”要求吗?你的节点属性是什么?你想要什么?请提供一些链接并添加详细信息
标签: graph neo4j orientdb arangodb
我正在使用 GraphStream 来生成综合图。 验证图形是否服从幂律的公式是什么? (我只有节点和边的数量) 谢谢。
【问题讨论】:
标签: graph neo4j orientdb arangodb
所以我们有一个带有名为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 是否已满。
注意:这肯定需要大量系统资源来计算。
【讨论】: