题目如下:
用分治法求解下面的问题
输入:
P=(p(1),p(2),…,p(n))为三维空间中n个不同的点,即
P(i)=(x(i), y(i), z(i)) ,1≤i ≤n
输出:
距离最近的两点。
所有的过程与寻找二维空间中的最近点对类似(见算法导论第二版591页),只是在找Y
’
内的最短距离时,需要考虑的紧随其后的点的数目不同。
(1)Divide:我们按照y值的大小来分割三维空间。平面y=middleY代表将点集P分割的中间曲面,得到两个集合pL和pR;
(2)Conquer:分别对pL和pR集合求最近点对,和最近的距离,lMinDistance和rMinDistance,然后将当前的最近距离设置为lMinDistance和rMinDistance的最小值currentMinDistance=min{lMinDistance,rMinDistance};
(3)Merge:建立一个数组middleP和middleArrayY,分别代
版权声明:本文为xiaohui5319原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。