首先,这一门课的两个重要方法:反证法和数学归纳法
这两个方法在后续的正确性证明当中使用的相当频繁
然后引入这门课的第一个问题:艺术画廊问题
即 一个艺术画廊中需要放多少个守卫才能监视到整个画廊
每个守卫的视野距离无限,角度 360 度
然后引入上界与下界:
上界我们可以首先松弛一点,即一开始的上界定为 n-2,n 为边数,因为我们可以以最差的角度来考虑,即把整个多边形分成 n-2 个三角形,并且每个三角形都放一个守卫
# 三角剖分
一些问题
三角剖分是始终存在的吗?
关于这个问题,我们可以换一种角度来看
我们每次连接一条对角线,就可以看成把一个多边形分为两个小的多边形,直到所有多边形都变成三角形为止;
那么问题就转换成:是否始终存在一条对角线?
这里引出一个引理:
# 边数 > 3 的一个多边形始终存在至少一条有效对角线
如何找到这个对角线呢?我们可以从一个多边形的最低的顶点开始往上走,连接相邻的点。如果两个点之间有碰到边界,说明这个多边形有在这两个线之下的点,那么就连接这个点和最底下的点
# 定理 2:每个简单多边形都存在三角剖分 (triangulation)
这一步可以通过数学归纳法来证明
假设:每个 < n 的多边形都可以被三角剖分
这一部分已经手写过,这里不再赘述
大约可以简化说成:
首先证明,所有的多边形都可以被三角剖分
然后通过不断拆分为小的多边形,并接着采用假设的定理,最后拆分到无法拆分为止,再以 "把所有三角形拼起来" 的思路,将分解到最后的三角形拼回 n 个角的多边形,证明它可以被三角剖分
# 定理 3:每个多边形都可以拆分为 n-2 个三角形
然后,假设每个多边形都可以拆分为 n-2 个三角形
然后,我们拆分一次,生成了两个多边形,分别有 m1 和 m2 条边
m1+m2=n+2,因为在拆分过程中,有两条边被重复计算了
然后,由于拆分后的也是多边形
因此,他们总共可以拆分的三角形数量为 m1-2+m2-2 = n+2 -4 = n-2
因此,定理成立
但是,还不够,n-2 还是太多了,所以我们想要把这个数量级降低为 n/3
# 三色法
原理:对所有的三角形的每个角进行涂色,并且保证每个三角形都由三种颜色组成。最后在颜色最少的那些点上放置守卫。
因为前提保证了每个三角形都由三个颜色组成,所以在一个颜色的所有点上防止三角形就能保证所有的三角形的某个点上有守卫,从而保证所有的三角形都有守卫可以看到。
接下来要证明:为什么所有的三角形都可以由三个颜色涂点
# 耳切法和对偶树结构
耳切法:通俗理解成,每个多边形的突出去的三角形我们把它叫耳朵,而耳朵被切割开后,剩下的多边形仍然是简单多边形
对偶树 (dual-tree):如果把每个三角形都看成一个点,相邻的点连成线,那么所有的点连起来以后会形成一颗树,我们叫他对偶树
所有的角为 1 的点,就是这个对偶数的叶子节点,即耳朵,所以这样我们可以非常容易地判定出耳朵。因为这个是一个树结构,所以每个多边形至少有两个耳朵。
证明:数学归纳法
同样假设:所有有 n-1 个角的多边形可以通过三染色染出所有的点
那么,使用耳切法切掉一个角后,剩下的多边形仍然符合三染色,因为他又 n-1 个顶点。那么当把耳朵补回来以后,再填上不同的颜色,那么这个多边形仍然符合三染色