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

Tìm hiểu bài toán tìm đường đi ngắn nhất & ứng dụng giải thuật di truyền cho bài toán phát thư

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 (955.07 KB, 47 trang )

THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114
NHẬN XÉT CỦA GIẢNG VIÊN



























THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ


Huỳnh Thanh Việt – CH1301114
MỤC LỤC
LỜI CÁM ƠN 1
LỜI NÓI ĐẦU 2
CHƢƠNG 1 : BÀI TOÁN TÌM ĐƢỜNG ĐI NGẮN NHẤT 3
I. Giới thiệu bài toán 3
II. Xây dựng giải pháp cho vấn đề 3
CHƢƠNG 2 : GIẢI THUẬT DI TRUYỀN 11
I. Tổng quan về thuật giải di truyền 11
II. Các thao tác cơ bản: 12
1. Mã hóa: 12
2. Phát sinh quần thể ban đầu: 13
3. Hàm đánh giá và hàm thích nghi: 13
4. Các toán tử di truyền: 14
5. Các tham số của thuật giải: 15
III. Các toán tử và kỹ thuật di truyền nâng cao 16
1. Thể lƣỡng bội (Diploidy), thể trội (Dominicance) và thể khuyết (Abeyance): 16
2. Thể đa bội (Multiploid): 18
3. Một số toán tử vi mô tái thiết lập thứ tự: 19
4. Vùng thích nghi (Niche) và sự hình thành loài (Speciation): 23
5. Tối ƣu hóa đa mục tiêu: 30
6. Tối ƣu tổ hợp: 31
CHƢƠNG 3: BÀI TOÁN PHÁT THƢ TP.HCM 32
I. Giới thiệu Bƣu Điện Thành Phố: 32
II. Bài toán lấy thƣ hằng ngày: 34
KẾT LUẬN 44
TÀI LIỆU THAM KHẢO 45





THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 1
LỜI CÁM ƠN

Đầu tiên, em xin chân thành cám ơn thầy PGS.TS Đỗ Văn Nhơn đã truyền đạt hết sức
nhiệt tình cho chúng em những kiến thức quý báu trong môn Thuật toán và phương pháp
giải quyết vấn đề để em hoàn thành đề tài này.
Em cũng xin gửi lời cám ơn chân thành đến các thầy cô trong trƣờng Đại học Công
Nghệ Thông Tin đã tận tình giúp đỡ em trong thời gian học vừa qua.
Xin cảm ơn tất bạn bè đã và đang động viên, giúp đỡ tôi trong quá trình học tập và hoàn
thành đề tài này.


TPHCM, ngày 09 tháng 10 năm 2014
Lớp CH08
Học viên thực hiện

Huỳnh Thanh Việt








THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 2
LỜI NÓI ĐẦU


Cuộc sống của chúng ta luôn có rất nhiều vấn đề đƣợc đặt ra đòi hỏi ta cần phải giải
quyết. Máy tính giúp chúng ta giải quyết các vấn đề một cách chính xác và thông minh.
Sau khi hoàn thành môn học Thuật toán và phương pháp giải quyết vấn đề do thầy
Đỗ Văn Nhơn phụ trách em đã nắm bắt đƣợc một số kiến thức quan trọng về thuật toán và
phƣơng pháp để giải quyết những bài toán trong thực tế.
Trong bài báo cáo này em xin đƣợc nêu một vài điểm tìm hiểm bài toán tìm đƣờng đi
ngắn nhất và thuật giải di truyền. Từ thuật giải di truyền em đã xây dựng một chƣơng trình
demo giải bài toán phát thƣ khu vực TPHCM.

















THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 3
CHƢƠNG 1 : BÀI TOÁN TÌM ĐƢỜNG ĐI NGẮN NHẤT
I. Giới thiệu bài toán

Bài toán đƣờng đi ngắn nhất trong mạng giao thông là bài toán tìm một đƣờng đi
giữa hai điểm sao cho tổng các trọng số của các cạnh tạo nên đƣờng đi đó là nhỏ nhất. Hay
nói một cách toán học là: Cho đơn đồ thị liên thông, có trọng số G=(V,E). Tìm khoảng cách
d(a,b) từ một đỉnh a cho trƣớc đến một đỉnh b bất kỳ của G và tìm đƣờng đi ngắn nhất từ a
đến b.
II. Xây dựng giải pháp cho vấn đề

Bước 1: Mô hình hóa vấn đề
 Vấn đề thực tế và vấn đề cần giải quyết:

o Khảo sát và thu thập dữ liệu, thông tin và tri thức (DIK):
 Giao lộ và các con đƣờng
 Thuộc tính đƣờng: độ dài, 1 chiều hay 2 chiều
 Mật độ giao thông
 Chất lƣợng con đƣờng, có cầu vƣợt?

o Chọn lọc vấn đề và chuẩn hóa DIK + Xác định cơ sở DIK cho vấn đề.
 Con đƣờng đƣợc hiểu là đƣờng đi từ giao lộ này đến giao lộ kế nó
 Độ dài, 1 chiều/ 2 chiều

o Mô tả giả thiết của vấn đề.
 Điểm đầu/ xuất phát: giao lộ (bắt đầu)
 Điểm cuối: Đích đến là 1 giao lộ nào đó

o Mô tả mục tiêu hay kết luận của vấn đề: Đƣờng đi ngắn nhất từ điểm đầu đến điểm
cuối

o Mô tả các điều kiện hay ràng buộc liên quan: Không có



THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 4
 Xây dựng mô hình:
o Mô hình cho DIK
Đƣợc mô hình hóa bằng đồ thị có hƣớng, có trọng số dƣơng. Trong đó:
 Các đỉnh: là các giao lộ
 Cung: là đƣờng 1 chiều đi từ đỉnh này đến đỉnh kia
 Trọng số: Độ dài con đƣờng (độ dài cạnh)
G = (V, E)
V = {x1, …, xn}
E = {e1, …, en}; e  E liên kết xi và xj
w: E  R
+
; e  w (e)
o Mô hình cho giả thiết.

 Input: a  V; z  V
 Output: Đƣờng đi P nối a tới z sao cho:
 w(P) ≤ w(Q), Q nối a  z

o Mô hình cho mục tiêu.
(a, z)

P (a, z)

o Mô hình cho các điều kiện và các ràng buộc.

 Mô hình cho vấn đề tổng thể:
 Dạng frame.
 Dạng tổng quát.

 Các dạng lai.
Bước 2: Thiết kế thuật toán / thuật giải
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 5
 Chọn lựa phương pháp giải quyết vấn đề dựa trên những phương pháp đã biết:
