Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây M nhánh với B cây cung cấp cho người học các kiến thức về cây m nhánh, các thao tác trên cây m-nhánh, thao tác duyệt cây, B-cây,... Mời các bạn cùng tham khảo.
CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU CÂY M-NHÁNH VS B CÂY Bùi Tiến Lên 01/01/2017 https://fb.com/tailieudientucntt CuuDuongThanCong.com CÂY M-NHÁNH https://fb.com/tailieudientucntt Cây m-nhánh Định nghĩa Cây m-nhánh (m-way tree) tìm kiếm có tính chất sau Mỗi nút có tối thiểu khóa tối đa m − khóa có giá trị phân biệt Các khóa nút thứ tự tăng dần CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cây m-nhánh (cont.) Định nghĩa Mỗi nút có k khóa {v1 , , vk } có k + {T1 , , Tk+1 }, rỗng Cây đầu T1 chứa khóa v khoảng CuuDuongThanCong.com Spring 2017 v ∈ (−∞, v1 ) (1) Cây cuối Tk+1 chứa khóa v khoảng v ∈ (vk , ∞) (2) Cây Ti , i = 2, , k chứa khóa v khoảng v ∈ (vi , vi+1 ) (3) Mỗi khóa vi có trái Ti phải Ti+1 https://fb.com/tailieudientucntt Data structure & Algorithm Minh họa CuuDuongThanCong.com Spring 2017 v1 T1 vi vi+1 Ti vk Tk+1 Hình 1: Nút khóa https://fb.com/tailieudientucntt Data structure & Algorithm Minh họa (cont.) CuuDuongThanCong.com Spring 2017 v1 Ti vi vi+1 vk Ti+1 Hình 2: Khóa trái phải https://fb.com/tailieudientucntt Data structure & Algorithm Minh họa (cont.) CuuDuongThanCong.com Spring 2017 16 18 22 20 26 24 28 30 Hình 3: Cây 3-nhánh https://fb.com/tailieudientucntt Data structure & Algorithm Các thao tác m-nhánh Đối với m-nhánh có thao tác Duyệt khóa Tìm khóa Thêm khóa vào Xóa khóa khỏi CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Thao tác duyệt Ta xem đồ thị tổng quát áp dụng thuật tốn duyệt đồ thị để duyệt Có hai thuật toán duyệt Duyệt theo chiều sâu (Depth First Traversal - DFT ) Duyệt theo chiều rộng (Breath First Traversal - BFT ) CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Duyệt theo chiều sâu PROCEDURE Dft(r ) BEGIN Thăm nút r FOR nút u r DO IF u chưa thăm THEN DFT(u) END CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 10 Xóa khóa khỏi Xóa khóa v khỏi nút N Nếu nút N sau xóa bị “hụt” khóa (có m−1 khóa) Trường hợp 1: Nếu nút anh em kế bên có dư khóa (nhiều m−1 khóa) “mượn khóa” Trường hợp 2: Nếu nút anh em kế bên khơng dư khóa “nhập nút” với nút anh em CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 39 Xóa khóa khỏi (cont.) Trường hợp 1: Nút N = {N1 , , Nt } thiếu khóa Nút L = {L1 , , Ls } “anh em bên trái” dư khóa N nút gốc phải khóa p L nút gốc trái p CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 40 Xóa khóa khỏi (cont.) L1 CuuDuongThanCong.com Spring 2017 Ls p N1 Nt L1 Ls Ls-1 T p N1 Nt T Hình 22: Xử lý “mượn khóa” https://fb.com/tailieudientucntt Data structure & Algorithm 41 Xóa khóa khỏi (cont.) Trường hợp 2: Nút N = {N1 , , Nt } thiếu khóa khơng có nút anh em dư khóa Nút L = {L1 , , Ls } N nút gốc phải khóa p L nút gốc trái p CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 42 Xóa khóa khỏi (cont.) CuuDuongThanCong.com Spring 2017 L1 p Ls L1 Ls N1 Nt Nt p N1 Hình 23: Xử lý “nhập nút” https://fb.com/tailieudientucntt Data structure & Algorithm 43 Minh họa xóa phần tử 18 CuuDuongThanCong.com Spring 2017 22 20 26 24 28 30 Hình 24: B-cây 3-nhánh https://fb.com/tailieudientucntt Data structure & Algorithm 44 Minh họa xóa phần tử (cont.) 18 CuuDuongThanCong.com Spring 2017 22 20 24 xx 28 30 Hình 25: Xóa khóa 26: nút đỏ thiếu khóa https://fb.com/tailieudientucntt Data structure & Algorithm 45 Minh họa xóa phần tử (cont.) CuuDuongThanCong.com Spring 2017 18 22 20 28 24 30 Hình 26: Xóa khóa 26: mượn khóa (trường hợp 1) https://fb.com/tailieudientucntt Data structure & Algorithm 46 Minh họa xóa phần tử (cont.) CuuDuongThanCong.com Spring 2017 22 xx 20 28 24 30 Hình 27: Xóa khóa 18: nút đỏ thiếu khóa https://fb.com/tailieudientucntt Data structure & Algorithm 47 Minh họa xóa phần tử (cont.) xx 22 20 28 24 30 Hình 28: Xóa khóa 18: nhập nút (trường hợp 2), nút đỏ thiếu khóa CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 48 Minh họa xóa phần tử (cont.) CuuDuongThanCong.com Spring 2017 22 28 20 24 30 Hình 29: Xóa khóa 18: mượn khóa (trường hợp 1) https://fb.com/tailieudientucntt Data structure & Algorithm 49 Bài luyện tập Ví dụ Hãy xây dựng B-cây 3-nhánh từ dãy {4, 3, 5, 1, 2, 7, 9, 8, 15, 11, 12, 16} Xóa nút 8, 16 Thêm nút 6, 17 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 50 Định lý chiều cao B-cây Định lý Gọi n (n ≥ 1) số phần tử hay khóa B-cây m (m > 2) bậc h chiều cao CuuDuongThanCong.com Spring 2017 h ≤ logm n+1 https://fb.com/tailieudientucntt Data structure & Algorithm (4) 51 Đánh giá B-cây Phân tích chi phí thực theo n (số lượng nút cây) tìm phần tử thêm phần tử xóa phần tử xấu ? ? ? trung bình ? ? ? tốt ? ? ? Phân tích chi phí nhớ theo n (số lượng nút cây) CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 52 Tài liệu tham khảo CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 53 ... structure & Algorithm 30 B -cây (cont.) Ký hiệu số B -cây thông dụng B -cây m-nhánh ký hiệu B -cây bậc m Hoặc m−1 + 1, m Một số B -cây phổ biến B -cây bậc (2, 3) 2-3 B -cây bậc (2, 4) 2-3 -4 CuuDuongThanCong.com... CuuDuongThanCong.com B-CÂY https://fb.com/tailieudientucntt B -cây Giới thiệu B -cây Rudolf Bayer, Edward M McCreight phát minh cân tổng quát B -cây phù hợp cho hệ thống đọc ghi liệu lớn Nó thường dùng sở liệu. ..CuuDuongThanCong.com CÂY M-NHÁNH https://fb.com/tailieudientucntt Cây m-nhánh Định nghĩa Cây m-nhánh (m-way tree) tìm kiếm có tính chất sau Mỗi nút có tối thiểu