获取 2D 平面中 2 个最远点的算法(用于家庭作业)

Algorithm to get the 2 most distant point in a 2D plane (for homework)

我必须制定一个高效的算法来获取彼此距离最远的两个点,并且我正在尝试获得 O(nlogn) 复杂度。 我搜索了一种有效的算法,但我只能找到最近的点。

输出应该只打印 2 个点。

我现在找到的是GeeksForGeeks的这个算法:https://www.geeksforgeeks.org/closest-pair-of-points-using-divide-and-conquer-algorithm/ 但适用于最近的点。

这个解决方案:

mukeshiiitm.wordpress.com/2008/05/27/find-the-farthest-pair-of-points/

对于家庭作业来说,这看起来太复杂了。

第一种方法,看起来很奇怪,而且我认为它对我的问题不起作用。

如有任何帮助,我们将不胜感激。

好吧,这是家庭作业,所以没有代码示例:)

这是 O(n log n) 方法:

  1. 使用任何 O(n log n) 凸包算法找到所有给定点的 Convex Hull

  2. 现在我们可以注意到最远的2个点仍然在凸包上

  3. 我们可以在 O(n) 时间内使用 Rotating calipers 技术找到这些点