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

Giáo trình trí tuệ nhân tạo phần 2

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

Chơng V

Các chiến lợc tìm kiếm tối u

Vấn đề tìm kiếm tối u, một cách tổng quát, có thể phát biểu nh sau. Mỗi đối tợng x
trong không gian tìm kiếm đợc gắn với một số đo giá trị của đối tợng đó f(x), mục
tiêu của ta l tìm đối tợng có giá trị f(x) lớn nhất (hoặc nhỏ nhất) trong không gian
tìm kiếm. Hm f(x) đợc gọi l hm mục tiêu. Trong chơng ny chúng ta sẽ nghiên
cứu các thuật toán tìm kiếm sau:
Các kỹ thuật tìm đờng đi ngắn nhất trong không gian trạng thái: Thuật toán A*,
thuật toán nhánh_v_cận.
Các kỹ thuật tìm kiếm đối tợng tốt nhất: Tìm kiếm leo đồi, tìm kiếm gradient, tìm
kiếm mô phỏng luyện kim.
Tìm kiếm bắt chớc sự tiến hóa: thuật toán di truyền.
I. Tìm đờng đi ngắn nhất
Trong các chơng trớc chúng ta đã nghiên cứu vấn đề tìm kiếm đờng đi từ trạng thái
ban đầu tới trạng thái kết thúc trong không gian trạng thái. Trong mục ny, ta giả sử
rằng, giá phải trả để đa trạng thái a tới trạng thái b (bởi một toán tử no đó) l một số
k(a,b) 0, ta sẽ gọi số ny l độ di cung (a,b) hoặc giá trị của cung (a,b) trong đồ thị
không gian trạng thái. Độ di của các cung đợc xác định tùy thuộc vo vấn đề. Chẳng
hạn, trong bi toán tìm đờng đi trong bản đồ giao thông, giá của cung (a,b) chính l
độ di của đờng nối thnh phố a với thnh phố b. Độ di đờng đi đợc xác định l
tổng độ di của các cung trên đờng đi. Vấn đề của chúng ta trong mục ny, tìm
đờng đi ngắn nhất từ trạng thái ban đầu tới trạng thái đích. Không gian tìm kiếm ở
đây bao gồm tất cả các đờng đi từ trạng thái ban đầu tới trạng thái kết thúc, hm mục
tiêu đợc xác định ở đây l độ di của đờng đi.
Chúng ta có thể giải quyết vấn đề đặt ra bằng cách tìm tất cả các đờng đi có thể có từ
trạng thái ban đầu tới trạng thái đích (chẳng hạn, sử sụng các kỹ thuật tìm kiếm mù),
sau đó so sánh độ di của chúng, ta sẽ tìm ra đờng đi ngắn nhất. Thủ tục tìm kiếm
ny thờng đợc gọi l thủ tục bảo tng Anh Quốc (British Museum Procedure). Trong
thực tế, kỹ thuật ny không thể áp dụng đợc, vì cây tìm kiếm thờng rất lớn, việc tìm


ra tất cả các đờng đi có thể đòi hỏi rất nhiều thời gian. Do đó chỉ có một cách tăng
hiệu quả tìm kiếm l sử dụng các hm đánh giá đề hớng dẫn tìm kiếm. Các phơng
pháp tìm kiếm đờng đi ngắn nhất m chúng ta sẽ trình by đều l các phơng pháp
tìm kiếm heuristic.
Giả sử u l một trạng thái đạt tới (có dờng đi từ trạng thái ban đầu u0 tới u). Ta xác
định hai hm đánh giá sau:
g(u) l đánh giá độ di đờng đi ngắn nhất từ u0 tới u (Đờng đi từ u0 tới trạng thái
u không phải l trạng thái đích đợc gọi l đờng đi một phần, để phân biệt với
đờng đi đầy đủ, l đờng đi từ u0 tới trạng thái đích).
51


h(u) l đánh giá độ di đờng đi ngắn nhất từ u tới trạng thái đích.
Hm h(u) đợc gọi l chấp nhận đợc (hoặc đánh giá thấp) nếu với mọi trạng thái u,
h(u) độ di đờng đi ngắn nhất thực tế từ u tới trạng thái đích. Chẳng hạn trong bi
toán tìm đờng đi ngắn nhất trên bản đồ giao thông, ta có thể xác định h(u) l độ di
đờng chim bay từ u tới đích.
Ta có thể sử dụng kỹ thuật tìm kiếm leo đồi với hm đánh giá h(u). Tất nhiên phơng
pháp ny chỉ cho phép ta tìm đợc đờng đi tơng đối tốt, cha chắc đã l đờng đi tối
u.
Ta cũng có thể sử dụng kỹ thuật tìm kiếm tốt nhất đầu tiên với hm đánh giá g(u).
Phơng pháp ny sẽ tìm ra đờng đi ngắn nhất, tuy nhiên nó có thể kém hiệu quả.
Để tăng hiệu quả tìm kiếm, ta sử dụng hm đánh giá mới :
f(u) = g(u) + h(u)
Tức l, f(u) l đánh giá độ di đờng đi ngắn nhất qua u từ trạng thái ban đầu tới trạng
thái kết thúc.
I.1 Thuật toán A*

Hình 5.1 Đồ thị không gian trạng thái với hm đánh giá
Thuật toán A* l thuật toán sử dụng kỹ thuật tìm kiếm tốt nhất đầu tiên với hm đánh

giá f(u).
Để thấy đợc thuật toán A* lm việc nh thế no, ta xét đồ thị không gian trạng thái
trong hình 5.1. Trong đó, trạng thái ban đầu l trạng thái A, trạng thái đích l B, các số
ghi cạnh các cung l độ di đờng đi, các số cạnh các đỉnh l giá trị của hm h. Đầu
tiên, phát triển đỉnh A sinh ra các đỉnh con C, D, E v F.
Tính giá trị của hm f tại các đỉnh ny ta có:
g(C) = 9,

f(C) = 9 + 15 = 24, g(D) = 7,

f(D) = 7 + 6 = 13,

g(E) = 13,

f(E) = 13 + 8 = 21, g(F) = 20,

f(F) = 20 +7 = 27

Nh vậy đỉnh tốt nhất l D (vì f(D) = 13 l nhỏ nhất). Phát triển D, ta nhận đợc các
đỉnh con H v E. Ta đánh giá H v E (mới):
g(H) = g(D) + Độ di cung(D, H) = 7 + 8 = 15, f(H) = 15 + 10 = 25.
Đờng đi tới E qua D có độ di: g(E) = g(D) + Độ di cung(D, E) = 7 + 4 = 11.

52


Vậy đỉnh E mới có đánh giá l f(E) = g(E) + h(E) = 11 + 8 = 19. Trong số các đỉnh
cho phát triển, thì đỉnh E với đánh giá f(E) = 19 l đỉnh tốt nhất. Phát triển đỉnh ny, ta
nhận đợc các đỉnh con của nó l K v I. Chúng ta tiếp tục quá trình trên cho tới khi
đỉnh đợc chọn để phát triển l đỉnh kết thúc B, độ di đờng đi ngắn nhất tới B l

g(B) = 19. Quá trình tìm kiếm trên đợc mô tả bởi cây tìm kiếm trong hình 5.2, trong
đó các số cạnh các đỉnh l các giá trị của hm đánh giá f(u).

Hình 5.2 Cây tìm kiếm theo thuật toán A*
procedure A*;
begin
1. Khởi tạo danh sách L chỉ chứa trạng thái ban đầu;
2. loop do
2.1 if L rỗng then
{thông báo thất bại; stop};
2.2 Loại trạng thái u ở đầu danh sách L;
2.3 if u l trạng thái đích then
{thông báo thnh công; stop}
2.4 for mỗi trạng thái v kề u do
{g(v) g(u) + k(u,v);
f(v) g(v) + h(v);
Đặt v vo danh sách L;}
2.5 Sắp xếp L theo thứ tự tăng dần của hm f sao cho trạng thái có giá trị của
hm f nhỏ nhất ở đầu danh sách;
end;
Chúng ta đa ra một số nhận xét về thuật toán A*.
Ngời ta chứng minh đợc rằng, nếu hm đánh giá h(u) l đánh giá thấp nhất (trờng
hợp đặc biệt, h(u) = 0 với mọi trạng thái u) thì thuật toán A* l thuật toán tối u, tức l
53


