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

+0

2D 점을 다루고 있습니다 –

답변

1

일반적인 빠른 방법은 쿼드 - 트리 또는 8 진수 (각각 2D 및 3D 포인트 용) 또는 R- 트리와 같은 것을 사용합니다.

+0

차가워졌습니다. 바로 그때 .... 그들에 대한 연구를 할 것입니다 .... 정말 고마워요. –

0

각 점마다 고유 한 거리 변수 (예 : 클래스의 객체)가 있도록 설정할 수 있습니다. 그런 다음 특정 변수가 가장 가까운 변수인지 확인하십시오.