[email protected]
Ebook Team
CHƯƠNG 1 : THU T TOÁN – THU T GI I
I. KHÁI NI M THU T TOÁN – THU T GI I
II. THU T GI I HEURISTIC
III. CÁC PHƯƠNG PHÁP TÌM KI M HEURISTIC
III.1. C u trúc chung c a bài toán tìm ki m
III.2. Tìm ki m chi u sâu và tìm ki m chi u r ng
III.3. Tìm ki m leo
i
III.4. Tìm ki m ưu tiên t i ưu (best-first search)
III.5. Thu t gi i AT
III.6. Thu t gi i AKT
III.7. Thu t gi i A*
III.8. Ví d minh h a ho t
ng c a thu t gi i A*
III.9. Bàn lu n v A*
III.10.
ng d ng A*
gi i bài toán Ta-canh
III.11. Các chi n lư c tìm ki m lai
I. T NG QUAN THU T TOÁN – THU T GI I
Trong quá trình nghiên c u gi i quy t các v n
nh ng nh n xét như sau:
– bài toán, ngư i ta ã ưa ra
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
1
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 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
tu nhân t o là các cách gi i theo ki u Heuristic
n và s
d ng trong khoa h c trí
II. 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)
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
suy nghĩ và hành
ng c a con ngư i.
nhiên, g n gũi v i cách
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ơ b n 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.
Bài toán hành trình ng n nh t –
ng d ng nguyên lý Greedy
2
Bài toán: Hãy tìm m t hành trình cho m t ngư i giao hàng i qua n i m khác
nhau, m i i m i qua m t l n và tr v
i m xu t phát sao cho t ng chi u dài o n
ư ng c n i là ng n nh t. Gi s r ng có con ư ng n i tr c ti p t gi a hai i m
b t kỳ.
T t nhiên ta có th gi i bài toán này b ng cách li t kê t t c con ư ng có th
i,
tính chi u dài c a m i con ư ng ó r i tìm con ư ng có chi u dài ng n nh t. Tuy
nhiên, cách gi i này l i có
ph c t p 0(n!) (m t hành trình là m t hoán v c a n
i m, do ó, t ng s hành trình là s lư ng hoán v c a m t t p n ph n t là n!). Do
ó, khi s
i lý tăng thì s con ư ng ph i xét s tăng lên r t nhanh.
M t cách gi i ơn gi n hơn nhi u và thư ng cho k t qu tương
i t t là dùng m t
thu t gi i Heuristic ng d ng nguyên lý Greedy. Tư tư ng c a thu t gi i như sau:
T
i m kh i
u, ta li t kê t t c quãng ư ng t
i lý r i ch n i theo con ư ng ng n nh t.
i m xu t phát cho
nn
Khi ã i
nm t
i lý, ch n i
n
i lý k ti p cũng theo nguyên t c
trên. Nghĩa là li t kê t t c con ư ng t
i lý ta ang
ng
n nh ng
i lý
chưa i
n. Ch n con ư ng ng n nh t. L p l i quá trình này cho
n lúc
không còn
i lý nào
i.
B n có th quan sát hình sau
th y ư c quá trình ch n l a. Theo nguyên lý
Greedy, ta l y tiêu chu n hành trình ng n nh t c a bài toán làm tiêu chu n cho ch n
l a c c b . Ta hy v ng r ng, khi i trên n o n ư ng ng n nh t thì cu i cùng ta s
có m t hành trình ng n nh t. i u này không ph i lúc nào cũng úng. V i i u ki n
trong hình ti p theo thì thu t gi i cho chúng ta m t hành trình có chi u dài là 14
trong khi hành trình t i ưu là 13. K t qu c a thu t gi i Heuristic trong trư ng h p
này ch l ch 1 ơn v so v i k t qu t i ưu. Trong khi ó,
ph c t p c a thu t gi i
Heuristic này ch là 0(n2).
3
Hình : Gi i bài toán s
d ng nguyên lý Greedy
T t nhiên, thu t gi i theo ki u Heuristic ôi lúc l i ưa ra k t qu không t t, th m chí
r t t như trư ng h p hình sau.
Bài toán phân vi c –
ng d ng c a nguyên lý th
t
M t công ty nh n ư c h p
ng gia công m chi ti t máy J1, J2, … Jm. Công ty có n
máy gia công l n lư t là P1, P2, … Pn. M i chi ti t
u có th
ư c gia công trên b t
kỳ máy nào. M t khi ã gia công m t chi ti t trên m t máy, công vi s ti p t c cho
n lúc hoàn thành, không th b c t ngang.
gia công m t vi c J1 trên m t máy
b t kỳ ta c n dùng m t th i gian tương ng là t1. Nhi m v c a công ty là ph i làm
sao gia công xong toàn b n chi ti t trong th i gian s m nh t.
Chúng ta xét bài toán trong trư ng h p có 3 máy P1, P2, P3 và 6 công vi c v i th i
gian là t1=2, t2=5, t3=8, t4=1, t5=5, t6=1. ta có m t phương án phân công (L) như
hình sau:
4
Theo hình này, t i th i i m t=0, ta ti n hành gia công chi ti t J2 trên máy P1, J5 trên
P2 và J1 t i P3. T i th i i m t=2, công vi c J1 ư c hoàn thành, trên máy P3 ta gia
công ti p chi ti t J4. Trong lúc ó, hai máy P1 và P2 v n ang th c hi n công vi c
u
tiên mình … Sơ
phân vi c theo hình trên ư c g i là lư c
GANTT. Theo lư c
này, ta th y th i gian
hoàn thành toàn b 6 công vi c là 12. Nh n xét m t
cách c m tính ta th y r ng phương án (L) v a th c hi n là m t phương án không t t.
Các máy P1 và P2 có quá nhi u th i gian rãnh.
Thu t toán tìm phương án t i ưu L0 cho bài toán này theo ki u vét c n có
ph c
t p c O(mn) (v i m là s máy và n là s công vi c). Bây gi ta xét
n m t thu t
gi i Heuristic r t ơn gi n (
ph c t p O(n))
gi i bài toán này.
S p x p các công vi c theo th
t gi m d n v th i gian gia công.
L n lư t s p x p các vi c theo th
gian nh t.
t
ó vào máy còn dư nhi u th i
V i tư tư ng như v y, ta s có m t phương án L* như sau:
Rõ ràng phương án L* v a th c hi n cũng chính là phương án t i ưu c a trư ng h p
này vì th i gian hoàn thành là 8, úng b ng th i gian c a công vi c J3. Ta hy v ng
r ng m t gi i Heuristic ơn gi n như v y s là m t thu t gi i t i ưu. Nhưng ti c thay,
5
ta d dàng ưa ra ư c m t trư ng h p mà thu t gi i Heuristic không ưa ra ư c
k t qu t i ưu.
N u g i T* là th i gian
gia công xong n chi ti t máy do thu t gi i Heuristic ưa ra
và T0 là th i gian t i ưu thì ngư i ta ã ch ng minh ư c r ng
, M là s máy
V i k t qu này, ta có th xác l p ư c sai s mà chúng ta ph i gánh ch u n u dùng
Heuristic thay vì tìm m t l i gi i t i ưu. Ch ng h n v i s máy là 2 (M=2) ta có
, và ó chính là sai s c c
i mà trư ng h p
th c này, s máy càng l n thì sai s càng l n.
trên ã gánh ch u. Theo công
Trong trư ng h p M l n thì t s 1/M xem như b ng 0 . Như v y, sai s t i a mà ta
ph i ch u là T* 4/3 T0, nghĩa là sai s t i a là 33%. Tuy nhiên, khó tìm ra ư c
nh ng trư ng h p mà sai s
úng b ng giá tr c c
i, dù trong trư ng h p x u
nh t. Thu t gi i Heuristic trong trư ng h p này rõ ràng ã cho chúng ta nh ng l i
gi i tương
i t t.
III. CÁC PHƯƠNG PHÁP TÌM KI M HEURISTIC
Qua các ph n trư c chúng ta tìm hi u t ng quan v ý tư ng c a thu t gi i Heuristic
(nguyên lý Greedy và s p th t ). Trong m c này, chúng ta s
i sâu vào tìm hi u
m t s k thu t tìm ki m Heuristic – m t l p bài toán r t quan tr ng và có nhi u ng
d ng trong th c t .
III.1. C u trúc chung c a bài toán tìm ki m
6
ti n l i cho vi c trình bày, ta hãy dành chút th i gian
làm rõ hơn " i tư ng"
quan tâm c a chúng ta trong m c này. M t cách chung nh t, nhi u v n
-bài toán
ph c t p
u có d ng "tìm ư ng i trong
th " hay nói m t cách hình th c hơn là
"xu t phát t m t nh c a m t
th , tìm ư ng i hi u qu nh t
n m t nh nào
ó". M t phát bi u khác thư ng g p c a d ng bài toán này là :
Cho trư c hai tr ng thái T0 và TG hãy xây d ng chu i tr ng thái T0, T1, T2, ..., Tn-1,
Tn = TG sao cho :
th a mãn m t i u ki n cho trư c (thư ng là nh nh t).
Trong ó, Ti thu c t p h p S (g i là không gian tr ng thái – state space) bao g m t t
c các tr ng thái có th có c a bài toán và cost(Ti-1, Ti) là chi phí
bi n
it
tr ng thái Ti-1 sang tr ng thái Ti. Dĩ nhiên, t m t tr ng thái Ti ta có nhi u cách
bi n
i sang tr ng thái Ti+1. Khi nói
n m t bi n
i c th t Ti-1 sang Ti ta s
dùng thu t ng hư ng i (v i ng ý nói v s l a ch n).
Hình : Mô hình chung c a các v n
-bài toán ph i gi i quy t b ng phương pháp tìm
ki m l i gi i. Không gian tìm ki m là m t t p h p tr ng thái - t p các nút c a
th .
Chi phí c n thi t
chuy n t tr ng thái T này sang tr ng thái Tk ư c bi u di n
dư i d ng các con s n m trên cung n i gi a hai nút tư ng trưng cho hai tr ng thái.
a s các bài toán thu c d ng mà chúng ta ang mô t
u có th
ư c bi u di n
dư i d ng
th . Trong ó, m t tr ng thái là m t nh c a
th . T p h p S bao
g m t t c các tr ng thái chính là t p h p bao g m t t c
nh c a
th . Vi c bi n
i t tr ng thái Ti-1 sang tr ng thái Ti là vi c i t
nh
i di n cho Ti-1 sang nh
i di n cho Ti theo cung n i gi a hai nh này.
III.2. Tìm ki m chi u sâu và tìm ki m chi u r ng
b n
c có th hình dung m t cách c th b n ch t c a thu t gi i Heuristic,
chúng ta nh t thi t ph i n m v ng hai chi n lư c tìm ki m cơ b n là tìm ki m theo
chi u sâu (Depth First Search) và tìm ki m theo chi u r ng (Breath First Search). S
dĩ chúng ta dùng t chi n lư c mà không ph i là phương pháp là b i vì trong th c t ,
7
ngư i ta h u như ch ng bao gi v n d ng m t trong hai ki m tìm ki m này m t cách
tr c ti p mà không ph i s a
i gì.
III.2.1. Tìm ki m chi u sâu (Depth-First Search)
Trong tìm ki m theo chi u sâu, t i tr ng thái ( nh) hi n hành, ta ch n m t tr ng
thái k ti p (trong t p các tr ng thái có th bi n
i thành t tr ng thái hi n t i) làm
tr ng thái hi n hành cho
n lúc tr ng thái hi n hành là tr ng thái ích. Trong
trư ng h p t i tr ng thái hi n hành, ta không th bi n
i thành tr ng thái k ti p
thì ta s quay lui (back-tracking) l i tr ng thái trư c tr ng thái hi n hành (tr ng thái
bi n
i thành tr ng thái hi n hành)
ch n ư ng khác. N u tr ng thái trư c này
mà cũng không th bi n
i ư c n a thì ta quay lui l i tr ng thái trư c n a và c
th . N u ã quay lui
n tr ng thái kh i
u mà v n th t b i thì k t lu n là không có
l i gi i. Hình nh sau minh h a ho t
ng c a tìm ki m theo chi u sâu.
Hình : Hình nh c a tìm ki m chi u sâu. Nó ch lưu ý "m r ng" tr ng thái ư c ch n
mà không "m r ng" các tr ng thái khác (nút màu tr ng trong hình v ).
III.2.2. Tìm ki m chi u r ng (Breath-First Search)
Ngư c l i v i tìm ki m theo ki u chi u sâu, tìm ki m chi u r ng mang hình nh c a
v t d u loang. T tr ng thái ban
u, ta xây d ng t p h p S bao g m các tr ng thái
k ti p (mà t tr ng thái ban
u có th bi n
i thành). Sau ó, ng v i m i tr ng
thái Tk trong t p S, ta xây d ng t p Sk bao g m các tr ng thái k ti p c a Tk r i l n
lư t b sung các Sk vào S. Quá trình này c l p l i cho
n lúc S có ch a tr ng thái
k t thúc ho c S không thay
i sau khi ã b sung t t c Sk.
8
Hình : Hình nh c a tìm ki m chi u r ng. T i m t bư c, m i tr ng thái
r ng, không b sót tr ng thái nào.
u ư cm
Chi u sâu
Chi u r ng
Tính hi u qu
Hi u qu khi l i gi i n m
sâu trong cây tìm ki m và
có m t phương án ch n
hư ng i chính xác. Hi u
qu c a chi n lư c ph
thu c vào phương án ch n
hư ng i. Phương án càng
kém hi u qu thì hi u qu
c a chi n lư c càng gi m.
Thu n l i khi mu n tìm ch
m t l i gi i.
Hi u qu khi l i gi i
n m g n g c c a cây
tìm ki m. Hi u qu
c a chi n lư c ph
thu c vào
sâu c a
l i gi i. L i gi i càng
xa g c thì hi u qu
c a chi n lư c càng
gi m. Thu n l i khi
mu n tìm nhi u l i
gi i.
Lư ng b nh s
d ng
lưu tr các
tr ng thái
Ch lưu l i các tr ng thái
chưa xét
n.
Ph i lưu toàn b các
tr ng thái.
Trư ng h p x u
nh t
Vét c n toàn b
Vét c n toàn b .
Trư ng h p t t nh t
Phương án ch n hư ng i
tuy t
i chính xác. L i gi i
ư c xác nh m t cách
tr c ti p.
Vét c n toàn b .
Tìm ki m chi u sâu và tìm ki m chi u r ng
u là các phương pháp tìm ki m có h
th ng và ch c ch n tìm ra l i gi i. Tuy nhiên, do b n ch t là vét c n nên v i nh ng
bài toán có không gian l n thì ta không th dùng hai chi n lư c này ư c. Hơn n a,
9
hai chi n lư c này
u có tính ch t "mù quáng" vì chúng không chú ý
n nh ng
thông tin (tri th c) tr ng thái hi n th i và thông tin v
ích c n
t t i cùng m i
quan h gi a chúng. Các tri th c này vô cùng quan tr ng và r t có ý nghĩa
thi t
k các thu t gi i hi u qu hơn mà ta s p s a bàn
n.
III.3. Tìm ki m leo
III.3.1. Leo
i
i
ơn gi n
Tìm ki m leo
i theo úng nghĩa, nói chung, th c ch t ch là m t trư ng h p
c
bi t c a tìm ki m theo chi u sâu nhưng không th quay lui. Trong tìm ki m leo
i,
vi c l a ch n tr ng thái ti p theo ư c quy t nh d a trên m t hàm Heuristic.
Hàm Heuristic là gì ?
Thu t ng "hàm Heuristic" mu n nói lên i u gì? Ch ng có gì ghê g m. B n ã quen
v i nó r i! ó ơn gi n ch là m t ư c lư ng v kh năng d n
n l i gi i tính t
tr ng thái ó (kho ng cách gi a tr ng thái hi n t i và tr ng thái ích). Ta s quy ư c
g i hàm này là h trong su t giáo trình này. ôi lúc ta cũng
c p
n chi phí t i
ưu th c s t m t tr ng thái d n
n l i gi i. Thông thư ng, giá tr này là không
th tính toán ư c (vì tính ư c
ng nghĩa là ã bi t con ư ng
n l i gi i !) mà ta
ch dùng nó như m t cơ s
suy lu n v m t lý thuy t mà thôi ! Hàm h, ta quy ư c
r ng, luôn tr ra k t qu là m t s không âm.
b n
c th c s n m ư c ý nghĩa
c a hai hàm này, hãy quan sát hình sau trong ó minh h a chi phí t i ưu th c s và
chi phí ư c lư ng.
Hình Chi phí ư c lư ng h’ = 6 và chi phí t i ưu th c s h = 4+5 = 9 ( i theo ư ng
1-3-7)
B n ang trong m t thành ph xa l mà không có b n
trong tay và ta
mu n i vào khu trung tâm? M t cách suy nghĩ ơn gi n, chúng ta s nh m
vào hư ng nh ng tòa cao c c a khu trung tâm!
Tư tư ng
1) N u tr ng thái b t
u cũng là tr ng thái ích thì thoát và báo là ã tìm ư c l i
gi i. Ngư c l i,
t tr ng thái hi n hành (Ti) là tr ng thái kh i
u (T0)
10
2) L p l i cho
n khi
t
n tr ng thái k t thúc ho c cho
n khi không t n t i
m t tr ng thái ti p theo h p l (Tk) c a tr ng thái hi n hành :
a.
b.
t Tk là m t tr ng thái ti p theo h p l c a tr ng thái hi n hành Ti.
ánh giá tr ng thái Tk m i :
b.1. N u là tr ng thái k t thúc thì tr v tr này và thoát.
b.2. N u không ph i là tr ng thái k t thúc nhưng t t hơn tr ng
thái hi n hành thì c p nh t nó thành tr ng thái hi n hành.
b.3. N u nó không t t hơn tr ng thái hi n hành thì ti p t c
vòng l p.
Mã gi
Ti := T0; Stop :=FALSE;
WHILE Stop=FALSE DO BEGIN
IF Ti TG THEN BEGIN
; Stop:=TRUE;
END;
ELSE BEGIN
Better:=FALSE;
WHILE (Better=FALSE) AND (STOP=FALSE) DO BEGIN
IF
THEN BEGIN
; Stop:=TRUE; END;
ELSE BEGIN
Tk := ;
IF THEN BEGIN
Ti :=Tk; Better:=TRUE;
11
END;
END;
END; {WHILE}
END; {ELSE}
END;{WHILE}
M nh
"h’(Tk) t t hơn h’(Ti)" nghĩa là gì? ây là m t khái ni m chung chung. Khi
cài
t thu t gi i, ta ph i cung c p m t nh nghĩa tư ng minh v t t hơn. Trong m t
s trư ng h p, t t hơn là nh hơn : h’(Tk) < h’(Ti); m t s trư ng h p khác t t hơn
là l n hơn h’(Tk) > h’(Ti)...Ch ng h n,
i v i bài toán tìm ư ng i ng n nh t gi a
hai i m. N u dùng hàm h’ là hàm cho ra kho ng cách theo ư ng chim bay gi a v
trí hi n t i (tr ng thái hi n t i) và ích
n (tr ng thái ích) thì t t hơn nghĩa là nh
hơn.
V n
c n làm rõ k ti p là th nào là ? M t
tr ng thái k ti p h p l là tr ng thái chưa ư c xét
n. Gi s h c a tr ng thái hi n
t i Ti có giá tr là h(Ti) = 1.23 và t Ti ta có th bi n
i sang m t trong 3 tr ng thái
k ti p l n lư t là Tk1, Tk2, Tk3 v i giá tr các hàm h tương ng là h(Tk1) = 1.67,
h(Tk2) = 2.52, h’(Tk3) = 1.04.
u tiên, Tk s
ư c gán b ng Tk1, nhưng vì h’(Tk) =
h’(Tk1) > h’(Ti) nên Tk không ư c ch n. K ti p là Tk s
ư c gán b ng Tk2 và cũng
không ư c ch n. Cu i cùng thì Tk3 ư c ch n. Nhưng gi s h’(Tk3) = 1.3 thì c Tk3
cũng không ư c ch n và m nh
s
có giá tr TRUE. Gi i thích này có v hi n nhiên nhưng có l c n thi t
tránh nh m
l n cho b n
c.
th y rõ ho t
ng c a thu t gi i leo
i. Ta hãy xét m t bài toán minh h a sau.
Cho 4 kh i l p phương gi ng nhau A, B, C, D. Trong ó các m t (M1), (M2), (M3),
(M4), (M5), (M6) có th
ư c tô b ng 1 trong 6 màu (1), (2), (3), (4), (5), (6). Ban
u các kh i l p phương ư c x p vào m t hàng. M i m t bư c, ta ch ư c xoay
m t kh i l p phương quanh m t tr c (X,Y,Z) 900 theo chi u b t kỳ (nghĩa là ngư c
chi u hay thu n chi u kim
ng h cũng ư c). Hãy xác nh s bư c quay ít nh t
sao cho t t c các m t c a kh i l p phương trên 4 m t c a hàng là có cùng màu như
hình v .
12
Hình : Bài toán 4 kh i l p phương
gi i quy t v n
, trư c h t ta c n nh nghĩa m t hàm G dùng
ánh giá m t
tình tr ng c th có ph i là l i gi i hay không? B n
c có th d dàng ưa ra m t
cài
t c a hàm G như sau :
IF (Gtrái + Gph i + Gtrên + Gdư i + Gtrư c + Gsau) = 16 THEN
G:=TRUE
ELSE
G:=FALSE;
Trong ó, Gph i là s lư ng các m t có cùng màu c a m t bên ph i c a hàng. Tương
t cho Gtrái, Gtrên, Ggi a, Gtrư c, Gsau. Tuy nhiên, do các kh i l p phương A,B,C,D
là hoàn toàn tương t nhau nên tương quan gi a các m t c a m i kh i là gi ng
nhau. Do ó, n u có 2 m t không
i nhau trên hàng
ng màu thì 4 m t còn l i c a
hàng cũng
ng màu. T
ó ta ch c n hàm G ư c nh nghĩa như sau là
:
IF Gph i + Gdư i = 8 THEN
G:=TRUE
ELSE
G:=FALSE;
Hàm h (ư c lư ng kh năng d n
như sau :
n l i gi i c a m t tr ng thái) s
ư c
nh nghĩa
h = Gtrái + Gph i + Gtrên + Gdư i
Bài toán này
ơn gi n
thu t gi i leo
ph i lúc nào ta cũng may m n như th !
n ây, có th chúng ta s
làm tr ng thái hi n t i thì t
s nhanh chóng d n
nl i
th c s giúp chúng ta d n
xong thu t gi i leo
id c
i có th ho t
ng t t. Tuy nhiên, không
n y sinh m t ý tư ng. N u ã ch n tr ng thái t t hơn
i sao không ch n tr ng thái t t nh t ? Như v y, có l ta
gi i hơn! Ta s bàn lu n v v n
: "li u c i ti n này có
n l i gi i nhanh hơn hay không?" ngay sau khi trình bày
ng.
III.3.2. Leo
id c
ng
V cơ b n, leo
ng s duy t t
các tr ng thái k
ti p
u tiên t t
id c
ng cũng gi ng như leo
i, ch khác
i m là leo
id c
t c các hư ng i có th và ch n i theo tr ng thái t t nh t trong s
ti p có th có (trong khi ó leo
i ch ch n i theo tr ng thái k
hơn tr ng thái hi n hành mà nó tìm th y).
13
Tư tư ng
1) N u tr ng thái b t
u cũng là tr ng thái ích thì thoát và báo là ã tìm ư c l i
gi i. Ngư c l i,
t tr ng thái hi n hành (Ti) là tr ng thái kh i
u (T0)
2) L p l i cho
n khi
t
n tr ng thái k t thúc ho c cho
n khi (Ti) không t n t i
m t tr ng thái k ti p (Tk) nào t t hơn tr ng thái hi n t i (Ti)
a)
Ti.
t S b ng t p t t c tr ng thái k ti p có th có c a Ti và t t hơn
b) Xác
nh Tkmax là tr ng thái t t nh t trong t p S
t Ti = Tkmax
Mã gi
Ti := T0;
Stop :=FALSE;
WHILE Stop=FALSE DO BEGIN
IF Ti TG THEN BEGIN
;
STOP :=TRUE;
END;
ELSE BEGIN
Best:=h’(Ti);
Tmax := Ti;
WHILE DO BEGIN
Tk := ;
IF THEN BEGIN
Best :=h’(Tk);
Tmax := Tk;
END;
14
END;
IF (Best>Ti) THEN
Ti := Tmax;
ELSE BEGIN
;
STOP:=TRUE;
END;
END; {ELSE IF}
END;{WHILE STOP}
III.3.3.
ánh giá
So v i leo
i ơn gi n, leo
id c
ng có ưu i m là luôn luôn ch n hư ng có tri n
v ng nh t
i. Li u i u này có
m b o leo
id c
ng luôn t t hơn leo
i ơn
gi n không? Câu tr l i là không. Leo
id c
ng ch t t hơn leo
i ơn gi n trong
m t s trư ng h p mà thôi.
ch n ra ư c hư ng i t t nh t, leo
id c
ng ph i
duy t qua t t c các hư ng i có th có t i tr ng thái hi n hành. Trong khi ó, leo
i ơn gi n ch ch n i theo tr ng thái
u tiên t t hơn (so v i tr ng thái hi n hành)
mà nó tìm ra ư c. Do ó, th i gian c n thi t
leo
id c
ng ch n ư c m t
hư ng i s l n hơn so v i leo
i ơn gi n. Tuy v y, do lúc nào cũng ch n hư ng i
t t nh t nên leo
id c
ng thư ng s tìm
n l i gi i sau m t s bư c ít hơn so
v i leo
i ơn gi n. Nói m t cách ng n g n, leo
id c
ng s t n nhi u th i gian
hơn cho m t bư c nhưng l i i ít bư c hơn; còn leo
i ơn gi n t n ít th i gian hơn
cho m t bư c i nhưng l i ph i i nhi u bư c hơn. ây chính là y u t
ư c và m t
gi a hai thu t gi i nên ta ph i cân nh c k lư ng khi l a ch n thu t gi i.
C hai phương pháp leo núi ơn gi n và leo núi d c
ng
u có kh năng th t b i
trong vi c tìm l i gi i c a bài toán m c dù l i gi i ó th c s hi n h u. C hai gi i
thu t
u có th k t thúc khi
t ư c m t tr ng thái mà không còn tr ng thái nào
t t hơn n a có th phát sinh nhưng tr ng thái này không ph i là tr ng thái ích. i u
này s x y ra n u chương trình
t
nm t i mc c
i a phương, m t o n ơn
i u ngang.
i mc c
i a phương (a local maximum) : là m t tr ng thái t t hơn t t c lân c n
c a nó nhưng không t t hơn m t s tr ng thái khác xa hơn. Nghĩa là t i m t i m
c c
i a phương, m i tr ng thái trong m t lân c n c a tr ng thái hi n t i
ux u
hơn tr ng thái hi n t i. Tuy có dáng v c a l i gi i nhưng các c c
i a phương
không ph i là l i gi i th c s . Trong trư ng h p này, chúng ư c g i là nh ng ng n
i th p.
o n ơn i u ngang (a plateau) : là m t vùng b ng ph ng c a không gian tìm
ki m, trong ó, toàn b các tr ng thái lân c n
u có cùng giá tr .
15
Hình : Các tình hu ng khó khăn cho tìm ki m leo èo.
i phó v i các các i m này, ngư i ta ã ưa ra m t s gi i pháp. Ta s tìm hi u
2 trong s các gi i pháp này. Nh ng gi i này, không th c s gi i quy t tr n v n v n
mà ch là m t phương án c u nguy t m th i mà thôi.
Phương án
u tiên là k t h p leo
i và quay lui. Ta s quay lui l i các tr ng thái
trư c ó và th
i theo hư ng khác. Thao tác này h p lý n u t i các tr ng thái trư c
ó có m t hư ng i t t mà ta ã b qua trư c ó. ây là m t cách khá hay
i
phó v i các i m c c
i a phương. Tuy nhiên, do
c i m c a leo
i là "bư c
sau cao hơn bư c trư c" nên phương án này s th t b i khi ta xu t phát t m t i m
quá cao ho c xu t phát t m t nh
i mà
n ư c l i gi i c n ph i i qua m t
"thung lũng" th t sâu như trong hình sau.
Hình : M t trư ng h p th t b i c a leo èo k t h p quay lui.
Cách th hai là th c hi n m t bư c nh y v t theo hư ng nào ó
th
nm t
vùng m i c a không gian tìm ki m. Nôm na là "bư c" liên t c nhi u "bư c" (ch ng
h n 5,7,10, …) mà t m th i "quên" i vi c ki m tra "bư c sau cao hơn bư c trư c".
Ti p c n có v hi u qu khi ta g p ph i m t o n ơn i u ngang. Tuy nhiên, nh y
v t cũng có nghĩa là ta ã b qua cơ h i
ti n
n l i gi i th c s . Trong trư ng
h p chúng ta ang
ng khá g n l i gi i, vi c nh y v t s
ưa chúng ta sang m t v
trí hoàn toàn xa l , mà t
ó, có th s d n chúng ta
n m t r c r i ki u khác. Hơn
16
n a, s bư c nh y là bao nhiêu và nh y theo hư ng nào là m t v n
nhi u vào
c i m không gian tìm ki m c a bài toán.
ph thu c r t
Hình M t trư ng h p khó khăn cho phương án "nh y v t".
Leo núi là m t phương pháp c c b b i vì nó quy t nh s làm gì ti p theo d a vào
m t ánh giá v tr ng thái hi n t i và các tr ng thái k ti p có th có (t t hơn tr ng
thái hi n t i, tr ng thái t t nh t t t hơn tr ng thái hi n t i) thay vì ph i xem xét m t
cách toàn di n trên t t c các tr ng thái ã i qua. Thu n l i c a leo núi là ít g p s
bùng n t h p hơn so v i các phương pháp toàn c c. Nhưng nó cũng gi ng như các
phương pháp c c b khác ch là không ch c ch n tìm ra l i gi i trong trư ng h p
x u nh t.
M t l n n a, ta kh ng nh l i vai trò quy t nh c a hàm Heuristic trong quá trình
tìm ki m l i gi i. V i cùng m t thu t gi i (như leo
i ch ng h n), n u ta có m t
hàm Heuristic t t hơn thì k t qu s
ư c tìm th y nhanh hơn. Ta hãy xét bài toán
v các kh i ư c trình bày hình sau. Ta có hai thao tác bi n
i là:
+ L y m t kh i
nh m t c t b t kỳ và
t nó lên m t ch tr ng t o thành
m t c t m i. Lưu ý là ch có th t o ra t i a 2 c t m i.
+ L y m t kh i
Hãy xác
nh m t c t và
nh s thao tác ít nh t
bi n
t nó lên
nh m t c t khác
i c t ã cho thành c t k t qu .
17
Hình : Tr ng thái kh i
Gi s
ban
u và tr ng thái k t thúc
u ta dùng m t hàm Heuristic ơn gi n như sau :
H1 : C ng 1 i m cho m i kh i v trí úng so v i tr ng thái ích. Tr
cho m i kh i
t v trí sai so v i tr ng thái ích.
1 i m
Dùng hàm này, tr ng thái k t thúc s có giá tr là 8 vì c 8 kh i
u ư c
t v trí
úng. Tr ng thái kh i
u có giá tr là 4 (vì nó có 1 i m c ng cho các kh i C, D, E,
F, G, H và 1 i m tr cho các kh i A và B). Ch có th có m t di chuy n t tr ng thái
kh i
u, ó là d ch chuy n kh i A xu ng t o thành m t c t m i (T1).
i u ó sinh ra m t tr ng thái v i s
i m là 6 (vì v trí c a kh i A bây gi sinh ra 1
i m c ng hơn là m t i m tr ). Th t c leo núi s ch p nh n s d ch chuy n ó. T
n ba tr ng thái Ta, Tb, Tc
tr ng thái m i T1, có ba di chuy n có th th c hi n d n
ư c minh h a trong hình dư i. Nh ng tr ng thái này có s
i m là : h’(Ta)= 4;
h’(Tb) = 4 và h’(Tc) = 4
T1
TA
TB
TC
18