1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 14: Bảng băm

14 88 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

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 339,41 KB

Nội dung

Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 14: Bảng băm cung cấp cho người học các kiến thức: Hàm băm, một số phương pháp xây dựng hàm băm, bảng băm - Hash table. Cuối phần bài giảng có phần bài tập để người học ôn tập và củng cố kiến thức.

3 Tìm kiếm theo địa *** Bảng băm - Hash Tables © 2004 Goodrich, Tamassia  025-612-0001 981-101-0002  451-229-0004 I Hàm băm Cấu trúc hàm băm   Hàm băm có dạng sau: h : K  m-1 Trong đó: - h gọi hàm băm (hash h K x y z … function) - K tập giá trị khóa - m-1 bảng địa (là số nguyên) - m kích thước bảng  m-1 Yêu cầu xây dựng hàm băm:  Hàm phải dải địa bảng địa  Hàm băm phải tính tốn đơn giản Hình ảnh hàm băm h(k1) h(k3) h(k) K k1 k2 h(k2) k3 … N-1 Hàm băm Các đối tượng Hàm băm 012 … N-1 Bảng địa Một hàm băm ánh xạ đối tượng vào tập địa [0, N-1] II Một số phương pháp xây dựng hàm băm Phương pháp chia  Để tính địa dải đối tượng ta lấy giá trị khóa chia cho kích thước bảng Địa dải phần dư phép chia h(k) = k % m  Yêu cầu:  Hàm h phải dải đối tượng bảng cách ngẫu nhiên Để có điều h phải phụ thuộc vào m  Phụ thuộc vào m  Thông thường người ta chọn m số nguyên tố nhỏ gần với (10, 100, 1000, ) Phương pháp nhân Giá trị khóa nhân với sau lấy số bao gồm số chữ số “giữa” kết để làm “địa rải” Ví dụ: k 5402 0367 1246 k2 h(k) gồm chữ số 29181604 181 816 00134689 134 346 01552516 552 525 Rõ ràng chữ số phụ thuộc vào chữ số khóa khóa có khác chút địa dải khác nhiều Phương pháp phân đoạn Giá trị khóa phân thành nhiều đoạn    Người ta sử dụng hai kỹ thuật phân đoạn sau đây: Tách: Tách đoạn đoạn xếp thành hàng, dóng lề trái lề phải Gấp: Gấp đoạn lại theo đường biên tương tự gấp giấy, chữ rơi vào chỗ đặt thành hàng thẳng Ví dụ: Tách: giả sử có khóa k = 17046329 + 329 046 017 392 Gấp: 046 + 923 710 1679 Chọn 167 679 III Bảng băm - Hash table Một bảng băm cấu trúc dựa mảng để lưu trữ phần tử, phần tử cặp Khóa-Giá trị (key-value) Các thành phần cấu thành lên bảng băm    Mảng chứa Mỗi phần tử mảng quản lý danh sách phần tử có khóa qua ánh xạ h cho địa Hàm băm h(k) - Hash function, h(k)  Mã băm Giả sử có hàm h(k) = k % Có giá trị: 11, 21, 44, 23, 41, 4, 34, 12 Thùng chứa  11-21-41 12 23 44-4-34 10 Độ phức tạp thời gian Độ phức tạp thời đưa phần tử vào bảng tìm kiếm phần tử bảng Độ phức tạp thời gian   Trường hợp xấu O(n) Trường hợp tốt O(1) 11 Cấu trúc liệu bảng băm Thuộc tính   Mảng (mỗi phần tử mảng lưu danh sách phần tử) N: kích thước mảng Các phương thức      Node *Add(Key, Object) void Remove(Key) Node *Find(Key) bool Contains(Key) int Count() 12 Bài tập Viết chương trình nhập vào dãy số nguyên Xây dựng hàm băm để tìm kiếm phần tử nhập từ bàn phím (hàm băm theo số) Viết chương trình tìm kiếm sinh viên (sử dụng lớp sinh viên học) sử dụng bảng băm (hàm băm theo chữ) Thời gian: 17h00 ngày 12/11/2014 13 Relax 14 ... Hàm băm Cấu trúc hàm băm   Hàm băm có dạng sau: h : K  m-1 Trong đó: - h gọi hàm băm (hash h K x y z … function) - K tập giá trị khóa - m-1 bảng địa (là số nguyên) - m kích thước bảng  m-1... 1 1-2 1-4 1 12 23 4 4-4 -3 4 10 Độ phức tạp thời gian Độ phức tạp thời đưa phần tử vào bảng tìm kiếm phần tử bảng Độ phức tạp thời gian   Trường hợp xấu O(n) Trường hợp tốt O(1) 11 Cấu trúc liệu bảng. .. dựng hàm băm:  Hàm phải dải địa bảng địa  Hàm băm phải tính tốn đơn giản Hình ảnh hàm băm h(k1) h(k3) h(k) K k1 k2 h(k2) k3 … N-1 Hàm băm Các đối tượng Hàm băm 012 … N-1 Bảng địa Một hàm băm ánh

Ngày đăng: 14/10/2020, 22:21

HÌNH ẢNH LIÊN QUAN

Bảng bă m- Hash Tables - Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 14: Bảng băm
Bảng b ă m- Hash Tables (Trang 1)
- 0..m-1 là bảng địa chỉ (là các số nguyên) - Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 14: Bảng băm
0..m 1 là bảng địa chỉ (là các số nguyên) (Trang 2)
Hình ảnh hàm băm - Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 14: Bảng băm
nh ảnh hàm băm (Trang 3)
Bảng địa chỉ - Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 14: Bảng băm
ng địa chỉ (Trang 4)
 Hàm h phải dải đều các đối tượng trên bảng một cách ngẫu nhiên. Để có được điều đó h phải phụ thuộc vào m - Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 14: Bảng băm
m h phải dải đều các đối tượng trên bảng một cách ngẫu nhiên. Để có được điều đó h phải phụ thuộc vào m (Trang 5)
III. Bảng bă m- Hash table - Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 14: Bảng băm
Bảng b ă m- Hash table (Trang 9)
Cấu trúc dữ liệu bảng băm - Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 14: Bảng băm
u trúc dữ liệu bảng băm (Trang 12)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN