【问题标题】:The fastest way to find the greatest possible area of triangle找到最大可能三角形面积的最快方法
【发布时间】:2013-11-09 13:36:33
【问题描述】:

假设我们在平面上有一组点,每个点都由一对整数坐标描述。有没有办法比 O(n^3) 算法更快地找到在这个点上具有最大可能面积的顶点的三角形?

【问题讨论】:

标签: arrays algorithm geometry plane


【解决方案1】:
  1. 找到凸包。
  2. 对于位于凸包上的每一 点 (A, B),找到第三个点 C,它给出三角形 ABC 的最大面积。这可以使用 O(log n) 中的二进制搜索来完成。

要进行二分搜索,请按某种顺序(例如逆时针)排列凸包上的点。 A 和 B 之间有两个点序列,一个是从 A 到 B,另一个是从 B 到 A。分别考虑。

二分查找步骤如下。在点的间隔中间取三个连续的点C、C'、C''。计算三个区域 CAB、C'AB、C''AB。如果 C' 是三个中最大的,则它是全局最大值,搜索结束。如果 C 最大,则最大值在区间的左半部分。如果 C'' 最大,则最大值在右半部分。 (编辑:注意,新的间隔应该在其中一个末端包含 C')。

那里,一个在 O(n^2 log n) 中工作的算法。

编辑 2this question 的答案显示了如何显着加快速度。您可以结合这两种方法来做得更好(在构建凸包后的 O(log n) 中,尽管构建凸包仍然是 O(n log n))。

【讨论】:

  • 哇!很好地考虑了对距连接对点的线段最大距离处的点的二分搜索。这应该对这对点的两侧进行。
猜你喜欢
  • 1970-01-01
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 2021-01-13
  • 1970-01-01
  • 2021-11-26
  • 2013-07-30
相关资源
最近更新 更多