怎么判断强连通图?

liuchangyan 2006-12-12 02:54:27
怎么判断一个采用邻接表结构的有向图G是否为强连通图?
请高手指点一下,谢谢!
...全文
1446 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LiChenYue 2007-03-19
  • 打赏
  • 举报
回复
遍历,对每个节点。
mathe 2006-12-13
  • 打赏
  • 举报
回复
通过google随便搜索了一个强连通分支计算的方法:
http://moncs.cs.mcgill.ca/people/hv/teaching/MS/COMP522A2003/lectures/lecture.CBD/strongcomp.pdf
mathe 2006-12-13
  • 打赏
  • 举报
回复
可以使用计算拓扑排序的算法。
计算后,如果发现某条边是逆序,那么它就在某个强连通分支中,通过这种方法可以找到所有强连通分支。如果强连通分支数目大于1,那么图就不是强连通的。
shunan 2006-12-13
  • 打赏
  • 举报
回复
算法书上有的东西:
1,call dfs(G) 给每一个点标记完成时间f
2,把图G的所有边反向得G'
3,call dfs(G'),在这个dfs中,考虑要从1中得到的按完成时间降序排列的顶点序列进行搜索!
4,如果可以遍历每一个点,就是强连通,否则不是!
这也可以来计算各个强连通分片。
短歌如风 2006-12-13
  • 打赏
  • 举报
回复
对Python不熟,大致看懂了,不过有一点不明白:

对于有环的图来说,拓扑排序是如何定义的?比如图中可能不存在没有前驱和没有后继的点。一开始我也想到过用拓扑排序,就是这点没有把握所以没有在考虑下去。
短歌如风 2006-12-12
  • 打赏
  • 举报
回复
最笨的方法是用Floyd算法求解最短路径,如果有不存在最短路径的点对则不是强边通图,反之则是强连通图
liuchangyan 2006-12-12
  • 打赏
  • 举报
回复
高手都泡MM去了?
1.算法是程序的灵魂,优秀的程序在对海量数据处理时,依然保持高速计算,就需要高效的数据结构和算法支撑。2.网上数据结构和算法的课程不少,但存在两个问题:1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上就是听天书了2)说是讲数据结构和算法,但大多是挂羊头卖狗肉,算法讲的很少。 本课程针对上述问题,有针对性的进行了升级 3)授课方式采用图解+算法游戏的方式,让课程生动有趣好理解 4)系统全面的讲解了数据结构和算法, 除常用数据结构和算法外,还包括程序员常用10大算法:二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、马踏棋盘算法。可以解决面试遇到的最短路径、最小生成树、最小连通图、动态规划等问题及衍生出的面试题,让你秒杀其他面试小伙伴3.如果你不想永远都是代码工人,就需要花时间来研究下数据结构和算法。教程内容:本教程是使用Java来讲解数据结构和算法,考虑到数据结构和算法较难,授课采用图解加算法游戏的方式。内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插值查找、斐波那契查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、AVL树、线索二叉树、赫夫曼树、赫夫曼编码、多路查找树(B树B+树和B*树)、图、图的DFS算法和BFS、程序员常用10大算法、二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法马踏棋盘算法。学习目标:通过学习,学员能掌握主流数据结构和算法的实现机制,开阔编程思路,提高优化程序的能力。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