Sự khác biệt giữa cây KD và cây R là gì?


81

Tôi đã xem xét định nghĩa của KD-tree và R-tree. Đối với tôi, dường như chúng gần như giống nhau.

Sự khác biệt giữa cây KD và cây R là gì?

Câu trả lời:


60

R-câyk d-cây được dựa trên ý tưởng tương tự (không gian phân vùng dựa trên khu vực trục thẳng hàng), nhưng sự khác biệt chính là:

  • Các nút trong k cây d đại diện cho các mặt phẳng phân tách, trong khi các nút trong cây R biểu thị các hộp giới hạn.
  • k cây d phân chia toàn bộ không gian thành các vùng trong khi cây R chỉ phân vùng tập con không gian chứa các điểm quan tâm.
  • k cây d đại diện cho một phân vùng rời rạc (các điểm chỉ thuộc một vùng) trong khi các vùng trong cây R có thể trùng nhau.

(Có rất nhiều loại cấu trúc cây tương tự để phân vùng không gian: cây tứ phân, cây BSP, cây R *, v.v.)


106

Chúng thực sự khá khác nhau. Chúng phục vụ mục đích tương tự (truy vấn vùng trên dữ liệu không gian) và cả hai đều là cây (và cả hai đều thuộc họ chỉ mục phân cấp khối lượng giới hạn), nhưng đó là tất cả những điểm chung mà chúng có.

  • Cây R là cân bằng , cây kd thì không (trừ khi được tải số lượng lớn). Đây là lý do tại sao cây R được ưa thích hơn để thay đổi dữ liệu, vì cây kd có thể cần được xây dựng lại để tối ưu hóa lại.
  • R-Trees là hướng đĩa . Chúng thực sự sắp xếp dữ liệu trong các khu vực ánh xạ trực tiếp đến biểu diễn trên đĩa. Điều này làm cho chúng hữu ích hơn trong cơ sở dữ liệu thực và hoạt động ngoài bộ nhớ. kd-tree là định hướng bộ nhớ và không phải là tầm thường để đưa vào các trang đĩa
  • kd-tree rất thanh lịch khi tải hàng loạt (kudos thành SingleNegationElimination để chỉ ra điều này), trong khi cây R tốt hơn để thay đổi dữ liệu (mặc dù chúng có lợi khi tải hàng loạt, khi được sử dụng với dữ liệu tĩnh).
  • R-Cây không bao phủ toàn bộ không gian dữ liệu. Các khu vực trống có thể được phát hiện. cây kd luôn bao phủ toàn bộ không gian.
  • kd-tree nhị phân chia không gian dữ liệu, R-tree phân vùng dữ liệu thành các hình chữ nhật . Các phân tách nhị phân rõ ràng là rời rạc; trong khi các hình chữ nhật của cây R có thể chồng lên nhau (điều này thực sự đôi khi tốt, mặc dù người ta cố gắng giảm thiểu sự chồng chéo)
  • kd-tree dễ triển khai hơn rất nhiều trong bộ nhớ, đó thực sự là lợi ích chính của chúng
  • Cây R có thể lưu trữ hình chữ nhật và đa giác , cây kd chỉ lưu trữ vectơ điểm (vì cần có sự chồng chéo lên nhau đối với đa giác)
  • R-tree đi kèm với các chiến lược tối ưu hóa khác nhau, các phần tách khác nhau, bộ tải hàng loạt, chiến lược chèn và chèn lại, v.v.
  • kd-tree sử dụng khoảng cách một chiều tới siêu phẳng phân tách dưới dạng ràng buộc; Cây R sử dụng khoảng cách tối thiểu d-chiều tới siêu hình chữ nhật có giới hạn để giới hạn (chúng cũng có thể sử dụng khoảng cách tối đa cho một số truy vấn đếm, để lọc các giá trị dương thực sự).
  • kd-tree hỗ trợ khoảng cách Euclid bình phương và định mức Minkowski, trong khi Rtrees đã được chứng minh là cũng hỗ trợ khoảng cách trắc địa (để tìm các điểm gần trên dữ liệu địa lý).

37

Một sự khác biệt chính giữa hai loại không được đề cập trong câu trả lời này là cây KD chỉ hiệu quả trong các tình huống tải hàng loạt. Sau khi được xây dựng, việc sửa đổi hoặc tái cân bằng cây KD là không hề nhỏ. Cây R không bị như vậy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.