如何在无向图中找出从任意节点可达的所有节点(连通分量识别)

本文介绍如何通过深度优先搜索(dfs)识别无向图中的所有连通分量,从而确定从任一节点出发可访问的全部节点集合;提供清晰的python实现、邻接矩阵适配方案及关键注意事项。 本文介绍如何通过深度优先搜索(dfs)识别无向图中的所有连通分量,从而确定从任一节点出发可访问的全部节点集合;提供清晰的python实现、邻接矩阵适配方案及关键注意事项。在无向图中,"从某个节点能访问哪些节点"本质上是连通性分析问题------即判断图中节点间的可达关系。若两个节点之间存在路径,则它们属于同一连通分量(Connected Component)。整个图可被划分为若干互不连通的极大连通子图,每个子图内的任意两节点均可互相到达,而不同子图间则完全隔离。以问题中给出的 5 节点图为例(节点标记为 A--E),其邻接矩阵表示如下: A B C D EA [ 0 0 0 1 0 ]B [ 0 0 1 0 0 ]C [ 0 1 0 0 0 ]D [ 1 0 0 0 1 ]E [ 0 0 0 1 0 ]直观可见:A--D--E 构成一个三角链式结构(A?D?E),B?C 形成独立边。因此图包含两个连通分量:{A, D, E} 和 {B, C}。我们的目标就是自动识别并分组这些节点集合。核心算法:基于 DFS 的连通分量标记我们采用深度优先搜索遍历每个未访问节点,并递归标记其所有可达邻居,每完成一次完整遍历即发现一个新连通分量。为便于区分,我们为每个分量分配唯一整数编号(如 1, 2, 3...),最终返回每个节点对应的分量 ID。 橙篇 百度文库发布的一款综合性AI创作工具

相关推荐
reasonsummer2 小时前
【教学类-160-12】20260420 AI视频培训-练习012“豆包AI视频《和歌浮世绘》+豆包图片风格:无(关键词:浮世绘)”
数据库
卡西里弗斯奥2 小时前
【海量数据库】权限管理实操版
数据库·vastbase·海量数据库·权限控制
大蚂蚁2号2 小时前
本地视频转文字|video2text
python·音视频·视频转文本
jnrjian2 小时前
Oracle 权限 role 权限 下次登录生效或者set role, sys permission 立即生效
数据库·oracle
XiYang-DING2 小时前
【Java EE】工厂模式
java·python·java-ee
龙俊杰的读书笔记2 小时前
一文读懂python并发&并行编程--以xinference框架应用为例
开发语言·网络·python
小菜同学爱学习2 小时前
突破瓶颈!MySQL高级优化与企业级实战场景详解
android·数据库·mysql
似水এ᭄往昔2 小时前
【Linux】--磁盘和文件系统
linux·运维·数据库