欧拉回路的Fleury算法 欧拉回路的Fleury算法是图论中用来判断图是否存在欧拉回路的一种有效算法。欧拉回路是指经过图中所有边一次且仅一次行遍所有顶点的回路。具有欧拉回路的图称为欧拉图。 Fleury算法的思想是从图中任意选择一个顶点v0,令P0=v0,然后按以下步骤选取ei+1: 1. ei+1与vi相关联; 2. 除非无别的边可供行遍,否则ei+1不应该为Gi=G-{e1,e2,…,ei}中的桥。 当算法不能再进行时,所得简单回路Pm=v0e1v1e2…emvm(vm=v0)为G中的欧拉回路。 判断是否为欧拉图需要满足以下两个条件: 1. 连通性:图G是连通的; 2. 奇度点:图G中所有顶点的度数都是偶数。 Fleury算法的流程图如下: 1. 判断图G是否存在欧拉回路,若存在,输出其中一条欧拉回路,否则,显示无回路。 2. 实验环境:vc++。 3. 实验过程: * 输入图的边数、点数和相关联的点。 * 判断图是否存在欧拉回路,若存在,输出其中一条欧拉回路,否则,显示无回路。 4. 实验结果:存在欧拉回路1、3、2、4、5、2、1。 Fleury算法是求欧拉图的十分有效的算法,在执行过程中需要用到类似于图的深度优先遍历,因为该算法就是需要将已找到的路径不断的扩展下去,直到将所有边扩展进路径。 完整的源程序如下: ```c #include <iostream.h> #include <stdio.h> #include <string.h> struct stack{ int top; node[81]; } T,F,A; int M[81][81]; // 图的邻接矩阵 int n; int degree[81]; bool brigde(int i,int j){ // ... } void Fleury(int x){ // ... } void main(){ // ... } ``` Fleury算法的优点是可以快速判断图是否存在欧拉回路,并可以输出其中一条欧拉回路。该算法广泛应用于图论、计算机网络、交通网络等领域。 欧拉回路的Fleury算法是一种有效的算法,可以快速判断图是否存在欧拉回路,并可以输出其中一条欧拉回路。该算法广泛应用于图论、计算机网络、交通网络等领域。
- sxdthwy2011-09-20很有价值,学习了,就是注释少
- lrc_seraph2012-09-20看完里面那个流程图我就懂了,谢谢
- 粉丝: 1
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助