nghiệm m nó tìm ra l nghiệm tối u. Ngoi ra, nếu độ di của các cung không nhỏ
hơn một số dơng no đó thì thuật toán A* l thuật toán đầy đủ theo nghĩa rằng, nó
luôn dừng v tìm ra nghiệm.
Chúng ta chứng minh tính tối u của thuật toán A*.

Giả sử thuật toán dừng lại ở đỉnh kết thúc G với độ di đờng đi từ trạng thái ban đầu
u0 tới G l g(G). Vì G l đỉnh kết thúc, ta có h(G) = 0 v f(G) = g(G) + h(G) = g(G).
Giả sử nghiệm tối u l đờng đi từ u0 tới đỉnh kết thúc G1 với độ di l. Giả sử đờng
đi ny thoát ra khỏi cây tìm kiếm tại đỉnh lá n (Xem hình 5.3). Có thể xẩy ra hai khả
năng: n trùng với G1 hoặc không. Nếu n l G1 thì vì G đợc chọn để phát triển trớc
G1, nên f(G) f(G1), do đó g(G) g(G1)= l. Nếu n G1 thì do h(u) l hm đánh giá
thấp, nên f(n) = g(n) + h(n) l. Mặt khác, cũng do G đợc chọn để phát triển trớc n,
nên f(G) f(n), do đó, g(G) 1.

Hình 5.3 Đỉnh lá n của cây tìm kiếm nằm trên đờng đi tối u
Nh vậy, ta đã chứng minh đợc rằng độ di của đờng đi m thuật toán tìm ra g(G)
không di hơn độ di l của đờng đi tối u. Vậy nó l độ di đờng đi tối u.
Trong trờng hợp hm đánh giá g(u) = 0 với mọi u, thuật toán A* chính l thuật toán
tìm kiếm tốt nhất đầu tiên với hm đánh giá g(u) m ta đã nói đến.
Thuật toán A* đã đợc chứng tỏ l thuật toán hiệu quả nhất trong số các thuật toán
đầy đủ v tối u cho vấn đề tìm kiếm đờng đi ngắn nhất.
I.2 Thuật toán tìm kiếm nhánh-v-cận
Thuật toán nhánh_v_cận l thuật toán sử dụng tìm kiếm leo đồi với hm đánh giá
f(u).
Trong thuật toán ny, tại mỗi bớc khi phát triển trạng thái u, thì ta sẽ chọn trạng thái
tốt nhất v (f(v) nhỏ nhất) trong số các trạng thái kề u để phát triển ở bớc sau. Đi
xuống cho tới khi gặp trạng thái v l đích, hoặc gặp trạng thái v không có đỉnh kề,
hoặc gặp trạng thái v m g(v) lớn hơn độ di đờng đi tối u tạm thời, tức l đờng đi
đầy đủ ngắn nhất trong số các đờng đi đầy đủ m ta đã tìm ra, hoặc v đã phát triển
nhng g(v) hiện tại lớn hơn g(v) đợc lu, tức đờng đi mới qua v không tốt hơn
đờng đi cũ qua v. Trong các trờng hợp ny, ta không phát triển đỉnh v nữa, hay nói
cách khác, ta quay lên cha của v để tiếp tục đi xuống trạng thái tốt nhất trong các trạng
thái còn lại chờ phát triển.

54



Ví dụ: Chúng ta lại xét không gian trạng thái trong hình 3.1. Phát triển đỉnh A, ta nhận
đợc các đỉnh con C, D, E v F, f(C) = 24, f(D) = 13, f(E) = 21, f(F) = 27. Trong số
ny D l tốt nhất, phát triển D, sinh ra các đỉnh con H v E, f(H) = 25, f(E) = 19. Đi
xuống phát triển E, sinh ra các đỉnh con l K v I, f(K) = 17, f(I) = 18. Đi xuống phát
triển K sinh ra đỉnh B với f(B) = g(B) = 21. Đi xuống B, vì B l đỉnh đích, vậy ta tìm
đợc đờng đi tối u tạm thời với độ di 21. Từ B quay lên K, rồi từ K quay lên cha nó
l E. Từ E đi xuống I, f(I) = 18 nhỏ hơn độ di đờng đi tạm thời (l 21). Phát triển I
sinh ra các con K v B, f(K) = 25, f(B) = g(B) = 19. Đi xuống đỉnh B, vì đỉnh B l đích
ta tìm đợc đờng đi đầy đủ mới với độ di l 19 nhỏ hơn độ di đờng đi tối u tạm
thời cũ (21). Vậy độ di đờng đi tối u tạm thời bây giờ l 19.
Bây giờ từ B ta lại quay lên các đỉnh còn lại cha đợc phát triển. Song các đỉnh ny
đều có giá trị g lớn hơn 19, do đó không có đỉnh no đợc phát triển nữa. Nh vậy, ta
tìm đợc đờng đi tối u với độ di 19. Cây tìm kiếm đợc biểu diễn trong hình 5.4.

A

14,0
27, 20

F

13,7

C

21,13 E

D


25, 15

24,9

H

H

25,15

E 19, 11
K

17, 15

I 18, 14

K

B

21, 21

22, 20

B

K


25, 23

19, 19
Hình 5.4 Cây tìm kiếm nhánh_v_cận

Thuật toán nhánh_v_cận sẽ đợc biểu diễn bởi thủ tục Branch_and_Bound. Trong thủ
tục ny, biến cost đợc dùng để lu độ di đờng đi ngắn nhất. Giá trị ban đầu của
cost l số đủ lớn, hoặc độ di của một đờng đi đầy đủ m ta đã biết.

55


procedure Branch_and_Bound;
begin
1. Khởi tạo danh sách L chỉ chứa trạng thái ban đầu; //các trạng thái cha phát triển v
// chờ duyệt;
2. Khởi tạo danh sách M rỗng;

//các trạng thái đã phát triển;

3. Gán giá trị ban đầu cho cost;
4. loop do
4.1 if L rỗng then stop;
4.2 Loại trạng thái u ở đầu danh sách L;
4.3 if u l trạng thái kết thúc then
{if g(u) cost then cost g(u);
Quay lại 4.1};
4.4 if g(u) > cost then Quay lại 4.1;
4.5 if u trong M then


//đã xét đờng qua u;

if g(u) giá trị g(u) đợc lu trong M then Quay lại 4.1;
else cập nhật giá trị g(u) trong M
4.6 Khởi tạo danh sách L1 rỗng;
4.7 for mỗi trạng thái v kề u do
{g(v) g(u) + k(u,v);
f(v) g(v) + h(v);
Đặt v vo danh sách L1};
4.8 if u không có trong M then đặt u vo M v lu giá trị g(u);
4.9 Sắp xếp L1 theo thứ tự tăng của hm f;
4.10 Chuyển L1 vo đầu danh sách L;
end;
Ngời ta chứng minh đợc rằng, thuật toán nhánh_v_cận cũng l thuật toán đầy đủ v
tối u nếu hm đánh giá h(u) l đánh giá thấp v có độ di các cung không nhỏ hơn
một số dơng no đó.
II. Tìm đối tợng tốt nhất
Trong mục ny chúng ta sẽ xét vấn đề tìm kiếm sau. Trên không gian tìm kiếm U đợc
xác định hm giá (hm mục tiêu) cost, ứng với mỗi đối tợng x U với một giá trị số
cost(x), số ny đợc gọi l giá trị của x. Chúng ta cần tìm một đối tợng m tại đó hm
giá trị lớn nhất, ta gọi đối tợng đó l đối tợng tốt nhất. Giả sử không gian tìm kiếm
có cấu trúc cho phép ta xác định đợc khái niệm lân cận của mỗi đối tợng. Chẳng
hạn, U l không gian trạng thái thì lân cận của trạng thái u gồm tất cả các trạng thái v

56


kề u; nếu U l không gian các vectơ thực n-chiều thì lân cận của vectơ x = (x1, x2, ...
xn) gồm tất cả các vectơ ở gần x theo khoảng cách Euclit thông thờng.
Trong mục ny, ta sẽ xét kỹ thuật tìm kiếm leo đồi để tìm đối tợng tốt nhất. Sau đó ta

sẽ xét kỹ thuật tìm kiếm gradient (gradient search). Đó l kỹ thuật leo đồi áp dụng cho
không gian tìm kiếm l không gian các vectơ thực n-chiều v hm giá l l hm khả vi
liên tục. Cuối cùng ta sẽ nghiên cứu kỹ thuật tìm kiếm mô phỏng luyện kim( simulated
annealing).
II.1 Tìm kiếm leo đồi
Kỹ thuật tìm kiếm leo đồi để tìm kiếm đối tợng tốt nhất hon ton giống nh kỹ thuật
tìm kiếm leo đồi để tìm trạng thái kết thúc đã xét trong mục 4.3. Nghĩa l từ một đỉnh
u ta chỉ leo lên đỉnh tốt nhất v (đợc xác định bởi hm giá cost) trong lân cận u nếu
đỉnh ny "cao hơn" đỉnh u, tức l cost(v) > cost(u). Còn ở đây, từ một trạng thái ta "leo
lên" trạng thái kề tốt nhất (đợc xác định bởi hm giá), tiếp tục cho tới khi đạt tới
trạng thái đích; nếu cha đạt tới trạng thái đích m không leo lên đợc nữa, thì ta tiếp
tục "tụt xuống" trạng thái trớc nó, rồi lại leo lên trạng thái tốt nhất còn lại. Quá trình
tìm kiếm sẽ dừng lại ngay khi ta không leo lên đỉnh cao hơn đợc nữa.
Trong thủ tục leo đồi sau, biến u lu đỉnh hiện thời, biến v lu đỉnh tốt nhất (cost(v)
nhỏ nhất) trong các đỉnh ở lân cận u. Khi thuật toán dừng, biến u sẽ lu đối tợng tìm
đợc.
procedure Hill_Climbing;
begin
1. u một đối tợng ban đầu no đó;
2. loop do
2.1 v l trạng thái kề của u có giá trị cost lớn nhất trong các trạng thái kề
2.2 if cost(v) > cost(u) then u v
else return u;
end;
Tối u địa phơng v tối u ton cục
Rõ rng l, khi thuật toán leo đồi dừng lại tại đối tơng u*, thì giá của nó cost(u*) lớn
hơn giá của tất cả các đối tợng nằm trong lân cận của tất cả các đối tợng trên đờng
đi từ đối tợng ban đầu tới trạng thái u*. Do đó nghiệm u* m thuật toán leo đồi tìm
đợc l tối u địa phơng. Cần nhấn mạnh rằng không có gì đảm bảo nghiệm đó l tối
u ton cục theo nghĩa l cost(u*) l lớn nhất trên ton bộ không gian tìm kiếm.

Để nhận đợc nghiệm tốt hơn bằng thuật toán leo đồi, ta có thể áp dụng lặp lại nhiều
lần thủ tục leo đồi xuất phát từ một dãy các đối tợng ban đầu đợc chọn ngẫu nhiên
v lu lại nghiệm tốt nhất qua mỗi lần lặp. Nếu số lần lặp đủ lớn thì ta có thể tìm đợc
nghiệm tối u.
Kết quả của thuật toán leo đồi phụ thuộc rất nhiều vo hình dáng của mặt cong của
hm đánh giá. Nếu mặt cong chỉ có một số ít cực đại địa phơng, thì kỹ thuật leo đồi
sẽ tìm ra rất nhanh cực đại ton cục.

57


Song có những vấn đề m mặt cong của hm giá tựa nh lông nhím vậy, khi đó sử
dụng kỹ thuật leo đồi đòi hỏi rất nhiều thời gian.
II.2 Tìm kiếm gradient
Tìm kiếm gradient l kỹ thuật tìm kiếm leo đồi để tìm giá trị lớn nhất (hoặc nhỏ nhất)
của hm khả vi liên tục f(x) trong không gian các vectơ thực n-chiều. Nh ta đã biết,
trong lân cận đủ nhỏ của điểm x = (x1,...,xn), thì hm f tăng nhanh nhất theo hớng của
vectơ gradient:
Do đó t tởng của tìm kiếm gradient l từ một điểm ta đi tới điểm ở lân cận nó theo
hớng của vectơ gradient.

procedure Gradient_Search;
begin
x điểm xuất phát no đó;
repeat
x x + f(x);
until |f| < ;
end;
Trong thủ tục trên, l hằng số dơng nhỏ nhất xác định tỉ lệ của các bớc, còn l
hằng số dơng nhỏ xác định tiêu chuẩn dừng. Bằng cách lấy các bớc đủ nhỏ theo

hớng của vectơ gradient chúng ta sẽ tìm đợc điểm cực đại địa phơng, đó l điểm
m tại đó f = 0, hoặc tìm đợc điểm rất gần với cực đại địa phơng.
II.3 Tìm kiếm mô phỏng luyện kim
Nh đã nhấn mạnh ở trên, tìm kiếm leo đồi không đảm bảo cho ta tìm đợc nghiệm tối
u ton cục. Để cho nghiệm tìm đợc gần với tối u ton cục, ta áp dụng kỹ thuật leo
đồi lặp xuất phát từ các điểm đợc lựa chọn ngẫu nhiên. Bây giờ thay cho việc luôn
luôn leo lên đồi xuất phát từ các điểm khác nhau, ta thực hiện một số bớc tụt
xuống nhằm thoát ra khỏi các điểm cực đại địa phơng. Đó chính l t tởng của kỹ
thuật tìm kiếm mô phỏng luyện kim.
Trong tìm kiếm leo đồi, khi ở một trạng thái u ta luôn luôn đi tới trạng thái tốt nhất
trong lân cận nó. Còn bây giờ, trong tìm kiếm mô phỏng luyện kim, ta chọn ngẫu
nhiên một trạng thái v trong lân cận u. Nếu trạng thái v đợc chọn tốt hơn u (cost(v) >
cost(u)) thì ta đi tới v, còn nếu không ta chỉ đi tới v với một xác suất no đó. Xác suất
ny giảm theo hm mũ của độ xấu của trạng thái v. Xác suất ny còn phụ thuộc vo
tham số nhiệt độ T. Nhiệt độ T cng cao thì bớc đi tới trạng thái xấu cng có khả
năng đợc thực hiện. Trong quá trình tìm kiếm, tham số nhiệt độ T giảm dần tới
không. Khi T gần không, thuật toán hoạt động gần giống nh leo đồi, hầu nh nó
không thực hiện bớc tụt xuống. Cụ thể ta xác định xác suất đi tới trạng thái xấu v từ u
l e/T, ở đây = cost(v) - cost(u).
Sau đây l thủ tục mô phỏng luyện kim.
58


procedure Simulated_Anneaning;
begin
t 0;
u trạng thái ban đầu no đó;
T nhiệt độ ban đầu;
repeat
v trạng thái đợc chọn nhẫu nhiên trong lân cận u;

