1. Trang chủ
  2. » Giáo Dục - Đào Tạo

B cây (GIẢI THUẬT SLIDE) (chữ biến dạng do slide dùng font VNI times, tải về xem bình thường)

46 25 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

Ngày đăng: 29/03/2021, 08:23

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN