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

无向图的Hierholzer算法

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

算法流程

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

  • (寻找子回路)从任意非零度节点 出发,沿着边遍历图。在遍历过程中,删除经过的边。如果遇到一个所有边都被删除的节点,那么该节点必然是 (证明见下文),即我们找到了一个包含 的回路。将该回路上的节点和边添加到结果序列中。
  • (检查是否存在其它回路)检查刚刚添加到结果序列中的节点,看是否还有与节点相连,且未遍历的边。如果发现节点 有未遍历的边,则从 出发重复步骤 1,找到一个包含 的新回路,将结果序列中的一个 用这个新回路替换。此时结果序列仍然是一个回路,只不过变得更长了。
  • (结束条件)重复步骤 2,直到所有边都被遍历。此时结果序列中的节点和边就构成了欧拉回路。算法结束。
相关推荐
政企项目老覃6 小时前
大模型幻觉治理与自动评测:金融风控场景的落地实践
人工智能·算法·机器学习
淡海水6 小时前
08-03-不可变-ImmutableDictionary-TKey-TValue-与ImmutableHashSet-T-持久化哈希树
数据结构·算法·c#·哈希算法·dictionary·immutable
hansang_IR6 小时前
【题解】[APIO2023] 赛博乐园 / cyberland
c++·算法·图论
洛阳纸贵6 小时前
MATLAB-matlab基础知识
学习·算法·matlab
落羽的落羽7 小时前
【AI】快速理解AI应用的相关名词概念
linux·c++·人工智能·python·计算机网络·算法
Nil2087 小时前
leetcode 17电话号码的字母组合
算法·leetcode·职场和发展
203号居民8 小时前
LeetCode hot 100 — 25. K 个一组翻转链表
算法·leetcode·链表
ocean21039 小时前
2025-2026年AI算法与模型研发面试高频知识点洞察
人工智能·算法·面试
Nil2089 小时前
leetcode 78子集
数据结构·算法·leetcode