algorithm - 获取 2D 平面中最远的 2 个点的算法(用于家庭作业)
问题描述
我必须制定一个有效的算法来获得彼此最远的两个点,并且我试图获得 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) 方法:
使用任何 O(n log n) 凸包算法找到所有给定点的凸包
现在我们可以注意到最远的 2 个点仍然在凸包上
我们可以 在 O(n) 时间内使用旋转卡尺技术找到这些点
推荐阅读
- java - 通过Java程序连接Oracle
- docker - 如何将 ConfigMap 分配给已经在运行的 pod?
- java - Android 客户端和 Java 服务器“Java.net.ConnectException”
- c - 如何阻止 GCC 将此逐字节复制优化为 memcpy 调用?
- java - 通过 ojdbc 连接到 oracle 数据库 12c 时出现用户名和密码问题
- python - 私有 S3 存储桶的预签名 URL 显示 AWS 访问密钥 ID 和存储桶名称。这是一个安全问题吗?
- wordpress - 使 Wordpress 后编辑左侧列以小分辨率位于右侧列的顶部
- python - 如何使用 Python 以编程方式在 Mac 上聚焦窗口?
- python - 调整窗口大小时如何使布局均匀扩展?
- javascript - 页面刷新时随机图像显示顺序