BẢNG BĂM (HASH TABLE) Part 1.pdf (Cấu Trúc Dữ Liệu) | Tải Miễn Phí
Có thể bạn quan tâm
Trang chủ Tìm kiếm Trang chủ Tìm kiếm Cấu trúc dữ liệu : BẢNG BĂM (HASH TABLE) part 1 pdf 5 746 KB 0 70 4 ( 13 lượt) Xem tài liệu Nhấn vào bên dưới để tải tài liệu Tải về Đang chuẩn bị: 60 Bắt đầu tải xuống Để tải xuống xem đầy đủ hãy nhấn vào bên trên Chủ đề liên quan Cấu trúc dữ liệu tài liệu cấu trúc dữ liệu đề cương Cấu trúc dữ liệu Giáo trình Cấu trúc dữ liệu Bài giảng Cấu trúc dữ liệu
Nội dung
Bài 3: BẢNG BĂM (HASH TABLE) Phép băm được đề xuất và hiện thực trên máy tính từ những năm 50 của thế kỷ 20. Nó dựa trên ý tưởng: biến đổi giá trị khóa thành một số (xử lý băm) và sử dụng số này để đánh chỉ cho bảng dữ liệu. Các phép toán trên các cấu trúc dữ liệu như danh sách, cây nhị phân,… phần lớn được thực hiện bằng cách so sánh các phần tử của cấu trúc, do vậy thời gian truy xuất không nhanh và phụ thuộc vào kích thước của cấu trúc. Trong bài này chúng ta sẽ khảo sát một cấu trúc dữ liệu mới được gọi là bảng băm (hash table). Các phép toán trên bảng băm sẽ giúp hạn chế số lần so sánh, và vì vậy sẽ cố gắng giảm thiểu được thời gian truy xuất. Độ phức tạp của các phép toán trên bảng băm thường có bậc là 0(1) và không phụ thuộc vào kích thước của bảng băm. Các khái niệm chính trên cấu trúc bảng băm: · Phép băm hay hàm băm (hash function) · Tập khoá của các phần tử trên bảng băm · Tập địa chỉ trên bảng băm · Phép toán thêm phần tử vào bảng băm · Phép toán xoá một phần tử trên bảng băm · Phép toán tìm kiếm trên bảng băm Thông thường bảng băm được sử dụng khi cần xử lý các bài toán có liệu lớn và được lưu trữ ở bộ nhớ ngoài. dữ 1 1. PHÉP BĂM (Hash Function) Định nghĩa: Trong hầu hết các ứng dụng, khoá được dùng như một phương thức để truy xuất dữ liệu. Hàm băm được dùng để ánh xạ giá trị khóa khoá vào một dãy các địa chỉ của bảng băm (hình 1). Hình 1 Khóa có thể là dạng số hay số dạng chuỗi. Giả sử có 2 khóa phân biệt ki và kj nếu h(ki)=h(kj) thì hàm băm bị đụng độ. Một hàm băm tốt phải thỏa mãn các điều kiện sau: Tính toán nhanh. Các khoá được phân bố đều trong bảng. Ít xảy ra đụng độ. Xử lý được các loại khóa có kiểu dữ liệu khác nhau Hàm Băm sử dụng Phương pháp chia Dùng số dư: h(k) = k mod m k là khoá, m là kích thước của bảng. Như vậy h(k) sẽ nhận: 0,1,2,…,m-1. Việc chọn m sẽ ảnh hưởng đến h(k). Nếu chọn m=2p thì giá trị của h(k) sẽ là p bit cuối cùng của k trong biểu diễn nhị phân. Nếu chọn m=10 p thì giá trị của h(k) sẽ là p chữ số cuối cùng trong biểu diễn thập phân của k. Trong 2 ví dụ trên giá trị h(k) không phụ thuộc đầy đủ vào khóa k mà chỉ phụ thuộc vào p bít (p chữ số) cuối cùng trong khóa k. Tốt nhất ta nên chọn m sao cho h(k) phụ thuộc đầy đủ và khóa k. Thông thường chọn m là số nguyên tố. VD: Bảng băm có 4000 mục, chọn m = 4093 2 Hàm Băm sử dụng Phương pháp nhân h(k) = m*(k*A mod 1) k là khóa, m là kích thước bảng, A là hằng số: 0 < A < 1 Chọn m và A Theo Knuth thì chọn A bằng giá trị sau: A=( 5 -1)/2=0.6180339887… m thường chọn m = 2p VD: k=123456; m=10000 H(k)= 10000 (123456* 0.6180339887 mod 1) H(k)= 10000 (76300.0041089472 mod 1) H(k)= 10000 (0.0041089472) H(k)=41 Phép băm phổ quát (unisersal hashing) Việc chọn hàm băm không tốt có thể dẫn đến xác suất đụng độ cao. Giải pháp: - Lựa chọn hàm băm h ngẫu nhiên. - Khởi tạo một tập các hàm băm H phổ quát và từ đó h được chọn ngẫu nhiên. Cho H là một tập hợp hữu hạn các hàm băm: ánh xạ các khóa k từ tập khóa U vào miền giá trị {0,1,2,…, m-1}. Tập H là phổ quát nếu với mọi f H và 2 khoá phân biệt k1,k2 ta có xác suất: Pr{f(k1) = f(k2)}Từ khóa » Bảng Băm Trong Cấu Trúc Dữ Liệu Và Giải Thuật
-
Bảng Băm(Hash Table) | Cài đặt Bảng Băm Và Kỹ Thuật Xử Lý Va Chạm
-
Cấu Trúc Dữ Liệu Và Giải Thuật Nâng Cao Bài 3:bảng Băm(hash Table)
-
Cấu Trúc Dữ Liệu & Giải Thuật [14]: #HashTable | Bảng Băm - YouTube
-
Bảng Băm Trong C++ | TopDev
-
CTDL Và Giải Thuật - Tìm Kiếm Bằng Bảng Băm
-
Bài Giảng Cấu Trúc Dữ Liệu Và Giải Thuật: Bảng Băm - TaiLieu.VN
-
Bài Giảng Cấu Trúc Dữ Liệu Và Giải Thuật Trong C++ - Bài: Bảng Băm
-
Bảng Băm – Wikipedia Tiếng Việt
-
Bảng Băm (Hash Table) - VNOI
-
Bài Giảng Cấu Trúc Dữ Liệu Và Giải Thuật Trong C++ – Bài 14 - Cộng Trừ
-
Tài Liệu Giáo Trình Cấu Trúc Dữ Liệu Và Giải Thuật_Chương 6: Bảng Băm
-
Bảng Băm Và Các Cơ Chế Giải Quyết Xung đột Cơ Bản — Hashing And ...
-
Cấu Trúc Dữ Liệu Bảng Băm Và ứng Dụng Của Bảng Băm - TEK4