Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
526,39 KB
Nội dung
ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CNTT VÀ TRUYỀN THÔNG NGÂN HOÀNG MỸ LINH BÀI TOÁN ĐỐI SÁNH MẪU SỬ DỤNG GIẢI THUẬT DI TRUYỀN LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN - 2015 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CNTT VÀ TRUYỀN THÔNG NGÂN HOÀNG MỸ LINH BÀI TOÁN ĐỐI SÁNH MẪU SỬ DỤNG GIẢI THUẬT DI TRUYỀN Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60 48 01 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học: TS VŨ MẠNH XUÂN THÁI NGUYÊN - 2015 i LỜI CAM ĐOAN Tôi xin cam đoan luận văn tự thân tìm hiểu, nghiên cứu hướng dẫn TS Vũ Mạnh Xuân Các chương trình thực nghiệm thân lập trình, kết hoàn toàn trung thực Các tài liệu tham khảo trích dẫn thích đầy đủ TÁC GIẢ LUẬN VĂN Ngân Hoàng Mỹ Linh ii LỜI CẢM ƠN Tôi xin bày tỏ lời cảm ơn chân thành tới tập thể thầy cô giáo Viện công nghệ thông tin – Viện Hàn lâm Khoa học Công nghệ Việt Nam, thầy cô giáo Trường Đại học Công nghệ thông tin truyền thông - Đại học Thái Nguyên dạy dỗ suốt trình học tập chương trình cao học trường Đặc biệt xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo TS Vũ Mạnh Xuân quan tâm, định hướng đưa góp ý, gợi ý, chỉnh sửa quý báu cho trình làm luận văn tốt nghiệp Cuối cùng, xin chân thành cảm ơn bạn bè đồng nghiệp, gia đình người thân quan tâm, giúp đỡ chia sẻ với suốt trình làm luận văn tốt nghiệp Thái Nguyên, tháng 08 năm 2015 Ngân Hoàng Mỹ Linh iii MỤC LỤC MỞ ĐẦU CHƯƠNG MỘT SỐ THUẬT TOÁN ĐỐI SÁNH MẪU 1.1 Giới thiệu toán đối sánh mẫu 1.2 Phát biểu toán 1.3 Một số thuật toán đối sánh mẫu 1.3.1 Thuật toán Brute Force 1.3.2 Thuật toán Knuth-Morris-Pratt 1.3.3 Thuật toán Automat hữu hạn 1.3.4 Thuật toán Boyer-Moore 1.3.5 Thuật toán Karp-Rabin 10 1.3.6 Một số thuật toán khác 10 CHƯƠNG GIỚI THIỆU VỀ GIẢI THUẬT DI TRUYỀN 13 2.1 Tổng quan chung giải thuật di truyền (GA) 13 2.1.1 Giới thiệu 13 2.1.2 Các vấn đề GA 15 2.1.3 Sự khác biệt GA với giải thuật khác 18 2.2 Giải thuật di truyền kinh điển 20 2.2.1 Giới thiệu 20 2.2.2 Các toán tử di truyền 21 2.2.3 Các bước quan trọng việc áp dụng giải thuật di truyền kinh điển 26 2.2.4 Ví dụ 27 CHƯƠNG BÀI TOÁN ĐỐI SÁNH MẪU SỬ DỤNG GIẢI THUẬT DI TRUYỀN 29 3.1 Bài toán đối sánh mẫu file văn 29 3.1.1 Phân tích thuật toán 30 3.1.2 Các trình hoạt động chương trình 35 3.1.3 Kết đánh giá 39 3.2 Bài toán đối sánh mẫu nhiều file văn 53 3.2.1 Phát biểu toán 53 3.2.2 Kết thử nghiệm 55 iv KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 60 *) Kết luận 60 *) Hướng nghiên cứu phát triển 60 TÀI LIỆU THAM KHẢO 61 DANH MỤC THUẬT NGỮ, TỪ VIẾT TẮT, KÍ HIỆU GA Giải thuật di truyền NST Nhiễm sắc thể Population Quần thể Pattern matching Đối sánh mẫu TSP Bài toán người bán hàng v DANH MỤC CÁC HÌNH VẼ Hình 1.1 : Sơ đồ automat Hình 1.2 Mis-match so sánh vị trí j Hình 1.3 Good-suffix shift, trường hợp u lại xuất x Hình 1.4 Good-suffix shift, trường hợp có suffix u xuất x Hình 1.5 Bad-character shift Hình 1.6 Hình 2.1 Sơ đồ giải thuật GA 14 Hình 3.1 Giao diện chương trình 39 Hình 3.2 Giao diện chương trình mở rộng 55 DANH MỤC BẢNG BIỂU Bảng 2.1 Bảng quần thể khởi tạo ban đầu 27 Bảng 3.1 Ví dụ biểu diễn cá thể 35 Bảng 3.2 Kết chương trình với độ xác 100% 41 Bảng 3.3 Kết chương trình với độ xác 90% 42 Bảng 3.4 Kết chương trình với độ xác 80% 43 Bảng 3.5 Kết chương trình với tỉ lệ a – b: 0.5 – 0.5 44 Bảng 3.6 Kết chương trình với tỉ lệ a – b: 0.6 – 0.4 45 Bảng 3.7 Kết chương trình với tỉ lệ a – b: 0.8 – 0.2 46 Bảng 3.8 Kết chương trình với tỉ lệ a – b: 0.9 – 0.1 47 Bảng 3.9 Kết chương trình mở rộng với độ xác 100% 56 Bảng 3.10 Kết chương trình mở rộng với độ xác 90% 57 Bảng 3.11 Kết chương trình mở rộng với độ xác 80% 58 MỞ ĐẦU Hiện nay, với phát triển không ngừng ngành khoa học máy tính việc hệ thống thông tin lưu trữ ngày đồ sộ Đối với kho thông tin lớn vậy, việc người dùng muốn tra cứu, truy vấn liệu ngày khó khăn Bên cạnh đó, lượng thông tin phát triển nhiều, việc tổ chức, quản lí chúng để kiểm soát việc bùng nổ thông tin vấn đề cần quan tâm nhà quản lí Hiện có nhiều công cụ truy vấn hỗ trợ cho người dùng phần việc tìm kiếm: * Công cụ tìm kiếm wikipedia: Chỉ tìm tên tựa văn trùng hợp với từ khóa * Công cụ tìm kiếm phần mềm ứng dụng Microsoft word: Công cụ FIND cho phép người dùng tìm kiếm cụm từ nội bên hồ sơ, văn * Công cụ tìm kiếm hệ điều hành Microsoft Windows Adobe Reader: Cả hai công cụ cho phép tìm kiếm hồ sơ có chứa từ khóa hồ sơ, thư mục hay ổ đĩa máy tính Tuy nhiên, công cụ tồn hạn chế định.Trong đó, công việc tìm kiếm, truy vấn liệu để nhanh chóng hiệu vấn đề cấp thiết nhiều người dùng quan tâm Các thông tin lưu trữ máy tính lớn đa số lưu dạng văn bản, có nhiều công cụ tìm kiếm chế chung chúng dựa phương pháp sử dụng chuỗi Đối sánh mẫu (pattern matching) toán quan trọng việc hỗ trợ tìm kiếm văn áp dụng để tìm xâu khớp với mẫu văn tìm văn có chứa mẫu Giải thuật di truyền (GA – Genetic Algorithms) kỹ thuật tính toán mềm nhằm tìm kiếm giải pháp thích hợp cho toán tối ưu tổ hợp, vận dụng nguyên lý tiến hóa lai ghép, đột biến, chọn lọc Ngày nay, giải thuật di truyền ứng dụng rộng rãi lĩnh vực tin sinh học, khoa học máy tính, trí tuệ nhân tạo, tài số ngành khác 2 Đề tài “Bài toán đối sánh mẫu sử dụng giải thuật di truyền” nhằm mục đích nghiên cứu toán đối sánh mẫu, giải thuật di truyền ứng dụng giải thuật di truyền đối sánh mẫu tìm kiếm văn Ngoài phần mở đầu kết luận, luận văn gồm có chương: - Chương 1: Một số thuật toán đối sánh mẫu - Chương 2: Giới thiệu giải thuật di truyền - Chương 3: Bài toán đối sánh mẫu sử dụng giải thuật di truyền Phương pháp nghiên cứu Trong luận văn, học viên sử dụng phương pháp nghiên cứu sau: - Phương pháp nghiên cứu lý thuyết: Tìm tòi, tổng hợp tài liệu, hệ thống lại kiến thức, tìm hiểu khái niệm, thuật toán sử dụng luận văn - Lập trình thử nghiệm: Luận văn sử dụng ngôn ngữ lập trình Visual Studio C# 2012 để viết chương trình thử nghiệm - Các phương pháp so sánh 3 CHƯƠNG MỘT SỐ THUẬT TOÁN ĐỐI SÁNH MẪU Chương giới thiệu phát biểu toán đối sánh mẫu, tìm hiểu số thuật toán sử dụng để giải toán đối sánh mẫu 1.1 Giới thiệu toán đối sánh mẫu Trong khoa học máy tính, đối sánh mẫu hành động kiểm tra xem trình tự kí tự có diện xâu cho trước hay không Ngược lại với nhận dạng mẫu, đối sánh mẫu thường có xác Dạng phổ biến toán đối sánh mẫu là: Cho trước nguồn tìm kiếm tập D văn bản, cho câu hỏi dạng văn q (thường từ, xâu văn ngắn), tìm tất văn thuộc D mà có chứa q Trong nhiều trường hợp (chẳng hạn, tìm kiếm thông qua máy tìm kiếm) q gọi “truy vấn” toán có tên gọi “tìm kiếm theo truy vấn” Để tìm văn có chứa văn truy vấn q, hệ thống tìm kiếm cần phải kiểm tra văn truy vấn q có xâu văn thuộc tập D hay không (sánh mẫu) đưa văn đáp ứng Trong nhiều trường hợp, toán đòi hỏi tìm tất vị trí xâu văn trùng với q Đồng thời, điều kiện tìm kiếm làm “xấp xỉ” theo nghĩa văn kết không cần chứa q mà cần “liên quan” tới q, nghĩa có xâu văn xấp xỉ q Có thể thấy, máy tìm kiếm sử dụng chế tìm kiếm xấp xỉ mà văn kết tìm kiếm không chứa hoàn toàn xác văn truy vấn [6] 1.2 Phát biểu toán Đối sánh mẫu toán xử lý văn bản, toán yêu cầu tìm nhiều vị trí xuất mẫu q văn S Mẫu q văn S chuỗi có độ dài M N (M ≤ N); q S xâu ký tự bảng chữ Σ có δ ký tự Bài toán sánh mẫu tổng quát phát biểu sau: “Cho mẫu q độ dài M văn S độ dài N bảng chữ Σ Tìm (hoặc tất cả) lần xuất mẫu q S” 4 Trong toán tìm kiếm văn tập văn D, toán sánh mẫu thực cặp gồm mẫu q văn d D Trong trường hợp độ dài N d lớn số lượng văn D nhiều thời gian tìm kiếm văn phù hợp với truy vấn q tốn 1.3 Một số thuật toán đối sánh mẫu 1.3.1 Thuật toán Brute Force Thuật toán Brute Force dạng thuật toán tìm kiếm tuần tự, thử kiểm tra tất vị trí văn từ n – m + Sau lần thử, thuật toán Brute Force dịch mẫu sang phải ký tự kiểm tra hết văn Thuật toán Brute Force không cần công việc chuẩn bị mảng phụ cho trình tìm kiếm Độ phức tạp tính toán thuật toán O(n*m) Thuật toán xây dựng đơn giản, với văn lớn thuật toán tỏ không hiệu 1.3.2 Thuật toán Knuth-Morris-Pratt Thuật toán phát minh năm 1977 hai giáo sư ĐH Stanford, Hoa Kỳ (một số trường đại học xếp hàng số khoa học máy tính giới, với trường MIT, CMU Hoa Kỳ Cambrige Anh) Donal Knuth Vaughan Ronald Pratt Giáo sư Knuth (giải Turing năm 1971) tiếng với sách “Nghệ thuật lập trình” (The Art of Computer Programming), có đến tập Ba tập xuất Việt Nam, sách gối đầu giường cho lập trình viên nói riêng yêu thích lập trình máy tính nói chung toàn giới Thuật toán có tên KMP, tức lấy tên viết ba người đồng phát minh nó, chữ “M” giáo sư J.H.Morris, giáo sư tiếng ngành khoa học máy tính Ý tưởng phương pháp sau: Trong trình tìm kiếm vị trí mẫu P xâu gốc T, tìm thấy vị trí sai, ta chuyển sang vị trí tìm kiếm trình tìm kiếm tận dụng thông tin từ trình tìm kiếm trước để tránh việc phải xét lại trường hợp không cần thiết Thuật toán Knuth-Morris-Pratt thuật toán có độ phức tạp tuyến tính phát ra, dựa thuật toán Brute force với ý tưởng lợi dụng lại thông tin lần thử trước cho lần sau Trong thuật toán Brute force dịch cửa sổ ký tự nên có đến m-1 ký tự cửa sổ ký tự cửa sổ vừa xét Trong có nhiều ký tự so sánh giống với mẫu lại nằm cửa sổ dịch vị trí so sánh với mẫu Việc xử lý ký tự tính toán trước lưu lại kết Nhờ lần thử sau dịch nhiều ký tự, giảm số ký tự phải so sánh lại Xét lần thử vị trí j, cửa sổ xét bao gồm ký tự y[j…j+m-1], giả sử khác biệt xảy hai ký tự x[i] y[j+i-1] Khi x[1…i] = y[j…i+j-1] = u a = x[i] y[i+j] = b Với trường hợp này, dịch cửa sổ phải thỏa mãn v phần đầu xâu x khớp với phần đuôi xâu u văn Hơn ký tự c sau v mẫu phải khác với ký tự a Trong đoạn v thoả mãn tính chất ta quan tâm đến đoạn có độ dài lớn Thuật toán Knuth-Morris-Prath sử dụng mảng Next để lưu trữ độ dài lớn xâu v trường hợp xâu u=x[1…i-1] Mảng tính trước với chi phí thời gian O(m) Thuật toán có chi phí thời gian O(m+n) với nhiều 2n-1 lần số lần so sánh kí tự trình tìm kiếm 1.3.3 Thuật toán Automat hữu hạn Trong thuật toán này, trình tìm kiếm đưa trình biến đổi trạng thái automat Hệ thống automat thuật toán DFA xây dựng dựa xâu mẫu Mỗi trạng thái (nút) automat lúc đại diện cho số ký tự khớp mẫu với văn Các ký tự văn làm thay đổi trạng thái Và đạt trạng cuối có nghĩa tìm vị trí xuất mẫu 6 Thuật toán có phần giống thuật toán Knuth-Morris-Pratt việc nhảy trạng thái trước gặp ký tự không khớp, thuật toán DFA có đánh giá xác việc xác định vị trí nhảy dựa ký tự không khớp văn (trong thuật toán KMP lùi dựa vị trí không khớp) Ví dụ: Ta có xâu mẫu GCAGAGAG với hệ automat sau : Hình 1.1 : Sơ đồ automat Với ví dụ ta có: Nếu trạng thái gặp ký tự A văn chuyển sang trạng thái Nếu trạng thái gặp ký tự C văn chuyển sang trạng thái Trạng thái trạng thái cuối cùng, đạt trạng thái có nghĩa tìm thấy xuất mẫu văn Trạng thái trạng thái mặc định (các liên kết không biểu thị trạng thái này), ví dụ nút gặp ký tự khác G chuyển trạng thái Việc xây dựng hệ automat đơn giản cài đặt ma trận kề Khi thuật toán có thời gian xử lý O(n); thời gian nhớ để tạo hệ automat O(m*) (tùy cách cài đặt) 7 1.3.4 Thuật toán Boyer-Moore Thuật toán Boyer Moore thuật toán tìm kiếm chuỗi có hiệu thực tiễn, dạng khác thuật toán thường cài đặt chương trình soạn thảo văn Các đặc điểm nó: - Thực việc so sánh từ phải sang trái - Giai đoạn tiền xử lý (preprocessing) có độ phức tạp thời gian không gian O(m + ) - Giai đoạn tìm kiếm có độ phức tạp O(m*n) - So sánh tối đa 3n kí tự trường hợp xấu mẫu chu kỳ (non periodic pattern) - Độ phức tạp O(m/n) trường hợp tốt Trong cài đặt ta dùng mảng bmGs để lưu cách dịch 1, mảng bmBc để lưu phép dịch thứ (ký tự không khớp) Thuật toán quét kí tự mẫu (pattern) từ phải sang trái, phần tử cuối Trong trường hợp mis-match (hoặc trường hợp tìm 01 đoạn khớp với mẫu), dùng hàm tính toán trước để dịch cửa sổ sang bên phải Hai hàm dịch chuyển gọi good-suffix shift ( biết với tên phép dịch chuyển khớp) bad-character shift (hay phép dịch chuyển xuất hiện) Đối với mẫu x[0…m-1], ta dùng 01 biến số số i chạy từ cuối đầu, chuỗi y[0…n-1], ta dùng 01 biến j để chốt phía đầu Giả sử trình so sánh, ta gặp mis-match vị trí x[i] = a mẫu y[i+j] = b thử khớp vị trí j Hình 1.2 Mis-match so sánh vị trí j Khi đó, x[i+1 m-1] = y[j+i+1…j+m-1] = u x[i] ≠ y[i+j] Bây ta xét trường hợp, hàm thực việc di chuyển nào: - Phép dịch chuyển good-suffix shift dịch cửa sổ sang bên phải gặp kí tự khác với x[i] trường hợp đoạn u lại xuất x Hình 1.3 Good-suffix shift, trường hợp u lại xuất x - Nếu đoạn u không xuất lại x, mà có phần cuối (suffix) u khớp với phần đầu (prefix) x, ta dịch đoạn cho phần suffix dài v y[j+i+1…j+m-1] khớp với prefix x Hình 1.4 Good-suffix shift, trường hợp có suffix u xuất x - Phép dịch chuyển bad-character shift khớp kí tự y[i+j] với kí tự (bên trái nhất) đoạn x[0…m-2] Hình 1.5 Bad-character shift - Nếu y[i+j] không xuất x, ta thấy xuất x y mà chứa y[i+j], ta đặt cửa sổ sau y[i+j], tức y[j+i+1] Hình 1.6 Thuật toán Boyer-Moore chọn đoạn dịch chuyển dài hàm dịch chuyển good-suffix bad-character shift Hai hàm định nghĩa sau: Hàm good-suffix shift lưu bảng bmGs có kích thước m+1 Ta định nghĩa điều kiện sau: + Cs(i,s): với k mà i < k < m, s ≥ k x[k-s] = x[k] + Co(i,s): s < i x[i-s] ≠ x[i] Khi đó, với ≤ i < m: bmGs[i+1] = min{s>0: Cs(i,s) and Co(i,s) hold} Và định nghĩa bmGs[0] độ dài chu kỳ x Việc tính toán bảng bmGs sử dụng bảng suff định nghĩa sau: Với ≤ i < m, suff[i] = max{k: x[i-k+1…i] = x[m-k…m-1]} Hàm bad-character shift lưu bảng bmBc có kích thước Cho c ∑: bmBc[c] = min{i: ≤ i [...]...4 Trong bài toán tìm kiếm văn bản trên tập văn bản D, bài toán sánh mẫu được thực hiện đối với mọi cặp gồm mẫu q và mọi văn bản d D Trong trường hợp độ dài N của d rất lớn và số lượng văn bản trong D rất nhiều thì thời gian tìm kiếm văn bản phù hợp với truy vấn q sẽ là rất tốn kém 1.3 Một số thuật toán đối sánh mẫu cơ bản 1.3.1 Thuật toán Brute Force Thuật toán Brute Force là dạng thuật toán tìm... 1.3.6 Một số thuật toán khác Một số thuật toán nêu trên chưa phải là tất cả các thuật toán đối sánh mẫu hiện có Nhưng chúng đã đại di n cho đa số các tư tưởng dùng để giải bài toán đối sánh Các thuật toán so sánh mẫu lần lượt từ trái sang phải thường là các dạng của thuật toán Knuth-Morris-Pratt và thuật toán sử dụng Automat như: Forward Dawg Matching, Apostolico-Crochemore, Not So Naive, … ... Sau mỗi lần thử, thuật toán Brute Force dịch mẫu sang phải một ký tự cho đến khi kiểm tra hết văn bản Thuật toán Brute Force không cần công việc chuẩn bị cũng như các mảng phụ cho quá trình tìm kiếm Độ phức tạp tính toán của thuật toán này là O(n*m) Thuật toán được xây dựng đơn giản, nhưng với văn bản lớn thì thuật toán này tỏ ra không hiệu quả 1.3.2 Thuật toán Knuth-Morris-Pratt Thuật toán được phát... tính toán chính là một phép mod có tốc độ rất nhanh Thuật toán Karp-Rabin sử dụng hàm băm tính toán nhanh, không phụ thuộc vào chiều dài chuỗi cần tìm kiếm; tiết kiệm bộ nhớ vì không lưu trữ nhiều kết quả tìm kiếm trước đó; không sử dụng các phương pháp nhận biết, loại trừ các kết quả xấu cho các bước tiếp theo 1.3.6 Một số thuật toán khác Một số thuật toán nêu trên chưa phải là tất cả các thuật toán đối. .. nhưng lại chỉ có 3n phép so sánh khi tìm kiếm 1 chuỗi không có chu kì Đối với việc tìm kiếm trong một khối lượng lớn các chữ cái, thuật toán có thể thực hiện với một tốc độ rất nhanh Khi tìm kiếm chuỗi am-1 trong bn chuỗi, thuật toán chỉ sử dụng O(m/n) phép so sánh, là chi phí thấp nhất của các thuật toán tìm kiếm hiện đại có thể đạt được [2] 10 1.3.5 Thuật toán Karp-Rabin Thuật toán mang tên hai nhà khoa... đến đoạn có độ dài lớn nhất Thuật toán Knuth-Morris-Prath sử dụng mảng Next để lưu trữ độ dài lớn nhất của xâu v trong trường hợp xâu u=x[1…i-1] Mảng này có thể tính trước với chi phí về thời gian là O(m) Thuật toán này có chi phí về thời gian là O(m+n) với nhiều nhất là 2n-1 lần số lần so sánh kí tự trong quá trình tìm kiếm 1.3.3 Thuật toán Automat hữu hạn Trong thuật toán này, quá trình tìm kiếm... đổi trạng thái automat Hệ thống automat trong thuật toán DFA sẽ được xây dựng dựa trên xâu mẫu Mỗi trạng thái (nút) của automat lúc sẽ đại di n cho số ký tự đang khớp của mẫu với văn bản Các ký tự của văn bản sẽ làm thay đổi các trạng thái Và khi đạt được trạng cuối cùng có nghĩa là đã tìm được một vị trí xuất hiện ở mẫu 6 Thuật toán này có phần giống thuật toán Knuth-Morris-Pratt trong việc nhảy về... vị trí của mẫu P trong xâu gốc T, nếu tìm thấy một vị trí sai, ta chuyển sang vị trí tìm 5 kiếm tiếp theo và quá trình tìm kiếm này sẽ được tận dụng thông tin từ quá trình tìm kiếm trước để tránh việc phải xét lại các trường hợp không cần thiết Thuật toán Knuth-Morris-Pratt là thuật toán có độ phức tạp tuyến tính đầu tiên được phát hiện ra, nó dựa trên thuật toán Brute force với ý tưởng lợi dụng lại... Boyer-Moore Thuật toán Boyer Moore là thuật toán tìm kiếm chuỗi rất có hiệu quả trong thực tiễn, các dạng khác nhau của thuật toán này thường được cài đặt trong các chương trình soạn thảo văn bản Các đặc điểm chính của nó: - Thực hiện việc so sánh từ phải sang trái - Giai đoạn tiền xử lý (preprocessing) có độ phức tạp thời gian và không gian là O(m + ) - Giai đoạn tìm kiếm có độ phức tạp O(m*n) - So sánh. .. phương pháp này là sử dụng phương pháp băm (hashing) Tức là mỗi một xâu sẽ được gán với một giá trị của hàm băm (hash function) Ví dụ, có xâu “hello” được gán với giá trị bằng 5, và hai xâu được gọi là bằng nhau nếu giá trị hàm băm của nó bằng nhau.Như vậy, thay vì việc phải đối sánh các xâu con của T với mẫu P, ta chỉ cần so sánh giá trị hàm băm của chúng và đưa ra kết luận Trong thuật toán này, hàm băm