新闻详情

新闻详情

首页 / 资讯中心 / 详情

【数据结构】拓扑排序检测DAG环的原理(Finish)

发布时间:2026/10/1 17:07:32来源:尧图网络
【数据结构】拓扑排序检测DAG环的原理(Finish)
拓扑排序检测有向图中的环核心依据是一个有向图能进行拓扑排序当且仅当它是有向无环图DAG。因此如果拓扑排序无法处理完所有顶点就说明图中存在环。[适用范围]拓扑排序只能处理 DAG如果排序结果覆盖不了全部顶点剩下的顶点就处在环中。1. Kahn 算法基于入度Kahn 算法的思路1. 统计每个顶点的入度。2. 把所有入度为 0 的顶点加入队列。3. 每次从队列取出一个顶点加入拓扑序列。4. 删除该顶点及其所有出边· 对它的每个邻接点入度减 1· 如果某个邻接点入度变成 0就加入队列。5. 重复直到队列为空。6. 最后判断· 如果拓扑序列中的顶点数等于图中总顶点数说明无环· 如果少于总顶点数说明存在环。为什么能检测环如果图中存在环例如A → B → C → A这个环中每个顶点都至少有一条来自环内其他顶点的入边所以它们的入度不可能变成 0。当所有不在环上的顶点被处理完后环上的顶点仍然互相依赖入度始终大于 0无法进入队列。于是最终已处理顶点数 总顶点数剩余未处理的顶点一定构成环或包含环。2.举例说明拓扑排序要求如果存在边 u → v那么 u 必须排在 v 前面。但在环中A → B → C → A会推出· A 必须在 B 前· B 必须在 C 前· C 必须在 A 前。这就产生矛盾A B C A不可能同时成立。所以只要存在环就不存在合法的拓扑排序。3. DFS 方法基于递归栈另一种检测环的方法是 DFS 三色标记· 白色未访问· 灰色正在当前递归路径中· 黑色已访问完成。DFS 时如果遇到一个灰色节点说明当前路径回到了自己存在环。原理是灰色节点表示它还在当前 DFS 递归栈中。如果从某个节点又能走到它说明形成了一条后向边也就是环。4. 总结拓扑排序检测环的原理可以概括为1. 有向图无环时一定存在至少一个入度为 0 的起点。2. 不断删除入度为 0 的节点及其出边可以逐步剥去无环部分。3. 如果图中存在环环内节点互相提供入度无法被剥掉。4. 因此若最终无法处理所有节点就说明存在环。小记面对遗漏笔记的态度他被放在了一个他会想到的复习无法找到地方。这也就是我们做笔记需要考虑的一个点其实应该考虑到复习能否找到。这里就对呃曾经做过的笔记但是找不到做一个补充。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Vim高效操作指南:从模式原理到命令组合实战 2026/10/1 17:52:02

Vim高效操作指南:从模式原理到命令组合实战

用Vim干活这些年,我最常被新手问的问题不是某个命令怎么用,而是"进去之后怎么退出"。这个经典梗背后藏着一个事实:Vim的命令体系是一套逻辑自洽但反直觉的操作语言,它和你用过的记事本、Word完全不同。如果你只是零散地…

阅读更多 →
AI Agent落地最后一公里:灵衢互联、分级适配与软硬协同的工程实践 2026/10/1 17:52:02

AI Agent落地最后一公里:灵衢互联、分级适配与软硬协同的工程实践

最近这一两年,凡是跟AI Agent沾边的项目,几乎都在讲同一个故事:技术Demo跑通了,原型验证也过了,但一进真实生产环境就拉胯。要么是多Agent协作时通信乱成一锅粥,要么是模型能力跟用户预期严重错位&#xff…

阅读更多 →
Windows连Linux远程管理:SSH清理磁盘与安全关机实战 2026/10/1 17:51:42

Windows连Linux远程管理:SSH清理磁盘与安全关机实战

同学电脑卡成PPT,风扇转得跟直升机一样,系统提示磁盘空间不足,人又在图书馆回不来。这种时候如果你会Windows连Linux,直接在自己电脑上敲几行命令就能帮她把系统盘清干净、临时文件删掉、日志缩一缩,最后还可以定时关机…

阅读更多 →
算力主权实战指南:从精度体系到算力调度的工程路径 2026/10/1 17:51:41

算力主权实战指南:从精度体系到算力调度的工程路径

算力主权这件事,比大多数人想的更现实 很多人看到“全球算力主权宪章(GCCS)”这个名号,第一反应是又一份高大上的倡议书。但真在数据中心、智算集群、大模型训练一线泡过的人,会明白这东西背后全是真金白银的技术问题&…

阅读更多 →
链表核心操作深度拆解:插入、逆序、双链表与多种语言实现 2026/10/1 17:51:41

链表核心操作深度拆解:插入、逆序、双链表与多种语言实现

线性表讲到链表这一层,算是数据结构里第一道真正意义上的"坎"。很多人在 part 1 已经把单链表的结点骨架和头插法建表跑通了,但一到指定位置插入、链表逆置、带头结点与不带头结点的切换,或者从 C 语言换到 Python 重新实现一遍&am…

阅读更多 →
SAP特殊库存T详解:跨公司STO在途库存原理、配置与实战排查 2026/10/1 17:51:41

SAP特殊库存T详解:跨公司STO在途库存原理、配置与实战排查

前阵子帮客户排查一笔跨月差异,两个工厂之间货已经发出去了,但月底报表上怎么都找不出这笔库存到底挂在谁头上。后来顾问同事提醒了一句:看看特殊库存 T。结果一查 EBEW 表,问题当场就清楚了。从那以后我对 T 库存就有了一种“平时…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