if cost(v) > cost(u) then u v
else u v với xác suất e/T;
T g(T, t);
t t + 1;
until T đủ nhỏ
end;
Trong thủ tục trên, hm g(T, t) thỏa mãn điều kiện g(T, t) < T với mọi t, nó xác định
tốc độ giảm của nhiệt độ T. Ngời ta chứng minh đợc rằng, nếu nhiệt độ T giảm đủ
chậm, thì thuật toán sẽ tìm đợc nghiệm tối u ton cục. Thuật toán mô phỏng luyện
kim đã đợc áp dụng thnh công cho các bi toán tối u cỡ lớn.
III. Tìm kiếm mô phỏng sự tiến hóa. Thuật toán di truyền
Thuật toán di truyền (TTDT) l thuật toán bắt chớc sự chọn lọc tự nhiên v di truyền.
Trong tự nhiên, các cá thể khỏe, có khả năng thích nghi tốt với môi trờng sẽ đợc tái
sinh v nhân bản ở các thế hệ sau. Mỗi cá thể có cấu trúc gien đặc trng cho phẩm
chất của cá thể đó. Trong quá trình sinh sản, các cá thể con có thể thừa hởng các
phẩm chất của cả cha v mẹ, cấu trúc gien của nó mang một phần cấu trúc gien của
cha v mẹ. Ngoi ra, trong quá trình tiến hóa, có thể xảy ra hiện tợng đột biến, cấu
trúc gien của cá thể con có thể chứa các gien m cả cha v mẹ đều không có.
Trong TTDT, mỗi cá thể đợc mã hóa bởi một cấu trúc dữ liệu mô tả cấu trúc gien của
cá thể đó, ta sẽ gọi nó l nhiễm sắc thể (chromosome). Mỗi nhiễm sắc thể đợc tạo
thnh từ các đơn vị đợc gọi l gien. Chẳng hạn, trong các TTDT cổ điển, các nhiễm
sắc thể l các chuỗi nhị phân, tức l mỗi cá thể đợc biểu diễn bởi một chuỗi nhị phân.
TTDT sẽ lm việc trên các quần thể gồm nhiều cá thể. Một quần thể ứng với một giai
đoạn phát triển sẽ đợc gọi l một thế hệ. Từ thế hệ ban đầu đợc tạo ra, TTDT bắt
chớc chọn lọc tự nhiên v di truyền để biến đổi các thế hệ. TTDT sử dụng các toán tử
cơ bản sau đây để biến đổi các thế hệ.
Toán tử tái sinh (reproduction) (còn đợc gọi l toán tử chọn lọc (selection)). Các
cá thể tốt đợc chọn lọc để đa vo thế hệ sau. Sự lựa chọn ny đợc thực hiện dựa
vo độ thích nghi với môi trờng của mỗi cá thể. Ta sẽ gọi hm ứng mỗi cá thể với
độ thích nghi của nó l hm thích nghi (fitness function).

Toán tử lai ghép (crossover). Hai cá thể cha v mẹ trao đổi các gien để tạo ra hai cá
thể con.

59


Toán tử đột biến (mutation). Một cá thể thay đổi một số gien để tạo thnh cá thể
mới.
Tất cả các toán tử trên khi thực hiện đều mang tính ngẫu nhiên. Cấu trúc cơ bản của
TTDT l nh sau:
procedure Genetic_Algorithm;
begin
t 0;
Khởi tạo thế hệ ban đầu P(t);
Đánh giá P(t) (theo hm thích nghi);
repeat
t t + 1;
Sinh ra thế hệ mới P(t) từ P(t-1) bởi
Chọn lọc
Lai ghép
Đột biến;
Đánh giá P(t);
until điều kiện kết thúc đợc thỏa mãn;
end;
Trong thủ tục trên, điều kiện kết thúc vòng lặp có thể l một số thế hệ đủ lớn no đó,
hoặc độ thích nghi của các cá thể tốt nhất trong các thế hệ kế tiếp nhau khác nhau
không đáng kể. Khi thuật toán dừng, cá thể tốt nhất trong thế hệ cuối cùng đợc chọn
lm nghiệm cần tìm.
Bây giờ ta sẽ xét chi tiết hơn toán tử chọn lọc v các toán tử di truyền (lai ghép, đột
biến) trong các TTDT cổ điển.

1. Chọn lọc: Việc chọn lọc các cá thể từ một quần thể dựa trên độ thích nghi của mỗi
cá thể. Các cá thể có độ thích nghi cao có nhiều khả năng đợc chọn. Cần nhấn mạnh
rằng, hm thích nghi chỉ cần l một hm thực dơng, nó có thể không tuyến tính,
không liên tục, không khả vi. Quá trình chọn lọc đợc thực hiện theo kỹ thuật quay
bánh xe.
Giả sử thế hệ hiện thời P(t) gồm có n cá thể {x1,..,xn}. Số n đợc gọi l cỡ của quần
thể. Với mỗi cá thể xi, ta tính độ thích nghi của nó f(xi). Tính tổng các độ thích nghi
của tất cả các cá thể trong quần thể:

Mỗi lần chọn lọc, ta thực hiện hai bớc sau:
Sinh ra một số thực ngẫu nhiên q trong khoảng (0, F);
xk l cá thể đợc chọn, nếu k l số nhỏ nhất sao cho

60


Việc chọn lọc theo hai bớc trên có thể minh họa nh sau: Ta có một bánh xe đợc
chia thnh n phần, mỗi phần ứng với độ thích nghi của một cá thể (hình 5.5). Một mũi
tên chỉ vo bánh xe. Quay bánh xe, khi bánh xe dừng, mũi tên chỉ vo phần no, cá thể
ứng với phần đó đợc chọn.

Hình 5.5 Kỹ thuật quay bánh xe
Rõ rng l với cách chọn ny, các cá thể có thể có độ thích nghi cng cao cng có khả
năng đợc chọn. Các cá thể có độ
thích nghi cao có thể có một hay nhiều bản sao, các cá thể có độ thích nghi thấp có thể
không có mặt ở thế hệ sau (nó bị chết đi).
2. Lai ghép: Trên cá thể đợc chọn lọc, ta tíến hnh toán tử lai ghép. Đầu tiên ta cần
đa ra xác suất lai ghép pc. xác suất ny cho ta hy vọng có pc x n cá thể đợc lai ghép
(n l cỡ của quần thể).
Với mỗi cá thể ta thực hiện hai bớc sau:

Sinh ra số thực ngẫu nhiên r trong đoạn [0, 1];
Nếu r < pc thì cá thể đó đợc chọn để lai ghép
Từ các cá thể đợc chọn để lai ghép, ngời ta cặp đôi chúng một cách ngẫu nhiên.
Trong trờng hợp các nhiễm sắc thể l các chuỗi nhị phân có độ di cố định m, ta có
thể thực hiện lai ghép nh sau:
Với mỗi cặp, sinh ra một số nguyên ngẫu nhiên p trên đoạn [1, m], p l vị trí điểm
ghép. Cặp gồm hai nhiễm sắc thể
a = (a1 , ... , ap , ap+1 , ... , am)
b = (b1 , ... , bp , bp+1 , ... , bm)
đợc thay bởi hai con l:
a' = (a1 , ... , ap , bp+1 , ... , bm)
b' = (b1 , ... , bp , ap+1 , ... , am)
3. Đột biến: Ta thực hiện toán tử đột biến trên các cá thể có đợc sau quá trình lai
ghép. Đột biến l thay đổi trạng thái một số gien no đó trong nhiễm sắc thể. Mỗi gien
chịu đột biến với xác suất pm. Xác suất đột biến pm do ta xác định v l xác suất thấp.
Sau đây l toán tử đột biến trên các nhiễm sắc thể chuỗi nhị phân.
61


Với mỗi vị trí i trong nhiễm sắc thể:
a = (a1 , ... , ai , ... , am)
Ta sinh ra một số thực nghiệm ngẫu nhiên pi trong [0,1]. Qua đột biến a đợc biến
thnh a nh sau:
a' = (a'1 , ... , a'i , ... , a'm)
Trong đó :
ai nếu pi pm
ai =
1 - ai nếu pi < pm
Sau quá trình chọn lọc, lai ghép, đột biến, một thế hệ mới đợc sinh ra. Công việc còn
lại của thuật toán di truyền bây giờ chỉ l lặp lại các bớc trên.

