1. Trang chủ
  2. » Thể loại khác

Bài toán đối sánh mẫu sử dụng giải thuật di truyền

71 310 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 71
Dung lượng 1,01 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đối sánh mẫu pattern matching là một bài toán quan trọng trong việc hỗ trợ tìm kiếm văn bản được áp dụng để tìm một xâu khớp với mẫu trong văn bản hoặc tìm các văn bản có chứa mẫu.. Giải

Trang 1

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

ĐẠ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

Trang 2

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

ĐẠ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

Trang 3

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

LỜI CAM ĐOAN

Tôi xin cam đoan luận văn này của tự bản thân tôi tìm hiểu, nghiên cứu dưới

sự hướng dẫn của TS Vũ Mạnh Xuân Các chương trình thực nghiệm do chính bản thân tôi lập trình, các kết quả là hoàn toàn trung thực Các tài liệu tham khảo được trích dẫn và chú thích đầy đủ

Trang 4

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

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ể các thầy cô giáo Viện công nghệ thông tin – Viện Hàn lâm Khoa học và Công nghệ Việt Nam, các thầy cô giáo Trường Đại học Công nghệ thông tin và truyền thông - Đại học Thái Nguyên đã dạy

dỗ chúng tôi trong suốt quá trình học tập chương trình cao học tại trường

Đặc biệt tôi 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 và đưa ra những góp ý, gợi ý, chỉnh sửa quý báu cho tôi trong quá trình làm luận văn tốt nghiệp

Cuối cùng, tôi xin chân thành cảm ơn các bạn bè đồng nghiệp, gia đình và người thân đã quan tâm, giúp đỡ và chia sẻ với tôi trong suốt quá 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

Trang 5

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

MỤC LỤC

MỞ ĐẦU 1

CHƯƠNG 1 MỘT SỐ THUẬT TOÁN ĐỐI SÁNH MẪU 3

1.1 Giới thiệu về bài toán đối sánh mẫu 3

1.2 Phát biểu bài toán 3

1.3 Một số thuật toán đối sánh mẫu cơ bản 4

1.3.1 Thuật toán Brute Force 4

1.3.2 Thuật toán Knuth-Morris-Pratt 4

1.3.3 Thuật toán Automat hữu hạn 5

1.3.4 Thuật toán Boyer-Moore 7

1.3.5 Thuật toán Karp-Rabin 10

1.3.6 Một số thuật toán khác 11

CHƯƠNG 2 GIỚI THIỆU VỀ GIẢI THUẬT DI TRUYỀN 13

2.1 Tổng quan chung về giải thuật di truyền (GA) 13

2.1.1 Giới thiệu 13

2.1.2 Các vấn đề cơ bản của GA 15

2.1.3 Sự khác biệt của GA với các 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 trong việc áp dụng giải thuật di truyền kinh điển 26

2.2.4 Ví dụ 27

CHƯƠNG 3 BÀI TOÁN ĐỐI SÁNH MẪU SỬ DỤNG GIẢI THUẬT DI TRUYỀN 30

3.1 Bài toán đối sánh mẫu trên một file văn bản 30

3.1.1 Phân tích thuật toán 31

3.1.2 Các quá trình hoạt động của chương trình 36

3.1.3 Kết quả và đánh giá 40

3.2 Bài toán đối sánh mẫu trên nhiều file văn bản 55

Trang 6

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

3.2.1 Phát biểu bài toán 55

3.2.2 Kết quả thử nghiệm 56

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 63

*) Kết luận 63

*) Hướng nghiên cứu phát triển 63

TÀI LIỆU THAM KHẢO 64

DANH MỤC THUẬT NGỮ, TỪ VIẾT TẮT, KÍ HIỆU

Trang 7

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

DANH MỤC CÁC HÌNH VẼ

Hình 1.1 : Sơ đồ automat 6

Hình 1.2 Mis-match trong khi đang so sánh tại vị trí j 8

Hình 1.3 Good-suffix shift, trường hợp u lại xuất hiện trong x 8

Hình 1.4 Good-suffix shift, trường hợp chỉ có suffix của u xuất hiện trong x 8

Hình 1.5 Bad-character shift 9

Hình 1.6 9

Hình 2.1 Sơ đồ giải thuật GA 14

Hình 3.1 Giao diện chương trình 40

Hình 3.2 Giao diện chương trình mở rộng 57

DANH MỤC BẢNG BIỂU Bảng 2.1 Bảng quần thể khởi tạo ban đầu 28

Bảng 3.1 Ví dụ về biểu diễn cá thể 36

Bảng 3.2 Kết quả chương trình với độ chính xác 100% 42

Bảng 3.3 Kết quả chương trình với độ chính xác 90% 43

Bảng 3.4 Kết quả chương trình với độ chính xác 80% 44

Bảng 3.5 Kết quả chương trình với tỉ lệ a – b: 0.5 – 0.5 46

Bảng 3.6 Kết quả chương trình với tỉ lệ a – b: 0.6 – 0.4 46

Bảng 3.7 Kết quả chương trình với tỉ lệ a – b: 0.8 – 0.2 47

Bảng 3.8 Kết quả chương trình với tỉ lệ a – b: 0.9 – 0.1 48

Bảng 3.9 Kết quả chương trình mở rộng với độ chính xác 100% 58

Bảng 3.10 Kết quả chương trình mở rộng với độ chính xác 90% 59

Bảng 3.11 Kết quả chương trình mở rộng với độ chính xác 80% 60

Trang 8

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

MỞ ĐẦU

Hiện nay, cùng với sự phát triển không ngừng của ngành khoa học máy tính chính là việc hệ thống thông tin được lưu trữ ngày càng đồ sộ Đối với một kho thông tin lớn như vậy, việc người dùng muốn tra cứu, truy vấn dữ liệu cũng ngày càng khó khăn hơn Bên cạnh đó, khi lượng thông tin phát triển quá nhiều, việc tổ chức, quản lí chúng để làm sao kiểm soát được việc bùng nổ thông tin cũng là một trong những vấn đề cần quan tâm của các nhà quản lí Hiện nay đã có rất nhiều công

cụ truy vấn có thể hỗ trợ cho người dùng phần nào trong việc tìm kiếm:

* Công cụ tìm kiếm của wikipedia: Chỉ tìm ra tên tựa bài của văn bản nào trùng hợp với từ khóa

* Công cụ tìm kiếm của 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 trong một hồ sơ, văn bản

* Công cụ tìm kiếm của hệ điều hành Microsoft Windows và Adobe Reader:

Cả hai công cụ này cho phép tìm kiếm các hồ sơ có chứa từ khóa trong một hồ sơ, một thư mục hay trong các ổ đĩa của máy tính

Tuy nhiên, các công cụ trên vẫn tồn tại những hạn chế nhất định.Trong khi

đó, công việc tìm kiếm, truy vấn dữ liệu làm sao để nhanh chóng và hiệu quả vẫn đang là một vấn đề cấp thiết đang được rất nhiều người dùng quan tâm Các thông tin được lưu trữ trên máy tính tuy lớn nhưng đa số đều được lưu dưới dạng văn bản,

