作一道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语言算法,欧拉图的断定和求法相关推荐

  1. Fleury算法-欧拉图

    文章目录 欧拉图 Fleury算法 欧拉图 欧拉图:所有节点度数均为偶数 欧拉路:仅有2个奇度数节点 欧拉图(eular graph):经过每个边仅一次走完图 桥:删去此边,图就不连通 def isE ...

  2. c语言单片机求最小公倍数,单片机常用的14个C语言算法,要熟记在心哦!

    原标题:单片机常用的14个C语言算法,要熟记在心哦! 算法(Algorithm):计算机解题的基本思想方法和步骤. 算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么 ...

  3. 易语言html规则分析,易语言算法原理浅析【一】(示例代码)

    注: 如果你看完了下面的文章.就来试试这个KeyGenMe吧,相信你能有所收获. 一.文章开头首先我们要贴上一段易语言代码,并且编译这段代码,从汇编角度分析易语言程序编译后,易语言算法在汇编中的实现过 ...

  4. c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题 N个人围成一圈 - phpStudy...

    详解约瑟夫环问题及其相关的C语言算法实现 约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推 ...

  5. 编写一个字节数的rtu C语言校验程序,Modbus通信协议中CRC校验的快速C语言算法

    Modbus通信协议中CRC校验的快速C语言算法 2004年第11期 福 建 电 脑 63 Modbus通信协议中CRC校验的快速C语言算法 孟开元 (西安石油大学计算机学院陕西西安710065) [ ...

  6. c语言编常见算法,5个常见C语言算法

    5个常见C语言算法 十进制转换为二进制的递归程序 字符串逆置的递归程序 整数数位反序,例如12345->54321 四舍五入程序(考虑正负数) 二分法查找的递归函数 #include #incl ...

  7. 算法与数据结构c语言版PPT,C语言算法与数据结构.ppt

    C语言算法与数据结构.ppt 第十二章 算法与数据结构12.1 算法的基本概念,该节知识点所占试题比重为12,属于重点考查对象,基本上每次必考,主要考查算法的定义和对算法复杂度的理解.历次试题分值在0 ...

  8. c语言中闰年的流程图_C语言-算法与流程图

    <C语言-算法与流程图>由会员分享,可在线阅读,更多相关<C语言-算法与流程图(22页珍藏版)>请在人人文库网上搜索. 1.目录,第一章 绪论 第二章 算法与流程图 第三章 数 ...

  9. c语言二分法_14个经典C语言算法你就不看一眼?(附详细代码)

    今天,给大家讲一讲,单片机常用的14个C语言算法(附详细代码)哟! 一.计数.求和.求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值.终值或结束条件,更要注意用来表示计数.和. ...

最新文章

  1. 计算机组成原理考试复习
  2. scala case class 继承_数字硬件系统设计之一:Scala快速入门(2)
  3. 设计模式C++实现(4)——原型模式、模板方法模式
  4. iOS多线程:『pthread、NSThread』详尽总结
  5. Python程序编译与反编译
  6. python的函数调用_三个案例带你了解python回调函数
  7. Django项目:CMDB(服务器硬件资产自动采集系统)--11--07CMDB文件模式测试采集硬件数据...
  8. 你已经是台成熟的vivo手机了,要自己学会打王者
  9. 图像导入裁剪与灰度化
  10. 树莓派4B安装配置LibreELEC并连接到三星电视
  11. 学习python量化分析
  12. 第一章:自己动手写区块链之最小可行区块链
  13. 计算机用word做海报,【2人回答】电脑Word怎么做海报?-3D溜溜网
  14. 基于BM1684移植YOLOV7
  15. 如何看hbo_如何取消HBO Max订阅
  16. Apache2 Windows安装与HTTP Server Digest 认证
  17. 【Unity 手写PBR】补充:多光源 阴影 视差 自发光
  18. win7笔记本网络连接图标一直转圈但可上网
  19. 文件内容中显示(SOH、STX、ETX)
  20. SAP请求释放怎么撤回

热门文章

  1. php剪裁图片,PHP实现图片裁剪与缩放的几种方法
  2. playbook变量
  3. IIS 对路径“..”的访问被拒绝。
  4. 项目实战:51单片机控制的小型PM2.5环境检测系统,附技术文件和源码
  5. 标准库 - fmt/format.go 解读
  6. 中式英语外国人听不懂 被误成歹徒
  7. html5 汽车广告,汽车经典广告语
  8. 采用SMO优化算法训练SVM(实战篇)
  9. 《欧美剧集观看最佳索引》(US SHOWS GUIDE) 2005-2006
  10. Qt之开发板和电脑通过网线通信