- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
判断一个图是否有环无向图有向图解读
一、无向图:
方法1:
? 如果存在回路,则必存在一个子图,是一个环路。环路中所有顶点的度=2。??
? n算法:
???? 第一步:删除所有度=1的顶点及相关的边,并将另外与这些边相关的其它顶点的度减一。??
???? 第二步:将度数变为1的顶点排入队列,并从该队列中取出一个顶点重复步骤一。??
???? 如果最后还有未删除顶点,则存在环,否则没有环。??
? n算法分析:??
???? 由于有m条边,n个顶点。
?????i)如果m=n,则根据图论知识可直接判断存在环路。(证明:如果没有环路,则该图必然是k棵树 k=1。根据树的性质,边的数目m = n-k。k=1,所以:mn)? ? ? ? ? ? ??
? ?? ii)如果mn 则按照上面的算法每删除一个度为0的顶点操作一次(最多n次),或每删除一个度为1的顶点(同时删一条边)操作一次(最多m次)。这两种操作的总数不会超过m+n。由于mn,所以算法复杂度为O(n)。
? 注:
?????该方法,算法复杂度不止O(V),首先初始时刻统计所有顶点的度的时候,复杂度为(V + E),即使在后来的循环中E=V,这样算法的复杂度也只能为O(V + E)。其次,在每次循环时,删除度为1的顶点,那么就必须将与这个顶点相连的点的度减一,并且执行delete node from list[list[node]],这里查找的复杂度为list[list[node]]的长度,只有这样才能保证当degree[i]=1时,list[i]里面只有一个点。这样最差的复杂度就为O(EV)了。
方法2:
DFS搜索图,图中的边只可能是树边或反向边,一旦发现反向边,则表明存在环。该算法的复杂度为O(V)。
方法3:
摘自:/lzrzhao/archive/2008/03/13/2175787.aspx
PS:此方法于2011-6-12补充
假定:图顶点个数为M,边条数为E
遍历一遍,判断图分为几部分(假定为P部分,即图有 P 个连通分量)
对于每一个连通分量,如果无环则只能是树,即:边数=结点数-1
只要有一个满足 ?? ? 边数 ? ? 结点数-1原图就有环将P个连通分量的不等式相加,就得到:
P1:E1=M1-1
P2:E2=M2-1
...
PN:ENMN-1
????所有边数(E) ? ? 所有结点数(M) -?连通分量个数(P)即: ?E?+?P??M? 所以只要判断结果??E? +?P??M?就表示原图有环,否则无环.
实例代码如下:
#includeiostream??
#includemalloc.h??
using?namespace?std;??
#define?maxNum?100?//定义邻接举证的最大定点数??
int?visited[maxNum];//通过visited数组来标记这个顶点是否被访问过,0表示未被访问,1表示被访问??
int?DFS_Count;//连通部件个数,用于测试无向图是否连通,DFS_Count=1表示只有一个连通部件,所以整个无向图是连通的??
int?pre[maxNum];??
int?post[maxNum];??
int?point;//pre和post的值??
??
//图的邻接矩阵表示结构??
typedef?struct??
{??
????char?v[maxNum];//图的顶点信息??
????int?e[maxNum][maxNum];//图的顶点信息??
????int?vNum;//顶点个数??
????int?eNum;//边的个数??
}graph;??
void?createGraph(graph?*g);//创建图g??
void?DFS(graph?*g);//深度优先遍历图g??
void?dfs(graph?*g,int?i);//从顶点i开始深度优先遍历与其相邻的点??
void?dfs(graph?*g,int?i)??
{??
????//cout顶点g-v[i]已经被访问endl;??
????cout顶点i已经被访问endl;??
????visited[i]=1;//标记顶点i被访问??
????pre[i]=++point;??
????for(int?j=1;j=g-vNum;j++)??
????{??
????????if(g-e[i][j]!=0visited[j]==0)??
????????????dfs(g,j);??
????}??
????post[i]=++point;??
}??
??
void?DFS(graph?*g)??
{??
????int?i;??
????//初始化visited数组,表示一开始所有顶点都未被访问过??
????for(i=1;
您可能关注的文档
- 初中数学德育渗透教学案例2解读.doc
- 初中数学课程标准考试题解读.doc
- 初中物理-电阻-课件解读.ppt
- 初中数学三角形专题说课稿-PPT课件解读.ppt
- 初中文言文常用实词解读.ppt
- 初中数学开学初一第一课2016解读.ppt
- 初中物理中考浮力》ppt课件解读.ppt
- 初中地理-澳大利亚课件解读.ppt
- 初中物理《噪声的控制与危害》解读.ppt
- 初中物理《光学》总复习解读.ppt
- 半导体材料性能提升技术突破与应用案例分析报告.docx
- 半导体设备国产化政策支持下的关键技术突破与应用前景报告.docx
- 剧本杀市场2025年区域扩张策略研究报告.docx
- 剧本杀行业2025人才培训体系构建中的市场需求与供给分析.docx
- 剧本杀行业2025年人才培训行业人才培养模式创新与探索.docx
- 剧本杀行业2025年内容创作人才需求报告.docx
- 剧本杀行业2025年区域市场区域剧本市场消费者满意度与市场竞争力研究报告.docx
- 剧本杀市场2025年区域竞争态势下的区域合作策略分析报告.docx
- 剧本杀行业2025人才培训与行业人才培养模式创新.docx
- 剧本杀行业剧本创作人才心理素质培养报告.docx
最近下载
- 水利工程质量检测员网上继续教育考试题库及答案混凝土专业试题及答案.pdf VIP
- 李白《将进酒》原文及赏析通用5篇.doc VIP
- 《自动喷水灭火系统施工及验收规范》GB50261-2017.docx VIP
- 小学英语_Unit 4 Lesson3 There are twenty pupils in my class教学设计学情分析教材分析课后反思.doc
- 2025贵州省旅游产业发展集团有限公司招聘115人备考试题及答案解析.docx VIP
- 《凤凰男的豪门贤妻》剧本整本.docx VIP
- 2013年水利工程质量检测员网上继续教育考试题库及答案-混凝土专业.pdf VIP
- 消毒技术规范2022.docx VIP
- 阳台封装施工安全协议书5篇.docx
- 消毒技术规范(2022).docx VIP
文档评论(0)