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
lượt xem 3
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: 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
- Các cấu trúc dữ liệu nâng cao (Advanced Data Structures) 3.1 Cây nhị phân tìm kiếm cân bằng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 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 Winter 2017 124 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Cây nhị phân tìm kiếm cân bằng (2) Cây cân bằng chiều cao và chi phí tìm kiếm tối ưu O(log2N) Winter 2017 125 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Cây nhị phân tìm kiếm cân bằng (3) Cần có phương pháp để duy trì tính cân bằng cho cây BST Winter 2017 126 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Cây nhị phân tìm kiếm cân bằng (4) Các loại cây BST cân bằng Cây AVL Cây Đỏ - Đen (Red – Black tree) Cây AA Winter 2017 127 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Cây AVL (1) Định nghĩa Cài đặt cấu trúc dữ liệu Mất cân bằng khi thêm/xóa node Các thuật toán điều chỉnh cây Đánh giá/so sánh E. M. Landis G. M. Adelson-Velskii Winter 2017 128 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Cây AVL (2) Cấu trúc cây AVL do 2 tác giả người Liên xô: G. M. Adelson-Velskii và E. M. Landis công bố năm 1962 Đây là mô hình cây tự cân bằng đầu tiên được đề xuất (self-adjusting, height- balanced binary search tree) Winter 2017 129 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Định nghĩa cây AVL (1) Cây AVL: Là một cây nhị phân tìm kiếm (BST) Mỗi nút p của cây đều thỏa: chiều cao của cây con bên trái (p->left) và chiều cao của cây con bên phải (p->right) chênh lệch nhau không quá 1 pTAVL: abs(hp->left - hp->right) 1 Winter 2017 130 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Định nghĩa cây AVL (2) Chiều cao 2 cây con left, right chênh lệch không quá 1 Winter 2017 131 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Định nghĩa cây AVL (3) Cây AVL ? Winter 2017 132 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Cài đặt cấu trúc dữ liệu (1) Cấu trúc node, tree tương tự như BST Thêm vào mỗi node một field balance, diễn tả trạng thái cân bằng của node đó: balance = -1: node lệch trái (cây con trái cao hơn cây con phải) balance = 0: node cân bằng (cây con trái cao bằng cây con phải) balance = +1: node lệch phải (cây con phải cao hơn cây con trái) Winter 2017 133 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Cài đặt cấu trúc dữ liệu (2) +1 20 +1 -1 10 30 0 0 0 15 26 40 0 0 25 27 Hệ số cân bằng của các node trong cây AVL Winter 2017 134 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Cài đặt cấu trúc dữ liệu (3) template class AVLNode { public: T key; // key of node char balance; // balance status of node BSTNode *left; // pointer to left child BSTNode *right; // pointer to right child BSTNode() { } BSTNode(T newItem) { key = newItem; balance = 0; left = right = NULL; } }; // end class Winter 2017 135 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Mất cân bằng khi thêm/xóa node (1) [Insert – Thêm 1 phần tử vào cây]: có thể làm cây mất cân bằng. Duyệt từ node vừa thêm ngược về node gốc Nếu tìm thấy node P bị mất cân bằng thì tiến hành xoay cây tại nút P (chỉ cần điều chỉnh 1 lần duy nhất) Winter 2017 136 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Mất cân bằng khi thêm/xóa node (2) 44 P 17 78 Thêm phần tử 54 32 50 88 làm cây mất cân bằng tại node P 48 62 54 Winter 2017 137 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Mất cân bằng khi thêm/xóa node (3) [Delete – Xóa 1 phần tử]: có thể làm cây mất cân bằng. Duyệt từ node vừa xóa ngược về node gốc Nếu tìm thấy node P bị mất cân bằng thì tiến hành xoay cây tại node P Lưu ý: Thao tác điều chỉnh có thể làm cho những node phía trên của node P bị mất cân bằng cần điều chỉnh cho đến khi không còn node nào bị mất cân bằng nữa (lùi dần về node gốc) Winter 2017 138 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Mất cân bằng khi thêm/xóa node (4) P 44 17 78 Xóa phần tử 32 làm 32 50 88 cây mất cân bằng tại node P 48 62 Winter 2017 139 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Các thuật toán điều chỉnh cây (1) P -1 P -1 -1 +1 P1 P1 h h h h+1 C h C h+1 B A A B (a1) (b1) Hai trường hợp cây bị mất cân bằng ở nhánh trái Winter 2017 140/203 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Các thuật toán điều chỉnh cây (2) P +1 P +1 +1 -1 P1 P1 h h A h A h+1 h h+1 B C C B (a2) (b2) Hai trường hợp cây bị mất cân bằng ở nhánh phải Winter 2017 141 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Các thuật toán điều chỉnh cây (3) P -1 P1 0 -1 P1 P 0 SLR h h C h+1 h+1 h h B A A B C Trường hợp (a1): áp dụng phép xoay đơn Trái - Phải (SLR – Single Left-to-Right) Winter 2017 142 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 175 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 77 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 116 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 81 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 77 | 8
-
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
193 p | 59 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 159 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 58 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 106 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây - Bùi Tiến Lên
68 p | 40 | 4
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 43 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên
38 p | 47 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 50 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn