가장 가까운 쌍 포인트 문제는 계산 지오메트리에서 잘 알려져 있습니다. 주어진 점 목록 (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-tree 또는 quadtree 방법은 균일 한 분포를 포함하여 모든 상황에서 더 빠릅니다. – atb