Euler Cycle - 欧拉回路
问题
求无向图和有向图的欧拉回路。
无向图判断欧拉回路的存在
无向图的任意顶点的度数为偶数(注意这里的度数是指无向图的边数),则该无向图存在欧拉回路;
无向图求欧拉回路
用算法求无向图的欧拉回路。设表示顶点可以到达顶点,表示顶点无法到达。
上面的无向图可以表示为矩阵:
类似DFS搜索。从任意顶点开始访问,选取它的邻节点作为下一个访问的顶点(经过边,根据无向图性质可知,必然有)。每经过一条边将其删除(令),递归的重复该搜索操作,直到再次回到起点,算法结束。整个过程中经过的边即为该图的欧拉回路。如图所示:
算法的时间复杂度是。
有向图判断欧拉回路的存在
有向图的任意顶点满足,即出度等于入度,则该有向图存在欧拉回路;
有向图求欧拉回路
有向图的欧拉回路的求解方法与无向图一样。