Ví dụ: Xét bi toán tìm max của hm f(x) = x2 với x l số nguyên trên đoạn [0,31]. Để
sử dụng TTDT, ta mã hoá mỗi số nguyên x trong đoạn [0,31] bởi một số nhị phân độ
di 5, chẳng hạn, chuỗi 11000 l mã của số nguyên 24. Hm thích nghi đợc xác định
l chính hm f(x) = x2. Quần thể ban đầu gồm 4 cá thể (cỡ của quần thể l n = 4). Thực
hiện quá trình chọn lọc, ta nhận đợc kết quả trong bảng sau. Trong bảng ny, ta thấy
cá thể 2 có độ thích nghi cao nhất (576) nên nó đợc chọn 2 lần, cá thể 3 có độ thích
nghi thấp nhất (64) không đợc chọn lần no. Mỗi cá thể 1 v 4 đợc chọn 1 lần.
Bảng kết quả chọn lọc

Thực hiện quá trình lai ghép với xác suất lai ghép pc = 1, nên cá thể 1, 2, v 4 sau chọn
lọc đều đợc lai ghép. Kết quả lai ghép đợc cho trong bảng sau. Trong bảng ny,
chuỗi thứ nhất đợc lai ghép với chuỗi thứ hai với điểm ghép l 4, chuỗi thứ hai v 4
đợc lai ghép với nhau với điểm ghép l 2.
Bảng kết quả lai ghép
Quần thể sau
chọn lọc

Điểm ghép

Quần thể sau lai
ghép

x

Độ thích nghi
f(x) = x2

0110|1

4


01100

12

144

1100|0

4

11001

25

625

11|000

2

11011

27

729

10|011

2


10000

16

256

62


Để thực hiện quá trình đột biến, ta chọn xác suất đột biến pm= 0,001, tức l ta hy vọng
có 5x4x0,001 = 0,02 bit đợc đột biến. Thực tế sẽ không có bit no đợc đột biến. Nh
vậy thế hệ mới l quần thể sau lai ghép. Trong thế hệ ban đầu, độ thích nghi cao nhất
l 576, độ thích nghi trung bình 292. Trong thế hệ sau, độ thích nghi cao nhất l 729,
trung bình l 438. Chỉ qua một thế hệ, các cá thể đã tốt lên rất nhiều.
Thuật toán di truyền khác với các thuật toán tối u khác ở các điểm sau:
TTDT chỉ sử dụng hm thích nghi để hớng dẫn sự tìm kiếm, hm thích nghi chỉ
cần l hm thực dơng. Ngoi ra, nó không đòi hỏi không gian tìm kiếm phải có
cấu trúc no cả.
TTDT lm việc trên các nhiễm sắc thể l mã của các cá thể cần tìm.
TTDT tìm kiếm từ một quần thể gồm nhiều cá thể.
Các toán tử trong TTDT đều mang tính ngẫu nhiên.
Để giải quyết một vấn đề bằng TTDT, chúng ta cần thực hiện các bớc sau đây:
Trớc hết ta cần mã hóa các đối tợng cần tìm bởi một cấu trúc dữ liệu no đó.
Chẳng hạn, trong các TTDT cổ điển, nh trong ví dụ trên, ta sử dụng mã nhị phân.
Thiết kế hm thích nghi. Trong các bi toán tối u, hm thích nghi đợc xác định
dựa vo hm mục tiêu.
Trên cơ sở cấu trúc của nhiễm sắc thể, thiết kế các toán tử di truyền (lai ghép, đột
biến) cho phù hợp với các vấn đề cần giải quyết.
Xác định cỡ của quần thể v khởi tạo quần thể ban đầu.

Xác định xác suất lai ghép pc v xác suất đột biến. Xác suất đột biến cần l xác
suất thấp. Ngời ta (Goldberg, 1989) khuyên rằng nên chọn xác suất lai ghép l 0,6
v xác suất đột biến l 0,03. Tuy nhiên cần qua thử nghiệm để tìm ra các xác suất
thích hợp cho vấn đề cần giải quyết.
Nói chung thuật ngữ TTDT l để chỉ TTDT cổ điển, khi m cấu trúc của các nhiễm sắc
thể l các chuỗi nhị phân với các toán tử di truyền đã đợc mô tả ở trên. Song trong
nhiều vấn đề thực tế, thuận tiện hơn, ta có thể biểu diễn nhiễm sắc thể bởi các cấu trúc
khác, chẳng hạn vectơ thực, mảng hai chiều, cây,...
Tơng ứng với cấu trúc của nhiễm sắc thể, có thể có nhiều cách xác định các toán tử di
truyền. Quá trình sinh ra thế hệ mới P(t) từ thế hệ cũ P(t - 1) cũng có nhiều cách chọn
lựa. Ngời ta gọi chung các thuật toán ny l thuật toán tiến hóa (evolutionary
algorithms) hoặc chơng trình tiến hóa (evolution program).
IV. Bi tập
1. Chứng minh rằng nếu độ di của các cung không nhỏ hơn một số dơng no đó

thì thuật toán A* l thuật toán đầy đủ.
2. Viết chơng trình minh họa tìm kiếm theo thuật toán A*, nhánh v cận, đối tợng

tốt nhất, leo đồi của bi toán 8 số.
3. Viết chơng trình giải bi toán 8 con hậu.
4. ng dng gii thut di truyn tỡm giỏ tr ca cỏc bin nguyờn x, y, z sao cho

hm f(x,y,z) = ysin(zcos(x)) xcos(zsin(y)) t giỏ tr ln nht.

63


Bit rng 0 < x < 10, 0< y < 10, 0 5. Cho đồ thị không gian trạng thái:
30


A
14

13

15
20

17

24

C

6

F

16

D
13

4

12

1


8

B

12

E

15

4

11

18

G

22

0

K

Để tìm đờng đi từ A tới K, hãy vẽ cây tìm kiếm của tìm kiếm A*, nhánh v cận v leo
đồi.

64



Chơng VI

Tìm kiếm có đối thủ

Nghiên cứu máy tính chơi cờ đã xuất hiện rất sớm. Không lâu sau khi máy tính lập
trình đợc ra đời vo năm 1950, Claude Shannon đã viết chơng trình chơi cờ đầu tiên.
các nh nghiên cứu Trí Tuệ Nhân Tạo đã nghiên cứu việc chơi cờ, vì rằng máy tính
chơi cờ l một bằng chứng rõ rng về khả năng máy tính có thể lm đợc các công
việc đòi hỏi trí thông minh của con ngời. Trong chơng ny chúng ta sẽ xét các vấn
đề sau đây:
Chơi cờ có thể xem nh vấn đề tìm kiếm trong không gian trạng thái.
Chiến lợc tìm kiếm nớc đi Minimax.
Phơng pháp cắt cụt -, một kỹ thuật để tăng hiệu quả của tìm kiếm Minimax.
I. Cây trò chơi v tìm kiếm trên cây trò chơi
Trong chơng ny chúng ta chỉ quan tâm nghiên cứu các trò chơi có hai ngời tham
gia, chẳng hạn các loại cờ (cờ vua, cờ tớng, cờ ca rô...). Một ngời chơi đợc gọi l
Trắng, đối thủ của anh ta đợc gọi l Đen. Mục tiêu của chúng ta l nghiên cứu chiến
lợc chọn nớc đi cho Trắng (Máy tính cầm quân Trắng).
Chúng ta sẽ xét các trò chơi hai ngời với các đặc điểm sau. Hai ngời chơi thay phiên
nhau đa ra các nớc đi tuân theo các luật đi no đó, các luật ny l nh nhau cho cả
hai ngời. Điển hình l cờ vua, trong cờ vua hai ngời chơi có thể áp dụng các luật đi
con tốt, con xe, ... để đa ra nớc đi. Luật đi con tốt Trắng xe Trắng, ... cũng nh luật
đi con tốt Đen, xe Đen, ... Một đặc điểm nữa l hai ngời chơi đều đợc biết thông tin
đầy đủ về các tình thế trong trò chơi (không nh trong chơi bi, ngời chơi không thể
biết các ngời chơi khác còn những con bi gì). Vấn đề chơi cờ có thể xem nh vấn đề
tìm kiếm nớc đi, tại mỗi lần đến lợt mình, ngời chơi phải tìm trong số rất nhiều
nớc đi hợp lệ (tuân theo đúng luật đi), một nớc đi tốt nhất sao cho qua một dãy nớc
đi đã thực hiện, anh ta ginh phần thắng. Tuy nhiên vấn đề tìm kiếm ở đây sẽ phức tạp
hơn vấn đề tìm kiếm m chúng ta đã xét trong các chơng trớc, bởi vì ở đây có đối
thủ, ngời chơi không biết đợc đối thủ của mình sẽ đi nớc no trong tơng lai. Sau

