Fork me on GitHub

人工智能之机器学习最优化基础——射包(Convex Hull)

 

射包(Convex Hull) 是计算几何中的一个重要概念,指的是给定点集的最小凸包。具体来说,射包是包含点集 PPP 的最小凸多边形(或凸多面体)。从几何上看,射包可以被认为是用橡皮筋包裹点集后形成的形状。

1. 射包的定义

给定一个点集 P={p1,p2,,pn}射包(Convex Hull)是满足以下条件的集合:

  • 包含 P 中的所有点;
  • 是一个凸集合;
  • 是满足上述条件的最小集合。

凸性的定义

  • 如果多边形或多面体内的任意两点 A 和 B 的连线都完全位于该多边形或多面体内,则称其为凸的。

2. 射包的性质

  1. 唯一性

    • 给定点集的射包是唯一的。
  2. 凸性

    • 射包始终是一个凸多边形或凸多面体。
  3. 边界点的定义

    • 构成射包的点称为“射包的顶点”或边界点,它们通常是点集中的子集。
  4. 包含性

    • 射包包含点集中的所有点以及凸多边形内部的点。
  5. 点的极值性质

    • 射包的顶点是点集中某些方向上的极值点(例如,最左、最右、最上和最下的点)。

3. 射包的构建算法

构建射包的算法有多种,主要有以下几种常见方法:

(1) Gift Wrapping(礼物包装法)

  • 思路
    • 从点集中最左侧的点开始,找到顺时针方向的下一个点,重复直到回到起始点。
  • 时间复杂度
    • O(nh),其中 n 是点的数量,h 是射包的顶点数。
  • 适用场景
    • 适合点数较少的场景。

(2) Graham Scan(Graham 扫描法)

  • 思路
    • 先按极角对点进行排序,然后使用栈构建射包。
    • 每加入一个点,检查是否满足凸性,不满足则回退点。
  • 时间复杂度
    • O(nlog⁡n),主要开销在于排序。
  • 适用场景
    • 通用、高效,适合点数较多的场景。

 

(3) Divide and Conquer(分治法)

  • 思路
    • 将点集分为左右两部分,分别构建射包,然后合并。
  • 时间复杂度
    • O(nlog⁡n),与 Graham 扫描法类似。
  • 适用场景
    • 高效,适用于分布式计算。

(4) Quickhull

  • 思路
    • 类似快速排序的分治思想,找到凸包上的点,递归划分剩余点。
  • 时间复杂度
    • 平均情况 O(nlog⁡n),最差情况 O(n2)
  • 适用场景
    • 点数较少或点分布均匀时效率较高。

4. 射包的应用

(1) 计算几何

  • 用于解决多边形面积计算、交集运算、点是否在凸区域内等问题。

(2) 图像处理

  • 在图像分析中,射包可用于描述目标物体的边界形状。

(3) 机器学习

  • 在分类问题中,射包用于支持向量机(SVM)的边界划分。

(4) 数据分析

  • 用于识别点集的极值,分析分布范围。

5. 二维平面上的射包

在二维平面上,射包可以被看作是包含所有点的最小凸多边形,具体构建过程如下:

  1. 点的排序

    • x-坐标(或 y-坐标)排序。
  2. 扫描法

    • 使用栈记录射包的顶点,通过顺时针或逆时针的方向保证凸性。
  3. 边的连接

    • 构建上下两个凸链,最终形成闭合的多边形。

6. 射包的三维扩展

在三维空间中,射包是包含点集的最小凸多面体。构建三维射包的常用算法包括:

  • Incremental Algorithm:逐点插入构建。
  • Divide and Conquer:分治法扩展到三维。
  • Quickhull:快速求解方法。

7. 实例示意

二维射包

给定点集 (2,3),(1,1),(3,0),(0,0),(2,2),射包是一个凸多边形,其顶点按逆时针顺序依次为: (0,0),(3,0),(2,3),(1,1)

三维射包

给定点集 (x,y,z),射包是一个凸多面体,顶点为点集中的子集,边和面由相邻顶点构成。

 

8.总结

  • 定义:射包是包含点集的最小凸集合。
  • 性质:唯一性、凸性和包含性。
  • 算法:Graham 扫描法和 Quickhull 是最常用的构建算法。
  • 应用:广泛用于计算几何、图像处理、机器学习等领域。

射包是计算几何中的基础问题,其高效求解对许多实际问题具有重要意义。

posted @ 2024-11-20 21:25  z_s_s  阅读(259)  评论(0)    收藏  举报