Bởi vì, một mặt, có nhiều bài toán NP – khó trong lý thuyết đồ thị như bài toán tập độc lập, bài toán bè,…có thể quy dẫn về MVCP, mặt khác bản thân bài toán phủ đỉnh nhỏ nhất cũng tìm đư
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
HOÀNG THỊ HẢI YẾN
GIẢI THUẬT DI TRUYỀN GIẢI BÀI TOÁN PHỦ
ĐỈNH NHỎ NHẤT
LUẬN VĂN THẠC SĨ KHOA HỌC
NGƯỜI HƯỚNG DẪN : PGS TS NGUYỄN ĐỨC NGHĨA
HÀ NỘI – 2010
Trang 2MỤC LỤC
MỤC LỤC 1
LỜI CẢM ƠN 4
LỜI CAM ĐOAN 5
Danh mục các ký hiệu, các chữ viết tắt 6
Danh mục bảng 7
Danh mục các hình vẽ, đồ thị 8
LỜI NÓI ĐẦU 10
Chương 1 GIỚI THIỆU BÀI TOÁN 13
1.1 Bài toán phủ đỉnh nhỏ nhất 13
1.1.1 Định nghĩa phủ đỉnh 13
1.1.2 Định nghĩa MVCP 13
1.2 Các bài toán liên quan đến bài toán MVCP 14
1.2.1 Bài toán bè 14
1.2.2 Bài toán tập độc lập 14
1.2.3 Quan hệ giữa bài toán MVCP, bài toán bè và bài toán tập độc lập 14
1.2.4 Ứng dụng của MVCP 16
1.2.4.1 Sắp xếp bảo vệ cho viện bảo tàng 16
1.2.4.2 Ứng dụng trong truyền thông và tin sinh học 16
Chương 2 THUẬT TOÁN DI TRUYỀN 17
2.1 Lịch sử phát triển 17
2.2 Sơ đồ hoạt động của thuật toán di truyền 19
2.3 Các vấn đề cơ bản của thuật toán di truyền 22
2.3.1 Các khái niệm cơ bản 22
2.3.1.1 Nhiễm sắc thể 22
Trang 32.3.1.2 Quần thể 22
2.3.1.3 Chọn lọc 23
2.3.1.4 Lai ghép 23
2.3.1.5 Đột biến 23
2.3.1.6 Hàm thích nghi 23
2.3.1.7 Không gian tìm kiếm 24
2.3.2 Các thành phần trong thuật toán di truyền 24
2.3.2.1 Mã hóa lời giải 24
2.3.2.2 Toán tử chọn lọc 27
2.3.2.3 Toán tử lai ghép 30
2.3.2.4 Toán tử đột biến 33
2.3.2.5 Một số tham số quan trọng khác 34
Chương 3 CÁC THUẬT TOÁN GIẢI BÀI TOÁN PHỦ ĐỈNH 38
3.1 Các trường hợp giải đúng 38
3.1.1 Đồ thị hai phía 39
3.1.2 Đồ thị nhiều phía 39
3.1.3 Cây 39
3.2 Các thuật toán giải chính xác 40
3.2.1 Chia để trị 40
3.2.2 Nhánh và cận 43
3.3 Các thuật toán xấp xỉ 49
3.3.1 Khái niệm về thuật toán xấp xỉ 49
3.3.2 Thuật toán tham lam 51
3.3.3 Thuật toán quy hoạch tuyến tính 58
3.3.4 Phương pháp gốc – đối ngẫu 64
Chương 4 THUẬT TOÁN DI TRUYỀN GIẢI BÀI TOÁN PHỦ ĐỈNH 71
4.1 Cách tiếp cận bài toán của Ketan Kotecha và Khuri [11] [16] 71
Trang 44.1.1 Mã hóa lời giải 71
4.1.2 Hàm mục tiêu 72
4.1.3 Sơ đồ thực hiện thuật toán 72
4.1.4 Xây dựng quần thể khởi tạo 73
4.1.5 Toán tử chọn lọc 74
4.1.6 Toán tử lai ghép 74
4.1.7 Toán tử đột biến 78
4.1.8 Chiến lược thay thế quần thể 79
4.1.9 Kỹ thuật hỗ trợ tìm kiếm 79
4.2 Thuật toán di truyền theo hướng tiếp cận của Huo Hongwei 80
4.2.1 Mã hóa lời giải 80
4.2.2 Các toán tử di truyền 80
4.2.3 Thủ tục Scan – And – Repair 80
4.2.4 Sơ đồ hoạt động thuật toán lai của Huo Hongwei 82
4.3 Thiết kế thuật toán di truyền cho bài toán phủ đỉnh nhỏ nhất 83
Chương 5 MỘT SỐ KẾT QUẢ THỰC NGHIỆM 88
5.1 Cài đặt chương trình và hướng dẫn sử dụng 88
5.1.1 Mục đích của thực nghiệm 88
5.1.2 Môi trường cài đặt 88
5.1.3 Xây dựng chương trình 89
5.1.4 Hướng dẫn sử dụng 89
5.2 Bộ dữ liệu thực nghiệm 94
5.2.1 Nguồn gốc dữ liệu 94
5.2.2 Đặc điểm của dữ liệu 94
5.3 Kết quả thực nghiệm và đánh giá 95
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 102
TÀI LIỆU THAM KHẢO 105
Trang 5LỜI CẢM ƠN
Tôi xin chân thành gửi lời cảm ơn tới thầy giáo, PGS.TS Nguyễn Đức Nghĩa
người đã trực tiếp hướng dẫn và cho tôi những ý kiến quý báu trong quá trình nghiên cứu đề tài
Tôi xin gửi lời cảm ơn tới các thầy cô trong Viện Công Nghệ Thông Tin & Truyền Thông, cũng như các thầy cô trong trường Đại Học Bách Khoa Hà Nội đã truyền thụ những kiến thức bổ ích trong quá trình tôi học tập và nghiên cứu tại trường
Tôi xin gửi lời cảm ơn tới gia đình và bạn bè đã giúp đỡ động viên tôi trong quá trình học tập và hoàn thành luận văn tốt nghiệp này
Mặc dù có nhiều cố gắng nhưng do thời thời gian và kiến thức còn hạn chế nên luận văn chắc chắn vẫn còn có nhiều thiếu sót Tôi rất mong nhận được những ý kiến đóng góp quý báu từ thầy cô và các bạn
Trang 6LỜI CAM ĐOAN
Tôi xin cam đoan luận văn: “Giải thuật di truyền giải bài toán phủ đỉnh nhỏ
nhất” là kết quả nghiên cứu của tôi trong suốt một năm qua dưới sự hướng dẫn của
PGS.TS Nguyễn Đức Nghĩa Các kết quả nghiên cứu được trình bày trong luận văn là trung thực, không là sao chép toàn văn của bất kỳ một công trình nào khác Mọi trích dẫn và tài liệu tham khảo trong luận văn đều được chỉ ra trong mục tài liệu tham khảo
Hà Nội, ngày … tháng … năm 2010
Tác giả luận văn
Hoàng Thị Hải Yến
Trang 7Danh mục các ký hiệu, các chữ viết tắt
STT Từ viết tắt Giải nghĩa tiếng Anh Giải nghĩa tiếng Việt
1 MVCP Minimum Vertex Cover Problem Bài toán phủ đỉnh nhỏ nhất
14 HVX Heuristic Vertex Crossover Operator Toán tử lai ghép heuristic
15 LOT Local optimization technique Tối ưu hóa cục bộ
Trang 8Danh mục bảng
Bảng 4.1 Bảng đỉnh VT 76
Bảng 4.2 Bảng cạnh ET 77
Bảng 4.3 Kết quả của thủ tục lai ghép HVX 77
Bảng 5.1 Bảng kết quả thực nghiệm với các bộ frb30-15-mis .96
Bảng 5.2 Bảng kết quả thực nghiệm với các bộ frb30-17-mis .96
Bảng 5.3 Bảng kết quả thực nghiệm với các bộ frb40-19-mis .96
Bảng 5.5 Bảng kết quả thực nghiệm với các bộ frb50-23-mis 97
Bảng 5.6 Bảng kết quả thực nghiệm với các bộ frb53-24-mis 97
Bảng 5.7 Bảng kết quả thực nghiệm với các bộ frb56-25-mis 98
Bảng 5.8 Bảng kết quả thực nghiệm với các bộ frb59-26-mis .98
Trang 9Danh mục các hình vẽ, đồ thị
Hình 1.1 Mối quan hệ của bài toán MVCP với các bài toán NP – đầy đủ khác 15
Hình 2.1 Mã hóa nhị phân 25
Hình 2.2 Mã hóa giá trị 25
Hình 2.3 Mã hóa cây 27
Hình 2.4 Phương pháp chọn lọc theo bánh xe Roulette 28
Hình 2.5 Lai ghép đồng bộ 31
Hình 2.6 Minh họa phép lai ghép theo thứ tự 32
Hình 2.7 Phép toán đột biến đổi chỗ 33
Hình 2.8 Phép toán đột biến đổi giá trị 34
Hình 2.9 Đột biến đảo đoạn 34
Hình 3.1 Kết quả thực nghiệm giải chính xác bài toán phủ đỉnh 47
Hình 3.2 Thời gian của thuật toán nhánh cận 48
Hình 3.3 Hoạt động của greedy2 với đồ thị hai phía 53
Hình 3.4 Minh họa thuật toán xấp xỉ với sai số tỉ lệ bị chặn bởi 2 56
Hình 3.5 Đồ thị hai phía đầy đủ Kn, n 57
Hình 3.6 Miền chấp nhận được của bài toán quy hoạch tuyến tính 59
Hình 3.7 Bài toán quy hoạch tuyến tính nguyên tương đương 61
Hình 3.8 Bài toán quy hoạch tuyến tính tương đương 62
Hình 3.9 Đồ thị minh họa thuật toán đơn hình 69
Hình 4.1 Thủ tục lai ghép HVX 76
Hình 4.2 Sơ đồ mô tả các bước của thuật toán GA cải tiến 85
Hình 5.1 Giao diện chính của chương trình 90
Hình 5.2 Menu nhập dữ liệu 91
Hình 5.3 Nhập dữ liệu từ file 92
Hình 5.4 Nhập dữ liệu từ bàn phím 93
Trang 10Hình 5.5 Tạo dữ liệu ngẫu nhiên 93 Biểu đồ 5.1 So sánh chất lượng lời giải của ba thuật toán trên các bộ dữ liệu 99 Biểu đồ 5.2 So sánh thời gian chạy chương trình của ba thuật toán 100
Trang 11LỜI NÓI ĐẦU
Bài toán phủ đỉnh nhỏ nhất (MVCP – Minimum Vertex Cover Problem) thuộc lớp bài toán NP – khó nổi tiếng trong tối ưu hóa trên đồ thị Bởi vì, một mặt, có nhiều bài toán NP – khó trong lý thuyết đồ thị như bài toán tập độc lập, bài toán bè,…có thể quy dẫn về MVCP, mặt khác bản thân bài toán phủ đỉnh nhỏ nhất cũng tìm được ứng dụng trong nhiều lĩnh vực thực tế như trong truyền thông, tin sinh học,… Do vậy, việc phát triển thuật toán giải bài toán phủ đỉnh nhỏ nhất đã và đang là mối quan tâm của nhiều nhà khoa học
MVCP nằm trong danh sách 21 bài toán NP – đầy đủ được đưa ra bởi Karp từ năm 1970 và cho tới nay vẫn chưa có thuật toán hiệu quả tìm lời giải tối ưu cho nó Tuy đã có một số thuật toán thời gian đa thức để giải gần đúng bài toán được đề xuất song chất lượng của các lời giải tìm được chưa cao
Hơn ba thập kỷ qua, đã có rất nhiều phương pháp được đề xuất để giải quyết các bài toán tối ưu hóa Một trong những phương pháp được áp dụng hiệu quả cho nhiều bài toán tối ưu tổ hợp đó là thuật toán di truyền Thuật toán di truyền được đề xuất bởi Holland vào những năm 1970 và đã được áp dụng rộng rãi trong nhiều ngành, nhiều lĩnh vực Bởi những thành tựu mà thuật toán di truyền đã đem lại, có rất nhiều nhà nghiên cứu đã và đang tập trung vào việc áp dụng thuật toán di truyền để giải bài toán phủ đỉnh nhỏ nhất Với mục đích nâng cao chất lượng lời giải, tác giả luận văn này cũng chọn hướng tiếp cận thuật toán di truyền để phát triển thuật toán giải bài toán phủ đỉnh nhỏ nhất
Trang 12Luận văn được trình bày trong 5 chương và có bố cục như sau:
Chương 1 “Giới thiệu bài toán” trình bày bài toán phủ đỉnh nhỏ nhất, ứng dụng của bài toán trong thực tế, các biến thể của bài toán, và mối quan hệ của bài toán với các bài toán NP – khó khác
Chương 2 “Thuật toán di truyền” trình bày một số khái niệm cơ bản trong sinh học Trên cơ sở đó trình bày các vấn đề cơ bản của thuật toán di truyền giải các bài toán tối
ưu tổ hợp
Chương 3 “Các hướng tiếp cận giải bài toán phủ đỉnh nhỏ nhất” trình bày một số thuật toán gần đúng giải bài toán phủ đỉnh hiện có Chương này cũng phân tích và đánh giá hiệu quả của các thuật toán hiện có giải bài toán phủ đỉnh nhỏ nhất
Chương 4 “Thuật toán di truyền giải bài toán phủ đỉnh nhỏ nhất” tập trung vào tìm hiểu một số thuật toán di truyền giải bài toán phủ đỉnh nhỏ nhất từ đó kết hợp các thuật toán đã có, cải tiến để thiết kế một thuật toán di truyền giải bài toán
Chương 5 “Một số kết quả thực nghiệm” trình bày các kết quả tính toán thực nghiệm theo thuật toán di truyền được xây dựng trong chương trước để đánh giá và so sánh hiệu quả với các thuật toán đã có
Mục “Kết luận và hướng phát triển” kết thúc luận văn
Ý nghĩa khoa học và thực tiễn của luận văn:
Thuật toán di truyền là một lớp quan trọng trong họ các thuật toán tiến hóa áp dụng hiệu quả cho các bài toán tối ưu đặc biệt là lớp bài toán tối ưu tổ hợp Hiện
Trang 13nay, thuật toán di truyền được ứng dụng rộng rãi trong nhiều lĩnh vực và thu được nhiều thành tựu quan trọng
Bài toán phủ đỉnh nhỏ nhất thuộc lớp các bài toán tối ưu đồ thị có nhiều ứng dụng trong thực tế, đồng thời còn là một bài toán điển hình của lý thuyết đồ thị mà nhiều bài toán NP – khó khác có thể quy dẫn về nó Do đó, việc xây dựng thuật toán tìm lời giải chất lượng cao cho bài toán này thực sự là vấn đề có nhiều ý nghĩa
Để giải quyết vấn đề này, hướng nghiên cứu áp dụng thuật toán di truyền giải bài toán phủ đỉnh nhỏ nhất là có cơ sở khoa học và thực tiễn
Trang 141.1.1 Định nghĩa phủ đỉnh
Trước tiên chúng ta đưa ra định nghĩa phủ đỉnh
Định nghĩa: Giả sử G( , )V E là đồ thị vô hướng với tập đỉnh V 1, 2, ,nvà tập cạnh
Ta gọi kích thước của một phủ đỉnh là số đỉnh của thuộc nó Bài toán phủ đỉnh nhỏ nhất là bài toán tìm một phủ đỉnh có kích thước nhỏ nhất trong một đồ thị vô hướng đã cho Phủ đỉnh như vậy được gọi là phủ đỉnh tối ưu
1.1.2 Định nghĩa MVCP
P1 Bài toán phủ đỉnh nhỏ nhất
Cho đồ thị G( , )V E , tìm phủ đỉnh V’ của G sao cho V’ có kích thước nhỏ nhất
Các biến thể của MVCP
Trang 15P2 Bài toán phủ đỉnh dạng quyết định
Cho đồ thị vô hướng G( , )V E và một số nguyên k hỏi có tồn tại phủ đỉnh kích thước k
hay không
P3 Bài toán phủ đỉnh với trọng số nhỏ nhất
Cho đồ thị vô hướng G( , )V E với trọng số trên đỉnh là c(v) với v V Tìm một phủ
đỉnh V’ của G sao cho tổng trọng số của các đỉnh trong V’ là nhỏ nhất
1.2 Các bài toán liên quan đến bài toán MVCP
1.2.1 Bài toán bè
Định nghĩa: Ta gọi bè trong đồ thị vô hướng G( , )V E là tập con các đỉnh V’ của V
sao cho mỗi cặp đỉnh của tập V' đều được nối với nhau bởi một cạnh trong E Nói cách khác, bè là một đồ thị con đầy đủ của G Kích thước của bè là số đỉnh trong V'
Bài toán bè:
Cho G( , )V E là đồ thị vô hướng Tìm bè kích thước lớn nhất trong G
Dạng quyết định của bài toán bè là: Cho đồ thị vô hướng G( , )V E và số nguyên k, liệu có tồn tại một bè kích thước k trong đồ thị đã cho hay không
1.2.2 Bài toán tập độc lập
Định nghĩa: Ta gọi tập độc lập của đồ thị vô hướng G( , )V E là tập con V’ của V nếu hai đỉnh bất kỳ trong V’ không kề nhau trên đồ thị G
Bài toán tập độc lập là tìm một tập độc lập có kích thước lớn nhất trong G
1.2.3 Quan hệ giữa bài toán MVCP, bài toán bè và bài toán tập độc lập
Định lý sau đây cho thấy mối quan hệ giữa các bài toán bè, tập độc lập và MVCP [14]
Định lý : Cho đồ thị vô hướng G=(V,E) với n đỉnh và tập SV có kích thước k Các mệnh đề sau đây là tương đương:
Trang 16(i) S là bè kích thước k của đồ thị bù G *
(ii) S là tập độc lập kích thước k của G
(iii) V\S là phủ đỉnh kích thước n-k của G
Chứng minh:
Định nghĩa: Ta gọi đồ thị bù của đồ thị G( , )V E là đồ thị G* = (V, E), trong đó
u v u v V u v và u v E
E ( , ) : , , ( , )
(i)(ii) : Nếu S là bè của G* thì với mỗi cặp đỉnh u, v S thì (u,v) là cạnh của G* kéo
theo (u,v) không là cạnh của G, điều đó có nghĩa là S là tập độc lập của G
(ii)(iii) : Nếu S là tập độc lập của G thì với tất cả cạnh (u,v) không là cạnh của G với mọi (u, v) thuộc S Điều đó có nghĩa là mỗi cạnh của G phải kề với một đỉnh nào đó trong V\S Do đó V\S là một phủ đỉnh
(iii)(i) : Nếu V\S là một phủ đỉnh.của G thì với u, v S ta có (u,v) E suy ra (u,v) là
cạnh của G* và vì thế S là bè của G*
Bài toán phủ đỉnh đã được chứng minh là một bài toán NP – khó nhờ quy dẫn bài toán tập độc lập cực đại về nó Còn bài toán tập độc lập cực đại (IS) là NP – khó bởi vì bài toán NP – đầy đủ 3 – SAT quy dẫn được về nó Hoặc như Karp đã chứng minh dựa trên quy dẫn từ bài toán bè (Clique) [7]
Hình 1.1 Mối quan hệ của bài toán MVCP với các bài toán NP – đầy đủ khác
(a) Bè V' u v x y, , , (b) Tập độc lập V' u v x y, , , (c) Phủ đỉnh VV' w z,
Trang 171.2.4 Ứng dụng của MVCP
1.2.4.1 Sắp xếp bảo vệ cho viện bảo tàng
Một ví dụ về ứng dụng của bài toán MVCP trong thực tế là vấn đề sắp xếp các nhân viên bảo vệ trong bảo tàng Mỗi hành lang trong bảo tàng tương ứng với một cạnh trong đồ thị Mỗi đỉnh của đồ thị tương ứng với một giao điểm của các hành lang Một nhân viên bảo vệ đứng ở giao điểm của các hành lang có thể canh gác được tất cả các hành lang liên quan Vấn đề đặt ra là hãy sắp xếp vị trí cho các nhân viên bảo vệ trong bảo tàng sao cho số lượng nhân viên bảo vệ cần huy động là ít nhất mà thỏa mãn yêu cầu mỗi hành lang đều có ít nhất một nhân viên bảo vệ canh gác Một ứng dụng khác tương tự như ứng dụng sắp xếp bảo vệ là việc sắp đặt các camera giám sát giao thông trên các giao lộ
1.2.4.2 Ứng dụng trong truyền thông và tin sinh học
Một ứng dụng quan trọng của MVCP đó là duy trì an ninh mạng máy tính hoặc truyền thông Ví dụ, việc tìm một phủ nhỏ nhất có thể được hiểu như việc xác định một tập tối ưu các đỉnh có thể kiểm soát và giám sát được mọi liên kết truyền trong mạng Trong đó, phủ đỉnh có thể được sử dụng trong các bộ lọc dựa trên route Đây là phương pháp phổ biến để ngăn chặn giả mạo IP và tấn công từ chối dịch vụ trong mạng [4] Bên cạnh đó, MVCP còn ứng dụng trong bài toán thiết kế mạng để giảm thiểu số lượng thiết bị trong mạng cần thiết kế [4]
Một ứng dụng khác của MVCP là trong lĩnh vực tin sinh học Có thể tìm thấy ứng dụng của nó trong việc xây dựng các cây phát sinh chủng loại, xác định kiểu hình và trong phân tích dữ liệu thể hiện gen (microarray data) [5]
Trang 18Chương 2
THUẬT TOÁN DI TRUYỀN
Thuật toán di truyền (Genetic Algorithm – GA) là một phần của tính toán tiến hóa (Evolutionary Computing), một lĩnh vực đang phát triển rất mạnh của Trí tuệ nhân tạo GA được lấy cảm hứng từ học thuyết của Darwin về sự tiến hóa Nói một cách đơn
giản thì bài toán được giải quyết bằng quá trình tiến hóa đưa ra kết quả tốt nhất hay cá thể khỏe nhất Hiểu theo cách khác, lời giải được tiến hóa [13][19]
GA mô phỏng quá trình tiến hóa tự nhiên: Kế thừa và đấu tranh sinh tồn để cải
tiến các thế hệ và khảo sát không gian lời giải GA thường được dùng trong các bài
toán tối ưu, hay lớp các bài toán NP – khó, đó là lớp bài toán rất hay nhưng thường rất khó tìm ra lời giải tối ưu với các thuật toán cổ điển vét cạn trong không gian tìm kiếm
2.1 Lịch sử phát triển
Trong thế giới sự tồn tại và phát triền của sự sống là một quá trình tự nhiên tuân theo các quy luật khách quan Con người nhờ biết học tập và vận dụng tốt các quy luật này mà có được sự tiến hóa như ngày nay Lĩnh vực máy tính cũng không là ngoại lệ khi học tập và bắt chước tự nhiên trong việc xây dựng những chương trình có tính chất giống cuộc sống của tự nhiên Những người đi đầu trong vấn đề này là Turing và Von Neumann …Với mong muốn tạo ra được những chương trình có thể tư duy như con người, có thể học tập và mở rộng kiến thức, có khả năng thích nghi cao khi điều kiện môi trường thay đổi, các nhà khoa học đã và đang nghiêm cứu theo nhiều hướng khác nhau như: mạng nơ-ron (neural networks), học máy (machine learning) và tính toán tiến hóa (evolutionary computation)
Trang 19Ở đây, ta quan tâm tới vấn đề tính toán tiến hóa Vấn đề này được chia thành các phần nhỏ như sau:
Chiến lược tiến hóa (Evolutionary Strategies )
Quy hoạch tiến hóa (Evolutionary Programming )
Thuật toán di truyền (Genetic Algorithms )
Lập trình genetic (Genetic Programming )
Mặc dù nằm trong cùng một lĩnh vực của tính toán tiến hóa nhưng các phần của
nó lại có thời gian và mức độ phát triển cũng như các ứng dụng khác nhau Rechenberg (1956) là người đi đầu trong vấn đề quy hoạch tiến hóa sau đó được Schwefel tiếp tục phát triển (1975, 1977) Fogel(1966), Owens và Walsh là những người đầu tiên phát triển và ứng dụng quy hoạch tiến hóa để giải quyết các bài toán trong thực tế
Thuật toán di truyền là một loại thuật toán tìm kiếm, được đề xuất bởi Holland cùng với sinh viên và đồng nghiệp của mình ở trường đại học Michigan vào những năm 1970 Thuật toán di truyền thực hiện tạo một quần thể gồm nhiều lời giải khác nhau (các cá thể lời giải) Các cá thể lời giải trong quần thể được cải biến ngày một tốt hơn thông qua quá trình tiến hoá, qua nhiều thế hệ Quá trình tiến hoá của các cá thể dựa trên thuyết chọn lọc tự nhiên, theo nguyên tắc “kẻ thích nghi nhất là kẻ tồn tại” Thuật toán di truyền ngày càng trở nên quan trọng, đặc biệt là trong lĩnh vực tối ưu hoá, một lĩnh vực có nhiều bài toán thú vị, được ứng dụng nhiều trong thực tiễn nhưng thường khó và chưa có thuật toán hiệu quả để giải
Thuật toán bắt đầu từ một tập các lời giải, được biểu diễn bằng các nhiễm sắc
thể (NST) , gọi là quần thể Các lời giải này được lấy ra và sử dụng để tạo nên quần thể
mới, với mong muốn quần thể mới sẽ tốt hơn quần thể cũ Những lời giải được chọn vào quần thể mới hay thế hệ con cháu theo độ thích nghi Cá thể có độ thích nghi càng cao càng có nhiều cơ hội để tái sinh sản
Trang 202.2 Sơ đồ hoạt động của thuật toán di truyền
Bước 1: Xây dựng quần thể xuất phát Ta chọn ngẫu nhiên n cá thể biểu diễn n lời giải
khác nhau của bài toán để đưa vào quần thể ban đầu Tuy nhiên, để nâng cao hiệu quả hoạt động của thuật toán di truyền, ta nên đưa một số lời giải của một số phương pháp
đã biết vào quần thể ban đầu để làm “hạt giống”, số còn lại có thể chọn ngẫu nhiên
Bước 2: Đánh giá độ thích nghi của quần thể mới tạo ra bằng hàm đánh giá với đối số
là kiểu gen của các cá thể đã được xây dựng từ trước để đánh giá độ thích nghi của từng cá thể trong quần thể
Bước 3: Sinh quần thể mới
[3a] Chọn lọc Lựa chọn ngẫu nhiên 2 cá thể từ quần thể để lai ghép ở bước
sau, việc lựa chọn phải thỏa mãn điều kiện xác suất được chọn của một cá thể tỉ lệ với
độ thích nghi của cá thể đó
[3b] Lai ghép Sau khi chọn được 2 cá thể, dựa vào xác suất xảy ra lai ghép p c
mà ta quyết định có tiến hành lai ghép hay không Nếu rơi vào trường hợp có xảy ra lai ghép thì áp dụng toán tử lai ghép trên 2 cá thể cha mẹ này để tạo ra 2 cá thể con cái Nếu rơi vào trường hợp không xảy ra lai ghép thì 2 cá thể con thu được sẽ giống y 2 cá thể cha mẹ (một cá thể giống cá thể “cha”, cá thể còn lại giống cá thể “mẹ”)
[3c] Đột biến Sau khi thu được 2 cá thể con, ta sẽ tiến hành đột biến trên từng
cá thể con vừa thu được với xác suất xảy ra đột biến là p m được xác định từ trước Nếu
có xảy ra đột biến thì toán tử đột biến sẽ được áp dụng trên cá thể đó để biến đổi ngẫu nhiên kiểu gen của nó, và ta sẽ thu được cá thể mới Nếu không xảy ra đột biến thì kiểu gen của cá thể sẽ được giữ nguyên và ta thu lại cá thể con ban đầu
[3d] Đưa 2 cá thể con thu được sinh ra vào quần thể mới Nếu số lượng cá thể
trong quần thể mới đã đủ n thì chuyển sang bước 4, còn nếu nhỏ hơn n thì ta quay lại
bước 3 (Do mỗi lần bổ sung cá thể vào quần thể mới, ta đều đưa 2 cá thể vào Trong
Trang 21trường hợp n lẻ thì ở lần bổ sung cuối cùng, dân số của quần thể mới sẽ là n+1, khi đó
ta sẽ lựa chọn ngẫu nhiên một cá thể trong quần thể mới để loại ra ngoài nhằm giữ nguyên dân số của quần thể qua các thế hệ)
Bước 4: Thay thế quần thể cũ bằng quần thể mới vừa thu được
Bước 5: Kiểm tra điều kiện dừng của thuật toán Nếu chưa thỏa mãn điều kiện dừng thì quay lại bước 2 Nếu điều kiện dừng được thỏa mãn thì kết thúc thuật toán
Kết quả thu được: Cá thể tốt nhất phát hiện được trong tất cả các thế hệ quần thể sẽ là
lời giải cho bài toán
Mô tả thuật toán bằng ngôn ngữ giả Pascal
Procedure GTDiTruyen
Begin
t := 0;
Khởi tạo quần thể P(0);
Tính giá trị thích nghi của các cá thể trong P(t);
While not Điều_kiện_kết_thúc do
Begin
Chọn lọc các cá thể từ P(t) ;
Lai ghép các cá thể đã chọn lọc;
Đột biến các cá thể con cháu;
Tính độ thích nghi của các cá thể trong P(t);
Trang 22Trong hoạt động của thuật toán di truyền yếu tố ngẫu nhiên đóng vai trò nhất định, vì thế mỗi lần thực hiện khác nhau có thể cho kết quả khác nhau Trên đây là sơ
đồ hoạt động chung của thuật toán di truyền Ngoài ra, để nâng cao hiệu quả hoạt động của thuật toán di truyền, người ta có thể đưa thêm vào một số bước, ví dụ sau khi thực
hiện bước [3d] ta có thể áp dụng thêm các kĩ thuật tìm kiếm cực trị địa phương để làm
tốt lời giải thu được
Sơ đồ hoạt động chung cho ta một hình dung khái quát về nguyên lý làm việc của thuật toán di truyền, tuy nhiên để xây dựng một thuật toán di truyền cho một bài toán cụ thể còn rất nhiều việc cần phải thực hiện, như là:
Làm thế nào để biểu diễn lời giải bằng những cá thể trong quần thể Một bài toán có thể có nhiều cách khác nhau để mã hoá lời giải Việc chọn cách biểu diễn lời giải sẽ ảnh hưởng đến việc lựa chọn các toán tử di truyền (lai ghép, đột biến…), vì mỗi cách biểu diễn sẽ cần có cách tương ứng để xây dựng những toán tử này
Giá trị độ thích nghi của các cá thể được xác định như thế nào Việc lựa chọn hàm đánh giá độ thích nghi sẽ ảnh hưởng đến việc định hướng hoạt động của thuật toán Do đó nếu lựa chọn hàm thích nghi phù hợp, thuật toán sẽ mang lại kết quả tốt hơn
Xác định một số tham số khác trong thuật toán :
* Kích thước quần thể Kích thước quần thể nhỏ quá thì hiệu quả tìm kiếm sẽ
thấp, ngược lại kích thước lớn quá thì quá trình hội tụ đến lời giải cũng chậm và thời gian thực hiện của thuật toán cũng tăng lên
* Lựa chọn điều kiện dừng Thông thường điều kiện dừng của thuật toán là số
lượng xác định các bước lặp sinh quần thể Tuy nhiên, cần phải chọn số lượng bước lặp này cho phù hợp Nếu ít quá thì vùng tìm kiếm sẽ bị hạn chế, còn nếu nhiều quá thì thời gian sẽ tăng Bên cạnh đó nếu không có chiến lược xử lý hợp
Trang 23lý trong quá trình tìm kiếm thì việc tăng số vòng lặp sinh quần thể cũng không mang lại điều gì thêm
Xác định các giá trị xác suất đột biến p m và xác suất lai ghép p c cho phù hợp Nếu những xác suất này có giá trị cao thì quá trình tìm kiếm sẽ có tính đa dạng
và phân tán, tuy nhiên tính hội tụ lại chậm và ngược lại Người ta thường để giá
trị của p m và p c tự điều chỉnh theo kết quả tìm kiếm, ví dụ qua nhiều thế hệ mà
kết quả tìm kiếm không được cải thiện thì p m và p c sẽ được tăng lên nhằm chuyển hướng tìm kiếm sang vùng khác, tránh hiện tượng bị tắc nghẽn ở những cực trị địa phương Còn trong trường hợp quá trình tìm kiếm đang diễn ra tốt thì
p m và p c sẽ được điều chỉnh thấp xuống nhằm tránh những tác động tiêu cực đối với quá trình hội tụ của lời giải Cách thực hiện các thuật toán tìm kiếm cực trị địa phương hỗ trợ cho kết quả lời giải tốt hơn
2.3 Các vấn đề cơ bản của thuật toán di truyền
2.3.1 Các khái niệm cơ bản
2.3.1.1 Nhiễm sắc thể
Nhiễm sắc thể (NST) còn gọi là cá thể Các sinh vật sống đều cấu tạo từ các tế bào, và tất cả các tế bào này đều bao gồm một tập hợp các NST giống nhau Mỗi NST bao gồm rất nhiều gen, mỗi gen quy định một trạng thái nào đó Trong bài toán tối ưu,
cá thể tương ứng với một lời giải khả thi
2.3.1.2 Quần thể
Quần thể trong tự nhiên là một tập hợp các cá thể có cùng một số đặc điểm nào
đấy Trong thuật toán di truyền ta quan niệm quần thể là một tập các lời giải khả thi
của một bài toán
Trang 242.3.1.3 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 được với điều kiện sống thì có khả năng đấu tranh lớn hơn, do đó có thể tồn tại và sinh sả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 sinh tồn trong tự nhiên, chọn lựa các cá thể trong GA chính là cách chọn các
cá thể có độ thích nghi tốt để đưa vào thế hệ tiếp theo hoặc để cho lai ghép, với mục đích là sinh ra các cá thể mới tốt hơn Tuy nhiên nó lại mang rất nhiều yếu tố ngẫu nhiên Có nhiều cách để lựa chọn nhưng cuối cùng đều nhằm đáp ứng mục tiêu là các
cá thể tốt sẽ có khả năng được chọn cao hơn
2.3.1.4 Lai ghép
Lai ghép trong tự nhiên là sự kết hợp các tính trạng của bố mẹ để sinh ra thế hệ con Trong thuật toán di truyền, lai ghép được coi là một sự tổ hợp lại các tính chất (thành phần) trong hai lời giải cha mẹ nào đó để sinh ra một lời giải mới có đặc tính mong muốn là tốt hơn thế hệ cha mẹ Đây là một quá trình chủ yếu trong thuật toán di truyền
2.3.1.5 Đột biến
Đột biến là sự biến đổ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ó thể tạo ra một cá thể mới tốt hơn hoặc xấu hơn cá thể ban đầu Tuy nhiên trong thuật toán di truyền ta luôn 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ệ Đột biến cũng mang tính chất ngẫu nhiên
2.3.1.6 Hàm thích nghi
Trong tự nhiên, chỉ có những cá thể nào thích nghi được với môi trường thì mới
tồn tại, ngược lại nó sẽ bị diệt vong GA đưa ra khái niệm hàm thích nghi, hay hàm sức
khỏe để đánh giá, so sánh một cá thể hay một lời giải với các cá thể, lời giải khác
Trang 25Từ đó có thể chọn lựa được các lời giải tốt cho các thế hệ sau Hàm thích nghi cũng là một tiêu chí đánh giá mức độ tiến hóa của quần thể
2.3.1.7 Không gian tìm kiếm
Khi giải một bài toán, chúng ta thường tìm một số lời giải được xem là tốt nhất Không gian của tất cả các lời giải khả thi được gọi là không gian tìm kiếm (hay không gian trạng thái) Mỗi một điểm trong không gian tìm kiếm biểu diễn cho 1 lời giải khả thi Mỗi lời giải khả thi được đánh giá bằng giá trị hay sức khỏe của nó trong bài toán Khi đó, việc tìm kiếm một lời giải tối ưu tương ứng với việc tìm một điểm có giá trị
cực trị (lớn nhất hoặc nhỏ nhất) trong không gian tìm kiếm
Vấn đề ở đây là việc tìm kiếm trong không gian trạng thái là rất phức tạp Ta sẽ tìm lời giải ở đâu và bắt đầu từ đâu Có rất nhiều cách để tìm lời giải thích hợp, như các
thuật toán leo đồi (hill climbing), tìm kiếm tabu (tabu search), mô phỏng tôi luyện (simulated annealing) và thuật toán di truyền (genetic algorithm) Tuy nhiên, những
phương pháp này có thể không đưa ra được lời giải tốt nhất
2.3.2 Các thành phần trong thuật toán di truyền
2.3.2.1 Mã hóa lời giải
Mã hóa lời giải là sử dụng một cấu trúc dữ liệu thích hợp để mô tả một lời giải nào đó của bài toán, đồng thời cho phép ta biến đổi lời giải thông qua sự tác động của các toán tử lên cấu trúc dữ liệu đó và có thể giải mã để thu được lời giải cho bài toán
2.3.2.1.1 Mã hóa nhị phân (binary encoding)
Mã hoá nhị phân là phương pháp biểu diễn lời giải phổ biến nhất và cũng chính
là phương pháp mà Holland đã sử dụng cho thuật toán di truyền ban đầu Trong mã hoá nhị phân, lời giải sẽ được biểu diễn bằng một xâu nhị phân, mỗi bit (hoặc nhóm bit) của xâu sẽ biểu diễn cho một tham số nào đó của lời giải
Trang 26Ví dụ : ta có thể dùng hai xâu nhị phân dưới đây để biểu diễn 2 cá thể
Hình 2.1 Mã hóa nhị phân
Mã hóa nhị phân có ưu điểm là cách biểu diễn đơn giản, dễ thao tác Tuy nhiên
nó có nhược điểm là có thể tạo ra không gian mã hoá lớn hơn so với không gian tìm kiếm thực của lời giải (tức là có những mã hóa là không hợp lệ) Ngoài ra, với những bài toán mà lời giải có cấu trúc phức tạp thì mã hóa nhị phân sẽ là không thích hợp
Ví dụ: Tìm cực trị của một hàm số f(x) phức tạp theo một biến nguyên x Khi đó có thể
mã hóa x là một xâu nhị phân (tương ứng với giá trị của x)
2.3.2.1.2 Mã hóa theo giá trị (value encoding)
Mã hóa theo giá trị là sự mở rộng của mã hóa nhị phân khi tập xác định của các gen trong NST có nhiều hơn 2 giá trị Giá trị của gen có thể lựa chọn đa dạng tùy từng người, có thể là kí tự, là số (nguyên, thực) hoặc một kí hiệu trong bảng kí hiệu nào đó
Cá thể thứ 1 : 1101100100
Cá thể thứ 2 : 1101111000
Một cá thể mã hóa theo giá trị thực : 1.7 2.3 7.1 8.4 9.6
Một cá thể mã hóa theo kí tự : A C E G B A D
Trang 27Ví dụ: Bài toán người du lịch (TSP): cho n thành phố và ma trận chi phí đi lại giữa các
thành phố (c ij) Hãy tìm một hành trình đi qua tất cả các thành phố với chi phí là nhỏ nhất
Một lời giải cho bài toán người du lịch có thể được biểu diễn bằng một hoán vị
n phần tử Giá trị tại vị trí thứ i trong hoán vị cho biết thứ tự được thăm của thành phố
thứ i
Mã hóa hoán vị cũng có thể sinh ra lời giải không hợp lệ Ví dụ, nếu như không
có đường đi nối trực tiếp thành phố i và thành phố j thì biểu diễn những lời giải có đường đi từ i đến j là không hợp lệ Ta có thể xử lý bằng cách gán một giá trị chi phí rất lớn cho đường đi từ i đến j
2.3.2.1.4 Mã hóa cây
Cách mã hóa theo cây là cách thường được dùng trong lập trình di truyền hay các bài toán có tính chất logic
Ví dụ bài toán xấp xỉ hàm: Cho trước các giá trị đầu vào Hãy tìm biểu thức thành lập
từ các đầu vào trên sao cho giá trị thu được của biểu thức là gần với giá trị ta mong muốn nhất, thông thường là các cực trị (ví dụ như là lớn nhất chẳng hạn)
Khi đó một lời giải có thể cho bài toán có các đầu vào là 6 9 3 có thể là 6 * 9/3 Biểu thức này có thể biểu diễn bằng cây như sau
Trang 28Hình 2.3 Mã hóa cây
2.3.2.2 Toán tử chọn lọc
Toán tử chọn lọc có nhiệm vụ lựa chọn ngẫu nhiên từ quần thể 2 cá thể để đem lai ghép sinh cá thể cho quần thể mới Sự lựa chọn phải thỏa mãn điều kiện là xác suất được lựa chọn của một cá thể phải tỉ lệ với độ thích nghi của cá thể đó Sau đây là một
số phương pháp phổ biến:
2.3.2.2.1 Phương pháp chọn lọc theo bánh xe Roulette (Roulette wheel selection)
Phục vụ quá trình chọn lọc có các thông số sau :
Tính tổng độ thích nghi của cả quần thể : F =
1
( )
n
i i
f v
, n là dân số của quần
thể
Tính xác suất chọn pi cho mỗi cá thể vi : p i = f(v i )/F
Tính vị trí xác suất q i của mỗi cá thể : q i=
1
i j j
p
Cơ chế lựa chọn theo bánh xe Roulette được thực hiện bằng cách quay bánh xe
Roulette n lần nhằm tạo n vị trí chọn ngẫu nhiên Mỗi lần quay để chọn cá thể tiến
Trang 29 Nếu rq1 thì cá thể v1 được chọn, ngược lại thì chọn cá thể thứ i (2 i n) sao
cho q i1 r q i
Ta có thể hình dung cơ chế này như sau: Có một hình tròn được chia làm n phần, mỗi
phần hình quạt sẽ tương ứng với một cá thể Độ lớn của hình quạt đó tỉ lệ với độ thích nghi của cá thể Sau đó ta sẽ sinh một vị trí ngẫu nhiên nằm trên đường tròn Vị trí này nằm trên hình quạt nào thì cá thể tương ứng với hình quạt đó được sẽ được lựa chọn
Chromos ome1 Chromos ome2 Chromos ome3 Chromos ome4
Hình 2.4 Phương pháp chọn lọc theo bánh xe Roulette
Rõ ràng phương pháp này thỏa mãn tính chất xác suất được chọn tỉ lệ với độ thích nghi Ngoài ra, nó còn cho phép một cá thể có thể được chọn nhiều lần Phương pháp chọn lọc theo bánh xe Roulette hoạt động tốt khi quần thể có kích thước lớn Vì với quần thể có kích thước nhỏ thì số lần thực hiện vòng quay nhỏ nên sự phân bố của các số ngẫu nhiên sinh ra sẽ không được đều
2.3.2.2.2 Chọn lọc theo cơ chế lấy mẫu toàn phần ngẫu nhiên (Stochastic universal sampling)
Giả sử các cá thể đều đã được xác định độ thích nghi và được sắp xếp ngẫu
nhiên Ta cũng hình dung quần thể như là một hình tròn được chia làm n phần tương ứng với n cá thể, độ lớn của các phần cũng tương ứng tỉ lệ với độ thích nghi của các cá
thể
Trang 30Ta lại hình dung ở ngay bên ngoài hình tròn đó có một vòng tròn bao quanh,
trên vòng tròn bao này có n điểm chia phân bố cách đều nhau
Ta “quay” vòng tròn bao này nhằm tạo ra một vị trí ngẫu nhiên của nó bao xung
quanh hình tròn bên trong Khi đó, n điểm chia trên vòng tròn bao sẽ chỉ vào các phần hình quạt của hình tròn bên trong Một cá thể sẽ được chọn k lần nếu phần hình quạt tương ứng với nó có k điểm chia chỉ vào
Phương pháp lựa chọn trên tỏ ra khá hay khi thỏa mãn điều kiện cơ bản của chọn lọc là ngẫu nhiên và xác suất chọn tỉ lệ với độ thích nghi Ngoài ra nó còn có thêm tính chất là không thiên vị (unbiased), cho phép khắc phục được nhược điểm của phương pháp bánh xe Roulette đối với những quần thể kích thước dân số nhỏ
Tuy nhiên nó vẫn có hạn chế là áp lực chọn lọc sẽ giảm sau một vài thế hệ do sự khác biệt trong độ thích nghi giữa các cá thể bị thu hẹp
2.3.2.2.3 Chọn lọc theo xếp hạng (rank selection)
Chọn lọc xếp hạng cho phép duy trì áp lực chọn lọc qua các thế hệ ngay cả khi
độ thích nghi của các cá thể khác biệt nhau không nhiều Phương pháp chọn lọc xếp hạng tiến hành như sau:
Sắp xếp các cá thể theo thứ tự giảm dần của độ thích nghi
Đặt lại độ thích nghi cho tất cả các cá thể theo nguyên tắc: cá thể có độ thích
nghi tốt nhất ban đầu thì độ thích nghi mới sẽ là n (n là dân số quần thể) Cá thể
có độ thích nghi ban đầu xếp ở vị trí thứ i thì độ thích nghi mới sẽ là n i 1;
Áp dụng các phương pháp khác như chọn lọc theo bánh xe Roulette hoặc chọn lọc theo cơ chế lấy mẫu toàn phần ngẫu nhiên đối với các cá thể trong quần thể
2.3.2.2.4 Chọn lọc theo thể thức giao đấu (tournament selection)
Cho trước một hằng số thiên vị giao đấu là K với 0 < K < 1 Chọn lọc theo giao
đấu diễn ra như sau:
Chọn ngẫu nhiên từ quần thể 2 cá thể bất kì
Trang 31 Tạo một số ngẫu nhiên r thuộc khoảng (0,1]
Nếu r > K thì cá thể có độ thích nghi lớn hơn sẽ được chọn vào quần thể trung
gian
Nếu r K thì chọn cá thể có độ thích nghi nhỏ hơn
Trường hợp 2 cá thể có độ thích nghi bằng nhau thì chọn ngẫu nhiên một trong
2 cá thể đó
Đưa 2 cá thể trở lại quần thể ban đầu
Lặp lại quá trình lựa chọn từ bước thứ nhất cho đến khi có đủ n cá thể trong
quần thể trung gian
Cách chọn lọc này có ưu điểm là dễ tạo ra sự đa dạng của quần thể mới
2.3.2.3 Toán tử lai ghép
2.3.2.3.1 Lai ghép K điểm cắt (K – point crossover)
Đây là phương pháp thường sử dụng cho các bài toán mã hóa dưới dạng xâu có tính trực quan và dễ áp dụng
Chọn ngẫu nhiên K vị trí cắt khác nhau trên 2 cá thể ban đầu để xác định những
vùng sẽ tiến hành lai ghép
Gọi Pik là đoạn nằm giữa vị trí cắt thứ k – 1 và vị trí cắt thứ k trên xâu biểu diễn
lời giải của cá thể ban đầu thứ i (k = 1, 2, , K+1; i = 1, 2) Như vậy P iK1 sẽ là
đoạn nằm sau vị trí cắt thứ K trên xâu biểu diễn lời giải của cá thể ban đầu thứ i
Tạo con thứ nhất: con thứ nhất sẽ được ghép từ các đoạn P 1 j với j lẻ và các đoạn
P2h với h chẵn Tức là ta sẽ thu được P11 – P22 – P13 – P24 – P15 – … P1K – P2 K+1 (giả sử K lẻ)
Tạo con thứ hai: con thứ 2 sẽ được ghép từ các đoạn P2j với j lẻ và các đoạn P 1h
với h chẵn Tức là ta sẽ thu được P21 – P12 – P23 – P14 – P25 – … P1K – P2 K+1
(giả sử K chẵn)
Thông thường phương pháp lai ghép theo điểm cắt có K = 1 hoặc 2
Trang 32Ví dụ: Lai ghép một điểm cắt với hai cá thể được lựa chọn lai ghép
2.3.2.3.2 Lai ghép đồng bộ (uniform crossover)
Trong lai ghép đồng bộ sử dụng mặt nạ lai ghép (crossover mask) Việc lai ghép
sẽ thực hiện sao chép gen tương ứng từ bố hoặc mẹ sang con tùy thuộc vào mặt nạ lai ghép ngẫu nhiên Nếu có “1” trong mặt nạ lai ghép thì gen được sao chép từ bố và nếu
có “0” trong mặt nạ thì gen được sao chép từ mẹ Trao đổi vai trò bố mẹ và lặp lại quá trình lai ghép như trên ta sẽ thu được con thứ hai Với mỗi cặp bố mẹ khác nhau sẽ có một nặt nạ sinh ngẫu nhiên khác nhau Do đó, con cái sinh ra sẽ là sự pha trộn các gen của cha mẹ Số điểm lai ghép ảnh hưởng có thể không cố định nhưng trung bình có
khoảng L/2, với L là chiều dài NST
Dưới đây là hình ảnh lai ghép một cặp cha mẹ với mặt nạ sinh ngẫu nhiên cho trước để sinh ra một NST con Để sinh ra NST con thứ hai, ta hoán đổi vai trò của bố
và mẹ
Hình 2.5 Lai ghép đồng bộ
Trang 33Lai ghép đồng bộ giống như lai ghép theo điểm cắt ở chỗ áp dụng tốt cho những phương pháp biểu diễn lời giải dưới dạng xâu
2.3.2.3.3 Lai ghép theo thứ tự (order – based crossover)
Đối với phương pháp biểu diễn lời giải bằng hoán vị, các phương pháp lai ghép
đề cập ở những mục trước đều có nhược điểm là có thể sinh ra những con cháu biểu diễn lời giải không hợp lệ Vì thế ta cần một thủ tục để hiệu chỉnh lời giải sau lai ghép hoặc một số toán tử lai ghép có thể khắc phục được vấn đề này Phương pháp lai ghép theo thứ tự là một ví dụ, nó được tiến hành như sau:
Chọn 2 vị trí lai ghép ngẫu nhiên xác định vị trí đầu và cuối của vùng lai ghép
Tạo con thứ nhất Sao chép toàn bộ nội dung của vùng lai ghép trên cá thể cha
mẹ thứ nhất xuống vị trí tương ứng trên con thứ nhất Với những gen không nằm trong vùng lai ghép ta sắp xếp chúng theo thứ tự xuất hiện của chúng trong
cá thể cha mẹ thứ 2 và sau đó lần lượt sao chép chúng vào con thứ nhất bắt đầu
từ vị trí ngay sau vị trí lai ghép thứ 2 Nếu đi hết độ dài xâu biểu diễn lời giải thì
ta quay lại vị trí đầu tiên
Tạo con thứ 2 Con thứ 2 được tạo theo cách tương tự con thứ nhất trong đó 2 cá
thể cha mẹ được hoán đổi vai trò cho nhau
Hình 2.6 Minh họa phép lai ghép theo thứ tự
Trang 34 Chọn một (hoặc một số) vị trí ngẫu nhiên để tiến hành đảo bit
Lật giá trị của bit tại vị trí đã chọn
Thường áp dụng cho mã hóa hoán vị và cách tiến hành cũng khá đơn giản Ví
dụ sau đây là thủ tục đổi chỗ 3 gen
Chọn ngẫu nhiên 3 vị trí xác định 3 gen sẽ đổi chỗ
Đổi vị trí của các gen: gen thứ ba sẽ nằm ở vị trí của gen thứ hai, gen thứ hai sẽ nằm ở vị trí của gen thứ nhất, gen thứ nhất sẽ nằm ở vị trí của gen thứ ba
Ví dụ:
Hình 2.7 Phép toán đột biến đổi chỗ
Giá trị 9 nằm ở vị trí của giá trị 5, giá trị 5 nằm ở vị trí của giá trị 2 và giá trị 2 nằm ở
vị trí của giá trị 9
Trước đột biến : 1 2 3 4 5 6 7 8 9 Sau đột biến : 1 5 3 4 9 6 7 8 2
Trang 352.3.2.4.3 Phép đổi giá trị
Áp dụng chủ yếu cho mã hóa theo giá trị, được tiến hành như sau:
Chọn ngẫu nhiên một số gen để đổi giá trị
Gán lại các giá trị ngẫu nhiên (nhưng nằm trong miền giá trị cho phép) cho các gen đó
Ví dụ:
Hình 2.8 Phép toán đột biến đổi giá trị
Biến đổi giá tị 2.6 thành 5.1 và 1.9 thành 1.0
2.3.2.4.4 Phép đảo đoạn
Áp dụng được cho nhiều cách mã hóa khác nhau
Chọn 2 vị trí ngẫu nhiên xác định đầu và cuối của đoạn gen sẽ đảo
Xếp lại các gen trong đoạn đó theo trật tự ngược với trật tự ban đầu
Ví dụ:
Hình 2.9 Đột biến đảo đoạn 2.3.2.5 Một số tham số quan trọng khác
2.3.2.5.1 Giữ lại cá thể ưu tú (Elitism)
Để tránh hiện tượng “thoái hóa nòi giống”, tức là hiện tượng con cháu sinh ra kém hơn bố mẹ chúng Người ta thường đưa luôn một vài cá thể tốt nhất trong thế hệ
Trước đột biến : 2.6 8.7 1.9 1.9 0.5 4.3 Sau đột biến : 5.1 8.7 1.9 1.0 0.5 4.3
Trước đột biến : 1 1 0 1 0 0 0 0 Sau đột biến : 1 1 0 0 1 0 0 0 Trước đột biến : A C E G J F B D H I Sau đột biến : A E C G J F B D H I
Trang 36này sang thế hệ kế tiếp, không qua tác động của các toán tử di truyền Việc này giúp bảo tồn những cá thể ưu tú và duy trì hạt giống tốt cho thế hệ sau Kỹ thuật này được gọi là Elitism Kỹ thuật elitism rất hay được áp dụng trong thuật toán di truyền
2.3.2.5.2 Chiến lược thay thế quần thể
Một vấn đề khác nảy sinh trong quá trình thực hiện thuật toán là sau khi con cháu được sinh ra (đã trải qua lai ghép và đột biến) thì chúng sẽ được đưa vào quần thể mới Do dân số của quần thể là cố định nên sẽ có những cá thể phải nhường chỗ cho chúng Việc lựa chọn phương thức thay thế cá thể trong quần thể cũ bằng những cá thể mới tạo ra 2 dạng thuật toán di truyền
Thuật toán di truyền có tính thế hệ (generational GA): các cá thể con cháu sẽ
được sinh ra và đưa vào một quần thể trung gian Sau khi quần thể trung gian có
đủ n cá thể rồi thì ta thay hoàn toàn quần thể cũ bằng quần thể trung gian này
Phương pháp này thể hiện tính “thay thế quyết liệt” trong quá trình chuyển đổi thế hệ từ quần thể này sang quần thể khác, và nếu không có kỹ thuật elitism hỗ trợ thì sẽ có khả năng bị mất mát những cá thể ưu tú Tuy nhiên nó có ưu điểm
là sự đa dạng trong kiểu gen qua các thế hệ, điều này đồng nghĩa với việc không gian tìm kiếm được khai phá rộng hơn
Thuật toán di truyền có tính bền vững (steady-state GA): các cá thể con cháu
sinh ra sẽ thay thế những cá thể có độ thích nghi kém nhất trong quần thể Phương pháp này cho phép duy trì được những cá thể tốt qua các thế hệ nhưng
có nhược điểm là do các cá thể có độ thích nghi kém “không có chỗ đứng” trong quần thể mới nên sẽ bị loại bỏ dứt khoát, thế nhưng trong những cá thể đó lại chứa đựng những “vật chất di truyền” xác định những thông số của lời giải tối
ưu Do đó, khi những cá thể này bị loại, những vật chất đó cũng không còn Vì vậy ta có thể chỉ tìm được những cực trị địa phương
Trang 372.3.2.5.3 Chiến lược tìm kiếm cực trị địa phương
Một trong những yếu tố quyết định sự thành công của thuật toán di truyền là việc khảo sát đa dạng trên không gian tìm kiếm và rà soát kỹ những vùng tiếp cận được Tức là ta cần phải đảm bảo những vùng “hứa hẹn” chứa những lời giải tốt sẽ được khảo sát tới, và sau khi tiếp cận những vùng đó ta phải có cách để tìm kiếm điểm tối ưu của vùng đó Việc lựa chọn hướng tiếp cận những vùng “hứa hẹn” được căn cứ vào dấu hiệu là độ thích nghi của các cá thể và kết hợp với những toán tử đột biến, lai ghép cho phép tạo những vùng tiềm năng mới Việc rà soát trên những vùng đã tiếp cận được là nhiệm vụ của những thủ tục tìm kiếm cực trị địa phương Do tính ngẫu nhiên, xác suất để những lời giải ta đang có rơi đúng vào những vị trí tốt nhất của những vùng “hứa hẹn” (điểm cực trị địa phương của không gian lời giải) là rất thấp, nhưng xác suất chúng nằm trong vùng lân cận của những cực trị này lại khá cao Nếu
ta không tìm cách dịch chuyển những điểm đã có đến những vị trí cực trị này thì ta đã lãng phí cơ hội có được những lời giải tốt (và nếu may mắn có thể ta lại gặp được lời giải tối ưu) Ngoài ra nếu không có chiến lược để rà soát những vùng đã tiếp cận được thì quá trình tiến hóa của thuật toán di truyền thực chất là một quá trình “chạy nhảy” ngẫu nhiên trong không gian tìm kiếm mà không có sự tận dụng những thông tin đã tích lũy được và thuật toán di truyền sẽ mất đi tính hiệu quả của nó
Có nhiều cách khác nhau để tìm kiếm cực trị địa phương ở những vùng đã tiếp cận được Dưới đây là một cách tìm kiếm cực trị địa phương cơ bản nhất
Bước 1: Xuất phát từ một điểm “có chất lượng” mà ta đã có, chọn điểm này làm điểm hiện tại
Bước 2: Xem xét toàn bộ các điểm thuộc vùng lân cận của điểm đó
Bước 3: Chọn điểm lân cận có chất lượng tốt nhất trong số những điểm lân cận đó làm điểm hiện tại mới nếu như nó tốt hơn điểm hiện tại
Bước 4: Lặp lại hai bước 2 và 3 cho đến khi tất cả các điểm lân cận đều có chất lượng không hơn điểm hiện tại
Trang 38Bước 5: Trả về điểm hiện tại làm cực trị cho vùng đang khảo sát
Thủ tục tìm kiếm cực trị ở trên có tên gọi là kỹ thuật leo đồi (hill climbing), là một kỹ thuật hay được sử dụng trong thuật toán di truyền
Trang 39Chương 3
CÁC THUẬT TOÁN GIẢI BÀI TOÁN PHỦ ĐỈNH
Đối với các bài toán thuộc lớp NP – khó nói chung, việc tìm được lời giải chính xác cho bài toán thì đòi hỏi thời gian là hàm mũ đối với kích thước dữ liệu đầu vào của bài toán Hiện nay vẫn chưa tìm ra được thuật toán hiệu quả để giải các bài toán loại này Thay vào đó người ta phải sử dụng các phương pháp giải gần đúng để có thể thu được lời giải chấp nhận được trong thời gian đa thức Như vậy, với bài toán phủ đỉnh nói riêng và lớp bài toán NP – khó nói chung, có hai phương pháp để giải quyết đó là
sử dụng các thuật toán giải chính xác hoặc sử dụng thuật toán giải gần đúng Các thuật toán chính xác sẽ đảm bảo tìm được lời giải đúng hay tối ưu, tuy nhiên không gian tìm kiếm về nguyên tắc là phải đầy đủ, do đó thời gian thực hiện là hàm mũ đối với dữ liệu đầu vào Trong khi đó, thuật toán giải xấp xỉ không đảm bảo đưa ra được lời giải đúng nhưng độ chính xác của các lời giải thường đủ để đáp ứng được yêu cầu trong các ứng dụng và quan trọng là thời gian tìm ra lời giải là chấp nhận được
3.1 Các trường hợp giải đúng
Đối với một số dạng đồ thị đặc biệt có thể xây dựng thuật toán đúng trong thời gian đa thức để giải bài toán phủ đỉnh Dưới đây ta xét một số trường hợp đặc biệt đó
Trang 403.1.1 Đồ thị hai phía
Định nghĩa: Đơn đồ thị G( , )V E được gọi là 2 phía nếu tập đỉnh của nó có thể phân
hoạch thành 2 tập V1 và V2 sao cho mỗi cạnh của đồ thị luôn có một đầu mút thuộc V1
và đầu mút kia thuộc V2 Ký hiệu G = ( V1 V2 , E)
Có thể tìm được phủ đỉnh nhỏ nhất của đồ thị hai phía dựa trên lời giải của bài toán cặp ghép cực đại Định lý của Konig chỉ ra rằng trong đồ thị hai phía kích thước của phủ đỉnh nhỏ nhất bằng kích thước của cặp ghép cực đại [7] Như vậy, thời gian tìm phủ đỉnh nhỏ nhất của đồ thị hai phía là thời gian đa thức
3.1.2 Đồ thị nhiều phía
Đồ thị nhiều phía là trường hợp tổng quát của đồ thị hai phía, là trường hợp đồ
thị chia làm nhiều tầng V = V1 V2 V n Trong đó không có cạnh nối giữa các
đỉnh nằm trong cùng một tầng Các đỉnh thuộc V i chỉ có cạnh nối với các đỉnh thuộc V i
– 1 và V i + 1
Thuật toán giải áp dụng cho đồ thị dạng này tương tự thuật toán cho đồ thị hai phía
3.1.3 Cây
Trong trường hợp đồ thị G là cây thì ta cũng có thuật toán đưa ra kết quả tối ưu
cho bài toán Thuật toán được đưa ra như sau:
Khởi tạo:
V’: là tập đỉnh lưu phủ đỉnh nhỏ nhất
L: là tập đỉnh lưu các lá của cây hiện tại
P: là tập đỉnh lưu các nút cha của các đỉnh trong L
Thuật toán:
Bước 1 Duyệt cây G, lấy ra L là tập lá của G
Bước 2 Từ L, xác định tập P = {p i | p i là cha của ít nhất một lá thuộc L}
Bước 3 V’ = VP ;
// bổ sung các đỉnh được chọn vào tập phủ đỉnh