upd 2024.10.24 :补充了为什么求欧拉路径时不能正序存点。
欧拉路径、回路、图
前言
当一手标题党,快乐~
之前一直分不清楚,写篇笔记分辨一下。
欧拉路径
可以一笔画的路径,称为欧拉路径。不要求起点终点为同一点。
判定:
- 有向图:图中只有一个出度比入度大 $1$ 的点(起点),与一个入度比出度大 $1$ 的点(终点),其余点出入度相等。
- 无向图:图中只有两个奇点(起点和终点),其余点都是偶点。
当然,将有向边视作无向边后,路径必须连通。
欧拉回路
在欧拉路径的基础上,起点终点是同一点。
判定:
- 有向图:所有点的出入度相等。
- 无向图:所有点都是偶点。
欧拉图
- 欧拉图:具有欧拉回路的图。
- 半欧拉图:存在欧拉路径、但没有欧拉回路的图。
判断方法
判断一个图是否有欧拉路或欧拉回路,要用到 Fleury 算法。(虽然这不是文章的重点,重点是上文)
用 DFS 实现。
算法核心:除非都是桥,否则走桥边。
关于为什么不能倒序存点
先放张图:
正确顺序:$1\to 3\to 4\to 1\to 2$
如果先进栈会出现断层。
P7771 【模板】欧拉路径
code
|
|