用分治法求解三维空间中的最近点对

  • Post author:
  • Post category:其他


题目如下:


用分治法求解下面的问题



输入:


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 版权协议,转载请附上原文出处链接和本声明。