Cây R (R-Trees)

Một phần của tài liệu vấn đề lưu trữ trong hệ thống dịch vụ dựa trên vị trí (Trang 51 - 54)

Trong phần này chúng ta sẽ giới thiệu một kiểu cấu trúc dữ liệu mới gọi là R- Trees, cấu trúc này có thể đƣợc sử dụng để lƣu trữ các vùng chữ nhật của một hình ảnh hay bản đồ. R-Trees đặc biệt hữu ích trong việc lƣu trữ dữ liệu số lƣợng lớn trên đĩa. Do việc truy cập đĩa thƣờng rất chậm, R-Trees cung cấp một cách thuận tiện trong việc cực tiểu hoá số lần truy cập đĩa.

Mỗi R-Trees kết hợp với một thứ tự là một số nguyên K. Mỗi nút R-Trees không phải là lá bao gồm một tập từ K/2 đến K hình chữ nhật. Bằng trực quan thấy rằng mỗi nút không lá trong R-Trees trừ nút gốc ít nhất phải là một nửa. Đặc điểm này làm cho R-Trees thích hợp với việc truy vấn đĩa bởi vì mỗi truy cập đĩa mang lại một trang chứa đựng một vài hình chữ nhật (ít nhất K/2). Hơn nữa, do việc lƣu trữ một số hình chữ nhật trong một trang, chiều cao của R-Trees sử dụng để lƣu trữ tập hợp các hình chữ nhật, thƣờng rất nhỏ. Do vậy số lần truy cập đĩa giảm bớt so với các cây mô tả trên.

Một hình chữ nhật hoặc là “thực” hoặc là một hình bao hàm một nhóm hình chữ nhật. Các nút lá bao gồm một hình chữ nhật “thực” trong khi các nút không lá bao gồm các hình chữ nhật nhóm từ một tập các hình chữ nhật.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Nhóm Các chữ nhật

G1 R1, R2, R3

G2 R4, R5, R6, R7

G3 R8, R9

Hình 2.9: Bản đồ mẫu mô tả cách nhóm các hình chữ nhật minh họa cho cây R Chèn và tìm kiếm trong R-Trees

Khi chèn một hình chữ nhật mới vào một R-Trees ta làm theo những bƣớc dƣới đây:

Chúng ta xem xét trong số các hình chữ nhật liên quan với nút gốc hình nào cần đƣợc mở rộng ít nhất (về mặt diện tích) để chứa hình chữ nhật đƣợc chèn. Ví dụ nếu chúng ta chèn hình chữ nhật R10 (hình 2.11) vào cây R trên hình 2.10 thì cách dễ nhất là mở rộng nhóm G1 bởi vì việc mở rộng các nhóm khác thì diện tích bị bao phủ bởi nhóm này sẽ tăng đáng kể.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Do đó từ những liên kết của G1 (từ gốc, hình 2.10) chúng ta sẽ chèn R10 vào khe có sẵn.

Hình 2.10: Trình tự chèn vào cây R Xoá trong cây R-Trees

Việc xóa các đối tƣợng từ cây R-Trees có thể gây ra một nút trong cây R- Tree trở nên thiếu hụt (underflow). Nhắc lại rằng một R-Tree bậc k phải bao gồm ít nhất K/2 hình chữ nhật trong nó. Khi chúng ta xoá một hình chữ nhật từ một R- Tree, chúng ta phải đảm bảo rằng nút đó không bị thiếu hụt. Ví dụ, xem xét R-Trees nhƣ hình 2.10 trình bày trên. Giả thiết chúng ta muốn xoá chữ nhật R9.

Nút chứa R9 chỉ còn lại một nút trong nó nếu thực hiện xoá R9, kết quả là nút này sẽ phản ánh một điều kiện hụt. Trong trƣờng hợp này chúng ta phải tạo ra nhóm logic mới. Một khả năng là sắp xếp lại các nhóm nhƣ sau:

Group Rectangles

G1 R1, R2, R3 G2 R4, R6, R7 G3 R5, R8 Cây R mới là kết quả của việc xóa nút R9

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Hình 2.11: Mô tả phép xóa trong cây R

Một phần của tài liệu vấn đề lưu trữ trong hệ thống dịch vụ dựa trên vị trí (Trang 51 - 54)