浅谈平面图五染色的一种算法
对于一个平面图,我们要把该图的所有区域进行 5 染色,使得存在边相邻的两个区域颜色不同。
给个例子:
而对于平面图五染色构造方案,现在常见的是一种
本文的目标是介绍一种
四色定理及其探索过程(不想看的可以跳过)
事实上,有一个著名的定理叫做四色定理,内容是对于任意一个平面图,都存在 4 染色。
首先是很久很久之前有个叫古德里的英国大学生发现地图可以 4 染色。
于是他做了一些实验,然后大胆猜想任意一个图都存在 4 染色。
然后他和他的弟弟一起来尝试证明这个结论,结果画了
然后这个问题就传出去了,许多数学家都尝试了,可都没有成功,直到……
肯普登场,于是他“成功”了,他成功的给出了一种假做法。
这是给出的一个基于肯普的构造方法的反例:
不过通过赫伍德的分析,肯普其实证明出了一个更弱的定理:五色定理。
后来,又有许多数学家积极投身于四色定理,开始证明区域数小于等于
刚开始
后来又有一个数学家干了一件至关重要的事情,他证明了如果四色定理不成立,一定是在某些特定的情况中不成立(只有有限种情况),于是随着计算机的发明,美国的两个数学家和一个计算机学家就合作爆搜出了结果,证明了四色定理,当时跑了
当然,这肯定不是一个令人满意的证明,数学爱好者们对四色定理的研究,当然不会在此止步。
(这里给一个网上弄来的证明,全英文的,没看懂,当然不保证正确:http://www.ams.org/notices/200811/tx081101382p.pdf)
对偶图转化
这里的平面图和我们 OI 中的图区别比较大,不过我们可以做一点简单的转化,对于每一个区域,看成一个点,然后如果两个区域有边相邻就连边,这样得出的图还是一个平面图(所有边不相交),不过这个时候就是对这些节点进行染色了,这就是我们 OI 中的常见染色模型了。
欧拉平面图定理
有
证明烂大街了,不会自己上网搜。
当然这里我们需要的不仅仅是这个公式,因为里面有很多没用的东西。
我们考虑
于是乎我们似乎得到了一个很重要的结论:不存在
但这并不等价,不能说因为不存在
不过,我们可以快速得出六色定理。
首先一定存在度数小于等于
于是考虑向
我们先说一下基于肯普提出的做法。
大概是这样:
每次找到一个度数小于等于
当度数小于等于
然后用到了很巧妙的一步,考虑此时五个点颜色互不相同,假设颜色和编号均为
我们的目标是找到一对
首先可以证明一定存在,因为不存在这样的情况,其中两个点有连边表示它们可达:
这也充分体现了平面图的平面性。
然后找到
不过很遗憾,这种做法复杂度是
缩点过程
对于两个点
图搞错了,中间不应该有连边,或者说你可以理解为中间那一条黑色的边表示的应该是将这两个点合并的操作。
算法流程
我们还是是每次找到一个度数小于等于
首先先把这个点删除,然后我们可以找到两个点,满足这两个点之间不会存在边直接相连(可以证明一定存在),然后对这两个点执行缩点操作,不难发现此时进行完缩点操作之后仍为平面图。
画个图意思意思:
然后递归处理即可,可以证明正确性,回退过程可以顺便构造方案。
可以用线段树合并维护邻接矩阵,做到
其实是可以使用并查集维护缩点操作,可以做到
(感觉重点内容就这么一点啊,我是划不住重点吗?)