[笔记本: 演算法] 多边形篇 Part 3 - Furthest Pair of Points 最远两点配对

Furthest Pair of Points 最远两点配对

顾名思义,这个演算法在n个点中,找出拥有最长距离的的两点。
这个方法可以利用凸包的特性,因为凸包上所有的点是包围所有点的多边形,因此最远的两点一定是凸包的其中两点。
传送门:凸包解释

http://img2.58codes.com/2024/20113622WVbXBZuL30.png

Naïve Method 朴素法

朴素法是利用排列组合的方式找出最远两点的距离。如果有n个点,每一点需要与(n-1)个点进行配对,因此朴素法需要进行n * (n - 1)次配对。
朴素法的複杂度为http://img2.58codes.com/2024/20113622hZRLb6JII4.png
http://img2.58codes.com/2024/201136224oEFzYinEJ.png

Rotating Calipers 旋转卡尺

步骤ㄧ:找出凸包

旋转卡尺是在找出凸包后,在最大Y值与最小Y值画上两条水平线L1与L2。
http://img2.58codes.com/2024/201136227Fw4MEKmMG.png

步骤二:计算并记录

计算并记录最大Y值与最小Y值的两点距离d(p,q)。
如果同一条线上有两个点以上,L1由左至右,L2由右至左计算。
http://img2.58codes.com/2024/20113622ogumiCFeMQ.png

步骤三:旋转

确定同一条线上都已经计算过后,将两条线L1与L2顺时钟旋转,直到L1或L2碰到下一点。
重複步骤二及步骤三直到L1及L2回到初始位置(L1旋转至L2,L2旋转至L1)。
http://img2.58codes.com/2024/20113622ZYIofKLRr4.png

步骤四:导出最远配对

当L1及L2回到初始位置(L1旋转至L2,L2旋转至L1)后,最远距离的两点配对即为最远配对。
http://img2.58codes.com/2024/20113622xhc73PxPqY.png

完整步骤图

http://img2.58codes.com/2024/20113622j1N5A1YMDb.png

传送门:[笔记本: 演算法] 多边形篇 Part 1 - Simple Polygon 简单多边形
传送门:[笔记本: 演算法] 多边形篇 Part 2 - Convex Hull 凸包


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章