最小面积可以覆盖一定百分比的点

时间:2018-07-17 11:46:03

标签: python algorithm scipy geometry polygon

考虑到一组2D点,我想定义一个多边形,该多边形覆盖所有点的一定百分比,同时保持其面积尽可能小。

我开始考虑这样的算法:

  1. 从最接近均值的2个点开始
  2. 遍历所有其他点
  3. 添加导致覆盖面积最小的点
  4. 重复2和3,直到达到所需的百分比

我认为这可行,但是听起来效率很低。在计算面积上最好的选择是使用凸包的现有实现。我的问题听起来也像是经典的数学问题,我怀疑其中可能有开箱即用的scipy函数。

什么是解决或近似这个问题的有效而简单的方法?

编辑:生成的多边形应为凸形

1 个答案:

答案 0 :(得分:0)

  1. 找到所有点的中心。
  2. 移动所有点以将其用作原点。
  3. 交换到极坐标。
  4. 按从极坐标开始的半径递增的顺序对点进行排序。
  5. 选择最接近原点的X%。
  6. 围绕这些点生成convex hull

不确定它是否最佳,但它似乎是可计算的,至少应该是一个很好的近似值。