假设我们在平面中有一组点,每个点都由一对整数坐标描述。有没有办法在这个点上找到具有顶点的三角形,并且最大可能区域比O(n^3)算法更快?查找三角形最大可能区域的最快方法
4
A
回答
1
- 找到凸包。
- 对于位于凸包上的点(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)中工作。
编辑2:this question的答案显示了如何更快地做到这一点。你可以将两种方法结合起来做更好的事情(在O(log n))中,在构造凸包之后,尽管它的构造仍然是O(n log n))。
+0
哇!尼斯想到了在加入对点的线段最大距离处进行二分法搜索。这应该在这对点的两侧完成。 –
相关问题
- 1. 查找最大可能区域
- 2. 查找三角形的区域
- 3. 找到最大值总和三角形
- 4. 用3D计算点到三角形距离的最快方法?
- 5. 查找给定区域的直角三角形的边界
- 6. 查找具有不同三角形的最大路线
- 7. 查找字典中最大的区域
- 8. 给定一组三角形的长度,找到最大面积三角形
- 9. 用C++存储三角形和线条的最佳(最快)方法?
- 10. 从区域计算矩形边的最快方法?
- 11. 正方形内的两个三角形可点击区域
- 12. 三角形内的最大曲面
- 13. RenderScript中的最大三角形数
- 14. OpenGL:绘制三角形和四边形混合的最快方法?
- 15. 帕斯卡三角形最大路径
- 16. 在直方图中查找最大矩形区域中的酒吧索引
- 17. 查找破损DIV的最快方法
- 18. Python3:检查三边是否能够使用三角形不等式形成非零区域的三角形
- 19. 使用扫描仪查找圆形,三角形和矩形的区域
- 20. 查找所有可能的子串以最快的方式
- 21. 在PHP中找到最大频率元素的最快方法
- 22. 查找最大功能的
- 23. 使用R查找大量值的最快方法是什么?
- 24. 在大列表中查找重复号码的最快方法
- 25. 查找heroku数据库大小的最快方法
- 26. L形区域的三角剖分
- 27. 虚构的三角形区域
- 28. 寻找最大素因子(最快程序可能)
- 29. 查找最大可能的多边形组点
- 30. 寻找最小允许的三角形的第三面
http://math.stackexchange.com/是问这个问题的好地方。 –
你也可以尝试:http://cs.stackexchange.com/ – jfs
@OllieJones我怀疑它 - 这是一个算法(即编程)的问题。 – Dukeling