và mặc dù có rất nhiều công cụ tìm kiếm nhưng cơ chế chung của chúng vẫn là dựa trên phương pháp sử dụng chuỗi Đối sánh mẫu (pattern matching) là một bài toán quan trọng trong việc hỗ trợ tìm kiếm văn bản được áp dụng để tìm một xâu khớp với mẫu trong văn bản hoặc tìm các văn bản có chứa mẫu

Giải thuật di truyền (GA – Genetic Algorithms) là một kỹ thuật cơ bản của tính toán mềm nhằm tìm kiếm giải pháp thích hợp cho các bài toán tối ưu tổ hợp, nó vận dụng các nguyên lý của tiến hóa như lai ghép, đột biến, chọn lọc Ngày nay,

Trang 9

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

giải thuật di truyền được ứng dụng rộng rãi trên mọi lĩnh vực như tin sinh học, khoa học máy tính, trí tuệ nhân tạo, tài chính và một số ngành khác

Đề 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 bài toán đối sánh mẫu, giải thuật di truyền và ứng dụng của giải thuật di truyền trong đối sánh mẫu và tìm kiếm văn bản

Ngoài phần mở đầu và kết luận, luận văn gồm có 3 chương:

- Chương 1: Một số thuật toán đối sánh mẫu

- Chương 2: Giới thiệu về 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 các phương pháp nghiên cứu chính 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 các kiến thức, tìm hiểu các khái niệm, thuật toán sử dụng trong 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 là Visual Studio C# 2012 để viết chương trình thử nghiệm

- Các phương pháp so sánh

Trang 10

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

CHƯƠNG 1 MỘT SỐ THUẬT TOÁN ĐỐI SÁNH MẪU

Chương này giới thiệu và phát biểu bài toán đối sánh mẫu, tìm hiểu một số thuật toán đã và đang được sử dụng để giải bài toán đối sánh mẫu

1.1 Giới thiệu về bài toán đối sánh mẫu

Trong khoa học máy tính, đối sánh mẫu là hành động kiểm tra xem một trình

tự các kí tự có hiện diện trong một 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ó sự chính xác hơn Dạng phổ biến nhất của bài toán đối sánh mẫu là: Cho trước nguồn tìm kiếm là một tập D các văn bản, cho một câu hỏi dạng văn bản q (thường là một từ, một xâu văn bản ngắn), hãy tìm tất cả các văn bả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 còn được gọi là “truy vấn” và bài toán còn có tên gọi là “tìm kiếm theo truy vấn” Để tìm được các văn bản có chứa văn bản truy vấn q, hệ thống tìm kiếm cần phải kiểm tra văn bản truy vấn 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 Đồng thời, điều kiện tìm kiếm có thể được làm “xấp xỉ” theo nghĩa văn bản kết quả có thể không cần chứa q mà chỉ cần “liên quan” tới q, nghĩa là có xâu con trong văn bản xấp xỉ q Có thể thấy, các máy tìm kiếm sử dụng cả cơ chế tìm kiếm xấp xỉ khi mà văn bản kết quả tìm kiếm không chứa hoàn toàn chính xác văn bản truy vấn [6]

1.2 Phát biểu bài toán

Đối sánh mẫu là một bài toán cơ bản trong xử lý văn bản, bài toán yêu cầu tìm ra một hoặc nhiều vị trí xuất hiện của mẫu q trên một văn bản S Mẫu q và văn bản S là các chuỗi có độ dài M và N (M ≤ N); q và S là các xâu ký tự trên cùng một bảng chữ cái Σ có δ ký tự Bài toán sánh mẫu tổng quát được phát biểu như sau:

Trang 11

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

“Cho mẫu q độ dài M và văn bản S độ dài N trên cùng bảng chữ Σ Tìm một (hoặc tất cả) các lần xuất hiện của mẫu q trong S”

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 kiếm tuần tự, nó thử kiểm tra tất cả các vị trí trên văn bản từ 1 cho đến n – m + 1 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 minh năm 1977 bởi hai giáo sư của ĐH Stanford, Hoa

Kỳ (một trong số ít các trường đại học xếp hàng số một về khoa học máy tính trên thế giới, cùng với trường MIT, CMU cũng của Hoa Kỳ và Cambrige của Anh) là Donal Knuth và Vaughan Ronald Pratt Giáo sư Knuth (giải Turing năm 1971) còn rất nổi tiếng với cuốn sách “Nghệ thuật lập trình” (The Art of Computer Programming), hiện nay đã có đến tập 6 Ba tập đầu tiên đã xuất bản ở Việt Nam, là một trong những cuốn sách gối đầu giường cho bất kì lập trình viên nói riêng và những ai yêu thích lập trình máy tính nói chung trên toàn thế giới Thuật toán này còn có tên là KMP, tức là lấy tên viết của ba người đồng phát minh ra nó, chữ “M”

là chỉ giáo sư J.H.Morris, cũng là một giáo sư rất nổi tiếng trong ngành khoa học máy tính

Trang 12

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Ý tưởng chính của phương pháp này như sau: Trong quá trình tìm kiếm 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 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 những thông tin của lần thử trước cho lần sau Trong thuật toán Brute force vì chỉ dịch cửa sổ đi một ký tự nên có đến m-1 ký tự của cửa sổ mới là những ký tự của cửa sổ vừa xét Trong đó có thể có rất nhiều ký tự đã được so sánh giống với mẫu

và bây giờ lại nằm trên cửa sổ mới nhưng được dịch đi về vị trí so sánh với mẫu Việc xử lý những ký tự này có thể được tính toán trước rồi lưu lại kết quả Nhờ đó lần thử sau có thể dịch đi được nhiều hơn một ký tự, và giảm số ký tự phải so sánh lại

Xét lần thử tại vị trí j, khi đó cửa sổ đang xét bao gồm các ký tự y[j…j+m-1], giả sử sự khác biệt đầu tiên xảy ra giữa hai ký tự x[i] và y[j+i-1]

Khi đó x[1…i] = y[j…i+j-1] = u và 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 là phần đầu của xâu x khớp với phần đuôi của xâu

u trên văn bản Hơn nữa ký tự c ở ngay sau v trên mẫu phải khác với ký tự a Trong những đoạn như v thoả mãn các tính chất trên ta chỉ quan tâm đế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 được đưa về một quá trình biến đổi trạng thái automat Hệ thống automat trong thuật toán DFA sẽ được xây dựng dựa

Trang 13

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

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

Thuật toán này có phần giống thuật toán Knuth-Morris-Pratt trong việc nhảy

về trạng thái trước khi gặp một ký tự không khớp, nhưng thuật toán DFA có sự

đánh giá chính xác hơn vì việc xác định vị trí nhảy về dựa trên ký tự không khớp

của văn bản (trong khi thuật toán KMP lùi về chỉ dựa trên vị trí không khớp)

Ví dụ: Ta có xâu mẫu là GCAGAGAG với hệ automat sau :

Hình 1.1 : Sơ đồ automat

Với ví dụ ở trên ta có:

Nếu đang ở trạng thái 2 gặp ký tự A trên văn bản sẽ chuyển sang trạng thái 3 Nếu đang ở trạng thái 6 gặp ký tự C trên văn bản sẽ chuyển sang trạng thái 2 Trạng thái 8 là trạng thái cuối cùng, nếu đạt được trạng thái này có nghĩa là

đã tìm thấy một xuất hiện của mẫu trên văn bản

