7kl à w. à w7riq qj% p - vnukhoi.n.le/tkdgtt/pdf/09_bangbam.pdf · lxÿl Çp [pww ©wf §fify...

19
ThiếtKế & Đánh Giá Thut Toán Bng Băm TS. Lê Nguyên Khôi Trường ĐiHc Công Ngh- ĐHQGHN

Upload: others

Post on 28-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Thiết Kế & Đánh Giá Thuật ToánBảng Băm

TS. Lê Nguyên Khôi

Trường Đại Học Công Nghệ - ĐHQGHN

Page 2: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Nội Dung

Phương pháp băm Hàm băm Giải quyết va chạm

1

Thiết Kế & Đánh Giá Thuật Toán

Page 3: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Bài Toán Từ Điển

Dùng tập động cài đặt từ điển Mỗi phần tử là cặp (khóa, dữ liệu)

Có thể tìm theo khóa Được sắp xếp hoặc không

Chỉ quan tâm tới Tìm kiếm SEARCH Chèn INSERT Xóa DELETE

Tổ chức cấu trúc dữ liệu như thế nào?

2

Thiết Kế & Đánh Giá Thuật Toán

Page 4: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Bài Toán Từ Điển

Nếu khóa của dữ liệu là số nguyên không âmtrong khoảng , phân biệt Có thể sử dụng mảng cỡ Dữ liệu khóa lưu tại Tìm kiếm, chèn, xóa trong thời gian

Thực tế không khả thi Số phần tử dữ liệu có thể rất nhỏ so vớisố 64-bit thể hiện ( khóa khác nhauXâu ký tự thậm chí còn lớn hơn

Khóa có thể không phải số nguyên Tận dụng phép truy cập trực tiếp của mảng

3

Thiết Kế & Đánh Giá Thuật Toán

Page 5: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Phương Pháp Băm

Lưu dữ liệu trong mảng Hàm băm : ánh xạ mỗi giá trị khóa của dữ

liệu tới một chỉ số ( ) Dữ liệu sẽ được lưu trong

4

Tínhđịa chỉ

Tập các giá trị khoá

Hàm băm

Mảng

Thiết Kế & Đánh Giá Thuật Toán

Page 6: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Phương Pháp Băm

Nếu có thì , và tínhchỉ số trong thời gian thì các phép toán tìm kiếm, chèn, xóa cũng

trong thời gian

Tuy nhiên, thường xảy ra va chạm Chèn khóa vào vị trí đã có khóa khác Thực tế có thể cho

5

Thiết Kế & Đánh Giá Thuật Toán

Page 7: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Hàm Băm

Khó xác định phương pháp băm đồng đềuđơn giản.

Hàm băm tốt Phân bố khóa đồng đều vào các vị trí Tính nhanh & dễ dàng Đảm bảo ít va chạm

Khóa là số nguyên không âm Phương pháp chia Phương pháp nhân

Khóa là xâu ký tự Đổi xâu thành số nguyên không âm

6

Thiết Kế & Đánh Giá Thuật Toán

Page 8: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Hàm Băm – Phương Pháp Chia

Nhạy cảm với cỡ của bảng băm ( ) Chọn để hạn chế xảy ra va chạm

Không chọn có ước số nhỏ Số nguyên tố có dạng đặc biết, ví dụ

Ví dụ: nếu , hàm băm không phụthuộc vào tất cả các bit của và , thì

7

Thiết Kế & Đánh Giá Thuật Toán

Page 9: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Hàm Băm – Phương Pháp Nhân

, với máy tính -bit. Hàm băm:

là toán tử “bitwise right-shift” Toán tử nhanh

là số lẻ trong khoảng Không chọn quá gần hoặc

Phép nhân và phép chia dư nhanhhơn phép chia

8

Thiết Kế & Đánh Giá Thuật Toán

Page 10: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Hàm Băm – Phương Pháp Nhân

với máy tính -bit

1011001 = 1101011 =

10010100110011011

9

Thiết Kế & Đánh Giá Thuật Toán

Page 11: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Hàm Băm – Xâu Ký Tự

Đổi ký tự thành số nguyên (bảng ASCII) Khi đó xâu ký tự là số trong hệ cơ số 128

Chuyển sang hệ 10 Nhược điểm: xâu dài cho kết quả vượt quá

khả năng biểu diễn của máy tính

Cải tiến: Xâu ký tự thường được tạo thành từ 26 chữ

cái, 10 chữ số, và một số ký tự khác Thay 128 thành 37

10

Thiết Kế & Đánh Giá Thuật Toán

Page 12: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Giải Quyết Va Chạm

Nếu dữ liệu với khóa đã được lưu tạivới . Cần thêm dữ liệu với khóa Nếu , xảy ra va chạm, lưu ở đâu?

Các phương pháp Dây chuyềnTạo một danh sách lưu tất cả dữ liệu có cùng

vị trí

Địa chỉ mởTìm vị trí khác còn trống trong bảng và cho dữ

liệu mới vào đó

11

Thiết Kế & Đánh Giá Thuật Toán

Page 13: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Giải Quyết Va Chạm – Dây Chuyền

Tại mỗi vị trí trong bảng băm là một danhsách liên kết các dữ liệu có cùng giá trị băm

Ưu điểm: Số dữ liệu lưu không phụ thuộc vào cỡ của mảng

Thời gian các phép toán tìm kiếm, chèn, xóa?

12

Hàmbăm

Thiết Kế & Đánh Giá Thuật Toán

Page 14: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Dây Chuyền – Phân Tích Thời Gian

Trường hợp xấu nhất: Tất cả các khóa được băm vào cùng vị trí Thời gian tìm kiếm

Trường hợp trung bình: Mỗi khóa có thể được băm vào bất cứ vị trí

nào trong , độc lập với việc các khóa khácđược băm như thế nào

13

Thiết Kế & Đánh Giá Thuật Toán

Page 15: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Dây Chuyền – Phân Tích Trung Bình

Trường hợp trung bình: băm đồng đều

số lượng khóa trong bảngđộ lớn của bảng

Hệ số tải của bảng băm

số lượng khóa trung bình tại mỗi

vị trí trong bảng băm

14

Thiết Kế & Đánh Giá Thuật Toán

Page 16: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Dây Chuyền – Tìm Kiếm Trung Bình

Thời gian tìm kiếm không thành công

Thời gian tìm kiếm là nếu Thời gian tìm kiếm thành công có tiệm cậntương tự

15

Hàm bămTruy cập vị trí

Tìm kiếmdanh sách

Thiết Kế & Đánh Giá Thuật Toán

Page 17: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Giải Quyết Va Chạm – Địa Chỉ Mở

Khi xảy ra va chạm, tìm vị trí khác còn trốngtrong bảng và cho dữ liệu mới vào đó Dãy các vị trí được tìm gọi là dãy thăm dò Bảng băm có thể bị đầy

Xác định dãy thăm dò Tuyến tínhDãy thăm dò: , , ,

Bình phươngDãy thăm dò: , , ,

Băm képDãy thăm dò: với

16

Thiết Kế & Đánh Giá Thuật Toán

Page 18: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Bài Tập

, Phương pháp chia, Thăm dò tuyến tính

insert(388) search(47) …insert(130) delete(926)..insert(13) search(47)insert(14) delete(388)insert(926) search(926)insert(47)

17

Thiết Kế & Đánh Giá Thuật Toán

Page 19: 7KL Ã W. Ã W7RiQ QJ% P - VNUkhoi.n.le/tkdgtt/pdf/09_BangBam.pdf · lxÿl Çp [pww ©wf §fify Ïwutwurqjp §qj 3kpsfkqqox{qwk õfkl Ëqÿ m çf wu ïnklp §qjÿ «\ 1k m çfÿl

Thăm Dò – Nhận Xét Tuyến tính

Ưu điểm: xét tất cả các vị trí trong mảng Phép chèn luôn thực hiện được, trừ khi mảng đầy

Nhược điểm: Dữ liệu tập trung thành các đoạn Tìm kiếm tuần tự trong từng đoạn

Bình phương Ưu điểm: tránh nhược điểm thăm dò tuyến tính Nhược điểm: không xét tất cả các vị trí trong mảng Phép chèn có thể không thực hiện được

Băm kép Nếu cỡ của mảng và bước thăm dò nguyên tố

cùng nhau thì cho phép tìm đến tất cả các vị trí trongmảng

18

Thiết Kế & Đánh Giá Thuật Toán