neo4j社区发现算法(Community detection algorithms)-3.The Connected Components algorithm

一.介绍:
  连接组件算法也可称为并查集算法,是解决动态连通性问题的一类非常高效的数据结构。
  在计算机科学中,并查集是一种树形的数据结构,用于处理不交集的合并及查询问题。
  并查集存在两个操作(1,union联合;2,find查找)和一个需要解答的问题(1.isConneced是否相互连           接;2,isSameSet是否在同一集合中)
二.neo4j算法
  在neo4j算法中,将并查集算法分为两种,一种是无权重的,一种是有权重的,语法分别如下:
  
无权重

CALL algo.unionFind.stream(label:String, relationship:String)
YIELD nodeId,setId

有权重

CALL algo.unionFind.stream(label:String, relationship:String, {weightProperty:'weight',
defaultValue:0.0, threshold:1.0, concurrency: 1})
YIELD nodeId,setId

三.实例:

创建节点及关系:

MERGE (nAlice:User {id:'Alice'})
MERGE (nBridget:User {id:'Bridget'})
MERGE (nCharles:User {id:'Charles'})
MERGE (nDoug:User {id:'Doug'})
MERGE (nMark:User {id:'Mark'})
MERGE (nMichael:User {id:'Michael'})
MERGE (nAlice)-[:FRIEND {weight:0.5}]->(nBridget)
MERGE (nAlice)-[:FRIEND {weight:4}]->(nCharles)
MERGE (nMark)-[:FRIEND {weight:1}]->(nDoug)
MERGE (nMark)-[:FRIEND {weight:2}]->(nMichael)

在这里插入图片描述
无权重:

CALL algo.unionFind.stream('User', 'FRIEND', {})
YIELD nodeId,setId
RETURN algo.getNodeById(nodeId).id AS user, setId

在这里插入图片描述有权重:

CALL algo.unionFind.stream('User', 'FRIEND', {weightProperty:'weight',
defaultValue:0.0, threshold:1.0, concurrency: 1})
YIELD nodeId,setId
RETURN algo.getNodeById(nodeId).id AS user, setId

在这里插入图片描述通过对比两个有无权重之间算法的差异,可以看到Bridget在有权重的算法中被单独分为了一个集合。
四.The Strongly Connected Components algorithm 强连通组件算法
   
   强连通图是指如果在有向图中,任意两个节点都互相可达,则为强连通图

neo4j中scc算法:

CALL algo.scc.stream(label:String, relationship:String)
yield nodeId,setId
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值