欧拉路径或者欧拉回路都要求经过给定图$G$中所有边恰好一次,在此之上欧拉回路还要求路径是闭合的,即能找到一条从某点出发并以此点为终点的欧拉路径。二者均称为欧拉迹。对于无向图,存在欧拉迹当且仅当图中度数为奇数的结点数目为$0$或$2$。如果图$G$中所有结点度数均为偶数,那么图中的所有欧拉迹均为欧拉回路;而如果度数为奇数的结点数目恰好为$2$,则图中所有欧拉迹均为非闭合的欧拉路径。
下面给出一些摘自wiki关于欧拉迹的性质:
- 一个无向图能够被分解成若干个边集互不相交的环当且仅当图中所有结点度数均为偶数当且仅当图存在欧拉回路。
- 一个有向图存在欧拉回路当且仅当图中所有结点出度入度均相等。
- 一个有向图存在欧拉路径当且仅当图中至多存在一个出度比入度大$1$的结点,至多存在一个入度比出度大$1$的结点,其余结点出入度均相等
给出找出无向图$G$中欧拉回路的Hierholzer算法(线性时间复杂度):
- 任选一个起点,从该点选择为访问的边到达下一个结点,可以断定在返回起点之前不会被阻塞,因为结点的度数为偶数,但不能确定访问所有边。
- 从以上路径中任意邻接边为被全部访问的结点执行同样操作,得到另一个环,与上一个环合并,持续此操作至所有边均被访问。
时间: 2024-12-29 06:53:50