写点什么

关于 Neo4j 强连通分量算法,你了解多少?

  • 2019-03-22
  • 本文字数:1495 字

    阅读完需:约 5 分钟

关于Neo4j 强连通分量算法,你了解多少?

图算法提供了理解、建模和预测复杂动态的手段,例如资源或信息流、传染或网络故障传播的途径,以及对群体的影响和弹性。

本博文系列旨在帮助读者更好地利用图分析和图算法,以便能够使用 Neo4j 等图数据库更快地有效创新和开发智能解决方案。


上周我们总结了对中心性(Centrality)算法的研究,还研究了亲密中心性(Closeness Centrality) 算法。


这一周,我们开始研究社区发现(Community Detection)算法,并了解强连通分量(Strongly Connected Components,SCC)算法,该算法根据关系的方向定位节点组,其中每个节点都可以从同一组中的每个其他节点到达。通常应用于深度优先搜索。

关于强连通分量

强连通分量算法在有向图找到连接节点的集合,其中每个节点可以在两个方向上从同一集合的任何其他节点到达。通常在图分析过程中的早期使用,经常用来让我们了解图的结构。


SCC 是最早的图算法之一,Tarjan 在 1972 年描述了第一个线性时间算法。将有向图分解成强连通分量是深度优先搜寻算法的经典应用。

什么时候应该使用强连通分量?

  • 在对强大的跨国公司的分析中,SCC 用于查找每个成员直接拥有和 / 或间接拥有其他成员股份的公司集合。虽然它具备诸如降低交易成本、增加信任等优点,但这种结构削弱了市场竞争。更多详情请参阅[《全球企业控制网络》(The Network of Global Corporate Control):http://u6.gg/rDnrz](http://u6.gg/rDnrz

  • 在多跳无线网络中测量路由性能时,SCC 已被用于计算不同网络配置的连接性。更多详情请参阅《多跳无线网络中存在单向链路时的路由性能》(Routing performance in the presence of unidirectional links in multihop wireless networks):http://u6.gg/rDnun

  • 强连通分量算法通常用作许多图算法的第一步,这些算法仅适用于强连接图。在社交网络中,一群人通常有密切的关系(例如,一个班级或者任何其他公共场所的学生)。这些群体中的许多人通常喜欢一些常见的网站或玩常见的游戏。SCC 算法用来找到这样的组,并向组中尚未喜欢这些网站或游戏的人群推荐这些内容。

强连通分量示例

让我们看看强连通分量算法的实际应用。以下 Cypher 语句创建了一个 Twitter 式样的图,其中包含了用户、用户之间的 FOLLOW 关系。


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)-[:FOLLOWS]->(nBridget)MERGE (nAlice)-[:FOLLOWS]->(nCharles)MERGE (nMark)-[:FOLLOWS]->(nDoug)MERGE (nMark)-[:FOLLOWS]->(nMichael)MERGE (nBridget)-[:FOLLOWS]->(nMichael)MERGE (nDoug)-[:FOLLOWS]->(nMark)MERGE (nMichael)-[:FOLLOWS]->(nAlice)MERGE (nAlice)-[:FOLLOWS]->(nMichael)MERGE (nBridget)-[:FOLLOWS]->(nAlice)MERGE (nMichael)-[:FOLLOWS]->(nBridget);
复制代码



现在我们可以运行强连通分量来查看每个人是否相互链接,执行以下查询:


CALL algo.scc.stream("User","FOLLOWS")YIELD nodeId, partitionMATCH (u:User) WHERE id(u) = nodeIdRETURN u.id AS name, partition
复制代码



强连通分量的可视化

我们的示例图中有三个强连通分量。


第一个也是最大的分量,有成员 Alice、Bridget 和 Michael,而第二个分量有 Doug 和 Mark。Charies 最终只在自己的分量中,因为从该节点到任何其他节点都之间都没有传出关系。

结论

正如我们所看到的,强连通分量算法通常用于在以识别的集群上独立运行其他算法。作为有向图的预处理步骤,它有助于快速识别断开连接的组。


原文链接:


https://neo4j.com/blog/graph-algorithms-neo4j-strongly-connected-components/



2019-03-22 08:004470
用户头像

发布了 375 篇内容, 共 192.4 次阅读, 收获喜欢 947 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试/测试开发丨Python 算法与数据结构面试题

测试人

软件测试 面试题 测试开发

探究光明源智慧公厕系统的科技创新与管理优势

光明源智慧厕所

智慧城市

为什么FTP会随着时间的过去而变慢?

镭速

多云之下,京东云的降本增效之道

人称T客

杨志丰:一文详解,什么是单机分布式一体化?

OceanBase 数据库

数据库 oceanbase

使用appuploader工具发布证书和描述性文件教程

雪奈椰子

为企业发展赋能,华为云网站安全解决方案,保护企业网络安全

科技怪授

求助 iOS 分发的最佳实践

雪奈椰子

华为云网站安全方案为企业数据保驾护航

科技说

落地“旅游+”数字赋能:实现智慧旅游协同创新发展

加入高科技仿生人

低代码 数字化 旅游业 数字转型

Wallys/IPQ5018 and QCN6122: The Future of Wireless Networking

Cindy-wallys

ipq5018 QCN6102 QCN6122

低代码起势,程序员闷头开发的日子结束了

引迈信息

低代码 快速开发 JNPF

未来源码|什么是数据集成?超全的SeaTunnel 集成工具介绍

MobTech袤博科技

Chrome 浏览器的更新导致 jQuery 反复发版,只因 :has() 这个伪类

茶无味的一天

CSS jquery chrome 前端 浏览器

华为云网站安全解决方案,助力企业安心稳步发展

科技说

瓴羊Quick BI与网易有数,看国产BI工具如何起势

夏日星河

新一代异步IO框架 io_uring | 得物技术

得物技术

瑞云科技副总经理黄金进受邀出席2023广东超聚变生态伙伴大会并作主题演讲

3DCAT实时渲染

元宇宙 实时渲染 云流化 3D实时云渲染 云化XR

过去的90天,ODC 发生了哪些新的改变?

OceanBase 数据库

数据库 oceanbase

一文掌握 Go 文件的写入操作

陈明勇

Go golang 后端 文件写入 三周年连更

一篇文章了解SoapUI接口测试的全部流程

Liam

测试 接口测试 测试工具 API 测试

我决定给 ChatGPT 做个缓存层 >>> Hello GPTCache

Zilliz

Zilliz ChatGPT LLM gptcache

研发运维双管齐下!Seal AppManager的正确打开方式

SEAL安全

企业号 4 月 PK 榜 Seal软件 SealAppManager

支撑百万商户、千亿级调用:微盟如何通过链路设计降本40%?

TakinTalks稳定性社区

华为云全流程等保服务,帮助企业守护信息安全

科技怪授

「ChatGPT最强竞品」爆火:不限量不要钱免注册!一手实测体验在此

Openlab_cosmoplat

人工智能 开源社区 openai ChatGPT

BNB代币燃烧模式dapp系统开发合约详情

开发v-hkkf5566

“930大促”日活增速超40% ,哈啰如何用预案高效应急?

TakinTalks稳定性社区

阿里云计算巢产品负责人何川:计算巢,通过数字化工具加速企业数字原生

云布道师

云计算 计算巢

阿凡达Sun4.0众筹开发系统技术搭建

薇電13242772558

NFT

推平“知识高峰”,AI将如何影响我们的学习?

Alter

关于Neo4j 强连通分量算法,你了解多少?_AI&大模型_Amy E. Hodler_InfoQ精选文章