电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

求欧拉回路,Fleury算法的C语言实现

求欧拉回路,Fleury算法的C语言实现_第1页
1/6
求欧拉回路,Fleury算法的C语言实现_第2页
2/6
求欧拉回路,Fleury算法的C语言实现_第3页
3/6
欧拉(Euler)通路/回路 1、基本概念: (1)定义 欧拉通路 (欧拉迹)—通过图中每条边一次且仅一次,并且过每一顶点的通路。 欧拉回路 (欧拉闭迹)—通过图中每条边一次且仅一次,并且过每一顶点的回路。 欧拉图—存在欧拉回路的图。欧拉图就是从一顶出发每条边恰通过一次又能回到出发顶点的那种图,即不重复的行遍所有的边再回到出发点。 通路和回路-称 vie1e2… envj 为一条从 vi 到 vj 且长度为 n 的通路,其中长度是指通路中边的条数.称起点和终点相同的通路为一条回路。 简单图-不含平行边和自回路的图。 混合图-既有有向边,也有无向边的图 平凡图-仅有一个结点的图 完全图-有 n 个结点的且每对结点都有边相连的无向简单图,称为无向完全图;有 n 个结点的且每对结点之间都有两条方向相反的边相连的有向简单图为有向完全图。 (2)欧拉图的特征: 无向图 a)G 有欧拉通路的充分必要条件为:G 连通,G 中只有两个奇度顶点(它们分别是欧拉通路的两个端点)。 b)G 有欧拉回路(G 为欧拉图):G 连通,G 中均为偶度顶点。 有向图 a)D 有欧拉通路:D 连通,除两个顶点外,其余顶点的入度均等于出度,这两个特殊的顶点中,一个顶点的入度比出度大 1,另一个顶点的入度比出度小 1。 b)D 有欧拉回路(D 为欧拉图):D 连通,D 中所有顶点的入度等于出度。一个有向图是欧拉图,当且仅当该图所有顶点度数都是 0。 2、弗罗莱(Fleury)算法思想-解决欧拉回路 Fleury 算法: 任取 v0∈V(G),令 P0=v0; 设 Pi=v0e1v1e2…ei vi 已经行遍,按下面方法从中选取 ei+1: (a)ei+1 与 vi 相关联; (b)除非无别的边可供行遍,否则 ei+1 不应该为 Gi=G-{e1,e2, …, ei}中的桥(所谓桥是一条删除后使连通图不再连通的边); (c)当(b)不能再进行时,算法停止。 可以证明,当算法停止时所得的简单回路Wm=v0e1v1e2….emvm(vm=v0)为 G 中的一条欧拉回路,复杂度为 O(e*e)。 3、欧拉算法 C 语言描述 如下为算法的图示动态过程: 4、欧拉算法的 C 实现 #include "SqStack.h" //堆栈的常见操作 #include "Queue.h"//队列的常见操作 typedef int Graph[200][200]; int v,e; void DFS(Graph &G,SqStack &S,int x,int t) { int k=0,i,m,a; Push(S,x); for(i=t;i0) { k=1; G[i][x]=0; //删除此边 G[x][i]=0; DFS(G,S,i,0); bre...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

求欧拉回路,Fleury算法的C语言实现

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部