Trạng thái 0 là trạng thái mặc định (các liên kết không được biểu thị đều chỉ

về trạng thái này), ví dụ ở nút 5 nếu gặp bất kỳ ký tự nào khác G thì đều chuyển về trạng thái 0

Trang 14

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Việc xây dựng hệ automat khá đơn giản khi được cài đặt trên ma trận kề Khi

đó thuật toán có thời gian xử lý là O(n); thời gian và bộ nhớ để tạo ra hệ automat là O(m* ) (tùy cách cài đặt)

1.3.4 Thuật toán 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 tối đa 3n kí tự trong trường hợp xấu nhất đối với mẫu không có chu

kỳ (non periodic pattern)

Giả sử trong quá trình so sánh, ta gặp 1 mis-match tại vị trí x[i] = a của mẫu

và y[i+j] = b trong khi đang thử khớp tại vị trí j

Trang 15

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Hình 1.2 Mis-match trong khi đang so sánh tại vị trí j

Khi đó, x[i+1 m-1] = y[j+i+1…j+m-1] = u và x[i] ≠ y[i+j] Bây giờ ta đi xét đối với từng trường hợp, 2 hàm trên sẽ thực hiện việc di chuyển như thế nào:

- Phép dịch chuyển good-suffix shift sẽ dịch cửa sổ sang bên phải cho đến khi gặp 1 kí tự khác với x[i] trong trường hợp đoạn u lại xuất hiện trong x

Hình 1.3 Good-suffix shift, trường hợp u lại xuất hiện trong x

- Nếu đoạn u không xuất hiện lại trong x, mà chỉ có 1 phần cuối (suffix) của u khớp với phần đầu (prefix) của x, thì ta sẽ dịch 1 đoạn sao cho phần suffix dài nhất v của y[j+i+1…j+m-1] khớp với prefix của x

Hình 1.4 Good-suffix shift, trường hợp chỉ có suffix của u xuất hiện trong x

- Phép dịch chuyển bad-character shift sẽ khớp kí tự y[i+j] với 1 kí tự (bên trái nhất) trong đoạn x[0…m-2]

Trang 16

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Hình 1.5 Bad-character shift

- Nếu y[i+j] không xuất hiện trong x, ta thấy ngay rằng không có xuất hiện nào của x trong y mà chứa y[i+j], do đó ta có thể đặt cửa sổ ngay sau y[i+j], tức là y[j+i+1]

Hình 1.6

Thuật toán Boyer-Moore sẽ chọn đoạn dịch chuyển dài nhất trong 2 hàm dịch chuyển good-suffix và bad-character shift Hai hàm này được định nghĩa như sau: Hàm good-suffix shift được lưu trong bảng bmGs có kích thước m+1 Ta định nghĩa 2 điều kiện sau:

+ Cs(i,s): với mỗi k mà i < k < m, s ≥ k hoặc x[k-s] = x[k]

+ Co(i,s): nếu s < i thì x[i-s] ≠ x[i]

Khi đó, với 0 ≤ i < m: bmGs[i+1] = min{s>0: Cs(i,s) and Co(i,s) hold}

Và chúng ta định nghĩa bmGs[0] là độ dài chu kỳ của x Việc tính toán bảng

bmGs sử dụng 1 bảng suff được định nghĩa như sau:

Với 1 ≤ i < m, suff[i] = max{k: x[i-k+1…i] = x[m-k…m-1]}

Hàm bad-character shift được lưu trong bảng bmBc có kích thước Cho c

trong ∑: bmBc[c] = min{i: 1 ≤ i <m-1 và x[m-1-i] = c} nếu c xuất hiện trong x, m ngược lại

Trang 17

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Bảng bmGs và bmBc được tính toán trong thời gian O(m+ ) trước khi thực hiện tìm kiếm và cần 1 không gian phụ là O(m+ ) Giai đoạn tìm kiếm có độ phức tạp thời gian bậc 2 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]

1.3.5 Thuật toán Karp-Rabin

Thuật toán mang tên hai nhà khoa học phát minh ra nó là Richard M.Karp (sinh năm 1931,người Mỹ) và Michael O.Rabin (sinh năm 1931,người Đức) Tư tưởng chính của 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 phải thỏa mãn một số tính chất như phải dễ dàng tính được trên chuỗi, và đặc biệt công việc tính lại phải đơn giản để ít ảnh hưởng đến thời gian thực hiện của thuật toán Chẳng hạn hàm băm được chọn ở đây là: hash(w[i…i+m-1]) = h = (w[i]*dm-1 + w[i+1]*dm-2 + … w[i+m-1]*d0) mod q Việc tính lại hàm băm sau khi dịch cửa sổ đi một ký tự chỉ đơn giản như sau:

