Microsoft PowerPoint Chuong 5 Cac cau truc du lieu Các cấu trúc dữ liệu nâng cao 123Winter 2017 (C) Nguyen Tri Tuan Truong DH KHTN DHQG HCM Cây nhị phân tìm kiếm cân bằng B Cây 3 1 Bảng băm – Hash Table3 3 3 2 (Advanced Data Structures) 124Winter 2017 Cây nhị phân tìm kiếm cân bằng (1) Cây BST có thể bị lệch Vì sao cây BST trở nên bị lệch ? Chi phí tìm kiếm trên cây bị lệch ? Một cây BST không cân bằng (C) Nguyen Tri Tuan Truong DH KHTN DHQG HCM 125Winter 2017 Cây nhị phân tìm kiếm cân bằn.
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 123 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Cây nhị phân tìm kiếm cân (1) Cây BST bị lệch Vì BST trở nên bị lệch ? Chi phí tìm kiếm bị lệch ? Một BST không cân Winter 2017 124 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Cây nhị phân tìm kiếm cân (2) Cây cân chiều cao chi phí tìm kiếm tối ưu O(log2N) Winter 2017 125 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Cây nhị phân tìm kiếm cân (3) Cần có phương pháp để trì tính cân cho BST Winter 2017 126 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Cây nhị phân tìm kiếm cân (4) Các loại BST cân Cây AVL Cây Đỏ - Đen (Red – Black tree) Cây AA Winter 2017 127 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Cây AVL (1) Định nghĩa Cài đặt cấu trúc liệu Mất cân thêm/xóa node Các thuật tốn điều chỉnh Đánh giá/so sánh E M Landis G M Adelson-Velskii Winter 2017 128 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Cây AVL (2) Cấu trúc AVL tác giả người Liên xô: G M Adelson-Velskii E M Landis công bố năm 1962 Đây mơ hình tự cân đề xuất (self-adjusting, heightbalanced binary search tree) Winter 2017 129 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Định nghĩa AVL (1) Cây AVL: Là nhị phân tìm kiếm (BST) Mỗi nút p thỏa: chiều cao bên trái (p->left) chiều cao bên phải (p->right) chênh lệch không pTAVL: abs(hp->left - hp->right) Winter 2017 130 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Định nghĩa AVL (2) Chiều cao left, right chênh lệch không Winter 2017 131 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Định nghĩa AVL (3) Cây AVL ? Winter 2017 132 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Hàm băm (6) Ví dụ phương pháp nhân: Giả sử ta có k = 123456; m = 10000; A Winter 2017 202 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Các phương pháp xử lý xung đột Phương pháp nối kết (Separate chaining) Phương pháp địa mở (Open addressing) Winter 2017 203 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Phương pháp nối kết (1) Đưa tất khóa đụng độ vào slot, lưu thành linked-list Mơ hình cách xử lý đụng độ phương pháp chaining Winter 2017 204 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Phương pháp nối kết (2) Phương pháp chaining – bảng T lưu trỏ linked-list Winter 2017 205 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Phương pháp nối kết (3) Phương pháp chaining – bảng T lưu phần tử + trỏ linked-list Winter 2017 206 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Phương pháp nối kết (4) Chi phí thao tác: Insert: chi phí xấu O(1) Search Delete: chi phí trung bình (1+α) α = n/m (load factor: số phần tử trung bình lưu trữ slot) Các cấu trúc liệu khác: Ngồi linked-list, ta áp dụng cấu trúc khác hiệu (khi tìm kiếm) như: cân (AVL, Red-Black, AA), hay mảng cấp phát động,… Winter 2017 207 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Phương pháp địa mở (1) Các phần tử lưu bảng T, không dùng thêm nhớ mở rộng phương pháp nối kết Thuật tốn để thêm khóa k: Winter 2017 208 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Phương pháp địa mở (2) Phương pháp Open addressing – Linear probing Winter 2017 209 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Phương pháp địa mở (3) Thuật tốn để tìm khóa k: Winter 2017 210 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Phương pháp địa mở (4) Tên gọi “open addressing” mang ý nghĩa địa (address) phần tử xác định “duy nhất” hash value phần tử đó, mà cịn có can thiệp phép “dị tìm (probing)” Có phương pháp dị tìm phổ biến: Phương pháp dị (Linear probing) Phương pháp dò bậc (Quadratic probing) Phương pháp băm kép (Double hashing) Winter 2017 211 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Linear probing Mô tả: h(k, i) = (h(k) + i) mod m i: thứ tự lần thử (i = 0, 1, 2,…) h(k): hàm băm m: số slot bảng băm h(k, i): địa khóa k lần thử thứ i Winter 2017 212 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Quadratic probing Mô tả: h(k, i) = (h(k) + i2) mod m i: thứ tự lần thử (i = 0,1,2,…) h(k): hàm băm m: số slot bảng băm h(k, i): địa khóa k lần thử thứ i Winter 2017 213 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Double hashing Mô tả: h(k, i) = (h(k) + i*h’(k)) mod m i: thứ tự lần thử (i = 0,1,2,…) h(k) h’(k) : hàm băm m: số slot bảng băm h(k, i): địa khóa k lần thử thứ i Winter 2017 214 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Thảo luận Hãy so sánh ưu, khuyết điểm phương pháp chaining open addressing Winter 2017 215 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Ví dụ Bài tập: Có bảng băm T, chiều dài m = 11; hàm băm h(k) = k mod m Cho dãy phần tử theo thứ tự sau: 10, 22, 31, 4, 15, 28, 17, 88, 59 Hãy trình bày kết thêm phần tử vào bảng băm, với phương pháp xử lý đụng độ: • • • • Winter 2017 Nối kết (Chaining) Dò (Linear probing) Dò bậc (Quadratic probing) Băm kép (Double hashing), với h’(k) = + (k mod (m – 1)) 216 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM ... 20 30 10 15 40 25 30 10 15 DRL 27 40 26 25 27 26 …thêm 15, 40, 25, 27, 26 Winter 2017 148 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Ví dụ tạo AVL (3) 20 30 10 13 25 30 10 40 26 15 20 DLR 27... toán điều chỉnh (6) 44 P 44 78 17 +1 32 17 P1 50 48 P2 62 -1 P2 -1 88 P1 32 DLR 48 62 P 78 +1 50 54 88 54 Ví dụ: thao tác xoay kép DLR Winter 2017 1 45 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM... 17 Thêm phần tử 54 làm cân node P 88 50 32 48 62 54 Winter 2017 137 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM Mất cân thêm/xóa node (3) [Delete – Xóa phần tử]: làm cân Duyệt từ node vừa