欧拉图判定C语言算法,欧拉图的断定和求法
作一道Catenyms伤神无数,为避免此状况再次发生,在此将欧拉图的断定和求法加以总结php
注:本篇文章系菜鸟总结,大神们请自行忽略。
欧拉图的断定:html
1.首先,全部结点必须在同一个图中。——-》采用并查集断定算法
2.对于具备欧拉回路的图:全部结点的入度和出度都相等,奇数度的结点个数为0——–》统计断定数组
3.对于具备欧拉通路的图:图中一个结点的入度比出度大1,一个结点的入度比出度小1,其他结点入度和出度相同。奇数度结点的个数为2—–》统计断定app
全部不知足以上条件的图都不是欧拉图。ide
欧拉图的求法:wordpress
1.Fleury算法:(下面这段话来自离散课本)url
(1)任取v0∈V(G),令P0=v0.spa
(2)设Pi=v0e1v1e2…eivi已经行遍,按下面方法来从E(G)-{e1,e2,…,ei}中选取ei+1:code
(a)ei+1与vi相关联;
(b)除非无别的边可供行遍,不然ei+1不该该为Gi=G-{e1,e2,…,ei}中的桥。
(3)当(2)不能再进行时,算法中止。
这个可能实现起来比较麻烦,由于还须要判断边是不是桥。
2.套圈法:(下面这段话来自黑书)
欧拉回路:标记1为待查找状态古城Euler(i)寻找开始于定点i而且结束与i的欧拉回路,具体步骤以下:
(1)寻找从i出发的环P1P2…Px(P1=Px=i)
(2)标记顶点P1→x为待查找状态。
(3)对全部处于待查找状态的结点Pj递归调用Euler(Pj)
将Pj找到的环Q1Q2…Qy插入到P1P2…Px中获得欧拉回路P1P2…PjQ2…QyPj+1…Px
若是是求欧拉通路,预处理时找到度数为奇数的两个结点x和y以及一条从x到y的边P1P2…Pk(x=P1;y=Pk),并初始化p[1]=k,p[i]=Pi(1<=i<=k)
这个算法的事件复杂度为O(m)
伪代码讲解:
Euler(int i,int id)
{
若是点i还有出路未使用
{
找到该出路的目标结点j,该出路的边的编号k
标记该出路已使用
Euler(j,k);
}
if (id!=-1) ans[top++]=该出路
}
以此图说明:
首先找到A的出路1,而后到达结点C
找到C的惟一可用出路2,到达A
找到A中可用出路3,到达B
找到B的惟一可用出路4,回到A。
回溯时会依次将欧拉路4321存在ans数组里,即获得答案。
3.dfs法,来自YY
44 bool dfs(int st,int cnt)
45 {
46 int i;
47 if(cnt==n)
48 return 1;
49 for(i=0;i<n;i++)
50 {
51 if(edge[i].st<st||used[i])
52 continue;
53 else if(edge[i].st>st)
54 return false;
55 used[i]=true;
56 edge_order[cnt]=i;
57 if(dfs(edge[i].en,cnt+1))
58 return 1;
59 used[i]=false;//回溯判断是否造成欧拉路径
60 }
这个很好理解吧,就是深度搜索,直到找到欧拉回路为止,算法复杂度比套圈什么的要高一些。推荐套圈。
欧拉图判定C语言算法,欧拉图的断定和求法相关推荐
- Fleury算法-欧拉图
文章目录 欧拉图 Fleury算法 欧拉图 欧拉图:所有节点度数均为偶数 欧拉路:仅有2个奇度数节点 欧拉图(eular graph):经过每个边仅一次走完图 桥:删去此边,图就不连通 def isE ...
- c语言单片机求最小公倍数,单片机常用的14个C语言算法,要熟记在心哦!
原标题:单片机常用的14个C语言算法,要熟记在心哦! 算法(Algorithm):计算机解题的基本思想方法和步骤. 算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么 ...
- 易语言html规则分析,易语言算法原理浅析【一】(示例代码)
注: 如果你看完了下面的文章.就来试试这个KeyGenMe吧,相信你能有所收获. 一.文章开头首先我们要贴上一段易语言代码,并且编译这段代码,从汇编角度分析易语言程序编译后,易语言算法在汇编中的实现过 ...
- c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题
N个人围成一圈 - phpStudy...
详解约瑟夫环问题及其相关的C语言算法实现 约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推 ...
- 编写一个字节数的rtu C语言校验程序,Modbus通信协议中CRC校验的快速C语言算法
Modbus通信协议中CRC校验的快速C语言算法 2004年第11期 福 建 电 脑 63 Modbus通信协议中CRC校验的快速C语言算法 孟开元 (西安石油大学计算机学院陕西西安710065) [ ...
- c语言编常见算法,5个常见C语言算法
5个常见C语言算法 十进制转换为二进制的递归程序 字符串逆置的递归程序 整数数位反序,例如12345->54321 四舍五入程序(考虑正负数) 二分法查找的递归函数 #include #incl ...
- 算法与数据结构c语言版PPT,C语言算法与数据结构.ppt
C语言算法与数据结构.ppt 第十二章 算法与数据结构12.1 算法的基本概念,该节知识点所占试题比重为12,属于重点考查对象,基本上每次必考,主要考查算法的定义和对算法复杂度的理解.历次试题分值在0 ...
- c语言中闰年的流程图_C语言-算法与流程图
<C语言-算法与流程图>由会员分享,可在线阅读,更多相关<C语言-算法与流程图(22页珍藏版)>请在人人文库网上搜索. 1.目录,第一章 绪论 第二章 算法与流程图 第三章 数 ...
- c语言二分法_14个经典C语言算法你就不看一眼?(附详细代码)
今天,给大家讲一讲,单片机常用的14个C语言算法(附详细代码)哟! 一.计数.求和.求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值.终值或结束条件,更要注意用来表示计数.和. ...
最新文章
- 计算机组成原理考试复习
- scala case class 继承_数字硬件系统设计之一:Scala快速入门(2)
- 设计模式C++实现(4)——原型模式、模板方法模式
- iOS多线程:『pthread、NSThread』详尽总结
- Python程序编译与反编译
- python的函数调用_三个案例带你了解python回调函数
- Django项目:CMDB(服务器硬件资产自动采集系统)--11--07CMDB文件模式测试采集硬件数据...
- 你已经是台成熟的vivo手机了,要自己学会打王者
- 图像导入裁剪与灰度化
- 树莓派4B安装配置LibreELEC并连接到三星电视
- 学习python量化分析
- 第一章:自己动手写区块链之最小可行区块链
- 计算机用word做海报,【2人回答】电脑Word怎么做海报?-3D溜溜网
- 基于BM1684移植YOLOV7
- 如何看hbo_如何取消HBO Max订阅
- Apache2 Windows安装与HTTP Server Digest 认证
- 【Unity 手写PBR】补充:多光源 阴影 视差 自发光
- win7笔记本网络连接图标一直转圈但可上网
- 文件内容中显示(SOH、STX、ETX)
- SAP请求释放怎么撤回
热门文章
- php剪裁图片,PHP实现图片裁剪与缩放的几种方法
- playbook变量
- IIS 对路径“..”的访问被拒绝。
- 项目实战:51单片机控制的小型PM2.5环境检测系统,附技术文件和源码
- 标准库 - fmt/format.go 解读
- 中式英语外国人听不懂 被误成歹徒
- html5 汽车广告,汽车经典广告语
- 采用SMO优化算法训练SVM(实战篇)
- 《欧美剧集观看最佳索引》(US SHOWS GUIDE) 2005-2006
- Qt之开发板和电脑通过网线通信