h = ((h – w[i]*dm-1)*d + w[i+m]

Trong bài toán này ta có thể chọn d = 2 để tiện cho việc tính toán a*2 tương đương a shl 1 Và không chỉ thế ta chọn q = MaxLongint khi đó phép mod q không cần thiết phải thực hiện vì sự tràn số trong 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ả

Trang 18

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

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 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, …

Các thuật toán so sánh mẫu từ phải sang trái đều là các dạng của thuật toán

Boyer-Moore Phải nói lại rằng thuật toán BM là thuật toán tìm kiếm rất hiệu quả

trên thực tế nhưng độ phức tạp tính toán lý thuyết lại là O(m*n) Chính vì vậy

những cải tiến của thuật toán này cho độ phức tạp tính toán lý thuyết tốt như: thuật toán Apostolico-Giancarlo đánh dấu lại những ký tự đã so sánh rồi để khỏi bị so sánh lặp lại, thuật toán Turbo-BM đánh giá chặt chẽ hơn các thông tin trước để có thể dịch được xa hơn và ít bị lặp, … Còn có một số cải tiến khác của thuật toán BM không làm giảm độ phức tạp lý thuyết mà dựa trên kinh nghiệm để có tốc độ tìm kiếm nhanh hơn trong thực tế Ngoài ra, một số thuật toán kết hợp quá trình tìm kiếm của BM vào hệ thống Automat mong đạt kết quả tốt hơn

Các thuật toán so sánh mẫu theo thứ tự đặc biệt:

- Thuật toán Galil-Seiferas và Crochemore-Perrin chia mẫu thành hai đoạn, đầu tiên kiểm tra đoạn ở bên phải rồi mới kiểm tra đoạn bên trái với chiều từ trái sang phải

- Thuật toán Colussi và Galil-Giancarlo lại chia mẫu thành hai tập và tiến hành tìm kiếm trên mỗi tập với một chiều khác nhau

- Thuật toán Optimal Mismatch và Maximal Shift sắp xếp thứ tự mẫu dựa vào mật độ của ký tự và khoảng dịch được

Trang 19

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

- Thuật toán Skip Search, KMP Skip Search và Alpha Skip Search dựa sự phân bố các ký tự để quyết định vị trí bắt đầu của mẫu trên văn bản

Các thuật toán so sánh mẫu theo thứ tự bất kỳ:

Đó là các thuật toán có thể tiến hành so sánh mẫu với cửa sổ theo một thứ tự ngẫu nhiên Những thuật toán này đều có cài đặt rất đơn giản và thường sử dụng chiêu ký tự không khớp của thuật toán Boyer-Moore Có lẽ loại thuật toán này dựa trên ý tưởng càng so sánh loạn càng khó kiếm test chết Vì dựa hoàn toàn trên vị trí được lấy ngẫu nhiên nên kết quả chỉ là mong đợi ngẫu nhiên chứ không có một cơ

sở toán học nào để lấy vị trí ngẫu nhiên sao cho khả năng xuất hiện mẫu cần tìm là lớn

Các thuật toán đối sánh mẫu trình bày ở trên đã được sử dụng phổ biến, tư tưởng chủ đạo vẫn là tìm kiếm từ đầu văn bản tới cuối văn bản Trong đề tài này hướng đến một cách tiếp cận mới là sử dụng giải thuật di truyền thuộc lớp giải thuật xác suất, phương pháp mô phỏng theo quá trình chọn lọc tự nhiên của sinh vật Từ một quần thể ban đầu, các cá thể được đánh giá qua sự thích nghi tốt hay xấu, từ đó quyết định cá thể đó có thể tồn tại hay không Áp dụng với bài toán này, từ một tập các vị trí trong văn bản tìm kiếm ban đầu, các vị trí trong tập ban đầu được chọn lọc qua nhiều bước, các vị trí tốt được giữ lại và tiến hóa tới khi đạt độ chính xác tốt nhất, đồng thời các vị trí xấu bị loại bỏ Trong các chương tiếp theo sẽ trình bày cụ thể về giải thuật di truyền và cài đặt thực nghiệm giải thuật di truyền giải bài toán đối sánh mẫu

Trang 20

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

CHƯƠNG 2 GIỚI THIỆU VỀ GIẢI THUẬT DI TRUYỀN

Chương này giới thiệu tổng quan về giải thuật di truyền Các toán tử của giải thuật di truyền và những điểm khác biệt của giải thuật di truyền với các giải thuật khác.[1],[3],[4],[5],[9]

2.1 Tổng quan chung về giải thuật di truyền (GA)

2.1.1 Giới thiệu

Lí thuyết về giải thuật di truyền trong những năm qua đã phát triển rất mạnh

và theo nhiều hướng tiếp cận khác nhau Sở dĩ như vậy là do tính hiệu quả của giải thuật này so với các giải thuật khác Giải thuật di truyền đã thể hiện rõ tính ưu việt trong tìm kiếm tiến hoá và tính mềm dẻo trong khả năng thích nghi với yêu cầu của bài toán đặt ra, đặc biệt đối với các bài toán khó, có không gian tìm kiếm lớn và có nhiều ràng buộc phức tạp

Giải thuật di truyền được J.H.Holland và các đồng nghiệp của ông tại trường đại học Michigan giới thiệu năm 1975, và đã có rất nhiều công trình nghiên cứu về

lí thuyết cũng như ứng dụng của nó được công bố trong những năm gần đây GA được ứng dụng trong nhiều lĩnh vực khác nhau như: Sinh học, khoa học cơ bản, khoa học máy tính, trí tuệ nhân tạo

Giải thuật di truyền là kỹ thuật phỏng theo quá trình thích nghi tiến hoá của các quần thể sinh học dựa trên học thuyết Darwin Cũng như các thuật toán tiến hoá khác, GA được hình thành dựa trên một quan niệm được coi là một tiên đề phù hợp

với thực tế khách quan Đó là quan niệm “quá trình tiến hoá tự nhiên là quá trình hoàn hảo nhất, hợp lý nhất và tự nó đã mang tính tối ưu” Quá trình tiến hoá thể

hiện tối ưu ở chỗ thế hệ sau bao giờ cũng tốt hơn thế hệ trước Tư tưởng của GA là

mô phỏng các hiện tượng tự nhiên: kế thừa và đấu tranh sinh tồn

Trang 21

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Các giả thuyết (lời giải) trong GA thường được mô tả bằng chuỗi các bit, việc hiểu chuỗi các bit này tuỳ thuộc vào ứng dụng, ý tưởng các giả thuyết cũng có thể mô tả bằng các biểu thức kí hiệu hoặc ngay cả các chương trình máy tính

GA thuộc lớp các giải thuật xác suất nhưng lại rất khác các giải thuật ngẫu nhiên vì chúng kết hợp các phần tử tìm kiếm trực tiếp và ngẫu nhiên GA lập luận mang tính chất ngẫu nhiên để tìm giải pháp tối ưu cho những vấn đề phức tạp, thay

vì xác định như toán học giải tích Trong GA, tập các lời giải của bài toán được gọi

là quần thể và việc tìm kiếm giả thuyết thích hợp được bắt đầu với một quần thể khởi tạo ban đầu Các cá thể của quần thể ban đầu khơi nguồn cho các quần thể ở thế hệ tiếp theo bằng các hoạt động tiến hoá đó là chọn lọc, lai ghép và đột biến – tất cả đều là ngẫu nhiên

Sơ đồ thuật toán của GA được thể hiện ở hình vẽ dưới đây:

Hình 2.1 Sơ đồ giải thuật GA

Trang 22

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

1 [Bắt đầu] Nhận các tham số cho thuật toán

2 [Khởi tạo] Sinh ngẫu nhiên một quần thể gồm n cá thể (là n lời giải cho bài toán)

3 [Quần thể mới] Tạo quần thể mới bằng cách lặp lại các bước sau cho đến khi quần

thể mới hoàn thành:

a [Thích nghi] Ước lượng độ thích nghi eval(x) của mỗi cá thể

b [Chọn lọc] Chọn hai cá thể bố mẹ từ quần thể cũ theo độ thích nghi của chúng (cá

thể có độ thích nghi càng cao thì càng có nhiều khả năng được chọn)

c [Lai ghép] Với một xác suất lai ghép được chọn, lai ghép hai cá thể bố mẹ để tạo

ra một cá thể mới

d [Đột biến] Với một xác suất đột biến được chọn, biến đổi cá thể mới

e [Tạo lại quần thể mới]

4 [Chọn kết quả] Nếu điều kiện dừng được thỏa mãn thì thuật toán kết thúc và trả về

lời giải tốt nhất trong quần thể hiện tại.Nếu không, quay trở lại bước [3]

2.1.2 Các vấn đề cơ bản của GA

2.1.2.1 Mã hoá cá thể

Trong giải thuật GA sử dụng một số thuật ngữ của di truyền học như: nhiễm sắc thể (NST), quần thể (population), gen,… NST được tạo thành từ các gen (được biểu diễn bằng một chuỗi tuyến tính) Mỗi gen mang một số đặc trưng và có vị trí nhất định trong NST Mỗi NST sẽ được mã hoá để biểu diễn lời giải của bài toán Cách mã hoá NST được đánh giá là một trong hai yếu tố quyết định trong việc xây dựng giải thuật GA

a) Mã hoá nhị phân

Trong tất cả các phương pháp mã hoá thì mã hoá nhị phân là phương pháp đơn giản và ra đời sớm nhất Trong mã hoá nhị phân, mỗi NST là một chuỗi nhị phân, mỗi bit trong nó có thể biểu diễn một đặc tính của lời giải

Ví dụ: Hai NST 1 và 2 có độ dài 10:

NST 1: 1 0 1 0 0 1 0 1 0 0 ; NST 2: 1 1 0 0 0 1 1 1 0 1

