【发布时间】:2012-07-16 14:15:30
【问题描述】:
最近点对问题在计算几何中是众所周知的:给定一个点列表 (x, y) 找到具有最小欧几里得距离的点对。现在我要问这个问题的一个变体:给定一个包含 n 个点 (xi,yi) (n+1>i>0) 的列表,找到每个点 (xi,yi) 的最近欧几里得距离,然后计算所有点的平均最近欧几里得距离。我知道蛮力方法:
all_distance = [];
for i= 1 to n
p = (xi,yi);
dis = [];
for j= 1 to n
if j==i
continue;
else
q = (xj,yj);
pt_dis = distance(p,q);
end
dis = [dis; pt_dis];
end
all_distance = [all_distance; nearest(dis)]
end
mean_distance = all_distance/n;
此方法简单明了,但计算速度较慢。我想知道是否有一些快速算法可以解决这个问题。谢谢!
【问题讨论】: