四色定理 - 从时序着色法到四色定理的逻辑证明

上接先前一篇文章:

NP=P 图着色问题 线性解法_铸人的博客-CSDN博客

在前面的分析中,我们看到K5在图论上谈不上平面不平面,它的平面性本质上应当被视作几何属性而不是关系属性,或者说,它的平面性必须由几何属性抽象才能得到,那么也不难想到四色猜想(目前被称为定理)实际上也有类似的问题:单独从节点和关系上分析是不充分的,还要考虑到节点并不是一个抽象的点,以及边是不是只意味着关系。

节点实际上是一个国家或者地区的对应物。是有面积的,是有周长的,面积和周长等等都是在几何上可度量的,有意义的。而边作为邻接关系的抽象物,可以暂时不考虑太多:两国边界即便蜿蜒曲折,但终究可以抽象为“邻接关系”。

从图着色问题的分析中看得出来,我们现在已经有了一个很好的工具,就是所谓的时序法。我们把相邻节点的邻接关系序列化为时序上的步骤关系。就像两条腿走路,一前一后,只要前后不同,在局部就可以帮助解决全局问题,局部颜色的最小化使用,其在时间上积累出来的结果,就是全局颜色的最小化的数量。因为这个方法具有很好的普适性,这时候这个数量实际上就和方法所对应的数据结构紧密关联起来了(结构决定功能,功能产生效果,效果被度量就创造了数)。

那么这种方法的最小化情况是什么样的呢?

我们考虑一个关系复杂的节点(就是那个被延迟着色的节点),在时序着色图中,它和前面的多个层次都有关系,所以必须考虑它前面的多个层次。然而前面虽然层次很多,但是为了保证相邻节点颜色不同,所以只需要考虑奇数层次和偶数层次,奇数和偶数层次只要保证选择不同的颜色,也就是一共两种颜色,就足够了。而它自己,显然不能再选择这两种颜色之一,所以必须创造第三种颜色。

既然这样的话,按照时序着色的要求,三种颜色就够了。可是还要考虑到后面的情况,也就是说,若有其它节点又引用(关联)了这个节点,并且同时引用了当前奇数层次和偶数层次的节点,那么新节点又要创造一种颜色,使得颜色总数达到4种。可见创造第三种颜色的节点对于后续节点造成的影响,就是颠倒了着色顺序的奇偶性,使得原来奇数的颜色变成了偶数的颜色,但随后的节点即便是再继续引用下去,奇偶性也已经包含在先前的配置中了。也就是说,奇偶性只能改变一次,再改变又回来了。颠倒奇偶性的节点创造了一种颜色,再次颠倒奇偶性的节点又要创造一种颜色,然后奇偶性就回归了,而且再也无法颠倒了。

这样来说,从图论角度,四色就全了,真的不需要第五种颜色,当然你愿意用更多颜色,也是可以的。但是若从几何角度考虑,还不行,因为点并不是无限小的几何对象,而是一块地的抽象物,所以这个点里面是有大小的。如果还有一块地被包含再这个点所对应的地的面积中,这情况也是完全可能出现的。但是,这个时候并不需要再创造多一种颜色。在当前已有的颜色中,任选一种颜色就行了。而如果这个点对应的是一个复杂的结构,也就是说,一个点抽象了一个局部地图,它若被完全包围在一个环形的国家里面,周围本身就可以作为一个和其它所有内部国家邻接的国家,这时候四种颜色当然也符合要求;若没有被完全包围,则可以把这个点内部的结构展开到全局:如果点是完全封闭的,内含一个局部地区则可以局部标注;而如果这个点是一个更大的地图的抽象物,它可以被展开到全局中,仍然符合上述着色法定义的处理方式。

这实际上相当于一个向内展开的递归证明。

由此四色定理的原理就清楚了:根据时序着色法这种保证任何两个相邻地方不可能着同样颜色的方法,对一个地图着色,不管有没有内部地区,就只需要四种颜色。由此四色定理得证。

为啥是时序着色法呢?当然是时序着色法,因为你就是这样去给地图着色的,而且好像也不会有更好的办法,难道你真的会去尝试所有的冲突可能性然后去不断修正吗?你会自动避开这种笨透了的方法,而且你也只能一次给一个地方着色,而不能同时给所有地方着色,所以结果必定如此。

再把github连接贴一遍:现在里面已经有好多个图论相关问题的线性算法的代码了,当然还有sample。欢迎研究,批评指正。

https://github.com/yyl-20020115/GraphAlgorithmTesterhttps://github.com/yyl-20020115/GraphAlgorithmTester

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值