Giáo trình Cấu trúc dữ liệu và thuật - Chương 3, Phần 3: Thuật toán Rabin Karp - Nguyễn Tri Tuấn

Tài liệu Giáo trình Cấu trúc dữ liệu và thuật - Chương 3, Phần 3: Thuật toán Rabin Karp - Nguyễn Tri Tuấn: Thuật toán Rabin Karp (1)  Tương tự như Brute Force  Tại mỗi vị trí i trên T, thay vì so sánh chi tiết từng ký tự P[j] với T[i+j] (chi phí O(M))  Sẽ so sánh hash(P, M) với hash(T, i, M) (chi phí O(1))  Tính hash(P, M)  hash(P, M) = P[0]*dM-1 + P[1]*dM-2 + ... + P[M-1]  Chi phí: O(M)  Tính hash(T, i, M)  T[i] đến T[i+(M-1)]  x = hash(T, i, M) = T[i]*dM-1 + T[i+1]*dM-2 + ... + T[i+(M-1)]  Chi phí: O(M) 13/38 CuuDuongThanCong.com https://fb.com/tailieudientucntt Thuật toán Rabin Karp (2)  Làm sao tính hash(T, i+1, M) ?  Dịch chuyển sang phải một phần tử  y = hash(T, i+1, M) = (x - T[i]*dM-1)*d + T[i+M]  Chi phí: O(1) 14/38 CuuDuongThanCong.com https://fb.com/tailieudientucntt ...

pdf2 trang | Chia sẻ: quangot475 | Lượt xem: 539 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Giáo trình Cấu trúc dữ liệu và thuật - Chương 3, Phần 3: Thuật toán Rabin Karp - Nguyễn Tri Tuấn, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Thuật toán Rabin Karp (1)  Tương tự như Brute Force  Tại mỗi vị trí i trên T, thay vì so sánh chi tiết từng ký tự P[j] với T[i+j] (chi phí O(M))  Sẽ so sánh hash(P, M) với hash(T, i, M) (chi phí O(1))  Tính hash(P, M)  hash(P, M) = P[0]*dM-1 + P[1]*dM-2 + ... + P[M-1]  Chi phí: O(M)  Tính hash(T, i, M)  T[i] đến T[i+(M-1)]  x = hash(T, i, M) = T[i]*dM-1 + T[i+1]*dM-2 + ... + T[i+(M-1)]  Chi phí: O(M) 13/38 CuuDuongThanCong.com https://fb.com/tailieudientucntt Thuật toán Rabin Karp (2)  Làm sao tính hash(T, i+1, M) ?  Dịch chuyển sang phải một phần tử  y = hash(T, i+1, M) = (x - T[i]*dM-1)*d + T[i+M]  Chi phí: O(1) 14/38 CuuDuongThanCong.com https://fb.com/tailieudientucntt

Các file đính kèm theo tài liệu này:

  • pdfcau_truc_du_lieu_va_giai_thuat_nguyen_tri_tuan_7_chuong_3_thuat_toan_rabin_karp_cuuduongthancong_com.pdf
Tài liệu liên quan