[Note] 欧拉回路与路径
[L4] 欧拉回路与路径
1. 生态位
-
识别:
-
一笔画: 经过图中每条边恰好一次,且不重复。
-
回路 vs 路径: 回到起点(回路);不回到起点(路径)。
-
-
地位:图论基础的连通性分支。它是点连通性(Hamilton)的对偶问题,但欧拉回路有好多项式时间的解法,而 Hamilton 是 NP-Hard。
-
用途: 解决“边全覆盖”类的连通性问题,以及将一维序列重组为图的路径。
2. 逻辑支点
2.1 判定定理
这是欧拉回路存在的充要条件,也是解题的第一步 check。
-
无向图:
-
回路: 所有点的度数都是偶数。
-
路径: 恰好有 0 个 或 2 个 奇度数点。
- 若有 2 个,则这两个点必定是起点和终点。
-
-
有向图:
-
回路: 所有点的 入度等于出度 ()。
-
路径: 恰好有一个点 (起点),一个点 (终点),其余点 。
-
2.2 核心原理:Hierholzer 算法
为什么不能直接 DFS?
- 直接 DFS 可能会过早地回到起点,导致还有一部分边(子环)没得跑。
Hierholzer 的直觉:
-
一直跑: 只要有路就走,直到无路可走(陷入死胡同或回到起点)。
-
回溯录像: 当一个点“无路可走”时,把它加入路径栈。
-
物理意义: 这相当于我们在回溯时,把沿途发现的“小圈”慢慢合并到主路径上。最后倒序输出栈,就是正确的欧拉路径。
3. 实战部署
▶
Hierholzer (DFS)
1 | |
4. 知识关联
-
母题: P7771 模板 欧拉路径 —— 有向图欧拉路径的标准模板,需处理字典序最小。
-
关联笔记:存图与遍历 | [[网络流专题]]
[Note] 欧拉回路与路径
http://miqiu.space/posts/3fe2b20c/