全球专业中文经管百科,由121,994位网友共同编写而成,共计436,007个条目

凸包

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

凸包(Convex hull)

目录

什么是凸包

  在了解凸包之前,须先认识何谓“凸多边形”(Convex Polygon)。从直观上说,一个凸多边形就是没有任何凹陷位的多边形。我们在低年级数学所学习的三角形、正方形、长方形、平行四边形、正五边形、正六边形等等,都是凸多边形的例子。但是以下这个“凸”字形却并非凸多边形,因为箭头指着的地方实际是一个凹陷位。

  凸包

  可是上述这一定义很不严密,究竟何谓“凹陷位”?实在难以说清楚。因此在数学上,凸多边形有另一个严格的定义。假设我们在一个多边形上(包括多边形的边界及边界围封的范围)任意取两点并以一条线段连结该两点,如果线段上的每一点均在该多边形上,那么我们便说这个多边形是凸的。根据以上定义,我们便可判断“凸”字形的确不是凸的。例如,在下图中,连结A、B两点的线段有一部分并不在该多边形上。

  凸包

  认识了凸多边形后,我们便可了解何谓凸包。给定平面上的一个(有限)点集(即一组点),这个点集的凸包就是包含点集中所有点的最小面积的凸多边形。例如,下图的点集共包含9个点,图中的六边形便是该点集的凸包。其中构成六边形的6个点称为“凸包上的点”(Hull Point),其余3个点则并非“凸包上的点”。请注意上述定义中“最小面积”这个限制条件,因为除了凸包以外,还有无限多个包含点集中所有点的凸多边形。例如,只要画一个面积足够大的四边形,便可包围任意给定的点集。因此假如没有这个限制条件,求凸包就变成非常容易但却没有唯一解的运算。

  凸包

凸包的表达方式

  在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。

  凸包

  X的凸包可以用X内所有点(x_1, \ldots, x_n)的线性组合来构造。

  S:=\begin{Bmatrix} \sum_{j=1}^nt_jx_j|x_j\in X,\sum_{j=1}^nt_j=1,t_j\in[0,1] \end{Bmatrix}

  在二维欧几里得空间中,凸包可想象为一条刚好包著所有点的橡皮圈。

  凸包

凸包的算法

  增量式算法1

  逐次再点加入,然后检查之前的点是否在新的凸包上。由于每次都要检查所有之前的点,时间复杂度为O(n2)

  包裹法(Jarvis步进法)

  首先由一点必定在凸包的点开始,例如最左的一点A1。然后选择A2点使得所有点都在A1A2的右方,这步骤的时间复杂度是O(n),要比较所有点以A1为原点的极坐标角度。以A2为原点,重复这个步骤,依次找到A_3,A_4,\ldots,A_k,A_1。这总共有k步。因此,时间复杂度为O(n2)
凸包

  葛立恒扫描法

  由最底的一点A1开始,计算它跟其他各点的连线和x轴的角度,按小至大将这些角度排序,称它们的对应点为A_2,A_3,\ldots,A_n。这里的时间复杂度可达O(nlogn)。

  考虑最小的角度对应的点A3。若由A2A3的路径相对A1A2的路径是向右转的(可以想象一个人沿A1走到A2,他站在A2时,是向哪边改变方向),表示A3不可能是凸包上的一点,考虑下一点由A2A4的路径;否则就考虑A3A4的路径是否向右转……直到回到A1

  这个算法的整体时间复杂度是O(nlogn),注意每点只会被考虑一次,而不像Jarvis步进法中会考虑多次。

  这个算法由葛立恒在1972年发明。[1]它的缺点是不能推广到二维以上的情况。

  单调链

  将点按x坐标的值排列,再按y坐标的值排列。

  选择x坐标为最小值的点,在这些点中找出y坐标的值最大和y坐标的值最小的点。对于x坐标为最大值也是这样处理。将两组点中y坐标值较小的点连起。在这条线段下的点,找出它们之中y坐标值最大的点,又在它们之间找x坐标值再最小和最大的点……如此类推。

  时间复杂度是O(n log n)。

  分治法

  将点集X分成两个不相交子集。求得两者的凸包后,计算这两个凸包的凸包,该凸包就是X的凸包。时间复杂度是O(n log n)。

  快包法(Akl-Toussaint启发式)

  选择最左、最右、最上、最下的点,它们必组成一个凸四边形(或三角形)。这个四边形内的点必定不在凸包上。然后将其余的点按最接近的边分成四部分,再进行快包法(QuickHull)。

参考文献

  1. Graham,R.L.(1972).An Efficient Algorithm for Determining the Convex Hull of a Finite Planar Set.Information Processing Letters 1,132-133
本条目对我有帮助38
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您认为本条目还有待完善,需要补充新内容或修改错误内容,请编辑条目投诉举报

本条目由以下用户参与贡献

Zfj3000,Dan.

评论(共0条)

提示:评论内容为网友针对条目"凸包"展开的讨论,与本站观点立场无关。

发表评论请文明上网,理性发言并遵守有关规定。

打开APP

以上内容根据网友推荐自动排序生成

下载APP

闽公网安备 35020302032707号