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 - Nguyễn Tri Tuấn

63 69 0
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 - Nguyễn Tri Tuấn

Đ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

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: Cây nhị phân tìm kiếm cân bằng, B-Cây, bảng băm - Hash table. Mời các bạn cùng tham khảo nội dung chi tiết.

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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Đị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 2017 130 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Định nghĩa AVL (2) Chiều cao left, right chênh lệch không Winter 2017 131 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Định nghĩa AVL (3) Cây AVL ? Winter 2017 132 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Phương pháp địa mở (2) Phương pháp Open addressing – Linear probing Winter 2017 209 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Phương pháp địa mở (3)  Thuật toán để tìm khóa k: Winter 2017 210 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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ó 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Thảo luận  Hãy so sánh ưu, khuyết điểm phương pháp chaining open addressing Winter 2017 215 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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 độ: • • • • 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)) Winter 2017 216 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt ... 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 2017 130 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM... CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt 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... CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Cài đặt cấu trúc liệu (1)  Cấu trúc node, tree tương tự BST  Thêm vào node field balance, diễn

Ngày đăng: 11/01/2020, 18:00

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan