2014-11-14 116 views
-3

有没有更快的方法来找到特定节点(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

我相信他意味着比彻底的比较更快。这是从他的下一句话中隐含的。 – shasan 2014-11-14 17:27:46

+0

我正在处理2D点 – 2014-11-14 17:30:33

回答

1

通常的快速方法使用四叉树或八叉树(分别为二维和三维点)或R-树。

+0

很酷。那么......会研究他们......非常感谢你...... – 2014-11-14 17:37:05

0

你可以设置它,使每个点都有它自己的距离变量(像一个类的对象)。然后检查特定变量以查看哪一个最接近。