Trang 23

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Mã hoá nhị phân tuy đơn giản và phổ biến nhưng nó có một đặc điểm là có thể sẽ tạo ra không gian mã hoá lớn hơn giá trị của NST, hơn nữa có thể xảy ra trường hợp các toán tử lai ghép và đột biến tạo ra các cá thể không nằm trong không gian tìm kiếm và đòi hỏi phải có những phương pháp sửa chữa để tạo ra cá thể nằm trong không gian tìm kiếm Do đó, với nhiều bài toán thì mã hoá nhị phân không phải là giải pháp tối ưu, điển hình là bài toán TSP

Mã hoá hoán vị phù hợp với các bài toán có liên quan đến thứ tự Đối với các bài toán này, việc thao tác trên các NST chính là hoán đổi vị trí các số trong chuỗi

đã cho nhằm làm thay đổi trình tự của nó

Ví dụ: Trong bài toán người du lịch, để biểu diễn một cách đi của người du lịch thì

dùng một NST mà trình tự các số trong chuỗi đó cho biết thứ tự các thành phố mà người du lịch đi qua

c) Mã hoá theo giá trị

Mã hoá trực tiếp theo giá trị có thể được dùng trong các bài toán sử dụng giá trị phức tạp như trong số thực Trong đó, mỗi NST là một chuỗi các giá trị Các giá trị có thể là bất cứ điều gì liên quan đến bài toán, từ số nguyên, số thực, kí tự cho đến các đối tượng phức tạp hơn

Ví dụ: Có 2 NST 1 và 2:

NST 1: 3.54 5.32 0.67 1.64 NST 2: (back) (back) (right) (left)

Trang 24

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Mã hoá theo giá trị thường dùng cho các bài toán đặc biệt Trong cách mã hoá này ta thường phải phát triển các toán tử đột biến và lại ghép cho phù hợp với từng bài toán

2.1.2.2 Khởi tạo quần thể ban đầu

Quần thể là một tập hợp các cá thể cùng sống trong một môi trường sống và

có chung một số đặc điểm nào đó Trong GA, ta quan niệm “quần thể là tập các lời giải của bài toán”

Quần thể ban đầu ảnh hưởng khá nhiều đến hiệu quả giải thuật, tuy nhiên trong nhiều bài toán thì quần thể ban đầu thường được lựa chọn ngẫu nhiên Thường kích thước quần thể phụ thuộc vào kích thước mã hoá

Ví dụ: Nếu có NST 32 bit, nên tạo quần thể có kích thước từ 16 trở lên

Kích thước quần thể cho biết có bao nhiêu cá thể trong quần thể trong mỗi thế hệ Các nghiên cứu và thử nghiệm cho thấy kích thước quần thể không nên quá

bé hoặc quá lớn Nếu có ít cá thể thì sẽ dẫn đến việc làm giảm không gian tìm kiếm, khi đó sẽ dễ rơi vào cục bộ địa phương, như vậy sẽ xảy ra trường hợp bỏ qua các lời giải tốt Ngược lại, nếu kích thước quần thể quá lớn sẽ dẫn đến việc chi phí về thời gian sẽ tốn hơn, ảnh hưởng đến hiệu quả tính toán của giải thuật Các nghiên cứu cũng đã chỉ ra rằng không có lợi khi tăng kích thước quần thể lên quá một giới hạn cho phép

2.1.2.3 Hàm thích nghi (hàm mục tiêu)

Một cách trực quan, hàm thích nghi giống như là một hàm đánh giá độ tốt của cá thể Nó dùng để so sánh giữa hai cá thể cá thể nào tốt hơn Sau mỗi thế hệ tiến hoá, giải thuật dùng hàm này để quyết định giữ lại hay loại bỏ các lời giải; cũng như trong quá trình lai ghép hay chọn lọc, cá thể nào có giá trị hàm mục tiêu tốt hơn

sẽ được ưu tiên chọn lựa

Trang 25

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

2.1.2.4 Chọn lọc

Trong tự nhiên, quá trình chọn lọc và đấu tranh sinh tồn đã làm thay đổi các

cá thể trong quần thể Những cá thể tốt, thích nghi với điều kiện sống thì có khả năng sống sót cao hơn Các cá thể không thích nghi đƣợc với điều kiện sống thì dần mất đi Dựa vào nguyên lý của quá trình chọn lọc và đấu tranh trong tự nhiên, chọn lọc trong GA chính là quá trình chọn các cá thể có độ thích nghi (cụ thể là giá trị hàm mục tiêu) tốt hơn để đƣa vào thế hệ tiếp theo hoặc cho lai ghép, với mục đích

là sinh ra cá thể mới tốt hơn Có nhiều cách lựa chọn nhƣng đều cùng một mục tiêu

là những cá thể tốt sẽ có khả năng đƣợc chọn cao hơn

2.1.2.6 Đột biến

Đột biến là một sự biến đổi tại một (hay một số) gen của NST ban đầu để tạo

ra một NST mới Đột biến có xác suất xảy ra thấp hơn lai ghép rất nhiều Đột biến

có thể tạo ra cá thể mới tốt hơn hoặc xấu hơn cá thể mẹ ban đầu Tuy nhiên, trong

GA, ta luôn mong muốn tạo ra những phép đột biến cho phép cải thiện lời giải qua từng thế hệ tiến hoá

2.1.3 Sự khác biệt của GA với các giải thuật khác

Hoạt động của GA đơn giản là việc mô phỏng sự tiến hoá và chọn lọc tự nhiên bằng máy tính bắt đầu từ một quần thể đƣợc khởi tạo ngẫu nhiên Bên cạnh

Trang 26

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

đó, để tối ưu ta cần hàm lượng giá hoặc hàm thích nghi để chọn cá thể tốt và loại cá thể xấu GA khác với các kĩ thuật tối ưu khác ở chỗ:

- GA làm việc với bộ mã của biến chứ không làm việc trực tiếp trên biến

- Hầu hết các kĩ thuật tối ưu thông thường thường tìm kiếm từ một đỉnh, trong khi đó GA luôn hoạt động trên tập hợp đỉnh, điều này là một ưu điểm mạnh của

GA vì nó giúp tăng cơ hội tiếp cận tối ưu toàn cục và tránh hội tụ sớm tại điểm cục bộ địa phương

- GA dùng việc đánh giá hàm mục tiêu của mỗi cá thể để phục vụ quá trình tìm kiếm, nên có thể ứng dụng cho bất kì bài toán tối ưu nào (liên tục hay rời rạc)

- GA thuộc lớp giải thuật xác suất, các thao tác cơ bản của GA dựa trên khả năng tích hợp ngẫu nhiên trong quá trình xử lí

Để cụ thể hơn, ta sẽ tiến hành so sánh GA cổ điển với hai thuật toán truyền thống rất phổ biến là thuật toán “vét cạn” và thuật toán “leo đồi”

Thuật toán “vét cạn” (tìm kiếm theo bề rộng hoặc theo chiều sâu), về mặt nguyên tắc thì các phương pháp tìm kiếm này đảm bảo tìm được nghiệm của bài toán nếu bài toán có nghiệm Song trên thực tế, có rất nhiều bài toán không thể áp dụng phương pháp này do phải phát triển một không gian trạng thái quá lớn

