无向图的Hierholzer算法流程(一)

无向图的Hierholzer算法

细心的读者可能发现了上述分析中的一个漏洞:上述分析只能说明,当图中存在度数为奇数的节点时,不存在欧拉回路。我们还需要一个用来找出欧拉回路的算法,才能证明当所有节点度数为偶数时,欧拉回路确实存在。事实上,欧拉本人也没有完成这一证明,该证明的补全由德国数学家 Carl Hierholzer 于 1871 年完成\^3

算法流程

Hierholzer 的基本思想是首先找到一个子回路,并逐步将其他回路合并到该子回路中,最终形成完整的欧拉回路。该证明被后人整理成 Hierholzer 算法**^4**,用于在已经判定无向图的欧拉回路存在的前提下,找出一条欧拉回路。算法流程如下:

  • (寻找子回路)从任意非零度节点 出发,沿着边遍历图。在遍历过程中,删除经过的边。如果遇到一个所有边都被删除的节点,那么该节点必然是 (证明见下文),即我们找到了一个包含 的回路。将该回路上的节点和边添加到结果序列中。
  • (检查是否存在其它回路)检查刚刚添加到结果序列中的节点,看是否还有与节点相连,且未遍历的边。如果发现节点 有未遍历的边,则从 出发重复步骤 1,找到一个包含 的新回路,将结果序列中的一个 用这个新回路替换。此时结果序列仍然是一个回路,只不过变得更长了。
  • (结束条件)重复步骤 2,直到所有边都被遍历。此时结果序列中的节点和边就构成了欧拉回路。算法结束。
相关推荐
一切皆是因缘际会1 小时前
频域特征解构底层机理与双域融合鉴伪算法优化
人工智能·算法·ai·架构
Smilecoc1 小时前
决策树(三):剪枝
算法·决策树·剪枝
bIo7lyA8v2 小时前
算法性能建模的数值方法与误差分析的技术8
算法
Smilecoc2 小时前
决策树(四):决策树实战之鸢尾花分类
算法·决策树·分类
-Thinker2 小时前
【无标题】
java·开发语言·算法·图搜索
数据仓库搬砖人2 小时前
DBSCAN 原理深度解析:从聚类算法到风控团伙识别的实战指南
算法
凡人叶枫2 小时前
Effective C++ 条款24:若所有参数皆须要类型转换,请为此采用 non-member 函数
linux·前端·c++·算法·嵌入式开发
洛水水2 小时前
【力扣100题】87.只出现一次的数字
数据结构·算法·leetcode
HZ·湘怡2 小时前
排序算法之希尔排序(2)--菜鸟先飞
数据结构·算法·排序算法·希尔排序