可能重复:
除了蛮力搜索之外,如何在凸包中找到最大的三角形
我有一组随机点,我想从中找到按面积计算的最大三角形,每个顶点都在其中一个点上。
到目前为止,我已经发现最大三角形的顶点只会位于点云(或凸包)的外部点上,所以我编写了一个函数来做到这一点(在 nlogn 时间内使用 Graham 扫描)。
然而,这就是我卡住的地方。我可以弄清楚如何从这些点中找到最大三角形的唯一方法是在 n^3 时间使用蛮力,这在平均情况下仍然是可以接受的,因为凸包算法通常会剔除绝大多数点。然而,在点在一个圆上的最坏情况下,这种方法将失败。
有人知道更有效地做到这一点的算法吗?
注意:我知道 CGAL 有这个算法,但他们没有详细说明它是如何完成的。我不想使用库,我想学习这个并自己编程(并且还允许我将它调整到我想要它的操作方式,就像其他实现拾取共线点的格雷厄姆扫描一样我不想)。