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 10 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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

Gi ảng viên: TS Ngo Huu Phuc

Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com

C ấu trúc dữ liệu và giải thuật

Bài 22: Hàm băm

Trang 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 quyết xung đột.

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

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

Trang 3

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

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

Thêm : thêm m ột bản ghi

Xóa : xóa m ột bản ghi

Tìm ki ếm : tìm ki ếm một bản ghi

 Hãy đưa ra cách tổ chức để thực hiện hiệu quả các công việc trên.

Trang 4

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

S ử dụng mảng không được sắp 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 và dồn mảng->O(n)

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

S ử dụng mảng được sắp 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 và dồn mảng->O(n)

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

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

Trang 5

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

Thêm: thêm vào v ị trí bất kỳ nhanh->O(1)

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

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

Trang 6

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

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

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

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

9903030 Tr ần Văn A 9

9908080 Tr ần Văn B 10

Trang 7

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

 Dùng m ột mảng rất lớn để lưu trữ (index 0 9999999) Chỉ số của mảng bằng với

ch ỉ số id của sinh viên, i.e ví dụ sinh viên với studid 0012345 thì được lưu trữ tại A[12345]

Tên Điểm

9802020 Nguy ễn Thị B 8

Trang 8

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

M ột số nhận xét:

Đánh giá các 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 quá tốn kém bộ nhớ->không hiệu quả

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

Trang 9

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

function Hash(key: KeyType): integer;

Gi ả sử có 1 hàm băm lý tưởng Nó

ánh x ạ khóa (ID) của 1000 bản ghi

vào các giá tr ị nguyên 0 999, hai

khóa khác nhau cho hai s ố nguyên

khác nhau.

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

… H(‘9908080’) = 3

Trang 10

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

• Để lưu trữ một bản ghi,

tính Hash(ID) cho b ản

ghi và lưu trữ nó tại vị trí

Hash(ID) c ủa mảng

• Để tìm kiếm một 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

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

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w