Thuật toán tìm kiếm chuỗi, thuật toán Boyer Moore
BÁO CÁO MƠN HỌC THUẬT TỐN NÂNG CAO Giáo viên hướng dẫn: Nguyễn Xuân Hải Lớp: M20CQIS01-N Báo cáo: Nhóm THUẬT TOÁN BOYER - MOORE Khái niệm Ý tưởng thuật toán Giải thuật Đánh giá độ phức tạp Khái niệm • Thuật tốn Boyer-Moore ứng dụng việc tìm kiếm chuỗi chuỗi khác • Nó phát triển Robert Boyer J Strother Moore vào năm 1977 Thuật tốn xử lý trước cho mẫu cần tìm kiếm • Thuật tốn tìm kiếm chuỗi hiệu khơng qua tồn khơng gian tìm kiếm mà thực tìm kiếm mẫu phù hợp Khái niệm • Nó bỏ qua ký tự để giảm số lượng ký tự so sánh mà lần tìm kiếm thực • Có hai giai đoạn cho q trình tìm kiếm chuỗi: • Giai đoạn tạo bảng số cho mẫu tìm kiếm Bảng tìm kiếm sử dụng để bỏ qua chuỗi tìm kiếm nhằm giảm số lượng thao tác đối sánh Ý tưởng thuật tốn • Thuật tốn tìm kiếm chuỗi Boyer-Moore thực sau: Thực so sánh mẫu tìm kiếm P với chuỗi ký tự T – Nếu P có chứa ký tự c thực dịch chuyển mẫu P sang phải cho ký tự c cuối P nằm thẳng hàng với T[i] – Nếu ký tự không trùng khớp xảy T[i] Thực dịch chuyển P cho P[0] thẳng hàng với T[i+1] Giải thuật Boyer - Moore Giải thuật Boyer - Moore Ví dụ • Thực tìm kiếm chuỗi P=“APPLE” T=“RIPPLEAPPLE • L = {R:-1; I:-1; P:2; L:3; E:4; A:0} • Bước 1: • last[L] = 3, dịch chuyển P: ký tự Ví dụ • Bước 2: E =>Match • Bước 3: L=>Match Ví dụ • Bước 2: E =>Match • Bước 3: L=>Match 10 Ví dụ • Bước - 5: P- P =>Match • Bước 6: last[I] = -1 , dịch chuyển ký tự 11 Ví dụ • Bước 7: • Last[A] = 0, dịch chuyển P: ký tự • Bước 8: E => Match 12 Ví dụ • Bước -10 - 11 -12: Lần lượt: L – P – P – A : Match Việc so sánh thực tồn mẫu tìm kiếm P kết trả trùng khớp với chuỗi ký tự T 13 Độ phức tạp thuật tốn Boyer – Moore • n độ dài T • m độ dài P • Độ phức tập thuật toán Boyer – Moore là: • O(m.n) trường hợp xấu • O(n/m): trường hợp tốt 14 Xin chân thành cảm ơn Thầy bạn lắng nghe ! 15 ... TOÁN BOYER - MOORE Khái niệm Ý tưởng thuật toán Giải thuật Đánh giá độ phức tạp Khái niệm • Thuật tốn Boyer- Moore ứng dụng việc tìm kiếm chuỗi chuỗi khác • Nó phát triển Robert Boyer J Strother Moore. .. trùng khớp xảy T[i] Thực dịch chuyển P cho P[0] thẳng hàng với T[i+1] Giải thuật Boyer - Moore Giải thuật Boyer - Moore Ví dụ • Thực tìm kiếm chuỗi P=“APPLE” T=“RIPPLEAPPLE • L = {R:-1; I:-1; P:2;... kết trả trùng khớp với chuỗi ký tự T 13 Độ phức tạp thuật tốn Boyer – Moore • n độ dài T • m độ dài P • Độ phức tập thuật tốn Boyer – Moore là: • O(m.n) trường hợp xấu • O(n/m): trường hợp tốt 14