Chương này cung cấp kiến thức về tìm kiếm theo bảng băm. Nội dung trình bày trong chương gồm có: Khái quát về hash, độ phức tạp, hàm băm (hash funtion), khó khăn của hàm băm, những yêu cầu đối với hàm băm,.... Mời các bạn cùng tham khảo.
31 Hash Table Cấu trúc liệu giải thuật – HCMUS 2011 32 Vấn đề: Cho trước tập S gồm phần tử đặc trưng giá trị khóa Trên giá trị khóa có quan hệ thứ tự Tổ chức S để tìm kiếm phần tử có khóa k cho trước có độ phức tạp giới hạn nhớ cho phép? Ý tưởng: Biến đổi khóa k thành số (bằng hàm hash) sử dụng số địa để tìm kiếm bảng liệu Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 33 ĐNĐTiến +84.95.8345678 VCNam +84.91.2345678 NTHNhung +84.90.9345678 Cấu trúc liệu giải thuật – HCMUS 2011 34 Chi phí tìm kiếm trung bình: O(1) Chi phí tìm kiếm trường hợp xấu nhất: O(n) (rất gặp) Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 35 Định nghĩa: hàm biến đổi khóa k phần tử thành địa bảng băm Ví dụ: H(k) = k mod M Tổng quát phép biến đổi khóa: Là ánh xạ thích hợp từ tập khóa U vào tập địa A H: U A k a = h(k) Cấu trúc liệu giải thuật – HCMUS 2011 36 Tập giá trị khóa (U) lớn nhiều so với số khóa thực tế (K) nhiều Ví dụ: Quản lý danh sách 1000 sinh viên, mã sinh viên gồm chữ số Có U = 107 khóa so với K = 1000 Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 37 T Tập U Tập K 10 7 10 Key Data 10 Cấu trúc liệu giải thuật – HCMUS 2011 38 k1, k2 K: k1 ≠ k2, H(k1) = H(k2) Tập U T H(3) H(4) Tập K 10 H(2) = H(8) H(10) Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 39 Ít xảy đụng độ Tính tốn nhanh Các khóa phân bố Cấu trúc liệu giải thuật – HCMUS 2011 40 Xét lại ví dụ danh sách sinh viên: Với kích thước bảng M = 1000, ta chọn hàm băm sau: H(k) = k mod M Khóa thỏa mãn u cầu tính tốn nhanh trải bảng Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 41 Phương pháp nối kết (chaining) Phương pháp địa mở (Open-addressing) Cấu trúc liệu giải thuật – HCMUS 2011 42 Ứng với địa bảng, ta có danh sách liên kết chứa phần tử có khóa khác mà có địa Ta có danh sách (bảng băm) gồm M phần tử chứa địa đầu danh sách liên kết Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 43 ĐNĐTiến +84.95.8345678 VCNam +84.91.2345678 ĐTMHậu +84.95.6543210 NTHNhung +84.90.9345678 Cấu trúc liệu giải thuật – HCMUS 2011 44 Tên gọi khác: Phương pháp dò Phương pháp thử Ý tưởng: Khi đụng độ xảy ra, ta thử tìm đến vị trị bảng tìm thấy vị trí trống Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 45 Phương pháp dị tuyến tính (Linear probing) Phương pháp dò bậc (Quadratic probing) Phương pháp băm kép (Double hashing) Cấu trúc liệu giải thuật – HCMUS 2011 46 Ý tưởng: H(k, i) = (h(k) + i) mod M ĐNĐTiến +84.95.8345678 406 VCNam +84.91.2345678 407 ĐTMHậu +84.95.6543210 999 NTHNhung +84.90.9345678 405 1000 Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 47 Phương pháp dò bậc 2: H(k, i) = (h(k) + i2) mod M Phương pháp băm kép: H(k, i) = (h1(k) + i*h2(k)) mod M Cấu trúc liệu giải thuật – HCMUS 2011 48 Đơn giản cài đặt Sử dụng cấu trúc liệu Phương pháp địa mở giải đụng độ lại gây đụng độ Phương pháp nối kết không bị ảnh hưởng tốc độ mảng gần đầy Ít tốn nhớ mảng thưa (ít phần tử) Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 49 Cho bảng băm có kích thước M = 11 Hàm băm: h(k) = k mod M Dùng phương pháp địa mở Cho biết kết sau thêm vào bảng băm khóa 10, 22, 31, 4, 15, 28, 17, 88, 59, với phương pháp xử lý đụng độ: a Dị tuyến tính b Dị bậc c Băm kép h2(k) = (k mod 19)+1 Cấu trúc liệu giải thuật – HCMUS 2011 50 Cho từ điển Anh – Việt có 15.000 từ, tổ chức cấu trúc liệu bảng băm cho biết hàm băm thích hợp giúp cho việc tra từ hiệu Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 10 51 Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 11 ... +84.90.9345678 Cấu trúc liệu giải thuật – HCMUS 2011 34 Chi phí tìm kiếm trung bình: O(1) Chi phí tìm kiếm trường hợp xấu nhất: O(n) (rất gặp) Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011... tuyến tính b Dị bậc c Băm kép h2(k) = (k mod 19)+1 Cấu trúc liệu giải thuật – HCMUS 2011 50 Cho từ điển Anh – Việt có 15.000 từ, tổ chức cấu trúc liệu bảng băm cho biết hàm băm thích hợp giúp cho... 1000 Cấu trúc liệu giải thuật – HCMUS 2011 © FIT-HCMUS 2011 47 Phương pháp dò bậc 2: H(k, i) = (h(k) + i2) mod M Phương pháp băm kép: H(k, i) = (h1(k) + i*h2(k)) mod M Cấu trúc liệu giải