小时候经常做的一个游戏,给定一个图,要求能够一笔画出来,一笔画问题是图论中的一个经典问题,起源于柯尼斯堡七桥问题:在一次穿过城镇的散步中,是否存在一条路径,通过柯尼斯堡城的七座桥,且每座桥有且仅有一次路过。
图1 柯尼斯堡七桥问题及其抽象出的图
1736年,Euler证明了七桥问题是不可能实现的,给出了图中存在这种路径的充分必要条件,因此这种路径被称为Euler路径,如果Euler路径中的起点和终点一致,则称为Euler回路(Euler环)。
一、相关证明
以下是关于Euler回路(Euler路径)的相关证明,摘自维基百科。
定理1:
1、连通的无向图 G有欧拉路径的充要条件是:G中奇顶点(连接的边数量为奇数的顶点)的数目等于0或者2。
2、连通的无向图 G 是欧拉环(存在欧拉回路)的充要条件是:G中每个顶点的度都是偶数。
证明必要性:
如果一个图能一笔画成,那么对每一个顶点,要么路径中“进入”这个点的边数等于“离开”这个点的边数:这时点的度为偶数。要么两者相差一:这时这个点必然是起点或终点之一。注意到有起点就必然有终点,因此奇顶点的数目要么是0,要么是2。
证明充分性:
1、如果图中没有奇顶点,那么随便选一个点出发,连一个环C1。如果这个环就是原图,那么结束。如果不是,那么由于原图是连通的,C2 和原图的其它部分必然有公共顶点 s1。从这一点出发,在原图的剩余部分中重复上述步骤。由于原图是连通图,经过若干步后,全图被分为一些环。由于两个相连的环就是一个环,原来的图也就是一个欧拉环了。
2、如果图中有两个奇顶点 u 和 v,那么加多一条边将它们连上后得到一个无奇顶点的连通图。由上知这个图是一个环,因此去掉新加的边后成为一条路径,起点和终点是 u 和v。
定理2:
如果连通无向图 G有 2k 个奇顶点,那么它可以用 k笔画成,并且至少要用 k笔画成。
证明:
将这 2k个奇顶点分成 k对后分别连起,则得到一个无奇顶点的连通图。由上知这个图是一个环,因此去掉新加的边后至多成为k条欧拉路径,因此必然可以用k 笔画成。
假设全图可以分为 q条欧拉路径,则由定理一知,每条链中只有不多于两个奇顶点,于是 2q >= 2k。因此必定要k笔画成。
二、构造欧拉图</