最も近い点のペアの問題は、計算幾何学でよく知られています。点のリスト(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;
この方法は簡単ですが、計算に時間がかかります。この問題を解決するための簡単なアルゴリズムがあるかどうか疑問に思いました。ありがとう!