在图论中,**欧拉路径(Eulerian path)是经过图中每条边恰好一次的路径,欧拉回路(Eulerian circuit)是经过图中每条边恰好一次的回路。
如果一个图中存在欧拉回路,则这个图被称为欧拉图(Eulerian graph);如果一个图中不存在欧拉回路但是存在欧拉路径,则这个图被称为半欧拉图(semi-Eulerian graph)**HOLDER},以下性质对从 G 中删除孤立顶点后得到的图 G 仍然成立。
对于连通图 G,以下三个性质是互相等价的:
G′ 是欧拉图;
G 中所有顶点的度数都是偶数(对于有向图,每个顶点的入度等于出度);
G 可被分解为若干条不共边回路的并。
以下我们对等价性进行证明。
若一个图 G 是欧拉图,那么 G 中所有顶点的度数都是偶数:考虑从任意顶点开始沿着欧拉回路走一圈,则每个点 G 的度数等于离开点 G 的次数加到达点 v 的次数。又由于行动的轨迹是一个回路,则对于每个点 v,离开该点的次数等于到达该点的次数。这也就是说,每个点的度数都形如 v,即偶数。
特别地,对于有向图,根据相同的证明过程,每个顶点的入度等于出度。
若一个图 v 中所有顶点的度数都是偶数(或入度与出度相等),则它可被分解为若干条不共边回路的不交并:考虑从任意顶点 2k 开始,选择任意出边 G,走向对应的相邻顶点 u 并删除 (u,v),直到返回最初开始的顶点 v。可以证明该过程必定会最终回到 (u,v):每当到达一个新的顶点 u 时,根据上一条性质,该顶点剩余的度数为奇数,也就是说必定存在一条出边,该过程不会在点 u 终止。(换句话说,该过程会且仅会在回到点 v=u 时停止。)又因图 v 中的边数是有限的,该过程必定会在有限步内停止,则最终必然可以返回 u 并得到一条回路。注意到在前述证明中我们仅使用了点度数均为偶数的性质,且在找到并删除一条回路后剩下部分的图仍然满足该性质,我们可以不断重复该过程直到剩下的图为空图,从而将 G 拆分为若干条不共边的回路。
更进一步地,每条回路都可以被从其多次经过的顶点处分解成若干简单环的不交并,所以上述性质中的简单回路亦可被替换为简单环。
12345678910111213Input. The edges of the graph e, where each element in e is (u,v)Output. The vertex of the Euler Road of the input graph.Method. Function Hierholzer (v)circle←Find a Circle in e Begin with vif circle=∅return ve←e−circlefor each v∈circlev←Hierholzer(v)return circleEndfunctionreturn Hierholzer(any vertex)