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

Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề PHƯƠNG PHÁP HUERISTIC VÀ BÀI TOÁN NGƯỜI ĐƯA THƯ TRUNG HOA

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 (540.64 KB, 40 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
PHÒNG ĐT SĐH-KHCN&QHĐN
TIỂU LUẬN MÔN THUẬT TOÁN
VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
PHƯƠNG PHÁP HUERISTIC VÀ BÀI TOÁN
NGƯỜI ĐƯA THƯ TRUNG HOA

Giảng viên: PGS.TS. ĐỖ VĂN NHƠN
Học viên thực hiện: ĐẶNG BẢO ÂN
Khóa: CAO HỌC KHÓA 08
Mã số học viên: CH1301077
TP. Hồ Chí Minh, tháng 10 năm 2014
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành đến PGS.TS. Đỗ Văn Nhơn, Thầy đã
tâm quyết truyền đạt những kiến thức quý báu không chỉ là lý thuyết mà còn
hướng dẫn cách thức tìm hiểu, phân tích và vận dụng lý thuyết cụ thể. Em xin
chân thành cảm ơn Thầy vì sự hướng dẫn của Thầy trong quá trình thực hiện tiểu
luận này.
Em xin chân thành cảm ơn Phòng Đào tạo sau Đại học đã tạo mọi điều
kiện để em hoàn thành tiểu luận này.
Xin chân thành cảm ơn sự giúp đỡ của các anh chị, bạn bè và những người
đã thường xuyên trao đổi, thảo luận và đóng góp ý kiến cho tôi về các vấn đề liên
quan trong thời gian qua.
Một lần nữa xin chân thành cảm ơn đến tất cả những người đã quan tâm
đến tiểu luận của em. Tuy nhiên, trong quá trình làm việc không thể tránh khỏi
những sai sót, rất mong sự đóng góp ý kiến nhiệt tình của Thầy và các bạn.
Học viên thực hiện
Đặng Bảo Ân
22


GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
MỤC LỤC
DANH MỤC HÌNH
33
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
LỜI NÓI ĐẦU
Heuristic là các kỹ thuật dựa trên kinh nghiệm để giải quyết vấn đề, học
hỏi hay khám phá nhằm đưa ra một giải pháp mà không được đảm bảo là tối ưu.
Với việc nghiên cứu khảo sát không có tính thực tế, các phương pháp heuristic
được dùng nhằm tăng nhanh quá trình tìm kiếm với các giải pháp hợp lý thông
qua các suy nghĩ rút gọn để giảm bớt việc nhận thức vấn đề khi đưa ra quyết
định.
Với nghĩa chính xác hơn, heuristic là các chiến lược sử dụng thông tin với
cách tiếp cận dễ dàng mặc dù được áp dụng lỏng lẻo để kiểm soát việc giải quyết
vấn đề giữa con người và máy móc.
Với mục đích tìm hiểu sâu hơn những kiến thức được truyền đạt trên lớp,
học viên quyết định thực hiện tiểu luận trình bày kết quả tìm hiểu về một thuật
giải heuristic để giải quyết một vấn đề trong thực tế đó là “Bài toán Người Đưa
Thư Trung Hoa”.
Tiểu luận được trình bày gồm bốn phần chính:
- Bài toán “Người đưa thư Trung Hoa”: phát biểu bài toán.
- Cơ sở lý thuyết: trình bày cơ sở lý thuyết vận dụng.
- Ứng dụng Heuristic giải quyết bài toán “Người đưa thư Trung Hoa”.
- Thực nghiệm: cài đặt và mô phỏng thuật giải.
Cuối cùng, em xin chân thành cảm ơn Thầy Đỗ Văn Nhơn đã tận tình
giảng dạy và hướng dẫn để em hoàn tất bài tiểu luận này. Chúc Thầy được nhiều
sức khỏe.

Học viên thực hiện
44

GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
Đặng Bảo Ân
55
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
I. BÀI TOÁN NGƯỜI ĐƯA THƯ TRUNG HOA
1.1 Phát biểu bài toán
Bài toán người đưa thư Trung Hoa (tiếng Anh: Chinese postman problem)
phát biểu rằng: “Một người đưa thư xuất phát từ bưu điện phải đến một số con
đường để phát thư rồi quay trở về điểm xuất phát, hỏi người đó phải đi như thế
nào để số đường đi là ít nhất”.
Tên gọi "bài toán người đưa thư Trung Hoa" được Alan Goldman của Cục
Tiêu chuẩn quốc gia Hoa Kỳ (U.S. National Bureau of Standards) đặt, vì nó được
nhà toán học Trung Hoa Quản Mai Cốc nêu ra đầu tiên vào năm 1962.
Bài toán có thể phát biểu lại như sau: Cho một đồ thị đầy đủ, có trọng số
dương, tìm đường đi ngắn nhất qua tất cả các đỉnh của đồ thị rồi trở về đỉnh ban
đầu (mỗi đỉnh đi qua đúng một lần).
1.2 Ý nghĩa bài toán
Bài toán tìm đường đi ngắn nhất là bài toán quan trọng trong Lý thuyết đồ
thị, nó được áp dụng để giải quyết rất nhiều bài toán trong thực tế như điều khiển
tối ưu, giao thông vận tải, mạng viễn thông , đặc biệt "bài toán người đưa thư
Trung Hoa" là một đề tài khá hay, nó bắt nguồn từ nhu cầu thực tiễn trong ngành
bưu chính viễn thông – cần tìm một lộ trình ngắn nhất có thể của người đưa thư
cần đi qua một số con đường ít nhất một lần bắt đầu ở Sở bưu điện và trở về đó.
Ứng dụng của bài toán là vô cùng thiết thực đối với ngành bưu chính, và còn
được mở rộng để giải quyết nhiều vấn đề phức tạp trong đời sống chẳng hạn:
“Xây dựng ứng dụng tìm kiếm lộ trình thu gom rác tối ưu trên địa bàn Thành
phố Hồ Chí Minh”. Do vậy, việc nghiên cứu "bài toán người đưa thư Trung Hoa"
là rất cần thiết.
66
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân

II. CƠ SỞ LÝ THUYẾT
Trong thực tiễn có nhiều trường hợp người ta chấp nhận các cách giải
thường cho kết quả tốt (nhưng không phải lúc nào cũng tốt) mà ít phức tạp và
hiệu quả. Chẳng hạn nếu giải một bài toán bằng thuật toán tối ưu đòi hỏi máy
tính thực hiện nhiều năm thì chúng ta có thể sẵn lòng chấp nhận một giải pháp
gần tối ưu mà chỉ cần máy tính chạy trong vài ngày hoặc vài giờ.
Các cách giải chấp nhận được nhưng không hoàn toàn đáp ứng đầy đủ các
tiêu chuẩn của thuật toán thường được gọi là thuật giải. Khái niệm mở rộng này
của thuật toán đã mở của cho chúng ta trong việc tìm kiếm phương pháp để giải
quyết các bài toán được đặt ra. Một trong những thuật giải thường được đề cập
đến và sử dụng là giải thuật Heuristic.
Trong phần này sẽ đi sâu vào tìm hiểu về giải thuật Heuristic và sử dụng
giải thuật để giải quyết vấn đề NP.
2.1 Khái niệm về lớp bài toán P và NP
2.1.1 Khái niệm các loại thời gian tính
• Thời gian tính tốt nhất: là thời gian tính tối thiểu cần thiết để thực hiện
thuật toán với mọi bộ dữ liệu đầu vào kích thước n.
• Thời gian tính tồi nhất: là thời gian tính tối đa cần thiết để thực hiện thuật
toán với mọi bộ dữ liệu đầu vào có kích thước n
• Thời gian tính trung bình: là thời gian tính cần thiết để thực hiện thuật
toán trên một tập hữu hạn các bộ dữ liệu đầu vào có kích thước n. Thời
gian tính trung bình được tính theo công thức sau:
77
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
• Thời gian tính trung bình=(Tổng thời gian tính tất cả các bộ dữ liệu có
thể)/ Số bộ dữ liệu.
Định nghĩa: Bài toán quyết định là bài toán mà đầu ra chỉ có thể là ‘yes’
hoặc ‘no’(đúng/sai, 0/1).
Đối với một bài toán quyết định, có những bộ dữ liệu vào cho ra câu trả
lời(đầu ra) là ‘yes’, chúng ta gọi đây là bộ dữ liệu ‘yes’, nhưng cũng có những bộ

dữ liệu vào cho ra câu trả lời là ‘no’, chúng ta gọi những bộ dữ liệu này là bộ dữ
liệu ‘no’.
2.1.2 Bằng chứng ngắn gọn dễ kiểm tra
Rất nhiều các bài toán quyết định có một đặc điểm chung, đó là để xác
nhận câu trả lời ‘yes’ đối với bộ dữ liệu vào ‘yes’ của chúng, chúng ta có thể đưa
ra bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời ‘yes’ cho bộ dữ liệu
vào ‘yes’ đó. Tính ngắn gọn dễ kiểm tra ám chỉ việc thời gian kiểm tra để đưa ra
kết quả chỉ mất thời gian đa thức. Ví dụ về những bài toán quyết định kiểu này
rất nhiều, sau đây là một số ví dụ:
• Bài toán kiểm tra tính hợp số: “Có phải số n là hợp số?”, để xác nhận câu
trả lời ‘yes’ cho đầu vào n, chúng ta có thể đưa ra một ước số b (1<b<n)
của n. Để kiểm tra xem b có phải là ước số của n chúng ta có thể thực hiện
phép chia n cho b sau thời gian đa thức. Trong ví dụ này , b là bằng chứng
ngắn gọn (vì b<n) và dễ kiểm tra (có thuật toán đa thức để kiểm tra b đúng
là ước số của n không).
• Đối với bài toán Hamilton, để xác nhận câu trả lời là ‘yes’ cho đồ thị đã
cho G, chúng ta có thể đưa ra một chu trình Hamilton của đồ thị:
v1, v2, v3 vn, v1
88
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
• Việc kiểm tra dãy đỉnh nói trên có là chu trình Hamilton của đồ thị đã cho
hay không có thể thực hiện sau thời gian đa thức. Khi đó chúng ta nói dãy
đỉnh nói trên là bằng chứng ngắn gọn dễ kiểm tra để xác nhận câu trả lời
‘yes’ của bài toán Hamilton.
Một cách tương tự, có thể đưa ra khái niệm bằng chứng ngắn gọn dễ kiểm
tra để xác nhận câu trả lời ‘no’. Đối với một số bài toán, việc đưa ra bằng chứng
ngắn gọn dễ kiểm tra để xác nhận câu trả lời ‘no’ là dễ hơn so với việc đưa ra
bằng chứng ngắn gọn xác định câu trả lời là ‘yes’.
2.1.3 Khái niệm quy dẫn
Định nghĩa . Giả sử chúng ta có hai bài toán quyết định A và B. Chúng ta

nói A có thể quy dẫn về B nếu như sau một thời gian tính đa thức nếu tồn tại một
thuật toán thời gian đa thức R cho phép biến đổi bộ dữ liệu x của A thành bộ dữ
liệu vào R(x) của B sao cho x là bộ dữ liệu yes của A khi và chỉ khi R(x) là dữ
liệu vào yes của B.
Nếu A quy dẫn về được B sau thời gian đa thức và B có thể giải được sau
thời gian đa thức thì A cũng có thể giải được sau thời gian đa thức.
2.1.4 Lớp bài toán P
Định nghĩa. Chúng ta gọi P là lớp các bài toán có thể giải được trong
thời gian đa thức.
Ví dụ: Bài toán cây khung nhỏ nhất giải được nhờ thuật toán Prim với
thời gian 0(n2) thuộc lớp bài toán P.
2.1.5 Lớp bài toán NP
99
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
Định nghĩa. Ta gọi NP là lớp các bài toán quyết định mà để xác nhận câu
trả lời ‘yes’ của nó ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra.
Ví dụ: Bài toán kiểm tra tính hợp số: “Có phải n là hợp số không?”, để
xác nhận câu trả lời ‘yes’ cho đầu vào n ta có thể đưa ra một ước số b (1< b < n)
của n. Để kiểm tra xem b có phải là ước số của n hay không ta có thể thực hiện
phép chia n cho b sau thời gian đa thức. Trong ví dụ này dễ thấy b là bằng chứng
ngắn gọn (b<n) và dễ kiểm tra (có thuật toán thời gian tính đa thức để kiểm tra
xem b có là ước số của n).
2.1.6 Lớp bài toán Co- NP
Định nghĩa. Ta gọi Co-NP là lớp các bài toán quyết định mà để xác nhận
câu trả lời ‘no’ của nó ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra.
Ví dụ: Bài toán kiểm tra tính nguyên tố: “Có phải n là số nguyên tố
không?”, để đưa ra bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời ‘no’
cho đầu vào n ta có thể đưa ra một ước số b của n.
2.1.7 Lớp bài toán NP- đầy đủ (NP- complete)
Định nghĩa. Một bài toán quyết định A được gọi là NP-đầy đủ (NP-

Complete) nếu như:
• A là một bài toán trong NP.
• Mọi bài toán trong NP đều có thể quy dẫn về A.
Bổ đề. Giả sử bài toán A là NP-đầy đủ, bài toán B thuộc NP, và bài toán
A qui dẫn được về bài toán B. Khi đó bài toán B cũng là NP-đầy đủ.
2.1.8 Lớp bài toán NP-khó (NP- Hard)
1010
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
Một cách ngắn gọn có thể hiểu bài toán NP-khó là bài toán mà không có
thuật toán thời gian tính đa thức để giải nó trừ khi P = NP, mà chỉ có các thuật
toán giải trong thời gian hàm mũ. Sau đây là định nghĩa chính thức của bài toán
NP-khó.
Định nghĩa. Một bài toán A được gọi là NP- khó (NP-hard) nếu như sự
tồn tại thuật toán đa thức để giải nó kéo theo sự tồn tại thuật toán đa thức để
giải mọi bài toán trong NP.
Một số bài toán NP-khó tiêu biểu như:
Bài toán bè cực đại (MaxClique): Cho một đồ thị vô hướng G = (V, E). V
là tập các đỉnh, E là tập các cạnh tương ứng các đỉnh trong V. Cần tìm bè lớn
nhất của G. Bè là tập các đỉnh trong đồ thị mà đôi một có cạnh nốivới nhau (là
một đồ thị con đầy đủ trong đồ thị G).
Bài toán tập độc lập (Independent set): Cho đồ thị vô hướng G = (V, E) và
số nguyên K, hỏi có thể tìm được tập độc lập S với |S| ≥ K. Tập độc lập là tập các
đỉnh trong đồ thị mà chúng đôi một không có cạnh nối với nhau.
Bài toán phủ đỉnh (Vertex cover): Ta gọi một phủ đỉnh của đồ thị vô
hướng G = (V, E) là một tập con các đỉnh của đồ thị S

V sao cho mỗi cạnh của
đồ thị có ít nhất một đầu mút trong S. Bài toán đặt ra là: Cho đồ thị vô hướng G =
(V, E) và số nguyên k. Hỏi G có phủ đỉnh với kích thước k hay không?
Một cách không hình thức, có thể nói rằng nếu ta có thể giải được một

cách hiệu quả một bài toán NP-khó cụ thể, thì ta cũng có thể giải hiệu quả bất kỳ
bài toán trong NP bằng cách sử dụng thuật toán giải bài toán NP-khó như một
chương trình con.
1111
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
Từ định nghĩa bài toán NP-khó có thể suy ra rằng mỗi bài toán NP-đầy
đủ đều là NP-khó. Tuy nhiên một bài toán NP-khó không nhất thiết phải là NP-
đầy đủ.
Cũng từ bổ đề nêu trên, ta có thể suy ra rằng để chứng minh một bài toán
A nào đó là NP-khó, ta chỉ cần chỉ ra phép qui dẫn một bài toán đã biết là NP-
khó về nó. Sau đây là mô hình phân lớp các bài toán đã nêu trên.
Hình 1: Mô hình phân lớp các bài toán.
Từ phần trình bày trên, ta thấy có rất nhiều bài toán ứng dụng quan trọng
thuộc vào lớp NP-khó, và vì thế khó hy vọng xây dựng được thuật toán đúng
hiệu quả để giải chúng. Do đó, một trong những hướng phát triển thuật toán giải
các bài toán như vậy là xây dựng các thuật toán gần đúng.
2.2 Mở rộng khái niệm thuật giải
Trong quá trình nghiên cứu giải quyết các vấn đề - bài toán, người ta đã
đưa ra những nhận xét như sau :
1212
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
• Có nhiều bài toán cho đến nay vẫn chưa tìm ra một cách giải theo kiểu
thuật toán và cũng không biết là có tồn tại thuật toán hay không.
• Có nhiều bài toán đã có thuật toán để giải nhưng không chấp nhận được vì
thời gian giải theo thuật toán đó quá lớn hoặc các điều kiện cho thuật toán
khó đáp ứng.
• Có những bài toán được giải theo những cách giải vi phạm thuật toán
nhưng vẫn chấp nhận được.
Từ những nhận định trên, người ta thấy rằng cần phải có những đổi mới
cho khái niệm thuật toán. Người ta đã mở rộng hai tiêu chuẩn của thuật toán :

tính xác định và tính đúng đắn. Việc mở rộng tính xác định đối với thuật toán đã
được thể hiện qua các giải thuật đệ quy và ngẫu nhiên. Tính đúng của thuật toán
bây giờ không còn bắt buộc đối với một số cách giải bài toán, nhất là các cách
giải gần đúng. Trong thực tiễn, có nhiều trường hợp người ta chấp nhận các cách
giải thường cho kết quả tốt (nhưng không phải lúc nào cũng tốt) nhưng ít phức
tạp và hiệu quả. Chẳng hạn nếu giải một bài toán bằng thuật toán tối ưu đòi hỏi
máy tính thực hiện nhiều năm thì chúng ta có thể sẵn lòng chấp nhận một giải
pháp gần tối ưu mà chỉ cần máy tính chạy trong vài ngày hoặc vài giờ.
Các cách giải chấp nhận được nhưng không hoàn toàn đáp ứng đầy đủ
các tiêu chuẩn của thuật toán thường được gọi là các thuật giải. Khái niệm mở
rộng này của thuật toán đã mở rộng cửa cho chúng ta trong việc tìm kiếm phương
pháp để giải quyết các bài toán được đặt ra.
Một trong những thuật giải thường được đề cập đến và sử dụng trong khoa
học trí tuệ nhân tạo là các cách giải theo kiểu Heuristic.
2.3 Khái niệm Heuristic và MetaHeuristic
2.3.1 Hueristic
1313
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
• Hueristic là những tri thức được rút tỉa từ những kinh nghiệm, “trực giác”
của con người (mẹo).
• Hueristic có thể là những tri thức “đúng” hay “sai”.
• Hueristic là những meta knowledge và thường “đúng”.
Hueristic thường được dùng trong các bài toán tìm kiếm trong trường hợp:
• Vấn đề có thể không có nghiệm chính xác do các mệnh đề không phát
biểu chặt chẽ hay thiếu dữ liệu để khẳng định kết quả.
• Vấn đề có nghiệm chính xác nhưng phí tổn tính toán để tìm ra nghiệm là
quá lớn ( hệ quả của bùng nổ tổ hợp).
Hueristic giúp tìm kiếm đạt kết quả với chi phí thấp hơn.
2.3.2 MetaHeuristic
Meta hueristic là các thủ tục mang tính hướng dẫn. Meta heuristic là loại

heuristic tổng quát có thể áp dụng cho nhiều lớp bài toán. Gần đây meta heuristic
là một lãnh vực nghiên cứu phát triển mạnh mẽ, với sự ra đời của nhiều meta
heuristic như:- giải thuật di truyền (GA) - giải thuật mô phỏng luyện kim (SA) –
giải thuật kiến (ACO).
2.4 Thuật giải Heuristic
Thuật giải Heuristic là một sự mở rộng khái niệm thuật toán. Nó thể hiện
cách giải bài toán với các đặc tính sau :
• Thường tìm được lời giải tốt (nhưng không chắc là lời giải tốt nhất).
1414
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
• Giải bài toán theo thuật giải Heuristic thường dễ dàng và nhanh chóng đưa
ra kết quả hơn so với giải thuật tối ưu, vì vậy chi phí thấp hơn.
• Thuật giải Heuristic thường thể hiện khá tự nhiên, gần gũi với cách suy
nghĩ và hành động của con người.
Có nhiều phương pháp để xây dựng một thuật giải Heuristic, trong đó
người ta thường dựa vào một số nguyên lý cơ sở như sau:
• Nguyên lý vét cạn thông minh : Trong một bài toán tìm kiếm nào đó, khi
không gian tìm kiếm lớn, ta thường tìm cách giới hạn lại không gian tìm
kiếm hoặc thực hiện một kiểu dò tìm đặc biệt dựa vào đặc thù của bài toán
để nhanh chóng tìm ra mục tiêu.
• Nguyên lý tham lam (Greedy): Lấy tiêu chuẩn tối ưu (trên phạm vi toàn
cục) của bài toán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục
bộ của từng bước (hay từng giai đoạn) trong quá trình tìm kiếm lời giải.
• Nguyên lý thứ tự : Thực hiện hành động dựa trên một cấu trúc thứ tự hợp
lý của không gian khảo sát nhằm nhanh chóng đạt được một lời giải tốt.
• Hàm Heuristic: Trong việc xây dựng các thuật giải Heuristic, người ta
thường dùng các hàm Heuristic. Ðó là các hàm đánh giá thô, giá trị của
hàm phụ thuộc vào trạng thái hiện tại của bài toán tại mỗi bước giải. Nhờ
giá trị này, ta có thể chọn được cách hành động tương đối hợp lý trong
từng bước của thuật giải.

2.5 Thuật giải di truyền
2.5.1 Giới thiệu
1515
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
Giải thuật di truyền là một kỹ thuật của khoa học máy tính nhằm tìm kiếm
giải pháp thích hợp cho các bài toán tối ưu tổ hợp (combinatorial optimization).
Giải thuật di truyền là một phân ngành của giải thuật tiến hóa vận dụng các
nguyên lý của tiến hóa như di truyền, đột biến, chọn lọc tự nhiên, và trao đổi
chéo.
Giải thuật di truyền thường được ứng dụng nhằm sử dụng ngôn ngữ máy
tính để mô phỏng quá trình tiến hoá của một tập hợp những đại diện trừu tượng
(gọi là những nhiễm sắc thể) của các giải pháp có thể (gọi là những cá thể) cho
bài toán tối ưu hóa vấn đề. Tập hợp này sẽ tiến triển theo hướng chọn lọc những
giải pháp tốt hơn.
Giải thuật di truyền (Genetic Algorithm - GA): Dựa vào quá trình di
truyền trong tự nhiên để cải tiến lời giải qua các thế hệ bắt nguồn từ một tập các
lời giải ban đầu.
Giải thuật di truyền cũng như các thuật toán tiến hoá đều được hình thành
dựa trên một quan niệm được coi là một tiên đề phù hợp với thực tế khách quan.
Đó là quan niệm "Quá trình tiến hoá tự nhiên là quá trình hoàn hảo nhất, hợp lý
nhất và tự nó đã mang tính tối ưu". Quá trình tiến hoá thể hiện tính tối ưu ở chỗ
thế hệ sau bao giờ cũng tốt hơn thế hệ trước.
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 .
2.5.2 Các khái niệm
a. Cá thể, nhiễm sắc thể
Một cá thể trong giải thuật di truyền, biểu diễn một giải pháp của bài toán.
Tuy nhiên không giống với trong tự nhiên, một cá thể có nhiều nhiễm sắc thể
1616

GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
(NST),có 1 thì gọi là thể đơn bội ,còn nếu có nhiều thì là thể đa bội, ở đây để giới
hạn trong giải thuật di truyền ta quan niệm một cá thể có một nhiễm sắc thể. Do
đó khái niệm cá thể và nhiễm sắc thể trong giải thuật di truyền coi như là tương
đương.
Một NST được tạo thành từ nhiều gen, mỗi gen có thể có các giá trị khác
nhau để quy định một tính trạng nào đó. Trong GA, một gen được coi như một
phần tử trong chuỗi NST.
b. Quần thể
Quần thể 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 của một
bài toán.
c. Các toán tử di truyền
• Chọn lựa: 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. 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.
• 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 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 đó để
1717
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
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.

• Đột biến: Đột biến là một sự biến đổi tại một ( hay một số ) gen của nhiễm
sắc thể ban đầu để tạo ra một nhiễm sắc thể mới. Đột biến có xác suất xảy
ra thấp hơn lai ghép. Độ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ệ.
2.5.3 Mô hình giải thuật
1818
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
Hình 2: Mô hình giải thuật
[Bắt đầu ] Nhận các tham số cho thuật toán.
[Khởi tạo ] Sinh ngẫu nhiên một quần thể gồm n cá thể ( là n lời giải cho bài
toán)
[Quần thể mới ] Tạo quần thể mới bằng cách lặp lại các bước sau cho đến khi
quần thể mới hoàn thành
a.[Thích nghi] Ước lượng độ thích nghi eval(x) của mỗi cá thể.
b.[Kiểm tra ] Kiểm tra điều kiện kết thúc giải thuật.
c.[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)
d.[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.
e.[Đột biến] Với một xác suất đột biến được chọn, biến đổi cá thể mới
1919
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
[Chọn kết quả] Nếu điều kiện dừng được thỏa mãn thì thuật toán kết thúc và trả
về lời giải tốt nhất trong quần thể hiện tại
2.5.4 Các tham số
• Xác suất lai ghép: Xác suất lai ghép cho biết tính thường xuyên của việc
lai ghép tạo ra thế hệ mới được thực hiện như thế nào. Nếu xác suất lai

ghép là pc , khi đó khả năng để một cá thể được lai ghép là pc. Nếu không
thực hiện lai ghép, con sinh ra sẽ giống hoàn toàn bố mẹ. Nếu được lai
ghép, con sinh ra sẽ có một phần giống bố và một phần giống mẹ.
• Xác suất đột biến: Xác suất đột biến cho biết tính thường xuyên của việc
các gen của NST thay đổi như thế nào. Nếu xác suất đột biến là pm, khi
đó khả năng để mỗi gen của một NST bất kỳ bị đột biến là pm. Tác dụng
của toán tử đột biến là ngăn ngừa giải thuật di truyền rơi vào tình trạng
cực trị địa phương, tuy nhiên nếu thực hiện đột biến với xác suất quá cao
sẽ biến giải thuật di truyền thành giải thuật tìm kiếm ngẫu nhiên.
• Kích thước quần thể: Kích thước quần thể cho biết có bao nhiêu cá thể
trong một quần thể (trong một thế hệ). Qua các nghiên cứu cũng như các
thử nghiệm đã cho thấy kích thước quần thể không nên quá bé cũng như
không quá lớn. Nếu có quá ít cá thể thì ít có khả năng thực hiện lai giống
và chỉ một phần nhỏ không gian tìm kiếm được dùng. Như vậy sẽ dễ xảy
ra trường hợp bỏ qua các lời giải tốt. Nhưng quá nhiều cá thể cũng không
tốt vì GA sẽ chạy chậm đi, ảnh hưởng đến hiệu quả của giải thuật. Các
nghiên cứu cũng đã chỉ ra không có lợi khi tăng kích thước quần thể lên
quá một giới hạn cho phép.
2.5.5 Các cách mã hóa NST
2020
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
• Mã hoá nhị phân: Mã hoá nhị phân là phương pháp mã hoá nhiễm sắc thể
phổ biến nhất. Trong mã hoá nhị phân, mỗi nhiễm sắc thể là một chuỗi nhị
phân, mỗi bit trong nó có thể biểu diễn một đặc tính của nghiệm.
Ví dụ: hai nhiễm sắc thể 1 và 2 có chiều dài là 16.
Nhiễm sắc thể 1: 1101100100110110
Nhiễm sắc thể 2: 1101111000011110
Mã hoá nhị phân thường hay dùng trong các bài toán tối ưu các hàm một
biến hay nhiều biến. Khi đó, mỗi chuỗi nhị phân sẽ biểu diễn hàm tại một (tập)
giá trị của (các) biến. Ngoài ra nó còn được áp dụng trong nhiều loại bài toán

khác nữa.
Mã hoá nhị phân tuy là phổ biến nhưng nó có một 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 giá trị của nhiễm sắc thể. Do
đó, với nhiều bài toán thì biểu diễn nhị phân là không hữu hiệu.
• Mã hoá hoán vị: Mã hoá hoán vị có thể được sử dụng trong các bài toán
liên quan đến thứ tự như bài toán du lịch hay bài toán lập lịch.
Trong mã hoá hoán vị, mỗi nhiễm sắc thể là một chuỗi các số biểu diễn
một trình tự.
Ví dụ :
Nhiễm sắc thể 1: 1 5 4 3 2 6 7 9 8
Nhiễm sắc thể 2: 9 1 7 3 8 5 6 4 2
Mã hoá hoán vị phù hợp cho các bài toán liên quan đến thứ tự. Đối với các
bài toán này, việc thao tác trên các nhiễm sắc thể chính là hoán vị các số trong
chuỗi đó làm thay đổi trình tự của nó.
2121
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
• Mã hoá theo giá trị: Mã hoá trực tiếp theo giá trị có thể được dùng trong
các bài toán sử dụng giá trị phức tạp như trong số thực. Trong đó, mỗi
nhiễm sắc thể là một chuỗi các giá trị. Các giá trị có thể là bất cứ cái gì
liên quan đến bài toán, từ số nguyên, số thực, kí tự cho đến các đối tượng
phức tạp hơn.
Ví dụ:
Nhiễm sắc thể 1: 1.23 5.32 0.34 2.98 3.54
Nhiễm sắc thể 2: (back), (back), (right), (forward), (left)
Mã hoá theo giá trị thường dùng cho các bài toán đặc biệt. Trong cách mã
hoá này ta thường phải phát triển các toán tử đột biến và lai ghép cho phù hợp
với từng bài toán.
2.5.6 Khởi tạo quần thể
Khởi tạo quần thể ban đầu là ta tạo ra một cách ngẫu nhiên các lời giải có
thể (thường là các lời giải thỏa mãn ràng buộc của bài toán nhưng chưa biết là

đại lượng cần tối ưu đã là tối ưu hay chưa). Tuỳ vào từng bài toán cụ thể mà ta có
các phương pháp khởi tạo khác nhau.
Chất lượng của quần thể ban đầu càng cao thì lời giải mà giải thuật di
truyền đưa ra càng tốt. Trong nhiều giải thuật di truyền, thường sử dụng các giải
thuật đã có để giải bài toán mà cho kết quả khá tốt để khởi tạo quần thể ban đầu.
Xây dựng hàm thích nghi sao cho giá trị thích nghi phải phản ánh được
giá trị thực của NST trong việc đáp ứng yêu cầu của bài toán. Ví dụ như trong
các bài toán về cây khung nhỏ nhất thì hàm thích nghi sẽ là hàm tính tổng trọng
số các cạnh trên các cây khung.
2222
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
Trong giải thuật di truyền thì hàm tính độ thích nghi là một trong hai yếu
tố quan trọng nhất quyết định sự thành công hay thất bại của GA.
Có nhiều cách để lựa chọn các cá thể từ quần thể: lựa chọn theo tỉ lệ, lựa
chọn theo xếp hạng, lựa chọn theo cơ chế lấy mẫu ngẫu nhiên, lựa chọn tranh đấu
2.5.7 Các toán tử di truyền
• Mã hoá nhị phân
a. Toán tử lai ghép
Lai ghép đơn điểm cắt :
− Một điểm cắt được chọn tại một vị trí thứ k trên NST.
− Từ đầu NST đến vị trí k, NST con sao chép từ cha, phần còn lại sao
chép từ mẹ.
Lai ghép hai điểm cắt :
− Hai điểm cắt được chọn .
− Từ đầu cho đến điểm cắt thứ nhất được sao chép từ cha, từ điểm cắt
thứ nhất đến điểm cắt thứ hai sao chép từ mẹ và phần còn lại sao
chép từ cha.
2323
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
Lai ghép đồng nhất :

− Có một mặt nạ sao chép là một chuỗi nhị phân có chiếu dài bằng
chiều dài NST.
− Xây dựng NST mới: Duyệt qua mặt nạ, bit có giá trị một thì sao
chép gen tại vị trí đó từ NST cha sang con, bit có giá trị 0 thì sao
chép từ mẹ.
− Mặt nạ được phát sinh ngẫu nhiên đối với từng cặp cha mẹ.
b. Toán tử đột biến
Phép đảo bit : Bit được chọn sẽ bị đảo (Bit được chọn có gạch chân)
• Mã hoá hoán vị
2424
GVHD: PGS.TS. Đỗ Văn Nhơn HVTH: Đặng Bảo Ân
Toán tử lai ghép đơn điểm cắt :
− Một điểm cắt được chọn.
− Từ đầu đến điểm cắt được lấy từ cha, phần còn lại duyệt qua mẹ,
đưa những gen chưa có vào.
Toán tử đột biến thay đổi thứ tự : hai số được chọn hoán đổi vị trí
cho nhau
• Mã hoá giá trị
Toán tử lai ghép : giống mã hóa nhị phân
Toán tử đột biến: Với mã hoá theo giá trị thực thì có thể thực hiện đột
biến bằng cách thay đổi giá trị (cộng thêm hoặc trừ đi) một giá trị nhỏ
vào một số cá thể được chọn.
2.6 Thuật giải đàn kiến
2.6.1 Giới thiệu
Các thuật toán kiến là các thuật toán dựa vào sự quan sát các bầy kiến
thực. Kiến là loại cá thể sống bầy đàn. Chúng giao tiếp với nhau thông qua mùi
2525

×