Thuật toán “leo đồi” sử dụng kĩ thuật “nâng cấp lặp” áp dụng cho một điểm đơn (điểm hiện tại) trong không gian tìm kiếm Trong một lần nâng cấp, một điểm mới được chọn trong số các điểm lân cận của điểm hiện hành (tìm kiếm cục bộ) nếu như điểm đó cho kết quả tốt hơn kết quả của hàm mục tiêu (lời giải tốt hơn) Việc tìm kiếm sẽ kết thúc khi không thể nâng cấp thêm được nữa Thuật toán leo đồi thường cho chúng ta kết quả tối ưu cục bộ, kết quả này phụ thuộc vào sự lựa chọn của điểm xuất phát Mặt khác, ta không có được thông tin về kết quả sai số của kết quả tìm được so với kết quả tối ưu toàn cục.[4]

Nhưng đối với GA thì những nhược điểm đó phần nào được loại bỏ nhờ những đặc điểm nổi bật của nó GA thực hiện tìm kiếm theo nhiều hướng, bằng cách duy trì một tập lời giải có thể và khuyến khích sự trao đổi thông tin giữa các

Trang 27

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

hướng, tập lời giải dần dần được tiến hoá qua các thế hệ do quá trình chọn lọc được thực hiện

GA dùng những luật chuyển đổi có thể xảy ra chứ không phải các luật được

ấn định trước, yếu tố ngẫu nhiên đóng vai trò quan trọng trong việc hướng dẫn tìm kiếm

2.2 Giải thuật di truyền kinh điển

2.2.1 Giới thiệu

Khái niệm di truyền đã được biết tới từ những năm 50, trong thời kì này đã

có một vài ứng dụng để giải các bài toán sinh học Một số nhà sinh vật học cũng đã

sử dụng máy tính để mô phỏng các hệ thống di truyền phục vụ công việc nghiên cứu của họ như: Barricelli năm 1957, Fraser năm 1960 – 1962, Martin và Cockerham năm 1960 Nhưng trong những thời kì này, khái niệm “di truyền” chưa được phát triển thành phương pháp luận và chỉ được sử dụng để giải quyết các bài toán riêng rẽ xuất phát từ sinh học

Ta có thể mô tả giải thuật như sau: “GA kinh điển sử dụng mã hoá nhị phân, mỗi cá thể được mã hoá là chuỗi nhị phân có độ dài cố định”

Trong đó A là miền không gian n-chiều, f(x) > 0 với mọi x A

Cấu trúc của GA kinh điển như sau:

Procedure GA {

t = 0;

Trang 28

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

} Quá trình tiến hoá được diễn ra trong vòng lặp while, tại thế hệ thứ t, giải thuật duy trì một tập lời giải P(t) = { , , x }x1t t n Mỗi lời giải xt i sau đó sẽ được đánh giá độ thích nghi Một tập lời giải mới được xây dựng bằng cách chọn lọc các cá thể

có độ thích nghi cao hơn, ta được tập lời giải trung gian Tiếp theo, một số cá thể trong tập lời giải này được biến đổi bằng phương pháp lai ghép và đột biến để tạo

thành tập lời giải mới cho thế hệ t+1 Quá trình trên lặp cho đến khi tìm được cá thể

tốt nhất (lời giải tối ưu) hay khi gặp điều kiện dừng của giải thuật [9]

n x , khi đó, một biễu diễn

với mỗi x i được mã hoá bởi một chuỗi nhị phân độ dài m i có dạng: ( 1 2 b0)

Trang 29

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Mỗi một lời giải đƣợc biểu diễn bằng một chuỗi nhị phân độ dài ( 1 )

i

m m i n , m1bit đầu tiên của chuỗi ứng với một giá trị x1 [ , ]a b1 1 , m2 bit tiếp theo của chuỗi ứng với một giá trị x2 [ ,a b2 2],……, m n bit cuối cùng của chuỗi ứng với một giá trị x n [a b n, n]

Nhƣ vậy, trong quá trình tiến hoá ta phải giải mã các chuỗi nhị phân thành các số nguyên x i D i.Ta thực hiện biến đổi theo công thức sau:

Là toán tử đƣợc sử dụng phổ biến nhất trong GA Xác suất lựa chọn của mỗi

cá thể tỷ lệ thuận với giá trị độ thích hợp của nó, đƣợc tính theo công thức sau:

Pi = f(vi)/ F ( i = 1…pop-size – kích cỡ của quần thể) gọi là xác suất chọn cho mỗi NST vi

Trong đó:

- f(vi) là hàm thích nghi của mỗi cá thể vi

- F là tổng của các giá trị thích nghi của quần thể

Việc chọn lọc cá thể nào phụ thuộc vào vị trí xác suất qi của mỗi NST viđƣợc tính nhƣ sau:

+ Phát sinh ngẫu nhiên một số r trong khoảng [0 1]

+ Nếu r < qi thì chọn NST đầu tiên (v1); ngƣợc lại thì chọn NST thứ i, vi (2 ≤ i ≤ pop-size) sao cho qi-1 < r < qi

Trang 30

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

* Toán tử chọn lọc cạnh tranh: Mỗi lần chọn lọc ta tiến hành chọn ngẫu nhiên t cá thể từ quần thể hiện tại Bản sao của cá thể tốt nhất trong t cá thể kể trên

được sao chép vào quần thể bố mẹ Tiến hành N lần chọn như vậy ta thu được quần

thể bố mẹ Lúc này t được gọi là “kích cỡ cạnh tranh”

* Toán tử chọn lọc xếp hạng: Các cá thể của quần thể hiện tại được sắp xếp

theo thứ tự giảm dần của giá trị độ thích nghi Cá thể tốt nhất được xếp thứ nhất và

cá thể tồi nhất xếp cuối cùng

Đặt lại độ thích nghi cho quần thể đã sắp xếp theo kiểu: nhiễm sắc thể thứ nhất có độ thích nghi là 1, NST thứ hai có độ thích nghi là 2, v.v., NST thứ

pop_size có độ thích nghi là pop_size

Theo phương pháp này việc một NST được chọn nhiều lần như trong lựa chọn theo kiểu bánh xe Roulet đã giảm đi Nhưng nó có thể dẫn đến sự hội tụ chậm

và NST có độ thích nghi cao cũng không khác mấy so với các NST khác

2.2.2.3 Toán tử lai ghép

Toán tử lai ghép là quá trình tạo NST con dựa trên NST cha - mẹ bằng cách ghép đoạn trên NST cha - mẹ với nhau Toán tử lai ghép được gán cho một xác suất lai ghép pc Quá trình được mô tả như sau:

- Chọn ngẫu nhiên một cặp NST từ quần thể ban đầu để làm cha-mẹ, giả sử chúng đều có độ dài m

- Tạo một số ngẫu nhiên trong khoảng từ 1 đến m – 1 (gọi là điểm lai ghép)

- Điểm lai ghép chia NST cha mẹ thành hai chuỗi con có độ dài m1, m2

Ví dụ: Có 2 NST cha mẹ là:

NST 1 : 1 0 1 0 1 0 0 0 NST 2 : 1 0 0 0 0 1 1 1 Sau quá trình lai ghép tại điểm thứ 2, ta được 2 NST con như sau :

