首页 百科知识 动态基线倾角最大化圈绕凸壳算法描述

动态基线倾角最大化圈绕凸壳算法描述

时间:2024-10-17 百科知识 版权反馈
【摘要】:显然,本文提出的动态基线最大倾角的凸壳新算法,不仅在时间、空间复杂度与效率上,均优于现行卷包裹凸壳算法、格雷厄姆凸壳算法、折半分治凸壳算法等传统凸壳算法,且很容易改造为并行化算法。因此,它将有效提高二维凸壳生成速度。

3.2.1 动态基线倾角最大化圈绕凸壳算法描述

定义3.1 二维点集S={Pi(xi,yi)│1≤im<+∞,m≥3}中各点的位置分布区域,称为S分布域。

定义3.2 二维点集S={Pi(xi,yi)│1≤im<+∞,m≥3}中,其X轴、Y轴坐标值最大、最小的四个最外点分别记为P(1)(x1=min{xi│1≤i≤m,3≤m<+∞},y1),P(2)(x2,y2=min{yi│1≤i≤m,3≤m<+∞}),P(3)(x3=max{xi│1≤i≤m,3≤m<+∞},y3),P(4)(x4,y4=max{yi│1≤i≤m,3≤m<+∞});这四个最外点P(1),P(2),P(3),P(4),合称二维点集S的凸壳Q的初始极点,并记为Q1,0,Q2,0,Q3,0,Q4,0。直线Q1,0Q3,0与直线Q2,0Q4,0,称为凸壳Q的分划线,两分划线的交点Q0称为凸壳Q的远心;这两条分划线所分划出的二维点集S分布域的四个小区域Ⅰ、Ⅱ、Ⅲ、Ⅳ,合称二维点集S的子分布域。凸壳Q的最新相邻两顶点所构成线段称为基线(如图3.2所示)。

图3.2 凸壳的初始极点、子分布域及其基线倾角最大化算法示意图

据此,作者提出动态基线倾角最大化凸壳新算法。其算法思想可构造性描述如下:

第0步:初始化处理。

(1)“构造布域S的初始点”处理:二维点集S={Pi(xi,yi)│1≤i≤m,3≤m<+∞}中,其Y轴坐标值最小的点记为P(1)

(2)“分布域及其子分布域初始极小化”处理:在分布域S中,删除位于以分划线为对角线的四边形Q1,0Q2,0Q3,0Q4,0(注意:它可能退化为三角形Q1,0Q2,0Q3,0)中的所有内点,并仍记为S。

第1步:标记子分布域Ⅰ为S1。以Q1,0为初始极点,以Q1,0Q2,0为初始基线,寻找凸壳Q在子分布域S1中的各极点(即各顶点。显然,最紧邻两极点必顺次构成凸壳Q的一条边)。即

(1)“寻找下一新极点(即顶点)”处理:当S1中尚有未处理点P1,j∈S1时,找出点P1,j与当前子分布域S1中的基线Q1,kQ2,0倾角最大(即满足∠Q2,0Q1,kPi=max{∠Q2,0Q1,kP1,j|P1,j∈S1})的最大倾角点Pi(注:若有多个最大倾角点,则只取最远处的那个最大倾角点,即离当前最大倾角顶点Q1,k最远的那个最大倾角点);顺次标记极点Pi为新顶点Q1,k+1,k≥0。

(2)“子分布域S1极小化”处理:在S1中,删除位于当前基线三角形Q2,0Q1,kQ1,k+1中的所有内点,并仍记为S1;以Q2,0Q1,k+1为求下一极点的新基线,并仍记为Q2,0Q1,k。回到本步(1)。

第2步:标记子分布域Ⅱ为S1。以Q2,0为初始极点,以Q2,0Q3,0为初始基线,寻找凸壳Q在子分布域S1中的各极点。即

(1)当S1中尚有未处理点P2,j∈S1时,找出与当前子分布域S1中的基线Q2,kQ3,0倾角最大(即满足∠Q3,0Q2,kPi=max {∠Q3,0Q2,kP2,j|P2,j∈S1})的最大倾角点Pi;顺次标记极点Pi为新顶点Q2,k+1,k≥0。

(2)在S1中,删除位于当前基线三角形Q3,0Q2,kQ2,k+1中的所有内点,并仍记为S1;以Q3,0Q2,k+1为求下一极点的新基线,并仍记为Q3,0Q2,k。回到本步(1)。

第3步:标记子分布域Ⅲ为S1。以Q3,0为初始极点,以Q3,0Q4,0为初始基线,寻找凸壳Q在子分布域S1中的各极点。即

(1)当S1中尚有未处理点P3,j∈S1时,找出与当前子分布域S1中的基线Q3,kQ4,0倾角最大(即满足∠Q4,0Q3,kPi=max{∠Q4,0Q3,kP3,j|P3,j∈S1})的最大倾角点Pi;顺次标记极点Pi为新极点Q3,k+1,k≥0。

(2)在S1中,删除位于当前基线三角形Q4,0Q3,kQ3,k+1中的所有内点,并仍记为S1;以Q4,0Q3,k+1为求下一极点的新基线,并仍记为Q4,0Q3,k。回到本步(1)。

第4步:标记子分布域Ⅳ为S1。以Q4,0为初始极点,以Q4,0Q1,0为初始基线,寻找凸壳Q在子分布域S1中的各极点。即

(1)当S1中尚有未处理点P4,jS∈1时,找出与当前子分布域S1中的基线Q4,kQ1,0倾角最大(即满足∠Q1,0Q4,kPi=max{∠Q1,0Q4,kP4,j|P4,j∈S1})的最大倾角点Pi;顺次标记极点Pi为新顶点Q4,k+1,k≥0。

(2)在S1中,删除位于当前基线三角形Q1,0Q4,kQ4,k+1中的所有内点,并仍记为S1;以Q1,0Q4,k+1为求下一极点的新基线,并仍记为Q1,0Q4,k。回到本步(1)。

结束步:顺序把分布域中Ⅰ、Ⅱ、Ⅲ、Ⅳ所得各顶点,依次两两连接而得到的凸多边形Q,必定是所求二维有限点集S的凸壳Q。

显然,本文提出的动态基线最大倾角的凸壳新算法,不仅在时间、空间复杂度与效率上,均优于现行卷包裹凸壳算法、格雷厄姆凸壳算法、折半分治凸壳算法等传统凸壳算法,且很容易改造为并行化算法。因此,它将有效提高二维凸壳生成速度。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