đây chúng ta sẽ phát biểu chính xác hơn vấn đề tìm kiếm ny.
Vấn đề chơi cờ có thể xem nh vấn đề tìm kiếm trong không gian trạng thái. Mỗi trạng
thái l một tình thế (sự bố trí các quân của hai bên trên bn cờ).
Trạng thái ban đầu l sự sắp xếp các quân cờ của hai bên lúc bắt đầu cuộc chơi.
Các toán tử l các nớc đi hợp lệ.
Các trạng thái kết thúc l các tình thế m cuộc chơi dừng, thờng đợc xác định
bởi một số điều kiện dừng no đó.
Một hm kết cuộc (payoff function) ứng mỗi trạng thái kết thúc với một giá trị no
đó. Chẳng hạn nh cờ vua, mỗi trạng thái kết thúc chỉ có thể l thắng, hoặc thua
65


(đối với Trắng) hoặc hòa. Do đó, ta có thể xác định hm kết cuộc l hm nhận giá
trị 1 tại các trạng thái kết thúc l thắng (đối với Trắng), -1 tại các trạng thái kết
thúc l thua (đối với Trắng) v 0 tại các trạng thái kết thúc hòa. Trong một số trò
chơi khác, chẳng hạn trò chơi tính điểm, hm kết cuộc có thể nhận giá trị nguyên
trong khoảng [-k, k] với k l một số nguyên dơng no đó.
Nh vậy vấn đề của Trắng l, tìm một dãy nớc đi sao cho xen kẽ với các nớc đi của
Đen tạo thnh một đờng đi từ trạng thái ban đầu tới trạng thái kết thúc l thắng cho
Trắng.
Để thuận lợi cho việc nghiên cứu các chiến lợc chọn nớc đi, ta biểu diễn không gian
trạng thái trên dới dạng cây trò chơi.
Cây trò chơi
Cây trò chơi đợc xây dựng nh sau. Gốc của cây ứng với trạng thái ban đầu. Ta sẽ gọi
đỉnh ứng với trạng thái m Trắng (Đen) đa ra nớc đi l đỉnh Trắng (Đen). Nếu một
đỉnh l Trắng (Đen) ứng với trạng thái u, thì các đỉnh con của nó l tất cả các đỉnh biểu
diễn trạng thái v, v nhận đợc từ u do Trắng (Đen) thực hiện nớc đi hợp lệ no đó. Do
đó, trên cùng một mức của cây các đỉnh đều l Trắng hặc đều l Đen, các lá của cây
ứng với các trạng thái kết thúc.
Ví dụ: Xét trò chơi Dodgen (đợc tạo ra bởi Colin Vout). Có hai quân Trắng v hai

quân Đen, ban đầu đợc xếp vo bn cờ 3*3 (hình 6.1). Quân Đen có thể đi tới ô trống
ở bên phải, ở trên hoặc ở dới. Quân Trắng có thể đi tới trống ở bên trái, bên phải, ở
trên. Quân Đen nếu ở cột ngoi cùng bên phải có thể đi ra khỏi bn cờ, quân Trắng
nếu ở hng trên cùng có thể đi ra khỏi bn cờ. Ai đa hai quân của mình ra khỏi bn
cờ trớc sẽ thắng, hoặc tạo ra tình thế bắt đối phơng không đi đợc cũng sẽ thắng.

Hình 6.1 Trò chơi Dodgem

66


Giả sử Đen đi trớc, ta có cây trò chơi đợc biểu diễn nh trong hình 6.2.

Hình 6.2 Cây trò chơi Dodgem với Đen đi trớc
Quá trình chơi cờ l quá trình Trắng v Đen thay phiên nhau đa ra quyết định, thực
hiện một trong số các nớc đi hợp lệ. Trên cây trò chơi, quá trình đó sẽ tạo ra đờng đi
từ gốc tới lá. Giả sử tới một thời điểm no đó, đờng đi đã dẫn tới đỉnh u. Nếu u l
đỉnh Trắng (Đen) thì Trắng (Đen) cần chọn đi tới một trong các đỉnh Đen (Trắng) v l
con của u. Tại đỉnh Đen (Trắng) v m Trắng (Đen) vừa chọn, Đen (Trắng) sẽ phải
chọn đi tới một trong các đỉnh Trắng (Đen) w l con của v. Quá trình trên sẽ dừng lại
khi đạt tới một đỉnh l lá của cây.
Giả sử Trắng cần tìm nớc đi tại đỉnh u. Nớc đi tối u cho Trắng l nớc đi dần tới
đỉnh con của v l đỉnh tốt nhất (cho Trắng) trong số các đỉnh con của u. Ta cần giả
thiết rằng, đến lợt đối thủ chọn nớc đi từ v, Đen cũng sẽ chọn nớc đi tốt nhất cho
anh ta. Nh vậy, để chọn nớc đi tối u cho Trắng tại đỉnh u, ta cần phải xác định giá
trị các đỉnh của cây trò chơi gốc u. Giá trị của các đỉnh lá (ứng với các trạng thái kết
thúc) l giá trị của hm kết cuộc. Đỉnh có giá trị cng lớn cng tốt cho Trắng, đỉnh có
giá trị cng nhỏ cng tốt cho Đen. Để xác định giá trị các đỉnh của cây trò chơi gốc u,
ta đi từ mức thấp nhất lên gốc u.
Giả sử u l đỉnh trong của cây v giá trị các đỉnh con của nó đã đợc xác định. Khi đó

nếu u l đỉnh Trắng thì giá trị của nó đợc xác định l giá trị lớn nhất trong các giá trị
của các đỉnh con. Còn nếu u l đỉnh Đen thì giá trị của nó l giá trị nhỏ nhất trong các
giá trị của các đỉnh con.

67


Ví dụ: Xét cây trò chơi trong hình 6.3, gốc a l đỉnh Trắng. Giá trị của các đỉnh l số
ghi cạnh mỗi đỉnh. Đỉnh i l Trắng, nên giá trị của nó l max(3,-2) = 3, đỉnh d l đỉnh
Đen, nên giá trị của nó l min(2, 3, 4) = 2.

Hình 6.3 Gán giá trị cho các đỉnh của cây trò chơi
Việc gán giá trị cho các đỉnh đợc thực hiện bởi các hm đệ qui MaxVal v MinVal.
Hm MaxVal xác định giá trị cho các đỉnh Trắng, hm MinVal xác định giá trị cho
các đỉnh Đen.
function MaxVal(u);
begin
if u l đỉnh kết thúc then return f(u)
else return max{MinVal(v) | v l đỉnh con của u}
end;
function MinVal(u);
begin
if u l đỉnh kết thúc then return f(u)
else return min{MaxVal(v) | v l đỉnh con của u}
end;
Trong các hm đệ quy trên, f(u) l giá trị của hm kết cuộc tại đỉnh kết thúc u. Sau đây
l thủ tục chọn nớc đi cho Trắng tại đỉnh u. Trong thủ tục Minimax(u,v), v l biến lu
lại trạng thái m Trắng đã chọn đi tới từ u.
procedure Minimax(u, v);
begin

val -;
for mỗi w l đỉnh con của u do
if val <= MinVal(w) then
{ val MinVal(w);

68


vw

}

