给定一组n
点,我们能找到三个点来描述O(n^2)
中面积最小的三角形吗?如果是,我们如何,如果没有,我们可以做得比O(n^3)
更好吗?
我发现一些论文表明这个问题至少和要求找到三个共线点(一个面积为0的三角形)的问题一样困难。这些论文通过将其简化为三和问题的实例来描述O(n^2)
解决该问题的方法。然而,我无法找到任何我感兴趣的解决方案。有关这样的论文,请参阅this(查找一般职位)以及有关3-sum的更多信息。
答案 0 :(得分:5)
O(n 2 )算法用于查找最小面积三角形。
例如,你可以在这里找到一个:http://www.cs.tufts.edu/comp/163/fall09/CG-lecture9-LA.pdf
如果我正确理解pdf,基本思路如下:
对于每对 AB ,您会找到最接近它的点。
您构建了点的对偶,以便行< - >点。 线 y = mx + c 被映射到点(m,c)
在对偶中,对于给定的点(对应于原始点集中的一个段),最近的行垂直给出了1所需的点。
显然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