【发布时间】:2018-09-03 19:53:58
【问题描述】:
给定二维平面中的一组 N 个点,表示为 (x,y) 坐标对。什么是快速的算法来选择三个点,使这些点形成的三角形具有最大周长?
【问题讨论】:
-
暴力是唯一的方法。所以时间复杂度是
O(n^3)。 -
实际上在蛮力算法中要检查的三角形的数量是(n 选择 3),也就是 ~ (n^3)/6,所以复杂度确实是 O(n^3) .您可以忽略不属于凸包的点,以及沿直线的点,但在最坏的情况下,您仍然有 n 个点。
-
@Richardissimo 是否保证最大面积的解决方案也适用于最大周长? (将 abc 改进为 abd 意味着 d 超出了通过 c 的一条线,平行于 ab 的面积,d 超出了一条通过 c 的椭圆,焦点为 a 和 b 为周长。)
-
抱歉,我的错。最大周长与最大面积无关。 (撤回重复的建议。)