Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 46 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
46
Dung lượng
386 KB
Nội dung
B-CÂY Ch 4: B-Trees Cấu trúc liệu nhớ ° ° ° B-cây tổng quát hoá tìm kiếm nhị phân – “Hệ số phân nhánh” (branching factor) B-cây tìm kiếm cân thiết kế để làm việc hữu hiệu nhớ (đóa cứng) – Bộ nhớ (main memory) – Bộ nhớ (secondary storage) ° Disk – Track – Page Thời gian chạy gồm – số truy cập vào đóa – thời gian CPU Ch 4: B-Trees Truy cập đóa ° ° Một nút B-cây thường chiếm nguyên disk page Hệ số phân nhánh tùy thuộc vào tỉ lệ kích thước khóa kích thước disk page Ch 4: B-Trees Các thao tác lên đóa ° ° Cho x trỏ đến đối tượng (ví dụ: nút B-cây) Đối tượng x có nhiều trường – Nếu x nằm nhớ chính, truy cập trường x thường lệ, ví dụ key[x], leaf [x], – Nếu x nằm đóa dùng DISK-READ(x) để đọc vào nhớ – Nếu x thay đổi dùng DISK-WRITE(x) để vào đóa trữ x ← trỏ đến đối tượng Cách làm việc tiêu biểu với đối tượng x DISK-READ(x) thao tác truy cập/thay đổi trường DISK-WRITE(x) thao tác không thay đổi trường x Ch 4: B-Trees Hệ số phân nhánh ° Ví dụ B-cây mà: – nút có 1000 khóa, tức B-cây có hệ số phân nhánh 1001 root[T] nút 1000 khóa 1000 khóa 1001 nhánh 1000 1001 1000 1000 1000 1001 1001 1000 1000 Ch 4: B-Trees 1001 nút 1.001.000 khóa 1.002.001 nút 1.002.001.000 khóa Định nghóa B-cây ° Một B-cây T có gốc, mà gốc root[T], có tính chất sau – Mỗi nút x có trường sau ° n[x], số lượng khóa chứa nút x ° khóa: có n[x] khóa, xếp theo thứ tự không giảm, tức key1[x] ≤ key2[x] ≤ ⋅ ⋅ ⋅ ≤ keyn[x ][x] leaf [x], coù trị bool TRUE x FALSE x nút – Mỗi nút x chứa n[x] + trỏ c1 [x], c2 [x],…, cn[x ]+1[x] đến nút ° Ch 4: B-Trees Định nghóa B-cây (tiếp) Mô hình nút B-cây ] [1 x [x] i i− y y ke ke ⋅⋅⋅ x N W ⋅⋅⋅ ci [x] ⋅⋅⋅ Ch 4: B-Trees Định nghóa B-cây (tiếp) – Nếu ki khóa trữ có gốc ci [x] • k ≤ key [x] ≤ k ≤ key [x] ≤ ⋅ ⋅ ⋅ ≤ k 1 2 n[x ] ≤ keyn[x ][x] ≤ kn[x ]+1 ] [1 x [x] i i− y y ke ke ⋅⋅⋅ N W ⋅⋅⋅ x ci [x] ki Ch 4: B-Trees Định nghóa B-cây (tiếp) – Tất có độ sâu, chiều cao h – Có số nguyên t ≥ gọi bậc tối thiểu cho ° Mọi nút nút gốc phải có t − khóa Nếu ≠ ∅ nút gốc phải có khóa ° Mổi nút chứa tối đa 2t − khóa Một nút đầy chứa 2t − khóa Ch 4: B-Trees Chiều cao B-cây Định lý Nếu n ≥ B-cây T với n khóa, chiều cao h, bậc tối thiểu t ≥ n +1 có h ≤ log t Chứng minh Có tối thiểu nút độ sâu 1, 2t nút độ sâu 2, , 2t h − nút độ sâu h Vậy số khóa tối thiểu h i −1 n ≥ + (t − 1)∑ 2t i =1 t h −1 = + 2(t − 1) t −1 = 2t h − n +1 h t ≤ Do , từ suy định lý Ch 4: B-Trees 10 Xóa khóa khỏi B-cây B-TREE-DELETE(x, k) Nếu khóa k có nút x x nút xóa k khỏi x Nếu khóa k có nút x x nút a Nếu nút y trước k có t khóa tìm khóa trước (predecessor) k’ k có gốc y Xóa k’ cách gọi đệ quy Bx (y, TREE-DELETE ⋅ ⋅ ⋅ k’),k thay ⋅ ⋅ ⋅ k baèng k’ x y ⋅⋅⋅ k’ Ch 4: B-Trees 32 Xóa khóa khỏi B-cây B-TREE-DELETE(x, k) Nếu khóa k có nút x x nút a b Tương tự, nút z sau k có t khóa tìm khóa sau (successor) k’ k có gốc z Xóa k’ cách gọi đệ quy B-TREE-DELETE(z , k’), thay k baèng k’ x x ⋅⋅⋅ k ⋅⋅⋅ z k’ ⋅⋅⋅ Ch 4: B-Trees 33 Xóa khóa khỏi B-cây B-TREE-DELETE(x, k) Nếu khóa k có nút x x nút a b c Nếu không, y lẩn z có t − khóa, hợp k nguyên z vào y, thành x k trỏ đến z , y chứa 2t − khóa Giải phóng (free) z gọi đệ quy B-TREEDELETE(y, k) để xóa có gốc y x ⋅ ⋅k⋅ khỏi k ⋅ ⋅⋅ y ⋅⋅⋅ k’ z l’ Ch 4: B-Trees ⋅⋅⋅ 34 Xóa khóa khỏi B-cây (tiếp) x y ⋅⋅⋅ k’ k l’ Ch 4: B-Trees ⋅⋅⋅ ⋅⋅⋅ ⋅ z⋅ ⋅ 35 Xóa khóa khỏi B-cây B-TREE-DELETE(x, k) Nếu khóa k nút x xác định gốc ci[x] chứa k, k có Nếu ci [x] có t − khóa, thực thi bước 3a hay 3b cần để đảm bảo ta xuống đến nút chứa t khóa Xong gọi BTREE-DELETE lên nút thích hợp x Ch 4: B-Trees 36 Xóa khóa khỏi B-cây (tiếp) a Nếu ci [x] có t − khóa, lại có nút anh em với t khóa, cho ci [x] thêm khóa cách đem khóa từ x xuống ci [x], đem khóa từ nút anh em bên trái hay bên phải ci [x] lên x, đem trỏ tương anh em vào ci [x] x ⋅ ⋅ứng ⋅ mtừ⋅ ⋅nút ⋅ ci [x] ⋅⋅⋅ l n n’ Ch 4: B-Trees ⋅⋅⋅ 37 Xóa khóa khỏi B-cây (tiếp) x ⋅⋅⋅ n ⋅⋅⋅ ci [x] ⋅⋅⋅ lm Ch 4: B-Trees n’ ⋅⋅⋅ 38 Xóa khóa khỏi B-cây (tiếp) a b Nếu ci [x] nút anh em có t − khóa, hợp ci [x] nút anh em cách đem khóa từ x xuống nút tạo, khóa khóa nút x ⋅ ⋅ ⋅ l l’ ⋅ ⋅ ⋅ ci [x] ⋅⋅⋅ h m ⋅ ⋅ ⋅ m’ Ch 4: B-Trees n ⋅⋅⋅ 39 Xóa khóa khỏi B-cây (tieáp) x ⋅⋅⋅ ⋅⋅⋅ l’ ⋅ ⋅ ⋅ h l m ⋅ ⋅ ⋅ m’ n Ch 4: B-Trees ⋅⋅⋅ 40 Xóa khóa khỏi B-cây (tiếp) Thủ tục B-TREE-DELETE cần — số truy cập lên đóa O(h) có O(1) lần gọi DISK-READ DISK-WRITE gọi đệ quy thủ tục — thời gian CPU thủ tục O(t h) = O(t log t n) Ch 4: B-Trees 41 Ví dụ cho trường hợp xóa khóa khỏi B-cây ° ° Cho B-cây có bậc tối thiểu t = Cây lúc đầu, xóa F khỏi P C G M A B ° D E F J K L T X N O Q R S U V Y Z F xóa: trường hợp P C G M A B D E J K L T X N O Ch 4: B-Trees Q R S U V Y Z 42 Ví dụ cho trường hợp xóa khóa khỏi B-cây ° Xóa M khỏi cây: trường hợp 2a P C G M A B D E J K L T X N O Q R S U V Y Z P C G M A B ° D E J K M xóa: T X N O D E J K U V Y Z P C G L A B Q R S T X N O Ch 4: B-Trees Q R S U V Y Z 43 Ví dụ cho trường hợp xóa khóa khỏi B-cây ° Xóa G khỏi cây: trường hợp 2c P C G L A B D E J K T X N O Q R S U V Y Z P C L A B ° D E G J K G xóa: T X N O D E J K U V Y Z P C L A B Q R S T X N O Ch 4: B-Trees Q R S U V Y Z 44 Ví dụ cho trường hợp xóa khóa khỏi B-cây ° Xóa D khỏi cây: trường hợp 3b P C L A B T X D E J K N O C A B ° D E J K D xóa: A B E J K L Q R S P N O C L T N O Ch 4: B-Trees T Y Z U V Y Z U V Y Z X Q R S P U V X Q R S 45 Ví dụ cho trường hợp xóa khóa khỏi B-cây ° Xóa B khỏi cây: trường hợp 3a C A B E J K ° P N O E A B C L J K L T X Q R S P N O T U V Y Z U V Y Z U V Y Z X Q R S B xóa khỏi cây: E A C J K L P N O Ch 4: B-Trees T X Q R S 46 ... 2t2 Ch 4: B- Trees t −1 t − t − 11 Caùc thao tác lên B- cây ° ° Các thao tác lên B- cây: – B- TREE-SEARCH – B- TREE-CREATE – B- TREE-INSERT – B- TREE-DELETE Trong thủ tục ta quy ước: – Gốc B- cây luôn... x b? ??o đảm B- TREEDELETE gọi đệ quy lên x — số khóa x phải ≥ t (b? ??c tối thiểu cây) Do khóa di chuyển (từ nút thích hợp khác) vào nút trước đệ quy xuống nút Ch 4: B- Trees 31 Xóa khóa khỏi B- cây B- TREE-DELETE(x,... 4: B- Trees 41 Ví dụ cho trường hợp xóa khóa khỏi B- cây ° ° Cho B- cây có b? ??c tối thiểu t = Cây lúc đầu, xóa F khỏi P C G M A B ° D E F J K L T X N O Q R S U V Y Z F xóa: trường hợp P C G M A B