欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。
最大化最小角
推论
有点集P是一般点集(没有多点共线,没有4点共圆),那么该点集的delauney三角后的最小角不小于其他非delauney三角化后的最小角。
有序角
为了证明上述推论,先给出一些概念定义。
对于P点集的任意三角化T, A(T) 为所有角的有序数组。
A ( T ) = ( α 1 , α 2 , . . . , α 3 m ) , m 是三角形个数 A(T) = (\alpha_1, \alpha_2,..., \alpha_{3m}), m是三角形个数 A(T)=(α1,α2,...,α3m),m是三角形个数
T’为P点集的另一个三角化
A ( T ) < A ( T ′ ) 当且仅当存在 i , 使得 α i < α i ′ 且 α j = α j ′ ( j < i ) A(T)< A(T') 当且仅当存在i, 使得 \alpha_i<\alpha_i' 且 \alpha_j=\alpha_j' (j<i) A(T)<A(T′)当且仅当存在i,使得αi<αi′且αj=αj′(j<i)
有序角最大
引理
有点集P是一般点集(没有多点共线,没有4点共圆),D*为该点集的delauney三角化,T为任意三角化,则A(T)<=A(D*)
根据lawson flip 算法我们知道,从普通三角化到delauney三角化可以使用flip不满足空圆性的边来实现。
可以从flip对角的影响来证明。
证明:
上图中左边pqrs 四点共圆,根据圆周角定理,所有名称相同的角都是相等的。
右图中名称与左图相同的角意味着角是相等的,上划线代表大于,下划线代表小于。
右图通过虚线的辅助线,可以知道
α 4 — > α 4 , α 3 — > α 3 , α 1 — < α 1 , α 2 — < α 2 \overset{—}{\alpha_4}>\alpha_4, \overset{—}{\alpha_3}>\alpha_3, \underset{—}{\alpha_1}<\alpha_1, \underset{—}{\alpha_2}<\alpha_2 α4—>α4,α3—>α3,—α1<α1,—α2<α2
我们列举一下flip前(不满足空圆性)的角:
α 1 + α 2 , α 3 , α 4 , α 2 — , α 1 — , α 3 — + α 4 — \alpha_1+\alpha_2,\alpha_3,\alpha_4, \underset{—}{\alpha_2}, \underset{—}{\alpha_1},\overset{—}{\alpha_3}+\overset{—}{\alpha_4} α1+α2,α3,α4,—α2,—α1,α3—+α4—
flip后的角:
α 1 , α 2 , α 3 — , α 4 — , α 2 — + α 3 , α 1 — + α 4 \alpha_1, \alpha_2,\overset{—}{\alpha_3},\overset{—}{\alpha_4},\underset{—}{\alpha_2}+\alpha_3,\underset{—}{\alpha_1}+\alpha_4 α1,α2,α3—,α4—,—α2+α3,—α1+α4
可以发现flip后的所有都可以找到flip之前比自己小的角。
α 1 > α 1 — α 2 > α 2 — α 3 — > α 3 , α 4 — > α 4 , α 2 — + α 3 > α 3 α 1 — + α 4 > α 4 \begin{array}{c} \alpha_1> \underset{—}{\alpha_1}\\ \alpha_2> \underset{—}{\alpha_2}\\ \overset{—}{\alpha_3}>\alpha_3,\\ \overset{—}{\alpha_4}>\alpha_4,\\ \underset{—}{\alpha_2}+\alpha_3>\alpha_3\\ \underset{—}{\alpha_1}+\alpha_4>\alpha_4 \end{array} α1>—α1α2>—α2α3—>α3,α4—>α4,—α2+α3>α3—α1+α4>α4
所以每次有效的flip都会提升最小角。
增大A(T).
引理得证。
根据有序角最大,最小角也是最大的。
本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。创作不易,帮忙点击公众号的链接。