Development Tip

KD- 트리와 R- 트리의 차이점은 무엇입니까?

yourdevel 2020. 11. 6. 20:43
반응형

KD- 트리와 R- 트리의 차이점은 무엇입니까?


KD-tree와 R-tree의 정의를 살펴 보았습니다. 그들은 거의 같은 것 같습니다.

KD- 트리와 R- 트리의 차이점은 무엇입니까?


R- 트리k 개의 d- 트리는 유사한 아이디어 (축 정렬 영역을 기반으로하는 공간 분할)를 기반으로하지만 주요 차이점은 다음과 같습니다.

  • k d- 트리의 노드 는 분리 평면을 나타내는 반면 R- 트리의 노드는 경계 상자를 나타냅니다.
  • k 개의 d- 트리는 전체 공간을 영역으로 분할하는 반면 R- 트리는 관심 지점을 포함하는 공간의 하위 집합 만 분할합니다.
  • k 개의 d- 트리는 분리 된 파티션 (포인트는 하나의 영역에만 속함)을 나타내는 반면 R- 트리의 영역은 겹칠 수 있습니다.

(공간 분할을위한 유사한 종류의 트리 구조가 많이 있습니다 : 쿼드 트리, BSP- 트리, R *-트리 등)


실제로는 상당히 다릅니다. 그들은 비슷한 목적 (공간 데이터에 대한 지역 쿼리)을 제공하며 둘 다 트리이지만 공통점이 전부입니다.

  • R- 트리는 균형을 이루고 kd- 트리는 그렇지 않습니다 (대량로드되지 않는 한). 이것이 데이터를 변경하는 데 R- 트리가 선호되는 이유입니다. kd- 트리를 재 최적화하기 위해 다시 빌드해야 할 수도 있기 때문입니다.
  • R- 트리는 디스크 지향적 입니다. 실제로 디스크상의 표현에 직접 매핑되는 영역에서 데이터를 구성합니다. 따라서 실제 데이터베이스 및 메모리 부족 작업에 더 유용합니다. kd- 트리는 메모리 지향적 이며 디스크 페이지에 넣는 것이 중요하지 않습니다.
  • R- 트리는 전체 데이터 공간을 포함하지 않습니다. 빈 영역이 드러날 수 있습니다. kd-tree는 항상 전체 공간을 덮습니다.
  • kd-trees 바이너리 는 데이터 공간을 분할 하고, r-trees는 데이터를 직사각형 으로 분할합니다 . 이진 분할은 분명히 분리되어 있습니다. r- 트리의 직사각형이 겹칠 수 있지만 (오버랩을 최소화하려고하지만 실제로는 때때로 좋습니다)
  • kd-trees는 메모리에서 구현하기가 훨씬 쉽습니다. 이것이 실제로 주요 이점입니다.
  • R- 트리는 직사각형과 다각형을 저장할 수 있고 , kd- 트리는 점 벡터 만 저장합니다 (폴리곤에 중첩이 필요하므로)
  • R- 트리에는 다양한 최적화 전략, 다양한 분할, 벌크 로더, 삽입 및 재 삽입 전략 등이 있습니다.
  • Kd- 트리는 제곱 유클리드 거리와 민코프 스키 표준을 지원하는 반면 Rtree는 측지 거리 (지리 데이터에서 가까운 지점을 찾기 위해)도 지원하는 것으로 나타났습니다.

이 답변에 언급되지 않은 두 가지의 주요 차이점은 KD 트리는 대량로드 상황에서만 효율적이라는 것입니다. 일단 구축되면 KD 트리를 수정하거나 재조정하는 것은 사소한 일이 아닙니다. R- 트리는 이것으로 고통받지 않습니다.

참고 URL : https://stackoverflow.com/questions/4326332/what-is-the-difference-between-a-kd-tree-and-ar-tree

반응형