NST 1‟ : 1 0 0 0 0 1 1 1 NST 2‟ : 1 0 1 0 1 0 0 0

Có một số dạng lai ghép như sau :

Trang 31

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

* Lai ghép đa điểm:

Toán tử được mô tả như sau :

Chọn ngẫu nhiên k điểm j , ,1 j k (1 j1 j2 j k m), lai ghép đa điểm tạo ra cặp con (X‟,Y‟) bằng cách đánh số các đoạn [ j j t, t 1] từ 0 trở đi, sau đó :

* Lai ghép đều hay lai ghép mặt nạ:

Trong lai ghép đều, ta chọn ngẫu nhiên k vị trí 1 < i1 < i2 < … < ik < m Các cá thể con X‟, Y‟ được tạo như sau :

2.2.2.4 Toán tử đột biến

Đột biến là hiện tượng NST con mang một số đặc tính không có trong mã di truyền của cha-mẹ Giống như toán tử lai ghép, toán tử đột biến cũng được gán một xác suất đột biến pm (thường nhỏ hơn nhiều so với xác suất lai ghép pc) Điều này là

Trang 32

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

đúng bởi trong tự nhiên, hiện tượng đột biến gen thường xảy ra với xác suất rất nhỏ Phép đột biến được mô tả như sau:

- Chọn ngẫu nhiên một NST trong quần thể

- Sinh ngẫu nhiên một số k, 1 ≤ k ≤ m

- Thay đổi bit thứ k, nếu là bit “0” thì đổi thành “1” và ngược lại Đưa NST này tham gia vào quá trình tiến hoá tiếp theo

2.2.2.5 Hàm phù hợp

* Biến đổi hàm mục tiêu thành hàm phù hợp:

Do giá trị phù hợp trong giải thuật di truyền là không âm, nên để áp dụng

GA cho bài toán tối ưu ta cần phải chuyển giá trị hàm mục tiêu thành hàm phù hợp

Nếu bài toán tối ưu là cực tiểu hàm mục tiêu g(x) thì ta chuyển sang hàm phù hợp như sau:

lai nguoc

C x g x

g C x f

0

)()

()

C x g x

g C x f

0

0)

()

()

Trong đó Cmin là tham số đầu vào, Cmin có thể là giá trị tuyệt đối bé nhất của các hàm mục tiêu trong tập hiện tại hoặc trong k vòng lặp cuối

* Thang đo giá trị phù hợp:

Việc điều chỉnh số lượng con cháu cho mỗi cá thể trong quần thể là rất quan trọng Điều này thể hiện ở chỗ: lúc bắt đầu hoặc sau vài vòng lặp đầu tiên, các quần thể thường có một số cá thể “siêu khoẻ” có khả năng chiếm lĩnh phần lớn quần thể

và có thể dẫn đến hội tụ sớm không mong muốn vì các cá thể này sẽ có thể có rất nhiều con, nếu cứ để như vậy mà chọn lọc thì giá trị phù hợp của các cá thể thành

Trang 33

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

phần sẽ tiến gần đến giá trị phù hợp của cá thể tốt nhất Và như vậy sau nhiều lần lặp các cá thể trung bình cũng có con số tương đương với các cá thể tốt nhất trong thế hệ tiếp theo Khi đó giải thuật di truyền trở thành tìm kiếm ngẫu nhiên giữa các

cá thể thành phần Thang đo giá trị phù hợp sẽ giải quyết vấn đề này

Một trong các thủ tục xác định thang đo đơn giản và hiệu quả là thang đo tuyến tính sau:

Nếu gọi f là giá trị phù hợp ban đầu và f là giá trị phù hợp sau khi biến đổi:

favg: giá trị phù hợp trung bình ban đầu

f avg: giá trị phù hợp trung bình sau khi biến đổi

Như vậy, biểu thức (2) bảo đảm cho các cá thể có giá trị phù hợp trung bình cũng được tham gia sản sinh ra con cháu Biểu thức (3) kiểm soát số con cháu tham gia vào quần thể mới của cá thể có độ phù hợp ban đầu cực đại

Tuy nhiên vào giai đoạn cuối của GA khi giá trị phù hợp trung bình của quần thể gần với giá trị phù hợp của cá thể tốt nhất thì thang đo tuyến tính trên có thể làm cho giá trị phù hợp bị âm Để khắc phục người ta đưa ra biểu thức f min= 0 để thay thế cho biểu thức (3)

2.2.3 Các bước quan trọng trong việc áp dụng giải thuật di truyền kinh điển

Khi muốn áp dụng giải thuật di truyền kinh điển, ta cần chú ý những bước quan trọng sau:

Bước 1: Chọn mô hình cho lời giải của vấn đề, chọn một số đặc trưng cho

toàn bộ các lời giải (quần thể) có thể có cho vấn đề

Trang 34

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Bước 2: Chỉ định cho mỗi lời giải (cá thể) một kí hiệu Kí hiệu có thể là một

dãy các số 0, 1 thuộc hệ nhị phân (hoặc dãy các số thập phân, dãy các chữ hay hỗn hợp của số và chữ) Kí hiệu đơn giản nhất và thường dùng nhất là số nhị phân

Bước 3: Tìm hàm số thích hợp cho vấn đề và tính hệ số thích nghi cho từng

lời giải

Bước 4: Dựa trên hệ số thích nghi của từng cá thể để thực hiện sự tạo sinh và

tiến hoá của quần thể Các phương thức tiến hoá bao gồm: Lai ghép, đột biến và chọn lọc

Bước 5: Tính các hệ số thích nghi các cho lời giải mới, qua đó lại tiến hành

loại bỏ những lời giải tồi, đồng thời giữ lại các lời giải tốt của bài toán

Bước 6: Nếu chưa tìm được lời giải tối ưu hay tương đối khá nhất của bài

toán, hay chưa hết kỳ hạn ấn định, quay lại bước 4 để tìm giải pháp mới

Bước 7: Khi đã tìm được giải pháp tối ưu hay thời gian cho phép đã hết thì

kết thúc giải thuật và báo cáo kết quả tìm được

2.2.4 Ví dụ

Sau đây, áp dụng GA vào bài toán giải phương trình:

Bài toán: Tìm nghiệm nguyên của phương trình: X 2 = 64 (1)

* Bước 1: Biểu diễn NST

Dễ thấy với bài toán (1), các lời giải x của bài toán nằm trong khoảng [-8; 8]

Ta dùng 1 vectơ nhị phân v để biễu diễn x, trong đó chiều dài của v chính là số bit

trong dãy nhị phân biểu diễn được số nguyên lớn nhất trong miền giá trị của x Vậy,

độ dài của v ở đây bằng 5 (vì 16 = 24 ≤ 17 ≤ 25 = 32)

* Bước 2: Xây dựng hàm mục tiêu

Ta chọn hàm mục tiêu cho bài toán là:

F(x) = 1000 - |X2 – 64| → max Nghĩa là, lời giải nào càng gần với 1000 nhất thì đó là lời giải của bài toán

* Bước3: Khởi tạo quần thể ban đầu

Trang 35

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Ta tạo một quần thể gồm 8 NST ban đầu, mỗi cá thể là một vectơ nhị phân 5 bit, tất cả các bit đều được khởi tạo ngẫu nhiên

