- 问题
最近对问题 - 解析
最近对问题描述的就是在包含n个端的集合中找到距离最近的两个点,当然问题也可以定义在多维空间中,但是这里只是跟随书上的思路实现了二维情况下的最近对问题。假设所有讨论的点是以标准的笛卡尔坐标形式(x,y)给出的,那么在两个点Pi=(Xi,Yi)和Pj=(Xj,Yj)之间的距离是标准的欧几里得距离:d(Pi,Pj)=sqrt( (X1-X2)2+(Y1-Y2)2 )
1、蛮力法
计算出所有的点之间的距离,然后找出距离最小的那一对,在这里增加效率的一种方式是只计算点下标 i<j 的那些对点之间的距离,这样就避免了重复计算同一对点间距离。
2、分治法
用分治法解决问题就是将集合s分为两个集合s1和s2。每个解合都有n/2个点,接着在子集和中递归求解最近的点。 - 分析
蛮力法:O(n2)
分治法:O(nlogn)
最近对问题
最新推荐文章于 2022-03-24 20:32:13 发布