计算几何 平面最近点对 nlogn分治算法 求平面中距离最近的两点

  • Post author:
  • Post category:其他






本文全文原创 转载请注明出处




http://blog.csdn.net/lytning/article/details/25370169

平面最近点对,即平面中距离最近的两点

分治算法:


int

SOLVE(

int

left,

int

right)

//求解点集中区间[left,right]中的最近点对

{


double

ans;

//answer



0)    调用前的预处理:对所有点排序,以x为第一关键词y为第二关键字 , 从小到大;

1)    将所有点按x坐标分成左右两部分;


/*      分析当前集合[left,right]中的最近点对,有两种可能:


1. 当前集合中的最近点对,点对的两点同属于集合[left,mid]







同属于集合[mid,right]


则ans = min(集合1中所有点的最近距离, 集合2中所有点的最近距离)


2. 当前集合最近点对中的两点分属于不同集合:[left,mid]







[mid,right]


则需要对两个集合进行合并,找出是否存在p∈[left,mid],q∈[mid,right],使得distance(p,q)小于当前ans(即步骤1中求得的ans);



版权声明:本文为Lytning原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。