【问题标题】:biggest convex hull in A not containing points in BA中最大的凸包不包含B中的点
【发布时间】:2016-10-08 20:58:26
【问题描述】:

我有两组点,A 和 B。我正在寻找 A 的子集,其凸包最多包含来自 B 和的 n 个点

  • 包含来自 A 的最多点,或
  • 体积最大。

两者都可以。

有没有有效的算法?我的问题是二维的。

【问题讨论】:

    标签: computational-geometry convex-hull


    【解决方案1】:

    不知道如何破解这个。但我会从 A 的 Delaunay 三角剖分开始,然后计算每个三角形内的点。现在我们想在凸子集上最大化面积(2D 对,体积是滑动?)或点数。

    现在每个三角形都是凸的。我们将任何超过 n 点的点标记为“坏”,但是我们分配点,这些三角形不能包括在内。其余的都是候选人。对于每个候选人,去找它的邻居,并尝试发展它。所以我们得到大约 3 * 三角形的数量作为复合四边形候选,每个成功生长的三角形不再是候选,但仍然不是“坏”。所有四边形必须是凸的。如果一个三角形根本没有增长,它仍然是 一个“候选人”,但它已经“完成”了。一旦出现更好的候选人, 它不再是候选并且变得“坏”,没有成功的集合可能包括 它。

    现在下一个阶段,基本思路一样,尽量团结大家 可能的邻居,并从候选名单中删除任何你 吸收。如果你不能成功成长,你就会“完蛋”。但 你不能只是和任何人团结,如果不是凸的,你必须添加 额外的三角形变成凸的。

    最终我们所有的候选人都将被吸收或“完成”,我们有一个赢家。

    问题是这种算法是否会导致候选人呈指数级增长,或者我们是否可以足够快地消除它们以防止这种情况发生。我不知道答案。但我认为,如果您先尝试与较大的邻居联合,您可以很快消除大部分可能的子集。

    【讨论】:

      猜你喜欢
      • 2017-05-22
      • 2017-02-24
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      相关资源
      最近更新 更多