neo4j查询子图-连通图的运用方法

一、建图

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

效果如下:
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值