有没有更快的方法来找到特定节点(x,y)和一个点(多个点之间)之间的最短距离?或者使用蛮力是唯一的方法吗?在这种情况下,我处理成千上万的点数。我正在使用名为CodeBlocks的软件完成此任务。目前使用此。
inline double dist(Point p1, Point p2)
{
return sqrt( (p1.x - p2.x)*(p1.x - p2.x) +
(p1.y - p2.y)*(p1.y - p2.y) );
}
double bruteForce(Point P[], int n, Point &p1)
{
double min = DBL_MAX;
for (int i = 0; i < n; ++i)
if (dist(p1, P[i]) < min) {
min = dist(p1, P[j]);
}
return min;
}
答案 0 :(得分:1)
通常的快速方法使用四叉树或八叉树(分别用于2D和3D点)或R树。
答案 1 :(得分:0)
你可以设置它,这样每个点都有它自己的距离变量(就像一个类的对象)。然后检查该特定变量以查看哪一个最接近。
答案 2 :(得分:0)
空间分区在O(log N)
中解决此问题,其中N
是点空间的大小。
http://en.wikipedia.org/wiki/Nearest_neighbor_search#Methods