Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 193 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
193
Dung lượng
2,76 MB
Nội dung
Cấu trúc liệu & Giải thuật (Data Structures and Algorithms) Các cấu trúc liệu Nội dung Các cấu trúc liệu Cây nhị phân – Binary Trees Các cấu trúc liệu nâng cao 09/2013 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Các cấu trúc liệu (Fundamental Data Structures) 1.1 Các danh sách liên kết – Linked Lists 1.2 Ngăn xếp – Stack 1.3 Hàng đợi - Queue 09/2013 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Danh sách liên kết – Linked Lists Đặt vấn đề Danh sách liên kết ? So sánh Mảng Danh sách liên kết Danh sách liên kết đơn (Singly Linked List) Danh sách liên kết đôi (Doubly Linked List) 09/2013 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Đặt vấn đề (1) Nếu muốn thêm (Insert) phần tử vào mảng, phải ? 10 13 11 12 ? 18 09/2013 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Đặt vấn đề (2) Phải di chuyển phần tử phía sau vị trí 10 18 13 11 12 12 …rồi chèn phần tử vào 10 18 13 11 Vậy chi phí O(n) 09/2013 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Đặt vấn đề (3) Tương tự, chi phí xóa phần tử mảng O(n) Làm thêm (hay xố) phần tử mà khơng phải di chuyển phần tử khác ? 09/2013 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Đặt vấn đề (4) Ta tách rời phần tử mảng, kết nối chúng lại với “móc xích” 10 09/2013 20 30 … … (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Đặt vấn đề (5) Thao tác thêm phần tử cần thay đổi mối liên kết chỗ 10 20 30 … … 18 Chi phí O(1) 09/2013 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Danh sách liên kết ? (1) Hãy viết đặc điểm DSLK Ít đặc điểm 09/2013 10 (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) 09/2013 179 (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 09/2013 180 (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 09/2013 181 (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 09/2013 182 (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: 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,… 09/2013 183 (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 toán để thêm khóa k: 09/2013 184 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Phương pháp địa mở (2) Phương pháp Open addressing – Linear probing 09/2013 185 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Phương pháp địa mở (3) Thuật tốn để tìm khóa k: 09/2013 186 (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) 09/2013 187 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Linear probing Mô tả: h(k, i) = (h(k) + i) mod m 09/2013 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 188 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Quadratic probing Mô tả: h(k, i) = (h(k) + i2) mod m 09/2013 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 189 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Double hashing Mô tả: h(k, i) = (h(k) + i*h’(k)) mod m 09/2013 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 190 (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 09/2013 191 (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 độ: • • • • 09/2013 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)) 192 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Q&A Q? 09/2013 193 A (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM ...Nội dung Các cấu trúc liệu Cây nhị phân – Binary Trees Các cấu trúc liệu nâng cao 09/2013 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Các cấu trúc liệu (Fundamental Data Structures) 1.1 Các danh sách... Nội dung Các cấu trúc liệu Cây nhị phân – Binary Trees Các cấu trúc liệu nâng cao 09/2013 50 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Cây nhị phân Các khái niệm thuật ngữ Cài đặt cấu trúc liệu ... + 2) * 4) − 3” Biểu thức gồm toán tử +,-,*,/ dấu ngoặc () Tính giá trị biểu thức 09/2013 34 (C) Nguyen Tri Tuan - DH.KHTN Tp.HCM Các cấu trúc liệu (Fundamental Data Structures) 1.1 Các danh