热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

求环路检测算法

假设有这么样的数据:a->bf->gb->cc->ec->a..其中a->bb->cc->a构
假设有这么样的数据:
a->b
f->g
b->c
c->e
c->a
.....
其中
a->b
b->c
c->a


构成了循环,请问有没有什么比较高效的算法能在这样一堆数据中找出像这样出现循环(可能不止一个循环)的项

7 个解决方案

#1


“单链表里面是否有循环”这个问题在《c专家编程》后面有讲。

思路就两个指针都指向头节点,然后开始沿单链表移动,一个每次移动一步,另一个每次两步。
如果快的先到终点就是没有循环。
如果快的追上慢的就是有循环(快的多跑了一圈)。

#2


我这个不是单链表阿,遍历的时候有可能会出现树状结构,因为上述列的这种组合有很多组,如果采用一一遍历,效率是低下的,因此想寻求高效率的算法

#3


DFS,并查集,都可以的吧?

#4


图论里面有环检测的算法。。。3楼所说。

#5


哈希里套个哈希,就可以快速检测环。这个更简便。

图论里的算法,是不断拓扑排序,删除出度最小的,直到无点可删。

#6


这个感觉用tarjan算法就可以解决 时间复杂度O(n+m) n点数m边数

如果出现环路,那么处在环路上的这些点属于同一强连通分支 , 而tarjan就是线性时间求强连通的。。

tarjan实现我blog里有,至于存储图的数据结构邻接表就可以

#7


floyd算法就可以,传递闭包。DFS 并查集也行。
这个好像是要求强连通分量,最大流应该可以吧

推荐阅读
  • OpenCV中的霍夫圆检测技术解析
    本文详细介绍了如何使用OpenCV库中的HoughCircles函数实现霍夫圆检测,并提供了具体的代码示例及参数解释。 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 本文提供了一种有效的方法来解决当Android Studio因电脑意外重启而导致的所有import语句出现错误的问题。通过清除缓存和重建项目结构,可以快速恢复开发环境。 ... [详细]
  • 春季职场跃迁指南:如何高效利用金三银四跳槽季
    随着每年的‘金三银四’跳槽高峰期的到来,许多职场人士都开始考虑是否应该寻找新的职业机会。本文将探讨如何制定有效的职业规划、撰写吸引人的简历以及掌握面试技巧,助您在这关键时期成功实现职场跃迁。 ... [详细]
  • 项目经理的角色与职责解析
    本文探讨了项目经理的核心职责,结合个人项目管理和PMBOK指南的经验,深入分析了项目管理的基本概念及其与运维、战略规划之间的关系。 ... [详细]
  • 探索Java 11中的ZGC垃圾收集器
    Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ... [详细]
  • 本文探讨了使用普通生成函数和指数生成函数解决组合与排列问题的方法,特别是在处理特定路径计数问题时的应用。文章通过详细分析和代码实现,展示了如何高效地计算在给定条件下不相邻相同元素的排列数量。 ... [详细]
  • 加入字节跳动:寻找卓越的技术人才
    字节跳动现开放多个岗位内推机会,诚邀有志之士加入我们的团队,共同创造无限可能。 ... [详细]
  • 本文探讨了如何利用RxJS库在AngularJS应用中实现对用户单击和拖动操作的精确区分,特别是在调整区域大小的场景下。 ... [详细]
  • CSS 实现 Inline-Block 元素水平居中
    本文介绍了如何使用 CSS 将 inline-block 类型的元素进行水平居中对齐的方法,适用于多种布局需求。 ... [详细]
  • Android 中的布局方式之线性布局
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 利用无代码平台实现高效业务应用开发
    随着市场环境的变化加速,全球企业都在探索更为敏捷的应用开发模式,以便快速响应新兴的商业机遇。然而,传统的软件开发方式不仅成本高昂,而且耗时较长,这往往导致IT与业务部门之间的合作障碍,进而影响项目的成功。本文将探讨如何通过无代码开发平台解决这些问题。 ... [详细]
  • Adobe Flash Player:功能与历史回顾
    本文详细介绍了Adobe Flash Player的功能及其在互联网发展史上的重要角色,同时探讨了其停止支持的原因及后续影响。 ... [详细]
  • 深入解析C语言中的关键字及其分类
    本文将全面介绍C语言中的关键字,并按照功能将其分为数据类型关键字、控制结构关键字、存储类别关键字和其他关键字四大类,旨在帮助读者更好地理解和运用这些基本元素。C语言中共有32个关键字。 ... [详细]
  • 在Android应用开发过程中,开发者经常遇到诸如CPU使用率过高、内存泄漏等问题。本文将介绍几种常用的命令及其应用场景,帮助开发者有效定位并解决问题。 ... [详细]
author-avatar
撒哈拉2011的马甲_978
这个家伙很懒,什么也没留下!
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有