2014-11-14 117 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

你可以設置它,使每個點都有它自己的距離變量(像一個類的對象)。然後檢查特定變量以查看哪一個最接近。