1. Trang chủ
  2. » Tài Chính - Ngân Hàng

Hàm Băm – Bảng Băm

21 8 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 21
Dung lượng 89,43 KB

Nội dung

[r]

(1)

Bài 14: Hàm băm

Ni dung:

14.1 Bài toán.

14.2 Hàm băm.

14.3 Gii quyết xung đột.

(2)

14.1 Bài toán (1/9)

Giả sử cần lưu trữ một số bản ghi thực hiện thao tác:

Thêm: thêm ghi

Xóa: xóa ghi

Tìm kiếm: tìm kiếm ghi

(3)

14.1 Bài toán (2/9) – S dng mng

S dng mng không được sp xếp Thêm: thêm vào cuối mảng->O(1)

Xóa: mất nhiều thời gian tìm vị trí cần xóa dồn mảng->O(n)

Tìm kiếm: tìm kiếm tuần tự->O(n)

S dng mng được sp xếp

Thêm: phải tìm vị trí thêm vào->O(n)

Xóa: mất nhiều thời gian tìm vị trí cần xóa dồn mảng->O(n)

(4)

14.1 Bài toán (3/9) – S dng DSLK Thêm: thêm vào vị trí bất kỳ nhanh->O(1)

Xóa: nhanh tổ chức nút, nhưng chậm tìm kiếm nút cần khóa->O(n)

(5)

14.1 Bài toán (4/9) – dùng như bng

Giả sử cần lưu trữ 1000 bản ghi về sinh viên tìm kiếm chúng theo ID

ID Họ tên Điểm

0012345 Nguyễn Văn A 10 0033333 Nguyễn Văn B 0056789 Nguyễn Văn C

… … …

9801010 Nguyễn Thị A 9802020 Nguyễn Thị B

… … …

(6)

14.1 Bài toán (5/9) – dùng như bng

Dùng mảng lớn để lưu trữ (index 9999999) Chỉ số mảng với số id sinh viên, i.e ví dụ sinh viên với studid 0012345 lưu trữ A[12345]

Tên Điểm

… … …

12345 Nguyễn Văn A 10

… … …

33333 Nguyễn Văn B

… … …

56789 Nguyễn Văn C

… … …

9801010 Nguyễn Thị A

… … …

9802020 Nguyễn Thị B

… … …

(7)

14.1 Bài toán (6/9) – dùng như bng

Mt s nhn xét:

Đánh giá thao tác Thêm: rất nhanh O(1)

Xóa: rất nhanh O(1)

Tìm kiếm: rất nhanh O(1)

(8)

14.1 Bài toán (7/9) – dùng hàm băm

function Hash(key: KeyType): integer;

Giả sử có hàm băm lý tưởng Nó ánh xạ khóa (ID) 1000 ghi vào giá trị nguyên 999, hai khóa khác cho hai số nguyên khác

H(‘0012345’) = 134 H(‘0033333’) = 67 H(‘0056789’) = 764 …

(9)

14.1 Bài toán (8/9) – dùng hàm băm

• Để lưu trữ ghi, tính Hash(ID) cho ghi lưu trữ vị trí Hash(ID) mảng

•Để tìm kiếm sinh viên, cần truy cập đến vị trí Hash(target ID)

0 … …

… … …

3 Trần Văn B 10

… … …

67 Nguyễn Văn B

… … …

134 Nguyễn Văn A 10

… … …

764 Nguyễn Văn C

… … …

(10)

14.1 Bài toán (9/9) – dùng hàm băm Vi hàm băm lý tưởng

Thêm: O(1)

Xóa: O(1)

Tìm kiếm: O(1)

(11)

14.2 Hàm băm (1/6)

Khái niệm:

Hàm băm giải thuật nhằm sinh giá trị băm tương ứng với khối liệu

Giá trị băm đóng vai gần khóa để phân biệt khối

liệu

(12)

14.2 Hàm băm (2/6)

Yêu cu đối vi hàm băm: Tính tốn nhanh

Các khóa phân bố bảng Ít xảy đụng độ

(13)

14.2 Hàm băm (3/6)

Mt s lĩnh vc s dng hàm băm: Mật mã học

Bảng băm

(14)

14.2 Hàm băm (4/6) – Mt s hàm băm Hàm ct b:

Cho khóa số nguyên, bỏ bớt phần khóa

Ví dụ: khóa số ngun có chữ số x=842615 Ta

quy ước bỏ bớt chẳng hạn chữ số hàng lẻ (1,3,5…), số lại 821 Vậy H(x) = H(842615) = 821

(15)

14.2 Hàm băm (5/6) – Mt s hàm băm Hàm phn dư:

Khóa có giá trị nguyên bảng băm B có m phần tử, ta lấy phần dư phép chia x/m làm giá trị hàm băm Để đảm bảo tính chất thứ hai hàm băm nên chọn m số nguyên tố

(16)

14.2 Hàm băm (6/6) – Mt s hàm băm Hàm gp:

Cho khóa số nguyên, chia số nguyên thành số đoạn tùy chọn, sau kết hợp phần lại theo quy ước Ví dụ: Số hàng lẻ: 465 số hàng chẵn: 821,

H(x)=465+821=1286

Nhn xét: Tính chất thứ hàm băm thỏa mãn Do chữ số khóa có sử dụng, nên tính chất thứ hai

(17)

14.3 Xung đột gii quyết xung đột (1/4) Trong hầu hết trường hợp không tránh xung đột

H(‘0012345’) = 134 H(‘0033333’) = 67 H(‘0056789’) = 764 …

H(‘9903030’) = 3

H(‘9908080’) = 3

• Xử lý hai khóa khác lại ánh xạ đến

(18)

14.3 Xung đột gii quyết xung đột (2/4)

Phương pháp dị tuyến tính: ý tưởng dị tìm vị trí trống tiếp

theo rồi chèn phần tử bị đụng độ vào đó Khi mảng đầy resize lại mảng.

Phương pháp dây chuyn: Thay cố gắng tìm danh

sách một vị trí cịn trống kế tiếp, phương pháp dây chuyền liên kết danh sách có khóa khác nhưng có giá trị

(19)

14.3 Xung đột gii quyết xung đột (3/4) 89 18 89 49 18 89 49 58 18 89 49 58 18 89

Insert: 89, 18, 49, 58, to table size=10, hash function is: %tablesize

(20)

Phương pháp dây chuyn:

14.3 Xung đột gii quyết xung đột (4/4)

2 null null null null :

HASHMAX ID: 9903030

Tên: Trần Văn A

(21)

14.4 Mt s ví d s dng hàm băm

Ngày đăng: 20/04/2021, 14:51

TỪ KHÓA LIÊN QUAN

w