首页 百科知识 双群双域四向水平倾角最小化圈绕并行凸壳新算法

双群双域四向水平倾角最小化圈绕并行凸壳新算法

时间:2022-10-17 百科知识 版权反馈
【摘要】:显然,本书第3章第3.6节所提出的双域四向水平倾角最小化圈绕串行凸壳算法,其左域、右域子凸壳的串行计算,完全可交由两个机群各自的并行计算来实现。第1-1步:子机群COW右在子分布域S右中,进行双向水平倾角最小化圈绕寻找子凸壳Q右各顶点的并行处理。

4.2 双群双域四向水平倾角最小化圈绕并行凸壳新算法

显然,本书第3章第3.6节所提出的双域四向水平倾角最小化圈绕串行凸壳算法,其左域、右域子凸壳的串行计算,完全可交由两个机群各自的并行计算来实现。

img58

图4.3 凸壳的初始极点、子分布域示意图

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

定义4.4 二维点集S={Pi(xi,yi)│1≤i≤m≥3}中,其Y轴坐标值最大、最小的两个最外点分别记为P(1)(x1,y1=min{yi(1≤i≤m≥3)}),P(2)(x2,y2=max{yi(1≤i≤m≥3)});这两个最外点P(1)、P(2),合称S的凸壳Q的初始极点,并记为Q上0、Q下0(意即:Q上0同为子分布域S、S的右上端的初始极点;同理,Q下0亦然)。连接Q上0、Q下0这两个点所得的直线,称为点集S分布域的分界基线(简称S基线);S基线将二维点集S分布域分为两个小区域S、S,称这两个小区域为二维点集S的子分布域(其示例如图4.3所示)。

定义4.5 不失一般性,二维点集S={Pi(xi,yi)│1≤i≤m≥3}的凸壳Q的初始顶点Q上0、Q下0,还可分别记为Q右上,0、Q右下,0或者Q左上,0、Q左下,0。在S的子分布域S中,分别过S的子凸壳Q的当前新顶点Q右下,j、Q右上,j(0≤j≤m),所做平行X轴正方向的同向顶点射线Q右下,jL右下,j和Q右上,jL右上,j,称为顶点Q右下,j、Q右上,j的正向射线。正向射线Q右下,jL右下,j、Q右上,j L右上,j分别按逆时针方向(简称A向)、顺时针方向(简称B向)绕行到点Pj(xj,yj)∈S所成夹角∠PiQ右下,jL右下,j、∠PiQ右上,j L右上,j,分别称为点Pj(xj,yj)对正向射线Q右下,jL右下,j的A向水平倾角、正向射线Q右上,jL右上,j的B向水平倾角。同理,在S的子分布域S中,可定义点Pr(xr,yr)∈S对正向射线Q左上,k L左上,k(0≤k≤m)的A向水平倾角∠PrQ右上,kL右上,k、正向射线Q左下,kL左下,k(0≤k≤m)的B向水平倾角∠PrQ左下,kL左下,k

据此,作者在2007年进一步提出了基于机群的双群(即其机群分为两个子机群)、双域(即其数据分布域分为两个子分布域)、四向(即其分布域凸壳顶点的寻找方向,各域自分为顺时针、逆时针两个寻找方向)水平倾角最小化圈绕并行凸壳新算法。其主要算法思想可简要概述如下:

第0步:并行初始化处理。

(1)“寻找分布域S的Y轴坐标值最大、最小的最外点”的双群并行处理:

① 标记构成所论机群COW的两个子机群为COW、COW;分别标记子机群COW、COW下属各处理机的总数为n、n;分别标记子机群COW、COW下属各处理机为Pj(1≤j≤n)、Pk(1≤k≤n);设定初始分布域S={Pi(xi,yi)│1≤i≤m≥3}中各点的X轴坐标取值的最大、最小可能值分别为xmax、xmin

② 并行地使子机群COW下属各处理机Pj(1≤j≤n),对“把初始分布域S按初始带宽WS宽(=(xmax−xmin)/(n+ n))作带状划分所得的”各自初始子分布域S右初j(1≤j≤n)内各点,如果初始子分布域S右初j非空,则找出S右初j内各点的Y轴坐标值最大、最小的两个最外点;再从所得各初始子分布域S右初j(1≤j≤n)的全部最外点中,找出各S右初j的并集构成的右初始分布域S右初的Y轴坐标值最大、最小的两个最外点。

③ 并行地使子机群COW下属各处理机P左k(1≤k≤n),对“把初始分布域S按初始带宽WS宽作带状划分所得的”各自初始子分布域S左初k(n+1≤k≤n+n)内各点,如果初始子分布域S左初k非空,则找出S左初k内各点的Y轴坐标值最大、最小的两个最外点;再在所得各初始子分布域S左初k(n+1≤k≤n+n)的全部最外点中,找出各S左初k的并集构成的左初始分布域S左初的Y轴坐标值最大、最小的两个最外点。

④ 使子机群COW、COW联合在右、左初始分布域S右初、S左初的Y轴坐标值最大、最小的4个最外点中,并行地找出初始分布域S的Y轴坐标值最大、最小的两个最外点,并分别记为P(1)(x1,y1=max{yi(1≤i≤m≥3)}),P(2)(x2,y2=min{yi(1≤i≤m≥3)});该最外点P(1)、P(2)即为S的凸壳Q的初始极点(或顶点),并记为Q上0、Q下0

(2)“构造分布域S的两个(即左、右)子分布域”的双群并行处理:

