1. Trang chủ
  2. » Địa lý lớp 11

Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 22: Hàm băm

10 9 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 550,51 KB

Nội dung

Chỉ số của mảng bằng với ch ỉ số id của sinh viên, i.e.[r]

(1)

Giảng viên: TS Ngo Huu Phuc Tel: 0438 326 077 Mob: 098 5696 580

Email:

Cấu trúc liệu giải thuật

(2)

Bài 22: Hàm băm

Nội dung:

22.1 Bài toán.

22.2 Hàm băm.

22.3 Giải xung đột.

22.4 Một số ví dụ sử dụng hàm băm.

(3)

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

 Giả sử cần lưu trữ số ghi thực thao tác:

Thêm: thêm một ghi

Xóa: xóa một ghi

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

(4)

22.1 Bài toán (2/9) – Sử dụng mảng

Sử dụng mảng không 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ử dụng mảng 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)

Tìm kiếm: tìm kiếm nhị phân->O(log(n))

(5)

22.1 Bài toán (3/9) – Sử dụng DSLK

Thêm: thêm vào vị trí nhanh->O(1)

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

(6)

22.1 Bài toán (4/9) – dùng bảng

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

6 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical University

ID Họ tên Điểm

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

… … …

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

… … …

(7)

22.1 Bài toán (5/9) – dùng bảng

 Dùng một mảng lớn để lưu trữ (index 9999999) Chỉ số mảng với chỉ 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 9

… … …

56789 Nguyễn Văn C 8

… … …

9801010 Nguyễn Thị A 7

… … …

9802020 Nguyễn Thị B 8

(8)

22.1 Bài toán (6/9) – dùng bảng

Một số nhận 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)

Nhưng tốn nhớ->không hiệu quả

(9)

22.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 nhau.

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

(10)

22.1 Bài tốn (8/9) – dùng hàm băm

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

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

10 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical University

0 … …

… … …

3 Trần Văn B 10

… … …

67 Nguyễn Văn B 9

… … …

134 Nguyễn Văn A 10

… … …

764 Nguyễn Văn C 8

… … …

Ngày đăng: 09/03/2021, 07:11