Lấy ngẫu nhiên 8 NST được biểu diễn dưới dạng nhị phân và tính giá trị thích nghi của nó, ta có bảng sau:

Bảng 2.1 Bảng quần thể khởi tạo ban đầu

Thứ tự Chuỗi nhị

phân Giá trị thập phân

Giá trị thích nghi (Giá trị hàm F)

Độ thích nghi

- Toán tử chọn lọc: Dễ dàng nhận thấy cá thể (5) và (6) là hai cá thể có độ

thích nghi cao nhất Vì vậy, chúng sẽ được chọn để đưa vào lai ghép

- Toán tử lai ghép: Thực hiện lai ghép một điểm, chọn ngẫu nhiên một vị trí

trong chuỗi nhị phân biểu diễn cá thể (5) và (6), chính là 2 cá thể được chọn làm cha

và mẹ, giả sử đó là vị trị thứ 3, ta có sơ đồ lai ghép như sau:

Sau khi lai ghép, ta được 2 NST con mới là 01111, giá trị tương ứng là 15 và

00010 có giá trị tương ứng là 2 Tính độ thích nghi của 2 NST mới được giá trị hàm

Ngày đăng: 11/01/2017, 21:26

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Nguyễn Thị Ngọc Chi, Trần Kim Hương (2015) “Giải Thuật Di Truyền (Gas) và các ứng dụng”, Hội nghị NCKH khoa Toán – Tin, tr.94 – 101 Sách, tạp chí
Tiêu đề: Giải Thuật Di Truyền (Gas) và các ứng dụng”
[2]. Mr.Datnh(2014),“Thuật toán Boyer-Moore”,Http://laptrinh.vn,ngày 21/08/2014 Sách, tạp chí
Tiêu đề: Thuật toán Boyer-Moore”
Tác giả: Mr.Datnh
Năm: 2014
[3]. Nguyễn Thị Thuý Hoài (2008), Thuật giải di truyền và ứng dụng, Trường Đại học Sƣ Phạm – ĐH Đà Nẵng, Báo cáo “ Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6, tr.266 – 270 Sách, tạp chí
Tiêu đề: Thuật giải di truyền và ứng dụng", Trường Đại học Sƣ Phạm – ĐH Đà Nẵng, Báo cáo “ Hội nghị Sinh viên Nghiên cứu Khoa học
Tác giả: Nguyễn Thị Thuý Hoài
Năm: 2008
[4]. Nguyễn Hữu Mùi (2006), “Thuật toán di truyền và ứng dụng”, Nxb ĐHSP, Hà Nội Sách, tạp chí
Tiêu đề: Thuật toán di truyền và ứng dụng
Tác giả: Nguyễn Hữu Mùi
Nhà XB: Nxb ĐHSP
Năm: 2006
[5]. Nguyễn Văn Quyết (2009), Bài toán tìm kiếm văn bản sử dụng giải thuật di truyền, Luận văn thạc sĩ Khoa học máy tính, Đại học công nghệ thông tin và truyền thông – ĐHTN Sách, tạp chí
Tiêu đề: Bài toán tìm kiếm văn bản sử dụng giải thuật di truyền
Tác giả: Nguyễn Văn Quyết
Năm: 2009
[6]. Nguyễn Đức Thiện (2010), “Thuật toán đối đối sánh mẫu (pattern matching) trên văn bản”, Http://ndthien.blogspot.com, ngày 14/04/2010 Sách, tạp chí
Tiêu đề: Thuật toán đối đối sánh mẫu (pattern matching) trên văn bản”
Tác giả: Nguyễn Đức Thiện
Năm: 2010
[7]. Nguyễn Thị Thúy (2012), Một họ thuật toán đối sánh mẫu Wu-Manber và thực nghiệm, Luận văn thạc sĩ Hệ thống thông tin, Trường đại học Công nghệ - Đại học Quốc Gia Hà Nội Sách, tạp chí
Tiêu đề: Một họ thuật toán đối sánh mẫu Wu-Manber và thực nghiệm
Tác giả: Nguyễn Thị Thúy
Năm: 2012
[8]. Mai Ngọc Tùng (2012), Nghiên cứu ứng dụng giải thuật di truyền để tìm kiếm thông tin trên văn bản, Bài thu hoạch môn học phương pháp nghiên cứu khoa học trong tin học, Đại học Quốc gia Thành phố Hồ Chí Minh Sách, tạp chí
Tiêu đề: Nghiên cứu ứng dụng giải thuật di truyền để tìm kiếm thông tin trên văn bản
Tác giả: Mai Ngọc Tùng
Năm: 2012
[9]. Vũ Mạnh Xuân (2012), Bài giảng về giải thuật di truyền, Trường Đại học Sư Phạm – ĐHTN Sách, tạp chí
Tiêu đề: Bài giảng về giải thuật di truyền
Tác giả: Vũ Mạnh Xuân
Năm: 2012
[11]. Lance Chambers (1995), Practical Handbook of genetic Algorithms: Applications Sách, tạp chí
Tiêu đề: Practical Handbook of genetic Algorithms
Tác giả: Lance Chambers
Năm: 1995
[10]. Gonzalo Navarro, Mathieu Raffinot (2002), Flexible Pattern Matching in Strings Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.1 : Sơ đồ automat - Bài toán đối sánh mẫu sử dụng giải thuật di truyền
Hình 1.1 Sơ đồ automat (Trang 13)
Hình 1.2. Mis-match trong khi đang so sánh tại vị trí j - Bài toán đối sánh mẫu sử dụng giải thuật di truyền
Hình 1.2. Mis-match trong khi đang so sánh tại vị trí j (Trang 15)
Sơ đồ thuật toán của GA được thể hiện ở hình vẽ dưới đây: - Bài toán đối sánh mẫu sử dụng giải thuật di truyền
Sơ đồ thu ật toán của GA được thể hiện ở hình vẽ dưới đây: (Trang 21)
Bảng 2.1. Bảng quần thể khởi tạo ban đầu - Bài toán đối sánh mẫu sử dụng giải thuật di truyền
Bảng 2.1. Bảng quần thể khởi tạo ban đầu (Trang 35)
Hình 3.1. Giao diện chương trình - Bài toán đối sánh mẫu sử dụng giải thuật di truyền
Hình 3.1. Giao diện chương trình (Trang 47)
Bảng 3.2. Kết quả chương trình với độ chính xác 100% - Bài toán đối sánh mẫu sử dụng giải thuật di truyền
Bảng 3.2. Kết quả chương trình với độ chính xác 100% (Trang 49)
Bảng 3.3. Kết quả chương trình với độ chính xác 90% - Bài toán đối sánh mẫu sử dụng giải thuật di truyền
Bảng 3.3. Kết quả chương trình với độ chính xác 90% (Trang 50)
Bảng 3.4. Kết quả chương trình với độ chính xác 80% - Bài toán đối sánh mẫu sử dụng giải thuật di truyền
Bảng 3.4. Kết quả chương trình với độ chính xác 80% (Trang 51)
Hình 3.2. Giao diện chương trình mở rộng - Bài toán đối sánh mẫu sử dụng giải thuật di truyền
Hình 3.2. Giao diện chương trình mở rộng (Trang 64)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w