【AICon】硅谷视野+中国实践,汇聚全球顶尖技术的 AI 科技盛会 >>> 了解详情
写点什么

关于 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/



公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

发布了 370 篇内容, 共 172.0 次阅读, 收获喜欢 940 次。

关注

评论

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

如何像百度直播一样优化用户体验(起播篇)

百度Geek说

大前端 直播 起播优化

模块8作业

方堃

架构之:serverless架构

程序那些事

系统架构 软件架构 架构设计

蚂蚁矿池系统软件开发方案

RFX币挖矿系统软件开发简介

Go 学习笔记之 Panic异常

架构精进之路

Go 语言 7月日更

2021 EdgeX中国挑战赛拉开帷幕,赋能开发者,英特尔助力创新方案落地

E科讯

融云主办WICC2021 即将召开 “音视频+AI”是新技术亮点

融云 RongCloud

企业如何选择合适的敏捷项目管理工具?

万事ONES

团队协作 研发体系 研发管理工具 ONES

免费分享Spring Cloud开发的优秀图书

Java入门到架构

Java SpringCloud

Redisson 分布式锁源码 10:读写锁

程序员小航

Java redis 源码 分布式锁 redisson

十年经验帖 | 敏捷转型6大误区

LigaAI

敏捷开发 敏捷管理 敏捷转型

EasyRecovery的工具栏介绍

淋雨

视频剪辑 Camtasia 录屏软件

ONES 对话敏捷专家王明兰|系统化敏捷转型,企业应该这样做

万事ONES

研发管理 解决方案 ONES 敏捷转型

支点交易所APP系统开发介绍

BPool矿池app系统开发平台

获客I3O6O643Z97

区块链+ BPool

BTA挖矿软件平台系统开发

获客I3O6O643Z97

挖矿矿池系统开发案例 BTA 挖矿挣钱是什么原理

Rust 与 Golang - 何时使用它们?

DisonTangor

rust Go 语言

如何设计财务对账系统 —— 从0到1搭建对账系统实战

蒋川

支付系统 对账系统 财务对账系统 财务审核系统

Python 爬虫从入门到入坑全系列教程(详细教程 + 各种实战)

若尘

爬虫 python 爬虫

分布式事务实战--一个完整的xa例子

叶东富

MySQL 数据库 分布式事务 Go 语言

Structured Concurrency for C

实力程序员

NFT卡牌挖矿钱包系统软件开发方案

如何让孩子晚上八点前写完作业的

Ian哥

作业

央行《人工智能算法金融应用评价规范》之AI安全攻击及防范解读

索信达控股

AI 金融科技 金融监管 安全性

详解Camtasia的注释功能

淋雨

视频剪辑 Camtasia 录屏软件

模拟定位原理

BUG侦探

定位

华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

华为云开发者联盟

深度学习 参数 预训练模型 盘古大模型

MindSpore模型精度调优实战:常用的定位精度调试调优思路

华为云开发者联盟

模型 mindspore 精度 模型精度调优 静态特征

如何设计实现H5营销页面搭建系统

前端森林

架构 大前端 可视化 营销 React

剖析供应链攻击的防范

华为云开发者联盟

网络安全 安全 加密 供应链攻击 勒索软件

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