欧拉回路与欧拉路径的算法流程演示

算法流程演示

算法流程可能有一些复杂,我们通过一个例子来理解算法的执行步骤。例如,考虑用 Hierholzer 算法找出下图的欧拉回路。

首先进行步骤 1 。从任意节点出发(不妨从节点 出发),沿着边遍历图,删除经过的边,直到无法继续前进。假设我们的遍历路径为 ,此时我们找到了一个包含 的回路。将该回路添加到结果序列中,此时的结果序列即为 ,而图也变成了下面的样子。

接下来进行步骤 2 。检查刚刚添加到结果序列中的节点(节点 、 、 )。我们发现,节点 还存在未被遍历的边( 和 ),因此我们从节点 出发,重复步骤 1。假设我们的遍历路径为 ,此时我们找到了一个包含 的回路。将结果序列中的一个 换成这个回路,此时的结果序列即为 ,而图也变成了下面的样子。

重复进行步骤 2 。检查刚刚添加到结果序列中的节点(节点 、、)。我们发现,节点 还存在未被遍历的边( 和 ),因此我们从节点 出发,重复步骤 1。假设我们的遍历路径为 ,此时我们找到了一个包含 的回路。将结果序列中的一个 换成这个回路,此时的结果序列即为 ,而图也变成了下面的样子。

重复进行步骤 2。检查刚刚添加到结果序列中的节点(节点 、、)。此时不存在未遍历的边,因此结果序列 就是原图中的一个欧拉回路。算法结束。

正确性证明

我们通过反证法简要说明一下,为什么步骤 1 中,如果遇到一个节点 不存在未被删除的边(即节点 的度数为 ),那么该节点必然是出发点 。

首先,假设 ,那么在遍历过程中,为了最终进入节点 ,进入 的边数需要恰好比离开 的边数多 ,也就是说节点 的度数将减少一个奇数。

然而,由于原图存在欧拉回路,因此节点 的初始度数为偶数。偶数减去奇数不可能等于 ,因此必然有 。

至于为什么该算法可以遍历所有边,简单来说是因为所有非零度节点是连通的。详细的证明需要用到一个关于连通性的反证法,有兴趣的读者可以参考《Pearls in Graph Theory》一书中 3.1 节的相关证明\^5

相关推荐
依然鸣5 小时前
PTA团体程序设计天梯赛L2真题讲解L2-001-004
经验分享·学习·算法·深度优先·pat考试
杨航 AI6 小时前
** AI 面试算法 50 题清单**,不是单纯的 LeetCode 题号列表,而是按照“**考察概率 × 面试价值 × 你当前准备方向**”排序
算法·leetcode·面试
m0_7202450113 小时前
1543.统计好三元组(简单)
开发语言·算法
To_OC13 小时前
LC 560 和为 K 的子数组:前缀和配哈希表,这对组合我是真的服了
javascript·算法·程序员
hans汉斯14 小时前
《软件工程与应用》期刊推荐&10月版面征稿中
图像处理·人工智能·深度学习·算法·音视频·软件工程
叠层归一研究院14 小时前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
其美杰布-富贵-李15 小时前
08 进阶评估指标与算法特定指标
人工智能·算法
.道阻且长.16 小时前
5.LeetCode算法习题讲解--双指针--有效三角形的个数
算法·leetcode·职场和发展
我是海飞16 小时前
杰理JL703N SSD1306 OLED(128x64) 点阵屏移植说明
单片机·算法·嵌入式·音频·杰理
wabs66617 小时前
关于图论【最短路径之Bellman_ford 算法(单源有限最短路)|卡码网96.城市间货物运输III的思考】
数据结构·算法·图论·卡码网·bellman_ford·单源有限最短路