凸包

✍ dations ◷ 2025-05-29 05:11:45 #凸包
在一个实数向量空间 V {displaystyle V} 中,对于给定集合 X {displaystyle X} ,所有包含X的凸集的交集 S {displaystyle S} 被称为 X {displaystyle X} 的凸包。X {displaystyle X} 的凸包可以用 X {displaystyle X} 内所有点 ( x 1 , … , x n ) {displaystyle (x_{1},ldots ,x_{n})} 的线性组合来构造。在二维欧几里得空间中,凸包可想象为一条刚好包着所有点的橡皮圈。逐次将点加入,然后检查之前的点是否在新的凸包上。由于每次都要检查所有之前的点,时间复杂度为 O ( n 2 ) {displaystyle O(n^{2})} 。首先由一点必定在凸包的点开始,例如最左的一点 A 1 {displaystyle A_{1}} 。然后选择 A 2 {displaystyle A_{2}} 点使得所有点都在 A 1 A 2 {displaystyle A_{1}A_{2}} 的右方,这步骤的时间复杂度是 O ( n ) {displaystyle O(n)} ,要比较所有点以 A 1 {displaystyle A_{1}} 为原点的极坐标角度。以 A 2 {displaystyle A_{2}} 为原点,重复这个步骤,依次找到 A 3 , A 4 , . . . , A k , A 1 {displaystyle A_{3},A_{4},...,A_{k},A_{1}} 。这总共有 k {displaystyle k} 步。因此,时间复杂度为 O ( k n ) {displaystyle O(kn)} 。由最底的一点 A 1 {displaystyle A_{1}} 开始(如果有多个这样的点,那么选择最左边的),计算它跟其他各点的连线和x轴正向的角度,按小至大将这些点排序,称它们的对应点为 A 2 , A 3 , . . . , A n {displaystyle A_{2},A_{3},...,A_{n}} 。这里的时间复杂度可达 O ( n log ⁡ n ) {displaystyle O(nlog {n})} 。考虑最小的角度对应的点 A 3 {displaystyle A_{3}} 。若由 A 2 {displaystyle A_{2}} 到 A 3 {displaystyle A_{3}} 的路径相对 A 1 {displaystyle A_{1}} 到 A 2 {displaystyle A_{2}} 的路径是向右转的(可以想象一个人沿 A 1 {displaystyle A_{1}} 走到 A 2 {displaystyle A_{2}} ,他站在 A 2 {displaystyle A_{2}} 时,是向哪边改变方向),表示 A 3 {displaystyle A_{3}} 不可能是凸包上的一点,考虑下一点由 A 2 {displaystyle A_{2}} 到 A 4 {displaystyle A_{4}} 的路径;否则就考虑 A 3 {displaystyle A_{3}} 到 A 4 {displaystyle A_{4}} 的路径是否向右转……直到回到 A 1 {displaystyle A_{1}} 。这个算法的整体时间复杂度是 O ( n log ⁡ n ) {displaystyle O(nlog {n})} ,注意每点只会被考虑一次,而不像Jarvis步进法中会考虑多次。这个算法由葛立恒在1972年发明。它的缺点是不能推广到二维以上的情况。将点按x坐标的值排列,再按y坐标的值排列。选择x坐标为最小值的点,在这些点中找出y坐标的值最大和y坐标的值最小的点。对于x坐标为最大值也是这样处理。将两组点中y坐标值较小的点连起。在这条线段下的点,找出它们之中y坐标值最大的点,又在它们之间找x坐标值再最小和最大的点……如此类推。时间复杂度是 O ( n log ⁡ n ) {displaystyle O(nlog {n})} 。将点集X分成两个不相交子集。求得两者的凸包后,计算这两个凸包的凸包,该凸包就是X的凸包。时间复杂度是 O ( n log ⁡ n ) {displaystyle O(nlog {n})} 。选择最左、最右、最上、最下的点,它们必组成一个凸四边形(或三角形)。这个四边形内的点必定不在凸包上。然后将其余的点按最接近的边分成四部分,再进行快包法(QuickHull)。

相关

  • 低聚果糖果寡糖(Fructooligosaccharides,通常简写作FOS,亦作oligofructose或oligofructan)是一种天然的寡糖,亦有作代糖使用。一般市面上采用果寡糖作糖浆,其甜度约为砂糖的30~50%左右。能
  • 脑疟疾疟疾(拉丁语:Malaria,中文俗称打摆子、冷热病、发疟子)是一种会感染人类及其他动物的全球性寄生虫传染病,其病原疟原虫借由蚊子散播,隶属囊泡藻界(统称原生生物的生物类群之一),皆
  • 拉丁区拉丁区(法语:Quartier latin),处于巴黎五区和六区之间,从圣日耳曼德佩区到卢森堡公园,是巴黎著名的学府区。“拉丁区”这个名字来源于中世纪这里以拉丁语做为教学语言。拉丁区处在
  • 保加利亚列弗保加利亚列弗(保加利亚语:лев)是保加利亚发行的货币。货币编号BGN。辅币斯托延基。1列弗=100斯托延基。在古保加利亚语中,“列弗”意为狮子。1999年7月5日,保加利亚列弗实施面
  • 奇经八脉奇经八脉,中医学概念,指“别道奇行”的经脉,有别于“十二正经”(十二经脉),八脉包括督脉、任脉、冲脉、带脉、阴维脉、阳维脉、阴
  • 作用于神经末梢的抗高血压药作用于神经末梢的抗高血压药此类药物能够使交感神经末梢囊泡中的神经递质加速释放;并阻止交感神经递质进入囊泡,从而造成神经递质耗竭,交感神经冲动受阻,达到降血压的作用,其作用
  • 实名制网络实名制是在一些国家和地区实行的法规, 顾名思义,此法规就是要求所有使用网络及服务的人或群体必须要以真实姓名出现或登记。最早实施网络实名制的国家为南韩,如今网络实名
  • span class=nowrapSmClsub2/sub/span氯化亚钐是一种无机化合物,化学式为SmCl2。氯化亚钐可由氯化钐和金属钐共热得到:Kurt Rossmanith曾在THF溶液中,有萘存在时,用锂还原氯化钐得到氯化亚钐:氯化亚钐和水反应特别迅
  • 736年晋国曲沃之乱开始,前745年晋昭侯把曲沃(在今中国山西省曲沃县)封给其叔成师。前739年晋大臣潘父弑杀了晋昭侯,迎立曲沃桓叔。晋人发兵攻桓叔,桓叔退回曲沃。晋人共立昭侯子公子平
  • 政府开发援助政府开发援助(英语:Official Development Assistance,缩写为ODA;又称政府发展援助、官方发展援助)是发达国家对发展中国家的一种经济援助。根据经济合作与发展组织(OECD)开发援助委