Tải bản đầy đủ (.docx) (31 trang)

TÌM HIỂU CÁC THUẬT GIẢI METAHEURISTICS ĐỂ GIẢI BÀI TOÁN CÂY STEINER

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 (267.84 KB, 31 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
PHÒNG ĐÀO TẠO SĐH-KHCN&QHĐN
BÀI THU HOẠCH MÔN
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
TÌM HIỂU CÁC THUẬT GIẢI
METAHEURISTICS ĐỂ GIẢI
BÀI TOÁN CÂY STEINER
MÃ SỐ LỚP : CH08
HỌC VIÊN THỰC HIỆN : HÀ THANH NHẤT
MÃ SỐ HỌC VIÊN : CH1301104
GIẢNG VIÊN PHỤ TRÁCH : PGS.TS ĐỖ VĂN NHƠN
TP. HỒ CHÍ MINH, THÁNG 10/2014
LỜI CẢM ƠN
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
Em xin chân thành cảm ơn sâu sắc đến PGS.TS ĐỖ VĂN NHƠN, người thầy đã
truyền đạt cho em những kiến thức về thuật toán và phương pháp giải quyết vấn
đề khi em tham gia khóa học.
Xin được cảm ơn các anh/chị học cùng khóa đã đóng góp và chia sẻ tài liệu về
môn học, giúp em hoàn thành tốt bài thu hoạch này.
MỤC LỤC
LỜI NÓI ĐẦU
Bài toán tối ưu tổ hợp là bài toán có độ phức tạp cao và được phân loại thuộc
lớp NP khó. Việc tìm ra lời giải tối ưu cho các bài toán này cho các hệ thống tính
toán song song lớn nhất cũng không thể hoàn thành được trong giới hạn thời gian
cho phép. Vì vậy các kỹ thuật heuristic cho việc giải các bài toán tổ hợp theo
hướng xấp xỉ đã được phát triển để tìm ra các lời giải gần tối ưu (hay xấp xỉ)
trong giới hạn thời gian cho phép.
Metaheuristics hợp nhất các khái niệm từ nhiều lĩnh vực khác nhau như di
truyền học, sinh vật học, trí tuệ nhân tạo, toán học và vật lý… Có thể kể một số
thuật giải metaheuristics như:
 Giải thuật luyện thép (SA): xuất phát từ phương thức xác suất và kỹ thuật


luyện bao gồm việc nung và điều khiển làm nguội các kim loại để đạt được
trạng thái năng lượng nhỏ nhất.
 Giải thuật di truyền (GA): dựa trên ý tưởng từ cơ chế di truyền trong sinh
học và tiến trình tiến hóa trong cộng đồng các cá thể của một loài.
 Giải thuật đàn kiến (ACO): dùng chiến lược của kiến trong thế giới thực để
giải bài toán tối ưu.
Trong phạm vi bài thu hoạch này, em xin trình bày các giải thuật có hướng tiếp
cận dựa trên tập cá thể (GA và ACO) để giải quyết bài toán cây Steiner.
Bài toán Steiner là thuộc lớp bài toán NP khó và trên thực tế chưa có tác giả
nào tìm được thuật toán hiệu quả để nó một cách chính xác. Nó có rất nhiều ứng
dụng trong thiết kế mạch tích hợp cỡ lớn, thiết kế mạng, thiết kế kiến trúc xây
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
dựng … Chi tiết về bài toán cũng như các giải pháp sẽ được em trình bày trong
bài thu hoạch này.
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
1 GIỚI THIỆU BÀI TOÁN CÂY STEINER
Có rất nhiều phát biểu về bài toán cây Steiner. Dưới đây là hai phát biểu theo lý
thuyết về hình học và lý thuyết về đồ thị.
1.1 Phát biểu bài toán Steiner trên mặt phẳng
Cho ba điểm trên mặt phẳng, tìm một điểm thứ tư sao cho tổng khoảng cách
từ điểm này tới ba điểm đã cho có giá trị nhỏ nhất.
Bài toán này của Fermat sau đó đã được Heinen giải vào năm 1834. Tuy nhiên,
phải mất hơn một thế kỷ, chỉ sau khi Courant và Robbins cho xuất bản cuốn sách
mang tên “What is Mathematics” thì bài toán của Fermat và các biến thể của nó
mới được biết đến dưới tên bài toán Steiner như một sự ghi nhớ những đóng góp
to lớn của nhà bác học Jacob Steiner đối với nền toán học. Từ đó đến nay, rất
nhiều phiên bản khác nhau của bài toán đã ra đời để đáp ứng nhu cầu ứng dụng
trên thực tế.

Một cách tổng quát, bài toán cây Steiner được phát biểu như sau:
Cho một tập điểm P, tìm phương án nối các điểm này lại với nhau sao cho
chi phí để nối các điểm này là nhỏ nhất. Trong quá trình nối có thể bổ sung
những điểm cần thiết với số lượng không hạn chế để đạt được yêu cầu của bài
toán.
Vào những năm 1960, Melzak là người đầu tiên đưa ra một giải thuật có độ
phức tạp hàm mũ để giải bài toán trên mặt phẳng. Tuy giải thuật của Melzak
không mang giá trị thực tế cao nhưng sự xuất hiện của một giải thuật hữu hạn
cho bài toán Steiner cùng với một số công trình nghiên cứu rất có giá trị của hai
tác giả Gilbert và Pollack vào cùng thời gian đó đã là một “cú hích” tác động
mạnh tới cộng đồng những nhà toán học nghiên cứu nói chung và những người đi
sâu về lĩnh vực tối ưu hóa nói riêng.
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
1.2 Phát biểu bài toán Steiner trên đồ thị
Cho G = (V, E) là một đồ thị vô hướng, mỗi cạnh e ∈ E được gán với một trọng
số thực không âm. N là một tập con các đỉnh của đồ thị gọi là tập các đỉnh kết
thúc.
Một cây T của đồ thị G được gọi là cây Steiner nếu nó chứa tất cả các đỉnh kết
thúc, nghĩa là N ⊆ V(T). Các đỉnh thuộc V \ N (được gọi là các đỉnh không kết
thúc) cũng có thể xuất hiện trong T, nếu thuộc T chúng được gọi là nút Steiner.
Bài toán cây Steiner trên đồ thị được phát biểu như sau:
Tìm cây Steiner có trọng số nhỏ nhất trong tất cả các cây Steiner của đồ thị.
Cây T như vậy được gọi là cây Steiner nhỏ nhất.
Bài toán này thuộc lớp NP khó. Do vậy, một thuật toán đa thức để giải bài toán
là không tồn tại ngoại trừ P = NP.
Hai trường hợp riêng của bài toán Steiner giải được với điều kiện:
 Tất cả các đỉnh của đồ thị đều là đỉnh kết thúc (1)
 Chỉ có 2 đỉnh kết thúc (2)
Với bài toán 1: lời giải chính là cây khung nhỏ nhất của đồ thị có thể tìm được

nhờ thuật toán Kruskal.
Với bài toán 2: lời giải tối ưu chính là đường đi ngắn nhất giữa hai đỉnh kết
thúc trong đồ thị có thể tìm được nhờ thuật toán Dijsktra.
1.3 Một số ứng dụng của bài toán
1.3.1 Bài toán truyền thông đa hướng
Cho một mạng máy tính được biểu diễn bởi một đồ thị trọng số vô hướng G (V,
E, f), một tập con T các đỉnh của V được gọi là một nhóm truyền thông và một
điểm s được gọi là một máy nguồn.
Bài toán yêu cầu tìm một topogoly nối tất cả các máy trong nhóm truyền
thông T

s sao cho tổng số các kênh nối (trong một số trường hợp có thể là
tổng độ dài các kênh nối) cần sử dụng là nhỏ nhất mà vẫn thỏa mãn các ràng
buộc của mạng như tốc độ đường truyền, dung lượng băng thông …
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
1.3.2 Bài toán kết nối nhóm
Cho một đồ thị vô hướng G(V, E) và tập các đỉnh T
1
, T
2
, …… T
n
⊂ V.
Bài toán yêu cầu tìm một đồ thị con G

của G thỏa mãn hai điều kiện sau:
- Mỗi tập con T
i
, i = 1…n phải có ít nhất một điểm trong G.

- Độ dài của đồ thị G

phải đạt cực tiểu.
1.3.3 Bài toán Steiner nhiều pha
Hơi khác so với bài toán kết nối nhóm, bài toán Steiner nhiều pha yêu cầu phải
chứa được tất cả các tập đỉnh T
1
, T
2
, … T
n
.
Cho một đồ thị G(V, E) và tập các đỉnh T
1
, T
2
, …… T
n
⊂ V. Gọi S
1
, S
2
, … S
n

các đồ thị con liên thông của T
1
, T
2
, … T

n
.
Bài toán đặt ra yêu cầu tìm một đồ thị có giá trị cực tiểu và chứa tất cả các
đồ thị liên thông.
1.3.4 Bài toán mạng Steiner nhiều pha
Cho một đồ thị G(V, E) và các tập con của V: X
1
, Y
1
, X
2
, Y
2
… X
n
, Y
n
với X
i
∩ Y
i
= ∅.
Bài toán yêu cầu tìm một đồ thị con G

của G thỏa mãn hai điều kiện:
- Với mỗi i = 1…n, G

chứa một cây Steiner S
i
của X

i
.
- Các điểm Steiner của S
i
chỉ được lấy từ Y
i
.
1.3.5 Bài toán giật giải
Cho một đồ thị G(V, E), xuất phát từ một phương án nào đó, bài toán sẽ kết nạp
một đỉnh của G vào phương án này, với mỗi một điểm mới được kết nạp vào,
một giá trị k = v (độ dài của các cạnh vừa kết nạp vào phương án) sẽ được cộng
vào hàm mục tiêu của phương án. Mục tiêu tối ưu của bài toán này là làm cực đại
giá trị hàm mục tiêu của phương án cuối cùng. Trong công thức tính k ở trên, v là
một hằng số được gắn với mỗi đỉnh trên đồ thị G.
1.3.6 Thiết kế mạch VLSI
Trong bước thiết kế vật lý của vi mạch VLSI, pha đi dây bao gồm việc xác định
sơ đồ nối dây cho các điểm nối của từng khối hay từng cổng trên chip. Một mạng
trên chip là tập hợp các điểm cần phải nối với nhau, thường bao gồm một điểm
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
nguồn và nhiều điểm đích. Trong việc đi dây, sơ đồ kết nối được đặc tả cho một
số lượng lớn các mạng. Kết nối thường được thực hiện trên một mạng cùng lúc.
Mỗi phương án kết nối cho một mạng đơn là một cây Steiner phủ các điểm nối.
Nhiều yêu cầu tối ưu đặt ra cho việc nối mạng phụ thuộc vào chức năng của từng
mạng. Việc thiết kế VLSI, các đường nối chỉ là đường ngang dọc trên bảng
mạch. Bài toán tối ưu chiều dài dây nối được đưa về một biến thể của bài toán
cây Steiner, đó là bài toán cây Steiner thẳng góc trên đồ thị lưới.
1.3.7 Bài toán phát sinh loài
Sự phát sinh loài được biểu diễn bằng một cây tiến hóa. Nghiên cứu xây dựng
cây phát sinh loài là một trong những bài toán tính toán cơ bản trong sinh học. Ta

quan tâm ở đây tới sự phân loài được mô tả bởi các tính trạng mà chúng thể hiện
ra từ tập các đặc tính. Dữ liệu trên được mô tả dưới dạng bảng nhị phân, phần tử
(i, j) nhận giá trị 0 hoặc 1 tương ứng với loài i không có tính trạng j hoặc có tính
trạng j. Sự khác biệt giữa hai loài được đo bằng khoảng cách Hamming giữa hai
vector tính trạng.
Bài toán đặt ra là xây dựng cây tiến hóa sao cho sự khác biệt giữa các loài
đạt giá trị nhỏ nhất chính là giải bài toán cây Steiner nhỏ nhất.
Các điểm kết thúc là các vector tính trạng của loài, các nút trung gian bản thân
cũng là các vector nhị phân, chúng nằm trên cạnh nối từ gốc đến lá. Trọng số của
các cạnh đo bằng khoảng cách Hamming.
1.4 Các thuật toán/thuật giải để giải quyết bài toán Steiner
1.4.1 Thuật toán Dreyfus-Wagner
Cho đồ thị vô hướng liên thông G = (V, E), T là tập đỉnh kết thúc của đồ thị.
(G, c, T) là một thể hiện của bài toán, với mọi tập U ⊆ T và x  V(G)\U, ta định
nghĩa:

1
( ) : min{ ( ( ))}p U c E S=
với S
1
là cây Steiner phủ tập U trong G,
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn

2
( { }, ) : min{ ( ( ))}q U x x c E S∪ =
với S
2
là cây Steiner phủ tập U  {x} trong
G có lá là các phần tử của U.

Khi đó với mọi U ⊆ V(G), |U| ≥ 2 và x  V(G) \ U ta có:
( )
( )\
( ) ( { }, ) : min ( { }) (( \ ) { })
( ) ( { }) : min{min( ( ) dist ( , )),
min ( ( { }, ) dist ( , ))}
U U
G
y U
G
y V G U
a q U x x p U x p U U x
b p U x p U x y
q U y y x y

∅≠ ⊂


′ ′
∪ = ∪ + ∪
∪ = +
∪ +
 dist
G
(x, y) là chiều dài đường đi ngắn nhất giữa cặp đỉnh x, y trong G.
Mã giả của thuật toán (sử dụng quy hoạch động)
Input Đồ thị vô hướng liên thông G, trọng số c và tập đỉnh kết thúc T.
Output Trọng số p(T) của cây Steiner nhỏ nhất phủ tập T của đồ thị G.
1 BEGIN
2 Nếu |T| ≤ 1 thì p(T) = 0, kết thúc thuật toán;

3 Tính dist
G
(x,y) và đặt p(x,y) = dist
G
(x,y) cho mọi x, y;
4 for k=2 to |T|-1
5 for (U ⊆ T, |U|=k) và (xV(G)\U)
6 Tính q(U{x}, x) theo công thức (a);
7 endfor;
8 for (U ⊆ T, |U|=k) và (xV(G)\U)
9 Tính p(U{x}) theo công thức (b);
10 endfor;
11 endfor;
12 Trả về p(T);
13 END
Thuật toán Dreyfus-Wagner tính cây Steiner nhỏ nhất có độ phức tạp là O(3
t
n +
2
t
n
2
+ n
3
) với t = | T | và n = |V(G)|.
1.4.2 Các thuật giải metaheuristic
Bài toán cây Steiner là thuộc loại bài toán tối ưu tổ hợp nên việc sử dụng các kỹ
thuật tìm kiếm metaheuristic để tiếp cận giải quyết bài toán sẽ tốt hơn.
Metaheuristic không được đảm bảo về mặt lý thuyết là có thể đưa ra lời giải tối
Trang ||

Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
ưu, nhưng qua những thử nghiệm thực tế, kết quả mà các phép tìm kiếm
metaheuristic mang lại rất khả quan.
Chi tiết về các thuật giải metaheuristic sẽ được trình bày ở phần tiếp theo đây.
2 GIỚI THIỆU VỀ METAHEUTISTIC
Metaheuristic là một cách gọi chung cho các giải thuật heuristic trong việc giải
quyết các bài toán tổ hợp khó. Metaheuristic bao gồm những chiến lược khác
nhau trong việc khám phá không gian tìm kiếm bằng cách sử dụng những
phương thức khác nhau và phải đạt được sự cân bằng giữa tính đa dạng và
chuyên sâu của không gian tìm kiếm. Một cài đặt thành công của metaheuristic
trong một bài toán tổ hợp phải cân bằng giữa sự khai thác được kinh nghiệm thu
thập được trong quá trình tìm kiếm để xác định được những vùng với những lời
giải có chất lượng cao gần tối ưu.
Với độ phức tạp tính toán cao của các bài toán tối ưu tổ hợp cũng như đòi hỏi
về mặt thời gian , việc giải các bài toán này yêu cầu cần phải có những cài đặt
song song hóa hiệu quả của các giải thuật để giải quyết chúng. Song song hóa các
giải thuật metaheuristic phải đạt được hai yêu cầu : đa dạng hóa để khám phá
được nhiều vùng trong không gian tìm kiếm và tăng tốc độ tìm kiếm .
Nhiều mô hình song song đã được đề xuất cho nhiều metaheuristic. Thuật giải
di truyền và đàn kiến đều là các cách tiếp cận dựa trên tập cá thể và vì vậy khá tự
nhiên cho việc xử lý song song.
Trong bài thu hoạch này, em xin trình bày hai giải thuật metaheuristic là: thuật
giải di truyền(GA) và thuật giải đàn kiến (ACO).
3 THUẬT GIẢI DI TRUYỀN
3.1 Lịch sử phát triển
Tính toán tiến hóa được I. Rechenberg giới thiệu vào những năm 1960 trong
công trình “Evolution Stragies” (Những chiến lược tiến hóa). Ý tưởng của ông đã
được các nhà khoa học nghiên cứu phát triến tiếp.
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn

Giải thuật di truyền do John Holland phát minh và được ông phát triển cùng với
các đồng nghiệp và sinh viên. Cuốn sách "Adaption in Natural and Artificial
Systems" (Sự thích nghi trong các hệ tự nhiên và nhân tạo) xuất bản năm 1975 đã
tổng hợp các kết quả của quá trình nghiên cứu và phát triển đó.
Năm 1992, John Koza đã dùng GA để xây dựng các chương trình giải quyết
một số bài toán và gọi phương pháp này là "Genetic Programming" (GP).
Năm 1996, thư viện các hàm C++ cho GA (GALib) đã được Mathew Wall,
trường Đại học Massachussets (Massachusetts Institute of Technology) đưa ra.
Đây là các công cụ sử dụng giải thuật di truyền cho tối ưu hoá các chương trình
có sử dụng sự biểu diễn hay các toán tử di truyền.
Ngày nay giải thuật di truyền 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ó giải thuật hiệu quả để giải.
3.2 Các khái niệm cơ bản
3.2.1 Nhiễm sắc thể (Chromosome)
Nhiễm sắc thể (NST) hay còn gọi là cá thể. Các sinh vật sống đều cấu tạo từ 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 nhiếm sắc thể giống
nhau. Các NST này là một chuỗi các ADN, quy định đặc tính của cả cá thể. 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 tiềm tàng.
3.2.2 Quần thể (Population)
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 giải thuật di truyền ta quan niệm quần thể là một tập các lời giải tiềm
tàng của một bài toán.
3.2.3 Chọn lọc (Selection)
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ó
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn

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, quá trình chọn lọc 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.
3.2.4 Lai ghép (CrossOver)
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 giải thuật 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 mà
có đặc tính mong muốn là tốt hơn thế hệ cha mẹ. Đây là một quá trình xảy ra chủ
yếu trong giải thuật di truyền.
3.2.5 Đột biến (Mutation)
Độ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ó 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 giải thuật di truyền thì 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.
3.2.6 Hàm thích nghi (Fitness Function)
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, không 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á một cá thể hay một lời giải, so với các cá thể khác. Từ đó
mới 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ể.
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
3.3 Mô tả thuật giải
GA được lấy cảm hứng từ Thuyết tiến hóa của Darwin. Lời giải của một bài

toán được giải bằng GA sử dụng quá trình tiến hóa.
Giải thuật bắt đầu bằng một tập các lời giải, được biểu diễn bằng các 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 một 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 từ quần thể mới hay thế hệ con cháu theo độ thích nghi. Chúng càng thích
nghi cao, chúng càng có nhiều cơ hội để tái sinh sản.
[Bắt đầu] 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).
[Thích nghi] Ước lượng độ thích nghi eval(x) của mỗi cá thể x trong quần thể
[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.
[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)
[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
[Đột biến] Với một xác suất đột biến được chọn, biến đổi cá thể mới
[Chấp nhận] Thay con mới vào quần thể
[Thay thế] Sử dụng quần thể mới cho quá trình tiếp theo của thuật toán
[Thử nghiệm] Nếu điều kiện dừng được thoã 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
[Vòng lặp ] Quay lại bước 2
3.4 Điều kiện dừng của thuật giải
Kết thúc theo kết quả: tức là khi giá trị thích nghi của cá thể trong quần thể có
giá trị sai số nhỏ hơn một giá trị ε cho trước thì dừng thuật toán.
Kết thúc dựa trên số thế hệ: khi số lượng tiến hóa của quần thể đến một giới
hạn cho phép thì dừng thuật giải mà không quan tâm đến chất lượng của cá thể
trong quần thể đó như thế nào.
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
Tính theo thời gian: phụ thuộc vào thời gian chạy chương trình được quy định

trước.
Kết hợp nhiều phương pháp khác nhau: kết hợp nhiều điều kiện khác nhau để
dừng thuật toán.
4 THUẬT GIẢI ĐÀN KIẾN
4.1 Lịch sử phát triển
4.1.1 Đàn kiến tự nhiên
Loài kiến là loài sâu bọ có tính chất xã hội, chúng sống thành từng đàn, bởi vậy
có sự tác động lẫn nhau, chúng thạo tìm kiếm thức ăn và hoàn thành những
nhiệm vụ từ kiến chỉ huy. Một điều thú vị trong tìm kiếm thức ăn của vài con
kiến đặc biệt là khả năng của chúng để tìm kiếm đường đi ngắn nhất giữa tổ kiến
và nguồn thức ăn. Trên thực tế, điều dễ nhận thấy có trong suy nghĩ nhưng nhiều
con kiến hầu hết không nhận ra vì chúng không dùng thị giác để tìm kiếm những
đầu mối thức ăn.
Trong quá trình đi giữa tổ và nguồn thức ăn, vài con kiến tích tụ một chất được
gọi là mùi lạ (pheromone). Nếu không có mùi lạ sẵn có, những con kiến di
chuyển ngẫu nhiên, nhưng khi có mặt của mùi lạ này chúng có xu hướng đi theo
mùi lạ.
Trên thực tế, cuộc thí nghiệm của nhà nghiên cứu sinh là những con kiến theo
thuyết tự nhiên thích những con đường được đánh dấu bởi tập hợp nhiều mùi lạ.
Trong quá trình thực hiện, lựa chọn giữa những con đường tìm thấy khác nhau
khi có vài con đường phân cách. Sau đó kiến sẽ lựa chọn xác suất một con đường
qua số lượng mùi lạ: mùi lạ càng nhiều thì sự lựa chọn càng cao.
Bởi vậy, những con kiến đổi hướng theo mùi lạ trên đường đi, chúng được đề
cập như sau: kết quả tìm kiếm thức ăn trong quá trình tăng cường ảnh hưởng từ
sự hình thành của con đường được đánh dấu bởi tập hợp nhiều mùi lạ. Cách tìm
thức ăn này tập trung kiến tìm đường đi ngắn nhất giữa tổ và nguồn thức ăn.
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
Kĩ thuật thế nào tập trung được kiến tới phạm vi con đường ngắn nhất. Ở đó,
không có mùi lạ nào trong môi trường và, khi kiến đến những chỗ giao nhau,

chúng ngẫu nhiên lựa chọn một ngả đường. Tuy nhiên, như kiến đi du lịch, con
đường triển vọng nhất tiếp nhận số lượng mùi lạ nhiều hơn sau vài lần đi. Nhờ
đó, những con đường ngắn hơn, kiến sẽ lựa chọn chúng để tới thức ăn nhanh hơn
và để bắt đầu trở lại hành trình kiếm thức ăn sớm hơn. Từ khi ngả đường ngắn
hơn được chọn mùi lạ tồn tại nhiều hơn, quyết định của kiến có xu hướng tiến về
ngã đường ngắn hơn. Vì thế, lựa chọn con đường nhiều mùi hơn khi kiến trở lại
nhiều hơn ngả đường dài hơn. Kết quả cuối cùng của quá trình này là sự tăng xu
hướng tiến tới ngả đường ngắn và kết thúc, hội tụ lại là con đường ngắn nhất.
Thủ tục sau đó được bổ sung trong môi trường tự nhiên bởi thực tế mùi lạ sẽ bị
bay hơi sau vài lần. Con đường này triển vọng ít dần vì mất dần mùi lạ bởi vì nó
được kiến đi ngày càng ít. Tuy nhiên vài nhà sinh vật học đã nghiên cứu chỉ ra
mùi lạ rất bền, vì thế ít ảnh hưởng của sự bay hơi trên đường đi ngắn nhất của
quá trình tìm kiếm thức ăn.
4.1.2 Hình thành ý tưởng thuật giải từ đàn kiến tự nhiên
Thuật toán ACO lấy ý tưởng từ việc kiếm thức ăn của đàn kiến ngoài thực tế để
giải quyết các bài toán tối ưu tổ hợp. Chúng dựa trên cơ sở một đàn kiến nhân
tạo, chúng được tính toán tìm kiếm thức ăn nhờ mùi lạ nhân tạo.
Cấu trúc cơ bản của thuật toán ACO: trong mỗi thuật toán, tất cả kiến đi xây
dựng cách giải quyết bài toán bằng cách xây dựng một đồ thị. Mỗi cạnh của đồ
thị miêu tả các bước kiến có thể đi được kết hợp từ hai loại thông tin hướng dẫn
kiến di chuyển:
 Thông tin kinh nghiệm (heuristic information): giới hạn kinh nghiệm ưu
tiên di chuyển từ nút r tới s…của cạnh a
rs
. Nó được đánh dấu bởi η
rs
. Thông
tin này không được thay đổi bởi kiến trong suốt quá trình chạy thuật toán.
 Thông tin mùi lạ nhân tạo (artificial pheromone trail information), nó giới
hạn “nghiên cứu sự thèm muốn” của chuyển động là kiến nhân tạo và bắt

chước mùi lạ thực tế của đàn kiến tự nhiên. Thông tin này bị thay đổi trong
suốt quá trình thuật toán chạy phụ thuộc vào cách giải quyết được tìm thấy
bởi những con kiến. Nó được đánh dấu bởi τ
rs
.
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
Giới thiệu các bước ảnh hưởng từ những con kiến thật vào ACO. Có hai vấn đề
cần chú ý:
 Chúng trừu tượng hoá vài mô hình thức ăn của kiến ngoài thực tế để tìm ra
đường đi tìm kiếm thức ăn ngắn nhất.
 Chúng bao gồm vài đặc điểm không giống với tự nhiên nhưng lại cho phép
thuật toán phát triển chứa đựng cách giải quyết tốt tới bài toán bị cản (ví dụ:
sử dụng thông tin kinh nghiệm để hướng dẫn chuyển động của kiến).
Cách thức hoạt động cơ bản của một thuật toán ACO như sau:
m kiến nhân tạo di chuyến, đồng thời và không đồng bộ, qua các trạng thái liền
kề của bài toán. Sự di chuyển này theo một tập quy tắc làm cơ sở từ những vùng
thông tin có sẵn ở các thành phần (các nút). Vùng thông tin này bao gồm thông
tin kinh nghiệm và thông tin mùi lạ để hướng dẫn tìm kiếm. Qua sự di chuyển
trên đồ thị kiến xây dựng được cách giải quyết. Những con kiến sẽ giải phóng
mùi lạ ở mỗi lần chúng đi qua một cạnh (kết nối) trong khi xây dựng cách giải
quyết (cập nhật từng bước mùi lạ trực tuyến). Mỗi lần những con kiến sinh ra
cách giải quyết, nó được đánh giá và nó có thể tạo luồng mùi lạ là hoạt động của
chất lượng của cách giải quyết của kiến (cập nhật lại mùi lạ trực tuyến). Thông
tin này sẽ hướng dẫn tìm kiếm cho những con kiến đi sau.
Hơn thế nữa, cách thức sinh hoạt động của thuật toán ACO bao gồm thêm hai
thủ tục, sự bay hơi mùi lạ (pheromone trail evaporation) và hoạt động lạ
(daemon actions).
 Sự bay hơi của mùi lạ được khởi sự từ môi trường và nó được sử dụng như
là một kĩ thuật để tránh tìm kiếm bị dừng lại và cho phép kiến khảo sát vùng

không gian mới.
 Hoạt động lạ là những hoạt động tối ưu như một bản sao tự nhiên để thực
hiện những nhiệm vụ từ một mục tiêu xa tới vùng của kiến.
4.1.3 Các nghiên cứu về thuật giải đàn kiến
Hệ thống ACO lần đầu tiên được Marco Dorigo giới thiệu trong luận văn của
mình vào năm 1992, và được gọi là Hệ thống kiến (Ant System, hay AS). AS là
kết quả của việc nghiên cứu trên hướng tiếp cận trí tuệ máy tính nhằm tối ưu tổ
hợp mà Dorigo được hướng dẫn ở Politecnico di milano với sự hợp tác của
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
Alberto Colorni và Vittorio Maniezzo. AS ban đầu được áp dụng cho bài toán
người du lịch (TSP) và QAP.
Cũng vào năm 1992, tại hội nghị sự sống nhân tạo lần đầu tiên ở châu Âu ,
Dorigo và các cộng sự đã công bố bài: sự tối ưu được phân bố bởi đàn kiến.
Tiếp theo tại hội nghị quốc tế thứ hai về giải quyết các vấn đề song song trong
tự nhiên ở Hà Lan (1992), ông và các cộng sự đã công bố bài: nghiên cứu về các
đặc tính của một giải thuật kiến.
Kể từ năm 1995 Dorigo, Gambardella và Stützle đã phát triển các sơ đồ AS
khác nhau. Dorigo và Gambardella đã đề xuất Hệ thống bầy kiến (Ant Colony
System, hay ACS) trong khi Stützle and Hoos đề xuất MAX-MIN Ant System
(MMAS). Tất cả đều áp dụng cho bài toán người du lịch đối xứng hay không đối
xứng và cho kết quả mỹ mãn. Dorigo, Gambardella and Stützle cũng đề xuất
những phiên bản lai của ACO với tìm kiếm địa phưong.
Vào năm 1995, L.M. Gambardella và M. Dorigo đã đề xuất hệ thống Ant-Q, là
một cách tiếp cận học tăng cường cho cho bài toán TSP.Và nó được áp dụng
trong học máy.
Tiếp đó, vào năm 1996, trong bài báo công nghệ của mình tại Bruxelles M.
Dorigo và L.M. Gambardella đã công bố hệ thống Ant Conoly System. Đây là hệ
thống đề cập đến cách học phối hợp áp dụng cho bài toán TSP .
Cũng trong năm 1996 này, T. Stützle và H. H. Hoos đã đề xuất hệt thống Max-

Min Ant System . Đây là một hệ thống cải tiến hệ thống AntSystem ban đầu và
được đánh giá là hệ thống tính toán trong tương lai.
Sau đó, vào năm 1997, G. Di Caro và M. Dorigo đã đề xuất hệ thống AntNet.
Đây là cách tiếp cận về định hướng sự thích nghi. Và phiên bản cuối cùng của hệ
thống AntNet về điều khiển mạng truyền thông đã được công bố vào năm 1998.
Cũng trong năm 1997, hệ thống Rank-based Ant System, một hệ thống cải tiến
hệ thống kiến ban đầu về nghiên cứu hệ thống tính toán đã được đề xuất bởi B.
Bullnheimer, R. F. Hartl và C. Strauss. Phiên bản cuối cùng của hệ thống này
được công bố vào năm 1999.
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
Vào năm 2001, C. Blum, A. Roli, và M. Dorigo đã cho công bố về hệ thống
kiến mới là Hyper Cube – ACO. Phiên bản mở rộng tiếp đó đã được công bố vào
năm 2004.
4.2 Các loại mô hình đàn kiến
Hệ thông kiến (AS): là thuật toán ACO đầu tiên, có ba loại: AS-density, AS-
quantity và AS-cycle, khác nhau ở con đường mùi lạ được cập nhật và đề xuất.
Hệ thống đàn kiến (ACS): mở rộng của AS, cải tiến cách giải quyết của thuật
toán kiến trước khi cập nhật mùi lạ.
Hệ thống kiến MAX-MIN: một trong những thuật toán mở rộng tốt nhất của
AS.
Rank-based Ant System: kết hợp các loại cập nhật mùi lạ từ các thuật toán
trước.
Best-Worst Ant System: khai thác hệ thống của vùng tối ưu để cải tiến cách
giải quyết của thuật toán kiến.
4.3 Các bước để giải quyết bài toán dùng thuật giải đàn kiến
Bước 1: Thể hiện bài toán trong khung của tập các thành phần và sự chuyển đổi
hoặc bởi một đồ thị được đánh dấu bởi kiến đề xây dựng cách giải quyết.
Bước 2: Định nghĩa thích hợp cho mùi lạ τ
rs

là một xu hướng quyết định. Đó là
một bước chủ yếu trong việc hình thanhg thuật toán ACO và xác định rõ mùi lạ
không là một nhiệm vụ tầm thường và nó tính toán yêu cầu bên trong của bài
toán sau đáp án.
Bước 3: Định nghĩa thích hợp kinh nghiệm cho mỗi quyết định để một con kiến
có thể xây dựng cách giải quyết, ví dụ: định nghĩa thông tin kinh nghiệm τ
rs
kết
hợp mỗi thành phần hoặc trạng thái chuyển đổi. Thông tin kinh nghiệm chủ yếu
cho việc tìm kiếm tốt nếu thuật toán tìm kiếm vùng không có sẵn hoặc không thể
ứng dụng.
Bước 4: Nếu thực hiện được, tạo ra một vùng thuật toán tìm kiếm hiệu quả cho
bài toán sau đáp án bởi vì kết quả của nhiều ứng dụng ACO cho bài toán tổ hợp
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
tối ưu NP-hard thể hiện qua sự tìm kiếm tốt nhất đạt được khi ACO có vùng lạc
quan.
Bước 5: Lựa chọn một thuật toán ACO và ứng dụng nó vào những bài toán cần
giải quyết.
Bước 6: Các tham số phù hợp của thuật toán ACO. Một điểm bắt đầu tốt cho
tham số phù hợp là sử dụng cài đặt tham số để tìm kiếm tốt khi ứng dụng thuật
toán ACO vào bài toán đơn giản hoặc các bài toán khác nhau. Một vấn đề khác
chi phối thời gian trong nhiệm phù hợp là để sử dụng thủ tục động cho tham số
phù hợp.
Giải thuật đàn kiến tổng quát
Procedure ACO
Initial();
While (!ĐK dừng) do
ConstructSolutions();
LocalSearch(); /*Tuỳ ý, có thể có hoặc không

UpdateTrails();
End;
End;
Trong đó:
 ĐK dừng (tức là điều kiện dừng) là điều kiện đạt được khi thuật toán ở trạng
thái kết thúc. Với bài toán người đưa thư thì ĐK dừng là điều kiện đạt được
khi số vòng lặp của thuật toán = số vòng lặp lớn nhất do người dùng tự định
nghĩa hoặc là tất cả đàn kiến đều đi theo một đường (tức là đường đi ngắn
nhất).
 ConstrucSolutions() là hàm xây dựng một giải pháp có thể theo phương
pháp siêu tìm kiếm(meta-heuristic), với bài toán người đưa thư thì đó là
hàm xây dựng chu trình cho mỗi kiến .
 UpdateTrails() là hàm cập nhật mùi cho hành trình mà kiến đã đi qua.
 LocalSearch() là hàm tìm kiếm địa phương, giúp tìm ra tối ưu cục bộ.
5 GIẢI BÀI TOÁN STEINER SỬ DỤNG CÁC GIẢI THUẬT
METAHEURISTICS
Trong phần này, em sẽ trình bày hai giải thuật:
 Giải thuật di truyền (GA)
 Giải thuật đàn kiến (ACO)
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
5.1 Giải thuật di truyền giải bài toán cây Steiner
5.1.1 Mã hóa lời giải
Bài toán được mã hóa theo phương pháp mã hóa nhị phân như sau:
Mỗi một lời giải cho bài toán được mã hóa bằng một chuỗi nhị phân có độ dài
bằng số đỉnh của đồ thị: b1b2b3 bn (với n là số đỉnh của đồ thị).
Trong đó, bi = 0 nếu đỉnh i không có trong cây Steiner tương ứng, ngược lại
nếu bi = 0 nếu đỉnh i nằm trong cây Steiner tương ứng.
Có hai điều kiện để chuỗi nhị phân n bit (n là số đỉnh của đồ thị) là mã hóa một
lời giải của bài toán là: bi = 1 với mọi i là đỉnh terminal của đồ thị và tất cả các

đỉnh i có bi = 1 phải liên thông với nhau.
Mã hóa lời giải quyết định đến tính khả thi của thuật toán vì giải thuật di truyền
chỉ có khả năng làm việc với các phương án đã được mã hóa chứ nó không có
khả năng làm việc trực tiếp với các phương án cụ thể, trong trường hợp này là
các đồ thị. Xuất phát từ một cấu trúc biểu diễn đồ thị(ma trận kề hoặc danh sách
kề) việc mã hóa chỉ cần duyệt qua tất cả các đỉnh của lời giải cần mã hóa và điền
bit 1 vào những vị trí tương ứng của các nút này trong chuỗi nhị phân.
Việc giải mã một chuỗi nhị phân thành một đồ thị tương ứng có ý nghĩa quyết
định bởi vì lời giải của bài toán phải là một đồ thị chứ không thể là một chuỗi nhị
phân. Tuy nhiên xuất phát từ một chuỗi nhị phân, tìm một cấu trúc đồ thị tương
ứng với nó không hề đơn giản bởi với mỗi chuỗi nhị phân sẽ có rất nhiều đồ thị
tương ứng.
Lời giải tương ứng trong trường hợp này được giải mã bằng cách xây dựng cây
khung nhỏ nhất chứa tập đỉnh mà chuỗi nhị phân đó nắm giữ.
Giải thuật di truyền trong trường hợp này sử dụng thuật toán Prim để dựng cây
khung cực tiểu bởi nó có thể làm việc tốt với cả đồ thị dày và đồ thị thưa. Nếu có
sử dụng cấu trúc dữ liệu heap trong khi cài đặt thì thuật toán Prim chỉ chạy với
thời gian O(nlogn).
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
5.1.2 Phương pháp khởi tạo quần thể ban đầu
Giải thuật di truyền cho bài toán cây Steiner dùng một phương pháp khởi tạo
ngẫu nhiên có chọn lọc để tạo quần thể ban đầu. Mỗi một cá thể được khởi tạo
bằng cách chèn thêm một số điểm Steiner (S) vào tập đỉnh terminal (T) và dựng
cây khung cho tập điểm S ∪ T này thông qua 4 bước:
 Xác định số điểm Steiner muốn thêm vào: m
 Khởi tạo một chuỗi c gồm toàn những phần tử 0 và kết nạp tất cả các điểm
terminal vào đúng vị trí trong chuỗi.
 Chọn ngẫu nhiên m đỉnh khác nhau từ tập đỉnh của đồ thị lớn mà chưa được
kết nạp vào chuỗi c và kết nạp những đỉnh này chuỗi.

 Kiểm tra tính liên thông một cách có chọn lọc của đồ thị tương ứng với c.
Nếu đồ thị này hợp lệ thì c được đưa vào quần thể ban đầu Po, ngược lại c
sẽ bị loại bỏ.
Trong bốn bước khởi tạo một quần thể ở trên, bước thứ tư chính là bước thể
hiện sự chọn lọc của phương thức khởi tạo. Thuật toán loang theo chiều rộng sẽ
được sử dụng để kiểm tra tính liên thông của đồ thị tương ứng. Xuất phát từ một
đỉnh terminal, thuật toán sẽ tìm thành phần liên thông chứa điểm terminal đó.
Nếu trong thành phần liên thông đó chứa tất cả các điểm terminal còn lại thì
nhiễm sắc thể này được coi là hợp lệ, được kết nạp vào quần thể và các điểm
không thuộc thành phần liên thông sẽ bị loại bỏ. Nếu trong thành phần liên thông
đó thiếu một điểm terminal thì nhiễm sắc thể đó là không hợp lệ và sẽ bị loại bỏ.
5.1.3 Chọn lọc
5.1.3.1 Chọn lọc xếp hạng tuyến tính
Sắp xếp các cá thể theo thứ tự tăng dần của độ thích nghi, cá thể tồi nhất và tốt
nhất có thứ tự 0 và N – 1. Gọi n+ và n– lần lượt là kỳ vọng về số lần được chọn
của cá thể tốt nhất và tồi nhất. Khi đó giá trị kỳ vọng của cá thể thứ i là:
exp( ) ( )
1
i
i n n n
N
− + −
= + −

Để đảm bảo kích thước quần thể không đổi, tổng giá trị kỳ vọng phải bằng N,
n+ và n– phải thỏa mãn n+ + n– = 2. Do n+  n–  0, nên n+  [1.0, 2.0].
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
5.1.3.2 Chọn lọc xếp hạng phi tuyến
Độ đo thích nghi phụ của mỗi cá thể phụ thuộc hàm mũ vào hạng của nó. Độ

đo thích nghi phụ không phải là độ thích nghi ban đầu của cá thể, mà được sử
dụng thay thế để tính toán giá trị kỳ vọng. Cá thể tốt nhất có độ đo thích nghi phụ
bằng 1, cá thể có hạng thứ i có độ đo thích nghi phụ c
N-1-i
, cá thể tồi nhất có độ đo
thích nghi c
N-1
, c là tham số chọn lọc. Giá trị kỳ vọng của cá thể i là:
1
1
exp( )
1
N
N i
c
i N c
c
− −

=

,
giá trị c được chọn trong khoảng (0, 1), c càng nhỏ thì áp lực chọn lọc càng lớn.
5.1.3.3 Chọn lọc cạnh tranh
Trong 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. 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ẹ. Giá
trị t được gọi là kích cỡ cạnh tranh.
Khi t = 2, ta có thể đưa tham số xác suất k (thường chọn 0.5 < k < 1) vào để
quyết định xem chọn cá thể tốt nhất hay tồi nhất. Lấy một số ngẫu nhiên r trong

khoảng (0, 1), nếu r < k thì chọn cá thể tốt hơn, ngược lại chọn cá thể tồi hơn.
5.1.4 Lai ghép
5.1.4.1 Lai ghép hai cha mẹ
Phép lai ghép hai cha mẹ được cài đặt trong giải thuật di truyền là lai ghép một
điểm cắt.
Phép lai ghép được thực hiện như sau:
Chọn ngẫu nhiên hai cá thể từ quần thể hiện tại làm cha mẹ và tiến hành lai
ghép một điểm cắt trên hai gen của cha mẹ này để tạo ra hai con mới. Một con
được gọi là hợp lệ nếu như đồ thị con tương ứng với nó liên thông, khi phép lai
ghép được thực hiện, nó được gọi là thành công nếu như cả hai con sinh ra bởi
toán tử đều hợp lệ. Tuy vậy tính liên thông ở đây chỉ yêu cầu ở mức kết nối liên
thông các điểm terminal nghĩa là trong một đồ thị con chỉ yêu cầu có một thành
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
phần liên thông chứa tất cả các điểm terminal, tất cả những điểm Steiner không
thuộc thành phần liên thông này sẽ được loại bỏ khỏi phương án.
5.1.4.2 Lai ghép nhiều cha mẹ
Phép lai ghép nhiều cha mẹ được cài đặt trong giải thuật di truyền là phép lai
ghép nhiều điểm cắt. Đầu tiên, chọn ngẫu nhiên n
parent
cá thể từ 50% cá thể tốt
nhất trong quần thể hiện tại làm cha mẹ và tiến hành lai ghép n
parent
-1 điểm cắt
trên n
parent
cha mẹ này để tạo ra các con mới. Giải thuật chọn cha mẹ trong số 50%
cá thể tốt nhất trong quần thể hiện tại để con sinh ra sẽ nhận được gen tốt của cha
mẹ và có hàm mục tiêu tốt.
Một con được gọi là hợp lệ nếu như đồ thị con tương ứng với nó liên thông, khi

một toán tử lai ghép được thực hiện, nó tạo ra n
parent
con. Mỗi con sinh ra bằng
cách chọn ngẫu nhiên một đoạn nhiễm sắc thể tương ứng từ một cha mẹ.
Sau khi tất cả các con đã được sinh ra, mỗi con phải đựoc kiểm tra tính hợp lệ
của chúng. Con nào hợp lệ sẽ được chuyển vào quần thể con, con nào không hợp
lệ sẽ bị loại bỏ.
5.1.5 Đột biến
5.1.5.1 Đột biến chuẩn
Để thực hiện phép đột biến chuẩn, xác suất đột biến của một đỉnh trong một
nhiễm sắc thể phải được biết trước. Trong quá trình thực hiện thuật toán sẽ duyệt
qua tất cả các đỉnh trong nhiễm sắc thể. Để biết một đỉnh có được đột biến hay
không, thuật toán gieo một số ngẫu nhiên, nếu số ngẫu nhiên này nhỏ hơn xác
suất đột biến của đỉnh đang xét thì đỉnh này sẽ được đột biến từ “0” sang “1”
hoặc từ “1” sang “0” (thêm vào hay loại ra khỏi cây Steiner), ngược lại đỉnh sẽ
không được đột biến. Xác suất đột biến một đỉnh thường được chọn

1.5/độ dài
của nhiễm sắc thể. Một điều cần chú ý khi tiến hành đột biến một đỉnh từ “1”
sang “0” là ta phải đảm bảo chắc chắn đỉnh này không phải là một đỉnh terminal
bởi do tính chất đặc thù của cây Steiner là phải chứa tất cả những điểm terminal
nên việc loại bỏ một điểm terminal khỏi phương án không bao giờ được chấp
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
nhận mặc dù có thể trong các thế hệ tiếp theo điểm terminal này sẽ xuất hiện trở
lại cũng nhờ việc thực hiện đột biến.
Cũng như phép lai ghép, một phép đột biến được thực hiện không phải lúc nào
cũng hợp lệ. Một phép đột biến được gọi là thực hiện thành công nếu như đồ thị
tương ứng với gen vừa bị đột biến là một đồ thị có ít nhất một thành phần liên
thông chứa tất cả các điểm terminal. Việc thực hiện kiểm tra với các gen vừa bị

đột biến là bắt buộc, nếu các gen này là hợp lệ thì một cây khung cực tiểu sẽ
được dựng trên đồ thị tương ứng và giá trị độ phù hợp của cá thể chứa gen này sẽ
được hiệu chỉnh lại bằng độ dài của cây khung cực tiểu.
5.1.5.2 Đột biến đổi chỗ
Không giống như phép đột biến chuẩn, phép đột biến đổi chỗ không duyệt qua
tất cả các đỉnh của một nhiễm sắc thể mà nó chỉ duyệt qua từng nhiễm sắc thể
xem nhiễm sắc thể này có được đột biến hay không, vì vậy xác suất đột biến áp
dụng đối với phép đột biến này phải là xác suất đột biến của một nhiễm sắc thể
thay vì xác suất đột biến của một đỉnh. Thông thường, xác suất đột biến cho một
nhiễm sắc thể = xác suất đột biến một đỉnh

độ dài của nhiễm sắc thể. Để cài
đặt phép đột biến này, các bước sau cần được tiến hành:
 Bước 1: Với mỗi nhiễm sắc thể c
i
, gieo một số ngẫu nhiên r và so sánh r
với xác suất đột biến p
m
của nhiễm sắc thể này. Nếu r < p
m
thì tiến hành đột
biến, ngược lại kết nạp ngay cá thể chứa c
i
vào quần thể của thế thệ tiếp
theo bỏ qua các bước 2 - 4.
 Bước 2: Nếu nhiễm sắc thể được xác định là cần đột biến thì chọn hai vị trí
k và j trong nhiễm sắc thể một cách ngẫu nhiên.
 Bước 3: Nếu hai bit ở vị trí j và k khác nhau thì đổi chỗ hai bit này, ngược
lại giữ nguyên vị trí hai bit này và kết nạp ngay nhiễm sắc thể này vào quần
thể của thế hệ tiếp theo bỏ qua bước 4.

 Bước 4: Nếu hai bit k và j đã được đổi chỗ thì kiểm tra tính hợp lệ của
nhiễm sắc thể vừa tạo thành. Nếu nhiễm sắc thể này không hợp lệ, nó bị loại
bỏ và các bước 2-4 được tiến hành lại đối với nhiễm sắc thể c
i
, ngược lại
cây khung cực tiểu sẽ được dựng trên đồ thị của nhiễm sắc thể này và giá trị
độ phù hợp của cá thể tương ứng được hiệu chỉnh, cá thể này sau đó được
kết nạp vào quần thể của thế hệ tiếp theo.
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
Lặp lại các bước từ 1- 4 cho tất cả các nhiễm sắc thể c
i
.
Khi nhiễm sắc thể đã được xác định là cần đột biến nhưng nếu hai bit ở vị trí j
và k không khác nhau thì cũng không có một hoạt động đổi chỗ nào xảy ra bởi
việc đổi chỗ hai đỉnh trên một đồ thị không tạo ra một đồ thị mới. Ngoài ra việc
đổi chỗ hai bit dẫn đến việc một đỉnh terminal bị loại bỏ thì việc thực hiện phép
đột biến này được coi là không hợp lệ.
5.1.5.3 Đột biến đảo đoạn
Phép đột biến đảo đoạn coi NST như một chuỗi vòng, sau đó chon ra hai điểm
ngẫu nhiên rồi tiến hành đảo ngược đoạn bit trên. Do trong đoạn bit có những
điểm terminal nên thuật toán sẽ bỏ qua các điểm này trong khi đảo bit.
Một phép đột biến được gọi là thực hiện thành công nếu như đồ thị tương ứng
với nhiễm sắc thể vừa bị đột biến là một đồ thị có ít nhất một thành phần liên
thông chứa tất cả các điểm terminal.
Việc thực hiện kiểm tra với các nhiễm sắc thể vừa bị đột biến là bắt buộc, nếu
các nhiễm sắc thể này là hợp lệ thì một cây khung cực tiểu sẽ được dựng trên đồ
thị tương ứng và giá trị độ phù hợp của cá thể chứa nhiễm sắc thể này sẽ được
hiệu chỉnh lại bằng độ dài của cây khung cực tiểu.
5.1.5.4 Đột biến thêm đỉnh

Toán tử đột biến thêm đỉnh được thực hiện qua các bước như sau:
 Bước 1: Chọn ngẫu nhiên một số r, là số các đỉnh được kiểm tra.
 Bước 2: Chọn ngẫu nhiên một node chưa có trong cây và đem kiểm tra.
 Bước 3: Thêm đỉnh được kiểm vào trong cây. Tính giá trị của cây mới, nếu
giá trị của cây mới lớn hơn giá trị của cây cũ thì xóa đỉnh đó ra khỏi cây,
ngược lại thì tình trạng của cây được giữ nguyên. Sau đó quay lại bước 2,
quá trình này được lặp lại r lần.
5.1.5.5 Đột biến xóa đỉnh
Tương tự như toán tử đột biến thêm đỉnh, toán tử đột biến xóa đỉnh cũng được
thực hiện tương tự đột biến thêm đỉnh qua ba bước như sau:
 Bước 1: Chọn ngẫu nhiên một số r, là số các đỉnh được kiểm tra.
 Bước 2:Chọn ngẫu nhiên một đỉnh ở trong cây và không phải là đỉnh
terminal để kiểm tra.
Trang ||
Thuật toán và phương pháp giải quyết vấn đềGVHD: PGS.TS Đỗ Văn Nhơn
 Bước 3: Xóa đỉnh được kiểm ra khỏi cây. Tính giá trị của cây mới, nếu giá
trị của cây mới lớn hơn giá trị của cây cũ thì thêm lại đỉnh đó vào cây,
ngược lại thì tình trạng của cây được giữ nguyên. Sau đó quay lại bước 2,
quá trình này được lặp lại r lần.
5.1.6 Tối ưu cây
Tối ưu cây qua 2 bước sau:
 Bước 1: Loại bỏ tất cả các đỉnh Steiner có bậc bằng 1.
 Bước 2: Tìm kiếm tất cả các đỉnh Steiner có bậc bằng 2. Giả sử đỉnh đó nối
hai đỉnh i và j. Thuật toán sẽ loại bỏ đỉnh đó ra khỏi cây và thay bằng đường
đi ngắn nhất giữa hai đỉnh i và j.
Kết quả thu được sau khi tiến hành tối ưu hóa cây là luôn thu được một cây mới
có trọng số nhỏ hơn hoặc bằng cây cũ.
Cây thu được sau khi tiến hành tối ưu cây là luôn thỏa mãn yêu cầu bài toán vì:
 Các đỉnh Steiner bậc một là các đỉnh treo nên khi loại bỏ chúng sẽ không
làm ảnh hưởng đến tính liên thông giữa các điểm còn lại trong cây.

 Các đỉnh Steiner bậc hai là cầu giữ hai điểm i và j, thuật toán chỉ thay đổi
đường đi giữa hai điểm này nên không làm ảnh hưởng đến sự liên thông của
các điểm khác trong cây.
5.2 Giải thuật đàn kiến giải bài toán cây Steiner
5.2.1 Các định nghĩa và ký hiệu
 T = (V
T,
E
T
) bộ phận của cây lời giải đã xây dựng.
 d
ij
: độ dài đường đi ngắn nhất từ i đến j trên đồ thị G = (V, E, c) với i, j ∈ V
 d
T
(v) = min{d
uv
} ∀u∈=V
r
: khoảng cách nhỏ nhất từ đỉnh v đến cây T
 prev(v) = Arg min{d
uv
} u∈T: đỉnh gần nhất của v trên T
 N
T
: tập đỉnh kề của cây T trong đó N
T
= {v ∈ V \ V
T
| ∃u ∈ V

T
, (u,v) ∈ E}
5.2.2 Thủ tục tìm theo lời giải của đàn kiến
begin
V
T
← {root}
E
T
← ∅
while T = (V
T
, E
T
) chưa là cây lời giải do
begin
Lựa chọn v ∈ N
T
làm đỉnh tiếp theo của cây
Trang ||

×