求欧拉回路的Fleury算法.pdfVIP

  • 12
  • 0
  • 约1.13万字
  • 约 5页
  • 2021-11-21 发布于辽宁
  • 举报
一、 实验内容: 判断图 G 是否存在欧拉回路,若存在,输出其中一条欧拉回路。否则,显示无回路。 二、 实验过程与结果 1. 问题简介: 通过图 (无向图或有向图)中所有边一次且仅一次行遍所有顶点的回路称为欧拉回路。 具有欧拉回路的图称为欧拉图 2. 算法思想(框图) : (1)任取 v0 ∈V(G),令 P0=v0. (2 )设 Pi=v0e1v1e2… eivi 已经行遍,按下面方法来从 E(G)-{e1,e2,…,ei} 中选取 ei+1: (a )ei+1 与 vi 相关联; (b )除非无别的边可供行遍,否则 ei+1 不应该为 Gi=G-{e1,e2,…,ei} 中的桥。 (3 )当( 2 )不能再进行时,算法停止。 可以证明,当算法停止时所得简单回路 Pm=v0e1v1e2…emvm(vm=v0) 为 G 中一条欧拉回路。 3. 数据输入: 边数 5,点数 6 相关联的点 1 2 1 3 2 5 4 2 3 2 4 5 4. 运行结果: 存在欧拉回路 1,3 ,2 ,4 ,5,2 , 1 5. 分析总结: Fleury 算法是求欧拉图的十分有效的算法,在执行过程中需要用到类似于图的深度优先遍历,因 为该算法就是需要将已找到的路径不断的扩展下去,直到将所有边扩展进路径。 图 G 判断是否为欧拉图 (连通性和奇度点) y n P0=V0=1 输出无欧拉 回路 Pi=v0e1v1 …eivi, ei+1 ∈E(G)-{e1,… ,ei} Y ei+1 与 vi 关联, i=i+1,ei+1 非桥 E(G)-{e1,e2,…,ei}=Φ 输 出 欧 拉 回 路 Pm v0e1v1e2emvm(vm=v0 = ) Fleury 算法流程图 三、 完整源程序 #include } #include #include if(sn){ ; struct stack t=[]; {

文档评论(0)

1亿VIP精品文档

相关文档