定义
通过图(无向图或有向图)中所有边且每边仅通过一次通路称为欧拉通路,相应的回路称为欧拉回路。
具有欧拉回路的图称为欧拉图(Euler Graph),具有欧拉通路而无欧拉回路的图称为半欧拉图。
一些概念性的东西
欧拉通路
通过图中每条边且只通过一次,并且经过每一顶点的通路。
无向连通图G含有欧拉通路,当且仅当G有零个或两个奇数度的结点;
有向连通图D含有欧拉通路,当且仅当该图为连通图且D中除两个结点外,其余每个结点的入度=出度,且此两点满足deg-(u)-deg+(v)=±1。
(起始点s的入度=出度-1,结束点t的出度=入度-1 或两个点的入度=出度)
即为:除2个端点外其余节点入度=出度;1个端点入度比出度大1;一个端点入度比出度小1 或 所有节点入度等于出度
欧拉回路
通过图中每条边且只通过一次,并且经过每一顶点的回路。
无向连通图G是欧拉图,当且仅当G不含奇数度结点(G的所有结点度数为偶数);
有向连通图D是欧拉图,当且仅当该图为连通图且D中每个结点的入度=出度
一个非平凡连通图是欧拉图当且仅当它的每条边属于奇数个环。
如果图G是欧拉图且 H = G - uv,则H有奇数个u,v-迹仅在最后访问v;同时,在这一序列的u,v-迹中,不是路径的迹的条数是偶数。
!注意图中孤立点的问题。
算法
朴素DFS求解
一般这个就没有问题了。
例题:无序字母对
Fleury(弗罗莱)算法
例题:欧拉回路
代码还没有写出来。。。