1. Trang chủ
  2. » Tất cả

12 các cấu trúc dữ liệu nâng cao chuong 5 cay avl + hash table

63 4 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 63
Dung lượng 1,07 MB

Nội dung

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

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

TÀI LIỆU LIÊN QUAN

w