2013-06-02 1 views
0

(격자 점을 찾는), I는 4 점 주도로 설정 그리드 시스템을 오른쪽 위, 오른쪽 아래, 오른쪽 위, 왼쪽 위 및 왼쪽 아래에 각각 있습니다. 이것은 모든 점 사이의 거리를 일정하게 유지합니다.격자 점 알고리즘 I은 대신에 모든 점 사이의 임의의 거리의 <a href="http://en.wikipedia.org/wiki/Closest_pair_of_points_problem" rel="nofollow">closest pair of points algorithm</a></p> <p>같은 알고리즘을 검색하고

예를 들어이 그리드에 외부 점을 놓을 경우 가장 가까운 4 점 (그리드 스퀘어의 끝점을 지정)을 찾아 가정하면 어떤 그리드 사각형인지 찾아야합니다.

가장 가까운 점에 대한 알고리즘을 구현할 예정 이었지만, 점이 항상 서로 같은 거리에 있기 때문에 항상 다른 점이 더 효율적인 알고리즘이 될지 몰랐습니다.

답변에 대한 자세한 설명은 필요하지 않습니다. 올바른 방향으로의 한 지점입니다.

+0

명확히하기 위해; 당신은 사각형 격자를 가지고 있으며 임의의 점이 어느 사각형에 있는지 알고 싶습니까? (만약 이것이 아니라면, 아마 당신의 포스트에 다이어그램을 추가 할 가치가 있습니다 ...) –

+0

정확히 내가해야 할 일이 없습니다. 그리드의 4 개의 끝점 (오른쪽 위, 오른쪽 아래, 왼쪽 위, 왼쪽 아래)을 찾는 것이 가장 효율적인 방법이라고 가정했습니다. –

답변

1

2 차원이라고 가정합니다. 매우 간단하게이 작업을 수행 할 수있었습니다. 비슷한 기술을 사용하여 대규모 데이터 마이닝 프로젝트에서 공간 클러스터링을 신속하게 최적화했습니다.

좌표 공간을 X 및 Y 방향의 고정 된 수의 그리드 선으로 나눕니다 (이 4 점을 동일하게 간격을두고 이미 작성한 것으로 보입니다).

점을 삽입 할 때 그리드 단계 간격만큼 X 및 Y 방향으로 원점에서 거리 (정수 나누기)를 나눕니다. 그런 다음 가장 가까운 X/Y 그리드 교차점을 식별하는 두 개의 좌표가 있습니다. 나머지 부분을 사용하여 포인트가 속한 그리드 교차점의 측면을 지정하십시오.

정말 복잡해지기를 원한다면 kD- 트리 등을 사용할 수 있습니다. 그러나이 예제는 보증 할만큼 간단하지 않다고 생각합니다. 더 복잡한 공간 분할.

+0

** 그리드 단계 간격으로 X 및 Y 방향으로 원점에서 거리를 나누어 주시면 감사하겠습니다 ** x 및 y 구성 요소를 나누어 사용 하시겠습니까? 5 (각 격자 사각형의 크기)로하면 (x, y) * 5가 가장 가까운 격자 교차점입니까? –

+1

예, (100,50)에 점수가 있다고 가정 해보십시오. 귀하의 그리드는 X와 Y (이 경우 5 개)가 같은 너비로 설정되어 있으므로 100/5 = 20, 50/5 = 10으로 나눕니다. 실제로 포인트는 그리드 셀의 경계에 정확하게 놓여집니다 (20 , 10). 그리고 이것은 당신이 그 세포에 그것을 삽입 할 수 있음을 당신에게 알려 줄 것입니다; X 또는 Y 방향으로 나머지가 있다면, 아마도 그 방향으로 다음으로 높은 셀로 밀어 넣기를 원할 것입니다. –

+0

도움 주셔서 감사합니다. 그것은 제가 생각했던 것보다 훨씬 직설적 인 것처럼 보입니다. –

관련 문제