Thuật toán BruteForce Thuật toán Boyer Moore Đối sánh chuỗi Ứng dụng của đối sánh chuỗi: Thuật toán tìm kiếm chuỗi BoyerMoore được dựa trên 2 cách tiếp cận heuristics: Thực hiện việc so sánh từ phải sang trái. Giai đoan tiền xử lí có độ phức tạp : O(m) Giai đoạn tìm kiếm có độ phức tạp: O(m.n) Độ phức tạp O(n ⁄m) trong trừờng hợp tốt nhất.
THUẬT TỐN NÂNG CAO Giới thiệu Thuật tốn Brute-Force Thuật toán Boyer Moore Demo Đối sánh chuỗi Từ khóa: String matching, String searching, Pattern searching, Text Searching Một thuật tốn quan trọng có ứng dụng rộng rãi Ứng dụng đối sánh chuỗi: Máy tìm kiếm Trình soạn thảo văn Trình duyệt web Sinh học phân tử (Tìm mẫu dãy DNA) Mục tiêu: Kiểm tra tồn chuỗi ký tự (mẫu, pattern) chuỗi ký tự có kích thước lớn nhiều (văn bản, text) Nếu tồn tại, trả (hoặc nhiều) vị trí xuất Quy ước: Mẫu cần tìm: P (chiều dài m) Văn bản: T (chiều dài n) P T có tập hữu hạn ký tự m≤n Thuật Toán Brute Force Kiểm tra tất vị trí chuỗi từ vị trí đến vị trí n-m Sau lần thử, mẫu dịch sang phải ký tự kiểm tra hết chuỗi Ví dụ Tìm kiếm P = aab T = acaabc Void BF (char *x, int m, char *y, int n) { int i , j ; /* Searching */ for ( j=0 ; j = m) OUTPUT (j); } Không cần thao tác tiền xử lý P Thao tác so sánh thực theo chiều Dữ liệu đầu vào lớn thời gian xử lý lâu Trường hợp xấu tìm đến hết chuỗi T mà khơng thấy Khi với n-m+1 vị trí tìm kiếm, ta phải so sánh m ký tự chuỗi P với ký tự tương ứng chuỗi T Số lần so sánh: m.(n-m+1) Thông thường m nhỏ so với n nên ta coi độ phức tạp thuật tốn O(m.n) Thuật Tốn Boyer Moore Thuật tốn tìm kiếm chuỗi Boyer-Moore dựa cách tiếp cận heuristics: Cách 1: Thực so sánh mẫu tìm kiếm P với chuỗi ký tự T Cách 2: Nếu sai lệch không trùng khớp xảy T[i] = c: Nếu mẫu tìm kiếm 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 P không chứa ký tự c, thực dịch chuyển P cho P[0] thẳng hàng với T[i+1] Ví dụ: Chúng ta thực tìm kiếm mẫu APPLE từ chuỗi ký tự APPSTOREAPPLE Lette rs A P P L E * Values 1 Value = max(1, lengthOfPattern – indexOfCharacter -1) Value(*) = lengthOfPattern Ví dụ: Chúng ta thực tìm kiếm mẫu APPLE từ chuỗi ký tự APPSTOREAPPLE Trong lần so sánh đầu tiên, ký tự T khơng có xuất mẫu tìm kiếm P = “APPLE”, đó, số ký tự ta cần dịch chuyển ký tự Hay nói cách khác với cách tiếp cận giải thuật BoyerMoore, thực dịch chuyển mẫu tìm kiếm P sang phải cho ký tự A (Phần tử mẫu P[0]) mẫu tìm kiếm nằm thẳng hàng với ký tự O (Phần tử T[i+1] chuỗi ký tự) Tiếp theo, lần so sánh thứ 2, ký tự P chuỗi ký tự có xuất mẫu tìm kiếm P, vị trí Do đó, thực dịch chuyển mẫu cần tìm kiếm sang phải ký tự để cho ký tự P chuỗi ký tự thẳng hàng với ký tự P (xuất lần cuối cùng) mẫu tìm kiếm Tiếp theo, lần so sánh thứ 3, ký tự L có xuất mẫu tìm kiếm, đó, giống cách làm bên trên, thực dịch chuyển mẫu tìm kiếm sang bên phải vị trí Và tiếp theo, thực so sánh ký tự mẫu tìm kiếm P với chuỗi ký tự T Như vậy, 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 Như vậy, hồn thành xong việc tìm kiếm chuỗi ký tự giải thuật Boyer-Moore Thực việc so sánh từ phải sang trái Giai đoan tiền xử lí có độ phức tạp : O(m) Giai đoạn tìm kiếm có độ phức tạp: O(m.n) Độ phức tạp O(n ⁄m) trừờng hợp tốt THANK YOU FOR LISTENING ...Giới thiệu Thuật toán Brute-Force Thuật toán Boyer Moore Demo Đối sánh chuỗi Từ khóa: String matching, String searching, Pattern searching, Text Searching Một thuật tốn quan trọng... lần so sánh: m.(n-m+1) Thông thường m nhỏ so với n nên ta coi độ phức tạp thuật toán O(m.n) Thuật Toán Boyer Moore Thuật tốn tìm kiếm chuỗi Boyer-Moore dựa cách tiếp cận heuristics: Cách 1:... ước: Mẫu cần tìm: P (chiều dài m) Văn bản: T (chiều dài n) P T có tập hữu hạn ký tự m≤n Thuật Toán Brute Force Kiểm tra tất vị trí chuỗi từ vị trí đến vị trí n-m Sau lần thử, mẫu dịch