Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu nâng cao cung cấp cho người đọc các kiến thức: Truy xuất dữ liệu trên bộ nhớ ngoài, m-way search tree, định nghĩa B-cây, lưu trữ B-cây trên bộ nhớ ngoài, khai báo cấu trúc B-cây,... Mời các bạn cùng tham khảo.
Các cấu trúc liệu nâng cao (Advanced Data Structures) 3.1 Cây nhị phân tìm kiếm cân 3.2 B-Cây 3.3 Bảng băm – Hash Table Winter 2017 151 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt B-Cây Đặt vấn đề Truy xuất liệu nhớ m-way search tree Định nghĩa B-cây Lưu trữ B-cây nhớ Khai báo cấu trúc B-cây Các thao tác B-cây Winter 2017 152 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Đặt vấn đề Các ứng dụng database Cần lưu trữ liệu lớn (vd 1,000,000 – 1,000,000,000 phần tử) Lưu trữ nhớ ngồi Tốc độ tìm kiếm nhanh Winter 2017 153 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Truy xuất liệu nhớ (1) Bộ nhớ ngoài: HDD, DVD, tape,… Đơn vị truy xuất tối thiểu ? Thời gian truy xuất ? Winter 2017 154/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Truy xuất liệu nhớ (2) Thời gian để đọc/ghi block t = thời gian dịch chuyển đầu đọc đến block + thời gian đọc/ghi block vào nhớ Winter 2017 155/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Truy xuất liệu nhớ (3) Vd thời gian để đọc block liên tiếp, block=1KB t1 = 20ms + (5ms + 5ms) = 30ms Vd thời gian để đọc block xa nhau, block=1KB t2 = * (20ms + 5ms) = 50ms Winter 2017 156/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt m-way Search Tree (1) Cây nhị phân với phần tử gom thành block (trên đĩa) Winter 2017 157/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt m-way Search Tree (2) Định nghĩa: m-way search tree thỏa Mỗi node có tối đa m (m-1) khóa Các khóa node tăng dần Các khóa thứ i nhỏ khóa i Các khóa thứ (i+1) lớn khóa i Winter 2017 158/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt m-way Search Tree (3) Cây tìm kiếm m-way, thao tác tìm kiếm hoạt động tương tự BST Winter 2017 159/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Định nghĩa B-cây (1) Định nghĩa: B-cây bậc m (m>2) m-way search tree thỏa Node gốc có khóa con, ngoại trừ node Mỗi node có (m-1)/2 khóa Mỗi node có (m-1)/2 khóa (m1)/2+1 Tất node có mức * Node (internal node): node gốc * B-cây giới thiệu vào năm 1972 Bayer McCreight Winter 2017 160/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Lưu trữ B-cây nhớ (1) Winter 2017 166/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Lưu trữ B-cây nhớ (2) Node gốc nên lưu thường xuyên nhớ Không cần thực thao tác READ_ROOT Thao tác WRITE_ROOT thực node gốc thay đổi Winter 2017 167/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Lưu trữ B-cây nhớ (3) (a) B-cây với khóa khơng có thơng tin phụ (b) B-cây có thêm thơng tin phụ cho khóa Winter 2017 168/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Khai báo cấu trúc B-cây (1) Hãy xây dựng cấu trúc liệu khai báo (struct/class) cho node B-cây ? Hãy xây dựng cấu trúc liệu khai báo (struct/class) cho header file chứa B-cây ? Winter 2017 169/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Khai báo cấu trúc B-cây (2) Winter 2017 170/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Các thao tác B-cây Tìm kiếm khóa Thêm khóa Xóa khóa Winter 2017 171/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Thêm khóa vào B-cây (1) Khóa thêm vào node node chỗ trống Winter 2017 172/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Thêm khóa vào B-cây (2) Khóa thêm vào node đầy split node chuyển khóa lên node cha Winter 2017 173/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Thêm khóa vào B-cây (3) Thuật tốn: Khóa thêm vào node node cịn chỗ trống Các khóa node thứ tự tăng dần Nếu node chứa khóa đầy tách node (split) cách tạo node mới; copy (m-1)/2 khóa sang node mới; chuyển khóa lên node cha; tạo trỏ từ node cha đến node Quá trình tách node thực liên tiếp cho node B-cây Trường hợp xấu nhất, node gốc bị tách tạo thành node gốc Winter 2017 174/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Thêm khóa vào B-cây (4) Split node nhiều lần dẫn tới split node gốc tạo thành node gốc Winter 2017 175/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Xóa khóa B-cây (1) Xóa khóa node node dư khóa Winter 2017 176/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Xóa khóa B-cây (2) Xóa khóa node node thiếu khóa node anh/em có khóa dư mượn khóa từ node anh/em Winter 2017 177/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Xóa khóa B-cây (3) Thuật tốn: Xóa khóa node • Nếu sau xóa key, số khóa node >= (m-1)/2 stop • Nếu sau xóa key, node có (m-1)/2 khóa – Nếu node anh/em có > (m-1)/2 khóa mượn khóa từ node anh/em – Nếu node anh/em có