1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài giảng Thiết kế và đánh giá thuật toán: Bảng băm - TS. Lê Nguyên Khôi

19 1 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 19
Dung lượng 176,98 KB

Nội dung

Trong lĩnh vực Công Nghệ Thông Tin nói riêng, yêu cầu quan trọng nhất của người học đó chính là thực hành. Có thực hành thì người học mới có thể tự mình lĩnh hội và hiểu biết sâu sắc với lý thuyết. Với ngành mạng máy tính, nhu cầu thực hành được đặt lên hàng đầu. Tuy nhiên, trong điều kiện còn thiếu thốn về trang bị như hiện nay, người học đặc biệt là sinh viên ít có điều kiện thực hành. Đặc biệt là với các thiết bị đắt tiền như Router, Switch chuyên dụng

Thiết Kế & Đánh Giá Thuật Toán Bảng Băm TS Lê Nguyên Khôi Trường Đại Học Công Nghệ - ĐHQGHN Nội Dung Phương pháp băm  Hàm băm  Giải va chạm  Bài Toán Từ Điển Dùng tập động cài đặt từ điển  Mỗi phần tử cặp (khóa, liệu)  Có thể tìm theo khóa  Được xếp 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 liệu  nào? Bài Tốn Từ Điển   Nếu khóa liệu số nguyên không âm khoảng … − , phân biệt  Có thể sử dụng mảng cỡ  Dữ liệu khóa  lưu    Tìm kiếm, chèn, xóa thời gian (1) Thực tế không khả thi  Số phần tử liệu nhỏ so với 64-bit thể 2 (18 × 10 ) khóa khác  Xâu ký tự chí cịn lớn  số Khóa khơng phải số ngun Tận dụng phép truy cập trực tiếp mảng   Phương Pháp Băm   Lưu liệu mảng  …  − Hàm băm ℎ: ánh xạ giá trị khóa  liệu tới số  (0 ≤  < )   Dữ liệu lưu [] ℎ:  → {0, 1, … ,  − 1} Tính địa Hàm băm ℎ … i … −1 Tập giá trị khoá Mảng  Phương Pháp Băm  Nếu có  ≠ " ℎ( ) ≠ ℎ(" ), tính số ℎ() thời gian (1)   phép tốn tìm kiếm, chèn, xóa thời gian (1) Tuy nhiên, thường xảy va chạm Chèn khóa vào vị trí có khóa khác  Thực tế  ≠ " cho ℎ  = ℎ(" )  Hàm Băm   Khó xác định phương pháp băm đồng đơn giản Hàm băm tốt Phân bố khóa đồng vào vị trí  Tính nhanh & dễ dàng  Đảm bảo va chạm   Khóa số nguyên không âm Phương pháp chia  Phương pháp nhân   Khóa xâu ký tự  Đổi xâu thành số nguyên không âm Hàm Băm – Phương Pháp Chia ℎ  =  mod  Nhạy cảm với cỡ bảng băm ()  Chọn  để hạn chế xảy va chạm  Khơng chọn  có ước số nhỏ  Số nguyên tố có dạng đặc biết, ví dụ 4) +   Ví dụ:  = 2, , hàm băm không phụ thuộc vào tất bit    = 1011000111- -.-" / = 6, ℎ  = - -.-" Hàm Băm – Phương Pháp Nhân = , , với máy tính 1-bit Hàm băm: ℎ() = (2 ·  mod 24 ) rsh (1– /)  rsh toán tử “bitwise right-shift”  Toán  số lẻ khoảng 249 < < 24   tử rsh nhanh Không chọn gần 249 24 Phép nhân phép chia dư 24 nhanh phép chia Hàm Băm – Phương Pháp Nhân ℎ() = (2 ·   mod 2 ) rsh (1– /) : = 2, = = 2; với máy tính = 7-bit 1011001 1101011 10010100110011 ℎ  = 011 = =  Hàm Băm – Xâu Ký Tự Đổi ký tự thành số nguyên (bảng ASCII)  Khi xâu ký tự số hệ số 128  Chuyển sang hệ 10  Nhược điểm: xâu dài cho kết vượt khả biểu diễn máy tính   Cải tiến: Xâu ký tự thường tạo thành từ 26 chữ cái, 10 chữ số, số ký tự khác  Thay 128 thành 37  10 Giải Quyết Va Chạm  Nếu liệu = với khóa  lưu   với ℎ  =  Cần thêm liệu =" với khóa "  Nếu ℎ " = , xảy va chạm, =" lưu đâu?  Các phương pháp  Dây chuyền  Tạo danh sách lưu tất liệu có vị trí   Địa mở  Tìm vị trí khác cịn trống bảng cho liệu vào 11 Giải Quyết Va Chạm – Dây Chuyền  Tại vị trí bảng băm  danh sách liên kết liệu có giá trị băm  … … Hàm băm … …   Ưu điểm:   Số liệu lưu không phụ thuộc vào cỡ mảng Thời gian phép tốn tìm kiếm, chèn, xóa? 12 Dây Chuyền – Phân Tích Thời Gian  Trường hợp xấu nhất: Tất khóa băm vào vị trí  Thời gian tìm kiếm > ?   Trường hợp trung bình:  Mỗi khóa  băm vào vị trí , độc lập với việc khóa khác băm 13 Dây Chuyền – Phân Tích Trung Bình  Trường hợp trung bình: băm đồng ? số lượng khóa bảng  độ lớn bảng Hệ số tải bảng băm  A @ = = số lượng khóa trung bình B vị trí bảng băm  14 Dây Chuyền – Tìm Kiếm Trung Bình Thời gian tìm kiếm không thành công => 1+@ Hàm băm Truy cập vị trí Tìm kiếm danh sách Thời gian tìm kiếm > @ = > Thời gian tìm kiếm thành cơng có tiệm cận tương tự 15 Giải Quyết Va Chạm – Địa Chỉ Mở  Khi xảy va chạm, tìm vị trí khác cịn trống bảng cho liệu vào Dãy vị trí tìm gọi dãy thăm dị  Bảng băm bị đầy   Xác định dãy thăm dị  Tuyến tính  Dãy  Bình phương  Dãy  thăm dị: ,  + 1,  + 2, … thăm dò: ,  + 1" ,  + 2" , … Băm kép  Dãy thăm dò: ℎ () + :ℎ" () với : = 0,1,2, … 16 Bài Tập  = 11, Phương pháp chia, Thăm dị tuyến tính insert(388) insert(130) insert(13) insert(14) insert(926) insert(47) search(47) … delete(926) search(47) delete(388) search(926) 17 Thăm Dị – Nhận Xét  Tuyến tính  Ưu điểm: xét tất vị trí mảng   Phép chèn thực được, trừ mảng đầy Nhược điểm: Dữ liệu tập trung thành đoạn  Tìm kiếm đ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 vị trí mảng   Phép chèn khơng thực Băm kép  Nếu cỡ mảng bước thăm dò ℎ" () nguyên tố cho phép tìm đến tất vị trí mảng 18

Ngày đăng: 02/07/2023, 05:26

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

TÀI LIỆU LIÊN QUAN