图1:格点多边形
如图1,设网格边长为1,如何计算图中多边形面积?或许我们会考虑利用割补法来化简计算难度,甚至我们干脆使用勾股定理和余弦定理……但这都不是本文所要探讨的内容。以上例子中所探讨的问题,我们称之为求格点多边形的面积(格点多边形,即多边形顶点位于格点的多边形),我们有专门的计算公式,即——皮克定理(Pick's Theorem)
其中是格点多边形内部的点的个数,我们简称为内点数,是格点多边形边界点的个数,我们简称为边界点数。我们随后讨论该定理的证明。观察并欣赏此定理,有几个值得一提的事实:皮克定理既实用又富有理论价值。我们不需要余弦定理,只需要简单的计数,就连小朋友都可以得知平面不规则图形的面积。更进一步,我们利用此公式逼近闭曲线围城的面积,从而得到近似值;直观上讲,若网格越是细密,近似值就越精确,这当中蕴含着微积分的思想。铺垫:欧拉公式
图2:3个洞就是3亏格
使用平面图的欧拉公式证明相对来说比较简洁。刚好我在之前的文章中有证明过平面图的欧拉公式,感兴趣的读者可以阅读《从黄金多面体到欧拉特征》(点击文章题目查看)。我们顺便介绍一个更一般的公式——可定向闭曲面的欧拉公式
其中,表示有个“洞”的可定向闭曲面,例如图1中的圆环面,它只有一个“洞”,即。“洞”我们有个专有名词——亏格,我们下文仅仅需要用到亏格为的情况。公式中分别表示曲面上剖分的顶点数、棱数、面数。如图3,就是对圆环面的剖分;足球,则是用五边形与六边形对球面剖分。可定向闭曲面欧拉公式揭示了欧拉特征与曲面亏格之间的关系,这是数与形的美妙联系。图3:矩形剖分
图4
这是我们下面需要用到的引理,我们以列表的形式单独列出来。证明
法一
我们前文关注到格点多边形的面积是0.5的整数倍,这确实是一个很本质的洞见,这是因为——引理1 如果一个格点三角形内部和边上(除顶点外)都没有格点,则它的面积为.
引理2 设二阶整数矩阵
若逆矩阵也是整数矩阵,则其行列式必定取值为
图5:线性变换将平面上和两个基向量映射为红色、绿色的基向量
证明: 我们定义一个线性变换如上图,线性变换将正方形网格变成平行四边形网格,我们假设平行四边形四个顶点也落在整数格点上。显然,这个线性变换存在逆映射,由逆矩阵公式:
而行列式的几何意义恰恰就是平行四边形的有向面积,即三角形有向面积的2倍。于是,引理1中的三角形面积为图6:行列式与平行四边形面积
这意味着我们总可以将格点多边形拆分成面积为的小三角形,然后化为平面图,利用平面图的欧拉公式计算即可。我们考虑除去多边形外面的无界区域,设.这个三角剖分的顶点数是;面数也就是三角形数是;全体棱分两类:一部分是多边形边界上的,一共有条棱(封闭的折线边界上的个顶点就把边界分割成条棱);一部分是多边形内部的,每条棱都是两个面的交线,每个面有三条棱。计算棱的总数有等式,再加上欧拉公式,就解得法二
图7体现了第二种方法的证明思路:把格点图形包起来,变成一个圆环面,然后格点就是天然的剖分,借用闭曲面的欧拉公式。图7:将平行四边形粘接为圆环面
事实上,我们只需证明格点三角形符合公式即可。格点多边形总可以拆为若干格点三角形。多边形两边依照格点重合,则每个边界点重合为个内点,这依然符合公式。对任意格点三角形,考虑与之翻转对称的另一格点三角形,将两者沿任意一条边粘接,形成平行四边形的面积是原格点三角形的2倍。对该平行四边形两条对边同向粘接,其结果同胚于一圆环面。此时圆环面上的格点诱导出一个正方形网格剖分:原格点是剖分的顶点,临近格点间的连线是棱,正方形格子是面。设格点三角形的内点个数为,边界点个数. 以下是两三角形粘贴为平行四边形,再粘贴为圆环面的过程:
| 2个三角形 | 平行四边形 | 圆环面 |
---|
内点 | 2n
| 2n+x
| 2n+b-2
|
角点 | 6
| 4
| 0
|
非角点边界点 | 2b-6
| 2b-6-2x
| 0 |
:原来个内点始终是内点。设三角形重合边其上有个非角点边界点,重合后,个角点化为平行四边形个角点,非角点边界点损失个,合成的个点转化为圆环面的内点。:平行四边形所有的边界点化为圆环面的内点——个角点化为个内点,非角点边界点自我重合减半,故而圆环面的顶点个数:棱数为,因为每条棱对应两个顶点。格子的个数是面数,恰恰是所求的面积的倍,即. 由环面的欧拉公式(亏格)尾声
遗憾的是,皮克定理不能直接推广到高维的情况,也就是说:我们不能通过高维格点多面体的内点、边界点而计算其体积。如下图,位于单位正方体内的两个没有内点的四面体,它们有相同数量的边界点,但是它们的体积却并不相等,前者是,后者是 但是高维格点的研究并没有就此止步,埃哈特(Ehrhart)在1962年将皮克定理推广到高维空间,我们今后有机会为大家介绍。