3.2.1. Phát biểu bài toán
Với mục đích nâng cao hiệu quả của chƣơng trình, ta có thể mở rộng phạm vi tìm kiếm trên một tập các văn bản: D = {d1,…, dM}, trong đó di là các file văn bản có định dạng là *.txt. Muốn biết đƣợc văn bản thuộc D có chứa mẫu q nào đó hay không, hệ thống tìm kiếm cần kiểm tra mẫu q có là một xâu con của các văn bản thuộc tập D hay không (sánh mẫu) và đƣa ra các văn bản đáp ứng. Trong nhiều trƣờng hợp, bài toán còn đòi hỏi tìm tất cả các vị trí của các xâu con trong văn bản trùng với q. Với các thuật toán tìm kiếm tuyến tính, trong trƣờng hợp số phần tử trong D và độ dài các văn bản rất lớn dẫn đến khó tìm ra kết quả trong thời gian ngắn. Giải thuật di truyền với thời gian tiến hóa của các quần thể ngắn có thể giúp ta giải quyết tốt vấn đề này. Ta có thể phát biểu bài toán đối sánh mẫu trên nhiều file văn bản nhƣ sau:
“Cho một tập D các văn bản và mẫu đối sánh q. Tìm các văn bản di (i=1..M) có chứa mẫu đối sánh q và chỉ ra vị trí xuất hiện mẫu tại văn bản tìm được”
Với mục đích thử nghiệm, trong chƣơng trình sử dụng tập văn bản gồm 10 file văn bản, mỗi văn bản có độ dài khoảng hơn 4000 kí tự, input và output bài toán nhƣ sau:
Input: Tập D = {d1,…..,d10}, mẫu đối sánh q. Các file thuộc tập D đều có định dạng: *.txt
Output: Các file di có chứa mẫu q và vị trí xuất hiện mẫu trong từng file di. *) Phân tích bài toán
Trong bài toán này, về cơ bản xây dựng các quá trình thực hiện GA giống với trong bài toán ở mục 3.1 của luận văn. Tuy nhiên, trong bài toán này có thay đổi về số lƣợng cá thể trong quần thể ban đầu, cách sử dụng vòng lặp và số vòng lặp trong mỗi lần thực hiện giải thuật.
Với 10 file dữ liệu vào, chƣơng trình tìm kiếm mẫu q trong lần lƣợt từng file. Tại mỗi file di chƣơng trình thực hiện GA 25 lần tức là khởi tạo và tiến hóa 25 lần, tuy nhiên chƣơng trình sẽ không thực hiện hết 25 lần lặp nếu trong một lần lặp nào đó tìm đƣợc vị trí xuất hiện mẫu q và thực hiện đối với file tiếp theo.
Kết quả của từng file đƣợc kết luận tại vùng hiển thị kết quả trên giao diện chƣơng trình, cùng với đó là 1 file KETQUA.txt ghi lại toàn bộ các quần thể khởi tạo, tiến hóa và các kết luận đối với từng file. File KETQUA.txt đƣợc lƣu tự động trong thƣ mục \bin\Debug trong thƣ mục nơi cài đặt chƣơng trình.
Về số cá thể khởi tạo ban đầu: Chƣơng trình khởi tạo quần thể ban đầu là 100 cá thể, qua nhiều lần chạy thử nghiệm ta thấy điều này giúp cho việc tìm kiếm sẽ hiệu quả hơn, càng có ý nghĩa hơn đối với những file văn bản có số lần xuất hiện mẫu ít.