当前位置: 首页 > article >正文

C#,图论与图算法,有向图(Graph)之环(Cycle)判断的颜色算法与源代码

检查该图是否包含循环

给定一个有向图,检查该图是否包含循环。如果给定的图形至少包含一个循环,则函数应返回true,否则返回false。

方法:深度优先遍历可用于检测图中的循环。连接图的DFS生成树。只有当图中存在后缘时,图中才存在循环。后边是从节点到自身(自循环)或DFS生成的树中其祖先之一的边。在下图中,有3条后缘,用十字符号标记。可以观察到,这3条后缘表示图中存在3个循环。

对于断开连接的图,我们将DFS林作为输出。为了检测循环,我们可以通过检查后边缘来检查各个树中的循环。

图像来源:http://www.cs.yale.edu/homes/aspnes/pinewiki/DepthFirstSearch.html

在上一篇文章中,我们讨论了一个解决方案,该解决方案将访问的顶点存储在一个单独的数组中,该数组存储当前递归调用堆栈的顶点。

在这篇文章中,讨论了一种不同的解决方案。解决方案来自CLRS手册。其思想是对给定的图进行DFS,在进行遍历时,将以下三种颜色中的一种指定给每个顶点。

白色:尚未处理顶点。最初,所有顶点都是白色的。

灰色:正在处理顶点(此顶点的DFS已启动,但尚未完成,这意味着尚未处理此顶点的所有子体(在DFS树中)(或此顶点位于函数调用堆栈中)


http://www.kler.cn/a/274529.html

相关文章:

  • 【Android】unzip aar删除冲突classes再zip
  • 什么?Flutter 可能会被 SwiftUI/ArkUI 化?全新的 Flutter Roadmap
  • 国家认可的人工智能从业人员证书如何报考?
  • 机动车油耗计算API集成指南
  • RunCam WiFiLink连接手机图传测试
  • 【返璞归真】score检验:似然比的得分检验(Likelihood Ratio Score Test)
  • WiFi是可以连接网络,但是在Pixel 手机上就连接提示受阻,无法上网-解决方法
  • 大数据面试题 —— HBase
  • [LLM] 大模型基础|预训练|有监督微调SFT | 推理
  • node.js 的常用命令
  • SLAM 求解IPC算法
  • SQL的INSERT IGNORE用法
  • .NET 异步编程(异步方法、异步委托、CancellationToken、WhenAll、yield)
  • 图像分割在疾病诊断中的应用案例
  • 无法加载DLL“SQLite.Interop.dll“:找不到指定模块
  • Linux作业
  • 键盘映射工具KeyTweak的使用,把F9和F10改为 Home、End
  • [PwnThyBytes 2019]Baby_SQL
  • Golang 开发实战day05 - Loops(1)
  • 【智能家居】东胜物联提供软硬一体化智能家居解决方案,助企业提高市场占有率
  • 【计算机网络_网络层】IP协议
  • 卸载.Net SDK
  • ClickHouse列式存储基础笔记
  • BUUCTF-Misc10
  • 搭建基于 Snowflake 的 CI/CD 最佳实践!
  • 【Linux】进程排队的理解进程状态的表述僵尸进程和孤儿进程的理解