为了避免遗忘 写文章记录一个小结论的证明过程
《计算几何 算法与应用》第三版 Mark de Berg
Otfried Cheong Marc van Kreveld Mark Overmars著 邓俊辉译 清华大学出版社 p252页提到一个小结论 2 n e > = 3 n f 2ne>=3nf 2ne>=3nf
这个结论不是显然的 但证明也不难 证明如下
考虑平面上由一系列多边形彼此拼接形成的区域R,R由这些多边形组成,设这些多边形为Li i<=i<=n Li之间是完全拼接的即Li的边是两个多边形的公共边,或不是公共边,且若两边如果有交集则交集只能是一点,且该点必须是这两条边的端点,另外两边可以没有交集
L i Li Li的边数记为 L i . e d g e n u m Li.edgenum Li.edgenum 设包围整个R最外侧的边(即 L i Li Li 1 < = i < = n 1<=i<=n 1<=i<=n 所有的边中只与其中一个多边形关联的边)构成的多边形为 L o Lo Lo L o . e d g e n u m Lo.edgenum Lo.edgenum 是 L o Lo Lo的边数
我们断言 ∑ i = 1 n L i . e d g e n u m + L o . e d g e n u m = 2 ∗ n e \sum_{i =1}^{n}{Li.edgenum} + L_{o}.edgenum = 2*n_{e} ∑i=1nLi.edgenum+Lo.edgenum=2∗ne n e n_e ne为所有 L i Li Li的边的并集 U e Ue Ue中的总边数
事实上考虑任意一条边 e e e, e e e属于 U e Ue Ue并且 e e e不是 L o Lo Lo的边,于是恰和两个多边形Ld1, Ld2关联,显然由于在对所有 L i Li Li中非Ld1, Ld2的多边形的边数求和时,由于这些多边形并不关联 e e e,所以对这些多边形边数的求和不会计入 e e e,而对Ld1 Ld2的边数求和时恰被计入两次,因此对所有 L i Li Li的边数求和只会把 e e e计入两次,由 e e e的任意性可知对所有 L i Li Li的边数求和每一个 e e e都恰好被计入两次,另外不难发现 L o Lo Lo的每一条边恰被计入一次 而每一个 e e e和 L o Lo Lo中的所有边恰为 U e Ue Ue因此
设所有 e e e的总数为 N u m e Nume Nume 于是我们有 2 ∗ N u m e + L o . e d g e n u m = ∑ i = 1 n L i . e d g e n u m 2*Nume+ L_{o}.edgenum = \sum_{i =1}^{n}{Li.edgenum} 2∗Nume+Lo.edgenum=∑i=1nLi.edgenum
从而 2 ∗ N u m e + 2 ∗ L o . e d g e n u m = ∑ i = 1 n L i . e d g e n u m + L o . e d g e n u m 2*Nume + 2* L_{o}.edgenum = \sum_{i =1}^{n}{Li.edgenum} + L_{o}.edgenum 2∗Nume+2∗Lo.edgenum=∑i=1nLi.edgenum+Lo.edgenum
而由于每一个 e e e和 L o Lo Lo中的所有边恰为 U e Ue Ue因此 N u m e + L o . e d g e n u m = n e Nume + L_{o}.edgenum = n_{e} Nume+Lo.edgenum=ne 结合上式即得 ∑ i = 1 n L i . e d g e n u m + L o . e d g e n u m = 2 ∗ n e \sum_{i =1}^{n}{Li.edgenum} + L_{o}.edgenum = 2*n_{e} ∑i=1nLi.edgenum+Lo.edgenum=2∗ne
另外 L i . e d g e n u m > = 3 {Li.edgenum} >=3 Li.edgenum>=3 L o . e d g e n u m > = 3 L_{o}.edgenum >= 3 Lo.edgenum>=3 因此由上式知 2 ∗ n e > = 3 ∗ ( n + 1 ) 2*n_{e} >= 3*(n+ 1) 2∗ne>=3∗(n+1)
由开头所提教材中f的定义, f f f即为每一个 L i Li Li和 L o Lo Lo, n f nf nf即为所有 L i Li Li,和 L o Lo Lo的总数即为 n + 1 n+1 n+1因此由上式 2 ∗ n e > = 3 ∗ n f 2*n_{e} >= 3*n_{f} 2∗ne>=3∗nf
证毕