笔者的研究表明:由周启海教授提出的凸壳算法时间复杂度基本定理,不仅是完全必要的、十分正确的;而且澄清了国内外凸壳算法研究学术界的若干误识。
凸壳算法时间复杂度基本定理 记二维点集S={P(ixi,yi)│1≤i≤m,3≤m<∞}由给定平面内的点构成,Q是S的凸壳,Qi∈S是凸壳Q的各顶点(i=1,2,…,n),SQ={Qi│Qi∈S,i=1,2,…,n}是凸壳Q的顶点集。假设“找出二维点集S的凸壳Q各顶点所构成的凸壳Q顶点集SQ”的生成凸壳顶点子算法1的时间复杂度为T1(m),而“使凸壳Q顶点集SQ中各顶点,按照凸壳Q各顶点自然顺序的有序化排序”的凸壳顶点排序子算法2的时间复杂度为T2(n);那么,求解凸壳问题的凸壳算法时间复杂度T(m)=T1(m)+T2(n)。
证明:首先,生成凸壳顶点子算法1的处理结果数据集(即Qi∈S是凸壳Q的各顶点,i=1,2,…,n),显然必定为凸壳顶点排序子算法2处理的输入数据集。
其次,生成凸壳顶点子算法1的处理,总不依赖凸壳顶点排序子算法2的处理及其处理结果,故生成凸壳顶点子算法1的时间复杂度T1(m)必与凸壳顶点排序子算法2的时间复杂度T2(n)无关。反之,凸壳顶点排序子算法2的处理,则必定依赖生成凸壳顶点子算法1的处理及其处理结果,故凸壳顶点排序子算法2的时间复杂度T2(n)与生成凸壳顶点子算法1的时间复杂度T1(m)有关;例如一种可能出现的极端情形是:如果生成凸壳顶点子算法1所得处理结果,恰好就是二维点集S的凸壳Q的有序化各顶点,则无需对凸壳Q的各顶点进行凸壳顶点排序子算法2的有序化处理,故凸壳顶点排序子算法2的时间复杂度T2(n)此时可为零,即凸壳顶点排序子算法2的时间复杂度T2(n)的下界可能为O(1)。
因此,无论何种情况下,求解凸壳问题的凸壳算法时间复杂度必有:T(m)=T1(m)+T2(n)。证毕。
图5.2 凸壳的顶点集与内点集结构示意图
定理5.1 若二维点集S={Pi(xi,yi)│1≤i≤m,3≤m<∞}由给定平面内的点构成,Q是S的凸壳,Qi∈S是凸壳Q的各顶点(i=1,2,…,n),SQ={Qi│Qi∈S,i=1,2,…,k,k+1,k+2,…,n−2,n−1,n}是凸壳Q的顶点集;则“使凸壳Q顶点集SQ中各顶点,按照凸壳Q各顶点自然顺序的有序化排序”,等价于对凸壳顶点的升序(或降序)排序处理。
证明:不失一般性,可设如图5.2所示,已知二维点集S={Pi(xi,yi)│1≤i≤m,3≤m<∞}的凸壳为Q,凸壳Q的顶点集为SQ={Qi│Qi∈S,i=1,2,…,k,k+1,k+2,…,n−2,n−1,n};顶点Q1(x1,y1)、Qk(xk,yk)分别为凸壳Q的最左顶点、最右顶点,称线段Q1Qk为凸壳Q的横向直径;称横向直径Q1Qk所划分出的多边形Q1Q2Q3…Qk−2Qk−1Qk为凸壳Q的下子凸壳Q下,称横向直径Q1Qk所划分出的多边形Q1QkQk+1 Qk+2…Qn−2Qn−1Qn为凸壳Q的上子凸壳Q上。
(1)把凸壳Q的上子凸壳Q上(含其各顶点、内点),整体平移映射对接到凸壳Q的下子凸壳Q下的上方,且使上子凸壳Q上的最左顶点Q1平移到下子凸壳Q下的最右顶点Qk处,如图5.3所示。
图5.3 凸壳的上凸壳平移对接到下子凸壳的右上方示意图
平移对接后,可施行如下一一映射:
若记dx=xk−x1,dy=yk−y1;则平移映射上凸壳Q′上的亚顶点Q′i(x′i,y′i)与原上凸壳Q上的顶点Qi(xi,yi)的X坐标值之间,必满足一一映射的亚顶点平移关系式
(2)把凸壳Q的平移映射上凸壳Q′ 上(含其各顶点、内点),以x= xk为对称轴,镜像映射对称到凸壳Q的下子凸壳Q下的右侧方,且使平移映射上凸壳Q′的最右顶点Q′k映射为下子凸壳Q下的最左顶点Qk处,而平移映射上凸壳Q′的最左顶点Q′1映射为下子凸壳Q下的最左顶点Q1的镜像点处,如图5.4所示。
图5.4 凸壳的上凸壳镜像对称到下子凸壳的右侧方示意图
若记D=x1+x′k+dx=x1+(xi+dx)+dx=x1+xk+2dx;则镜像映射准顶点Q″i(x″i,y″i)必满足一一映射的准顶点镜像(以x= xk为对称轴)关系式
x″i = D−x′i =(x1+xk+2dx)−(xi+dx)=x1+xk+dx−xi
y″i = y′i−dy =(yi+dy)−dy = yi
显然,对各准顶点Q″i(x″i,y″i)按其x坐标x″i的升序(或降序)排序处理所得结果——“有序化准顶点序列”,必同构于凸壳Q各顶点的X坐标xi自然顺序有序化结果。
(3)再经逆变换xi = x1+xk+dx−x″i处理后,就可把“有序化准顶点序列中各准顶点Q″i(x″i,y″i)(注意:实际上,它已为Q″i(x″i,yi)),还原为已按照凸壳Q顶点自然顺序有序化的各原顶点Qi(xi,yi)——“有序化凸壳顶点序列”。这表明:对凸壳Q各顶点自然顺序的有序化排序,必等价于对各准顶点Q″i(x″i,y″i)的X坐标值x″i的升序(或降序)排序处理。
因此,定理5.1成立。证毕。
依据此凸壳算法时间复杂度基本定理和定理5.1,可有如下重要推论。
推论5.1(内点全无推论) 在凸壳算法时间复杂度基本定理中,如果二维点集S均由凸壳Q各顶点构成,即m=n;则求解此时的凸壳问题,其凸壳算法时间复杂度必为T(n)=T1(n)+ T2(n),其下界为T1(n)+O(n log n)。
证明:即使二维点集S均由凸壳Q各顶点构成,但一般说来,对于S中各点究竟是否为凸壳Q的顶点,显然只有经生成凸壳顶点子算法1处理完后,方能最后确定。此时,生成凸壳顶点子算法1的时间复杂度为T1(n),通常是不可忽略的。凸壳顶点排序子算法2的时间复杂度为T2(n),而T2(n)的一般情况时的下界为排序算法的已知下界 O(n log n)。因此,求解此时的凸壳问题,其凸壳算法时间复杂度下界必为T(n)=T1(n)+T2(n),其下界为T1(n)+O(n log n)。证毕。
应当指出,推论5.1已清楚地表明:
(1)因为生成凸壳顶点子算法1的时间复杂度T1(n),独立于凸壳顶点排序子算法2的时间复杂度T2(n),且通常是不可忽略的;所以,国内外凸壳算法研究学术界迄今为止所公认的凸壳算法时间复杂度下界为“T(n)=O(n log n)”,原来只不过是对“T(n)= T1(n)+O(n log n)”的一种误解,或者充其量只能算是对“T(n)= T1(n)+O(n log n)”的一种大误差的近似。
(2)凸壳算法效率的有效提高(甚至大幅提高),不仅可能,而且必能(顺便指出:这正是周启海教授率领其创新研究团队,坚定不移地致力于凸壳算法同构化创新的理论基础与成功保障)。
推论5.2(内点过重推论) 在凸壳算法时间复杂度基本定理和定理5.1中,如果二维点集S中,其凸壳Q的内点远多于顶点,即m>>n,且两者子算法之时间复杂度T1(m)>>T2(n);则求解此时的凸壳问题,其算法时间复杂度下界必不取决于T2(n)=O(n log n),而主要取决于T1(m)。
此推论5.2的正确性是无容置疑和显而易见,故毋需赘述其证明。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。