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

查找有向图中的环

有向图:

主要有深度优先和拓扑排序2中方法

1、拓扑排序,如果能够用拓扑排序完成对图中所有节点的排序的话,就说明这个图中没有环,而如果不能完成,则说明有环。

2、可以用Strongly Connected Components来做,我们可以回忆一下强连通子图的概念,就是说对于一个图的某个子图,该子图中的任意u->v,必有v->u,则这是一个强连通子图。这个限定正好是环的概念。所以我想,通过寻找图的强连通子图的方法应该可以找出一个图中到底有没有环、有几个环。

3、就是用一个改进的DFS

刚看到这个问题的时候,我想单纯用DFS就可以解决问题了。但细想一下,是不能够的。如果题目给出的是一个无向图,那么OK,DFS是可以解决的。但无向图得不出正确结果的。比如:A->B,A->C->B,我们用DFS来处理这个图,我们会得出它有环,但其实没有。

我们可以对DFS稍加变化,来解决这个问题。解决的方法如下:

图中的一个节点,根据其C[N]的值,有三种状态:

0,此节点没有被访问过

-1,被访问过至少1次,其后代节点正在被访问中

1,其后代节点都被访问过。

按照这样的假设,当按照DFS进行搜索时,碰到一个节点时有三种可能:

1、如果C[V]=0,这是一个新的节点,不做处理

2、如果C[V]=-1,说明是在访问该节点的后代的过程中访问到该节点本身,则图中有环。

3、如果C[V]=1,类似于2的推导,没有环。    在程序中加上一些特殊的处理,即可以找出图中有几个环,并记录每个环的路径

相关文章:

  • 求无向图最小环算法-floyd
  • [hdu 3746] Cyclic Nacklace [kmp]
  • [poj 2001]Shortest Prefixes [Trie]
  • Trie - 字典树 模板
  • [hdu 1247]Hat’s Words [Trie 图]
  • Trie树专题 [转]
  • using声明、using指示及其作用域详解
  • using声明、using指示用于嵌套命名空间时的作用域
  • C语言运算符优先级列表
  • 康托展开和逆康托展开
  • C语言中scanf函数的实现
  • 【codevs 1225】八数码难题
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]
  • 浅谈一类积性函数的前缀和
  • Codeforces Round #363 (Div. 2)[B]One Bomb
  • [译]前端离线指南(上)
  • 【comparator, comparable】小总结
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • EventListener原理
  • iOS 系统授权开发
  • js操作时间(持续更新)
  • JWT究竟是什么呢?
  • Python_OOP
  • Quartz初级教程
  • Spring声明式事务管理之一:五大属性分析
  • Vue 2.3、2.4 知识点小结
  • zookeeper系列(七)实战分布式命名服务
  • 初识 beanstalkd
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 如何设计一个微型分布式架构?
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 深度解析利用ES6进行Promise封装总结
  • 一份游戏开发学习路线
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • Java性能优化之JVM GC(垃圾回收机制)
  • Nginx实现动静分离
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (02)Hive SQL编译成MapReduce任务的过程
  • (C++)八皇后问题
  • (done) 两个矩阵 “相似” 是什么意思?
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (安卓)跳转应用市场APP详情页的方式
  • (差分)胡桃爱原石
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)菜鸟学数据库(三)——存储过程
  • (转)母版页和相对路径
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .bat批处理(三):变量声明、设置、拼接、截取