凸壳问题的计算时间下界
- 格式:docx
- 大小:36.68 KB
- 文档页数:2
凸包算法模型想象在⼀个平⾯上钉下了n个钉⼦。
现在有⼀根橡⽪筋,我们把它撑开,期望在松⼿之后橡⽪筋可以收缩,包住所有的n个钉⼦。
事实上,这正是⼀个凸包。
如下图:引⼊凸包的概念:凸包,定义为周长最⼩的包含点集中所有点的凸多边形。
即使存在某个凹多边形的周长与凸包相等且可以包含所有点,这个凹多边形也⼀定不是凸包。
如下图,这个凹多边形不是该点集的凸包:凸包问题属于计算⼏何,通常可以使⽤Andrew,Graham,Jarvis,斜率逼近等算法求解。
本⽂将着重介绍其中思想通俗、代码简单的Andrew算法。
由于求解凸包需要⼀些前置的计算⼏何知识,本⽂将会介绍⼀些基础计算⼏何知识。
前置知识引进向量的概念。
在数学中,向量指同时具有⼤⼩和⽅向的量,与之相对的量称为数量。
数量只有⼤⼩,没有⽅向。
向量可以⽤⼀条带箭头的线段来形象地表⽰:箭头代表⽅向,线段的长度代表向量的⼤⼩。
如果向量的起点为A,终点为B,则这个向量可以记作→ab。
两个向量→x1,y1和→x2,y2的外积称之为叉积,它的结果是⼀个向量。
叉积的计算⽅法是 (x1y2)−(x2y1) ,记为→x1,y1×→x2,y2。
对于两个向量→ab,→bc,如果它们的叉积>0 ,说明→ab在→bc的顺时针⽅向;如果它们的叉积=0,说明→ab和→bc共线;如果它们的叉积<0,说明→ab在→bc的逆时针⽅向。
算法思想凸包Andrew算法的思想⾮常简单。
我们⾸先把点集按照以x坐标为第⼀关键字,以y坐标为第⼆关键字的⽅式进⾏双关键字从⼩到⼤排序,排序后的第⼀个点就是我们选出的极点。
两个关键字的顺序可以调换。
如下图,点 1 就是该点集的极点。
接着,我们从极点开始逆时针考虑将每⼀个点都加⼊凸包。
显然我们排序后的第⼀个点和最后⼀个点⼀定在凸包上。
从第⼆个点开始,我们假设当前点可以加⼊凸包。
设凸包上此时有m个点,第m−1 个点和第m个点分别是a,b,当前要加⼊凸包的点为c。
halcon 凸壳运算-回复什么是凸壳运算?凸壳运算(Convex Hull Operation)是一种在计算机视觉和图像处理领域中常用的几何变换方法。
它通常用于提取二维图像或点云数据中的凸多边形边界,无论是在形状分析、目标检测还是场景重建中,凸壳运算都有广泛的应用。
在凸壳运算中,我们所关注的是一个包围一组点的最小凸多边形,也就是将给定的点集合的外围轮廓封闭起来的最小凸包。
这个凸多边形的顶点是给定点集的子集,且连接这些顶点的线段不会超出其他点。
在图像处理中,凸壳运算可以用来求解物体的边界以及计算物体的面积、周长等特征。
在计算机视觉中,使用凸壳运算可以帮助我们进行目标的形状分析、目标检测以及图像的分割等任务。
此外,在计算机图形学中,凸壳运算还可以用于场景重建、虚拟现实等应用。
凸壳运算的三种方法:在凸壳运算中,存在三种常用的算法,它们分别是:Graham扫描算法、快速增量算法和欧几里得算法。
下面我将分别介绍这三种算法的原理和步骤。
1. Graham扫描算法Graham扫描算法是一种经典的凸壳求解算法。
它的基本原理是选取一个点作为起点(通常是给定点集中最下方的点),然后按照顺时针或逆时针的方式对点进行排序。
接下来,算法使用一个栈来存储凸壳的边界点,栈的初始状态为空。
然后依次处理排序后的点集,对于每个点,依次与栈中的点进行相互连线,并判断当前连线与栈顶元素与栈次顶元素构成的连线之间的夹角。
如果连线的方向和夹角满足逆时针旋转,则将当前点入栈;否则,将栈顶元素出栈。
最后,栈中剩余的点即为凸壳的顶点。
2. 快速增量算法快速增量算法是解决凸壳问题的另一种高效算法。
它的基本思想是从上下左右四个方向选择凸壳的点,分别称为上壳、下壳、左壳和右壳。
首先,将给定点集按照x坐标从小到大进行排序,并将最左边的点设定为第一个凸壳点,将最右边的点设定为第一个凸壳点。
接下来,分别从上述四个方向开始,依次找到凸壳的点。
以从左到右的上壳为例,从左侧的第一个点开始,通过比较两个点之间的斜率来确定是否为凸壳的点。
算法——蛮⼒法之最近对问题和凸包问题 上次的博客写到⼀半宿舍停电了。
然⽽今天想起来补充完的时候发现博客园并没有⾃动保存哦,微笑。
最近对问题 ⾸先来看最近对问题,最近对问题描述的就是在包含n个端的集合中找到距离最近的两个点,当然问题也可以定义在多维空间中,但是这⾥只是跟随书上的思路实现了⼆维情况下的最近对问题。
假设所有讨论的点是以标准的笛卡尔坐标形式(x,y)给出的,那么在两个点P i=(X i,Y i)和P j=(X j,Y j)之间的距离是标准的欧⼏⾥得距离: d(P i,P j)=sqrt( (X1-X2)2+(Y1-Y2)2 )蛮⼒法的思路就是计算出所有的点之间的距离,然后找出距离最⼩的那⼀对,在这⾥增加效率的⼀种⽅式是只计算点下标 i<j 的那些对点之间的距离,这样就避免了重复计算同⼀对点间距离。
下⾯是蛮⼒法解决最近对问题的算法:使⽤蛮⼒法求平⾯中距离最近的两点BruteForceClosetPoints(P)//输⼊:⼀个n(n≥2)的点的列表P,P i=(X i,Y i)//输出:距离最近的两个点的下标index1和index2dmin <— ∞for i <— 1 to n-1 do for j <— i+1 to n do d <— sqrt( (X i-X i)2+(Y j-Y j)2 ) if d<dmin dmin=d; index1=i; index2=j;return index1,index2 该算法的关键步骤是基本操作虽然是计算两个点之间的欧⼏⾥得距离,但是求平⽅根并不是像加法乘法那么简单。
上⾯算法中,开平⽅函数导数恒⼤于0,它是严格递增的,因此我们可以直接只计算(X i-X i)2+(Y j-Y j)2,⽐较d2的⼤⼩关系,这样基本操作就变成了求平⽅。
平⽅操作的执⾏次数是: n(n-1)∈Θ(n2)因此,蛮⼒法解决最近对问题的平均时间复杂度是Θ(n2) 下⾯是该算法的c++代码实现部分,在实现这个算法时,我碰到了三个问题: ⼀是:怎么表⽰⼀个点集,因为最终返回的下标是集合中点的下标,要⽤的数据结构就是⼀维数组,但是点的xy坐标⼜要怎么表⽰呢,这⾥我在头⽂件中创建了struct类型的点结构,该结构拥有的成员变量就是x代表的横坐标和y代表的纵坐标,这样就可以直接创建该结构的⼀位数组进⾏计算了。
第十四章下界14.1 平凡下界平凡下界:用直观的方法就可以推导出来。
例14.1检查n个元素的整数数组中,其值为偶数的元素个数。
需要对数组中的每一个元素进行判断和累计。
对每一个元素进行判断需要)1(Ω时间,对n个元素进行判断,就需要)Ω时间。
(n因此,)Ω是求解这个问题的所有算法的下界。
(n例14.2检查具有n个顶点的有向图的可达性矩阵问题。
n⨯的矩阵,n个顶点的有向图的可达性矩阵是一个n需要检查2n个元素,每检查一个元素至少需要)1(Ω时间,则检查2n个元素,至少需要)Ω时间。
(2n因此,)Ω是求解这个问题的所有算法的下界。
(2n1.4.2 判定树模型一、判定树模型判定树是一棵二叉树:内部结点,相应于形式为yx≤的比较。
如果关系成立,则控制转移到左儿子结点;否则,控制转移到右儿子结点。
叶子结点,表示问题的一个结果。
二、用判定树模型建立问题的下界从根结点开始执行,根据比较操作的结果,将控制转移到它的儿子结点。
上述过程一直进行,直到叶子结点为止判定树的高度与问题的时间复杂性有关忽略解题时的所有算术运算,只集中考虑分支执行时的转移次数。
14.2.1 检索问题一、检索问题:数组A是一个具有n个元素的有序数组,给定元素x,确定x是否在数组A中。
12二、用判定树模型来确定基于比较的检索问题的下界用二叉树表示数组的检索过程,树中的每个结点表示元素x 和数组中某个元素][i A 的一次比较。
每次比较有三种可能的结果:][i A x <、][i A x =、及][i A x >。
假定,如果][i A x =,则算法检索成功而终止;如果][i A x <,则算法的执行转移到二叉树的左分支;如果][i A x >,则算法的执行转移到二叉树的右分支。
算法的执行沿左右分支推进,直到叶子结点,若都找不到使][i A x =的i ,,则算法检索失败而终止。
因为检索过程是从根结点开始,直到叶结点为止的。
求平面点集凸壳算法李旭朝【摘要】在分析传统平面点集凸壳算法的基础上,给出了一种新的平面点集凸壳算法,对算法步骤进行了详细说明,并对此算法可行性进行了验证,最后对算法时间复杂度进行了分析探讨,得到了很好的效果.【期刊名称】《兰州工业学院学报》【年(卷),期】2011(018)002【总页数】3页(P16-18)【关键词】极值点;夹角;子集;凸壳算法【作者】李旭朝【作者单位】兰州交通大学数理与软件工程学院,甘肃730070【正文语种】中文【中图分类】TP301.60 引言凸壳即最小凸包,是包含集合D中全部对象的最小凸集,平面点集的凸壳是计算几何学中较重要、较基础的问题.在计算几何学中凸壳自身据有很多特点,也是构造其它较复杂几何形体的工具,也是基本单元.平面点集凸壳作为一种基本的结构不但在计算几何学中有很重要的作用,而且在分析GIS数据等问题时有很重要的作用,在空间分析等诸多问题中也多次用到平面点集的凸壳算法.包含D中所有点的最小凸多边形即平面点集D的凸壳,其所有顶点均为D中的点.凸壳算法可以将许多问题归纳起来处理和解决,它在计算机图形学中有较为广泛的应用,也在一些实际技术如图像处理、模式识别等中应用较多.传统求平面点集凸壳的算法较多,主要有卷包裹法、格雷厄姆算法、分治算法、求增量算法、实时算法等.由于在计算几何学中凸壳问题有着基础作用和重要地位,大家都在不断的研究较快的平面点集凸壳算法.通过对传统的平面点集凸壳算法的分析,本文给出了一种新的平面点集凸壳算法.经实验验证求平面海量散乱点集的凸壳应用此算法效果非常好.许多实际应用问题都可以总结为平面点集的凸壳问题来解决,如地理信息系统中的区域裁剪等实际问题. 该算法的时间复杂度是O(nlogn),无法突破最坏情况下的理论下限,但此算法也可以向三维或者高维空间进行拓展.1 平面点集凸壳描述及相关定义定义1 设多边形P的顶点是给定平面内的点p1(x1,y1),p2(x2,y2),… pn(xn,yn),若线段pipj(i≠j,1≤i≤n,1≤j≤n)在多边形P内或者在多边形P上,则称P为凸多边形.定义2 设平面点集S={pi(xi,yi)|1≤i≤n}由平面上的点构成.若凸多边形Q的所有顶点Qi∈S,并且Q是可以覆盖S中所有点的最小凸多边形,则称凸多边形Q为平面点集的凸壳.定义3 求给定平面点集S={pi(xi,yi)|1≤i≤n}的平面凸壳的方法和过程称为平面点集凸壳算法.定义4 凡能生成给定平面点集S={pi(xi,yi)|1≤i≤n, n≥3}的平面凸壳的算法,均称为平面点集凸壳生成算法.定义5 平面点集S={pi(xi,yi)|1≤i≤n,n≥3}中各点的位置分布区域,称为S分布域.定义6 平面点集S={pi(xi,yi)|1≤i≤n,n≥3}中Xmax,Ymax,Xmin,Ymin对应的点叫做平面点集S的极值点.2 平面点集的凸壳生成算法此算法是研究平面散乱点集最小凸壳的算法,首先找出平面散乱点中的四个极值点(即Xmax,Ymax,Xmin,Ymin)用这四个极值点将平面点集划分为四个相对的子集,其次在这四个子集的范围内从每一个极值点分别查找与基准线的夹角,求出使该夹角最大的点,循环查找,不断的缩小求集区间,直至四个子集都查找完毕,然后顺次连接所查找出的点得到的凸多边形即为平面点集的凸壳,这种求平面点集凸壳的算法即为凸壳算法.若存在由m个点组成的平面点集P={pi(xi,yi)|1≤i≤m},采用该凸壳算法求平面点集凸壳的算法步骤如下:Input:m个点所组成的平面点集P={pi(xi,yi)|1≤i≤m};Output:平面点集S的凸壳P;step1:求点集S中的点的个数m,如果m≤3 则P=S,即S中的平面点全部为凸壳点.否则,step2;step2:找出平面点集的所有极值点,即Xmax,Ymax,Xmin,Ymin所对应的点,则这四个极值点肯定是平面凸壳上的点.对Xmax对应的点均按Y轴的升序进行排序,求出其中Y最大的点和最小的点,如果二者相等,则取其一,另一个则舍去;对Xmin对应的点采用相同的办法.对Ymax对应的点均按X轴的升序进行排序,求出其中X最大的点和最小的点,如果二者相等,则取其一,另一个则舍去.对Ymin对应的点采用相同的办法.将这四个结果保存到数组Q中.step3:分别在所有对应的点中取一个点,记录为Pxmin,Pymax,Pxmin,Pymin,将平面点集划分为四个子区间1,2,3,4.同时定义子区间1中的点A={αi(xi,yi)| Xmin≤xi≤Pymax.x,Pxmin .y≤yi≤Ymax};子区间2中的点C={ci(xi,yi)|Pymax .x<xi<Xmax,Pxmax.y<yi<Ymax};子区间3中的点M={mi(xi,yi)|Xmin<xi<Pymin .x,Ymin<yi<Pxmin .y};子区间4中的点N={ni(xi,yi)|Pymin.y≤xi≤Xmax,Ymin≤yi≤Pxmax .y}.step4:删除子区间1中PxminPymax右边的点,记录Pxmin.在剩余的点中求每个点与Pxmin的连线,并找出其与X轴夹角最大的点,这个点将作为新的凸壳点记录.删除新的凸壳点和Pymax连线右边的点,在剩余的点中求每个点与新的凸壳点的连线,并找出其与X轴夹角最大的点,这个点将作为新的凸壳点记录.迭代查找直至子区间1查找完毕.step5:在子区间2、3、4中分别进行step4,直至这四个子区间全部查找完毕. step6:顺次连接P中的点即生成平面点集的凸壳.3 算法思想可行性验证本文所述的思想和求平面点集凸壳的过程和步骤在Visual C++ 6.0编程环境下经过多次求证是可行的,部分程序源代码如下://差错函数,查找是否有错误的凸点function checkerror,pointsn=size(points)istrue=1for i=0,n[2]-3 do beginifmutiply(points[0,i],points[1,i],points[0,i+1],points[1,i+1],points[0,i+2],points[1,i+2]) It 0 then beginistrue=0 ;有凹点breakendforreturn,istrueend//对排序后的点集先进行判断,是否有凹点,如果有则修改,否则不进行处理if check eq 1 then bginm=1while (m) do beginif checkerror(points eq 0 then beginpoints=modify(points)endif else beginbreakendelseendif else beginpoints=modify(points)endelse图1所示为其运行效果.图1 算法运行效果4 算法的时间复杂度讨论平面点集中包括n个平面散乱点,在step2中查找Xmax,Ymax,Xmin,Ymin 这四个极值点所对应的点的过程,时间复杂度应为O(n),从step4到step6是对子区间1、2、3、4分别求平面点集凸壳,因为其它很多无关的点在每次求出一个凸壳上的点后都将被删除,所以其消耗的时间主要是在判断点与直线的位置关系上,因此该算法的时间复杂度是O(nlogn).本文所提出的平面点集的凸壳算法,对一些计算效率要求较高并且对计算精度要求较低的情况或者海量数据的情形下特别适合.对一些有固定计算精度的情况,我们可以先对各个方向的相关参数进行计算,将现成的方向列表先存储到算法中,这样加快了计算近似凸壳的过程。
计算几何中的寻找凸壳算法在计算几何中,几何形体的寻找是一个很重要的问题。
凸壳,也称凸包,是在点集中连接所有点中的外壳形状。
寻找凸壳是计算几何中一个非常经典和重要的问题。
凸壳不仅可以应用于计算机图形学领域,还可以应用于生物学、土木工程、航空航天等领域。
在本文中,我们将介绍两种不同的计算几何中的寻找凸壳算法。
寻找凸壳的常用算法最常用但也最简单的方法是先找到一个最上方的点和一个最下方的点,然后用这两个点连接整个点集,同时将其它点分成两组。
通过实现一个 O(n^2) 的算法,我们可以寻找到点集中的最高点和最低点。
接下来,我们可以通过寻找与这条线交叉的点,将剩余的点分成两组,从而构建出凸壳形状的一条边。
在以后的操作中,我们不需要考虑被淘汰的点。
我们可以接着在两组点的内部分别进行上述过程,直到所有点都被处理完毕。
这里的时间复杂度取决于每次操作中包含的点的数量,因为每访问一个点需要推迟一个点。
因此,时间复杂度大概是 O(n^2*log n)。
该算法最早由Jarvis 算法提出,通常称为Jarvis 显式凸包算法。
算法的实现非常简单,但是效率极低。
尽管 Jarvis 算法的时间复杂度比较高,但事实证明,对于小规模的数据集, Jarvis 算法是最优的选择。
改进算法的介绍Jarvis 算法尽管容易验明,但效率很低,因此人们提出了其他更好的算法。
其中一个著名的算法是 Graham 扫描算法。
Graham扫描算法是一种基于排序思路的凸包算法,其思路是寻找最低的点,然后按极角对所有点进行排序,从而找到凸包中最右边的点。
最初,只有三个点属于凸包,然后扫描其余点。
如果要添加新点,则先使用栈保存先前的点以构建链。
该算法其核心是一个排序算法,时间复杂度高达 O(n*log n)。
但是经过改进,该算法的复杂度已经减少到了 O(n log n)。
与显式算法不同, Graham 算法使用堆栈简化空间。
总结在本文中,我们介绍了计算几何中两种不同的寻找凸壳算法:显式凸包算法和改进算法。
《算法导论》第33章凸包问题目录1.凸包问题的定义和背景2.凸包问题的应用3.凸包问题的解决方案4.凸包问题的算法分析5.凸包问题的实际应用案例正文一、凸包问题的定义和背景凸包问题是计算机图形学和计算几何中的一个经典问题。
它指的是给定一组二维或三维空间中的点,寻找一个最小的凸多边形,使得这个多边形包含了所有的点。
也就是说,任意一个点只要在凸包内部,就能被凸包上的某一点所见到,反之则不能。
二、凸包问题的应用凸包问题在计算机图形学和计算几何中有广泛的应用,例如:1.几何优化:通过凸包可以得到一组点的最小包围,可以应用于几何形状的优化和压缩。
2.碰撞检测:在计算机图形学中,凸包可以用于检测物体的碰撞,只要两个物体的凸包有交集,就说明两个物体发生了碰撞。
3.可视化:在数据可视化中,凸包可以帮助我们快速找到一组数据的主要分布区域。
三、凸包问题的解决方案凸包问题的解决方案主要有以下几种:1.基于三角剖分的方法:该方法通过将凸包分解成若干个三角形,然后利用三角形的性质来求解凸包。
2.基于团问题的方法:该方法将凸包问题转化为求解团问题,然后再将团问题转化为组合优化问题进行求解。
3.基于 Graham 扫描的方法:该方法是一种基于扫描线的方法,通过扫描线逐点扫描点集,可以快速得到凸包。
四、凸包问题的算法分析以上三种方法都有对应的时间复杂度和空间复杂度。
例如,基于三角剖分的方法的时间复杂度为 O(nlogn),空间复杂度为 O(n);基于团问题的方法的时间复杂度为 O(n),空间复杂度为 O(n);基于 Graham 扫描的方法的时间复杂度为 O(n),空间复杂度为 O(1)。
五、凸包问题的实际应用案例以碰撞检测为例,假设我们有两个物体 A 和 B,每个物体由多个点组成。
我们可以通过计算物体 A 和 B 的凸包,然后检测两个凸包是否有交集,如果有,就说明两个物体发生了碰撞。
算法分析简答题(含答案)1.以比较为基础的排序算法的时间下界是Ω(nlogn)。
基数排序的时间复杂度是什么?这个下界适用基数排序吗?为什么?答:基数排序的时间复杂度为 (kn),其中,k 是元素的位数,n 是元素的个数。
(3 分)此下界不适用于基数排序,因为基数排序不属于基于元素的比较来排序的算法类。
(2 分)2. 图的深度优先搜索和宽度优先搜索方法的主要区别是什么?答:主要区别如下:图的深度优先搜索是每当检测一个结点u 时,访问到一个新结点v,则暂时终止对u 的检测,转而对v 进行检测(3 分);而图的宽度优先搜索则是每当检测一个结点u 时,就依次访问完没有被访问的u 的邻接点,即一次对u 检测完毕。
(2 分)。
3. 简述使用分枝限界法求解问题的基本思路。
与回溯法相比,它有何优势,和有何不足?答:分枝限界法的基本思想是:宽度优先搜索(优先队列搜索)+剪枝。
即,通过对搜索树进行宽度优先搜索来寻找问题的解答,且在搜索中每搜索到一个结点处,都要考虑是否能使用剪枝操作来剪枝,从而提高搜索效率。
(3 分)与回溯法相比,这种搜索方法具有更大的灵活性(搜索跳跃性更大),但是往往需要比回溯法多得多的空间。
(2 分)4.考虑产生1,2,⋯,n.的一个随机排列。
请简要描述一个时间复杂度为O(n)的随机算法的思路。
答:一种随机算法的基本思路是:先初始化A[i]=i,1≤i≤n;然后随机地在A 中选两个元素出来交换,此操作执行n 次。
显然,这种算法的时间复杂度为 (n)。
(5 分)5.快速分类算法是根据分治策略来设计的,其基本思想是什么?快速分类算法的最好、最坏及平均情况的时间复杂度分别是多少?答:其基本思想是,通过不断地对序列进行划分而达到排序的目标。
所谓对序列进行划分,就是在序列中选定一个标准元素v,然后将序列进行一遍梳理,使得小于等于v 的元素放在v之前,而大于等于v 的元素放在v 之后,此时v 所在的位置就是序列最终排序后元素v 所在的位置。
1凸壳问题凸壳问题的格雷厄姆(Graham )扫描法一、凸壳问题1、凸壳的定义定义:令S 是平面上的一个点集,封闭S 中所有顶点的最小凸多边形,称为S 的凸壳,表示为)(S CH 。
)(S CH 上的顶点,有时也叫做S 的极点。
2、凸壳问题 给定平面上n 个点的集合S ,求S 的凸壳)(S CH 。
二、思想方法1、在平面点集S 中,寻找Y 坐标最小的点。
把它称为0p 。
2、以0p 为源点,对所有点的坐标进行变换。
3、对变换后的所有点,以0p 为源点,计算它们的极坐标幅角。
4、以幅角的非降顺序来排序}{0p S -中的点,令排序过的点为},,,{121-=n p p p T Λ,其中,1p 和1-n p 分别与0p 构成最小与最大的幅角。
5、把点集T 中的元素,作为事件调度点进行扫描。
6、用堆栈CS 作为扫描过程中局部构成的半封闭凸多边形,把它2作为扫描线状态维护。
7、堆栈初始化为},{01p p CS n -=,其中,0p 为栈顶元素。
8、按极坐标的幅角,从1p 开始,到1-n p 为止进行扫描。
9、扫描处理:假定,在某一个时刻,堆栈内容为:},,,,,{01k j i n p p p p p CS Λ-=其中,k p 为栈顶元素,则栈中元素按顺序构成半封闭的凸多边形。
令l p 是正在扫描的点,如果由j p 、k p 、l p 所构成的路径是左转的,则由j p 、k p 、l p 形成的边是凸边,把l k p p 作为凸多边形中的边加入进来,把l p 压入栈顶,把扫描线移到下一点;如果由j p 、k p 、l p 所构成的路径是右转的,则由j p 、k p 、l p 形成的边是凹边,k p 不是凸壳的极点。
把k p 弹出栈顶,扫描线仍然停留在l p 上。
在下一轮处理中,将由i p 、j p 、l p 进行判断和作出处理。
3格雷厄姆扫描法的实现一、算法步骤:1. 求平面点集S 中Y 坐标最小的点0p ;2. 以0p 为源点,变换}{0p S -中所有点的坐标;3. 以0p 为源点,计算}{0p S -中所有点的幅角;4. 以幅角的非降顺序排序}{0p S -中所有的点,令事件调度点},,,{121-=n p p p T Λ是排序过的数组;5. 初始化堆栈:令1]0[-=n p CS ,0]1[p CS =;令堆栈指针1=sp ,事件调度点数组T 的下标0=k ;6. 如果1-<n k ,转7;否则,算法结束;7. 按(11.1.7)式计算]1[-sp CS ,][sp CS ,][k T 所构成的三角区符号D ,若0≥D ,1+=sp sp ,][][k T sp CS =,1+=k k ;转6;否则,1-=sp sp ;转6;二、数据结构:typedef struct {float x; /* X 坐标 */float y; /* Y 坐标 */float ang; /* 极坐标的幅角 */} SPOINT;POINT S[n]; /* 平面点集 */SPOINT T[n]; /* 按幅角的非降顺序排序的平面点集 */POINT CS[n]; /* 构成凸壳的点集 */三、算法的实现:算法11.2 求平面点集的凸壳输入:平面点集S[],顶点个数n输出:构成凸壳的极点CS[];极点个数sp1. void convex_hull(POINT S[],POINT CS[],intn,int &sp)2. {3. int i,k;4. float D;5. SPOINT T[n];6. for (i=1;i<n;i++)/* S中Y坐标最小的点于S[0]*/7.if(S[i].y<S[0].y)||((S[i].y==S[0].y)&&(S[i].x<S[0].x)))48. swap(S[i],S[0]);9. for (i=1;i<n;i++) {/* 以S[0] 为源点,变换S[i]的坐标于T[i] */10. T[i-1].x = S[i].x – S[0].x;T[i].y = S[i].y – S[0].y;11. T[i-1].ang = atan(T[i-1].y,T[i-1].x); /* 求T[i]的幅角 */12. }13. sort(T,n-1);/* 按T[i]幅角的非降顺序排序T[i] */14. CS[0].x = T[n-2].x; CS[0].y = T[n-2].y;15. CS[1].x = 0; CS[1].y = 0; sp = 1; k = 0;16. while (k<n-1) {/* 求栈顶两点及扫描线上一点所构成的三角区符号 */ 17. D = CS[sp-1].x*CS[sp].y + CS[sp].x*T[k].y + T[k].x*CS[sp-1].y18. - CS[sp-1].y*CS[sp].x - CS[sp].y*T[k].x - T[k].y*CS[sp-1].x;19. if (D>=0)520. CS[++sp] = T[k++];/* 若D≥0,T[k]压入栈顶,扫描线前移一点 */21. else sp--; /* 否则,弹出栈顶元素 */22. }23. }四、复杂性分析1、数据复杂性:第6~8行及9~12行,各需)Θ时间;(n第13行的排序操作,需)O时间;nlog(n第16~22行的while循环,需)Θ时间。
The Lower Bound Estimations of A ProbabilityMinimization ProblemSun Churen ∗Huang Lei †AbstractThis article considers the problem of min ξP r (|ξT x |≤α)s.t. ξ 2=1.We first concentrate on the case that x i ,i =1,···,n are binary random variable with identical probability distribution and derive a lower bound estimation.And then we observe the case that x is a random normal vector and obtain some lower bound estimations.Keywords.Probability optimization problem,Lower bound estimation,Binary random variable,Random normal vector.AMS subject classification.90C15,90B99,62H10.1IntroductionWe consider the following probability optimization problem in this article:min P r (| n i =1ξi x i |≤α)s.t. ξ 2=1(1.1)where α≥0,ξ=(ξ1,···,ξn )T ∈R n ,x =(x 1,···,x n )T and x i ,i =1,···,n are identically independent random variables with probability distributions P r (x i =12)=1,n ,wheW e consider theFirstly ,it is a concrein [5],[11]).Secondl estimate the comple to pro v e whether a g in engineering can b F or the problem b een obtained up tivarianceσ,then the Chebychev’s inequality(see in[3],[8])shows that there is a two-sided inequality for anyα≥0P r(|X−µ|≥α)≤σ2/α2while the one-sided Chebychev’s inequality(see in[3],[8])saysP r(X−µ≥α)≤σ2/(α2+σ2)Then by symmetry,one concludes that for anyα≥0,there is P r(|X−µ|≥α)≤2σ2/(α2+σ2).If x i,i=1,···,m are identically independent random variables with probability dis-tributions P r(x i=0)=1−p and P r(x i=1)=p,and let Bin(n,p)= n i=1x i,then the Chernoffbound(see in[8])shows that for any0<a≤np,there isP r(|Bin(n,p)−np|>a)<2e−a2/3npAs an improving,the Hoeffeling Azuma inequality(see in[8])claims that if X is a random variable determined by n trials T1,···,T n and it satisfies for each i,i=1,···,nmax|E(X|T1,···,T i+1)−E(X|T1,···,T i)|≤c iwhere this maximum is taken over all possible outcomes of T1,···,T i+1and E(X|T1,···,T i) is the conditional expected value of X conditioned on the outcomes of T1,···,T i,thenP r(|X−E(X)|>t)≤2e−t2/(2 n i=1c2i)For an extension of problem(1.1),Pinelis(see in[6])obtained a multidimensional ver-sion of the following inequalityP r(ξ1x1+···+ξn x n≥α)≤cP r(ζ≥α)=c(1−Φ(α)),∀α∈Rwhere x i s are independent Rademacher random variables,ζis a standard norm random variables andΦis its distribution function whileξ i s are real numbers such that b 2=1 and c=2e3/9.Furthermore,Pinelis(see in[7])obtained an improved result as following. If ξ 2=n and x i,···,x n are independent Rademacher random variables,the for all α∈2Z−n,there isP r(ξ1x1+···+ξn x n≥α)≤c P r(ξ1+···+ξn≥α)where c=2e3/4=4.46....Along another line,A.Ben-Tal and A.Nemirovski(see in [1])get a better result for the case that x i,i=1,···,n are identically independent with probability distributions P r(x i=1)=P r(x i=−1)=1/2,i=1,···,n in a different way.Their result shows forα=1that there is1P r(|ξT x|)≥2The Case That x i,i=1,···,n are identically inde-pendent with probability distributions P r(x i=1)= P r(x i=−1)=1/2,i=1,···,nIn this section,we consider the problem(1.1)in the case that x i,i=1,···,n are identically independent with probability distributions P r(x i=1)=P r(x i=−1)=1/2, i=1,···,n.We will derive a general lower bound estimation of it under appropriate conditions.First,the follow result is needed.Theorem2.1Let the random variables x1,···,x n be independent with x i−E(x i)≤b for each i=1,···,n.Let S n= n i=1x i and let S n have expected valueµand varianceσ(the sum of the variances of x i,i=1,···,n).Then for any t≥0there isP r(S n−µ≥t)≤e−(σ/b2)((1+ )ln(1+ )− )(2.2) To prove this theorem,we need the following lemma.Lemma2.1Let g(x)=(e x−1−x)/x2.If x=0,then g(x)is increasing.And if the random variable satisfies E(x)=0and x≤b,then there isE(e x)≤e(g(b))var(x)(2.3) Proof.That g(x)is increasing is obvious.In fact,we haveg (x)=x−3((x−2)e x+x+2)So it suffices to show that h(x)=e x(x−2)+2+x≥0for all x.Now h(0)=0and h (x)=(x−2)e x+1.Then h (0)=0and h (x)=xe x.So h (x)<0for all x<0and h (x)>0for all x>0.Thus h(x)≥0as required.For the second part of the lemma,note thate x=1+x+x2g(x)≤1+x+x2g(b)for all x≤b.Hence if E(x)=0and x≤b,thenE(e x)≤1+g(b)var(x)≤e g(b)var(x)as required.2 Now we come to prove theorem2.1.Proof.By lemma2.1,∀h,we haveE(e h(S n−µ))=Πn k=1E(e h(x k−E(x k))≤e g(hb)h2vHence by Markov’s inequality,∀h≥0,there isP r(S n−µ≥t)≤e−ht E(e h(S n−µ))≤e−ht+g(hb)h2v(2.4)To minimize the bound,we set h=1σ),and then we get(2.2).2From theorem2.1,we get the following corollary.Corollary 2.1Let x i =±1,i =1,···,n with probability distribution P r (x i =1)=P r (x i =−1)=1/2.Let ξsatisfy ξ 2=1.Then we haveP r (|S n −E (S n )|≤α)=P r (|ξT x |≤α)≥1−2e −((1+α)ln (1+α)−α)(2.5)Proof.As S n = n i =1X i =ξT x = n i =1ξi x i ,where X i =ξi x i ,i =1,···,n ,we get E (S n )=0,var (S n )=n i =1ξ2i =1Hence we have µ=E (S n )= ni =1ξi E (x i )=0,σ=1and |X i −E (X i )|=|ξi x i |=|ξi |≤1=b so =αas in theorem 2.2.Via theorem 2.2,we getP r (|S n −µ|≤α)=1−2P r (S n −µ≥α)(2.6)≥1−2P r (S n −0≥α)≥1−2e −((1+α)ln (1+α)−α)as the corollary declaimed.2One can see that when α=1,the declaration of corollary 2.1becomesP r (|ξT x |≤1)≥e −23where ξis constrained by ξ 2=1.But our result is based on a general setting and αis just required to be larger than or equal to 0.3The Case That x is a Random Vector with NormalDistributionThis section focus on the case that x is a normal random vector which follows N (¯x ,Σ),i.e.,x has a mean value ¯x and a covariance matrix Σ.Then the density function of x is as followsf (x )=12(det (Σ))−12(x −¯x )T Σ−1(x −¯x ))(3.7)where det (Σ)denotes the determinant of Σ.For α≥0,we consider the following problem(P )min x P r (|ξT x |≤α)s.t. ξ 2=1(3.8)First,we introduce the following theorem,which can be found in general textbook of multivariate analysis(eg.see in [2],[9],[13]).Theorem 3.1Let A be a operator mapping R n to R m .Suppose x ∼N (¯x ,Σ),then A x ∼N (A ¯x ,A ΣA T ),where A T is the conjugate operator mapping R m to R n .Let’s come to consider P r (|ξT x |≤α).AsP r (|ξT x |≤α)=P r (−α≤ξT x ≤α)(3.9)=P r (ξT x ≤α)−P r (ξT x ≤−α)Then by theorem 3.1,we haveP r (|ξT x |≤α)=α−α12(ξT Σξ)12(y −ξT ¯x )(ξT Σξ)−1(y −ξT ¯x ))dy =12(ξT Σξ)12ξT Σξ(y −ξT ¯x )2)dy=12(ξT Σξ)12ξT Σξθ2)dθ=12 α−ξT ¯x ξT Σξ−α−ξT ¯x ξT Σξexp (−1√√λmin (Σ))−13.The caseΣ=I n,¯x=0,where I n is the n-dimensional unitary matrix.In this case,ξTΣξ=1andf(ξ)=Φ(α−ξT¯x)−Φ(−α−ξT¯x)Letθ=ξT¯x,theng(θ)=Φ(α−θ)−Φ(−α−θ)One can show that g(θ)is an increasing function with respect toθ≥0.In fact,g (θ)=φ(−α−θ)−φ(α−θ)(3.13)=12π(exp(−12(α−θ)2))≥0,∀θ≥0Hence to let minξP r(|ξT¯x|≤α)be as larger as possible,one needs only to maximize ξT¯x with respect to the constraint ξ 2=1.,i.e.,one needs only to considermaxξT¯x s.t. ξ 2=1(3.14) Via Lagrangian’s method,we get the optimalξto be¯xTheorem 3.2Let x be a random vector following N (¯x ,Σ).For the problem of f ∗=min ξ 2=1P r (|ξT x |≤α),in the case that ¯x =0and Σ=I n ,there is f ∗≥2Φ(α)−1;in the case that ¯x =0and Σ=I n ,there is f ∗≥2Φ(α√ [10]P.R.Garvey,Probability methods for cost uncertainty analysis:a systems engineer-ing perspective,M.Dekker,2000.[11]V.H.Vu,On the Concentration of Multivariate Polynomials with Small Expectation.[12]V.N.Sachkov,Probabilistic methods in combinatorial analysis,Cambridge;NY:Cambridge University Press,1997.[13]W.J.Krzanowski and F.H.C.Marriott,Multivariate analysis,Halsted Press,1994-1995.。
算法的上下界
算法的上下界是指算法最好和最坏情况下的时间复杂度。
算法的上界是指算法在最坏情况下的时间复杂度,也就是算法的最大运行时间。
算法的下界是指算法在最好情况下的时间复杂度,也就是算法的最小运行时间。
在算法设计中,我们通常希望算法的时间复杂度越小越好,因此我们需要掌握算法的上下界。
对于一个算法,如果我们能够证明它的时间复杂度的上界和下界相同,那么我们就说它是最优的算法。
算法的上下界对于算法正确性的证明也非常重要。
如果我们能够证明一个算法的时间复杂度的上下界相同,那么我们就能够证明它的正确性。
在算法分析中,我们通常使用大O符号表示算法的时间复杂度的上界。
例如,如果一个算法的时间复杂度是O(n^2),那么它的最坏情况下的时间复杂度是O(n^2)。
而算法的下界则通常使用Ω符号表示。
例如,如果一个算法的时间复杂度是Ω(n^2),那么它的最好情况下的时间复杂度是Ω(n^2)。
总之,算法的上下界是算法设计和分析中非常重要的概念。
掌握算法的上下界可以帮助我们设计出更优秀的算法,同时也能够更好地证明算法的正确性。
- 1 -。
第2章 WPF完全理论2.1 下界对于任何待求解的问题,如果能找到一个尽可能大的函数g(n)(n为问题规模),使得求解该问题的所有算法都可以在Ω(g(n))的时间内完成,则函数g(n)称为该问题计算复杂性的下界(Lower Bound)。
如果已经知道一个和下界的效率类型相同的算法,则称该下界是紧密(Close)的。
意义:评价算法;改进算法。
2.1.1 平凡下界对问题的输入中必须要处理的元素进行计数,同时,对必须要输出的元素进行计数。
这种计数方法产生的是一个平凡下界(Ordinary Lower Bound).例:生成 n 个元素的所有排列对象的算法属于Ω(n!)平凡下界往往过小而失去意义。
例:TSP问题的平凡下界是Ω(n2)2.1.2 判定树模型●判定树(Decision Trees)是这样一棵二叉树:它的每一个内部结点对应一个形如x≤y的比较,如果关系成立,则控制转移到该结点的左子树,否则,控制转移到该结点的右子树,它的每一个叶子结点表示问题的一个结果。
在用判定树模型建立问题的时间下界时,通常忽略求解问题的所有算术运算,只考虑分支执行时的转移次数。
引理2.1 若T是至少具有n!和叶子结点的二叉树,则T的高度至少是:nlog2n-1.5n=Ω(nlog2n)●通常称为信息论下界,说明任何基于比较的对n个元素排序的算法,判定树的高度都不会大于Ω(nlog2n)。
因此,Ω(nlog2n)是这些算法的时间下界。
定理2.1 任何基于比较的排序算法,对n 个元素进行排序的时间下界为Ω(nlog2n)例:对三个数进行排序的判定树 ● 最坏情况下的时间复杂性是从根节点到叶子结点的最长路径长度,它不会超过判定树的高度。
2.1.3 最优算法● 所谓最优算法(Optimality Algorithm )是指在某一种度量标准下,优于该问题的所有(可能的)算法。
如果能够证明求解问题Π的任何算法的运行时间下界是Ω(g(n)),那么,对以时间O(g(n))来求解问题Π的任何算法,都认为是最优算法。
凸壳问题的计算时间下界
王晓东
【期刊名称】《软件学报》
【年(卷),期】1994(005)012
【摘要】Aggarwal指出Steele和Yao的关于凸壳问题计算间下界的证明仅当点集是非退化时是有效的。
至今还不清楚他们的证明是否可以经过修改后处理对凸壳问题的解集无任何约束的情形。
在固定阶代数判定树模型下,本文彻底解决了这个问题。
【总页数】6页(P38-43)
【作者】王晓东
【作者单位】无
【正文语种】中文
【中图分类】TP301.6
【相关文献】
1.用归约原理求解凸壳问题的计算复杂性的研究 [J], 曾纯强
2.关于一类抛物问题爆破时间下界估计的注记 [J], 王园园;霍志鑫;孔德志;程树明;周利杰
3.关于一类抛物问题爆破时间下界估计的注记 [J], 王园园;霍志鑫;孔德志;程树明;周利杰
4.带有延迟时间下界的k-(n_1,1,…,1)-排序问题的拟多项式时间算法 [J], 殷志文;沈靓
5.带有延迟时间下界的k-(n_1,1,…,1)-排序问题的拟多项式时间算法 [J], 殷志文;沈靓
因版权原因,仅展示原文概要,查看原文内容请购买。