栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.5 - 图生成 / 随机图

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.5 - 图生成 / 随机图

1、概述

图生成过程用来生成不同类型的随机图,以用作算法研究、性能测试等目的。APOC提供下列随机图生成过程。

过程

说明

apoc.generate.er(noNodes, noEdges, 'label', 'type')

根据Erdős–Rényi模型[1](ER)生成图(随机网络)。

apoc.generate.ws(noNodes, degree, beta, 'label', 'type')

根据Watts-Strogatz模型(WS)[2]生成图表(小世界网络)。

apoc.generate.ba(noNodes, edgesPerNode, 'label', 'type')

根据Barabasi-Albert模型(无标度网络)[3]、遵从优先依附规律生成图。

apoc.generate.complete(noNodes, 'label', 'type')

生成完全图,每个节点都连接到所有其他节点。

apoc.generate.simple([degrees], 'label', 'type')

生成具有给定度数分布的图,基于一种序列化、按照节点重要程度进行采样的算法[4]。

 

[1] http://wiki.swarma.net/index.php?title=ER随机图模&variant=zh

[2] http://wiki.swarma.net/index.php?title=WS小世界模型&variant=zh

[3] http://wiki.swarma.net/index.php?title=无标度网络&variant=zh

[4] http://www.people.fas.harvard.edu/~blitz/BlitzsteinDiaconisGraphAlgorithm.pdf

2、过程概述 – apoc.generate.er

        在图论中,ER随机图模型(Erdős–Rényi model)可以是两个密切相关的随机图生成模型中的任意一个。ER随机图模型的名字源于最早提出上述模型之一的数学家Paul Erdős(保尔•厄多斯)和Alfréd Rényi(阿尔弗烈德•瑞利),他们在1959年首次提出了其中一个模型;而几乎在同时期,Edgar Gilbert(埃德加•吉尔伯特)独立提出了另外一个模型。在Erdős和Rényi的模型中,节点集一定、连边数也一定的所有图的形成是等概率的;在Gilbert的模型中,每个连边存在与否有着固定的概率,与其他连边无关。在概率方法中,这两种模型可用来证明满足各种性质的图的存在,也可为几乎所有图的性质提供严格的定义。

        ER图拥有以下特征:

    基于两个主要假设:a. 连边独立,b. 每条连边存在的概率相同;ER图的生成过程实际上就是从完全图上随机移除边/关系的过程;ER图中节点的度/边的数量服从二项分布;ER图并不适用于现实生活中的现象,因为它没有“长尾”(不服从幂律分布[1]),而许多实际网络(例如社交网络)的分布是长尾的。此外,与许多社交网络不同,ER图集聚系数[2]较低。
不能生成局部集聚(local clustering)和三元闭包(Triadic Closures [3],网络有三元闭包释义)。相反,因为图中两个节点有恒定、随机且独立的概率彼此相连,ER图的集聚系数较低。  

[1] https://baike.baidu.com/item/%E5%B9%82%E5%BE%8B

[2] https://baike.baidu.com/item/%E8%81%9A%E9%9B%86%E7%B3%BB%E6%95%B0

[3] Simmel, G. (1950). The sociology of georg simmel, volume 92892. Simon and Schuster.

3、过程调用接口 – apoc.generate.er
CALL apoc.generate.er(
  noNodes,
  noEdges,
  label,
  relType
)

参数名

类型

缺省值

可为空?

说明

noNodes

非负长整数

1000

随机生成的节点总数。

noEdges

非负长整数

10000

随机生成的边/关系总数。

label

字符串

NULL

节点标签。如果为空则缺省为Person,并且会为每个Person节点生成一个英文名字保存在name属性中。

relType

字符串

NULL

关系类型。如果为空则缺省为FRIENDS_OF。

4、示例 – apoc.generate.er 
// 8.5(1) 生成一个有10万节点、30万条边的ER图。
//        节点标签为Node,边/关系类型为linkS。
//        执行时间:2166ms

CALL apoc.generate.er(100000,300000,'Node', 'linkS') 

// 8.5(2) 统计生成的图中、节点度的分布。

MATCH (u:Node)
WITH size ((u) -- ()) AS countOfRels
WITH countOfRels, count(countOfRels) AS cnt
RETURN countOfRels, cnt
ORDER BY countOfRels ASC 

 

如果将查询8.5(2)的结果导出到CSV,然后以图表形式展现,会得到下面的结果:

图 ER生成图中节点的度数分布

---- 未完待续 --- 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/705802.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号