可能重复:如何查找凸包中除暴力搜索以外的最大三角形
我有一组随机点,希望找到一个由这些点构成且面积最大的三角形,其中每个顶点位于其中一个点上。
到目前为止,我已经发现最大三角形的顶点只会位于点云(或凸包)的外部点上,因此我编写了一个使用Graham扫描在nlogn时间内执行此操作的函数。
然而,这就是我卡住的地方。我唯一能想出来的从这些点中找到最大三角形的方法是采用n ^ 3时间的暴力搜索,虽然在平均情况下凸包算法通常会排除绝大多数点,但仍是可以接受的。然而,在最坏情况下,也就是点在圆上的情况下,这种方法将失败。
是否有人知道更有效的算法来执行此操作?
注意:我知道CGAL有此算法,但他们没有详细说明它的实现方式。我不想使用库,我想要学习并自己编写代码(还允许我微调它的操作方式,就像Graham扫描一样,在其中其他实现会捕捉到我不想要的共线点)。
到目前为止,我已经发现最大三角形的顶点只会位于点云(或凸包)的外部点上,因此我编写了一个使用Graham扫描在nlogn时间内执行此操作的函数。
然而,这就是我卡住的地方。我唯一能想出来的从这些点中找到最大三角形的方法是采用n ^ 3时间的暴力搜索,虽然在平均情况下凸包算法通常会排除绝大多数点,但仍是可以接受的。然而,在最坏情况下,也就是点在圆上的情况下,这种方法将失败。
是否有人知道更有效的算法来执行此操作?
注意:我知道CGAL有此算法,但他们没有详细说明它的实现方式。我不想使用库,我想要学习并自己编写代码(还允许我微调它的操作方式,就像Graham扫描一样,在其中其他实现会捕捉到我不想要的共线点)。