那么横坐标最小和最大的两个点 P1 和 Pn 一定是凸包上的点(为什betway必威游戏么呢?用反证法很容易证明

当前位置:betway必威平台 > betway必威游戏 > 那么横坐标最小和最大的两个点 P1 和 Pn 一定是凸包上的点(为什betway必威游戏么呢?用反证法很容易证明
作者: betway必威平台|来源: http://www.bag139.com|栏目:betway必威游戏

文章关键词:betway必威平台,凸包

  假设平面上有p0~p12共13个点,过某些点作一个多边形,使这个多边形能把所有点都“包”起来。当这个多边形是凸多边形的时候,我们就叫它“凸包”。如下图:

  思路:两点确定一条直线,如果剩余的其它点都在这条直线的同一侧,则这两个点是凸包上的点,否则就不是。

  当上式结果为正时,p3在直线 的左侧;当结果为负时,p3在直线 的右边。

  思路:应用分治法思想,把一个大问题分成几个结构相同的子问题,把子问题再分成几个更小的子问题。然后我们就能用递归的方法,分别求这些子问题的解。最后把每个子问题的解“组装”成原来大问题的解。

  把所有的点都放在二维坐标系里面。那么横坐标最小和最大的两个点 P1 和 Pn 一定是凸包上的点(为什么呢?用反证法很容易证明,这里不详讲)。直线Pn 把点集分成了两部分,即 X 轴上面和下面两部分,分别叫做上包和下包。

  作直线Pmax 、PnPmax,把直线Pmax 左侧的点当成是上包,把直线 PnPmax 右侧的点也当成是上包。

  注意:在步骤一,如果横坐标最小的点不止一个,那么这几个点都是凸包上的点,此时上包和下包的划分就有点不同了,需要注意。

  时间复杂度:O(nH)。(其中 n 是点的总个数,H 是凸包上的点的个数)

  从 P0 开始,按逆时针的方向,逐个找凸包上的点,每前进一步找到一个点,所以叫作步进法。

  怎么找下一个点呢?利用夹角。假设现在已经找到 {P0,P1,P2} 了,要找下一个点:剩下的点分别和 P2 组成向量,设这个向量与向量P1P2的夹角为 。当 最小时就是所要求的下一个点了,此处为 P3 。

  找第二个点 P1 时,因为已经找到的只有 P0 一个点,betway必威游戏所以向量只能和水平线作夹角 ,当 最小时求得第二个点。

  共线,即三个点共线 产生的两个 是相同的。我们应该把 P3、P4 都当做凸包上的点,并且把距离 P2 最远的那个点(即图中的P4)作为最后搜索到的点,继续找它的下一个连接点。

  思路:Graham扫描的思想和Jarris步进法类似,也是先找到凸包上的一个点,然后从那个点开始按逆时针方向逐个找凸包上的点,但它不是利用夹角。

  把所有点放在二维坐标系中,则纵坐标最小的点一定是凸包上的点,如图中的P0。

  计算各个点相对于 P0 的幅角 ,按从小到大的顺序对各个点排序。当 相同时,距离 P0 比较近的排在前面。例如上图得到的结果为 P1,P2,P3,P4,P5,P6,P7,P8。我们由几何知识可以知道,结果中第一个点 P1 和最后一个点 P8 一定是凸包上的点。

  以上,我们已经知道了凸包上的第一个点 P0 和第二个点 P1,我们把它们放在栈里面。现在从步骤3求得的那个结果里,把 P1 后面的那个点拿出来做当前点,即 P2 。接下来开始找第三个点:

  (即P0和栈顶)的那个点,得到直线 L 。看当前点是在直线 L 的右边还是左边。如果在直线;如果在直线上,或者在直线。

  如果在右边,则栈顶的那个元素不是凸包上的点,把栈顶元素出栈。执行步骤4。

  检查当前的点 P2 是不是步骤3那个结果的最后一个元素。是最后一个元素的话就结束。betway必威游戏如果不是的线 后面那个点做当前点,返回步骤4。

  说真的,这个算法我也还没有看清。网上的资料也少的可怜,我暂且把网上的解释截个图在这里,往后搞懂以后再回来补上。

  不过首先,二维凸包可以用来解决围栏问题、城市规划问题、聚类分析等等。但是三维、多维的凸包可能的使用范畴有哪些?

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!