QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

关于 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:004452
用户头像

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

关注

评论

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

Bettertouchtool for Mac(鼠标增强软件)v4.443中文正式版

iMac小白

自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator

李游Leo

鸿蒙 HarmonyOS HarmonyOS NEXT

部署开源ChatGPT/LLMs聊天应用LobeChat

轶天下事

ByConity ELT测试——体验BSP模式带来的高效数据处理

颜颜yan_

OOM ByConity bsp模式 ByConity ELT

Microsoft Word LTSC 2021 for Mac中文版

iMac小白

华为云Flexus云服务器X实例的网络性能测试

轶天下事

Rhinoceros 7 for Mac(犀牛7 mac版)中文激活版

iMac小白

从0到1:基于SpringBoot的体育场馆预约小程序开发笔记(一)

CC同学

1000道Java高级工程师面试八股文出炉!面面俱到,太全了

采菊东篱下

Java 编程 计算机

量化合约系统的开发:交易效率与风险控制的双赢

V\TG【ch3nguang】

量化合约系统开发

无需配置设备,借助GitHub快速编译项目并直接运行!

LLLibra146

Python GitHub Codespace

MediaInfo for mac(媒体信息检测软件)v24.12中文免激活版

iMac小白

进大厂必备的Java八股文大全(最强精简易懂版,八股文中的八股文)

Geek_Yin

Java Java面试八股文

华为云Flexus云服务器X实例下的微微CMS安装

轶天下事

优化企业运营流程,华为云Flexusx实例下Odoo ERP系统的完整解决方案

轶天下事

华为云Flexus云服务器X实例之openEuler系统下玩转iSulad容器技术

轶天下事

华为云Flexus云服务器X实例搭建部署H5美妆护肤分销商城、前端uniapp

轶天下事

原来Spring可以这样推送消息到客户端!

架构师之道

Java spring

使用Memtester 对华为云 X 实例进行内存性能测试

轶天下事

阿里P8面试官不小心泄露了25年春招进大厂必备的Java面试场景题!

程序员高级码农

Java 编程 程序员 java面试 Java面试题

云端安全守护者,华为云Flexusx上的AWVS容器化部署与安全扫描实践

轶天下事

Studio One 7 Pro for mac(音乐创作编辑软件)v7.0.0永久激活版

iMac小白

1000道Java面试题及答案整理(纯干货,建议收藏)

架构师之道

Java 编程 计算机

三分钟掌握MySQL-MVCC底层原理

采菊东篱下

Java MySQL

这份神仙版的SpringBoot学习文档,简直把所有操作都给写出来了

Geek_Yin

Java 程序员 spring-boot java 技术提升

自学记录鸿蒙 API 13:骨骼点检测应用Core Vision Skeleton Detection

李游Leo

鸿蒙 HarmonyOS HarmonyOS NEXT

使用Flexus X实例集成ES搜索引擎

轶天下事

Affinity Publisher for Mac(逆天排版神器)v2.5.7 直装版

iMac小白

NetBackup Virtual Appliance 5 - 领先的企业备份和恢复解决方案

sysin

NetBackup

部署个人云社交媒体聊天服务VoceChat

轶天下事

华为云X实例CPU性能测试详解与优化策略

轶天下事

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