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