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. Hỡnh 2.10 chỉ ra cỏch nhúm cỏc hỡnh chữ nhật như sau. Nhúm Cỏc chữ nhật G1 R1, R2, R3 G2 R4, R5, R6, R7 G3 R8, R9
Hỡnh 2.10. Bản đồ mẫu mụ tả cỏch nhúm cỏc hỡnh chữ nhật minh họa cõy R
Hỡnh 2.10 chỉ ra cõy R bậc 4 liờn kết với cỏc chữ nhật trờn hỡnh 2.10. Cấu trỳc của một R-Trees được định nghĩa như sau:
rtnodetype = record
Rect1, ..., Rectk: Rectangle; P1, ..., Pk : rtnodetype; end