我们知道欧拉环路定理:
如果一个图每个点的度数都是偶数,则可以存在一条欧拉环路。
道理不复杂,对于偶数度顶点,因为度数为偶数,所以,进入一个结点必然存在一条出该结点的路,这样我们肯定可以找到一种方法遍历所有的边
一笔画问题可以简单点说是:
如果一个图每个点的度数都是偶数,或奇数度顶点的个数有且只有两个,则存在一笔画的方法。
显然不可能存在更多的奇数度顶点,否则图中经过的奇数度顶点,没法再次到达。
所以一笔画问题的结论:
(1)如果每个顶点的度数为偶数,那么存在一个欧拉环
(2)如果有两个奇数度顶点,则这两个奇数度顶点一个为起始点、一个为终止点。
(3)如果奇数度顶点>2,则无解。
所以说,如果图都是偶数度顶点,则可以用找欧拉环问题的方法求解。
如果图的顶点中有两个奇数度顶点a、b,也不麻烦,我们人为添加一条a->b的边,这样图就变成了所有点的度数都是偶数的图。用找欧拉环的方式求解,这一条从a->a的欧拉环路,再加上之前搜索的a->b的通路即为所求。