end;
Thủ tục chọn nớc đi nh trên gọi l chiến lợc Minimax, bởi vì Trắng đã chọn đợc
nớc đi dẫn tới đỉnh con có giá trị l max của các giá trị các đỉnh con, v Đen đáp lại
bằng nớc đi tới đỉnh có giá trị l min của các giá trị các đỉnh con.
Thuật toán Minimax l thuật toán tìm kiếm theo độ sâu, ở đây ta đã ci đặt thuật toán
Minimax bởi các hm đệ quy. Bạn đọc hãy viết thủ tục không đệ quy thực hiện thuật
toán ny.
Về mặt lí thuyết, chiến lợc Minimax cho phép ta tìm đợc nớc đi tối u cho Trắng.
Song nó không thực tế, chúng ta sẽ không có đủ thời gian để tính đợc nớc đi tối u.
Bởi vì thuật toán Minimax đòi hỏi ta phải xem xét ton bộ các đỉnh của cây trò chơi.
Trong các trò chơi hay, cây trò chơi l cực kỳ lớn. Chẳng hạn, đối với cờ vua, chỉ tính
đến độ sâu 40, thì cây trò chơi đã có khoảng 10120 đỉnh! Nếu cây có độ cao m, v tại
mỗi đỉnh có b nớc đi thì độ phức tạp về thời gian của thuật toán Minimax l O(bm).
Để có thể tìm ra nhanh nớc đi tốt (không phải l tối u) thay cho việc sử dụng hm
kết cuộc v xem xét tất cả các khả năng dẫn tới các trạng thái kết thúc, chúng ta sẽ sử
dụng hm đánh giá v chỉ xem xét một bộ phận của cây trò chơi.
Hm đánh giá
Hm đánh giá eval ứng với mỗi trạng thái u của trò chơi với một giá trị số eval(u), giá

trị ny l sự đánh giá độ lợi thế của trạng thái u. Trạng thái u cng thuận lợi cho
Trắng thì eval(u) l số dơng cng lớn; u cng thuận lợi cho Đen thì eval(u) l số âm
cng nhỏ; eval(u) 0 đối với trạng thái không lợi thế cho ai cả.
Chất lợng của chơng trình chơi cờ phụ thuộc rất nhiều vo hm đánh giá. Nếu hm
đánh giá cho ta sự đánh giá không chính xác về các trạng thái, nó có thể hớng dẫn ta
đi tới trạng thái đợc xem l tốt, nhng thực tế lại rất bất lợi cho ta. Thiết kế một hm
đánh giá tốt l một việc khó, đòi hỏi ta phải quan tâm đến nhiều nhân tố: các quân còn
lại của hai bên, sự bố trí của các quân đó, ... ở đây có sự mâu thuẫn giữa độ chính xác
của hm đánh giá v thời gian tính của nó. Hm đánh giá chính xác sẽ đòi hỏi rất
nhiều thời gian tính toán, m ngời chơi lại bị giới hạn bởi thời gian phải đa ra nớc
đi.
Ví dụ 1: Sau đây ta đa ra một cách xây dựng hm đánh giá đơn giản cho cờ vua. Mỗi
loại quân đợc gán một giá trị số phù hợp với sức mạnh của nó. Chẳng hạn, mỗi tốt
Trắng (Đen) đợc cho 1 (-1), mã hoặc tợng Trắng (Đen) đợc cho 3 (-3), xe Trắng
(Đen) đợc cho 5 (-5) v hong hậu Trắng (Đen) đợc cho 9 (-9). Lấy tổng giá trị của
tất cả các quân trong một trạng thái, ta sẽ đợc giá trị đánh giá của trạng thái đó. Hm
đánh giá nh thế đợc gọi l hm tuyến tính có trọng số, vì nó có thể biểu diễn dới
dạng: s1w1 +s2w2+. . . +snwn
Trong đó, wi l giá trị mỗi loại quân, còn si l số quân loại đó. Trong cách đánh giá
ny, ta đã không tính đến sự bố trí của các quân, các mối tơng quan giữa chúng.

69


Ví dụ 2: Bây giờ ta đa ra một cách đánh giá các trạng thái trong trò chơi Dodgem.
Mỗi quân Trắng ở một vị trí trên bn cờ đợc cho một giá trị tơng ứng trong bảng bên
trái hình 4.4. Còn mỗi quân Đen ở một vị trí sẽ đợc cho một giá trị tơng ứng trong
bảng bên phải hình 4.4:
Ngoi ra, nếu quân Trắng cản trực tiếp một quân Đen, nó đợc thêm 40 điểm, nếu cản
gián tiếp nó đợc thêm 30 điểm (Xem hình 6.4). Tơng tự, nếu quân Đen cản trực tiếp

quân Trắng nó đợc thêm -40 điểm, còn cản gián tiếp nó đợc thêm -30 điểm.

Hình 6.4 Đánh giá các quân trong trò chơi Dodgem
áp dụng các qui tắc trên, ta tính đợc giá trị của trạng thái ở bên trái hình 6.6 l 75, giá
trị của trạng thái bên phải hình vẽ l -5.

Hình 6.5 Đánh giá sự tơng quan giữa quân trắng v đen

Hình 6.6 Giá trị của một số trạng thái trong trò chơi Dodgem
Trong cánh đánh giá trên, ta đã xét đến vị trí của các quân v mối tơng quan giữa các
quân.
Một cách đơn giản để hạn chế không gian tìm kiếm l, khi cần xác định nớc đi cho
Trắng tại u, ta chỉ xem xét cây trò chơi gốc u tới độ cao h no đó. áp dụng thủ tục
Minimax cho cây trò chơi gốc u, độ cao h v sử dụng giá trị của hm đánh giá cho các
lá của cây đó, chúng ta sẽ tìm đợc nớc đi tốt cho Trắng tại u.

70


II. Phơng pháp cắt cụt alpha - beta
Trong chiến lợc tìm kiếm Minimax, để tìm kiếm nớc đi tốt cho Trắng tại trạng thái
u, cho dù ta hạn chế không gian tìm kiếm trong phạm vi cây trò chơi gốc u với độ cao
h, thì số đỉnh của cây trò chơi ny cũng còn rất lớn với h 3. Chẳng hạn, trong cờ vua,
nhân tố nhánh trong cây trò chơi trung bình khoảng 35, thời gian đòi hỏi phải đa ra
nớc đi l 150 giây, với thời gian ny trên máy tính thông thờng chơng trình của bạn
chỉ có thể xem xét các đỉnh trong độ sâu 3 hoặc 4. Một ngời chơi cờ trình độ trung
bình cũng có thể tính trớc đợc 5, 6 nớc hoặc hơn nữa, v do đó chơng trình của
bạn mới đạt trình độ ngời mới tập chơi!
Khi đánh giá đỉnh u tới độ sâu h, một thuật toán Minimax đòi hỏi ta phải đánh giá tất
cả các đỉnh của cây gốc u tới độ sâu h. Song ta có thể giảm bớt số đỉnh cần phải đánh

giá m vẫn không ảnh hởng gì đến sự đánh giá đỉnh u. Phơng pháp cắt cụt alphabeta cho phép ta cắt bỏ các nhánh không cần thiết cho sự đánh giá đỉnh u.
T tởng của kỹ thuật cắt cụt alpha-beta l nh sau: Nhớ lại rằng, chiến lợc tìm kiếm
Minimax l chiến lợc tìm kiếm theo độ sâu. Giả sử trong quá trính tìm kiếm ta đi
xuống đỉnh a l đỉnh Trắng, đỉnh a có ngời anh em v đã đợc đánh giá. Giả sử cha
của đỉnh a l b v b có ngời anh em u dã đợc đánh giá, v giả sử cha của b l c (Xem
hình 6.7). Khi đó ta có giá trị đỉnh c (đỉnh Trắng) ít nhất l giá trị của u, giá trị của
đỉnh b (đỉnh Đen) nhiều nhất l giá trị v. Do đó, nếu eval(u) eval(v), ta không cần đi
xuống để đánh giá đỉnh a nữa m vẫn không ảnh hởng gì dến đánh giá đỉnh c. Hay
nói cách khác ta có thể cắt bỏ cây con gốc a. Lập luận tơng tự cho trờng hợp a l
đỉnh Đen, trong trờng hợp ny nếu eval(u) eval(v) ta cũng có thể cắt bỏ cây con gốc
a.

