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

Chuong 4 các cấu trúc dữ liệu

193 2 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

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

Ngày đăng: 25/03/2023, 06:13

w