最接近的一對點問題在計算幾何中是衆所周知的:給定點列表(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;
這種方法很簡單,但計算速度慢。我想知道是否有一些快速算法來解決這個問題。謝謝!
如果分佈間隔相對均勻但非均勻分佈失敗,則方法工作正常。 kd樹或四叉樹方法在所有情況下都更快,包括均勻分佈。 – atb 2012-07-18 18:17:33