Hình 6.7 Cắt bỏ cây con gốc a, nếu eval(u) eval(v)
Để ci đặt kỹ thuật cắt cụt alpha-beta, đối với các đỉnh nằm trên đờng đi từ gốc tới
đỉnh hiện thời, ta sử dụng tham số để ghi lại giá trị lớn nhất trong các giá trị của các
đỉnh con đã đánh giá của một đỉnh Trắng, còn tham số ghi lại giá trị nhỏ nhất trong
các đỉnh con đã đánh giá của một đỉnh Đen. Giá trị của v sẽ đợc cập nhật trong
quá trình tìm kiếm. v đợc sử dụng nh các biến địa phơng trong các hm
MaxVal(u, , ) (hm xác định giá trị của đỉnh Trắng u) v Minval(u, , ) (hm xác
định giá trị của đỉnh Đen u).
Thuật toán tìm nớc đi cho Trắng sử dụng kỹ thuật cắt cụt alpha-beta, đợc ci đặt bởi
thủ tục Alpha_beta(u,v), trong đó v l tham biến ghi lại đỉnh m Trắng cần đi tới từ u.

71


function MaxVal(u , );
begin
if u l lá của cây hạn chế hoặc u l đỉnh kết thúc then return eval(u)
else {

for mỗi đỉnh v l con của u do
{ max[, MinVal(v, , )];
// Cắt bỏ các cây con từ các đỉnh v còn lại
if then return ; }
return ;
}
end;
function MinVal(u, , );
begin
if u l lá của cây hạn chế hoặc u l đỉnh kết thúc then return eval(u)
else {
for mỗi đỉnh v l con của u do
{ min[, MaxVal(v, , )];
// Cắt bỏ các cây con từ các đỉnh v còn lại
if then return ; }
return ;
}
end;
procedure Alpha_beta(u, v);
-;
;
begin
for mỗi đỉnh w l con của u do
if MinVal(w, , ) then
{ MinVal(w, , );
v w;}
end;
Ví dụ. Xét cây trò chơi gốc u (đỉnh Trắng) giới hạn bởi độ cao h = 3 (hình 4.8). Số ghi
cạnh các lá l giá trị của hm đánh giá. áp dụng chiến lợc Minimax v kỹ thuật cắt
72



cụt, ta xác định đợc nớc đi tốt nhất cho Trắng tại u, đó l nớc đi dẫn tới đỉnh v có
giá trị 10. Cạnh mỗi đỉnh ta cũng cho giá trị của cặp tham số (, ). Khi gọi các hm
MaxVal v MinVal để xác định giá trị của đỉnh đó. Các nhánh bị cắt bỏ đợc chỉ ra
trong hình 6.8.
10
MAX

U

MAX

MIN

(-3,)
10

(-,)
-3

MIN

(-,)
5

(-,-3)
10

-3


(-3,10)
12

10

(-,5)

(10,)
8

V

(10,)
8

(-3,)

-7

5

10

-5

12

8


(-,)

(-7,)

(-,-3)

(-3,10)

(-3,10)

(10,)

Hình 6.8 Xác định giá trị các đỉnh bằng kỹ thuật cắt cụt
III. Bi tập
1. Viết chơng trình trò chơi Dodgem có áp dụng phơng pháp cắt cụt alpha-beta.
2. Dùng kỹ thuật cắt cụt alpha-beta để định trị cho nút gốc của cây trò chơi (các nút lá
đã đợc gán trị):

3. Xét một trò chơi có 6 viên bi, hai ngời thay phiên nhau nhặt từ 1 đến 3 viên.
Ngời phải nhặt viên bi cuối cùng thì bị thua.
a. Vẽ ton bộ cây trò chơi
b. Sử dụng kỹ thuật cắt tỉa alpha-beta định trị cho nút gốc
c. Ai sẽ thắng trong trò chơi ny nếu hai ngời đều đi những nớc tốt nhất. Hãy
cho một trờng hợp tổng quát khi ban đầu có n viên bi v mỗi lần có thể nhặt từ
1 đến m viên.

73


4. Xét một trò chơi có 7 cái đĩa. Ngời chơi 1 chia thnh 2 chồng có số đĩa không

bằng nhau. Ngời chơi 2 chọn một chồng trong số các chồng con để chia v tiếp
tục chia thnh 2 chồng không bằng nhau. Hai ngời luân phiên nhau chia đĩa nh
vậy cho đến khi không thể chia đợc nữa thì thua
a. Vẽ ton bộ cây trò chơi
b. Sử dụng kỹ thuật cắt tỉa alpha-beta định trị cho nút gốc
c. Ai sẽ thắng trong trò chơi ny nếu hai ngời đều đi những nớc tốt nhất.

74


PhÇn III

HỌC MÁY (MACHINE LEARNING)
Nội dung chính: Trong phần này, chúng ta sẽ tìm hiểu về một nhánh nghiên cứu hiện
đại của Trí Tuệ Nhân Tạo, đó là học máy bao gồm giải thuật ID3, mạng neuron, và
giải thuật di truyền.
Mục tiêu cần đạt : Sau chương này, sinh viên có thể :
Hiểu được mục tiêu của lĩnh vực ‘máy hoc’.
Biết 3 tiếp cận học của lĩnh vực học máy.
Vận dụng giải thuật ID3 vào các bài toán thực tế
Hiểu khái niệm mạng neuron và các vấn đề có liên quan
Hiểu giải thuật di truyền và ứng dụng của nó vào các bài toán thực tế.
Kiến thức tiên quyết: Biểu diễn tri thức ở dạng luật, tìm kiếm trong không gian trạng
thái, khái niệm Entropy trong Lý thuyết thông tin.
GIỚI THIỆU
Khi được hỏi về những kỹ năng thông minh nào là cơ bản nhất đồng thời khó tự động
hóa nhất của con người ngoài các hoạt động sáng tạo nghệ thuật, hành động ra quyết
định mang tính đạo đức, trách nhiệm xã hội thì người ta thường đề cập đến vấn đề
ngôn ngữ và học. Trãi qua nhiều năm, hai lĩnh vực này vẫn là mục tiêu, thách thức của
khoa học TTNT.

Tầm quan trọng của việc học thì không cần phải tranh cãi, vì khả năng học chính là
một trong những thành tố quan trọng của hành vi thông minh. Mặc dù tiếp cận hệ
chuyên gia đã phát triển được nhiều năm, song số lượng các hệ chuyên vẫn còn hạn
chế. Một trong những nguyên nhân chủ yếu là do quá trình tích lũy tri thức phức tạp,
chi phí phát triển các hệ chuyên gia rất cao, nhưng chúng không có khả năng học, khả
năng tự thích nghi khi môi trường thay đổi. Các chiến lược giải quyết vấn đề của
chúng cứng nhắc và khi có nhu cầu thay đổi, thì việc sửa đổi một lượng lớn mã
chương trình là rất khó khăn. Một giải pháp hiển nhiên là các chương trình tự học lấy
cách giải quyết vấn đề từ kinh nghiệm, từ sự giống nhau, từ các ví dụ hay từ những
‘chỉ dẫn’, ‘lời khuyên’,...
Mặc dù học vẫn còn là một vấn đề khó, nhưng sự thành công của một số chương trình
học máy thuyết phục rằng có thể tồn tại một tập hợp các nguyên tắc học tổng quát cho
phép xây dựng nên các chương trình có khả năng học trong nhiều lĩnh vực thực tế.
Chương này sẽ giới thiệu sơ lược về lĩnh vực nghiên cứu này, đồng thời đi vào chi tiết
một số giải thuật học quan trọng.

75


×