[r]
Trang 1Ch ươ ng 2
CÁC PH ƯƠ NG PHÁP TÌM KI M L I GI I TRONG Ế Ờ Ả
Quá trình tìm ki m l i gi i c a bài toán đế ờ ả ủ ược bi u di n trong không gianể ễ
tr ng thái đạ ược xem nh quá trình dò tìm trên đ th , xu t phát t tr ng tháiư ồ ị ấ ừ ạ ban đ u, thông qua các toán t chuy n tr ng thái, l n lầ ử ể ạ ầ ượ ết đ n các tr ng tháiạ
ti p theo cho đ n khi g p đế ế ặ ược tr ng thái đích ho c không còn tr ng thái nàoạ ặ ạ
có th ti p t c để ế ụ ược n a Khi áp d ng các phữ ụ ương pháp tìm ki m trong khôngế gian tr ng thái , ngạ ười ta thường quan tâm đ n các v n đ sau:ế ấ ề
• K thu t tìm ki m l i gi iỹ ậ ế ờ ả
• Phương pháp lu n c a vi c tìm ki mậ ủ ệ ế
• Cách th hiên các nút trong quá trình tìm ki m (mô t tr ng thái bài toán)ể ế ả ạ
• Vi c ch n các toán t chuy n tr ng thái nào đ áp dung và có kh năng sệ ọ ử ể ạ ể ả ử
d ng phụ ương pháp may r i trong quá trình tìm ki m.ủ ế
Tuy nhiên, không ph i các phả ương pháp này có th áp d ng cho t t c cácể ụ ấ ả bài toán ph c t p mà cho t ng l p bài toán Vi c ch n chi n lứ ạ ừ ớ ệ ọ ế ược tìm ki mế cho bài toán c th ph thu c nhi u vào các đ c tr ng c a bài toán.ụ ể ụ ộ ề ặ ư ủ
Các th t c tìm ki m đi n hình bao g m:ủ ụ ế ể ồ
- Tìm ki m theo chi u r ng (Breadth – First Search)ế ề ộ
- Tìm ki m theo chi u sâu (Depth – First Search)ế ề
- Tìm ki m sâu d n (Depthwise Search)ế ầ
- Tìm ki m c c ti u hoá giá thành (Cost minimization Search).ế ự ể
- Tìm ki m v i tri th c b sung (Heuristic Search).ế ớ ứ ổ
1 Ph ươ ng pháp tìm ki m theo chi u r ng ế ề ộ
1.1 K thu t tìm ki m r ng ỹ ậ ế ộ
Trang 2K thu t tìm ki m rông là tìm ki m trên t t c các nút c a m t m cỹ ậ ế ế ấ ả ủ ộ ứ trong không gian bài toán trước khi chuy n sang các nút c a m c ti pể ủ ứ ế theo
K thu t tìm ki m r ng b t đ u t m c th nh t c a không gian bàiỹ ậ ế ộ ắ ầ ừ ứ ứ ấ ủ toán, theo hướng d n c a lu t tr ng tài, ch ng h n “đi t trái sangẫ ủ ậ ọ ẳ ạ ừ
ph i” N u không th y l i gi i t i m c này, nó chuy n xu ng m c sauả ế ấ ờ ả ạ ứ ể ố ứ
đ ti p t c … đ n khi đ nh v để ế ụ ế ị ị ượ ờc l i gi i n u có.ả ế
1.2 Gi i thu t ả ậ
Input:
Cây/Đ th G = (V,E) v i đ nh g c là nồ ị ớ ỉ ố 0 (tr ng thái đ u)ạ ầ
T p đích Goalsậ
Output:
M t độ ường đi p t nừ 0 đ n m t đ nh nế ộ ỉ *∈ Goals
Method:
S d ng hai danh sách ho t đ ng theo nguyên t c FIFO (queue) MO vàử ụ ạ ộ ắ DONG
Procedure BrFS; (Breadth First Search)
Begin
Append(MO,no)
DONG=null;
While MO <> null do
begin
n:= Take(MO);
if n∈ DICH then exit;
Append(DONG, n);
For m∈ T(n) and m∉DONG+MO do
Trang 3Write (‘Không có l i gi i’);ờ ả
End;
Chú ý: Th t c Append(MO,nủ ụ 0) b sung m t ph n t vào queue MO.ổ ộ ầ ử
Hàm Take(MO) l y m t ph n t trong queue MO ấ ộ ầ ử
• N u G là cây thì không c n dùng danh sách DONG.ế ầ
1.3 Đánh giá đ ph c t p c a gi i thu t tìm ki m r ng ộ ứ ạ ủ ả ậ ế ộ
Gi s r ng, m i tr ng thái khi đả ử ằ ỗ ạ ược xét s sinh ra k tr ng thái k ti p.ẽ ạ ế ế Khi đó ta g i k là nhân t nhánh N u bài toán tìm đọ ố ế ược nghi m theo phệ ươ ng pháp tìm ki m r ng có đ dài d Nh v y, đ nh đích s n m m c d+1, do đóế ộ ộ ư ậ ỉ ẽ ằ ở ứ
s đ nh c n xét l n nh t là:ố ỉ ầ ớ ấ
1 + k + k2 + + kd
Nh v y đ ph c t p th i gian c a gi i thu t là O(kư ậ ộ ứ ạ ờ ủ ả ậ d) Đ ph c t pộ ứ ạ không gian cũng là O(kd), vì t t c các đ nh c a cây tìm ki m m c d+1 đêuấ ả ỉ ủ ế ở ứ
ph i l u vào danh sách.ả ư
1.4 Ư u và nh ượ c đi m c a ph ể ủ ươ ng pháp tìm ki m r ng ế ộ
1.4.1 Ư u đi m ể
• K thu t tìm ki m r ng là k thu t vét c n không gian tr ng thái bàiỹ ậ ế ộ ỹ ậ ạ ạ toán vì v y s tìm đậ ẽ ượ ờc l i gi i n u có.ả ế
• Đường đi tìm được đi qua ít đ nh nh t.ỉ ấ
1.4.2 Nh ượ c đi m ể
• Tìm ki m l i gi i theo thu t toán đã đ nh trế ờ ả ậ ị ước, do v y tìm ki m m tậ ế ộ cách máy móc; khi không có thông tin h tr cho quá trình tìm ki m,ổ ợ ế không nh n ra ngay l i gi i.ậ ờ ả
• Không phù h p v i không gian bài oán kích thợ ớ ướ ớc l n Đ i v i lo i bàiố ớ ạ toán này, phương pháp tìm r ng đ i m t v i các nhu c u:ộ ố ặ ớ ầ
- C n nhi u b nh theo s nút c n l u tr ầ ề ộ ớ ố ầ ư ữ
Trang 4- C n nhi u công s c x lý các nút, nh t là khi các nhánh cây dài, sầ ề ứ ử ấ ố nút tăng
- D th c hi n các thao tác không thích h p, th a, đ a đ n vi c tăngễ ự ệ ợ ừ ư ế ệ đáng k s nút ph i x lý.ể ố ả ử
• Không hi u q a n u l i gi i sâu Phệ ủ ế ờ ả ở ương pháp này không phù h pợ cho trường h p có nhi u đợ ề ường d n đ n k t qu nh ng đ u sâu.ẫ ế ế ả ư ề
• Giao ti p v i ngế ớ ười dùng không thân thi n Do duy t qua t t c các nút,ệ ệ ấ ả
vi c tìm ki m không t p trung vào m t ch đ ệ ế ậ ộ ủ ề
1.5 Các ví d ụ
Ví d 1 ụ Bài toán đong nước v i m = 5, n= 4, k =3ớ
M c 1: Tr ng thái đ u (0;0)ứ ạ ầ
M c 2: Các tr ng thái (5;0), (0;4), M c 3: (5;4), (1;4), (4,0)ứ ạ ứ
M c 4: (1;0), (4;4)ứ M c 5: (0;1), (5;3)ứ
m c 5 ta g p tr ng thái đích là (5;3) vì v y có đ c l i gi i nh sau:
(0;0)→ (0;4) → (4;0) → (4;4) → (5;3)
Đ có để ượ ờc l i gi i này ta ph i l u l i v t c a đả ả ư ạ ế ủ ường đi, có th trình bày quáể trình tìm ki m dế ướ ại d ng b ng sau:ả
(0;0)
(0;0) (5;0) (0;4) (5;0) (0;4) (0;0)
(5;0) (5;4) (0;0) (1;4) (0;4) (5;4)
(1;4)
(0;0) (5;0)
(0;4) (5;4) (0;0) (4;0) (5;4) (1;4)
(4;0)
(0;0) (5;0) (0;4)
(5;4) (0;4) (5;0) (1;4) (4;0) (0;0) (5;0) (0;4) (5;4)
(1;4) (5;4) (0;4) (1;0)
(5;0)
(4;0) (1;0) (0;0) (5;0) (0;4) (5;4) (1;4)
(4;0) (5;0) (4;4) (0;0)
(0;4)
(1;0) (4;4) (0;0) (5;0) (0;4) (5;4) (1;4) (4;0) (1;0) (5;0) (1;4) (0;1) (4;4) (0;1) (0;0) (5;0) (0;4) (5;4) (1;4) (4;0)
Trang 5(5;3) (1;0) (4;4)
(0;1) (5;1) (0;4) (0;0)
(1;0)
(5;3) (5;1) (0;0) (5;0) (0;4) (5;4) (1;4) (4;0)
(1;0) (0;1)
(5;3)
Trang 6for j:=1 to n do
begin
if i< m then
if ph[i,j] <> ph[i+1,j] then
begin
tg:= S[ph[i,j]] + S[ph[i+1,j]];
if tg >= max then
begin
hang :=i;
cot:=j;
huong:= 'nam';
max:= tg;
end;
end;
if j<n then
if ph[i,j]<> ph[i,j+1] then
begin
tg:= S[ph[i,j]] + S[ph[i,j+1]];
if tg >= max then
begin
hang:=i;
cot:=j;
huong:= 'dong';
max:= tg;
end;
end;
end;
end;
Trang 7procedure inkq;
var
i,j: size;
f: text;
begin
assign(f,'out.pas');
rewrite(f);
writeln(f,so);
writeln(f,dt);
writeln(f,hang,' ',cot,' ',huong);
close(f);
end;
BEGIN
nhap;
khoitao;
demphong;
smax;
phatuong;
inkq;
END.