SO KHỚP MẪU NHANH TRONG CHUỖI*
DONALD E. KNUTH†, JAMES H. MORRIS, JR.‡ VÀ VAUGHAN R. PRATT¶
Tóm tắt. Một thuật toán được trình bày để tìm tất cả các lần xuất hiện của một chuỗi đã cho bên trong một chuỗi khác, với thời gian chạy tỷ lệ với tổng độ dài của các chuỗi. Hằng số tỷ lệ đủ nhỏ để làm cho thuật toán này có tính ứng dụng thực tế, và thủ tục này cũng có thể được mở rộng để xử lý một số bài toán so khớp mẫu tổng quát hơn. Một ứng dụng lý thuyết của thuật toán cho thấy rằng tập các phép nối của các palindrome chẵn, tức là ngôn ngữ , có thể được nhận biết trong thời gian tuyến tính. Các thuật toán khác có thời gian chạy trung bình còn nhanh hơn cũng được xem xét.
Từ khóa. mẫu, chuỗi, soạn thảo văn bản, so khớp mẫu, bộ nhớ trie, tìm kiếm, chu kỳ của một chuỗi, palindrome, thuật toán tối ưu, chuỗi Fibonacci, biểu thức chính quy
Các chương trình soạn thảo văn bản thường cần tìm kiếm trong một chuỗi ký tự để tìm các thể hiện của một chuỗi “mẫu” đã cho; chúng ta muốn tìm tất cả các vị trí, hoặc có thể chỉ vị trí ngoài cùng bên trái, tại đó mẫu xuất hiện như một chuỗi con liên tục của văn bản. Ví dụ, chứa mẫu , nhưng chúng ta không xem là một chuỗi con.
Cách hiển nhiên để tìm kiếm một mẫu khớp là thử tìm kiếm tại mọi vị trí bắt đầu của văn bản, từ bỏ việc tìm kiếm ngay khi một ký tự không đúng được tìm thấy.