社区
数据结构与算法
帖子详情
对于一个有向图,不用拓扑排序,如何判断图中是否存在环?
wqb1979
2002-07-07 10:06:07
清华研究生入学考试题
...全文
1415
5
打赏
收藏
对于一个有向图,不用拓扑排序,如何判断图中是否存在环?
清华研究生入学考试题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wqb1979
2002-07-07
打赏
举报
回复
多谢两位的回答,结帖
atlantis13579
2002-07-07
打赏
举报
回复
应该用图论的方程做
设这个图的邻接矩阵是A
则G不含环当且仅当A,A^2,A^3,.....,A^n这n个矩阵的对角元素都是0
原理如下:
G是有向图,A的第(i,j)个元素a(i,j)是vi到vj的长度为1的链的个数
A^2的(i,j)个元素
a2(i,j)=a(1,i)*a(i,1)+a(2,i)*a(i,2)+...+a(n,i)*a(i,n)
显然,vi到vj的每一条长度为2的链看成两条长度为1的链相连,所以共有
a(1,i)*a(i,1)+a(2,i)*a(i,2)+...+a(n,i)*a(i,n)条,就是a2(i,j)
同理可证,ak(i,j)表示vi到vj的长度为k的链的个数
特别地令i=j
ak(i,i)就是通过vi的长为k的环的个数
显然,若有n个顶点图G存在一个环,则必存在一个长度不超过n的环
因此,G不含环当且仅当A,A^2,A^3,.....,A^n这n个矩阵的对角元素都是0
例如一个图G={{1,2,3},{12,23,31}}
A=[0 1 0;0 0 1;1 0 0]
A^2=[0 0 1;1 0 0;0 1 0]
A^3=[1 0 0;0 1 0;0 0 1]的(1,1)元素不是0,表示G有一个通过v1的长为3的环
langhaixin
2002-07-07
打赏
举报
回复
判断一个有向图是否有连通分量
就可以判断是否有环了
求连通分量就是对一个有向图的遍历问题
可以用深度或是广度优先遍历来做!
wqb1979
2002-07-07
打赏
举报
回复
能具体说说吗?
love_aming
2002-07-07
打赏
举报
回复
还可以用深度优先遍历来实现
拓扑排序
-课程设计(源码、课程设计说明书)
题目内容:输出有向网的
拓扑排序
序列。
拓扑排序
的基本思想为: 1)从
有向图
中选出
一个
无前驱的顶点输出; 2)将此顶点和以他为起点的弧删除; 3)重复1)2)直到不存在无前驱的顶点; 4)若此时输出的顶点数小于
有向图
中的顶点数,则说明
有向图
中存在回路,否则输出的顶点的顺序即为
一个
拓扑序列。 基本要求:建立
一个
有向图
,
判断
该图
是否存在
环
,如果不存在
环
,输出它的拓扑有序序列;如存在
环
,给出存在
环
路的信息。 实验目的:利用所学C语言和数据结构的相关知识,输出有向网的
拓扑排序
序列。
拓扑排序
及关键路径的求解
对给定的AOV网
判断
网中
是否存在
环
,检测的办法是对
有向图
构造其顶点的拓扑有序序列,若网中所有顶点都在它的拓扑有序序列中,则该AOV网中必定不存在
环
。在
拓扑排序
的基础上实现关键路径的的求解。
java数百种算法实现
java数百种算法实现
1000多种java算法大全源码包
1000多种java算法大全源码包
拓扑排序
判断
有向图
中是否有
环
拓扑排序
的工程意义
拓扑排序
是对
一个
有向图
构造拓扑序列,解决工程是否能顺利进行的问题。构造时有222种结果: 此图全部顶点被输出:说明说明
图中
无「
环
」存在, 是 AOV 网(有向无
环
图) 没有输出全部顶点:说明
图中
有「
环
」存在,不是 AOV 网 主要思想 遍历所有入度为000的节点,并由该节点刷新其指向节点的度,即将其指向节点的入度减111,当该节点入度为000,将其加入队列。最后查看所有节点的入度是否为000,如果全部为000,说明该网络是有向无
环
图。 例题 LeetCode.207 课程表 你这个学
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章