① 并行地分别使子机群COW、COW连接初始顶点Q上0、Q下0,生成初始分布域S的分界基线,以分划出供后续并行处理的二维点集S分布域的两个子分布域S、S

② 并行地分别使子机群COW、COW,各自只挑选和保留子分布域S、S内各点数据;分别求出(“分别用处理机的总数n右、n左,对子分布域S右、S左中全部点各自进行按带状划分”所需的)子域S右j(1≤j≤n)、S左j(1≤j≤n)的带宽W右宽=(max{xi│xi∈S}−min{xi│xi∈S} )/ n、W左宽=(max{xi│xi∈S}−min{xi│xi∈S} )/ n

第1步:“子机群COW、COW分别在子分布域S、S中生成子凸壳Q、Q各顶点”的并行化处理。

第1-1步:子机群COW在子分布域S中,进行双向水平倾角最小化圈绕寻找子凸壳Q各顶点的并行处理。

第1-1-1步:“子机群COW双向圈绕寻找子凸壳Q下一对新顶点”的并行处理:

第1-1-1-1步:初始子分布域S仍标记为当前子分布域S;标记初始顶点Q上0、Q下0为当前新顶点对Q右上,0、Q右下,0;置(当前新顶点对的序号计数器)r初值为0。

第1-1-1-2步:并行地使子机群COW下属各处理机P右j(1≤j≤n),用带宽W右宽把当前子分布域S带状划分为n个子分布域S右j(1≤j≤n)。

第1-1-1-3步:并行地使子机群COW下属各处理机P右j各在自己的子分布域S右j(1≤j≤n)的全部点中,均以Q右上,r、Q右下,r为当前新顶点,求出其双向圈绕水平倾角最小化的A向、B向最小点P右jA、P右jB;在所得各组A向、B向最小点P右jA、P右jB(1≤j≤n)中,找出当前子分布域S的A向、B向最小点P右A、P右B;置r为r+1,并使P右A、P右B作为子凸壳Q的下一对新顶点Q右上,r、Q右下,r

第1-1-2步:删除由“所得凸壳当前次新顶点对Q右上,r−1、Q右下,r−1、最新顶点对Q右上,r、Q右下,r(Q右上,r、Q右下,r可能合而为一)所构成子凸壳Q右上,r−1Q右下,r−1Q右下,r Q右上,r的内点”的分布域极小化并行处理:

第1-1-2-1步:如果最新顶点对Q右上,r、Q右下,r不合二为同一点,则:并行地使子机群COW下属各处理机P右j(1≤j≤n),用带宽W右宽=(max{xi│xi为子凸壳Q右上,r−1Q右下,r−1Q右下,rQ右上,r内的点}−min{xi│xi为子凸壳Q右上,r−1Q右下,r−1Q右下,r Q右上,r内的点})/ n),把子凸壳Q右上,r−1Q右下,r−1Q右下,r Q右上,r所在区域QQ带状划分为n个等宽子区域QQ右j(1≤j≤n);

否则转而执行第1-1-3步。

第1-1-2-2步:并行地使子机群COW下属各处理机P右j(1≤j≤n),各自删除在自己的子区域QQ右j(1≤j≤n)中的全部点。

第1-1-2-3步:把删除QQ中全部点后的原子分布域S,仍标记为当前子分布域S;若当前子分布域S非空(即还有未找出的凸壳顶点),则回到第1-1-1-2步,否则转而执行第1-1-3步。

第1-1-3步:子凸壳Q的全部顶点标记处理:顺次标记已求得的子凸壳Q全部顶点。

第1-2步:与上述第1-1步的处理方法同理,子机群COW在子分布域S中进行双向水平倾角最小化圈绕寻找子凸壳Q各顶点的并行化处理。

第1-2-1步:“子机群COW双向圈绕寻找子凸壳Q下一对新顶点”的并行处理:

第1-2-2步:删除由“所得凸壳当前次新顶点对Q左上,r−1、Q左下,r−1、最新顶点对Q左下,r、Q左上,r(Q左下,r、Q左上,r可能合而为一)所构成子凸壳Q左上,r−1Q左下,r−1Q左下,r Q左上,r的内点”的分布域极小化并行处理:

第1-2-3步:子凸壳Q的全部顶点标记处理:顺次标记已求得的子凸壳Q全部顶点。

(注:因与上述第1-1步及其第1-1-1步、第1-1-2步、第1-1-3步的处理原理、方法、步骤、操作等极其类同,故除第1-1步中的“右、左、A向、B向”需对应改为第1-2步中的“左、右、B向、A向”外,第1-2步及其第1-2-1步、第1-2-2步、第1-2-3步的其他处理与操作均可从略)。

第2步:“将子机群COW、COW所得子凸壳Q、Q各顶点”组合为所求凸壳Q的全部顶点处理。即顺序把上述已得子凸壳Q、Q各顶点,依次两两连接而最后所得凸多边形Q,必定是所求二维点集S的凸壳Q。

显然,基于机群的双群、双域、四向水平倾角最小化圈绕并行凸壳新算法,其正确性是无容置疑的。它不仅在时间、空间复杂度与效率上均优于现行的串行卷包裹凸壳算法、格雷厄姆凸壳算法、折半分治凸壳算法、双域四向水平倾角最小化圈绕凸壳算法等凸壳串行算法;而且,便于推广到基于机群的m群、n域、p向(m>2,n>2,p>2)的并行凸壳新算法研究,以进一步改进和提高二维凸壳生成速度。

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

我要反馈