给定点集的最小面积三角形

时间:2010-10-15 08:26:33

标签: algorithm optimization computational-geometry

给定一组n点,我们能找到三个点来描述O(n^2)中面积最小的三角形吗?如果是,我们如何,如果没有,我们可以做得比O(n^3)更好吗?

我发现一些论文表明这个问题至少和要求找到三个共线点(一个面积为0的三角形)的问题一样困难。这些论文通过将其简化为三和问题的实例来描述O(n^2)解决该问题的方法。然而,我无法找到任何我感兴趣的解决方案。有关这样的论文,请参阅this(查找一般职位)以及有关3-sum的更多信息。

3 个答案:

答案 0 :(得分:5)

O(n 2 算法用于查找最小面积三角形。

例如,你可以在这里找到一个:http://www.cs.tufts.edu/comp/163/fall09/CG-lecture9-LA.pdf

如果我正确理解pdf,基本思路如下:

  1. 对于每对 AB ,您会找到最接近它的点。

  2. 您构建了点的对偶,以便行< - >点。 线 y = mx + c 被映射到点(m,c)

  3. 在对偶中,对于给定的点(对应于原始点集中的一个段),最近的行垂直给出了1所需的点。

  4. 显然2& 3可以在 O(n 2 时间内完成。

    此外,我怀疑论文通过将减少到 3SUM来显示3SUM硬度。它应该是相反的。

答案 1 :(得分:2)

有一种算法可以找到复杂度为O(n ^ 2 * log(n))的所需区域。

对于集合中的每个点Pi执行以下操作(不失一般性,我们可以假设Pi在原点或平移点以使其成为原点)。

然后对于每个点(x1,y1),(x2,y2),三角形区域将为0.5 * | x1 * y2-x2 * y1 |所以我们需要最小化这个价值。我们不是迭代所有剩余点对(这给我们O(N ^ 3)复杂度),而是使用谓词X1 * Y2 < X2 * Y1对这些点进行排序。声称要找到具有最小面积的三角形,我们需要仅检查已排序数组中的相邻点对。

因此,每个点的此过程的复杂性为n * log(n),整个算法在O(n ^ 2 * log(n))中工作

P.S。无法快速找到这个算法正确的证据:(希望以后能找到并发布它。

答案 2 :(得分:1)

问题

  

给定一组n个点,我们能找到三个描述O(n ^ 2)面积最小的三角形的点吗?如果是,如何,如果没有,我们可以做得比O(n ^ 3)

更好

在本文中得到了更好的解决:James King, A Survey of 3sum-Hard Problems, 2004