Neo4j系列-图分析

1、人物数量

万事以简单开始。先看看上图上由有多少人物:

MATCH (c:Person) RETURN count(c)

2、概要统计

统计每个角色接触的其它角色的数目:

MATCH (c:person)-[:INTERACTS]->() WITH c, count(*) AS num RETURN min(num) AS min, max(num) AS max, avg(num) AS avg_characters, stdev(num) AS stdev

3、图(网络)的直径

网络的直径或者测底线或者最长最短路径:
// Find maximum diameter of network // maximum shortest path between two nodes

MATCH (a:person), (b:person) WHERE id(a) > id(b) MATCH p=shortestPath((a)-[:INTERACTS*]-(b)) RETURN length(p) AS len, extract(x IN nodes(p) | x.name) AS path ORDER BY len DESC LIMIT 100

4、最短路径

作者使用Cypher 的shortestPath函数找到图中任意两个角色之间的最短路径。让我们找出“王菲”和“周迅”之间的最短路径:

MATCH (王菲:person {name: "王菲"}), (周迅:person {name: "周迅"}) MATCH p=shortestPath((王菲)-[INTERACTS*]-(周迅)) RETURN p

5、所有最短路径

联结王菲”和“周迅”之间的最短路径可能还有其它路径,我们可以使用Cypher的allShortestPaths函数来查找:

MATCH (王菲:person {name: "王菲"}), (周迅:person {name: "周迅"}) MATCH p=allShortestPaths((王菲)-[INTERACTS*]-(周迅)) RETURN p

扫描二维码关注公众号,回复: 3931624 查看本文章

关键节点

在网络中,如果一个节点位于其它两个节点所有的最短路径上,即称为关键节点。下面我们找出网络中所有的关键节点:

猜你喜欢

转载自blog.csdn.net/paopaopotter/article/details/81872428