Dùng thuật giải Dijkstra

 Ý tưởng giải thuật:
o Ta xác định đường đi ngắn nhất từ đỉnh nguồn s tới các đỉnh còn lại,qua
các bƣớc, mỗi bƣớc ta xác định đƣờng đi ngắn nhất từ nguồn tới một đỉnh.
o Ta lưu các đỉnh đã xác định đường đi ngắn nhất từ nguồn tới chúng vào
tập S. Ban đầu tập S chỉ chứa một đỉnh nguồn s.
o Chúng ta sẽ gọi đường đi từ nguồn s tới đỉnh v là đường đi đặc biệt, nếu
đƣờng đi đó chỉ đi qua các đỉnh trong S, tức là các đƣờng đi (s = v
0
,
v
1
,…,v
k-1
,v
k
= v), trong đó v
0
, v
1
, …v
k-1
∈ S.
o Một mảng D được sử dụng để lưu độ dài của đường đi đặc biệt, D[v] là độ

dài đƣờng đi đặc biệt từ nguồn tới v.
o Ban đầu vì S chỉ chứa một đỉnh nguồn s, nên ta lấy D[s] = 0, và D[v] =
c(s,v) với mọi v ≠ s.
o Tại mỗi bước ta sẽ chọn một đỉnh u không thuộc S mà D[u] nhỏ nhất và
thêm u vào S, ta xem D[u] là độ dài đường đi ngắn nhất từ nguồn tới u
(sau này ta sẽ chứng minh D[u] đúng là độ dài đƣờng đi ngắn nhất từ
nguồn tới u). Sau khi thêm u vào S, ta xác định lại các D[v] với v ở ngoài
S. nếu độ dài đƣờng đi đặc biệt qua đỉnh u (vừa đƣợc chọn) để tới v nhỏ
hơn D[v] thì ta lấy D[v] là độ dài đƣờng đi đó.
o Bước trên đây được lặp lại cho tới khi S gồm tất cả các đỉnh của đồ thị, và
lúc đó mảng D[u] sẽ lƣu độ dài đƣờng đi ngắn nhất từ nguồn tới u, với mọi
u ∈V. Dijktra (G,s)

 Biểu diễn thuật toán dạng mã giả (nêu thuật giải đã có):
// Khởi tạo
//Tìm đƣờng đi ngắn nhất trong đồ thị G = (V,E) từ đỉnh nguồn s
{

Khởi tạo tập S chỉ chứa đỉnh nguồn s; (1) for (mỗi đỉnh v∈V)
D[v] = c(s,v);

D[s] = 0;
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 6
while (V – S ≠ Ǿ )
{
(2) chọn đỉnh u ∈ V - S mà D[u] nhỏ nhất; S = S U {u}; // bổ sung
u vào S
for ( mỗi v không ∈ V - S) // xác định lại D[v] (3) if (D[u] + c(u,v)
< D[v])

D[v] = D[u] + c(u,v);

}
}


Bước 3: Chứng minh tính đúng đắn :
Chúng ta sẽ chứng minh rằng, khi kết thúc thuật toán, tức là khi S = V, thì D[u] sẽ là
độ dài đướng đi ngắn nhất từ đỉnh nguồn tới u với mọi u ∈ S = V.
Điều này đƣợc chứng minh bằng quy nạp theo cỡ của tập S. Khi S chỉ chứa đỉnh
nguồn s thì D[s] = 0, đƣơng nhiên giả thiết quy nạp đúng.
Giả sử rằng tại một thời điểm nào đó ta đã có D[a] là độ dài đƣờng đi ngắn nhất từ
nguồn tới a, với mọi đỉnh a ∈ S, và u là đỉnh đƣợc chọn bởi lệnh (2) trong thuật toán để
bổ sung vào S. Ta cần chứng minh rằng khi đó D[u] là độ dài đƣờng đi ngắn nhất từ nguồn
tới u. Mỗi khi bổ xung thêm vào tập S một đỉnh mới (lệnh(2)), thì các đỉnh v còn lại không
nằm trong S đƣợc xác định lại D[v] bởi lệnh (3).
Từ đó bằng quy nạp, dễ dàng chứng minh đƣợc nhận xét sau: Nếu a là đỉnh bất kỳ
trong S và b là đỉnh bất kỳ ngoài S thì D[b] <= D[a] + c(a,b).
Giả sử ta có một đƣờng đi bất kỳ từ nguồn s tới u, độ dài của nó đƣợc ký hiệu là
d(s,u). Giả sử trên đƣờng đi đó a là đỉnh sau cùng ở trong S và b là đỉnh đầu tiên ở ngoài S
nhƣ trong hình vẽ sau:


THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 7
Theo cách chọn đỉnh u (lệnh(2)), D[u] là nhỏ nhất trong số các đỉnh ở ngoài S. Vì
vậy, D[u] <= D[b]. Theo nhận xét đã đƣa ra ở trên, D[b] <= D[a] + c(a,b). Mặt khác, theo
giả thiết quy nạp, D[a] là độ dài đƣờng đi ngắn nhất từ nguồn tới a. Do đó, nếu ký hiệu
d(s,a) là độ dài đoạn đƣờng từ s tới a, còn d(b,u) là độ dài đoạn đƣờng từ b tới u, ta có:
D[u] <= D[b]

<= D[a] + c(a,b)
<= d(s,a) + c(a,b)
<= d(s,a) + c(a,b) + d(b,s)
= d(s,u)
Nhƣ vậy ta đã chứng minh đƣợc D[u] nhỏ hơn hoặc bằng độ dài d(s,u) của đƣờng đi
bất kỳ từ nguồn s tới u. Trong thuật toán Dijkstra, tại mỗi bƣớc ta cần chọn một đỉnh u
không nằm trong S mà D[u] là nhỏ nhất (lệnh (2)), và sau đó với các đỉnh v còn lại
không nằm trong S, D[v] có thể bị giảm đi bởi lệnh (3). Vì vậy để cho lệnh (2) đƣợc
thực hiện hiệu quả, ta có thể sử dụng hàng ƣu tiên P
để cài đặt tập đỉnh V - S với khoá của đỉnh v ∈ V - S là D[v].
Chúng ta có thuật toán sau:
Dijkstra(G,s)
{
(1) for (mỗi đỉnh v ∈ V) D[v] = c(s,v);
D[s] = 0;
(2) Khởi tạo hàng ƣu tiên P chứa các đỉnh v ≠ s với khoá là D[v]; (3)
while (P không rỗng)
{
(4) u = DeleteMin(P);
(5) for (mỗi đỉnh v kề u)
if (D[u] + c(u,v) < D[v])
{

D[v] = D[u] + c(u,v); (6)
DecreaseKey(P,v,D[v]);
}
}
}



THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 8
Bước 4: Phân tích thuật toán / thuật giải
 Lệnh lặp (1) cần thời gian O(|V|), trong đó |V| ký hiệu số đỉnh của đồ thị. Ta có thể
khởi tạo ra hàng ƣu tiên P (lệnh(2)) với thời gian là O(|V|)
 Số lần lặp trong lệnh lặp (3) là |V|.
 Trong mỗi lần lặp, phép toán DeleteMin đòi hỏi thời gian O(log|V|); do đó, tổng thời
gian thực hiện các lệnh (4) là O(|V|log|V|).
 Tổng số lần lặp trong các lệnh lặp (5) trong tất cả các lần lặp của lệnh lặp (3) tối đa là
số cung của đồ thị |E|.
 Trong mỗi lần lặp đó, nhiều nhất là một phép toán DecreaseKey (lệnh(6)) đƣợc thực
hiện.
 Phép toán DecreaseKey chỉ cần thời gian O(log(|V|) khi ta cài đặt hàng ƣu tiên P bởi
cây thứ tự bộ phận . Vì vậy, thời gian thực hiện các lệnh lặp (5) trong các lần lặp của
lệnh lặp (3) là O(|E|log|V|).
 Tổng kết lại, thời gian chạy của thuật toán Dijkstra, nếu ta sử dụng hàng ƣu tiên đƣợc
cài đặt bởi cây thứ tự bộ phận, là O(|V|log|V| + |E|log|V|).
Do đó thuật toán có độ phức tạp O(n2).

Bước 5: Nghiên cứu cải thiện, nâng cao hiệu quả thuật giải
Cải tiến: áp dụng thuật giải A*
 Mô tả:
A* lƣu giữ một tập các lời giải chƣa hoàn chỉnh, nghĩa là các đƣờng đi qua đồ thị, bắt
đầu từ nút xuất phát. Tập lời giải này đƣợc lƣu trong một hàng đợi ƣu tiên (priority queue).
Thứ tự ƣu tiên gán cho một đƣờng đi đƣợc quyết định bởi hàm .
Trong đó, là chi phí của đƣờng đi cho đến thời điểm hiện tại, nghĩa là tổng trọng số của
các cạnh đã đi qua. là hàm đánh giá heuristic về chi phí nhỏ nhất để đến đích từ . Ví
dụ, nếu "chi phí" đƣợc tính là khoảng cách đã đi qua, khoảng cách đƣờng chim bay giữa hai
điểm trên một bản đồ là một đánh giá heuristic cho khoảng cách còn phải đi tiếp. Hàm
có giá trị càng thấp thì độ ƣu tiên của càng cao (do đó có thể sử dụng một cấu trúc heap

tối thiểu để cài đặt hàng đợi ưu tiên này)
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 9

 Giải thuật:
function A*(điểm_xuất_phát,đích)
var đóng:= tập rỗng
var q:= tạo_hàng_đợi(tạo_đƣờng_đi(điểm_xuất_phát))
while q không phải tập rỗng
var p:= lấy_phần_tử_đầu_tiên(q)
var x:= nút cuối cùng của p
if x in đóng
continue
if x = đích
return p
bổ sung x vào tập đóng
foreach y in các_đƣờng_đi_tiếp_theo(p) đƣa_vào_hàng_đợi(q, y)
return failure

Trong đó, các_đƣờng_đi_tiếp_theo(p) trả về tập hợp các đƣờng đi tạo bởi việc kéo
dài p thêm một nút kề cạnh. Giả thiết rằng hàng đợi đƣợc sắp xếp tự động bởi giá trị của
hàm . "Tập hợp đóng" (đóng) lƣu giữ tất cả các nút cuối cùng của p (các nút mà các đƣờng
đi mới đã đƣợc mở rộng tại đó) để tránh việc lặp lại các chu trình (việc này cho ra thuật toán
tìm kiếm theo đồ thị). Đôi khi hàng đợi đƣợc gọi một cách tƣơng ứng là "tập mở". Tập đóng
có thể đƣợc bỏ qua (ta thu đƣợc thuật toán tìm kiếm theo cây) nếu ta đảm bảo đƣợc rằng tồn
tại một lời giải hoặc nếu hàm các_đƣờng_đi_tiếp_theo đƣợc chỉnh để loại bỏ các chu trình.

 Tính đầy đủ:
A* là thuật toán đầy đủ (complete) theo nghĩa rằng nó sẽ luôn luôn tìm thấy một lời
giải nếu bài toán có lời giải.

Nếu hàm heuristic có tính chất thu nạp được (admissible), nghĩa là nó không bao
giờ đánh giá cao hơn chi phí nhỏ nhất thực sự của việc đi tới đích, thì bản thân A* có tính
chất thu nạp đƣợc (hay tối ưu) nếu sử dụng một tập đóng. Nếu không sử dụng tập đóng thì
hàm phải có tính chất đơn điệu (hay nhất quán) thì A* mới có tính chất tối ƣu. Nghĩa là nó
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 10
không bao giờ đánh giá chi phí đi từ một nút tới một nút kề nó cao hơn chi phí thực. Phát
biểu một cách hình thức, với mọi nút trong đó là nút tiếp theo của :



A* còn có tính chất hiệu quả một cách tối ưu (optimally efficient) với mọi hàm
heuristic , có nghĩa là không có thuật toán nào cũng sử dụng hàm heuristic đó mà chỉ phải
mở rộng ít nút hơn A*, trừ khi có một số lời giải chƣa đầy đủ mà tại đó dự đoán chính xác
chi phí của đƣờng đi tối ƣu.

 Độ phức tạp:
Độ phức tập thời gian của A* phụ thuộc vào đánh giá heuristic. Trong trƣờng hợp
xấu nhất, số nút đƣợc mở rộng theo hàm mũ của độ dài lời giải, nhƣng nó sẽ là hàm đa thức
khi hàm heuristic h thỏa mãn điều kiện sau:



Trong đó là heuristic tối ƣu, nghĩa là hàm cho kết quả là chi phí chính xác để đi từ
tới đích. Nói cách khác, sai số của h không nên tăng nhanh hơn logarit của "heuristic hoàn
hảo" - hàm trả về khoảng cách thực từ x tới đích .













THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 11
CHƢƠNG 2 : GIẢI THUẬT DI TRUYỀN
I. Tổng quan về thuật giải di truyền
Thuật giải di truyền là một kỹ thuật của khoa học máy tính đƣợc dùng để tìm kiếm
lời giải cho các bài toán tối ƣu tổ hợp hay các bài toán chƣa có thuật toán để tìm chính xác
lời giải. Thuật giải di truyền sử dụng ngôn ngữ máy tính để mô phỏng lại quá trình tiến hóa
tự nhiên của một tập các đối tƣợng trừu tƣợng (gọi là quần thể). Mỗi đối tƣợng trừu tƣợng
(gọi là các nhiễm sắc thể) đại diện cho một giải pháp khả dĩ (gọi là cá thể) của bài toán tối
ƣu hóa. Ngoài ra, mỗi giải pháp thƣờng liên quan đến nhiều yếu tố, gọi là các biến. Vì thế,
các nhiễm sắc thể tƣơng ứng cũng gồm nhiều phần tử, mỗi phần tử đƣợc gọi là một gen.
Tập các giải phá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.
Việc xác định giải pháp nào tốt hơn đƣợc thực hiện bởi một hàm gọi là hàm mục tiêu hoặc
hàm thích nghi. Các giải pháp tốt đƣợc kết hợp với nhau với hi vọng sẽ tạo ra các giải pháp
tốt hơn.
Quá trình tiến hóa bắt đầu từ một tập các cá thể ngẫu nhiên, và do đó, hầu hết chúng
không phải là các lời giải tốt. Qua từng thế hệ, độ thích nghi của từng cá thể đƣợc xác định.
Các cá thể đƣợc chọn lọc theo cách có định hƣớng (chọn cá thể tốt theo độ thích nghi) từ tập
hiện thời. Sau đó, các cá thể này đƣợc biến đổi bằng cách lai ghép hay đột biến để tạo ra các
cá thể mới. Việc này đƣợc thực hiện lặp đi lặp lại qua các thế hệ tiếp theo và cuối cùng, giải
thuật cho ra lời giải tối ƣu hoặc gần tối ƣu.
Một thuật giải di truyền có thể chia ra làm 5 bƣớc, đƣợc mô tả qua thủ tục sau:

procedure GeneticAlgorithms
begin
T = 0; // Thế hệ thứ T
Khởi tạo quần thể P(T);
Đánh giá độ thích nghi cho các cá thể trong P(T);
while (not Điều_Kiện_Kết_Thúc) do
begin
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 12
T = T + 1;
Chọn lọc P(T) từ P(T-1);
Kết hợp các cá thể (bằng lai ghép & đột biến) trong P(T);
Đánh giá độ thích nghi cho các cá thể trong P(T);
end
end
Các toán tử và kỹ thuật đƣợc áp dụng trong thủ tục trên sẽ đƣợc mô tả chi tiết hơn trong
các phần tiếp theo.
II. Các thao tác cơ bản:
Để giải một bài toán tối ƣu bằng cách áp dụng thuật giải di truyền, ta thƣờng phải giải
quyết 5 vấn đề:
 Biểu diễn di truyền hay chọn cách mã hóa các lời giải của bài toán
 Phát sinh quần thể ban đầu P(0).
 Chọn hàm đánh giá để xác định mức độ thích nghi của lời giải
 Áp dụng các toán tử di truyền (lai ghép, đột biến) để tạo ra các cá thể mới
 Xác định các tham số đầu vào của thuật giải. Chẳng hạn nhƣ kích thƣớc quần thể, xác
suất lai ghép, xác suất đột biến,…
1. Mã hóa:
Mã hóa là việc xác định cách thức biểu diễn di truyền đối với lời giải của bài toán.
Việc mã hóa phụ thuộc nhiều vào từng bài toán cụ thể. Một số cách biểu diễn thông dụng:
 Biểu diễn nhị phân: mỗi nhiễm sắc thể là một dãy số nhị phân. Mỗi gen có thể đƣợc

mã hóa nhờ một số lƣợng bit nào đó.
 Biểu diễn theo số tự nhiên: mỗi nhiễm sắc thể là một dãy các số tự nhiên. Phƣơng
pháp này đƣợc dùng nhiều trong các bài toán tối ƣu tổ hợp hay hoán vị.
 Biểu diễn số dấu chấm động: Mỗi gen trong nhiễm sắc thể đƣợc mã hóa bởi một số ở
dạng dấu chấm động. Cách biểu diễn này giải quyết đƣợc một số nhƣợc điểm của
biểu diễn nhị phân và biểu diễn đƣợc miền giá trị lớn.
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 13
 Một số cách khác: Biểu diễn số ở hệ Octal (hay Hexa), biểu diễn bởi chuỗi ký tự, hay
kết hợp các dạng trên.

Cách biểu diễn
Nhị phân
Số tự nhiên
Số thực
Cách khác
Nhiễm sắc thể
100011011
010101010
123459876
679218345
5.5 2.3 7.1 4.0
3.1 1.9 2.5 5.6
2314506 (Octal)
ABCDE (Hexa / chuỗi)
Một số cách biểu diễn nhiễm sắc thể
2. Phát sinh quần thể ban đầu:
Thông thƣờng, việc khởi tạo các cá thể trong quần thể ở thế hệ đầu tiên là phát sinh
ngẫu nhiên và/hoặc có thêm một số ràng buộc (chẳng hạn sinh ra một hoán vị). Do đó, hầu
hết chúng có độ thích nghi thấp hay không phải là lời giải tối ƣu. Trong một số trƣờng hợp,

việc phát sinh ngẫu nhiên có thể làm quá trình tiến hóa chậm (chẳng hạn nhƣ với bài toán
ngƣời du lịch).
Một cách khởi tạo khác cũng hay đƣợc áp dụng, đó là sử dụng phƣơng pháp tham
lam (greedy). Tùy vào đặc trƣng của từng bài toán cụ thể, ta có thể phát sinh ra các cá thể
sao cho có khả năng gần với lời giải nhất có thể. Ví dụ, với bài toán ngƣời du lịch, tại gen
thứ k, ta chọn đỉnh gần nhất với đỉnh trong gen thứ k-1 và chƣa đƣợc chọn.
3. Hàm đánh giá và hàm thích nghi:
Trong hầu hết các bài toán áp dụng thuật giải di truyền, ta quy về việc tối ƣu cực đại
(hoặc cực tiểu) một hàm một hoặc nhiều biến. Khi đó, độ tốt của cá thể là giá trị hàm tƣơng
ứng của cá thể đó. Nhƣ vậy, nếu chọn một cá thể là nghiệm của bài toán thì cá thể càng tốt
khi giá trị hàm càng gần với giá trị tối ƣu (cực đại hoặc cực tiểu) càng tốt. Hàm để đánh giá
độ tốt của cá thể hay lời giải gọi là hàm mục tiêu.
Tuy nhiên, để chọn lọc các cá thể di truyền cho thế hệ tiếp theo, ta cần phải biến đổi
hàm mục tiêu sang hàm thích nghi. Điều này cũng tƣơng tự nhƣ trong tự nhiên, các cá thể
thích nghi tốt với môi trƣờng sống sẽ đƣợc bảo tồn cho thế hệ kế tiếp.
Độ thích nghi của cá thể đƣợc định nghĩa là khả năng cá thể đó đƣợc chọn lọc vào
thế hệ sau hoặc đƣợc chọn cho việc lai ghép, tạo ra cá thể mới.
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 14
Hàm mục tiêu là cơ sở để đánh giá độ thích nghi của các cá thể. Việc ánh xạ từ hàm
mục tiêu sang hàm thích nghi tùy thuộc vào mục đích của bài toán thực tế.
4. Các toán tử di truyền:
Chọn lọc là quá trình chọn một cách ngẫu nhiên các cặp cá thể trong quần thể để
thực hiện việc lai tạo ra cá thể con cho thế hệ sau. Mục đích của chọn lọc là chú trọng vào
các cá thể có độ thích nghi cao với hi vọng rằng, các con của chúng sẽ có độ thích nghi cao
hơn nữa. Một số cơ chế chọn lọc thƣờng đƣợc áp dụng:
 Chọn lọc theo vòng Roulette (Roulette wheel selection)
 Chọn lọc cạnh tranh (Tournament selection)
 Chọn lọc thứ tự (Rank selection)
 Elitism selection

Lai ghép là quá trình lấy hai giải pháp bố - mẹ và sinh ra con của chúng. Sau quá
trình chọn lọc (sinh sản), quần thể đƣợc làm giàu bởi các cá thể tốt hơn. Lai ghép tạo ra bản
sao của các cá thể tốt chứ không tạo ra các cá thể mới vì lai ghép chỉ sao chép giá trị gen
giữa cặp cá thể bố - mẹ để tạo ra cá thể con. Toán tử lai ghép đƣợc áp dụng vào tổ hợp sinh
sản với hi vọng tạo ra đƣợc thế hệ con tốt hơn.




a. Lai ghép đa điểm
b. Lai ghép đồng nhất
c. Lai ghép thứ tự
Một số kiểu lai ghép

Các kỹ thuật lai ghép thƣờng đƣợc áp dụng:
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 15
 Lai ghép một điểm (Single-point Crossover)
 Lai ghép đa điểm (Multi-point Crossover)
 Lai ghép đồng nhất (Uniform Crossover)
 Lai ghép chu trình (CX – Cycle Crossover)
 Lai ghép thứ tự (OX – Ordered Crossover)
 Lai ghép so khớp từng phần (PMX – Partially Matched Crossover)
Đột biến là thay đổi một cách ngẫu nhiên giá trị của một hoặc vài gen trong nhiễm
sắc thể. Nếu lai ghép đƣợc xem là khám phá các giải pháp hiện thời để tìm ra các giải pháp
tốt hơn thì đột biến đƣợc cho là để giúp thăm dò toàn bộ không gian tìm kiếm. Đột biến
đƣợc xem nhƣ một toán tử nền tảng để duy trì tính đa dạng di truyền trong quần thể. Đột
biến giúp thoát khỏi cái bẫy của cực tiểu cục bộ và duy trì tính đa dạng trong quần thể.
Có nhiều dạng đột biến khác nhau tùy thuộc vào cách mã hóa hay biểu diễn của
nhiễm sắc thể. Sau đây là một số kỹ thuật đột biến thƣờng dùng:

 Đột biến đảo bit (Flipping): Thay thế giá trị của gen bằng một giá trị khác
 Đột biến đổi chổ (Interchanging): Hoán vị giá trị của hai gen
 Đột biến đảo ngƣợc (Reversing): Đảo ngƣợc một đoạn gen trong nhiễm sắc thể.


Flipping
Interchanging
Reversing
Parent
1 0 0 1 0 1 0 0 0
1 0 0 1 0 1 0 0 0
1 0 0 1 0 1 0 0 0
Child
1 1 0 1 0 0 0 0 1
1 0 1 1 0 0 0 0 0
1 0 0 0 0 1 0 1 0
Một số dạng đột biến
5. Các tham số của thuật giải:
 Kích thước quần thể (PopSize) là số lƣợng cá thể trong mỗi thế hệ tiến hóa. Giá trị
của nó phụ thuộc vào sự phức tạp của từng bài toán cụ thể. Kích thƣớc quần thể lớn có
thể giúp khám phá nhanh toàn bộ không gian tìm kiếm. Tuy nhiên, nó yêu cầu chi phí
cho việc tính toán, bộ nhớ và cả thời gian thực thi. Trong thực tế, giá trị này thƣờng
đƣợc chọn là 100.
 Xác suất lai ghép (p
c
) là tham số mô tả mức độ thƣờng xuyên mà phép lai ghép đƣợc
thực hiện. Nếu p
c
= 100% thì mọi cá thể con đều đƣợc tạo ra từ việc lai ghép. Điều này
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ

Huỳnh Thanh Việt – CH1301114 Trang 16
đôi khi là không tốt vì chúng ta muốn lƣu giữ một phần của quần thể trƣớc nhằm duy
trì tính đa dạng của quần thể. Nếu p
c
= 0% thì thế hệ sau chỉ là bản sao y nguyên của
thế hệ trƣớc, có nghĩa là không có sự tiến hóa. Số lƣợng cá thể tham gia vào quá trình
lai ghép là: p
c
* PopSize.
 Xác suất đột biến (p
m
) là tham số quyết định mức độ thƣờng xuyên mà các phần tử của
nhiễm sắc thể bị đột biến. Đột biến ngăn thuật giải di truyền rơi vào cực trị cục bộ. Giá
trị này càng lớn thì càng nhiều cá thể bị biến đổi làm mất tính ổn định của quần thể. Số
lƣợng gen bị đột biến trong toàn bộ quần thể sẽ là: p
m
* PopSize * kích thƣớc nhiễm
sắc thể.
III. Các toán tử và kỹ thuật di truyền nâng cao
Phần trên hệ thống lại một cách khái quát các khái niệm và một số kỹ thuật di truyền
cơ bản: sinh sản, lai ghép và đột biến. Chúng hoạt động tốt trong nhiều bài toán thực tế. Tuy
nhiên, để cải thiện sức mạnh của thuật giải di truyền, chúng ta cần có các kỹ thuật và toán tử
phức tạp hơn để biểu diễn đƣợc hầu hết các kiểu hình tự nhiên.
Trong phần này, chúng tôi trình bày một số kỹ thuật biểu diễn mức thấp nhƣ thể trội,
thể lƣỡng bội và các toán tử đảo, sao chép, xóa bỏ, chia tách. Các toán tử cấp cao nhƣ sự
thích nghi môi trƣờng sống (niche), sự hình thành loài (speciation) và các kỹ thuật tối ƣu
nhiều mục tiêu cũng đƣợc khảo sát chi tiết. Đây cũng chính là phần chính của báo cáo.
1. Thể lƣỡng bội (Diploidy), thể trội (Dominicance) và thể khuyết (Abeyance):
Trong các phần trên, chúng ta chỉ xem xét các kiểu hình đơn giản nhất tồn tại trong
tự nhiên, đó là nhiễm sắc thể đơn bội. Một nhiễm sắc thể đơn bội chỉ chứa một tập các gen

nghĩa là một alen chiếm giữ một vị trí. Tự nhiên chứa đựng nhiều tổ chức đơn bội, nhƣng
hầu hết chúng có dạng sống không phức tạp.
Khi tự nhiên muốn kiến tạo(xây dựng) một dạng sống phức tạp hơn hay dạng sống
động vật, một cấu trúc nhiễm sắc thể phức tạp hơn là cần thiết, đó là nhiễm sắc thể lưỡng
bội hoặc nhiễm sắc thể kép. Ở dạng lƣỡng bội, một kiểu gen chứa một hoặc nhiều cặp nhiễm
sắc thể, mỗi cặp chứa thông tin cho cùng một chức năng.
Xét cấu trúc nhiễm sắc thể lƣỡng bội sau, với các kí tự khác nhau đại diện cho các
alen khác nhau (giá trị chức năng gen khác nhau):

THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 17
P q r s t
P Q R S t
Alen đại diện cho thuộc tính của một gen cụ thể. Mỗi vị trí của một kí tự đại diện cho
một alen. Các kí tự viết hoa và viết thƣờng đƣợc đƣa ra ở trên đại diện cho các alen thay thế
(alternative) tại mỗi vị trí. Trƣớc tiên, trong tự nhiên mỗi alen biểu thị các thuộc tính kiểu
hình khác nhau. Chẳng hạn, Q có thể biểu diễn cho gen tóc xám và q có thể là gen tóc đen.
Nhƣ vậy, một cặp (Q, q) mô tả một chức năng, vì thế, cần phải có cách để quyết định xem
giá trị nào đƣợc chọn bởi vì chẳng hạn, kiểu hình không thể cùng lúc tóc xám và tóc đen.
Một cách tiếp cận để loại bỏ xung đột dƣ thừa này là thông qua một cơ chế gọi là gen
trội. Tại một vị trí, một alen (gọi là gen trội) sẽ đƣợc ƣu tiên hơn một alen thay thế khác
(gọi là gen lặn). Có thể nói rằng, một alen là trội nếu nó đƣợc biểu hiện khi đi cặp với một
vài alen khác. Biểu hiện nghĩa là nó xuất hiện trong các kiểu hình.
Trong ví dụ trên, nếu giả sử tất cả các kí tự hoa là trội và tất cả các kí tự thƣờng là lặn thì
kiểu hình đƣợc biểu thị của nhiễm sắc thể ví dụ trên sẽ là:
P q r S t
→ P Q R S t (gen đƣợc biểu hiện lên kiểu hình)
p Q R S t
Gen trội luôn luôn đƣợc biểu hiện và gen lặn chỉ biểu hiện khi nó đi cặp với cùng một
gen lặn. Gen trội đƣợc biểu thị trong các phần tử dị hợp (Pp  P) hoặc đồng hợp (SS  S)

và gen lặn đƣợc biểu thị chỉ khi là đồng hợp lặn (tt  t).
Do đó trội là một toán tử di truyền đƣợc sử dụng để tính toán kiểu hình các giá trị alen
có thể tại một vị trí gen.
Nhiễm sắc thể lƣỡng bội cung cấp sự thuận lợi cho các cá thể khi môi trƣờng thay đổi
qua một khoảng thời gian. Việc có 2 gene cho phép hai giải pháp khác nhau đƣợc nhớ (ghi
lại) và chuyển qua cho con cháu. Một trong những gen này là trội (nghĩa là nó sẽ biểu hiện
lên kiểu hình), trong khi những gen khác là lặn.
Nếu điều kiện môi trƣờng thay đổi, sự trội có thể hoán chuyển, do đó một gen khác sẽ là
trội. Sự hoán chuyển này có thể xảy ra nhanh hơn mức có thể nếu cơ chế tiến hóa phải thay
đổi gen. Cơ chế này là lý tƣởng nếu môi trƣờng chuyển giữa hai trạng thái (chẳng hạn kỷ
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 18
băng hà và không phải kỷ băng hà). Thuận lợi chính của lƣỡng bội là nó cho phép sự đa
dạng rộng lớn hơn của các alen đƣợc giữ lại trong quần thể so với đơn bội. Hiện tại thì có
hại nhƣng tiềm năng là các alen hữu dụng có thể vẫn đƣợc duy trì, nhƣng ở trạng thái lặn.
Trong thuật giải di truyền, lƣỡng bội có thể hữu ích trong các ứng dụng trực tuyến, các
hệ thống có thể chuyển giữa các trạng thái khác nhau. Lƣỡng bội chiếm một vị trí quan
trọng trong thuật giải di truyền. Ngoài việc mang hai lần thông tin di truyền, nhiễm sắc thể
phải mang thông tin trội.
2. Thể đa bội (Multiploid):
Một thuật giải di truyền đa bội kết hợp một vài ứng viên (candidates) cho mỗi gen
trong một kiểu gen duy nhất, và sử dụng một vài cơ chế dạng trội để quyết định gen nào sẽ
đƣợc kích hoạt trong kiểu hình.
Trong tự nhiên, chúng ta tìm thấy nhiều tổ hợp có kiểu gen đa bội, các tổ hợp này
chứa nhiều bộ nhiễm sắc thể với một số cơ chế để xác định gen nào đƣợc biểu hiện, nghĩa là
trội tại một vị trí gen nào đó. Cơ chế này chủ yếu là nâng cao tính đa dạng của quần thể, các
gen hiện tại chƣa đƣợc sử dụng vẫn còn là loại gen đa bội, chƣa đƣợc biểu hiện, nhƣng đƣợc
bảo vệ khỏi sự tuyệt chủng cho đến khi chúng trở nên hữu ích trong các thế hệ sau.
Một kiểu gen đa bội, thể hiện trong hình dƣới, một nhiễm sắc thể có p=3 thành phần,
mỗi thành phần có chiều dài L và tƣơng tự nhƣ một nhiễm sắc thể đơn bội. Để xác định gen

nào đƣợc biểu hiện lên kiểu hình, ta dùng một mặt nạ, chỉ ra gen của thành phần nào trong p
thành phần là trội tại một vị trí cụ thể trong nhiễm sắc thể. Thông tin này đƣợc giải mã thành
kiểu hình nhƣ sau:

Đa bội loại 1 (multiploid type 1)
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 19

Đa bội loại 2 (multiploid type 2)
Một giá trị alen a tại điểm i trong mặt nạ biểu thị rằng gen thứ i trong thành phần ứng
với chỉ số a trở thành gen thứ i trong kiểu hình. Chiều dài của mặt nạ có thể ngắn hơn chiều
dài của nhiễm sắc thể, nhƣ hình Đa bội loại 2 ở trên.
Trong hình trên, nếu chiều dài của mặt nạ là m và nhiễm sắc thể có chiều dài L, một
gen tại vị trí “i” trong mặt nạ với giá trị là “a” chỉ ra rằng tập L/m gen liên tục thứ i trong
thành phần thứ a của nhiễm sắc thể là trội.
3. Một số toán tử vi mô tái thiết lập thứ tự:
3.1 Toán tử đảo (inversion):
Đảo là toán tử một ngôi, một trong các toán tử di truyền thực hiện việc tái sắp xếp
thứ tự. Toán tử đảo ngƣợc là cơ chế tự nhiên chủ yếu để tái mã hóa một vấn đề. Trong toán
tử đảo ngƣợc, hai điểm đánh dấu và chiều dài của nhiễm sắc thể đƣợc cho trƣớc, đoạn
nhiễm sắc thể giữa hai điểm đánh dấu bị cắt và đảo ngƣợc. Để rõ ràng hơn, ta xét hai nhiễm
sắc thể có chiều dài 8, hai điểm đánh dấu đƣợc chọn ngẫu nhiên (là 2 và 6) nhƣ sau:

Sử dụng toán tử đảo, ta có kết quả:

Toán tử đảo có thể sử dụng nhƣ một toán tử đột biến. Nó có một số biến thể sau:
 Đảo tuyến tính
 Đảo tuyến tính + cuối
 Đảo liên tục
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ

Huỳnh Thanh Việt – CH1301114 Trang 20
 Đảo khối
Đảo tuyến tính là phép đảo nhƣ đã thấy ở ví dụ trên. Đảo tuyến tính+ cuối là đảo
tuyến tính với xác suất đƣợc chỉ ra là 0.75. Khi đảo tuyến tính không đƣợc thực hiện, đảo
cuối có thể đƣợc thực hiện với xác suất 0.125 tại đầu trái hoặc đầu phải của chuỗi. Đảo
tuyến tính + cuối khác đảo tuyến tính ở việc phá vỡ các alen gần trung tâm của chuỗi và các
alen nằm ở cuối chuỗi một cách không cân đối. Trong chế độ đảo liên tục, phép đảo đƣợc áp
dụng với một xác suất đảo cụ thể P
i
, đối với mỗi cá thể mới khi nó đƣợc tạo. Trong chế độ
đảo khối một nửa quần thể mới đƣợc tạo đƣợc trải qua việc đảo đồng nhất.
3.2 Chia tách và dịch chuyển:
Xét quá trình hình thành giao tử khi có nhiều hơn một cặp nhiễm sắc thể trong kiểu
gen. Khi nó hình thành một giao tử, ta chọn ngẫu nhiên một trong mỗi nhiễm sắc thể đơn
bội. Quá trình chọn lọc ngẫu nhiên này đƣợc gọi là sự chia tách – phá vỡ mọi liên kết tồn tại
giữa các gen trên các nhiễm sắc thể khác nhau. Nó cho thấy rằng, sự chia tách khai thác
cách tổ chức phù hợp của các nhiễm sắc thể và quan trọng là chú ý vào cách mà nhiễm sắc
thể đƣợc tổ chức theo một cách thích hợp. Toán tử dịch chuyển đƣợc sử dụng cho mục đích
này. Toán tử dịch chuyển có thể đƣợc xem nhƣ một toán tử lai ghép liên nhiễm sắc thể.
Toán tử này đƣợc thực thi bằng cách nối các alen với tên các gen của chúng, để có thể xác
định ý nghĩa của chúng khi chúng đƣợc xáo trộn từ nhiễm sắc thể này sang nhiễm sắc thể
khác bởi toán tử dịch chuyển.
3.3 Nhân bản và xóa:
Có một cặp toán tử mức thấp khác thực hiện việc tìm kiếm theo thuật giải di truyền.
Sự sao chép trong nội bộ nhiễm sắc thể thực hiện bằng cách nhân bản một gen nào đó và đặt
nó cùng với tổ tiên của nó lên nhiễm sắc thể. Việc xóa bằng cách loại bỏ một gen trùng khỏi
nhiễm sắc thể. Tỷ lệ đột biến có thể đƣợc điều khiển một cách hiệu quả bởi các toán tử này.
Khi tỷ lệ đột biến không đổi và nhân bản trong nhiễm sắc thể tạo ra k bản sao của một gen
nào đó thì xác suất đột biến hiệu quả cho gen này đƣợc nhân với k. Mặt khác, khi việc xóa
xảy ra, tỷ lệ đột biến hiệu quả cũng giảm.

3.4 Xác định giới tính (Sexual Determination):
Ban đầu, trong sơ đồ kết cặp, ta đƣợc phép kết cặp bất kỳ hai cá thể nào và kết quả di
truyền tạo ra đƣợc chia sao cho chúng bảo đảm một kiểu gen có khả năng sống đƣợc (viable
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 21
genotype). Xác định giới tính đƣợc xử lý khác nhau trong các loài khác nhau. Tuy nhiên, chỉ
cần xét ví dụ trên con ngƣời là đủ để hiểu về sự xác định giới tính. Giới tính đƣợc xác định
trong một ngƣời bởi một trong 23 cặp nhiễm sắc thể của ngƣời. Nữ có hai nhiễm sắc thể đều
là X và nam có hai nhiễm sắc thể khác nhau là X và Y. Trong quá trình hình thành giao tử
(gametogenesis process), nam giới hình thành tinh trùng (mang nhiễm sắc thể X hoặc Y) và
nữ giới sở hữu trứng (mang nhiễm sắc thể X).
Lúc thụ tinh, nhiễm sắc thể X sinh bởi ngƣời nữ đƣợc kết hợp với nhiễm sắc thể X hoặc
Y sinh ra bởi ngƣời nam. Vì thế, phƣơng pháp xác định giới tính trên ngƣời rất đơn giản.
Chiến lƣợc tƣơng tự cũng đƣợc áp dụng để xác định giới tính trong tìm kiếm theo thuật giải
di truyền. Sự thiết lập giới tính khác nhau chia một loài thành 2 hay nhiều nhóm một cách
có hiệu quả. Điều này cho phép chuyên biệt hóa nam và nữ, do đó, kèm theo một loạt các
hành vi cần thiết cho sự sống một cách rộng rãi hơn với một quần thể cạnh tranh duy nhất.
Các nghiên cứu theo sự xác định giới tính và sự khác nhau về tìm kiếm thuật giải di truyền
nhân tạo vẫn còn đang tiếp diễn.
Khi tổ hợp các toán tử lai và toán tử đảo, ta thiết lập đƣợc một số phép lai có thể tái thiết
lập trật tự các gen. Ba phép lai theo dạng này đƣợc sử dụng nhiều trong các bài toán thực tế
là: lai so khớp từng phần (PMX), lai thứ tự (OX) và lai chu trình (CX).
3.5 Phép lai so khớp từng phần (Partially Matched Crossover – PMX):
Trong lai so khớp từng phần, hai chuỗi đƣợc sắp hàng, và hai điểm lai đƣợc chọn ngẫu
nhiên giống nhau dọc theo chiều dài của chuỗi. Hai điểm lai cho một chọn lọc khớp đƣợc
dùng để tác động thông qua toán tử trao đổi vị trí – vị trí.
Xét 2 nhiễm sắc thể:

Hai điểm lai đƣợc chọn ngẫu nhiên, quá trình lai PMX thực hiện thay đổi vị trí. Giữa các
điểm lai, các gen đƣợc hoán đổi, nghĩa là gen 3 và 2, gen 6 và 7, gen 5 và 9 thay đổi vị trí.

Đây là ánh xạ từ mẹ B qua bố A. Bây giờ ánh xạ từ bố A qua mẹ B, gen 7 và 6, gen 9 và 5,
gen 2 và 3 thay đổi vị trí cho nhau. Do đó sau khi thực hiện PMX, con cháu sinh ra là:
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 22

Mỗi con cháu chứa thông tin có thứ tự một cách từng phần đƣợc quyết định bởi cha mẹ
của chúng. PMX có thể đƣợc áp dụng cho các bài toán biểu diễn hoán vị.
3.6 Lai ghép thứ tự (Ordered crossover – OX):
Lai OX bắt đầu theo cách tƣơng tự nhƣ PMX. Nhƣng thay vì sử dụng trao đổi điểm –
điểm nhƣ PMX, lai OX áp dụng chuyển động trƣợt để lấp đầy các vị trí trống bên trái bằng
cách chuyển các vị trí ánh xạ.
Xét cặp nhiễm sắc thể cha mẹ sau:

Khi ánh xạ từ mẹ B sang bố A, vị trí 3,6, và 5 trống

Những lỗ trống này bây giờ đƣợc lấp bằng một chuyển động trƣợt bắt đầu với điểm lai thứ
hai

Những lỗ trống này sau đó đƣợc lấp bằng phiên so khớp lấy từ bố A. Do đó, qua việc
thực hiện hành động này, con cháu đƣợc sinh ra bằng lai OX nhƣ sau:

Từ ví dụ trên, chúng ta có thể thấy rằng PMX hƣớng tới khía cạnh vị trí tuyệt đối trong
khi OX hƣớng tới khía cạnh vị trí tƣơng đối.
3.7 Lai chu trình (Cycle crossover - CX):
Lai CX thực hiện tổ hợp lại dƣới các ràng buộc mà mỗi gen xuất phát từ cha hoặc mẹ.
Mỗi cá thể con đƣợc tạo dựa trên vị trí, giá trị của cha mẹ thứ nhất và cha mẹ thứ hai.
THUẬT TOÁN VÀ PHƢƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Huỳnh Thanh Việt – CH1301114 Trang 23
Xét cặp nhiễm sắc thể bố mẹ sau:
Parent A: 1 2 3 4 5 6 7 8 9

Parent B: 4 1 2 8 7 6 9 3 5
Ta sẽ tạo ra nhiễm sắc thể con A bằng cách lấy phần tử đầu tiên trong Parent A.
Child A: 1 - - - - - - - -
Tiếp tục xác định giá trị các gen tiếp theo cho Child A bằng cách so khớp với giá trị gen tại
Parent B. Chẳng hạn, gen thứ nhất của Parent B có giá trị là 4, giá trị này nằm tại vị trí 4
trong Parent A nên Child A sẽ là:
Child A: 1 - - 4 - - - - -
Tƣơng tự, gen tại vị trí thứ 4 của Parent B có giá là 8, giá trị này nằm tại vị trí 8 trong Parent
A nên Child A sẽ là:
Child A: 1 - - 4 - - - 8 -
Tiếp tục thực hiện theo cách này, cho đến khi hoàn thành 1 chu trình, tức là quay trở lại một
gen đã chọn.
Child A: 1 - 3 4 - - - 8 -
Child A: 1 2 3 4 - - - 8 -
Sau đó, các giá trị còn lại đƣợc lấy từ Parent B, ta đƣợc Child A nhƣ sau
Child A: 1 2 3 4 7 6 9 8 5
Thực hiện tƣơng tự các bƣớc trên để tạo con B, ta đƣợc:
Child B: 4 1 2 8 5 6 7 3 9

4. Vùng thích nghi (Niche) và sự hình thành loài (Speciation):
Vấn đề muôn thuở của thuật toán di truyền là hội tụ sớm. Nghĩa là, một kiểu gen không
tối ƣu kiểm soát quần thể kết quả trong đó mỗi cá thể hoặc giống hệt nhau hoặc rất giống
nhau. Hậu quả là quần thể sẽ không đủ đa dạng cho sự tiến hóa xa hơn.

×