Bài giảng Cấu trúc dữ liệu: Chương 4 - Trường ĐH Mở TP. HCM
Số trang: 19
Loại file: pdf
Dung lượng: 806.78 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Cấu trúc dữ liệu: Chương 4 Bảng băm, cung cấp cho người học những kiến thức như: Khái niệm bảng băm; Hàm băm; Một vài loại hàm băm; Sự đụng độ (Collision); Các phương pháp xử lý đụng độ; Phương pháp nối kết trực tiếp;...Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu: Chương 4 - Trường ĐH Mở TP. HCM 11/07/2020 11/07/2020 11 Hàm băm Các phương pháp giải quyết đụng độ 11/07/2020 22 1 11/07/2020 Đặt vấn đề ❖Phương pháp tìm kiếm trong các chương trước chủ yếu dựa vào khóa ➢Mảng ➢Danh sách liên kết ➢Cây nhị phân tìm kiếm Tìm kiếm bằng cách so sánh lần lượt các phần tử Thời gian tìm kiếm không nhanh và phụ thuộc N (số phần tử) 11/07/2020 33 Khái niệm bảng băm ❖Bảng băm (hash table) là một cấu trúc dữ liệu, lưu trữ các khóa trong bảng T (danh sách đặc); sử dụng một hàm băm (hash function) để ánh xạ khoá (key) với một địa chỉ lưu trữ 11/07/2020 44 2 11/07/2020 Hàm băm ❖Hàm băm (hash function) là hàm biến đổi khóa k thành địa chỉ trong bảng băm ❖Phép biến đổi khóa: là một ánh xạ khoá thành địa chỉ ℎ: ? → 0, 1, … , ? − 1 ? → ℎ(?) ❖Trong đó ➢U là tập các khóa ➢{0, 1, …, m – 1} là tập các địa chỉ trên bảng băm ➢Giá trị h(k) gọi là hash code hoặc địa chỉ 11/07/2020 55 Hàm băm 11/07/2020 66 3 11/07/2020 Một vài loại hàm băm ❖Chia modulo ℎ ? = ? ??? ????? ➢Với ????? = ??????(?????) Tsize tốt nhất nên là số nguyên tố ❖Sinh viên có thể tham khảo thêm các hàm băm ➢Folding (gấp số) ➢Mid-Square Function ➢… 11/07/2020 77 Sự đụng độ (Collision) ❖Sự đụng độ hay xung đột địa chỉ ➢Một cách lý tưởng, hàm băm sẽ ánh xạ mỗi khoá vào một slot riêng biệt của bảng T ❖Tuy nhiên, điều này trong thực tế khó đạt được, vì: ➢m 11/07/2020 Sự đụng độ ❖Đụng độ là ∃??, ?? ∈ ?: ??≠ ?? , ℎ(?? ) = ℎ(?? ) 11/07/2020 99 Các phương pháp xử lý đụng độ ❖Phương pháp nối kết (separate chaining) ➢Phương pháp nối kết trực tiếp ➢Phương pháp nối kết hợp nhất ❖Phương pháp địa chỉ mở (open addressing) ➢(SV tham khảo tài liệu) [2], [3] 11/07/2020 1010 5 11/07/2020 Phương pháp nối kết trực tiếp ❖Khai báo #define M 101 • Lưu ý chọn giá trị M phù hợp để quản lý một bảng băm có tổng số phần tử struct Node { là n: int key; • M phải là số nguyên tố Node* next; • M tương đương (hoặc nhỏ hơn) giá }; trị n/10 • Mảng danh sách đặc heads[M] khi Node* heads[M]; khai báo có khả năng đủ vùng nhớ Node* z; để cấp phát 11/07/2020 1212 Phương pháp nối kết trực tiếp ❖Khởi tạo void init() { z = new Node; z->next = z; for (int i = 0; i < M; i++) heads[i] = z; } 11/07/2020 1313 6 11/07/2020 Phương pháp nối kết trực tiếp ❖Thêm một phần tử vào bảng băm: k = 103 h(k) = 103 % 101 = 2 11/07/2020 1414 Phương pháp nối kết trực tiếp ❖Thêm một phần tử vào bảng băm: k = 103 h(k) = 103 % 101 = 2 11/07/2020 ...
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu: Chương 4 - Trường ĐH Mở TP. HCM 11/07/2020 11/07/2020 11 Hàm băm Các phương pháp giải quyết đụng độ 11/07/2020 22 1 11/07/2020 Đặt vấn đề ❖Phương pháp tìm kiếm trong các chương trước chủ yếu dựa vào khóa ➢Mảng ➢Danh sách liên kết ➢Cây nhị phân tìm kiếm Tìm kiếm bằng cách so sánh lần lượt các phần tử Thời gian tìm kiếm không nhanh và phụ thuộc N (số phần tử) 11/07/2020 33 Khái niệm bảng băm ❖Bảng băm (hash table) là một cấu trúc dữ liệu, lưu trữ các khóa trong bảng T (danh sách đặc); sử dụng một hàm băm (hash function) để ánh xạ khoá (key) với một địa chỉ lưu trữ 11/07/2020 44 2 11/07/2020 Hàm băm ❖Hàm băm (hash function) là hàm biến đổi khóa k thành địa chỉ trong bảng băm ❖Phép biến đổi khóa: là một ánh xạ khoá thành địa chỉ ℎ: ? → 0, 1, … , ? − 1 ? → ℎ(?) ❖Trong đó ➢U là tập các khóa ➢{0, 1, …, m – 1} là tập các địa chỉ trên bảng băm ➢Giá trị h(k) gọi là hash code hoặc địa chỉ 11/07/2020 55 Hàm băm 11/07/2020 66 3 11/07/2020 Một vài loại hàm băm ❖Chia modulo ℎ ? = ? ??? ????? ➢Với ????? = ??????(?????) Tsize tốt nhất nên là số nguyên tố ❖Sinh viên có thể tham khảo thêm các hàm băm ➢Folding (gấp số) ➢Mid-Square Function ➢… 11/07/2020 77 Sự đụng độ (Collision) ❖Sự đụng độ hay xung đột địa chỉ ➢Một cách lý tưởng, hàm băm sẽ ánh xạ mỗi khoá vào một slot riêng biệt của bảng T ❖Tuy nhiên, điều này trong thực tế khó đạt được, vì: ➢m 11/07/2020 Sự đụng độ ❖Đụng độ là ∃??, ?? ∈ ?: ??≠ ?? , ℎ(?? ) = ℎ(?? ) 11/07/2020 99 Các phương pháp xử lý đụng độ ❖Phương pháp nối kết (separate chaining) ➢Phương pháp nối kết trực tiếp ➢Phương pháp nối kết hợp nhất ❖Phương pháp địa chỉ mở (open addressing) ➢(SV tham khảo tài liệu) [2], [3] 11/07/2020 1010 5 11/07/2020 Phương pháp nối kết trực tiếp ❖Khai báo #define M 101 • Lưu ý chọn giá trị M phù hợp để quản lý một bảng băm có tổng số phần tử struct Node { là n: int key; • M phải là số nguyên tố Node* next; • M tương đương (hoặc nhỏ hơn) giá }; trị n/10 • Mảng danh sách đặc heads[M] khi Node* heads[M]; khai báo có khả năng đủ vùng nhớ Node* z; để cấp phát 11/07/2020 1212 Phương pháp nối kết trực tiếp ❖Khởi tạo void init() { z = new Node; z->next = z; for (int i = 0; i < M; i++) heads[i] = z; } 11/07/2020 1313 6 11/07/2020 Phương pháp nối kết trực tiếp ❖Thêm một phần tử vào bảng băm: k = 103 h(k) = 103 % 101 = 2 11/07/2020 1414 Phương pháp nối kết trực tiếp ❖Thêm một phần tử vào bảng băm: k = 103 h(k) = 103 % 101 = 2 11/07/2020 ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cấu trúc dữ liệu Cấu trúc dữ liệu Hàm băm Phương pháp giải quyết đụng độ Phương pháp nối kết hợp nhấtGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 317 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 161 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 150 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 143 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 139 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 123 0 0 -
Lập trình C - Cấu trúc dữ Liệu
307 trang 74 0 0 -
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 3 - Một số mô hình thuật toán
42 trang 73 0 0 -
Ứng dụng và cài đặt cấu trúc dữ liệu bằng C: Phần 1
338 trang 72 0 0 -
49 trang 70 0 0