THÔNG TIN TÀI LIỆU
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 2014 123 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 124 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Cây nhị phân tìm kiếm cân (2) Cây cân Winter 2014 chiều cao chi phí tìm kiếm tối ưu O(log2N) 125 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 126 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 127 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 toán điều chỉnh Đánh giá/so sánh E M Landis G M Adelson-Velskii Winter 2014 128 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 129 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 ∀p∈TAVL: abs(hp->left - hp->right)≤ Winter 2014 130 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Định nghĩa AVL (2) Chiều cao left, right chênh lệch không Winter 2014 131 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Định nghĩa AVL (3) Cây AVL ? Winter 2014 132 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Hàm băm (6) Ví dụ phương pháp nhân: Giả sử ta có k = 123456; m = 10000; A Winter 2014 189 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 190 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 191 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Phương pháp nối kết (2) Phương pháp chaining – bảng T lưu trỏ linked-list Winter 2014 192 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 193 (C) Nguyen Tri Tuan - DH.KHTN Tp.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: Ngoà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 2014 194 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 195 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Phương pháp địa mở (2) Phương pháp Open addressing – Linear probing Winter 2014 196 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Phương pháp địa mở (3) Thuật tốn để tìm khóa k: Winter 2014 197 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 198 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 199 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 200 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 201 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Thảo luận Hãy so sánh ưu, khuyết điểm phương pháp chaining open addressing Winter 2014 202 (C) Nguyen Tri Tuan - DH.KHTN Tp.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 2014 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)) 203 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM ... báo cấu trúc Hash Table template class HASH_ TABLE { private: T *items; // array of hash items int maxSize; // maximum size of hash table public: HASH_ TABLE( int size); // create hash table. .. balance = +1 : node lệch phải (cây phải cao trái) Winter 2014 133 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Cài đặt cấu trúc liệu (2) 20 +1 +1 -1 30 10 0 15 26 40 0 25 27 Hệ số cân node AVL Winter... O(log2N) Winter 2014 150 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM 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 2014 168
Ngày đăng: 25/03/2023, 13:10
Xem thêm: