TTNT
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 đ – bài toán, ng i ta đã đ a ra nh ng ế ườ ư
nh n xét nh sau: ư
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. ượ
1
TTNT
T nh ng nh n đ nh trên, ng i ta th y r ng c n ph i có nh ng đ i m i cho khái ườ
ni m thu t toán. Ng i ta đã m r ng hai tiêu chu n c a thu t toán: tính xác đ nh và ườ
tính đúng đ n. Vi c m r ng tính xác đ nh đ i v i thu t toán đã đ c th hi n qua các ượ
gi i thu t đ quy và ng u nhiên. Tính đúng c a thu t toán bây gi không còn b t bu c
đ i v i m t s cách gi i bài toán, nh t là các cách gi i g n đúng. Trong th c ti n có
nhi u tr ng h p ng i ta ch p nh n các cách gi i th ng cho k t qu t t (nh ng ườ ườ ườ ế ư
không ph i lúc nào cũng t t) nh ng ít ph c t p và hi u qu . Ch ng h n n u gi i m t ư ế
bài toán b ng thu t toán t i u đòi h i máy tính th c hiên nhi u năm thì chúng ta có ư
th s n lòng ch p nh n m t gi i pháp g n t i u mà ch c n máy tính ch y trong vài ư
ngày ho c vài gi .
Các cách gi i ch p nh n đ c nh ng không hoàn toàn đáp ng đ y đ các tiêu chu n ượ ư
c a thu t toán th ng đ c g i là các thu t gi i. Khái ni m m r ng này c a thu t ườ ượ
toán đã m c a cho chúng ta trong vi c tìm ki m ph ng pháp đ gi i quy t các bài ế ươ ế
toán đ c đ t ra.ượ
M t trong nh ng thu t gi i th ng đ c đ c p đ n và s d ng trong khoa h c trí ườ ượ ế
tu nhân t o là các cách gi i theo ki u Heuristic
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 nhiên, g n gũi v i cách ườ
suy nghĩ và hành đ ng c a con ng i. ườ
Có nhi u ph ng pháp đ xây d ng m t thu t gi i Heuristic, trong đó ng i ta th ng ươ ườ ườ
d a vào m t s nguyên lý c 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. ượ
2
TTNT
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
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 m xu t phát cho đ n n ườ ế
đ i lý r i ch n đi theo con đ ng ng n nh t. ườ
Khi đã đi đ n m 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
TTNT
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 c ư ế
r t t nh tr ng h p hình sau. ư ườ
4
TTNT
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 J ượ ế 1, J2, … Jm. Công ty có n
máy gia công l n l t là P ượ 1, 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 Jế 1 trên m t máy b t
kỳ ta c n dùng m t th i gian t ng ng là t ươ 1. 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 Pườ 1, 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: ươ ư
Theo hình này, t i th i đi m t=0, ta ti n hành gia công chi ti t J ế ế 2 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 J 1 đ c hoàn thành, trên máy Pượ 3 ta gia công
ti p chi ti t Jế ế 4. 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 L ươ ư 0 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 t đó vào máy còn d nhi u th i ượ ế ư
gian nh t.
V i t t ng nh v y, ta s có m t ph ng án L* nh sau: ư ưở ư ươ ư
5