首先是定义:
给定一个无向图G,一条路径经过图G的每一条边,且仅经过一次,这条路径称为欧拉路径(Eulerian
Tour),如果欧拉路径的起始顶点和终点是同一顶点,则称为欧拉回路(Eulerian circuit).
然后看看两个定理:
定理一:
连通的无向图有欧拉路径的充要条件是:
G中奇顶点(连接的边数量为奇数的顶点)的数目等于0或者2。
连通的无向图是欧拉环(存在欧拉回路)的充要条件是:
G中每个顶点的度都是偶数。
定理二:
如果连通无向图G 有 2k 个奇顶点,那么它可以用 k 笔画成,并且至少要用 k 笔画成
扩展:
一个连通的有向图可以表示为一条从顶点u到v的(不闭合的)欧拉路径的充要条件是:
u的出度(从这个顶点发出的有向边的数量)比入度(指向这个顶点的有向边的数量)多1, v 的出度比入度少1,而其它顶点的出度和入度都相等。
一个连通的有向图是欧拉环(存在欧拉回路)的充要条件是以下两个之一:
1.每个顶点的出度和入度都相等;
2.存在一系列的(有向)环C1 C2… Cm,使得图G里的每一条边都恰好属于某一个环。
然后如果要求经过每一个点,那么就从每个顶点开始dfs一遍,要是有能满足所有顶点都到达的就满足条件,又是每条边都经过一次,又经过每一个顶点。