Trình bày về giải thuật Boyer Moore trong Cấu trúc dữ liệu giải thuật, Phân tích đánh giá thuật toán và một số lĩnh vực tương tự. Xử lý bài toán tìm chuỗi con chung lớn nhất. Trình bày về giải thuật Boyer Moore trong Cấu trúc dữ liệu giải thuật, Phân tích đánh giá thuật toán và một số lĩnh vực tương tự. Xử lý bài toán tìm chuỗi con chung lớn nhất.
String matching Boyer Moore Algorithm Exact matching: slightly less naive algorithm P: word T: There would have been a time for such a word word w, o trùng lặp, sau khơng trùng (r ≠ u) Khi u khơng tìm P ta bỏ qua lần dịch chuyển T: There would have been a time for such a word word word skip! word word skip! Boyer-Moore Sử dụng kiến thức có từ so sánh ký tự để bỏ qua việc xếp sau mà chắn không phù hợp dựa luật: “Bad character rule”: Nếu không trùng lặp, sử dụng kiến thức ký tự văn không phù hợp để bỏ qua xếp “Good suffix rule”: Nếu số ký tự trùng lặp, sử dụng kiến thức ký tự khớp để bỏ qua xếp For longer skips: Thử chỉnh theo hướng, sau thử so sánh ký tự theo hướng đối diện Boyer-Moore: Bad character rule Khi không phù hợp, đặt b ký tự không khớp T Bỏ qua xếp (a) b khớp ngược với P, (b) P di chuyển qua b Boyer-Moore: Bad character rule Boyer-Moore: Bad character rule preprocessing • Khi biết P, ta xây dựng |Σ|x n bảng Đặt b ký tự T không khớp i sai lệch việc không khớp P Số lần bỏ qua cho phần tử hàng thứ b cột thứ i Boyer-Moore: Good suffix rule Cho t chuỗi T kết hợp với hậu tố P Trường hợp (a): bỏ qua dịch chuyển t khớp với ký tự đối diện P, trường hợp (b) tiền tố P khớp với hậu tố t, trường hợp (c) P di chuyển qua t, tùy điều xảy trước tiên Case (c) Boyer-Moore: Good suffix rule • Giống Bad suffix rule, số lần bỏ qua sử dụng Good suffix rule tính tốn trước vào vài bảng • Quy tắc trang trước yếu tố hậu tố tốt; có nguyên tắc hậu tố mạnh mẽ tốt • Với Good suffix rule (và sửa đổi nhỏ khác), Boyer-Moore cho độ phức tạp O (m) trường hợp xấu Boyer-Moore: Kết hợp lại • Sau lần dịch chuyển, sử dụng Bad character rule hay good suffix rule tuỳ trường hợp bỏ qua nhiều ký tự Bad character rule: Khi không khớp, đặt b ký tự không Good suffix rule: Cho t chuỗi T kết hợp với hậu tố P Bỏ qua khớp T Bỏ qua xếp b khớp ngược liên kết (a) t phù hợp với ký tự đối diện P, (b) tiền tố với P (a), P dịch chuyển qua b (b) P khớp với hậu tố t, (c) P di chuyển qua t, tùy điều kiện xảy trước Boyer-Moore: Kết hợp lại • Ở đây, T có 29 ký tự, ta dịch chuyển qua 15 ký tự, 11 ký tự không cần duyệt 10 Boyer-Moore: Trường hợp xấu tốt • • Xấu nhất: O(m) • Khi đó, thời gian floor(m/n) Tốt nhất: Khi so sánh không khớp trường hợp trường hợp Bad character Rule bỏ qua toàn P (giống step slide trước) 11 So sánh Boyer-Moore 12