一、建图
MATCH (n) DETACH DELETE n;
CREATE
(nAlice:User {name: 'Alice'}),
(nBridget:User {name: 'Bridget'}),
(nCharles:User {name: 'Charles'}),
(nDoug:User {name: 'Doug'}),
(nMark:User {name: 'Mark'}),
(nMichael:User {name: 'Michael'}),
(nDoug3:User {name: 'Doug3'}),
(nMark3:User {name: 'Mark3'}),
(nMichael3:User {name: 'Michael3'}),
(nAlice)-[:LINK {weight: 0.5}]->(nBridget),
(nAlice)-[:LINK {weight: 4}]->(nCharles),
(nMark)-[:LINK {weight: 1.1}]->(nDoug),
(nMark)-[:LINK {weight: 2}]->(nMichael),
(nMark3)-[:LINK {weight: 1.1}]->(nDoug3),
(nMark3)-[:LINK {weight: 2}]->(nMichael3);
MATCH (n) RETURN n;
效果如下:
二、内存中创建图,用于科学计算库
CALL gds.graph.drop('myGraph');
CALL gds.graph.create('myGraph', 'User', 'LINK',
{ relationshipProperties: 'weight' }
);
三、调用弱连通图算法
CALL gds.wcc.stream('myGraph')
YIELD nodeId, componentId
RETURN gds.util.asNode(nodeId).name AS name, componentId
ORDER BY componentId, name
效果如下:
三个连通图对应三个componentId;
四、获取某个连通图进行回显
CALL gds.wcc.stream('myGraph')
YIELD nodeId, componentId
WITH gds.util.asNode(nodeId).name AS name, componentId
match (n)
where componentId=0 and name=n.name
return n, name, componentId
效果如下: