2009-04-25 8 views
3

나는 2D 점 집합이 있고 어떤 점 쌍이 집합에서 최단 거리인지를 알아내는 가장 빠른 방법을 찾아야합니다.점 사이의 최소 거리를 찾는 가장 빠른 방법

이 작업을 수행하는 최적의 방법은 무엇입니까? 내 접근 방식은 quicksort 그들을 정렬하고 거리를 계산하는 것입니다. 이것은 O (nlogn + n) = O (nlogn)입니다.

선형 시간으로 처리 할 수 ​​있습니까?

감사합니다. O (N^2)의 모든 지점 사이

+1

어떻게 quicksort로 2 차원 데이터를 정렬합니까? 그리고 이것이 어떻게 가장 가까운 두 점을 찾는 데 도움이됩니까? –

+0

그냥 x 좌표로 정렬합니다. 기본적으로 http://en.wikipedia.org/wiki/Closest_pair_problem에서 설명한 알고리즘을 구현 한 것 같습니다. 먼저 x로 정렬 한 다음 나누고 정복하십시오. 그래서 더 빠른 길은없는 것 같습니다. –

+1

X로 정렬하면 가장 가까운 점에 가까운 X 값이 없기 때문에 실제 값이 없습니다. X로 정렬해도 모든 점을 다른 모든 점과 비교하여 가장 가까운 쌍을 찾을 필요가 줄어 듭니다. –

답변

-4

번호 최소 거리 당신이 다른 모든 점에 대한 모든 지점을 비교해야하기 때문이다. 기술적으로 그것은 n * n/2입니다. 왜냐하면 단지 채우기를해야하기 때문에 매트릭스의 절반을 채워야하기 때문입니다.

주어진 포인트에 가장 가까운 이웃을 찾는 더 빠른 알고리즘이 있습니다. 불행하게도 가장 가까운 두 점을 찾기 위해 모든 점에 대해이 작업을 수행해야합니다.

+1

다이어그램은 알고리즘이 아닙니다. Fortune 알고리즘은 다이어그램을 생성합니다. http://en.wikipedia.org/wiki/Fortune%27s_algorithm. 이 점이 적용되는지 모르겠지만 점을 비교하는 대신 공간을 분할합니다. –

11

It is actually :

점 문제의 가까운 쌍 쌍 문제computational geometry의 문제가 가까운 또는 : 거리 공간에 N 포인트 부여가 가장 작은 거리를 갖는 점 쌍을 찾기 그 (것)들 사이 ...

floor function가 일정 시간에서 계산 가능하다는 것을 전제로하는 계산 모델에서 문제는 O (n 로그 로그 n) 시간. 우리가 임의의 층의 기능과 함께 사용할 수 있도록하면 문제가

-1

는 각 지점에서 일정한 금액을 프로브와 반복적 심화 DFS를 사용할 수 있다면, ... O (N) 시간이 해결 될 수있다 youd는 두 개의 가장 가까운 점보다 더 멀리 떨어져있는 것을 결코 확인하지 못합니다 ... 그리고 실패한 패스에 의존하지 않으므로 ID DFS의 경향을 재 계산할 필요가 없습니다.

관련 문제