Tải bản đầy đủ (.pdf) (107 trang)

Giải thuật di truyền giải bài toán phủ đỉnh nhỏ nhất

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.23 MB, 107 trang )

BỘ 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


MỤ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

1


2.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

2


4.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

3


LỜ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.

4


LỜ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

5


Danh 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

2

IS

Independent Set

Tập độc lập

3

Clique

Clique



4

GA

Genetic Algorithm


Thuật toán di truyền

5

NST

6

PTAS

7

FPTAS

8

ILP

Integer Linear Problem

9

LP

Linear Problem

Bài toán quy hoạch tuyến tính

10


VC

Vertex Cover

Phủ đỉnh

11

LP

Linear Problem

Bài toán quy hoạch tuyến tính

12

Elitism

Elitism

Giữ lại cá thể tối ưu

13

SetCover

SetCover

Bài toán phủ tập


14

HVX

Heuristic Vertex Crossover Operator Toán tử lai ghép heuristic

15

LOT

Local optimization technique

16

OPT

17

ALG

18

TSP

Nhiễm sắc thể
Polynomial time Approximation

Lược đồ xấp xỉ thời gian đa

Scheme


thức

Fully Polynomial time

Lược đồ xấp xỉ thời gian đa

Approximation Scheme

thức đầy đủ
Bài toán quy hoạch tuyến tính
nguyên

Tối ưu hóa cục bộ
Chất lượng lời giải tối ưu có
thể đạt được
Chất lượng lời giải tối ưu của
thuật toán xấp xỉ

Traveling Saleman Problem

6

Bài toán người du lịch


Danh 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

7


Danh 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

8


Hì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

9


LỜ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.

10


Luậ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

11


nay, 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.

12


Chương 1
GIỚI THIỆU BÀI TOÁN

1.1. Bài toán phủ đỉnh nhỏ nhất

Bài toán phủ đỉnh là một trong 21 bài toán NP – đầy đủ cổ điển trong lý thuyết
khoa học máy tính được đưa ra bởi Karp vào năm 1972. Đây là bài toán tối ưu trên đồ
thị. Trong phần này ta giới thiệu bài toán phủ đỉnh và chứng minh nó thuộc lớp NP –
khó.

1.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,..., n và tập cạnh
E. Một phủ đỉnh của đồ thị G là tập con các đỉnh V’ của V sao cho mỗi cạnh của đồ thị
G luôn có một đầu mút thuộc V’.
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

13


P2. 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 S  V có kích thước k. Các
mệnh đề sau đây là tương đương:

14


(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 đó
E  (u, v) : u , v  V , u  v và (u, v) 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].

(a)

(b)

(c)

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 V  V '  w, z

15


1.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].

16


Chươ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) .

17


Ở đâ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.

18


2.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 pc
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à pm đượ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

19


trườ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);
Tạo lập P(t+1) từ P(t);
t = t+1;
end;
Trả về cá thể tốt nhất trong P(t).
End;

20


Trong 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

21


lý 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 pm và xác suất lai ghép pc 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 pm và pc 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ì pm và pc 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ì
pm và pc 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.

22


2.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.

23


Từ đó 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.

24


×