欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。
算法提出
在论文中提到一个结论:
对于任意点集P(n个点), 里面的点不同时分部在一条直线上,则至少有一个三角剖分解。
证明:可以使用构造法来证明。
先对所有点进行字典序排序(先按照X坐标排序,X坐标相同则按照Y坐标排序)。
取出最少的前m个点,使得m个点至少有一个与其他m-1个点不共线。
接下来依次加入下面的n-m个点。每加入一个点pi,就去连接之前已经构建好的凸包的边界顶点(可以从pi观察可见如上图(b)所示)。加完所有剩下的点,三角化就完成了。
正确性证明
对于上述步骤需要说明3点:
- 剩下n-m个点,每次加入的点都在之前凸包的外面。
红点为已经构成凸包的点,pi-1