当前位置: 首页 > 知识库问答 >
问题:

尽可能小的区域以覆盖一定百分比的点

尚宏硕
2023-03-14

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

我开始想到这样一个算法:

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

我想这会起作用,但听起来效率很低。我对计算面积的最佳选择是使用凸包的现有实现。我的问题听起来也像一个经典的数学问题,我怀疑有一个scipy函数可能会开箱即用。

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

编辑:生成的多边形应该是凸的

共有1个答案

丌官炎彬
2023-03-14
  1. 找到所有点的中心。
  2. 将所有点移到原点。
  3. 切换到极坐标。
  4. 按极性中心半径增加的顺序对点进行排序。
  5. 选择最接近原点的x%。
  6. 生成围绕这些点的凸包。

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

 类似资料:
  • 问题内容: 我正在使用Sphinx的autodoc插件来自动记录一组模块。我有一个函数accepts ,我想重写文档以显示Python stdlib文档使用的稍微更好的样式。 是否可以覆盖特定功能的自动文档输出? 问题答案: 可以使用以下方法覆盖签名: 但是,具有覆盖签名的函数不会与通过引入的其他函数进行排序。对每个函数使用显式指令可以解决此问题: 加成 您还可以附加到文档字符串: 要覆盖签名和文

  • Highcharts 区域图 以下实例演示了百分比堆叠区域图。 我们在前面的章节已经了解了 Highcharts 基本配置语法。接下来让我们来看下其他的配置。在 plotOptions 中添加 stacking 属性: 配置 plotOptions:数据点选项 plotOptions用于设置图表中的数据点相关属性。plotOptions根据各种图表类型,其属性设置略微有些差异。 配置图表堆叠设置

  • 问题内容: 突出强调了Flexbox用于1-D,而Grid用于2-D,但是我还没有找到清楚的解释,为什么不能将Grid用于1-D并替代Flexbox。在我来到最接近的就是 但您也可能会争辩说,像这样的纯一维布局在Flexbox中更为强大,因为Flexbox允许我们更轻松地移动这些元素(例如,将它们全部移动到一侧或另一侧,更改其顺序,将它们均匀地隔开等)。 我将Grid和Flexbox用于基本布局:

  • 我需要一些帮助来估计某种形态学操作(最好使用skimage或scipy image或通常使用python),这些操作可以帮助我隔离由所有边包围的区域(参见Images.)问题是外壳可以有不同的形状和大小。封闭区域的形状和大小也各不相同。图像的例子,其中封闭的(由白色区域)黑色区域需要隔离。 通过隔离,我的意思是获得封闭的黑色区域中的所有像素坐标。 实施例1

  • 问题内容: 我制作一个可以执行的makefile 。如果coverage小于X,是否有可能使命令失败?我该怎么办? 问题答案: 您可以在测试中使用该功能。TestMain可以充当测试的自定义入口点,然后您可以调用以获取对覆盖率统计信息的访问。 因此,例如,如果您希望失败率低于80%,则可以将其添加到软件包的测试文件之一中: 然后将调用此入口点,您将失败: 请注意,返回的数字低于测试报告的数字。我看

  • 问题内容: 我知道python函数默认是虚拟的。假设我有这个: 我不希望他们能够这样做: 有没有办法防止用户重载roo()? 问题答案: 您可以使用元类: 每当创建子类时,就会调用该元类型的 new 。如果您在场,这将导致错误。仅当没有基类时,它才会接受roo的定义。 您可以通过使用注释来声明哪些方法是最终方法,从而使该方法更加理想。然后,您需要检查所有基准并计算所有最终方法,以查看是否有任何基准