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* ề ậ
i bài toán Ta-canh III.10. ng d ng A* đ gi ụ ể ả Ứ
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 Ả
Ổ
Ậ
Ậ
i quy t các v n đ – bài toán, ng ứ ả ế ề ấ ườ ữ i ta đã đ a ra nh ng ư Trong quá trình nghiên c u gi nh n xét nh sau: ư ậ
ề ư ế ộ ả ậ i theo ki u thu t ể Có nhi u bài toán cho đ n nay v n ch a tìm ra m t cách gi toán và cũng không bi i thu t toán hay không. ẫ t là có t n t ồ ạ ế ậ
c vì ề ậ ấ ư i theo thu t toán đó quá l n ho c các đi u ki n cho thu t toán khó i nh ng không ch p nh n đ ậ ượ ậ ặ ể ả ớ ề ệ ả ậ Có nhi u bài toán đã có thu t toán đ gi th i gian gi ờ đáp ng.ứ
1
c gi ả i theo nh ng cách gi ữ ả ư i vi ph m thu t toán nh ng ậ ạ Có nh ng bài toán đ ữ ượ c. v n ch p nh n đ ậ ượ ấ ẫ
TTNT
ị ớ ổ ầ ườ ấ ằ ườ ữ ậ ừ ữ ệ ị ệ ể ệ ố ớ ủ
ả i ta đã m r ng hai tiêu chu n c a thu t toán: tính xác đ nh và ẩ ủ ở ộ ậ ẫ ậ i bài toán, nh t là các cách gi ấ ả i ta ch p nh n các cách gi ậ ườ ấ ả ng cho k t qu t ế ẳ ả ứ ạ ư ạ ườ ả ằ ự ề ậ ỏ i pháp g n t i th t) nh ng ít ph c t p và hi u qu . Ch ng h n n u gi ố ệ i u đòi h i máy tính th c hiên nhi u năm thì chúng ta có ố ư ộ ầ ố ư ể ẵ ỉ ầ ả ậ ạ i ta th y r ng c n ph i có nh ng đ i m i cho khái T nh ng nh n đ nh trên, ng ậ ni m thu t toán. Ng ị ở ộ ậ c th hi n qua các tính đúng đ n. Vi c m r ng tính xác đ nh đ i v i thu t toán đã đ ắ ượ ộ không còn b t bu c gi i thu t đ quy và ng u nhiên. Tính đúng c a thu t toán bây gi ắ ờ ậ ệ ả i g n đúng. Trong th c ti n có đ i v i m t s cách gi ự ễ ả ầ ộ ố ố ớ t (nh ng ư nhi u tr ng h p ng ả ố ườ ợ ề i m t không ph i lúc nào cũng t ộ ả ế bài toán b ng thu t toán t th s n lòng ch p nh n m t gi i u mà ch c n máy tính ch y trong vài ấ ngày ho c vài gi . ờ ặ
i ch p nh n đ ả ậ ượ ầ ủ ư ứ ng đ ượ ọ ậ ả c g i là các thu t gi ế ệ ẩ c nh ng không hoàn toàn đáp ng đ y đ các tiêu chu n ậ i. Khái ni m m r ng này c a thu t ủ ở ộ ệ i quy t các bài ng pháp đ gi ế ể ả ươ Các cách gi ấ c a thu t toán th ườ ậ ủ toán đã m c a cho chúng ta trong vi c tìm ki m ph toán đ ở ử c đ t ra. ượ ặ
c đ c p đ n và s d ng trong khoa h c trí ườ ậ ử ụ ế ọ i th M t trong nh ng thu t gi ượ ề ậ ả ữ i theo ki u Heuristic tu nhân t o là các cách gi ả ng đ ể ộ ệ ạ
II. THU T GI I HEURISTIC Ả
Ậ
ộ ự ở ộ ể ệ ệ ậ ả i Thu t gi ậ bài toán v i các đ c tính sau: i Heuristic là m t s m r ng khái ni m thu t toán. Nó th hi n cách gi ả ớ ặ
Th ng tìm đ i gi t (nh ng không ch c là l i gi ườ c l ượ ờ i t ả ố ư ắ ờ i t ả ố t nh t) ấ
ng d dàng và nhanh chóng ả ậ ườ i u, vì v y chi phí th p h n. Gi ả đ a ra k t qu h n so v i gi ư i bài toán theo thu t gi ả ơ ế ớ i Heuristic th i thu t t ậ ố ư ả ấ ơ ễ ậ
nhiên, g n gũi v i cách ả ự ầ ớ Thu t gi i Heuristic th ậ suy nghĩ và hành đ ng c a con ng ng th hi n khá t ể ệ i. ườ ườ ủ ộ
i Heuristic, trong đó ng i ta th ng pháp đ xây d ng m t thu t gi ự ể ậ ộ ả ườ ườ ng Có nhi u ph ề d a vào m t s nguyên lý c b n nh sau: ự ươ ộ ố ơ ả ư
Trong m t bài toán tìm ki m nào đó, khi ộ ế ườ ế i không gian tìm ki m t d a vào đ c thù c a bài toán đ ự ặ ng tìm cách gi ặ ệ ự i h n l ớ ạ ạ ặ ủ ể Nguyên lý vét c n thông minh: ạ không gian tìm ki m l n, ta th ế ho c th c hi n m t ki u dò tìm đ c bi ộ ệ nhanh chóng tìm ra m c tiêu. ớ ể ụ
Nguyên lý tham lam (Greedy): L y tiêu chu n t ẩ ố ư ạ ụ ộ ọ ự ể i. 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 ạ ộ ủ ụ i gi c (hay t ng giai đo n) trong quá trình tìm ki m l c a t ng b ủ ừ ẩ ạ ướ ừ ế ả ờ
2
h p lý ệ ộ :ứ ự Th c hi n hành đ ng d a trên m t c u trúc th t ứ ự ợ t. i gi ự c a không gian kh o sát nh m nhanh chóng đ t đ ủ Nguyên lý th t ả ộ ấ c m t l ộ ờ ự ạ ượ i t ả ố ằ
TTNT
i ta ự ậ ả ườ ng dùng các hàm Heuristic. Đó là các hàm đánh già thô, giá tr c a hàm ph i c a bài toán t i m i b c gi Hàm Heuristic: Trong vi c xây d ng các thu t gi ệ ườ ộ c cách hành đ ng t ỗ ướ ng đ i h p lý trong t ng b ể ọ ượ ệ ạ ủ ộ ươ ạ ố ợ i Heuristic, ng ụ ị ủ i. Nh giá tr này, ta ị ờ ả ậ c c a thu t ướ ủ ừ th thu c vào tr ng thái hi n t ạ có th ch n đ gi i.ả
Bài toán hành trình ng n nh t – ng d ng nguyên lý Greedy ấ ứ ụ ắ
i giao hàng đi qua n đi m khác nhau, ể ở ề ể ể ề s r ng có con đ Bài toán: Hãy tìm m t hành trình cho m t ng ườ ộ ộ 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 đ ấ ổ ộ ầ ỗ c n đi là ng n nh t. Gi ng n i tr c ti p t ấ ườ ắ ầ ạ ườ ng gi a hai đi m b t kỳ. ể ố ự ế ừ ữ ả ử ằ ấ
t c con đ t kê t ấ ể ả ằ i bài toán này b ng cách li ng đó r i tìm con đ ườ ồ ng có th đi, tính ườ ệ ể ng có chi u dài ng n nh t. Tuy nhiên, ắ ấ ỗ 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 ủ là n!). Do đó, khi s ầ ử ố ườ ộ ộ ứ ạ ố ượ ị ủ ng ph i xét s tăng lên r t nhanh. T t nhiên ta có th gi chi u dài c a m i con đ ủ ề i này l cách gi ạ đó, t ng s hành trình là s l ố ổ đ i lý tăng thì s con đ ạ ng hoán v c a m t t p n ph n t ả ộ ậ ấ ườ ẽ ố
ng đ i t ả ơ ườ ề M t cách gi ộ thu t gi ậ ng cho k t qu t ế i Heuristic ng d ng nguyên lý Greedy. T t ư ưở i đ n gi n h n nhi u và th ơ ụ ố ố ả ươ ng c a thu t gi ậ ủ ả ứ ả ộ t là dùng m t i nh sau: ư ả
ng t đi m xu t phát cho đ n n ệ ườ ừ ể ế ấ T đi m kh i đ u, ta li ở ầ ừ ể đ i lý r i ch n đi theo con đ ọ ồ ạ t kê t ườ t c quãng đ ấ ả ng ng n nh t. ấ ắ
ế ế ắ ế t kê t ứ ạ i quá trình này cho đ n lúc không ọ ộ ạ t c con đ ườ ấ ả ắ ườ ng t ng ng n nh t. L p l ấ ặ ạ ữ ế 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. ạ ế ư đ i lý ta đang đ ng đ n nh ng đ i lý ch a Nghĩa là li ệ ế ừ ạ đi đ n. Ch n con đ ọ ế còn đ i lý nào đ đi. ể ạ
2).
3
ạ ể ọ ự ẩ ấ ằ ấ ẽ ệ ề ắ ả ớ ế ả ủ ậ ả ộ i u là 13. K t qu c a thu t gi ớ ế c quá trình ch n l a. Theo nguyên lý Greedy, B n có th quan sát hình sau đ th y đ ể ấ ượ 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 ọ ự ụ ẩ ấ ủ ắ ng ng n nh t thì cu i cùng ta s có m t b . ộ Ta hy v ng r ng, khi đi trên n đo n đ ộ ố ắ ạ ườ ọ ấ Đi u này không ph i lúc nào cũng đúng. V i đi u ki n trong hành trình ng n nh t. ề 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 ả ề ậ ng h p này ch l ch i Heuristic trong tr hành trình t ỉ ệ ợ ế ườ ố ư 1 đ n v so v i k t qu t i Heuristic này i u. Trong khi đó, đ ph c t p c a thu t gi ả ậ ộ ứ ạ ủ ả ố ư ị ơ ch là 0(n ỉ
TTNT
Hình : Gi
i bài toán s d ng nguyên lý Greedy
ả
ử ụ
4
i đ a ra k t qu không t ạ ư ế ả ố t, th m chí ậ ể hình sau. T t nhiên, thu t gi ậ ấ nh tr r t t ấ ệ ư ườ i theo ki u Heuristic đôi lúc l ả ng h p ợ ở
TTNT
Bài toán phân vi c – ng d ng c a nguyên lý th t ứ ự ụ ứ ủ ệ
1, J2, … Jm. Công ty có n t máy J M t công ty nh n đ ấ c gia công trên b t t đ u có th đ máy gia công l n l ể ượ ọ s ti p t c cho 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 ệ ẽ ế ụ ệ 1 trên m t máy b t đ n lúc hoàn thành, không th b c t ngang. Đ gia công m t vi c J ấ ộ ế 1. Nhi m v c a công ty là ph i làm sao gia kỳ ta c n dùng m t th i gian t ươ ứ ả công xong toàn b n chi ti ớ ờ
1, P2, P3 và 6 công vi c v i th i gian
ộ ồ c h p đ ng gia công m chi ti 1, P2, … Pn. M i chi ti ậ ượ ợ t là P ầ ượ ộ ế ế ề ộ ế ộ ể ị ắ ể ng ng là t ộ ụ ủ ệ ầ ờ t trong th i gian s m nh t. ộ ộ ế ấ
ườ ợ ờ ng án phân công (L) nh hình sau: Chúng ta xét bài toán trong tr là t1=2, t2=5, t3=8, t4=1, t5=5, t6=1. ta có m t ph ng h p có 3 máy P ươ ộ ệ ớ ư
t J ờ ạ ể ế 2 trên máy P1, J5 trên P2 i Pạ 3. T i th i đi m t=2, công vi c J ể i th i đi m t=0, ta ti n hành gia công chi ti ế ệ 1 đ ờ ệ ự ệ ầ c đ GANTT. Theo l ượ ồ ở
ậ ng án không t ộ t. Các máy ươ ươ ộ ố Theo hình này, t c hoàn thành, trên máy P 3 ta gia công và J1 t ượ ạ ế 4. Trong lúc đó, hai máy P1 và P2 v n đang th c hi n công vi c đ u tiên t J ti p chi ti ẫ ế ượ ồ c đ c g i là l trên đ mình … S đ phân vi c theo hình ượ ọ ơ ồ ả 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 ệ ừ ấ ằ P1 và P2 có quá nhi u th i gian rãnh. ề ệ ể ng án (L) v a th c hi n là m t ph ự ờ
0 cho bài toán này theo ki u vét c n có đ ph c t p ộ ứ ạ ể ố
i u L ậ ố ư ươ ạ ta xét đ n m t thu t gi ng án t ố ả i ế ậ ộ ờ i bài toán này. Thu t toán tìm ph c O(mn) (v i m là s máy và n là s công vi c). Bây gi ệ ỡ Heuristic r t đ n gi n (đ ph c t p O(n)) đ gi ể ả ớ ấ ơ ộ ứ ạ ả
S p x p các công vi c theo th t gi m d n v th i gian gia công. ứ ự ả ề ờ ế ệ ắ ầ
t s p x p các vi c theo th t ầ ượ ắ ứ ự ế ệ ờ đó vào máy còn d nhi u th i ư ề L n l gian nh t.ấ
5
V i t ng nh v y, ta s có m t ph ng án L* nh sau: t ớ ư ưở ư ậ ẽ ộ ươ ư
TTNT
ng án t ừ ự ươ
i t ả ố ư ằ ư ậ ẽ ng h p mà thu t gi ợ ợ ng h p i u c a tr ườ ố ư ủ ằ ệ 3. Ta hy v ng r ng ọ i u. Nh ng ti c thay, ta ế ậ ượ ế c k t i Heuristic không đ a ra đ ả ơ c m t tr ộ ườ ờ ộ ậ ư ư ượ ả Rõ ràng ph ng án L* v a th c hi n cũng chính là ph ươ ệ này vì th i gian hoàn thành là 8, đúng b ng th i gian c a công vi c J ờ ủ m t gi i Heuristic đ n gi n nh v y s là m t thu t gi ả ộ d dàng đ a ra đ ễ ư i u. qu t ả ố ư
i Heuristic đ a ra ọ ế ể ế ả ư N u g i T* là th i gian đ gia công xong n chi ti ờ và T0 là th i gian t i u thì ng t máy do thu t gi ậ c r ng i ta đã ch ng minh đ ứ ượ ằ ố ư ườ ờ
, M là s máy ố
6
ớ ế ả c sai s mà chúng ta ph i gánh ch u n u dùng ả ế ố ị i gi i u. Ch ng h n v i s máy là 2 (M=2) ta có V i k t qu này, ta có th xác l p đ ể Heuristic thay vì tìm m t l ộ ờ ậ ượ i t ả ố ư ớ ố ẳ ạ
TTNT
ng h p trên đã gánh ch u. Theo công ợ ở ị , và đó chính là sai s c c đ i mà tr ườ th c này, s máy càng l n thì sai s càng l n. ớ ố ự ạ ố ứ ố ớ
ng h p M l n thì t s 1/M xem nh b ng 0 . Nh v y, sai s t ớ ỷ ố ư ằ ư ậ ố ố 4/3 T0, nghĩa là sai s t ố ố ng h p mà sai s đúng b ng giá tr c c đ i, dù trong tr ợ £ ợ ị ự ạ ườ ố i Heuristic trong tr ườ i đa mà ta i đa là 33%. Tuy nhiên, khó tìm ra đ ượ c ng h p x u nh t. ấ ấ ả i i gi ữ ợ ng h p này rõ ràng đã cho chúng ta nh ng l ờ ằ ợ t. Trong tr ườ ph i ch u là T* ả ị nh ng tr ữ Thu t gi ậ t ng đ i t ươ ườ ả ố ố
III. CÁC PH
NG PHÁP TÌM KI M HEURISTIC
ƯƠ
Ế
ng c a thu t gi ầ ướ c chúng ta tìm hi u t ng quan v ý t ể ổ ưở ủ ề ậ ả i Heuristic ể ứ ự ắ ộ ớ ề ứ ẽ ọ ế ấ Qua các ph n tr ộ (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 ủ ế ấ
ệ ể ệ ợ ờ ố ượ ề ơ ấ ề
0 và TG hãy xây d ng chu i tr ng thái T
0, T1, T2, ..., Tn-1, Tn
ứ ơ ộ ỉ ấ ế ệ ụ ộ ồ ị ườ ộ ồ ị ả ườ ng g p c a d ng bài toán này là : ng" Đ 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 ể 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 ộ ấ ủ ng đi trong đ th " hay nói m t cách hình th c h n là ph c t p đ u có d ng "tìm đ ạ ề ứ ạ "xu t phát t ng đi hi u qu nh t đ n m t đ nh nào ừ ộ ỉ ủ ấ đó". M t phát bi u khác th ể m t đ nh c a m t đ th , tìm đ ặ ủ ạ ườ ộ
c hai tr ng thái T ạ ỗ ạ ự Cho tr ướ = TG sao cho :
th a mãn m t đi u ki n cho tr c (th ề ệ ỏ ộ ướ ườ ng là nh nh t). ỏ ấ
7
ọ ợ ộ ậ ạ ạ ủ ể ế ừ ộ ạ ề ạ Ti ấ t ồ ừ ạ tr ng ổ t cost(Ti-1, Ti) là chi phí đ ể bi n đ i m t tr ng thái Ti ta có nhi u cách đ bi n đ i ổ ể ế ậ ổ ụ ể ừ -1 sang Ti ta s dùng thu t ế ẽ ng đi ( 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 c các tr ng thái có th có c a bài toán và ả thái Ti-1 sang tr ng thái Ti. Dĩ nhiên, t sang tr ng thái Ti +1. Khi nói đ n m t bi n đ i c th t ế ộ v i ng ý nói v s l a ch n). ng ữ h ề ự ự ớ ạ ướ ụ ọ
TTNT
ng pháp tìm ki m l
i gi
ươ
ả
i quy t b ng ph ế ằ ủ ồ ị
ế
ầ
ấ ợ đ
Hình : Mô hình chung c a các v n đ -bài toán ph i gi ủ 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 ộ ậ tr ng thái T này sang tr ng thái Tk ể ạ
ả i. ế ờ ể ừ t đ chuy n t ế ể i d ng các con s n m trên cung n i gi a hai nút ữ ố
ố ằ
ạ
ả ề ạ ậ c bi u di n d ễ ướ ạ ng tr ng cho hai tr ng thái. ạ ư
ượ t ượ
đ u có th đ ộ ạ ễ c bi u di n ả ề ể
ể ượ ủ ồ ị ậ ủ ồ ị ộ ạ ợ ậ đ nh đ i di n cho Ti ợ ệ ỉ ế ạ ệ ạ Đa s các bài toán thu c d ng mà chúng ta đang mô t ố 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 d ồ ộ ỉ ồ ị ướ ạ ổ ừ t c các tr ng thái chính là t p h p bao g m t t t c đ nh c a đ th . Vi c bi n đ i t ấ ả ỉ ồ ạ ấ ả tr ng thái Ti ệ -1 sang đ nh đ i di n -1 sang tr ng thái Ti là vi c đi t ạ ừ ỉ ệ ạ 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 ề ộ ế ế ề
i Heuristic, ọ ể ạ ả ụ ể ả c ấ ộ ữ ả ắ ể t ph i n m v ng hai ế ậ ế ượ tìm ki m c b n là tìm ki m theo ơ ả ấ ủ ế ế ề ph c ươ ở ế ượ mà không ph i là ộ ờ ậ ụ ầ Đ b n đ c có th hình dung m t cách c th b n ch t c a thu t gi chi n l chúng ta nh t thi ở chi u sâu (Depth First Search) và tìm ki m theo chi u r ng (Breath First Search). S dĩ ế ề ộ là b i vì trong th c t ng pháp ừ chi n l chúng ta dùng t ự ế , ả i ta h u nh ch ng bao gi ng 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) ế ề
8
i tr ng thái (đ nh) hi n hành, ta ch n m t tr ng thái ỉ ế ạ ạ ộ ạ ọ ổ ề ạ ệ ạ ừ ạ ạ ệ ế ể ế ệ ạ ệ ế ế ạ ạ ể ế ạ ườ ẽ ổ ạ ạ ế ạ ướ ướ ể ọ ườ c n a thì ta quay lui l i gi c tr ng thái hi n hành (tr ng thái bi n đ i thành ệ ng khác. N u ế ở ạ i tr ng thái tr ạ ạ ấ ạ c này mà cũng không c n a và c th . N u đã quay ứ ế ế ả i. Hình nh ả ờ ạ ể ế ế ở ầ ế ạ ẫ Trong tìm ki m theo chi u sâu, t ệ i) làm tr ng ạ 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 ậ ế ế ng h p t 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 ợ ạ 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 tr ng thái tr tr ng thái hi n hành) đ ch n đ ệ th bi n đ i đ ướ ữ ổ ượ ữ 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 ậ sau minh h a ho t đ ng c a tìm ki m theo chi u sâu. ế ủ ạ ộ ề ọ
TTNT
c ch n mà không "m
ỉ ư
ủ
ế
ả
ạ
ượ
ọ
ở
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 đ ẽ
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) ề ộ ế
9
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 Ng 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 ế ạ ế ầ ự ỗ tr ng thái tr ng thái ban đ u có th bi n đ i thành). Sau đó, ti p (mà t ng v i m 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. ấ ả ặ ổ
TTNT
c, m i tr ng thái đ u đ ộ ướ ề ộ ủ ạ ả ọ ạ ề ượ c Hình : Hình nh c a tìm ki m chi u r ng. T i m t b ế ở ộ m r ng, không b sót tr ng thái nào. ỏ ạ
Tính hi u qu
i gi
ệ
ả
ả
ệ
ả ằ
ờ
ả ố ủ
ươ
ệ
ả
ố
ả ằ i n m Hi u qu khi l ệ g n g c c a cây tìm ki m. ế ầ c Hi u qu c a chi n l ế ượ ả ủ ệ ph thu c vào đ sâu c a ủ ộ ụ ộ i. L i gi i càng xa i gi l ả ờ ờ g c thì hi u qu c a chi n ế ả ủ ệ ố c càng gi m. Thu n l l ậ ợ i ả ượ khi mu n tìm nhi u l ề ờ i gi
Hi u qu khi l i gi i n m sâu ờ trong cây tìm ki m và có m t ộ ế ng đi chính ng án ch n h ph ọ ướ c ph ụ xác. Hi u qu c a chi n l ế ượ ả ủ ọ ướ ng ng án ch n h thu c vào ph ươ ộ ả ng án càng kém hi u qu đi. Ph ệ ươ c càng thì hi u qu c a chi n l ế ượ ả ủ ệ gi m. Thu n l ỉ i khi mu n tìm ch ậ ợ ả ố i. i gi m t l ả ộ ờ
i.ả
i các tr ng thái ch a xét
ỉ ư ạ
ư
ạ
ả ư
ộ
Ph i l u toàn b các tr ng ạ thái.
ộ ớ ử ụ L ng b nh s d ng ượ đ l u tr các tr ng thái ạ ữ ể ư
Ch l u l đ n. ế
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 ấ
Vét c n toàn b . ộ
ạ
ươ
tuy tệ c xác
ng đi ng án ch n h Ph ọ ướ đ i ố chính xác. L i gi i đ ờ ả ượ đ nh m t cách tr c ti p. ự ế ị
ộ
Chi u sâu ề Chi u r ng ề ộ
ế ề ề ộ ố ắ ắ ả ả ạ ng pháp tìm ki m có h ệ ươ ữ i. Tuy nhiên, do b n ch t là vét c n nên v i nh ng ế ượ ể ớ c này đ ượ ế ề ứ ở ạ ệ ề ầ ế ớ c. H n n a, hai ơ ữ c này đ u có tính ch t "mù quáng" vì chúng không chú ý đ n nh ng thông tin ữ ệ ữ i cùng m i quan h gi a tr ng thái hi n th i và thông tin v đích c n đ t t ạ ớ ả i t k các thu t gi ậ ể ố ế ế ứ ấ ọ Tìm ki m chi u sâu và tìm ki m chi u r ng đ u là các ph ế ề i gi th ng và ch c ch n tìm ra l ấ ờ bài toán có không gian l n thì ta không th dùng hai chi n l chi n l ấ ế ượ (tri th c) ờ chúng. Các tri th c này vô cùng quan tr ng và r t có ý nghĩa đ thi hi u qu h n mà ta s p s a bàn đ n. ắ ử ả ơ ệ ế
III.3. Tìm ki m leo đ i ồ ế
III.3.1. Leo đ i đ n gi n ồ ơ ả
ồ ế ộ ườ ự ấ ặ ợ ỉ ệ t ế ể c quy t đ nh d a trên m t hàm Heuristic. ng h p đ c bi Tìm ki m leo đ i theo đúng nghĩa, nói chung, th c ch t ch là m t tr 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 đ ế ị ự ư ượ ế ạ ề ế ự ọ ộ
Hàm Heuristic là gì ?
10
ậ ữ ớ ố i ồ ề c l ướ ượ ẳ ề ả ả ộ i và tr ng thái đích). Ta s quy ng v kh năng d n đ n l ệ ạ ữ ạ 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 ơ ớ tr ng thái đó ( ạ ả ạ g i hàm này là ọ ỉ kho ng cách gi a tr ng thái hi n t h trong su t giáo trình này. Đôi lúc ta cũng đ c p đ n ố ạ ẫ ế ờ ả tính từ i gi ướ c ẽ i uố ư ế chi phí t ề ậ
TTNT
i gi ẫ ế ờ ườ ả c đ ng nghĩa là đã bi m t tr ng thái d n đ n l ượ ồ ườ ướ ằ ề ặ ậ i. Thông th t con đ ế ế ọ ng, giá tr này là không th tính ể i !) mà ta ch dùng ỉ c r ng, luôn ủ ị i gi ả h, ta quy ượ ự ự ắ ộ ố ể ạ ế ả c ý nghĩa c a hai i u th c s và chi phí ự ự ướ c ọ ng. ự ự t th c s ừ ộ ạ c (vì tính đ toán đ ng đ n l ế ờ ượ nó nh m t c s đ suy lu n v m t lý thuy t mà thôi ! Hàm ư ộ ơ ở ể tr ra k t qu là m t s không âm. Đ b n đ c th c s n m đ ả hàm này, hãy quan sát hình sau trong đó minh h a chi phí t ố ư l ượ
Hình Chi phí
ng h’ = 6 và chi phí t
i u th c s h = 4+5 = 9 (đi theo đ
ng 1-3-7)
c l ướ ượ
ố ư
ự ự
ườ
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 ư ưở
0)
ượ ờ c l i 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 đ ạ gi i, đ t tr ng thái hi n hành (Ti) là tr ng thái kh i đ u (T ế i. Ng ạ c 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 (Tk) c a tr ng thái hi n hành : 2) L p l tr ng thái ti p theo h p l ế ợ ệ ạ ạ ủ ệ ạ
.
a. Đ 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 ộ ạ ợ ệ ủ ế ệ ặ ạ
b. Đá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. ả ề ị ế ế ạ
ế ạ t ố h n tr ng ơ ư t b.2. N u không ph i là tr ng thái k t thúc nh ng ạ thái hi n hành thì c p nh t nó thành tr ng thái hi n hành. ệ ậ ả ậ ế ệ ạ
11
t h n tr ng thái hi n hành thì ti p t c vòng ế ố ơ ế ụ ệ ạ b.3. N u nó không t l p. ặ
TTNT
Mã gi ả
Ti := T0; Stop :=FALSE;
WHILE Stop=FALSE DO BEGIN
c k t qu >; Stop:=TRUE; ượ ế ả IF Ti ” TG THEN BEGIN END; ELSE BEGIN Better:=FALSE; i tr ng thái k ti p ồ ạ ạ ế ế h p l ợ ệ c a Ti>
ủ WHILE (Better=FALSE) AND (STOP=FALSE) DO BEGIN c k t qu >; Stop:=TRUE; ượ ế ả THEN IF ế ế h p l ộ ạ ợ ệ c a Ti>;
ủ ELSE BEGIN t h n h(Ti) ố ơ Tk := IF Ti :=Tk; Better:=TRUE; END; END; END; {WHILE} END; {ELSE} END;{WHILE} 12 ệ ệ ố ơ
ả M nh đ "h’(Tk) t
ề
cài đ t thu t gi
ặ
s tr
ố ườ i, ta ph i cung c p m t đ nh nghĩa t
ậ
ộ ị
ấ
ả
ng h p, t
t h n là nh h n : h’(Tk) < h’(Ti); m t s tr
ỏ ơ
ố ơ
ợ t h n h’(Ti)" nghĩa là gì? Đây là m t khái ni m chung chung. Khi
ộ
t h n.
ng minh v
ố ơ Trong m tộ
ề t
ườ
t h n là
ng h p khác t
ợ
ộ ố ườ ố ơ TTNT ộ ạ ng đi ng n nh t gi a hai ơ ườ ạ ắ ng chim bay ườ ữ
ấ
gi a v trí
ữ ị ế
i (tr ng thái hi n t t h n nghĩa là nh h n. l n h n h’(Tk) > h’(Ti)...Ch ng h n, đ i v i bài toán tìm đ
ẳ
ớ
đi m. N u dùng hàm h’ là hàm cho ra
ể
hi n t
ệ ạ ố ớ
kho ng cách theo đ
ả
ế i) và đích đ n (tr ng thái đích) thì t
ạ ệ ạ ạ ỏ ơ ố ơ c a Ti>
ế ế ợ ệ ủ
c xét đ n. Gi
s h c a tr ng thái hi n t
i Ti
ả ử
ế
ạ
Ti ta có th bi n đ i sang m t trong 3 tr ng thái k ti p
ế ế
ổ
ộ
1) = 1.67, h(Tk2) = 2.52,
ng ng là h(Tk
ươ ứ
1, nh ng vì h’(Tk) = h’(T k1) > h’(Ti) 2 và cũng không đ ấ ế ợ ệ ư ượ ế ế
ạ ộ ạ
? M t tr ng
ệ ạ là tr ng thái ch a đ
ừ ạ ể ế
1, Tk2, Tk3 v i giá tr các hàm h t ị 3) = 1.3 thì c Tkả
ẽ
t đ tránh nh m l n cho b n đ c.
ẫ 3 cũng không
ả
i
s có giá tr TRUE. Gi
ị
ạ cượ ả ử ượ ư ư
c gán b ng Tk
ằ
s h’(Tk
ế ế ủ ố
ọ V n đ c n làm rõ k ti p là th nào là
ề ầ
thái k ti p h p l
ế ế
có giá tr là h(Ti) = 1.23 và t
ị
t là Tk
l n l
ớ
ầ ượ
h’(Tk3) = 1.04. Đ u tiên, Tk s đ
c gán b ng Tk
ằ
ẽ ượ
ầ
c ch n. K ti p là Tk s đ
nên Tk không đ
ế ế
ọ
ẽ ượ
ượ
ch n. Cu i cùng thì Tk
c ch n. Nh ng gi
3 đ
ọ
ọ
ề ồ ể ấ ọ ươ ố ậ ặ ả
ậ
ủ
gi ng nhau
ng
ằ c, ta ch đ ng đ ố
ể ượ
ượ ế ỉ ượ ộ ỗ ượ ậ ị t c các m t c a kh i l p ph Đ th y rõ ho t đ ng c a thu t gi
ạ ộ
Cho 4 kh i l p ph
(M4), (M5), (M6) có th đ
c x p vào m t hàng. M i m t b
các kh i l p ph
ố ậ
ươ
kh i l p ph
ng quanh m t tr c (X,Y,Z) 90
ộ ụ
ươ
ố ậ
hay thu n chi u kim đ ng h cũng đ
ề
ồ
t
ặ ủ
ấ ả i leo đ i. Ta hãy xét m t bài toán minh h a sau.
ộ
A, B, C, D. Trong đó các m t (M1), (M2), (M3),
c tô b ng 1 trong 6 màu (1), (2), (3), (4), (5), (6). Ban đ u
ầ
ộ
c xoay m t
ộ ướ
0 theo chi u b t kỳ (nghĩa là ng
ề
c chi u
ượ
ấ
ề
c quay ít nh t sao cho
c). Hãy xác đ nh s b
ấ
ố ướ
ng trên 4 m t c a hàng là có cùng màu nh hình v .
ẽ
ư ồ
ố ậ ặ ủ ươ ng ố ậ ươ i + Gtr c + Gsau) = 16 ầ ị ể ề ướ ế
i gi i hay không? B n đ c có th d dàng đ a ra m t cài c h t ta c n đ nh nghĩa m t hàm
ờ ộ
ọ ả ạ ộ
G dùng đ đánh giá m t
ộ ể ễ ư i quy t v n đ , tr
Đ gi
ể ả
ế ấ
tình tr ng c th có ph i là l
ả
ụ ể
ạ
đ t c a hàm G nh sau :
ặ ủ ư ướ ướ G:=TRUE G:=FALSE; 13 TTNT i = 8 cho Gtrái, Gtrên, Ggi a, Gtr ặ có cùng màu c a m t bên ph i c a hàng. T
ả ủ
ặ
ủ
c, Gsau. Tuy nhiên, do các kh i l p ph ố ượ
ữ ng các m t
ướ ươ nhau nên t ặ ủ ươ ươ ự ữ ố i c a hàng ươ
ng
ng A,B,C,D
ng quan gi a các m t c a m i kh i là gi ng nhau.
ố
ạ ủ ố ậ
ỗ
ặ ế Trong đó, Gph iả là s l
t
ự
là hoàn toàn t
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
c đ nh nghĩa nh sau là đ :
cũng đ ng màu. T đó ta ch c n hàm G đ
ủ ồ
ượ ị ng t
ặ
ừ ố
ỉ ầ ư ồ ướ G:=TRUE G:=FALSE; ng kh năng d n đ n l i gi i c a m t tr ng thái) s đ c đ nh nghĩa c l
ướ ượ ế ờ ả ẫ ả ủ ộ ạ ẽ ượ ị Hàm h (
nh sau :
ư h = Gtrái + Gph iả + Gtrên + Gd iướ t. Tuy nhiên, không ủ ơ ả i leo đ i có th ho t đ ng t
ể ạ ộ ồ ố Bài toán này đ đ n gi n đ thu t gi
ph i lúc nào ta cũng may m n nh th ! ậ
ả
ư ế ể
ắ ả ẽ ả ưở ạ ộ ế
ạ ấ ? Nh v y, ẽ i gi ự ự ậ
ơ ả Đ n đây, có th chúng ta s n y sinh m t ý t
t
ng. N u đã ch n tr ng thái
ố ơ làm
t h n
ể
ọ
ế
ư ậ có l
t
i sao không ch n tr ng thái
tr ng thái hi n t
i thì t
ẽ ta sẽ
t nh t
ọ
ạ
ạ
ệ ạ
ố
i gi
nhanh chóng d n đ n l
i h n! Ta s bàn lu n v v n đ : "li u c i ti n này có
ệ ả ế
ề
ề ấ
ả ơ
ế ờ
ẫ
th c s giúp chúng ta d n đ n l
i nhanh h n hay không?" ngay sau khi trình bày
ế ờ
ẫ
i leo đ i d c đ ng.
xong thu t gi
ồ ố ứ ậ ả III.3.2. Leo đ i d c đ ng ồ ố ứ ư ố ồ ỉ ồ ố ứ
t c các h ở ể
t
ng đi có th và ch n đi theo tr ng thái
ố
ọ ể ạ
ỉ ọ ướ
ể ạ t h n V c b n, leo đ i d c đ ng cũng gi ng nh leo đ i, ch khác
đi m là leo đ i d c
ồ ố
ề ơ ả
ấ trong số
đ ng s duy t t
t nh t
ẽ
ứ
các tr ng thái k ti p có th có (trong khi đó leo đ i ch ch n đi theo tr ng thái k ti p
ế ế
ạ
đ u tiên
ầ ố ơ tr ng thái hi n hành mà nó tìm th y).
t ệ ấ ả
ế ế
ạ ồ
ấ ệ i gi i. Ng ế ắ ầ ạ c l
ượ ờ ả c l
ượ ạ ặ
i, đ t 0) ở ầ ệ ạ ạ 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 ồ ạ ế ặ ộ ạ ế ế
i (Ti) ế ế
ạ ế
t h n tr ng thái hi n t
ố ơ ạ
ệ ạ ạ i và t t h n Ti. ậ ấ ả ạ t c tr ng thái k ti p có th có c a T
ế ế ủ ể ặ ằ ố ơ t nh t trong t p S ạ ị ố ấ ậ 14 TTNT Đ t Ti = Tkmax ặ Ti := T0; Stop :=FALSE; WHILE Stop=FALSE DO BEGIN c k t qu >; ượ ế ả STOP :=TRUE; IF Ti ” TG THEN BEGIN Best:=h’(Ti); i tr ng thái k ti p ồ ạ ạ ế ế h p l ợ ệ c a Ti>
ủ Tmax := Ti; ế ế h p l ộ ạ ợ ệ c a Ti>;
ủ WHILE t h n Best ố ơ Tk := IF Best :=h’(Tk); Tmax := Tk; END; END; IF (Best>Ti) THEN Ti := Tmax; c k t qu >; ượ ế ả STOP:=TRUE; 15 ELSE BEGIN TTNT END; END; {ELSE IF} END;{WHILE STOP} III.3.3. Đánh giá ớ ả ể ồ ơ ọ ướ ọ ả ệ ấ ể ư
ồ ố ứ
ả
i là không. Leo đ i d c đ ng ch t ng đi t ng có
t h n leo
ố ơ
t h n leo đ i đ n
ồ ơ
ỉ ố ơ
ồ
t nh t, leo đ i
ố ể ọ
ng đi có th có t ướ ấ
i tr ng thái hi n hành. Trong
ệ t h n (so v i tr ng thái ả ồ ố ứ
c h
ượ ướ
ạ ạ
t
ố ơ ớ ạ ạ ọ
t đ leo đ i d c đ ng ch n
ồ ố ứ ượ ầ
ồ ơ i sau m t s b ế ờ ườ ả c m t h
ộ ướ
ng đi t
ố
ớ t nh t nên leo đ i d c đ ng th
ả
ộ ướ c đi nh ng l ơ ư
ộ ướ
c và m t gi a hai thu t gi
ả
ữ ế ố
ậ
ng khi l a ch n thu t ắ ỹ ưỡ ự ậ ấ ả ọ So v i leo đ i đ n gi n, leo đ i d c đ ng có u đi m là luôn luôn ch n h
ồ ố ứ
tri n v ng nh t đ đi. Li u đi u này có đ m b o leo đ i d c đ ng luôn t
ề
ể
đ i đ n gi n không? Câu tr l
ả ờ
ả
ồ ơ
ng h p mà thôi. Đ ch n ra đ
gi n trong m t s tr
ợ
ả
ộ ố ườ
t cấ ả các h
d c đ ng ph i duy t qua
t
ể
ả
ệ
ố ứ
đ u tiên
khi đó, leo đ i đ n gi n ch ch n đi theo tr ng thái
ầ
ỉ ọ
ồ ơ
c. Do đó, th i gian c n thi
hi n hành) mà nó tìm ra đ
ế ể
ờ
ệ
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
ọ
đ
ượ
ả
ơ
ẽ ớ
ậ
ớ
c ít
ng s tìm đ n l
h
i gi
ẽ
ấ
ướ
ộ ố ướ
ồ ố ứ
h n so v i leo đ i đ n gi n. Nói m t cách ng n g n, leo đ i d c đ ng s t n nhi u
ề
ẽ ố
ồ ố ứ
ắ
ơ
ọ
ồ ơ
ộ
ờ
c h n; còn leo đ i đ n gi n t n ít th i
th i gian h n cho m t b
i đi ít b
c nh ng l
ả ố
ồ ơ
ướ ơ
ơ
ờ
ạ
ư
gian h n cho m t b
c h n. Đây chính là y u t
i ph i đi nhi u b
ề ướ ơ
ả
ạ
đ
i nên ta ph i cân nh c k l
ượ
i. ả
gi ơ ả ả ươ ề i c a bài toán m c dù l ả ủ ố ứ
i đó th c s hi n h u. C hai gi
ả ả ả
ự ự ệ ữ
ạ ờ
ộ ạ ư ể ng trình đ t đ n m t đi m c c đ i đ a ph ề
ơ
ng, m t đo n đ n ả
ự ạ ị ạ
ươ ươ ạ ộ ộ ấ ạ
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
C hai ph
i
i gi
ả
i gi
trong vi c tìm l
ệ
ặ
ờ
ố
t
c m t tr ng thái mà không còn tr ng thái nào t
thu t đ u có th k t thúc khi đ 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
ẽ ả
ể
ạ ế
ế
đi u ngang.
ệ (a local maximum) : là m t tr ng thái t ể ộ ố ạ ơ ươ ạ t c lân c n
t h n t
ậ
ố ơ ấ ả
i m t đi m
ể
ạ
ộ
ệ ạ ề x uấ
i đ u
ươ
ng ủ
ư ả ng h p này, chúng đ ự ạ ị
ọ
c g i là nh ng ng n ẻ ủ ờ
ườ ượ ọ i gi
ợ ự ự ờ ng
Đi m c c đ i đ a ph
ộ ạ
ươ
ự ạ ị
xa h n. Nghĩa là t
t h n m t s tr ng thái khác
c a nó nh ng không t
ở
ố ơ
ư
ủ
ậ c a tr ng thái hi n t
trong m t lân c n
ng, m i tr ng thái
c c đ i đ a ph
ộ
ọ ạ
ự ạ ị
i nh ng các c c đ i đ a ph
h nơ tr ng thái hi n t
i. Tuy có dáng v c a l
ệ ạ
ạ
không ph i là l
i th c s . Trong tr
i gi
ữ
ả
ả
đ i th p.
ấ
ồ 16 ơ ạ ệ ằ ế
: là m t vùng b ng ph ng c a không gian tìm ki m, ủ Đo n đ n đi u ngang (a plateau)
ẳ
trong đó, toàn b các tr ng thái lân c n đ u có cùng giá tr .
ị
ộ ộ
ề ậ ạ TTNT ế ố ớ ể ố ư ể i pháp này. Nh ng gi ộ ố ả
ự ự ả ữ ả ể
i pháp. Ta s tìm hi u
ẽ
ấ
i quy t tr n v n v n ế ọ ẹ Đ đ i phó v i các các đi m này, ng
2 trong s các gi
ố
đ mà ch là m t ph
ộ
ỉ
ề i ta đã đ a ra m t s gi
ườ
i này, không th c s gi
ả
ng án c u nguy t m th i mà thôi.
ạ ươ ứ ờ ẽ ạ ng khác. Thao tác này h p lý n u t ươ
ướ ế ợ
ướ i các tr ng thái
ạ
ướ i các tr ng thái tr
ạ ế ạ ợ t mà ta đã b qua tr ể ố ướ ỏ ướ ể ng án đ u tiên là k t h p leo đ i và quay lui. Ta s quay lui l
ồ
ầ
c đó và th đi theo h
ử
ng đi t
ộ ướ
ố
ự ạ ị
ể
ướ ươ
ươ i gi c l c đó
c đó. Đây là m t cách khá hay đ đ i phó v i
ớ
ng. Tuy nhiên, do đ c đi m c a leo đ i là "b
ồ
ặ
ng án này s th t b i khi ta xu t phát t
ẽ ấ ạ
ừ ộ
ả
ể ế ượ ờ c sau cao
m t đi m quá cao
ể
i c n ph i đi qua m t "thung
ộ ộ
ủ
ấ
ả ầ ồ Ph
tr
có m t h
các đi m c c đ i đ a ph
c" nên ph
h n b
c tr
ơ ướ
m t đ nh đ i mà đ đ n đ
ho c xu t phát t
ừ ộ ỉ
ấ
ặ
lũng" th t sâu nh trong hình sau.
ư
ậ ng h p th t b i c a leo đèo k t h p quay lui. ộ ườ ấ ạ ủ ế ợ ợ 17 c ệ ứ ự ộ c" liên t c nhi u "b ớ ủ ộ ướ nh y v t
ả ọ theo h
ướ ế c tr ướ ệ ạ ẻ ệ ạ ả ả ặ ộ ng nào đó đ th đ n m t vùng
ể ử ế
ướ
ướ
ụ
ề
c sau cao h n b
ơ ướ
ệ
i gi i th c s . Trong tr Cách th hai là th c hi n m t b
m i c a không gian tìm ki m. Nôm na là "b
ạ
c" (ch ng h n
ẳ
5,7,10, …) mà t m th i "quên" đi vi c ki m tra "b
ế
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
ng h p
ế ờ
ỏ ơ ộ ể ế ự ự ườ ả TTNT i, vi c nh y v t s đ a chúng ta sang m t v trí ầ ờ ộ ị ệ ả ứ
, mà t i gi
ả
ể ẽ ẫ ừ ế ọ ẽ ư
đó, có th s d n chúng ta đ n m t r c r i ki u khác. H n n a,
ơ ữ
ề
ng nào là m t v n đ ph thu c r t nhi u ộ ắ ố
ộ ấ ể
ề ụ ộ ấ ướ chúng ta đang đ ng khá g n l
hoàn toàn xa l
ạ
s b
c nh y là bao nhiêu và nh y theo h
ả
ố ướ
vào đ c đi m không gian tìm ki m c a bài toán.
ể
ặ ả
ế ủ ng h p khó khăn cho ph ộ ườ ợ ươ ng án "nh y v t".
ả ọ ộ ế ộ ể ố ơ ạ ươ ố
i trong tr i gi ng pháp c c b b i vì nó quy t đ nh s làm gì ti p theo d a vào
ự
ế ị
ố ơ tr ngạ
t h n
t
i và các tr ng thái k ti p có th có (
ạ
i) thay vì ph i xem xét m t
ộ
t h n tr ng thái hi n t
ả
ặ ự
i c a leo núi là ít g p s
ng pháp toàn c c. Nh ng nó cũng gi ng nh các
ư
ợ
ng h p
ờ ẽ
ế ế
ệ ạ
t c các tr ng thái đã đi qua. Thu n l
ậ ợ ủ
ư
ch là không ch c ch n tìm ra l
ắ ơ
ụ ộ ụ
ắ ườ ả Leo núi là m t ph
ụ ộ ở
ươ
m t đánh giá v tr ng thái hi n t
ệ ạ
ề ạ
t nh t
t
i, tr ng thái
thái hi n t
ấ t
ố
ạ
ệ ạ
cách toàn di n trên t
ấ ả
ệ
ạ
h p h n so v i các ph
bùng n t
ớ
ổ ổ ợ
ng pháp c c b khác
ph
ở ỗ
ươ
x u nh t.
ấ ấ i vai trò quy t đ nh c a hàm Heuristic trong quá trình tìm ẳ ạ ủ
ồ ế ớ ộ i (nh leo đ i ch ng h n), n u ta có m t hàm
ạ
ả
c tìm th y nhanh h n. Ta hãy xét bài toán v các ế ị
ư
ấ ẳ
ơ ề M t l n n a, ta kh ng đ nh l
ộ ầ ữ
ị
i. V i cùng m t thu t gi
ki m l
i gi
ả
ậ
ộ
ờ
ế
Heuristic t
t h n thì k t qu s đ
ế
ố ơ
ả ẽ ượ
hình sau. Ta có hai thao tác bi n đ i là:
c trình bày
kh i đ
ố ượ ế ở ổ đ nh m t c t b t kỳ và đ t nó lên m t ch tr ng t o thành ố ở ỉ ặ ỗ ố ạ + L y m t kh i
ộ
m t c t m i. L u ý là ch có th t o ra t
ư ộ ộ ấ
ể ạ
ỉ ấ
ộ ộ ớ ộ
i đa 2 c t m i.
ớ
ộ ố đ nh m t c t và đ t nó lên đ nh m t c t khác + L y m t kh i
ộ ố ở ỉ ộ ộ ộ ộ ặ ấ ỉ 18 Hãy xác đ nh s thao tác ít nh t đ bi n đ i c t đã cho thành c t k t qu . ấ ể ế ộ ế ổ ộ ả ố ị TTNT ế ạ ạ Gi s ban đ 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
ể
cho m i kh i đ t
ố ặ ở ị v trí đúng so v i tr ng thái đích. Tr 1 đi m
ể
v trí sai so v i tr ng thái đích.
ớ ạ ộ
ỗ v trí ạ ố ề ượ ặ ở ị ế ẽ ả ị ở ầ ể ạ c đ t
ố
tr ng thái ể ể 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 đ
đú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
ể ừ ạ
1).
kh i đ u, đó là d ch chuy n kh i A xu ng t o thành m t c t m i (T ộ
ộ
ộ ộ ở ầ ố
ố ừ
ị ỉ
ạ ể ố ớ 6 (vì v trí c a kh i A bây gi ủ ờ ộ ạ
ộ ớ ố ể
ủ ụ ể ố
ậ ự ị
ạ ị
ẽ ấ
ẫ ệ 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)
ố ể ướ ữ sinh ra 1
Đi u đó sinh ra m t tr ng thái v i s đi m là
ề
đ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
ừ
ể
ể
ơ
ộ
ớ 1, có ba di chuy n có th th c hi n d n đ n ba tr ng thái
tr ng thái m i T
Ta, Tb, Tc
ể ự
ạ
đ
ạ
ọ
ượ
= 4 và h’(Tc) = 4 19 T1 TA TB TC TTNT Hình Các tr ng thái có th đ t đ c t T
ể ạ ượ ừ 1 ạ ở ố ể ấ ạ i ỉ ừ ệ t c các tr ng thái này có s đi m th p h n
ơ
ấ ả
ự ạ ị
m t tr ng thái c c đ i đ a
ế ạ ở ộ ạ Th t c leo núi s t m d ng b i vì t
ủ ụ
ừ
ẽ ạ
tr ng thái hi n hành. Quá trình tìm ki m ch d ng l
ạ
ng mà không ph i là c c đ i toàn c c.
ph
ươ ự ạ ụ ả ả i thu t leo đ i vì đã th t b i do không đ t m nhìn
ấ ạ ủ ầ ậ ồ i cho chính gi
i gi i. Nh ng chúng ta cũng có th đ l i cho hàm Heuristic và ể ổ ỗ
ờ ư ể ổ ỗ Chúng ta có th đ l
t ng quát đ tìm ra l
ể
ổ
c g ng s a đ i nó. Gi
ử ổ
ố ắ ả
s ta thay hàm ban đ u b ng hàm Heuristic sau đây :
ằ
ả ử ầ ố ằ ụ ợ ướ ố
i kh i H2 : Đ i v i m i kh i ph tr đúng (kh i ph tr là kh i n m bên d
hi n t ố
i tr 1 đi m. c l ố ớ
ỗ
i), c ng 1 đi m, ng
ộ ụ ợ
ượ ạ ừ ệ ạ ố
ể ể 1) = –21 vì A không còn 7 kh i sai phía d ạ ố ộ ằ
ể ụ ợ ố ể
ể ượ ớ
ạ ị
ố
ở ầ ế
ị
ượ
c 2 đi m, D đ
ể ố ể ố ớ ạ ể ướ ữ 28 vì B n m đúng v trí và không có
ằ
c 1 đi m c ng v i 1 đi m do kh i ph tr B n m
c 3 đi m, ....Tr ng thái kh i đ u có s đi m là
–
ượ
ớ ố
ể
có các đi m s là : h’(Ta)=–28; h’(Tb)=–16 và h’(Tc) = –15. ờ
ố ứ ở ố
ề ư ế
ắ
ơ ế ơ ộ ị ự ệ ệ t ngay t
ứ ủ ụ i ho t đ ng m t cách ộ
2 m i này l ể
t trong t
ươ
ư
ồ
ạ ộ ạ ộ ớ Dùng hàm này, tr ng thái k t thúc có s đi m là
kh i ph tr nào, C đúng v trí đ
ụ ợ
đúng v trí nên C đ
ị
ể
28. Vi c di chuy n A xu ng t o thành m t c t m i làm sinh ra m t tr ng thái v i s
ộ ộ
ể
ệ
ộ ạ
đi m là h’(T
i nó n a. Ba tr ng thái có th
ố
ạ
phát sinh ti p theo bây gi
ể
ố
ế
ộ
đó có m t
Lúc này th t c leo núi d c đ ng s ch n di chuy n đ n tr ng thái Tc,
ế
ạ
ẽ ọ
ủ ụ
ố ơ không ch có nghĩa là có
t h n
2 này ta rút ra m t nguyên t c :
kh i đúng. Qua hàm H
t
ỉ
ộ
ả ít khuy t đi m
nhi u u đi m
ể h n. H n n a, khuy t đi m không có
ể h n mà còn ph i
ế
ơ ữ
ng quan gi a
nghĩa ch là s sai bi
ữ
i m t v trí mà còn là s khác bi
ạ
ự
ỉ
1 bị
các v trí. Rõ ràng là đ ng v m t k t qu , cùng m t th t c leo đ i nh ng hàm H
ả
ị
th t b i (do ch bi
ấ ạ
ỉ ế
hoàn h o (do bi
ế
ả ề ặ ế
t đánh giá u đi m) còn hàm H
ể
t đánh giá c u đi m và khuy t đi m).
ể ư
ả ư ể ế c m t hàm Heuristic hoàn ả ộ ệ t k đ
ế ế ượ
ệ ể ế ể ủ ạ ẳ ế
ư ế
h n. Ch ng h n, xét l
ệ ế ơ
ể ề
ầ ề ợ ố Đáng ti c, không ph i lúc nào chúng ta cũng thi
h o nh th . Vì vi c đánh giá u đi m đã khó, vi c đánh giá khuy t đi m càng khó và
ư
ả
i v n đ mu n đi vào khu trung tâm c a m t thành ph
tinh t
ố
ộ
ố
ạ ấ
ộ
ng m t
xa lạ. Đ hàm Heuristic hi u qu , ta c n ph i đ a các thông tin v các đ
ườ
ả ư
ả
chi u và các ngõ c t, mà trong tr
thì ta khó
ng h p m t thành ph hoàn toàn xa l
ạ
ộ
ườ
ho c không th bi c nh ng thông tin này. t đ ụ
ể ế ượ ề
ặ ữ ấ ủ ể ế ượ ả
ả ủ ả ệ ả ậ c tìm
ậ
ồ ố ứ
i leo đ i đ n gi n và leo đ i d c đ ng i ti p c n theo chi n l
ả ế ậ
ả
ồ ơ Đ n đây, chúng ta hi u rõ b n ch t c a hai thu t gi
ki m chi u sâu. Hi u qu c a c hai thu t gi
ề
ph thu c vào :
ộ ế
ế
ụ + Ch t l ng c a hàm Heuristic. ấ ượ ủ + Đ c đi m c a không gian tr ng thái. ủ ể ặ ạ 20 + Tr ng thái kh i đ u. ở ầ ạ TTNT ẽ ể ớ ậ ộ ế ợ ượ ứ
ộ ủ ả
c s c m nh c a c
ạ
i r t linh đ ng và có th nói
ể Sau đây, chúng ta s tìm hi u m t ti p c n theo m i, k t h p đ
ộ ế ậ
tìm ki m chi u sâu và tìm ki m chi u r ng. M t thu t gi
ế
ả ấ
ề ộ
ề
ế
i kinh đi n c a Heuristic.
là m t thu t gi
ể ủ ậ ả ộ III.4. Tìm ki m u tiên t i u (best-first search) ế ư ố ư ả ề ủ ế ủ ế
Ư ể
ụ ố ư ẽ ế ợ ườ ư ờ ế ư
ng duy nh t t
ấ ạ
ng khác. N u con đ
ế ờ ẫ
ọ ẻ ể ườ
ng này. Đ ti n l t t ộ
ể
t BFS thay cho tên g i tìm ki m u tiên
ọ ố
ế ư ể ệ ợ ẽ t
ủ ấ
u đi m c a tìm ki m theo chi u sâu là không ph i quan tâm đ n s m r ng c a t
ế ự ở ộ
Ư ể
ế
ng d n b
c các nhánh. u đi m c a tìm ki m chi u r ng là không b sa vào các đ
ẫ
ườ
ị
ề ộ
ả
i u s k t h p 2 ph
t c (các nhánh c t). Tìm ki m u tiên t
ng pháp trên cho phép
ươ
ắ
i m t th i đi m, nh ng đ ng th i v n "quan sát"
ta đi theo m t con đ
ộ
ồ
ể
ộ
ng đang đi "có v " không tri n v ng b ng
đ
ằ
c nh ng h
ướ
ườ
ữ
ượ
ng ta đang "quan sát" ta s chuy n sang đi theo m t trong s các con
nh ng con đ
ẽ
ữ
đ
i ta s dùng ch vi
ườ
ữ ế ắ
i u.
t
ố ư i m i b ộ ạ c xét ụ ể ạ
ấ ỗ ướ ủ
ạ ả
cho đ n th i đi m đó.
(khác v i leo
ờ
ạ ế tr ng thái hi n t ể
ố
ớ ế ậ
ế ư ậ
ố ả ấ ư ị ẩ
ằ ướ ư ướ ộ ướ
ng
ế
, đ n m c nó x u h n c nh ng
ơ ả ữ
ệ ế
ấ
ứ
ng hi n t
ộ
i n a mà ch n đi theo m t
ọ
ệ ạ ữ
ế
ng ch đ o c a tìm ki m
t
ủ ạ ủ
ư ưở
ng này. B n hãy xem ví d sau : t nh t trong s nh ng h
c t c c a tìm ki m BFS, ta ch n đi theo tr ng thái có kh
M t cách c th , t
ọ
ế
năng cao nh t trong s các tr ng thái đã đ
ế
ượ
ớ
ố
đ i d c đ ng là ch ch n tr ng thái có kh năng cao nh t trong s các tr ng thái k
ả
ạ
ồ ố ứ
ỉ ọ
ấ
i). Nh v y, v i ti p c n này, ta s u tiên
c t
ti p có th đ n đ
ẽ ư
ệ ạ
ể ế ượ ừ ạ
ế
đi vào nh ng nhánh tìm ki m có kh năng nh t (gi ng tìm ki m leo đ i d c đ ng),
ữ
ồ ố ứ
ế
nh ng ta s không b l n qu n trong các nhánh này vì n u càng đi sâu vào m t h
ẩ
ẽ
ng này càng đi thì càng t
mà ta phát hi n ra r ng h
ệ
ng mà ta ch a đi, thì ta s không đi ti p h
h
ẽ
ướ
h
ng t
ố
ố ữ
ấ
ướ
t
BFS. Đ hi u đ
ể ể ượ ư ưở ế ướ
ng ch a đi. Đó là t
ư
ụ
ạ i Best-First Search ậ ọ ả 21 TTNT ỉ ạ ở ộ ở ầ ớ ị ộ
ố ướ ỏ ẽ ượ
t đ t
ế ộ ố ủ
ẽ ượ i nút là giá tr cho bi
ấ
ả ế ế t. Do D là nút có kh năng nh t nên nó s đ
ế ở ộ
ẻ ấ ở ộ ạ i tr v E. E đ ế ự c sinh ra t Ở ướ ế ế ở ộ Kh i đ u, ch có m t nút (tr ng thái) A nên nó s đ
và D. Các con s d
t
ố
nút k ti p là E và F. Đ n đây, ta l
ấ
ạ
B,C,E,F) nên ta s ch n m r ng nút B và t o ra 2 nút G và H. Nh ng l
ẽ ọ
c đánh giá ít kh năng h n
hai nút G, H này đ
ả
ượ
E là I và J.
m r ng và các nút đ
c k ti p, J s đ
ừ
ượ
nó có kh năng nh t. Quá trình này ti p t c cho đ n khi tìm th y m t l
ế ụ c m r ng t o ra 3 nút m i B,C
ạ
t c a nút. Con s càng nh , nút càng
ố
c m r ng ti p sau nút A và sinh ra 2
ế
i th y nút B có v có kh năng nh t (trong các nút
ả
ộ ầ ữ
i m t l n n a,
c
ượ
c m r ng vì
ở ộ
i.
i gi
ả ạ
ư
ơ E, vì th s chú ý l
ạ ở ề
ẽ ượ
ộ ờ b
ế ả ấ ấ ấ ằ ư ồ ố ứ ạ ệ
. ớ ớ
c ch n và t
ọ chúng đ ờ ử ế
t c các tr ng thái khác b lo i b , không
ấ ả
ộ ặ
ứ
ọ ể ượ ẫ ượ
ả ượ ư ạ ướ ọ
t
ố ơ hay không các tr ng thái tr
t h n
ồ ẽ ừ ế
ồ ươ ế ả ạ t h n tr ng thái hi n hành. L u ý r ng tìm ki m này r t gi ng v i tìm ki m leo đ i d c đ ng, v i 2 ngo i l
ố
ế
Trong leo núi, m t tr ng thái đ
ị ạ ỏ
ượ
ạ
ộ ạ
i. Cách x lý d t khoát này là m t đ c tr ng c a leo
c xem xét l
bao gi
ủ
ư
ạ
ượ
c ch n nh ng nh ng cái
i m t b
đ i. Trong BFS, t
c, cũng có m t di chuy n đ
ư
ộ
ạ
ộ ướ
ữ
ồ
i xét sau đó khi tr ng thái hi n t
i, đ ta có th tr l
c gi
khác v n đ
i tr nên
l
ệ ạ ở
ạ
ể ở ạ
ể
ữ ạ
ố
t
c l u tr . H n n a, ta ch n tr ng thái t
kém kh năng h n nh ng tr ng thái đã đ
ạ
ữ ơ ữ
ữ
ơ
nh t mà không quan tâm đ n nó có
ề
c đó. Đi u
ạ
ấ
này t
ng ph n v i leo đ i vì leo đ i s d ng n u không có tr ng thái ti p theo nào
ế
ớ
t
ố ơ ệ ạ i theo ki u tìm ki m BFS, ng i ta th ậ ả ể ế ườ ườ ậ
ng c n dùng 2 t p ầ Đ cài đ t các thu t gi
ặ
ể
h p sau :
ợ c xét đ n (vì ta đã ạ ứ c sinh ra nh ng ch a đ
ư ế ọ ự ộ i ta th ư ượ
ượ
OPEN là m t lo i hàng đ i u tiên (priority queue)
ợ ư
ấ . Ng ạ
ầ ử t
có đ u tiên cao nh t là ph n t ộ ư ườ ườ t nh t
ố
ả ể ạ ằ OPEN : t p ch a các tr ng thái đã đ
ậ
ch n m t tr ng thái khác). Th c ra,
ộ ạ
ng cài
mà trong đó, ph n t
ấ
ầ ử
ề
đ t hàng đ i u tiên b ng Heap. Các b n có th tham kh o thêm trong các tài li u v
ệ
ặ
C u trúc d li u v lo i d li u này.
ấ ề ạ ữ ệ ợ ư
ữ ệ ậ ượ ạ ế ầ ư ớ ể ề c xét đ n. Chúng ta c n l u tr nh ng tr ng
ạ
ạ
i ng h p khi m t tr ng thái m i đ
ộ ạ
c đó. Trong tr ớ ữ ữ
c t o ra l
ớ ượ ạ
ng h p không gian tìm
ợ ườ CLOSE : t p ch a các tr ng thái đã đ
ứ
thái này trong b nh đ đ phòng tr
ợ
ộ
trùng v i m t tr ng thái mà ta đã xét đ n tr
ướ
ộ ạ
ki m có d ng cây thì không c n dùng t p này. ườ
ế
ậ ế ạ ầ i BEST-FIRST SEARCH Thu t gi
ậ ả ở ầ ứ ạ c tr ng thái đích ho c không còn nút nào trong OPEN, th c hi n : ượ ự ệ ạ ặ ạ ọ ỏ ế ế ạ c l i, t o ra các tr ng thái k ti p Tk có th có t ượ ạ ạ ế ế ể ừ ạ ố ớ
tr ng thái Tmax. Đ i v i ạ
ự ệ 22 TTNT , cũng nh tìm ki m chi u sâu và chi u r ng, ơ ả ế
ng, ng ề
i ta th ề ộ
ng dùng các ế ườ ườ BFS khá đ n gi n. Tuy v y, trên th c t
ư
ậ
ự ế
hi m khi ta dùng BFS m t cách tr c ti p. Thông th
ườ
ự ế
ộ
*
phiên b n c a BFS là AT, AKT và A ả ủ ng lai Thông tin v quá kh và t
ề ứ ươ ng, trong các ph ng án tìm ki m theo ki u BFS, đ t t ủ ể g và h’. h’ chúng ta đã bi ự ế ị ng v chi phí t ề ạ ộ ố f c a m t tr ng
ộ ạ
t, đó là
tr ng thái hi n hành cho đ n tr ng thái đích (thông tin
ế
ừ ạ ế ề ạ
tr ng thái ban đ u cho đ n tr ng
ầ đã đi t
g là chi phí th c s (không ph i chi phí ườ
ươ
c tính d a theo 2 hai giá tr mà ta g i là là
c l
ừ ạ
ng lai). Còn
ệ ạ ự ự ư ả ứ
ng). Đ d hi u, b n hãy quan sát hình sau : Thông th
thái đ
ượ
m t
ộ ướ ượ
t
ươ
thái hi n t
c l
ướ ượ ế
ọ
ệ
ng"
g là "chi u dài quãng đ
ườ
i (thông tin quá kh ). L u ý r ng
ằ
ạ ể ễ ể Hình 6.14 Phân bi ệ t khái ni m g và h’
ệ f’ (f’ = g + h’) s th hi n m t ng v "t ng chi phí" cho ộ ướ ượ ế ợ
ườ ẽ ể ệ
ề ổ
tr ng thái b t đ u đ n tr ng thái k t thúc d c theo con đ
ạ ườ c là g và h’ đ u không âm c l
ọ
ế
i, ta quy
ướ
ả ế
ệ ậ ng đi qua
ề K t h p g và h’ thành
ng t
con đ
ừ ạ
tr ng thái hi n hành. Đ thu n ti n cho thu t gi
ể
ệ
ạ
và càng nh nghĩa là càng t ắ ầ
ậ
t. ỏ ố là m t ph
ộ III.5. Thu t gi i AT ậ ả ươ ể ị Thu t gi
ậ
hàm g – t ng chi u dài con đ t c a nút là giá tr
i. ng đã đi t i AT
ả
ổ ề ng pháp tìm ki m theo ki u BFS v i đ t
ớ ộ ố ủ
ạ ế
tr ng thái b t đ u đ n tr ng thái hi n t
ừ ạ ắ ầ ệ ạ ườ ế i AT Thu t gi
ậ ả ở ầ ứ ạ c tr ng thái đích ho c không còn nút nào trong OPEN, th c hi n : ượ ự ệ ạ ặ 23 TTNT ọ ạ ế ế ạ c l i, t o ra các tr ng thái k ti p Tk có th có t ượ ạ ạ ế ế ể ừ ạ ố ớ
tr ng thái Tmax. Đ i v i ạ
ự ệ Thêm Tk vào OPEN. ng h’) fsđ đánh giá đ t t c a m t tr ng thái nên ta c l
ướ ượ ộ ố ủ ộ ạ ể * Vì ch s d ng hàm g (mà không dùng hàm
cũng có th xem AT ch là m t thu t toán.
ỉ ỉ ử ụ
ể ậ ộ (Algorithm for Knowlegeable Tree Search) m r ng AT b ng cách s d ng thêm thông tin III.6. Thu t gi i AKT ậ ả i AKT ng h’. Đ t ử ụ ở ộ ằ c l
ướ ượ ộ ố
t Thu t gi
ậ
c a m t tr ng thái f là t ng c a hai hàm g và h’.
ổ
ủ ả
ộ ạ ủ i AKT Thu t gi
ậ ả ở ầ ứ ạ c tr ng thái đích ho c không còn nút nào trong OPEN, th c hi n : ượ ự ệ ạ ặ ọ ạ ế ế ạ c l i, t o ra các tr ng thái k ti p Tk có th có t ượ ạ ạ ế ế ể ừ ạ ố ớ
tr ng thái Tmax. Đ i v i ạ
ự ệ g(Tk) = g(Tmax) + cost(Tmax, Tk); Thêm Tk vào OPEN. III.7. Thu t gi i A* ậ ả 24 ệ ủ ậ ả i A*
* ng h p đ th . Thu t gi
ợ
ồ ị
c xét đ n. A
ng h p đã đ
ế
ợ ả
ậ ở ộ ằ ộ A* là m t phiên b n đ c bi
ộ
ườ
có s d ng thêm t p h p
ử ụ
ượ
ườ
ng h p khi "m " m t nút mà nút
m r ng AKT
ả
ở
ợ
ệ
này đã có s n trong OPEN ho c CLOSE. Khi xét đ n m t tr ng thái Ti bên c nh vi c
ộ ạ t c a AKT áp d ng cho tr
ặ
ụ
ợ CLOSE đ l u tr nh ng tr
ể ư
ữ ữ
b ng cách b sung cách gi
i quy t tr
ế ườ
ổ
ế ặ ẵ ạ TTNT * còn l u trư t c a tr ng thái đó, A ữ ị ơ ả ể ả ộ ố ủ ạ ữ l u tr 3 giá tr c b n g,h’, f’ đ ph n ánh đ t
ư
thêm hai thông s sau : ố ạ ủ ệ ẫ t tr ng thái d n đ n
ế
ế ạ
thì ch n Cha(Ti) sao
i : cho bi
ạ
ng h p có nhi u tr ng thái d n đ n T
ế
ạ
ườ ạ ọ tr ng thái kh i đ u đ n Ti là th p nh t, nghĩa là : 1. Tr ng thái cha c a tr ng thái Ti (ký hi u là Cha(Ti)
tr ng thái Ti. Trong tr
ẫ
cho chi phí đi t
ấ ợ
ở ầ ừ ạ ề
ế ấ : danh sách này l u tr các tr ng thái k g(Ti) = g(Tcha) + cost(Tcha, Ti) là th p nh t. ấ ấ ặ ạ ế ế ủ ế ữ ư ạ ế ế ấ ủ
ấ tr ng thái ban đ u là th p nh t.
ấ
ầ
ừ ạ
ộ thu c tính Cha c a các tr ng thái
ủ ể ượ c tính ra t
c l u tr . Tuy nhiên, vi c tính toán này có th m t nhi u th i gian (khi t p OPEN, ạ
ậ ệ ờ i ta th ề
ộ ở ộ ườ ữ
c m r ng) nên ng
ượ
ẽ ư
ế ng l u tr ra m t danh sách riêng. Trong
ữ
ậ ừ
ể ấ
ữ
ệ ư
ạ ể ễ ể ư ữ ề ạ ậ ọ ỉ 2. Danh sách các tr ng thái k ti p c a Ti
ti p Tk c a Ti sao cho chi phí đ n Tk thông qua Ti t
Th c ch t thì danh sách này có th đ
ự
đ
ượ ư
CLOSE đ
ườ
thu t toán sau đây, chúng ta s không đ c p đ n vi c l u tr danh sách này. Sau khi
ề ậ
ậ
hi u rõ thu t toán, b n đ c có th d dàng đi u ch nh l
i thu t toán đ l u tr thêm
ể
thu c tính này.
ộ ỉ ứ
ậ ợ ỗ ặ i các b ặ ạ ướ c sau cho đ n khi g p đi u ki n d ng.
ặ ệ ừ ế ề ế ệ ỗ c l
ượ ạ i, ch n Tmax trong OPEN sao cho f’(Tmax) là nh nh t
ấ ọ ỏ ỏ OPEN và đ a Tmax vào
ư ấ chính là TG thì thoát và thông báo l i gi i là Tmax. ờ ả t c ế ấ ả các tr ng thái k
t ạ ế
c sau : ế ủ ướ ớ ọ . i Tk’ trong OPEN trùng v i Tk ế ồ ạ ớ N u g(Tk’ ) < g(Tk ’) thì ế Đ t g(Tk’) = g(Tk) ặ Tính l i f’(Tk’) ạ Đ t Cha(Tk’) = Tmax ặ i Tk’ trong CLOSE trùng v i Tk
. ế ồ ạ ớ 25 TTNT N u g(Tk) < g(Tk ’) thì ế Đ t g(Tk’) = g(Tk) ặ Tính l i f’(Tk’) ạ Đ t Cha(Tk’) = Tmax ặ ổ t c các
t c các c p) đã đ ị
ở ấ ả ấ ả
ấ ượ
c ữ ế ch a xu t hi n trong c
ệ ả OPEN l n ẫ CLOSE thì : ư ấ Thêm Tk vào OPEN Tính : f' (Tk) = g(Tk)+h’(Tk). 0. Đó chính là "con đ 0 (hay nói cách khác là t ầ ộ ố ể ầ
c "con đ T i thích trong thu t gi
ể i này. Đ u tiên là vi c sau khi đã tìm
i đ
ạ ượ ấ
ừ 0 đ n TG. R t ạ
ả ậ
ự
ộ ượ ủ ạ ệ
ng" t
ườ
ạ
ng" t i u đi t ỉ ầ ầ
CLOSE cho đ n khi đ t đ n T
ế ố ư ườ ừ Có m t s đi m c n gi
ả
ả
th y tr ng thái đích TG, làm sao đ xây d ng l
ấ
đ n gi n, b n ch c n l n ng
ơ
tr trong
ữ
đ n Tế ế
ượ ư
c l u
c theo thu c tính Cha c a các tr ng thái đã đ
TG
ạ ế
Từ 0 đ n TG).
ế ể ứ ướ ng : "luôn ch n con đ ế ữ c 2.b.3.2 và
ư
i u nh t". Nh
ấ
Từ 0 đ n Tk’.
ế ườ ng hi n t ườ ườ ườ
ợ ng" m i t
Tk’ n m trong t p CLOSE nên t
ậ ừ ng h p 2.b.3.3 ph c t p h n. Vì t
ấ
ữ ừ ư ạ ế ượ ế ổ ị ủ ế ế ớ ỗ ự ệ ệ ạ ậ ệ ế ể ậ i
ứ g(T) = g(Cha(T)) +cost(Cha(T), T) ) và vì ữ
ề
ế i g(Tk’) , f’(Tk’) và Cha(Tk’) trong b
Đi m th hai là thao tác c p nh t l
ậ
ậ ạ
2.b.3.3. Các thao tác này th hi n t
t
ng t
ườ
ọ
ố ư
ể ệ ư ưở
t, giá tr g(Tk’) nh m l u tr chi phí t
ự ự tính t
chúng ta đã bi
ố ư th c s
i u
ư
ằ
ị
ng" khác t
t h n thông qua Tk (có chi
Do đó, n u chúng ta phát hi n th y m t "con đ
ộ
ố ơ
ấ
ệ
ế
ớ ố
t
c l u tr thì ta ph i ch n "con đ
i đ
phí nh h n) con đ
ả
ệ ạ ượ ư
ọ
ữ
ỏ ơ
ừ
h n này. Tr
ằ
ơ
ứ ạ
ơ
ổ
Tk’. Nh ng g(Tk’) thay đ i
Tk’ ta đã l u tr các tr ng thái con k ti p xu t phát t
ế ế
ư
t các
d n đ n giá tr g c a các tr ng thái con này cũng ph i thay đ i theo. Và đ n l
ạ
ủ
ẫ
ả
i có th có các các tr ng thái con ti p theo c a chúng và c th
tr ng thái con này l
ứ ế
ạ
ế
ể
ạ
ạ
OPEN (nghĩa là không có
cho đ n khi m i nhánh k t thúc v i m t tr ng thái trong
ộ ạ
tr ng thái con nào n a). Đ th c hi n quá trình c p nh t này, ta hãy th c hi n quá
ậ
ể ự
trình duy t theo chi u sâu v i đi m kh i đ u là Tk’. Duy t đ n đâu, ta c p nh t l
ậ ạ g
ệ
ở ầ
ớ
c a các tr ng thái đ n đó ( dùng công th c
ạ
ủ
ị f’ c a các tr ng thái này cũng thay đ i theo.
th giá tr
ế ủ ạ ổ i r ng, b n có th cho r ng t p OPEN l u tr các tr ng thái
ậ ư ể ạ ữ
c xem xét đ n sau" còn t p CLOSE l u tr các tr ng thái "đã đ
ượ ạ
ế
c xét đ n ắ ạ ằ
ế ằ
ữ ư ậ ạ ộ ầ ữ
ẽ ượ M t l n n a, xin nh c l
"s đ
r i". ồ ể ạ ẽ ả ướ ả ẽ c m t thu t gi
c gi i bài toán tìm đ ộ
ướ i dài nh th . V n đ có l
ư ế ấ
ườ ề
ắ
ng đi ng n ậ
ả i A* sau đây. Có th b n s c m th y khá lúng túng tr
ấ
s tr nên sáng s a h n khi b n quan sát các b
ẻ ở
ủ ơ
nh t trên đ th b ng thu t gi
ồ ị ằ
ấ ạ
ả ậ 26 III.8. Ví d minh h a ho t đ ng c a thu t gi ạ ộ ụ ủ ọ ậ ả *
i A TTNT ọ ả ậ ẽ ủ ườ ế ấ ừ i A* trong vi c tìm ki m đ
ệ
ố Bucharest c a Romania. B n đ các thành ph ạ ộ
ố Arad đ n thành ph
ế ồ ắ
ng đi ng n
ố
ủ
c cho trong đ th sau. Trong đó m i đ nh c a đ th c a là m t thành ồ ị thành ph
ượ
ỉ ố
ọ ộ
ố ươ ứ
ng ng.
ố
ng đi n i hai thành ph
ố
c cho ề
ng chim bay m t thành ph đ n Bucharest đ ng ng, chi u dài theo đ
ề ườ
ằ
ộ ả
ỗ ỉ
ủ ồ ị ủ
ng đi gi a hai thành ph t
ữ
ủ ườ
ố ế ượ Chúng ta s minh h a ho t đ ng c a thu t gi
nh t t
c a Romania đ
ủ
ph , gi a hai đ nh có cung n i nghĩa là có đ
ữ
ố
Tr ng s c a cung chính là chi u dài (tính b ng km) c a đ
ố ủ
t
ươ ứ
ườ
trong b ng kèm theo.
ả Hình : B ng đ c a Romania v i kho ng cách đ ng tính theo km ồ ủ ả ả ớ ườ B ng : Kho ng cách đ ng chim bay t ả ả ườ ừ ộ m t thành ph đ n Bucharest.
ố ế +1. 27 ẽ ọ ả ng chim bay cho trong b ng trên và
ng n i t Chúng ta s ch n hàm
h’ chính là kho ng cách đ
hàm chi phí cost(Ti, Ti+1) chính là chi u dài con đ ả
ề ườ
ườ thành ph Ti và Ti
ố ố ừ TTNT c ho t đ ng c a thu t toán A* trong vi c tìm đ ạ ộ ủ ệ ậ ườ ấ
ng đi ng n nh t
ắ ướ ừ
Arad đ n Bucharest. Sau đây là t ng b
t
ừ ế ẽ ấ ộ ố ố ố = Arad.Ta l y Arad ra kh i OPEN và đ a vào CLOSE. ỉ ứ
t nh t. Nghĩa là Tmax Do trong OPEN ch ch a m t thành ph duy nh t nên thành ph này s là thành ph
t
ố ư ấ ấ ỏ c 3 thành ph là Sibiu, Timisoara và Zerind. Ta l n l ể ừ ế ượ ầ ượ ố t tính ớ ạ ư ố T Arad có th đi đ n đ
giá tr f’, g và h’ c a 3 thành ph này. Do c 3 nút m i t o ra này ch a có nút cha nên
ả
ban đ u nút cha c a chúng đ u là Arad. ị
ầ ủ
ủ ề 28 TTNT ả ề ả ổ Do c 3 nút Sibiu, Timisoara, Zerind đ u không có trong c OPEN và CLOSE nên ta b
sung 3 nút này vào OPEN. c đóng ngo c vuông (nh [Arad]) là nút trong t p CLOSE, Hình : B c 1, nút đ
ướ ượ ậ ư ng ặ
i là trong t p OPEN.
c l
ậ
ượ ạ = Sibiu. ậ ẽ ọ ấ ị Trong t p OPEN, nút Sibiu là nút có giá tr f’ nh nh t nên ta s ch n Tmax
ỏ
Ta l y Sibiu ra kh i OPEN và đ a vào CLOSE. ư ấ ỏ 29 TTNT ể ầ
c 4 thành ph là : Arad, Fagaras, Oradea, Rimnicu. Ta l n ố ế ượ
t tính các giá tr g, h’, f’ cho các nút này. T Sibiu có th đi đ n đ
ừ
l
ượ ị 30 TTNT ị ơ ớ ượ ạ
ậ
ẽ ư i giá tr g và
ị ủ ư ị
i : Fagaras, Oradea, Rimnicu đ u không có
ặ ẽ ư ả c t o ra (có giá tr 280)
Nút Arad đã có trong CLOSE. Tuy nhiên, do g(Arad) m i đ
l n h n g(Arad) l u trong CLOSE (có giá tr 0) nên ta s không c p nh t l
ậ ạ
ớ
f’ c a Arad l u trong CLOSE. 3 nút còn l
ề
ạ
trong c OPEN và CLOSE nên ta s đ a 3 nút này vào OPEN, đ t cha c a chúng là
ủ
Sibiu. Nh v y, đ n b
ư ậ c này OPEN đã ch a t ng c ng 5 thành ph .
ố ế ướ ứ ổ ộ ậ ấ ỏ c 3 thành ph ị
OPEN sang CLOSE. T R.Vilcea có th đi đ n đ
ừ ọ
ế ượ ừ ể = R.Vilcea.
ố Trong t p OPEN, nút R.Vilcea là nút có giá tr f’ nh nh t. Ta ch n Tmax
Chuy n R.Vilcea t
là Craiova, Pitesti và Sibiu. Ta l n l ể
t tính giá tr f’, g và h’ c a 3 thành ph này. ầ ượ ủ ố ị 31 TTNT 32 ẽ ậ ề ố ơ
Sibiu đã có trong t p CLOSE. Tuy nhiên, do g’(Sibiu) m i (có giá tr là 553) l n h n
ớ
ị
ậ
ớ
c l u
i các giá tr c a Sibiu đ
g’(Sibiu) (có giá tr là 393) nên ta s không c p nh t l
ượ ư
ị ủ
ậ ạ
ị
i 2 thành ph là Pitesti và Craiova đ u không có trong c OPEN
trong CLOSE. Còn l
ả
và CLOSE nên ta s đ a nó vào OPEN và đ t cha c a chúng là R.Vilcea.
ủ ạ
ẽ ư ặ TTNT ố ậ ế
Pitesti ta có th đi đ n ừ ể ấ ỏ t nh t là Pitesti, t
c R.Vilcea, Bucharest và Craiova. L y Pitesti ra kh i OPEN và đ t nó vào
ấ
nh trên, ta s không c p nh t giá tr f’,
ự ư ươ ự ẽ ệ ế ậ ị ư ủ Đ n đây, trong t p OPEN, nút t
ế
đ
ượ
ặ
CLOSE. Th c hi n ti p theo t
ng t
ậ
ủ
g c a R.Vilcea và Craiova l u trong CLOSE. Sau khi tính toán f’, g c a
= Pitesti.
Bucharest, ta s đ a Bucharest vào t p OPEN, đ t Cha(Bucharest) ẽ ư ậ ặ 33 TTNT c k ti p, ta s ch n đ ế ậ = b
ự c Tmax
ẽ ọ ượ
ử
ứ i b
ạ ướ ề Ở ướ ế ế
(th c ra thì t
417 , nh ng vì Bucharest là đích nên ta s u tiên ch n h n). = Bucharest. Và nh v y thu t toán k t thúc
ư ậ
c này, có hai ng c viên là Bucharest và Fagaras vì đ u cùng có f’
ọ ẽ ư ư ơ i con đ Arad đ n Bucharest ta l n theo giá tr Cha đ ườ ừ ế ạ ầ ị ượ ư
c l u Đ xây d ng l
tr kèm v i f’, g và h’ cho đ n lúc đ n Arad. ng đi t
ế ự
ớ ể
ữ ế Arad đ n Bucharest là Arad, Sibiu, R.Vilcea, Pitesti, ậ ườ ng đi ng n nh t t
ắ ấ ừ ế V y con đ
Bucharest. ụ ấ ượ ấ ố t và c u trúc đ th khá đ n
ơ
ườ ẳ ng h p đ n gi n, trong tr ng khá t
ả
ả
ng h p này, thu t gi
ậ ồ ị
ng khác. Đây là
ế
i có dáng d p c a tìm ki m
ấ ủ ọ
ư
ơ ầ
ợ ườ ả ả ợ Trong ví d minh h a này, hàm
h’ có ch t l
gi n nên ta g n nh đi th ng đ n đích mà ít ph i kh o sát các con đ
ế
ả
m t tr
ộ ườ
chi u sâu.
ề 34 ọ ể ả ơ ủ
ả ứ ạ
ủ ọ 100, con đ
ừ ế ng t ố ư ế ư ậ Đ n đây, đ minh h a m t tr
ộ ườ
ế
i c u trúc đ th và quan sát ho t đ ng c a thu t gi
l
ồ ị
ạ ấ
TP và con đ
ph t m g i là
ố ạ
TP và Pitesti có chi u dài 6
ề
174. Nh v y rõ ràng, con đ
R.Vilcea, Pitesti, Bucharest n a mà là Arad, Sibiu, TP, Pitesti, Bucharest. ử ử ổ
i. Ta th s a đ i
ng h p ph c t p h n c a thu t gi
ậ
ợ
s ta có thêm m t thành
i. Gi
ộ
ả ử
ậ
ạ ộ
ữ Sibiu và TP có chi u dài
ng gi a
ữ
ng gi a
ườ
ườ
ề
0. Và kho ng cách đ
TP đ n Bucharest là
ng chim bay t
ả
ườ
i u đ n Bucharest không còn là Arad, Sibiu,
ườ
ữ TTNT ng h p này, chúng ta v n ti n hành b ườ ế ẫ ướ ự c 2 (m r ng Sibiu), chúng ta có cây tìm ki m nh hình sau. L u ý là có thêm c 1 nh
ư ở
ư
ế ệ
trên. Sau khi th c hi n
ư ợ
ở ộ Trong tr
hi n b
ệ ướ
nhánh TP. 35 ng h p đ u tiên. R.Vilcea v n có giá tr f’ th p nh t. Nên ta m r ng R.Vilcea nh tr
ấ ở ộ ư ườ ấ ẫ ị ầ ợ TTNT ng h p đ n gi n là m r ng Pitesti đ có đ ợ ơ ể ả ả ườ
ợ ượ ế
ọ ở ộ
ấ ở ộ ị ng đi, m t quay l
ộ ướ c k t qu . Tuy
ừ
ng h p này, TP có giá tr f’ th p h n. Do đó, ta ch n m r ng TP. T
ơ
ẽ
i Sibiu và m t đ n Pitesti. Đ nhanh chóng, ta s
ộ ế
c l u tr trong
ữ
ẽ ớ
ế ể
t ch c nó s l n h n giá tr đ
ị ượ ư ị ủ ắ ơ B c k ti p c a tr
ướ ế ế ủ
nhiên, trong tr
ườ
TP ta ch có 2 h
ạ
ỉ
không tính toán giá tr c a Sibiu vì bi
CLOSE (vì đi ng i). c l
ượ ạ ấ ệ ậ ấ ớ ị ư
i giá tr c a f’,g, Cha c a Pitesti l u ậ ạ ị ủ ủ Pistestti đã xu t hi n trong t p OPEN và g’(Pitesti) m i (có giá tr là 315) th p h n
ơ
g’(Pitesti) cũ (có giá tr 317) nên ta ph i c p nh t l
trong OPEN. Sau khi c p nh t xong, t p OPEN và CLOSE s nh sau : ả ậ
ậ ẽ ư ị
ậ ậ 36 TTNT ế ế ả ầ ậ ọ ườ
ế ả ẽ ấ ằ
ậ
ng này. Đây chính là tr i ch n đ
ng đ n Pitesti qua TP là t
ườ
ng h p 2.b.iii.2 trong thu t gi Đ n đây ta th y r ng, ban đ u thu t gi
nhiên, sau đó, thu t gi
s d ng con đ
ử ụ i phát hi n ra con đ
ệ
ườ ng đi đ n Pitesti qua R.Vilcea. Tuy
t h n nên nó s
ố ơ
i.
ả ườ ậ ợ ng. Khi l n ng c theo ẽ ọ ượ ư ầ B c sau, chúng ta s ch n m r ng Pitesti nh bình th
thu c tính Cha, ta s có con đ ườ
i u là Arad, Sibiu, TP, Pitesti, Bucharest. ng t ở ộ
ườ ướ
ộ ố ư ẽ III.9. Bàn lu n v A* ậ ề b n đã hi u đ ộ ả ế ẽ ạ ự ế ể ệ ườ i đó t ạ ạ
ạ t nh th nào (th hi n b i giá tr
ố ể ượ
ủ g trong vi c giúp chúng ta l a ch n đ
ọ
ạ
ư ế
ế ờ ỉ
ườ ư ả i. Ch ng h n nh trong bài toán tìm đ
ệ ệ
i gi
ng d n đ n l
ế ờ
ạ ữ ể ng ng n nh t. Tuy nhiên, n u ta ch quan tâm đ n vi c
ế ệ tìm đ ấ
ộ ườ ấ ắ ỉ
ng đ n l ế ờ ệ ở ọ ạ ẻ ầ ề ọ f’ ch ph thu c vào h’ là hàm
ấ ủ c l
ướ ượ
ế c. Đ n đây, có l
c thu t gi
ậ
A*. Đ u tiên là vai trò c a
ệ
ầ
ệ
ta kh năng l a ch n tr ng thái nào đ m r ng ti p theo, không ch d a trên vi c
ự
ể ở ộ
ả
tr ng thái đó t
ng t
ố
ở
tr ng thái kh i đ u đ n tr ng thái hi n t
ệ ạ
ở ầ
i gi
ta không ch quan tâm vi c tìm ra l
ả
c a con đ
ạ
ẫ
ẳ
ủ
nh t gi a hai đi m. Bên c nh vi c tìm ra đ
ườ
ể
ữ
m t con đ
(mà không quan tâm đ n hi u qu c a con đ
ả ủ
ế
g=0
ẽ
v i tr ng thái k t thúc (vì lúc này
ế
ớ ạ
cách" g n nh t đ t
ấ ể ớ
ầ
theo nguyên lý h
ướ ị ề
i này. Ta có m t vài nh n xét khá thú v v
ậ
ng đi. Nó cho chúng
ọ ườ
ỉ ự
ị h’) mà còn trên c s con đ
ừ
ơ ở
ế
t ra sao. Đi u này s r t h u ích n u
ẽ ấ ữ
ề
ả
i hay không mà còn quan tâm đ n hi u qu
ế
ệ
ng đi ng n
ắ
ườ
ng đi gi a hai đi m, ta còn ph i tìm ra
ả
c l
ượ ờ ả
i
i gi
ế
i), chúng ta có th đ t
ể ặ
i gi
ả
ườ
m i tr ng thái. Đi u này s giúp ta luôn ch n đi theo tr ng thái có v g n nh t
ấ
ạ
ả
ng "kho ng
ỉ ụ
ộ
i có dáng d p c a tìm ki m chi u sâu
i đích). Lúc này thu t gi
ậ
ề
ả
ng đích k t h p v i l n ng
ượ
ớ ầ ế ợ i-1, Ti) = 1
i, n u mu n tìm
ố ố ế ố ướ ạ ượ ạ m t tr ng thái đ n các ế
ấ c tr ng thái đích
ế ả ớ s b
i, n u ta mu n tìm ra k t qu v i
ặ
ố ằ ng ấ (đ t đ
c ít nh t
ừ ộ ạ
ị ể
ng là 1 Nghĩa đ t cost(T
ặ
c l
ng). Còn ng
ế
ượ ạ ế ế ủ
ộ ườ
ườ ẫ c l
ướ ượ
ả ặ ẻ ả ấ Ng
c l
ượ ạ
v i s tr ng thái trung gian ít nh t), thì ta đ t giá tr đ đi t
ớ ố ạ
tr ng thái con k ti p c a nó luôn là h ng s , th
ạ
h’ nh bình th
(và v n dùng m t hàm
ư
chi phí r nh t thì ta ph i đ t giá tr hàm cost chính xác (ph n ánh đúng ghi phí th c
ự
ị
s ). ự ế ể ắ ầ ả ậ ắ ạ
ộ ả ố ư ọ
ậ c r ng thu t gi
ả
ộ
ỉ
ẽ i A* không
ả
i
ậ
ộ ộ ộ Đ n đây, ch c b n đ c đã có th b t đ u c m nh n đ
ậ ượ ằ
hoàn toàn là m t thu t gi
i u tuy t đ i. Nói đúng h n, A* ch là m t thu t gi
i t
ệ ố
ơ
linh đ ng và cho chúng ta khá nhi u tùy ch n. Tùy theo bài toán mà ta s có m t b
ọ
thông s thích h p cho A* đ thu t gi
ạ ộ i ho t đ ng hi u qu nh t.
ệ ề
ậ ể ả ấ ả ố ợ 37 ị h’ – s c l
ự ướ ượ ề Đi m quan tâm th hai là v giá tr
ứ
tr ng thái đ n tr ng thái đích. N u
ạ ừ ộ
m t
ả
ế h’ chính là h (đánh giá tuy t đ i chính xác) thì A* ng kho ng cách (chi phí) t
ệ ố ể
ạ ế TTNT ầ ừ ạ ệ
tr ng thái đ u đ n tr ng thái k t thúc mà không c n ph i th c hi n ế ế ạ ả ự
ầ
, h u nh ch ng bao gi
ư ẳ ổ ướ ta
ờ
h’ đây là ng nào!. Dĩ nhiên, trên th c t
ự ế ầ
ề ấ c ế ầ ị ở
ị ẽ
i gi s đi m t m ch t
ạ
ộ
ẽ
b t kỳ m t thao tác đ i h
ộ
ấ
tìm th y m t đánh giá tuy t đ i chính xác. Tuy nhiên, đi u đáng quan tâm
ộ
đ
c l
ượ ướ ượ
nh ng nhánh c t h n. Hay nói ng n g n là càng nhanh chóng tìm th y l
ữ ớ h, quá trình tìm ki m càng ít b sai sót, ít b r vào
i h n.
ả ơ ệ ố
ng càng g n v i
ụ ơ ấ ờ ắ ọ ở ề ẽ ậ ề ị g. Nghĩa là thu t gi ả ẽ ọ c đi u khi n hoàn toàn b i giá tr
ng mà s t n ít chi phí/b ằ
ể
ẽ ố ấ ầ i AT) thì quá trình tìm ki m s
ế
ữ
i s ch n đi theo nh ng
tr ng thái đ u tiên đ n tr ng
ạ
i hay ng đó có kh năng d n đ n l ế
i gi ừ ạ
ả ế ờ ệ ẫ ả m i tr ng thái (tr v thu t gi
N u ế h’ luôn b ng 0
ở ọ ạ
ả
đ
ở
ậ
ượ
c đi nh t (chi phí tính t
h
ướ
ướ
thái hi n đang xét) b t ch p vi c đi theo h
ệ
ướ
ấ
không. Đây chính là hình nh c a nguyên lý tham lam (Greedy).
ủ ấ
ả ằ ố ả ề ộ ấ
t i tìm ki m theo chi u r ng! Lý do là vì t
ị g và vì thế ạ
i A* tr thành thu t gi
ả
ậ
ở ầ
ỏ ơ ấ ả ế
c đ u có cùng giá tr
ướ ề
ạ ẽ ạ t c các tr ng thái cách tr ng thái kh i đ u
ở ầ
ề
ế g luôn b ng 0 và h’ cũng luôn b ng 0, m i tr ng thái đang xét đ u
ằ tr ng thái sang tr ng thái khác luôn là h ng s (dĩ nhiên lúc này h’ luôn
N u chi phí t
ừ ạ
ế
b ng 0) thì thu t gi
ở
ậ
ằ
c nh ng tr ng thái cách tr ng thái kh i đ u n b
ạ
ạ
ả ữ
f’ và giá tr này s nh h n t
đ u có cùng
ị
ề
n+1 b
ướ
ằ
ng đ
t
ươ ng nhau. Ta ch có th ch n b ng tr ng thái k ti p b ng ng u nhiên !
ạ c. Và n u
ươ ọ ạ
ằ ể ọ ế ế ằ ẫ ỉ ằ ể ử ủ i là có. N u nh b ng m t cách nào đó, ta có th ch c ch n r ng, ng
ườ ệ ố
ề
ư ằ
ố ớ
ở ể ắ
ả
ẫ ng tìm
i và quá i A* s th
ậ
ng d n đó t n t
ế ườ
ng quá d . Còn n u vì m t lý do
ế
ở ể
ữ ế
h’ luôn nh h n
i u (xác đ nh b i g) đ đi đ n đích, n u đ
ng t
ố ư
ị
ế
ẽ
ng h’ l
c l
ướ ượ ầ
ơ ậ ng đi ế
ắ ằ
ẽ ườ
ồ ạ
ộ
ữ
ng vào nh ng
nh ng h
ướ ế Còn n u nh
ư h’ không th tuy t đ i chính xác (nghĩa là không b ng đúng h) và cũng
ế
không luôn b ng 0 thì sao? Có đi u gì thú v v cách x lý c a quá trình tìm ki m hay
ằ
ị ề
không? Câu tr l
ộ
ả ờ
ỏ ơ h (đ i v i m i tr ng thái) thì thu t gi
c l
ọ ạ
ướ ượ
ra con đ
ế
trình tìm ki m s ít khi b sa l y vào nh ng con đ
ị
i l n h n h thì thu t gi
nào đó,
ạ ớ
h
ậ
ướ
vô ích tr c! Đi u này có th th y m t cách d dàng t ườ
i s d dàng b v
ả ẽ ễ
ướ
ừ ng tìm ki m vô ích. Th m chí nó l
ạ
ộ ị ướ
ng tìm ki m
ế ở ữ
vài ví d .
ụ i có khuynh h
ễ ể ấ ướ ề 38 s r ng t c trình bày trong hình sau. Gi ườ ả ử ằ ợ ượ ượ ị G là tr ng thái đích. Kh i đ u, t c các cung đ u có giá
ề
c m r ng nên B,
ở ộ ấ ả
ở ầ OPEN ch ch a A, sau đó A đ
ỉ ứ c sau đó, khi B và E đã ẽ ả ạ ố ớ ướ
ị h’, con s k ti p là h’+g = 3 + 1 , vì th nó đ ở ộ
ụ g.
ở ộ
c m r ng ố ế ế
ượ ế ấ c tiên. Gi s nó ch có m t nút con ti p theo là E và h’(E) = 3, do E các A hai cung ướ ả ử ế ỉ ế ế ọ s nó
ả ử tr ng thái 2 b
c m r ng). Đ i v i m i nút, con s đ u tiên là giá tr
ấ
ộ
ố
ế ế ở ộ
ằ ộ ỉ ấ
ố ư ơ ấ ằ ạ ế ế ạ ể
ẽ ở ộ
ấ ư ng d n khác. ng h p đ
Xét tr
tr 1.
ạ
c đ a vào OPEN (hình v mô t
C, D s đ
ẽ ượ ư
đ
ố ầ
ỗ
ượ
Trong ví d này, nút B có f’ th p nh t là 4 =
tr
nên g(E) = 2 suy ra f’(E) = 5, gi ng nh f’(C). Ta ch n m r ng E k ti p. Gi
ư
cũng ch có duy nh t m t con k ti p là F và h’(F) cũng b ng 3. Rõ ràng là chúng ta
đang di chuy n xu ng và không phát tri n r ng. Nh ng f’(F) = 6 l n h n f’(D). Do đó,
ể ộ
ớ
chúng ta s m r ng C ti p theo và đ t đ n tr ng thái đích. Nh v y, ta th y r ng do
ư ậ
c (E,F), nh ng cu i cùng ta cùng phát
đánh giá th p h(B) nên ta đã lãng phí m t s b
ố
ộ ố ướ
hi n ra B khác xa v i đi u ta mong đ i và quay l
i đ th m t đ
ạ ể ử ộ ườ
ề ệ ẫ ớ ợ TTNT Hình : h’ đánh giá th p hấ ng h p hình ti p theo. Chúng ta cũng m r ng B ờ ợ ở ẫ ế ế ế
ườ hãy xét tr
b
ở ướ
ư ườ
D đ n m t l
ộ ờ
ẫ ế
c th hai. K ti p là F và cu i cùng G, cho đ
ố
ng d n tr c ti p t
ự ế ừ
c đ
ượ ườ i gi ở ẽ
h n - mà không bao gi ng đi khác – đ n m t l i gi i t ả ệ ơ ở ộ ẽ i gi i (n u nh có nhi u đ
ư ẫ ố ư ế ờ ề ườ ả ẫ ả Li u có m t nguyên t c chung nào giúp chúng ta đ a ra m t cách ể
i). M t
ộ ể
i gi
ế ờ
ộ ị ". Câu tr l ư ố ớ ầ ả ờ
ế ề ự ề
đánh giá cao Bây gi
ở ướ ầ
c đ u
b
ườ
ở ộ
tiên và E
ộ
ng d n k t thúc có đ
ứ
ế
ẫ
dài là 4. Nh ng gi
s có đ
h th cự
i có đ dài
i gi
ả ử
ộ
ả
s ự là 2 thì chúng ta s ẽ không bao giờ tìm đ
ng d n này (tuy r ng ta có th tìm
ể
ằ
th y l
ở ế
i). B i vì vi c đánh giá quá cao h’(D), chúng ta s làm cho D trông d đ n
ệ
ả
ấ ờ
n i mà ta ph i tìm m t đ
ờ
ộ ờ
ế
ộ ườ
ả
ỗ
ế h’ đánh giá cao h thì A* s có th không th
nghĩ đ n vi c m r ng D. Nói chung, n u
ệ
ế
tìm ra đ
ng d n t
ế
ườ
câu h i thú v là "
ắ
ỏ
ng h’ không bao gi
c l
ướ ượ
không", b i vì đ i v i h u h t các v n đ th c ta đ u không bi
ở
duy nh t đ b o đ m
ấ ể ả i u đ n l
ộ
ệ
đánh giá cao h hay không?
ờ
ấ
ế
ả h’ không bao gi ng d n đ n l
ư
i là "h u nh
ầ
t h. Tuy nhiên, cách
ằ h là đ t ặ h’ b ng 0 ! ờ Hình : h’ đánh giá cao h 39 i linh ế ậ ả ậ Đ n đây chúng ta đã k t thúc vi c bàn lu n v thu t gi
ậ
ế
đ ng, t ng quát, trong đó hàm ch a c tìm ki m chi u sâu, tìm ki m chi u r ng và
ộ i A*, m t thu t gi
ộ
ế ệ
ứ ả ả
ề ộ ề
ế ề ổ TTNT i ta th ng nói, A* chính là ế ườ ườ i tiêu bi u cho Heuristic. nh ng nguyên lý Heuristic khác. Chính vì th mà ng
ữ
thu t gi
ậ ể ả ố ặ ấ ế ể ư ế ượ ộ
ề ộ
ề ộ ố ẫ
ố
ắ ạ
ữ ữ
ớ ớ ỏ ế
ế
ế ớ ườ ế ậ ộ ổ ồ
ư ẳ
ữ
ế ậ ướ ẽ ng đi trên m t ma tr n kích th
ề
ứ
ế ấ
ầ ề
ả ắ ủ ọ ị A* r t linh đ ng nh ng v n g p m t khuy t đi m c b n – gi ng nh chi n l
c tìm
ơ ả
ư
ki m chi u r ng – đó là t n khá nhi u b nh đ l u l
i nh ng tr ng thái đã đi qua –
ộ
ớ ể ư ạ
i u. V i nh ng không gian tìm
n u chúng ta mu n nó ch c ch n tìm th y l
i t
i gi
ắ
ả ố ư
ấ ờ
ữ
ki m l n nh thì đây không ph i là m t đi m đáng quan tâm. Tuy nhiên, v i nh ng
ả
ộ
ể
(ch ng h n tìm đ
ướ
c
không gian tìm ki m kh ng l
ạ
6 x 106) thì không gian l u tr là c m t v n đ hóc búa. Các nhà nghiên c u đã
c 10ỡ
ả ộ ấ
ng ti p c n lai đ gi
đ a ra khá nhi u các h
i quy t v n đ này. Chúng ta s tìm
ư
ể ả
ề
ng án nh ng quan tr ng nh t, ta c n ph i n m rõ v trí c a A* so
hi u m t s ph
ấ
ư
ộ ố ươ
ể
i khác.
v i nh ng thu t gi
ả
ậ
ữ
ớ i bài toán Ta-canh III.10. ng d ng A* đ gi
ụ ể ả Ứ ừ ổ ế ườ ơ ơ
ộ ứơ ộ ố ừ ế ố ộ 1 đ n 8. M t ô còn tr ng. M i l n di chuy n ch đ
ấ ỗ
ộ ầ ố t t Bài toán Ta-canh đã t ng là m t trò ch i khá ph bi n, đôi lúc ng
ộ
bài toán 9-puzzle. Trò ch i bao g m m t hình vuông kích th
ồ
m i ô có m t s t
ỗ ầ
m t ô n m c nh ô tr ng v phía ô tr ng. V n đ là t
ề
ề
ạ
ằ
làm sao đ a đ
t
8 theo th t ố
c v tr ng thái cu i là tr ng thái mà các ô đ
trái sang ph i, t c s p l n l
i, ô cu i dùng là ô tr ng. ố
trên xu ng d i ta còn g i đây là
ọ
ố
c 3x3 ô. Có 8 ô có s ,
ể
c di chuy n
ể
ỉ ượ
m t tr ng thái ban đ u b t kỳ,
ấ
ừ ộ ạ
ế
1 đ n
ượ ắ ầ ượ ừ
ố ư ượ ề ạ
ứ ự ừ ả ừ ạ
ố ướ ố i pháp vét c n và tìm ki m Heuristic, ng ạ ả ế ườ i bài toán này. Tuy nhiên, cách gi c m t thu t toán chính xác, t
ậ i ta v n ch a
ư
ẫ
ả
i
ả ả ơ i (nh ng không ph i lúc
ố i gi
ể ư
ỉ ạ ừ
ậ
* l
i A
ạ
c l
ượ ờ
ấ i u đ gi
ố ư ể ả
i khá đ n gi n và th
ườ
i gi
ằ
ề c l
ng tìm đ
ượ ờ
ạ
ờ
ỗ
ẽ ọ ự i đa 4 ô có
ẳ ả
ậ
ờ ể ể ể 2 con s ). ố ạ
i th i đi m đó, ta s ch n l a di chuy n ô nào? Ch ng h n
ấ
2! v i nớ
i b ng A* (t ng s tr ng thái có th có c a bàn c là n ủ ờ Cho đ n nay, ngo i tr 2 gi
ế
tìm đ
ộ
ượ
theo thu t gi
ả
i). Nh n xét r ng: T i m i th i đi m ta ch có t
nào cũng tìm đ
ả
th di chuy n. V n đ là t
ạ
ở
ể
thích h p đ có th gi
ể ả ằ
ể
ổ
ợ
c bàn c vì m i tr ng thái là m t hoán v c a t p n
là kích th
ờ
ướ ể
hình trên, ta nên di chuy n (1), (2), (6), hay (7) ? Bài toán này hoàn toàn có c u trúc
ố ạ
ộ ể
ị ủ ậ ỗ ạ ô (i,j) ặ s ô ố c n di chuy n đ đ a con s
ể ể ư ố ở ầ tr ng thái đích. T i m t tr ng thái đang xét Tk, đ t d(i,j)là
ộ ạ
ạ
v đúng v trí c a nó
ị
ề ở ạ ủ i tr ng thái Tk b t kỳ b ng t ng c a các d(i,j) sao cho v trí (i,j) ạ ạ ủ ằ ấ ổ ị Hàm
c l
ướ ượ
không ph i là ô tr ng.
ả ng h’ t
ố Nh v y đ i v i tr ng thái hình ban đ u, hàm f(Tk) s có giá tr là ố ớ ạ ư ậ ở ẽ ầ ị 40 Fk=2+1+3+1+0+1+2+2=12 TTNT III.11. Các chi n l c tìm ki m lai ế ượ ế ế ề ộ ề
ể ượ ể ố t qua 4 ki u tìm ki m : leo đèo (LĐ), tìm theo chi u sâu (MC), tìm theo
c xem nh 4 thái
ế
ư
i thích
c tìm ki m khác nhau. Đ gi
ể ả
ả
i
i gi
c tìm ki m l
ờ ế ượ
ế ế
ế ượ ể
ế
ụ
ơ ẽ ệ ế ộ Chúng ta đã bi
ế
chi u r ng (BR) và tìm ki m BFS. B n ki u tìm ki m này có th đ
c c c a không gian liên t c bao g m các chi n l
ồ
ự ủ
đi u này rõ h n, s ti n h n cho chúng ta n u nhìn m t chi n l
ề
d
ướ ơ
i hai chi u sau :
ề (R): là kh năng cho phép quay l ề ả Chi u kh năng quay lui
ả
tr ng thái xét đ n tr c đó n u g p m t tr ng thái không th đi ti p. ướ ế ạ ộ ạ ế ặ i đ xem xét nh ng
ữ
ạ ể
ể ế ủ ự ạ ế
(S): s các tr ng thái xét đ n trong m i quy t ế ạ ố ỗ Chi u ph m vi c a s đánh giá
ề
đ nh.
ị Hình : T c leo đèo, quay lui và t ươ ng quan gi a các chi n l
ữ ế ượ ố t nh t
ấ m t thái c c (nó không cho phép quay l ự ằ ở ộ ướ
ạ ướ ế ộ
i) và BFS n m ạ
i
m t thái
ở ộ
ng S chúng ta
ướ
ạ
ằ ở ộ ạ ậ ng R, chúng ta th y leo đèo n m
ấ
c xét đ n), trong khi đó tìm ki m quay lui và BFS
ế
ư ượ
ế
i t
t c các h
ng đi ch a xét đ n). Theo h
ư
ạ ấ ả
c n m
ỉ ậ
ượ ằ ở ộ
ự
tr ng thái hi n t
ệ ạ
ớ ạ
ườ t c nh ng con đ c xét t i tr ẹ
m t thái c c (ch t p trung vào m t ph m vi h p
ự
m t thái c c
ừ ạ
ng đã có, bao g m c nh ng con
ả ữ
ồ
ộ ậ
ớ ướ
c
ng không đ
ượ ư ấ ả ữ ườ Theo h
nh ng tr ng thái ch a đ
ữ
c c khác (cho phép quay l
ự
th y leo đèo và l n ng
ầ
ấ
trên t p các tr ng thái m i t o ra t
khác (trong khi BF xem xét toàn b t p các con đ
đ
ườ
đây tr ớ ượ ạ
c m i m t quy t đ nh). c t o ra cũng nh t
ế ị
ộ ng m i đ
ỗ ướ c tr c quan hóa b ng hình ự ượ ở ẳ ữ
ặ ằ
ế ễ
ủ ụ trên. Vùng in đ m bi u di n m t
ộ
ậ
c tìm ki m mà nó k t h p m t s đ c đi m c a m t
ộ
ế ợ
c m t hòa h p các đ c tính tính
ộ ộ ố ặ
ợ ể
ể
ặ ượ ể Nh ng thái c c này đ
ự
m t ph ng liên t c các chi n l
ế ượ
trong ba thái c c (leo đèo, chi u sâu, BFS) đ có đ
ề
ự
toán c a chúng. ủ 41 ủ ộ ế ể ụ ậ ầ ế
ể ế ợ ớ ng các tr ng thái có th xét đ n t ớ ầ
ề
ạ ế ạ c ch ra trong hình d t đ áp d ng thu t toán BFS thu n túy. Ta có
N u chúng ta không đ b nh c n thi
th k t h p BFS v i tìm theo chi u sâu đ gi m b t yêu c u b nh . Dĩ nhiên, cái giá
ớ
ộ
ầ
ể ả
ớ
mà ta ph i tr là s l
ộ
c s nh đi. M t
i m t b
ỏ
ể
ố ượ
ả ả
i BFS
i. Trong hình này, thu t gi
lo i k t h p nh th đ
ả
ướ
ư ế ượ ộ ướ ẽ
ậ ạ ế ợ ỉ TTNT 0 m t cách bình th
ộ
ườ
ượ ư
ế
ẽ
ế
t nh t Tmax trong OPEN cho t ậ ằ ế
ể ể
ễ ủ ồ ị
c áp d ng t
ụ ầ ạ
ẽ ạ
ầ
ng tr ng thái đ ớ ữ ụ ạ ộ ộ ụ ề ố ộ t th ả ạ
ạ ế
ọ ế ạ ứ ấ
ớ
c duy t h t. N u không tìm th y k t qu , tr ng thái
ượ
ấ
i ch n ra tr ng thái t
ố
ả
ậ
i áp d ng tìm ki m chi u sâu cho cho ph n không gian phía ế
ế
ề ụ ầ ạ i" tr ng thái này.... ế
i đ nh c a đ th tìm ki m (bi u di n b ng vùng tô t m) và tìm ki m
c áp d ng t
đ
ễ
ạ ỉ
ụ
ượ
i đáy (bi u di n b i tam giác tô nh t). Đ u tiên ta áp
theo chi u sâu đ
ượ
ở
ề
d ng BFS vào tr ng thái ban đ u T
ế
ng. BFS s thi hành cho đ n
ạ
ụ
c l u tr chi m d ng m t không gian b nh
m t lúc nào đó, s l
ố ượ
ộ
t quá m t m c cho phép nào đó. Đ n lúc này, ta s áp d ng tìm ki m chi u sâu
v
ế
ứ
ộ
ượ
xu t phát t
i khi toàn b không gian con
tr ng thái t
ừ ạ
ấ
phía "d
i" tr ng thái đó đ
ệ ế
ạ
ướ
c ghi nh n là không d n đ n k t qu và ta l
Tmax này đ
ẫ
ượ
hai trong OPEN và l
ế
"d
ạ ướ Hình : Chi n l c lai BFS-MC trong đó, BFS áp d ng t i đ nh và MC t i đáy. ế ượ ụ ạ ỉ ạ 42 ề ế ế ợ
c dùng t ạ ế ượ ế
ụ ạ ỉ
ề ng d i đáy. Chúng ta áp d ng tìm ki m chi u sâu cho t
ộ ạ ể ủ
ụ ướ ế ầ ạ i đ nh không gian tìm ki m và
ộ
i khi g p m t
ặ
ớ
0 nào
t quá m t ng
ưỡ
ộ
i, ta áp d ng ki u tìm ki m BFS cho ph n
ầ
ế
i pháp ho c không
i khi nó tr v m t gi
ặ
ả
ớ
i dùng BFS
i và l
c tr l
ở ạ
ế t quá m t h ng s cho tr c. Rõ ràng ta ta ộ
ộ ằ ướ ố
ượ ượ 0 (vì nói chung, ta khó đánh giá đ
ế ợ ứ ể ạ i. Ph n đáy không
ng ch a nhi u thông tin "b ích" h n là ph n đ nh. (Ch ng h n, tìm c không gian bài toán
i có m t thu n l
ầ
ậ ợ
ộ
ẳ
ỉ ườ ề ầ ạ ổ ế
ế ơ
ế ầ ủ
ế ủ ễ ề ệ ế
ạ ấ
ủ ề h’ th ng ế
ơ ễ ẫ ườ ế ế ở M t cách k t h p khác là dùng tìm ki m chi u sâu t
ộ
BFS đ
tr ng thái Tk mà đ sâu (s tr ng thái trung gian) c a nó v
ố ạ
ượ
ạ
c tr l
đó. T i đi m này, thay vì l n ng
ở ạ
ể
ượ
ầ
Tk cho t
i" b t đ u t
không gian phía "d
ả ề ộ
ắ ầ ừ
tìm th y. N u nó không tìm th y k t qu , chúng ta l n ng
ượ
ả
ấ
ấ
ế
0. Tham s dố 0 s đ
khi đ t đ sâu d
c ch n sao cho b nh dùng cho tìm ki m BFS
ọ
ẽ ượ
ớ
ạ ộ
trên không gian "d
i" m c d
ứ 0 s không v
ượ
ẽ
ướ
c d
không d gì xác đ nh đ
ị
ễ
r ng đ n m c nào). Tuy nhiên, ki u k t h p này l
ế
ộ
gian tìm ki m th
ứ
ồ
ng đi đ n khu trung tâm c a thành ph , khi càng đ n g n khu trung tâm – đáy đ
đ
ườ
ố
th – b n càng d dàng ti n đ n trung tâm h n vì có nhi u "d u hi u" c a trung tâm
ạ
ơ
ị
ế
xu t hi n xung quanh b n!). Nghĩa là, càng ti n v phía đáy c a không gian tìm ki m,
ấ
ệ
ả
ng càng tr nên chính xác h n và do đó, càng d d n ta đ n k t qu
c l
ướ ượ
h n. ơ TTNT Hình : Chi n l c lai BFS-MC trong đó, MC áp d ng t i đ nh và BFS t i đáy. ế ượ ụ ạ ỉ ạ 0 đ
ượ
ư ữ
ế ộ ự ượ ơ ữ ế ế ợ
ự ị ộ ể ể
ượ
ớ c th c hi n toàn c c. Ta b t đ u tìm ki m theo BFS cho t
ắ ầ
ụ
c dùng h t. T i đi m này, chúng ta xem t
ạ
ế ạ ể ạ
ề ề ạ ướ ữ ạ ụ ộ ế ọ ộ iạ
ng b nh M
ớ 0 l
c xem nh nút con
ư ế ớ i ti p t c bành tr ạ
ng"...N u vi c "bành tr
ướ
ệ
t th hai c a t p OPEN tr
ủ ậ ạ
i
ằ
ng b ng ướ
ố ướ ứ c th c hi n c c b và
ệ ụ ộ
Còn m t ki u k t h p ph c t p h n n a. Trong đó, BFS đ
ứ ạ
i khi m t s
ộ ự
chi u sâu đ
ớ
ề
ệ
t c nh ng
l
ấ ả ữ
ng b nh xác đ nh M
ượ
tr ng thái trong OPEN nh nh ng tr ng thái con tr c ti p c a tr ng thái ban đ u và
ự ế ủ
ầ
ạ
t
chuy n giao chúng cho tìm ki m chi u sâu. Tìm ki m chi u sâu s ch n tr ng thái t
ố
ế
ẽ ọ
ng" nó dùng BFS, nghĩa là nó chuy n
nh t trong nh ng tr ng thái con này và "bành tr
ể
ấ
tr ng thái đã ch n cho tìm ki m BFS c c b cho đ n khi m t l
ộ ượ
ế
ạ
c dùng h t và tr ng thái con m i trong OPEN l
đ
i ti p t c đ
ạ ế ụ ượ
ượ
ng" b ng BFS th t b i thì ta quay lui l
c a nút "bành tr
ấ ạ
ằ
ế
ủ
và ch n nút con t
c đó, r i l
ồ ạ ế ụ
ướ
ọ
BFS... Hình : Chi n l c lai BFS-MC trong đó, BFS đ c áp d ng c c b và chi u sâu đ ế ượ ụ ộ ụ ề ượ
c áp d ng toàn c c. ụ ượ
ụ 43 ộ ố ợ ạ ượ ế ệ ổ ế
ữ
ư c g i là tìm ki m theo giai đo n đ
ượ ọ
ớ ế ể ế ộ ư
l
ỉ ữ ạ
ấ ữ ng đi t Có m t cách ph i h p n i ti ng khác đ
hi n nh sau. Thay vì l u tr trong b nh toàn b cây tìm ki m đ
ộ
ng b nh M
ta ch gi
ấ
s đánh d u m t t p con các tr ng thái trong
ẽ
th p nh t) đ gi
ấ
ấ ộ
i cây con có tri n v ng nh t. Khi m t l
ộ ượ
ọ
ạ
ườ c th c
ự
c sinh ra b i BFS,
ượ
ở
c dùng h t, ta
ớ 0 đ
ượ
OPEN (nh ng tr ng thái có giá tr hàm f
ị
ạ
ẽ ượ
t nh t qua nh ng tr ng thái này cũng s đ
c
ạ
ấ ộ ậ
l
ể ữ ạ i; nh ng đ
ữ ữ ố TTNT 44 ấ ả ế ẽ ế
i c a cây b lo i b . Quá trình tìm ki m sau đó s ti p
ế
c dùng h t và c th . Chi n ị ạ ỏ
ớ 0 l ứ ế ế ớ
ể ượ t nh t còn tìm ki m theo giai i ph ạ ỏ ấ ả ư ế t c nh ng ch gi ố
ng án t ghi nh và t
ớ
t c theo BFS cho t
ụ
c này có th đ
l
ượ
thu n túy lo i b t
ầ
đo n lo i b t
ạ t c ph n còn l
ạ ủ
ầ
ng b nh M
i khi m t l
i đ
ộ
ạ ượ
ộ ượ
c xem nh là m t s lai ghép gi a BF và leo đèo. Trong đó, leo đèo
ộ ự
ữ
ư
t c nh ng ch gi
l
ỉ ữ ạ
ươ
ỉ ữ ạ t pậ các ph
i
l ạ ỏ ấ ả ư ấ
t nh t.
ấ ng án t
ươ ố TTNT ỗ ơ ậ ơ ẳ ạ ủ ộ ướ ọ c nh ng c máy thông minh nh con ng
ữ
ư
i t
c m cháy b ng c a loài ng
ườ ừ
ỏ
ữ ạ ệ ự
ạ ậ ợ ả ệ ạ
ữ
ả ứ i) là m t
ớ ế
ẽ
ệ
i cho trí tu nhân t o. Đi u này cho phép nh ng ch
ươ
ề
ạ c. S ki n máy tính Deep Blue đánh b i ki n t ờ ậ
ự ệ
ứ ả
ạ
ế ộ ướ ộ ồ
ể ư chỉ
ế
t ệ ượ ả ủ
ậ
ế ướ ữ ạ ữ ọ ỉ ệ ng t ế ớ Casparov là
ng c vua th gi
c ti n dài trong công cu c nghiên c u v trí
ứ ề
c Casparov nh ng Deep Blue là m t c máy
ơ ẳ
ượ
ườ
ng, ghét, ... Ngành trí tu nhân t o đã có nh ng b
ệ
ộ
ự ự ẫ
ứ ề
ẫ
ạ
c m ch t o vàng c a các nhà gi
ả ủ ậ ạ
ệ
ng c a Hollywood. V y thì t
ậ
nh
ươ
ự ư ướ
ư ứ ư ỏ i (th m chí thông minh h n con
Ch t o đ
ườ
ế ạ ượ
hàng ngàn năm nay. H n b n đ c
ng
ọ
ườ
còn nh đ n nhà khoa h c Alan Turing cùng nh ng đóng góp to l n c a ông trong lĩnh
ớ ủ
ế ứ
v c trí tu nhân t o. Năng l c máy tính ngày càng m nh m là m t đi u ki n h t s c
ề
ộ
ự
ng trình máy tính áp
thu n l
ệ
ả ơ
i trí tu nhân t o có kh năng ph n ng nhanh và hi u qu h n
d ng các thu t gi
ệ
ụ
tr
i
ướ
ệ ướ
m t minh ch ng hùng h n cho m t b
ộ
tu nhân t o. Tuycó th đánh b i đ
ộ ỗ
ạ
ệ
ạ ượ
c trí thông minh s đ ng c a m t đ a bé bi
t đánh c ! Nó th m chí không có đ
bi
ộ ứ
ậ
ờ
ế
t th gi
ế ớ
i,
i thân, kh năng quan sát nh n bi
lên ba nh nh n di n đ
c nh ng ng
ư ậ
ế
ữ
ể
tình c m th
c ti n đáng k ,
ươ
ả
nh ng m t trí tu nhân t o th c s v n ch có trong nh ng b phim khoa h c gi
ả
ộ
ư
ạ
i sao chúng ta v n nghiên c u v trí tu nhân t o?
t
ủ
ưở
Đi u này cũng t
ờ
kim thu t th i
ơ ế ạ
ề
Trung C , tuy ch a thành công nh ng chính quá trình nghiên c u đã làm sáng t
ề
nhi u
ổ
v n đ .
ề
ấ ượ ự
ng c a ngành TTNT là xây d ng m t chi c máy có năng l c
ự ặ
duy t ư
ớ ụ i th
ố
nh con ng
ự ư
ố
ấ
ộ ỗ ế ẻ ẫ ộ
ế
ẩ
t c các s n ph m
i c a t
ả
ệ ạ ủ ấ ả
ọ
ậ
ề
ra ngày càng h u d ng trong m t s
ộ ố
ữ ụ
i. Hình nh sau s giúp b n hình dung
ẽ ỏ
ườ ủ ệ ả ạ M c dù m c tiêu t
ủ
ụ
t
i nh ng kh năng hi n t
ng t
ươ
ả
ườ
ư
ớ
TTNT v n còn r t khiêm t n so v i m c tiêu đã đ ra. Tuy v y, ngành khoa h c m i
ẫ
m này v n đang ti n b m i ngày và đang t
công vi c đòi h i trí thông minh c a con ng
c tình hình c a ngành trí tu nhân t o.
đ
ượ ỏ
ủ ệ ạ c vào tìm hi u v trí tu nhân t o, chúng ta hãy nh c l i m t đ nh nghĩa ướ ề ắ ạ ể ạ ộ ị Tr
ướ
đ
ượ c khi b
ệ
c nhi u nhà khoa h c ch p nh n.
ề ấ ậ ọ 45 M c tiêu c a ngành khoa h c trí tu nhân t o ? ủ ụ ọ ệ ạ TTNT T o ra nh ng chi c máy tính có kh năng nh n th c, suy lu n và ph n ng. ả ứ ứ ữ ế ậ ả ạ ậ c hi u là kh năng quan sát, h c h i, hi u bi ậ ả ế ể ứ ượ ệ ứ ậ ề ế ớ
ả ữ ữ ọ ỏ
ứ
ậ
ể
ộ ố ả ứ
ậ ữ
ặ ề ả ậ ả ứ ư ợ i. (Dĩ nhiên còn m t y u t ộ ế ố ữ ể
ả ẽ ề ế ạ ộ ả ả ả ầ ị ả
c b n là tri th c. t cũng nh nh ng kinh
Nh n th c đ
ư ữ
ể
i xung quanh. Quá trình nh n th c giúp con ng
nghi m v th gi
i có tri th c. Suy
ườ
ố
lu n là kh năng v n d ng nh ng tri th c s n có đ ph n ng v i nh ng tình hu ng
ớ
ứ ẵ
ậ ụ
ể ừ
hay nh ng v n đ - bài toán g p ph i trong cu c s ng. Nh n th c và suy lu n đ t
ấ
ứ
đó đ a ra nh ng ph n ng thích h p là ba hành vi có th nói là đ c tr ng cho trí tu
ệ
ữ
ặ
ư
n a là tình c m. Nh ng chúng ta s không đ
c a con ng
ư
ườ
ủ
đây!). Do đó, cũng không có gì ng c nhiên khi mu n t o ra m t chi c máy
c p đ n
ố ạ
ế ở
ậ
tính thông minh, ta c n ph i trang b cho nó nh ng kh năng này. C ba kh năng này
ữ
đ u c n đ n m t y u t
ế
ề ầ ộ ế ố ơ ả ứ 46 ướ ễ i quy t v n đ và ạ
ề bi u di n tri
ể
ứ
tìm cách b sung tri th c
ổ D i góc nhìn c a t p sách này, xây d ng trí tu nhân t o là tìm cách
ự
th cứ , tìm cách v n d ng tri th c
ứ đ gi
ể ả
các thông tin s n có
b ng cách "phát hi n" tri th c t
ằ ủ ậ
ậ ụ
ệ ệ
ế ấ
ẵ (máy h c)ọ . ứ ừ TTNT ộ ấ ừ ượ ố ắ ư ở ệ
ứ
ứ ệ ệ ằ ớ ng. Do đó, chúng ta s không c g ng đ a ra
Tri th c là m t khái ni m r t tr u t
ứ
ẽ
m t đ nh nghĩa hình th c chính xác
ả
đây. Thay vào đó, chúng ta hãy cùng nhau c m
ộ ị
nh n khái ni m "tri th c" b ng cách so sánh nó v i hai khái ni m khác là thông tin và
ậ
d li u.
ữ ệ ừ ằ ậ i đang "Chúng ta đang ng p chìm trong
ệ ề
t v
ổ ậ ự ạ ng l n v ch t gi a hai khái ni m thông tin và tri th c. Nhà bác h c n i ti ng Karan Sing đã t ng nói r ng
bi n thông tin
ể
l
ẫ
ượ ọ ổ ế
nh ng l
ư
ữ khát tri th cứ ". Câu nói này làm n i b t s khác bi
ứ ề ấ ệ ọ ủ ườ ằ ữ ệ là các ả ệ
ậ ể ế ố ớ ườ ng không có ý nghĩa đ i v i con ng
i có th c m nh n đ ữ ả
ữ
ườ
ườ ậ ượ ự ế ộ ứ ị ng ti n k thu t nh tivi, radio, cassette,... Thông tin đ i v i con ặ
ố ớ ư ệ ươ ớ
c ụ ể
ng ti n máy tính (mà c th là
ố ớ
ầ d li u có ý nghĩa đ i v i ệ
ữ ệ Trong ng c nh c a ngành khoa h c máy tính, ng
d li u
i ta quan ni m r ng
con s , ch cái, hình nh, âm thanh... mà máy tính có th ti p nh n và x lý. B n thân
ố
ử
ả
d li u th
t c nh ng gì
i. Còn thông tin là t
ữ ệ
ấ ả ữ
mà con ng
ủ
c m t cách tr c ti p thông qua các giác quan c a
ể ả
mình (kh u giác, v giác, thính giác, xúc giác, th giác và giác quan th 6) ho c gián ti p
ế
ứ
ị
thông qua các ph
ươ
ng
ườ
ộ
t b đ u ra), con ng
các thi
mình. N u so v l
ề ượ
ế ỹ
ậ
i luôn có m t ý nghĩa nh t đ nh nào đó. V i ph
ấ ị
ượ m t ph n
i s ti p thu đ
ườ ẽ ế
ộ
ế ị ầ
ng, d li u th
ề
ườ
ữ ệ ng nhi u h n thông tin.
ơ ữ ệ ệ
ho c đ c t p h p l ứ ự ặ ượ ậ ộ ữ ệ ượ ắ
c s p
ệ ữ
ẽ ứ ự
i theo m t quan h nào đó s ch a đ ng
ệ
ợ ạ
ứ
c ch ra m t cách rõ ràng thì đó là các tri th c.
ỉ ượ ệ ộ Cũng có th quan ni m thông tin là quan h gi a các d li u. Các d li u đ
ể
x p theo m t th t
ộ
ế
thông tin. N u nh ng quan h này đ
ữ
ế
Ch ng h n : ạ ẳ Trong toán h c : ọ ố i v i nhau theo tr t t nh 1, 1, 3, 5, 2, 7, 11, ... là các d li u. Tuy nhiên, khi
ẻ ư
nh d
ậ ự ư ướ ữ ệ
ố
i đây thì gi a chúng đã b t đ u có m t m i ắ ầ ữ ộ B n thân t ng con s riêng l
ừ
ả
đ t chúng l
ạ ớ
ặ
liên h ệ D li u : 1, 1, 2, 3, 5, 8, 13, 21, 34, .... ữ ệ -1 + Un-2. M i liên h này có th đ c bi u di n b ng công th c sau : Un = Un ể ượ ệ ố ứ ể ễ ằ Công th c nêu trên chính là tri th c. ứ ứ Trong v t lý : ậ 47 t s đo v đi n tr (R), đi n th (U) và c ề ệ ế ệ ở ườ ng đ dòng
ộ B n sau đây cho chúng ta bi
ế ố
đi n (I) trong m t m ch đi n.
ệ ả
ệ ạ ộ TTNT ữ ộ ủ ả ế ố ấ
ộ ự ặ ế ư ệ c di n t B n thân nh ng con s trong các c t c a b n trên không có m y ý nghĩa n u ta tách
ả
r i chúng ta. Nh ng khi đ t k nhau, chúng đã cho th y có m t s liên h nào đó. Và
ờ
m i liên h này có th đ
ố ấ
b ng công th c đ n gi n sau :
ứ ơ ễ ả ằ ể ượ ệ ả Công th c này là tri th c. ứ ứ Trong cu c s ng hàng ngày : ộ ố ằ ệ ượ ườ ng n ng, m a, râm và
ư H ng ngày, ng
chu n chu n bay. R t nhi u l n quan sát, h đã có nh n xét nh sau : i nông dân v n quan sát th y các hi n t
ậ ẫ
ề ầ ắ
ư ấ
ọ ấ ồ ồ Chu n chu n bay th p thì m a, bay cao thì n ng, bay v a thì râm. ư ừ ấ ắ ồ ồ Có quan điểm trên cho rằng chỉ những mối liên hệ tường minh (có thể chứng minh được)
giữa các dữ liệu mới được xem là tri thức. Còn những mối quan hệ không tường minh thì
không được công nhận. Ở đây, ta cũng có thể quan niệm rằng, mọi mối liên hệ giữa các
dữ liệu đều có thể được xem là tri thức, bởi vì, những mối liên hệ này thực sự tồn tại. Điểm
khác biệt là chúng ta chưa phát hiện ra nó mà thôi. Rõ ràng rằng "dù sao thì trái đất cũng
vẫn xoay quanh mặt trời" dù tri thức này có được Galilê phát hiện ra hay không! L i nh n xét trên là tri th c. ứ ậ ờ 48 ng ư ậ ố ượ ớ ữ ệ ả ỉ ơ ộ ấ
ữ ệ ữ ơ ấ
ng mà là
ườ
ặ
ể
t c nh ng đi m này l ít h n r t nhi u. Thu t ng
đâyở
ữ ít
ậ
ề
ho c ặ cô đ ngọ
s k t tinh
ự ế
ứ
ẳ
ỉ ầ m t ộ ph ố ấ ả ữ c a đ
ủ ườ c ạ
ng trình
ườ ể
ể ngươ
ạ
ễ ượ vô s ố đi m!. Cũng v y, chúng ta c n có
ầ
ẽ
hàng đ ng s li u th ng kê, n u không, chúng ta s ng cong ta có th bi u di n đ
ậ ừ ệ ố ố Nh v y, so v i d li u thì tri th c có s l
ứ
không ch đ n gi n là m t d u nh h n bình th
ỏ ơ
l
iạ . B n hãy hình dung d li u nh là nh ng đi m trên m t ph ng còn tri th c chính là
ư
ng cong n i t
ph
ươ
trình đ
ể ể
nh ng kinh nghi m, nh n xét t
ữ
ng p chìm
ậ trong bi n ể thông tin nh nhà bác h c Karan Sing đã c nh báo!. i. Ch c n
ậ
ế
ả ố ệ
ọ ư TTNT Ng i ta th ng phân lo i tri th c ra làm các d ng nh sau : ườ ườ ứ ư ạ ạ 0, ...) ị là các kh ng đ nh v m t s ki n, khái ni m nào đó (trong m t
ộ ng đ ệ
c x p vào lo i này.
ượ ế ườ ạ Tri th c s ki n :
ề ộ ự ệ
ứ ự ệ
ẳ
ph m vi xác đ nh). Các đ nh lu t v t lý, toán h c, ... th
ạ
ậ ậ
ọ
ị
đ ng đông, tam giác đ u có 3 góc 60
(Ch ng h n : m t tr i m c
ề
ẳ ị
ọ ở ằ ặ ờ ạ ng dùng đ di n t ườ c c n ti n hành,
ế
ướ ầ
ộ
i là m t
i quy t m t v n đ . Thu t toán, thu t gi
ậ ng pháp, các b
ể ễ ả ươ
ậ
ề ph
ộ ấ ế ả ả Tri th c th t c :
ủ ụ th
ứ
hay ng n g n là cách gi
ọ
ắ
ừ
ủ ụ
ứ
ủ trình t
d ng c a tri th c th t c.
ạ : ả cho bi ấ ng, s ki n, v n đ , khái ni m, ... đ
ệ
ề
ng có 4 chân, con ng ượ
i có 2 tay, 2 c th y,
ấ t m t đ i t
ộ ố ượ
ộ ế
ư ế ấ ạ ự ệ
ườ ườ Tri th c mô t
ứ
c m nh n, c u t o nh th nào (m t cái bàn th
ậ
ả
m t,...)
ắ ứ ứ ạ ng có d ng là m t d ng tri th c c m tính. Các tri th c thu c lo i này
ng đ ộ
c hình thành thông qua kinh ứ ả
ng, ph ng đoán, và th ạ ướ ượ ộ ạ
ỏ ườ ượ Tri th c Heuristic :
th
c l
ườ
nghi m. ệ ộ ế ự ế ấ ệ ể ế ờ ệ ướ ờ ế ờ
ề ế ư ắ ả ộ
, r t hi m có m t trí tu mà không c n đ n tri th c (li u có th có m t
ầ
ứ
ệ
t các th c quan tr ng
t đánh c ho c không bi
ọ
ng c vua mà không bi
ế
ặ
ế
t nhi u đ nh lý toán
i bi
ế ị
ị
ườ
i h n!) nh ng nó là m t y u t
ộ ế ố ơ ả ấ
ộ c b n c u thành trí
ả i toán gi
ậ ự ạ c b n này. T đây đ t ra v n đ đ u tiên là … Các ph
ấ ỏ ơ
ố
ặ ươ Trên th c t
đ i ki n t
ạ
không?). Tuy tri th c không quy t đ nh s thông minh (ng
ự
ứ
h n ch a ch c đã gi
ư
ơ
thông minh. Chính vì v y, mu n xây d ng m t trí thông minh nhân t o, ta c n ph i có
ầ
y u t
ứ
ng pháp đ a tri th c
ề ầ
ư
ế ố ơ ả
c g i là bi u di n tri th c.
vào máy tính đ
ứ ừ
ượ ọ ể ễ , li u m t ch i câu h i trên, b n hãy th nghĩ xem ỏ ả
i ươ ử
ộ ể ượ ạ
c xem là m t ch
đâu? Tri th c v gi ậ ự ươ
ứ ề ả if..then..else trong ch ậ
c mã hóa d ươ ể ấ ả ề ề ươ
ượ ươ
ng ủ ể ệ
i sao đ a tri th c vào máy tính l
ạ
ứ ắ "nh v y t ư ậ ạ tr ch , các tri th c trong nh ng ch i là m t v n đ ?
ề
ộ ấ
Đúng nh thư ế
ố ng trình truy n th ng là
ề ư ế
ươ ữ c ộ ỉ ể ượ thêm vào hay đi u ch nh m t khi
. Mu n đi u ch nh thì chúng ta ph i ti n hành s a l ề ố ị ỉ ạ i). Mà thao tác s a ch
ẽ
ề ể ậ ị
ượ
i dùng bình th ng đ u không bi ng trình gi
c khi tr l
Tr
ộ
ệ
ướ
ả ờ
tri th c ứ hay không? ... Có
ng trình có
ng trình b c 2 có th đ
ph
ươ
ậ
ng trình b c hai th c ch t đã
i ph
ch ! V y thì tri th c n m
ươ
ấ
ứ ằ ở
ứ
ổ
ng trình. M t cách t ng
i d ng các câu l nh
đ
ộ
ướ ạ
ệ
ượ
ng trình máy tính ít nhi u đ u đã có tri th c.
ứ
quát, có th kh ng đ nh là t
t c các ch
ị
ẳ
c chuy n thành các câu l nh c a ch
Đó chính là tri th c c a l p trình viên đ
ứ ủ ậ
trình. B n s th c m c
ư
ạ ẽ ắ
chúng ta đã, đang và s ti p t c làm nh th mà?)".
i gi
c t
(vì t
ẽ ế ụ
ờ
ừ ướ ớ
th t, nh ng v n đ n m
ề ằ ở ỗ
ứ
ậ
ấ
ư
nh ng tri th c "c ng", nghĩa là nó không th đ
ứ
ữ
ứ
c biên d ch
ng trình đã đ
ch
ượ
ươ
ng trình (r i sau đó biên d ch l
mã ngu n c a ch
ồ
ươ
ồ ủ
ch có nh ng l p trình viên m i có th làm đ
ớ
ữ
ỉ
ng trình (vì đa s ng
d ng ch
ố ườ
ươ
ụ ề
ử ạ
i
ả ế
ng trình thì
ươ
ử
c. Đi u này s làm gi m kh năng ng
ứ
ả
ườ ả
t l p trình).
ế ậ ề 49 ng trình h tr ra quy t đ nh (nh đ u t ư ầ ư ổ ỗ ợ ớ ộ c phi u,
ế
i dùng có c m th y tho i mái không khi B n th nghĩ xem, v i m t ch
ử
ươ
ạ
b t đ ng s n ch ng h n), li u ng
đ u t
ạ
ẳ
ầ ư ấ ộ ế ị
ả ườ ệ ả ấ ả TTNT ố ư ọ ứ ủ
(2) tìm tác gi c a ch ữ
ươ ả ủ ế
ng trình!?
ề ươ
i mã ch
s a l
ự ử ạ
i!?
ả
ườ ng trình nh ng ki n th c c a mình thì anh ta ph i ch n m t trong
ộ
ả
ng trình đ nh
ờ
ể
ươ
c đ i v i b t
ậ ượ ố ớ ấ
ử ạ . C hai thao tác trên đ u không th ch p nh n đ
ọ ể ư ọ ầ ể i dùng bình th
ộ ạ ớ ư ọ ộ
ệ ễ ậ ố ố mu n đ a vào ch
hai cách là (1) t
i này s a l
ng
ể ấ
ườ
ng nào. H c n có m t cách nào đó đ chính h có th đ a tri
kỳ ng
ườ
ộ
th c vào máy tính m t cách d dàng, thu n ti n gi ng nh h đang đ i tho i v i m t
ứ
con ng i. ườ ề ể ề ượ ể ọ ễ
c bi u di n
ầ ứ ượ
ồ ề ầ ứ ữ ệ ươ
i dùng). Do đó, ươ
c ví nh là ph n c ng c a ch
ườ c đi u này, chúng ta c n ph i "m m" hóa các tri th c đ
ả
ng trình máy tính đ u g m hai thành ph n là
ng trình còn d
ủ
c thay đ i b i ng
ể bi uể ng pháp đ có th
ể ứ ủ ạ Đ làm đ
ầ
trong máy tính. Xét cho cùng, m i ch
các mã l nh và d li u. Mã l nh đ
ữ ệ
ượ
ư
ệ
c xem là ph n m m (vì nó có th đ
li u đ
ầ
ể ượ
ề
ệ ượ
"m m" hóa tri th c cũng đ ng nghĩa v i vi c tìm các ph
ệ
ồ
ứ
ề
ớ
các c u trúc d li u
ườ b ng ằ
i
di n các lo i tri th c c a con ng
ễ
c. Đây cũng chính là ý nghĩa c a thu t ng "bi u di n tri th c".
lý đ
ể
ậ
ủ ổ ở
ươ
ữ ệ mà máy tính có th xể ử
ễ ấ
ữ ượ ứ ế ả ạ B n c n ph i bi
ng ờ
i v n ch a th tìm ra m t ki u bi u di n t ng quát cho m i lo i tri th c! t r ng, ít ra là cho đ n th i đi m b n đang đ c cu n sách này, con
ế ằ
ể ạ ầ
ườ ẫ ể
ễ ổ ọ
ọ ố
ạ ư ứ ể ể ộ h n. Chúng ta hãy xem xét ề ấ ậ ở ỏ ơ Đ làm v n đ mà chúng ta đang bàn lu n tr nên sáng t
m t s bài toán trong ph n ti p theo. ể
ộ ố ế ầ t là VX và VY, hãy dùng ể ầ ượ c (z <= min(VX,VY)). Bài toán 1 : Cho hai bình r ng X và Y có th tích l n l
ỗ
hai bình này đ đong ra z lít n
ướ
ể Bài toán 2 : Cho bi t m t s y u t c a tam giác (nh chi u dài c nh và góc, ...).
ề ư ạ Hãy tính các y u t ế
còn l ộ ố ế ố ủ
i. ế ố ạ Bài toán 3 : Tính di n tích ph n giao c a các hình hình h c c b n. ọ ơ ả ủ ệ ầ ể ườ ọ ả ề ế ấ ng đ
ằ
ng, chúng ta th
ng h p c th c a các bài toán này. Th m chí, nhi u ng ườ ầ
ng pháp gi
ươ
ế ử ụ
ợ ụ ể ủ ườ
ậ ở ề
c gi
ả
ậ ượ
ỹ ề c dùng đ minh h a cho nét
ượ
ể
i quy t v n đ bài toán b ng cách chuy n giao tri th c cho
ứ
ể
ộ ố
ng ch gi
c m t s
i đ
ậ
ỉ ả ượ
ườ
ớ
i khi m i ti p c n v i 2
ớ ế ậ
ườ
i m t cách t ng quát b i máy
ổ
ộ
i quy t v n đ "vĩ mô",
ế ấ
ả
m c t ng quát cho máy tính mà không i quy t ắ
ế ở ứ ổ ể
ọ ẹ
c gi
ả ố
ỉ ầ ướ Hai bài toán đ u là hai bài toán khá tiêu bi u, th
đ p c a ph
ẹ ủ
máy tính. N u s d ng thu t toán thông th
tr
bài toán này còn không tin là nó có th hoàn toàn đ
tính!. Bài toán s 3 là m t minh h a đ p m t cho k thu t gi
ộ
nghĩa là ta ch c n mô t
các b
ả
c n đi vào cài đ t c th .
ặ ụ ể
ầ 50 ả ế ằ ậ ẫ ậ i quy t b ng công i quy t b ng cách s d ng các lu t d n xu t (lu t sinh). Bài
ế ằ ế ằ ạ i bài toán đ u tiên. Hai bài toán c gi
ấ
ử ụ
ẽ ượ
i quy t b ng m ng ng nghĩa và bài toán 3 s gi
c gi
ẽ ả
ữ
ả
ầ
ể ả i quy t l n l c gi t Bài toán 1 s đ
toán 2 s đ
ẽ ượ
c frame.
Ở
ụ
k ti p s đ
ế ế ẽ ượ đây chúng ta cùng nhau tìm hi u cách gi
các m c sau.
ụ
ế ầ ượ ở ả TTNT = 7 và z = 4. Sau m tộ
c đ i lo i nh :
ạ ng h p c th c a bài toán 1, nh VX = 5 và VY ộ ườ ợ ụ ể ủ ư V i m t tr
th i gian tính toán, b n có th s đ a ra m t quy trình đ n ể ẽ ư ớ
ờ ổ ướ ạ ư ạ ộ Múc đ y bình 7
ầ Trút h t qua bình 5 cho đ n khi 5 đ y. ế ế ầ Đ h t n c trong bình 5 ổ ế ướ Đ h t n c còn l bình 7 sang bình 5 ổ ế ướ i t
ạ ừ Múc đ y bình 7
ầ Trút h t qua bình 5 cho đ n khi bình 5 đ y. ế ế ầ Ph n còn l i chính là s n c c n đong. ầ ạ ố ướ ầ ể ả ố ệ
ữ
c. C th , m i m t tr ộ ớ
ứ ế
ế c cách gi ộ
ng h p b n đã bi
ạ ả ợ Tuy nhiên, v i nh ng s li u khác, b n ph i "mày mò" l
đ u đ tìm ra quy trình
i t
ạ
ạ ừ ầ
c hoàn toàn khác nhau.
đ n
ng h p s có m t cách đ n
ợ ẽ
ỗ
ổ ướ
ộ ườ
ổ ướ
ạ
Nh v y, n u có m t ai đó yêu c u b n đ a ra m t cách làm t ng quát thì chính b n
ổ
ư ậ
ạ ư
ầ
ộ
cũng s lúng túng (dĩ nhiên, ngo i tr tr
i theo tri
t tr
ạ ừ ườ
ế ướ
ẽ
đây!).
th c mà chúng ta s p s a tìm hi u
ể ở ắ ử ứ i gi i cho m t tr ạ ạ ứ ạ ả
ệ ể
ộ ộ ườ
ng
ạ ộ ầ ư
ư i cách th c b n tìm ki m l
ờ
ế
ắ ụ ể
ạ ẽ ự
ộ ộ ẩ ừ ộ
ổ ế ướ
c
ả
ế
ể
ế
c m t s kinh
ộ ố ấ ệ ể ạ ẽ
ư ầ ừ
ề ầ
ư "khi bình 7 đ y n
ầ ... V y thì t
ậ ầ ướ
ạ ạ ạ ữ ử ề ể ế ẳ ơ ợ ề
ữ
i, vì máy tính có kh năng "mày mò" h n h n chúng ta! N u nh ng
ượ ờ
i
c l ả
ấ ệ i, chúng ta s thay th nó b ng nh ng kinh nghi m khác và l i ti p t c đ máy tính ạ ế ụ ể ệ ế ả ằ Đ n đây, b n hãy bình tâm ki m l
ế
h p c th . Vì ch a tìm ra m t quy t c c th nào, b n s th c hi n m t lo t các thao
ợ ụ ể
tác "c m tính" nh đong đ y m t bình, trút m t bình này sang bình kia, đ h t n
ả
trong m t bình ra... v a làm v a nh m tính xem cách làm này có th đi đ n k t qu
hay không. Sau nhi u l n thí nghi m, r t có th b n s rút ra đ
ượ
ệ
nghi m nh
c mà bình 5 ch a đ y thì hãy đ nó sang bình 5 cho
ổ
ệ
đ n khi bình 5 đ y"
i không th "truy n" nh ng kinh nghi m
i sao b n l
ế
này cho máy tính và đ cho máy tính "mày mò" tìm các thao tác cho chúng ta? Đi u này
hoàn toàn có l
"kinh nghi m" mà chúng ta cung c p cho máy tính không giúp chúng ta tìm đ
gi
ữ
tìm ki m l i gi i! ẽ
ả ế ờ Chúng ta hãy phát bi u l i bài toán m t cách hình th c h n. ể ạ ứ ơ ộ Không làm m t tính t ng quát, ta luôn có th gi s r ng VX G i l ng n c ch a trong bình X là x (0<=x<=VX) ọ ượ ướ ứ G i l ng n c ch a trong bình Y là y (0<=y<=VY) ọ ượ ướ ứ 51 Nh v y, đi u ki n k t thúc c a bài toán s là : ư ậ ủ ế ẽ ệ ề TTNT x = z ho c y = z
ặ Đi u ki n đ u c a bài toán là : x = 0 và y=0 ầ ủ ề ệ c th c hi n b ng cách xét l n l ằ ệ ự t các lu t sau, lu t nào th a mãn
ậ ậ ỏ i đ
ả ượ
ụ ứ ệ ậ ậ ạ ổ ủ
ậ ầ ở ạ Quá trình gi
ầ ượ
c áp d ng. Lúc này, các lu t chính là các "kinh nghi m" hay tri th c mà ta đã
thì s đ
ẽ ượ
chuy n giao cho máy tính. Sau khi áp d ng lu t, tr ng thái c a bài toán s thay đ i, ta
ẽ
ể
ế
i lu t đ u tiên. Quá trình ti p
l
i ti p t c xét các lu t k ti p, n u h t lu t, quay tr l
ậ
ậ ế ế
ạ ế ụ
di n cho đ n khi đ t đ
c đi u ki n k t thúc c a bài toán.
ề
ế
ễ ụ
ế
ế ạ ượ ế
ệ ủ c mô t nh sau : Ba lu t này đ
ậ ượ ả ư (L1) N u bình X đ y thì đ h t n c trong bình X đi. ổ ế ướ ế ầ (L2) N u bình Y r ng thì đ đ y n c vào bình Y. ổ ầ ướ ế ỗ Trên thực tế, lúc đầu để giải trường hợp tổng quát của bài toán này, người ta đã
dùng đến hơn 15 luật (kinh nghiệm) khác nhau. Tuy nhiên, sau này, người ta đã
rút gọn lại chỉ còn 3 luật như trên. c t? bình Y sang bình ế ướ (L3) N u bình X không đ y và bình Y không r ng thì hãy trút n
X (cho đ n khi bình X đ y ho c bình Y h t n c). ỗ
ế ướ ầ
ầ ế ặ ... x := 0; y := 0; WHILE ( (x <> z) AND (y<>z) ) DO BEGIN IF (x = Vx) THEN x := 0; IF (y = 0) THEN (y:= Vy); IF (y > 0) THEN BEGIN k:= min(Vx - x, y); x := x + k; y := y - k; END; END; ... 52 B n có th d dàng chuy n đ i cách gi i này thành ch ng trình nh sau : ể ễ ể ạ ổ ả ươ ư TTNT Th "ch y" ch ng trình trên v i s li u c th là : ử ạ ươ ớ ố ệ ụ ể Ban đ u : x = 0, y = 0 ầ Lu t (L2) -> x = 0, y = 4 ậ Lu t (L3) -> x = 3, y = 1 ậ Lu t (L1) -> x = 0, y = 1 ậ Lu t (L3) -> x = 1, y = 0 ậ Lu t (L2) -> x = 1, y = 4 ậ Lu t (L3) -> x = 3, y = ậ i gi i khi s n i ta đã ch ng minh đ
ứ ướ c ch có l
ỉ ờ ả ố ướ ầ ộ ộ
c c n đong là m t b i Ng
ườ
s c a
ố ủ ướ ố c r ng, bài toán đong n
ượ ằ
c s chung l n nh t c a th tích hai bình.
ấ ủ ể ớ z = n · USCLN(VX, VY) (v i n nguyên d ng) ớ ươ ng trình ậ i gi ặ
ở
ươ
i b ng cách duy t tu n t
ả ằ trên đ
ầ ự ừ c g i là
ượ ọ
ậ c s tri th c
ơ ở
ụ ứ ế ệ 3 lu t mà chúng ta đã cài đ t trong ch
cách th c tìm ki m l
ờ
là đ ng c suy di n
ơ t ng lu t và áp d ng nó đ
ở ố ứ . Còn
ượ ọ
c g i
cu i m c.
ụ ễ . Chúng ta s đ nh nghĩa chính xác hai thu t ng này ẽ ị ộ ữ ậ i quy t v n đ theo ki u này khác so v i cách gi ả ề ế ấ
ng là chúng ta ộ ế ấ
i d ng các lu t), máy tính s d a vào đó (áp d ng các ề ụ ể mà ch đ a ra ụ i b ng thu t toán thông
ậ
ả ằ
i quy t v n đ c th
ỉ ư
ẽ ự
ề ự m t quy trình gi ả ậ ố ộ ớ
ể
không đ a ra m t trình t
gi
ự ả
ư
ậ
ướ ạ
ế ấ
i toán b ng cách đ a ra các đ nh lý, quy t c liên quan đ n bài toán mà ư ệ
i quy t v n đ . Đi u này cũng gi ng nh vi c xây d ng
ằ
ả ề
ắ ế ị Cách gi
th
ườ
các quy t c chung chung (d
ắ
ể t
lu t) đ
ự
chúng ta gi
không c n ph i ch ra cách gi
ả ư
i c th .
ả ụ ể ầ ỉ FUNCTION DK(L INTEGER):BOOLEAN; BEGIN CASE L OF 1 : DK := (x = Vx); 2 : DK := (y = 0); 53 ậ ị ằ ở ể ạ ẽ ẫ
c cài s n trong ch ể ả
ệ ứ ẫ ứ đi m nào? B n s có th c m th y r ng chúng ta v n đang
ng
ươ
ng trình c a chúng ta đã "m m" h n m t tí r i đ y. N u không ấ ằ
ượ
ộ ẵ
ồ ấ ươ ế ơ ng trình này. V y thì đi m thú v n m
ể
dùng tri th c "c ng" ! (vì các tri th c v n là các câu l nh IF đ
ứ
trình). Th c ra thì ch
ự
tin, các b n hãy quan sát phiên b n k ti p c a ch
ạ ế ế ủ ề
ươ ủ
ả TTNT 3 : DK := (y>0); END; END; PROCEDURE ThiHanh(L INTEGER):BOOLEAN; BEGIN CASE L OF 1 : x := 0; 2: y := Vy; 3 : BEGIN k := min(Vx-x,y); x := x+k; y := y-k; END; END; END; CONST SO_LUAT = 3; BEGIN WHILE (x<>z) AND (y<>z) DO BEGIN FOR i:=1 TO SO_LUAT DO IF DK(L) THEN ThiHanh(L); END; END. 54 ằ ươ ư ệ ầ ng trình chính cũng thi hành b ng cách l n l
ầ ượ
ề ở ế ằ ớ
ượ
ệ
ng trình này th hi n ể ệ ở ỗ ế ươ ề ố i các hàm DK và ThiHanh mà không c n ph i i ch t xét qua 3 l nh IF nh
c thay th b ng hàm
đây, bi u th c đi u ki n đ
ứ
ế ằ
ệ ượ
c thay th b ng th t c ThiHanh. Tính
ủ ụ
ch , n u mu n b sung "tri th c", ta
ổ
ả s a l ứ
ươ
ng ử ạ ấ
ỉ ầ ạ Đo n ch
ạ
ng trình đ u tiên. Tuy nhiên,
ch
ể
ươ
DK và các hành đ ng ng v i đi u ki n đã đ
ề
ộ ứ
ch t "m m" h n c a ch
ơ ủ
ch ph i đi u ch nh l
ỉ
ề
ả
trình chính. TTNT Bây gi hãy gi s r ng ta đã có hàm và th t c đ c bi t sau : ờ ả ử ằ ủ ụ ặ ệ FUNCTION GiaTriBool(DK : String) : BOOLEAN; PROCEDURE ThucHien(ThaoTac : String) ; ồ ả ệ ẽ ỗ hàm GiaTriBool nh n vào m t
ề
ậ
ra giá tr BOOLEAN c a bi u th c này. ộ chu iỗ đi u ki n, nó s phân tích chu i, tính toán r i tr
ể ủ ứ ị Ví d : GiaTriBoolean(‘6<7’) s tr ra FALSE ẽ ả ụ ỗ ồ ế ẽ ậ Th t c ThucHien cũng nh n vào m t chu i, nó cũng s phân tích chu i r i ti n hành
ỗ
trong chu i này.
th c hi n nh ng hành đ ng đ ộ
c miêu t ủ ụ
ự ượ ữ ệ ả ỗ ộ CONST SO_LUAT = 3; TYPE Luat RECORD DK : String; ThiHanh : String; END; DSLuat ARRAY [1..SO_LUAT] OF Luat; 9; VAR CacLuat DSLuat; PROCEDURE KhoiDong; BEGIN CacLuat[1].DK := ‘x = Vx’; CacLuat[2].DK := ‘y = 0’; CacLuat[3].DK := ‘y>0’; 9; CacLuat[1].ThaoTac := ‘x:=0’; CacLuat[2].ThaoTac:= ‘y:=Vy’; CacLuat[3].ThaoTac:= ‘k:=min(Vx-x,y), x:=x+k, y:=y-k’; 55 V i hàm và th t c này, ch ng trình c a chúng ta s nh sau : ủ ụ ớ ươ ẽ ư ủ TTNT END; BEGIN WHILE (x<>z) AND (y<>z) DO BEGIN FOR i:=1 TO SO_LUAT DO IF GiaTriBoolean(CacLuat[i].DK) THEN ThucHien(CacLuat[i].ThaoTac); END; END. ể ễ ươ
ữ ậ ư ổ
ng trình thi hành, ta có th d dàng thay đ i
ạ
m ng CacLuat (các ngôn ng l p trình sau này nh Visual C++, Delphi đ u
ề
ầ ử ả
ề ỉ ầ
ng trình này, khi mu n s a đ i "tri th c", b n ch c n ố ử ổ ươ ứ ạ ớ là xong. Chúng ta t m cho r ng trong quá trình ch
ằ
s ph n t
ố
cho phép đi u này). V i ch
thay đ i ổ giá tr m ng Luat ị ả ố ẫ ệ ặ ổ ỉ ả ọ ầ ạ ng trình nh ng v n còn khá xa l ườ ư ẫ ng. Chúng ta c n gi m b t "kho ng cách" này l ặ
ỗ ạ
ươ
ả ạ ố ớ
ư ố ớ
ầ ạ ằ
ự ế đ i v i ng ườ
ề ườ ươ
i các đi u ki n và thao tác này sang d ng phù h p v i ch ớ
ả
ý nghĩa tr c ti p
ệ ặ
ệ
ể ổ l
chuy n đ i
ạ ố ớ
ạ ề ớ ợ i dùng v n g p khó khăn khi mu n b sung ho c hi u ch nh tri th c.
Tuy nhiên, ng
ứ
ườ
ỗ
H c n ph i nh p các chu i đ i lo i nh ‘x=0’ ho c ‘k:=min(Vx-x,y)’ ...Các chu i
ặ
ư
ậ
đ i v i ng
i dùng
này, tuy có ý nghĩa đ i v i ch
ữ
i b ng cách đ a ra nh ng
bình th
ng trình
chu i đi u ki n ho c thao tác có
i dùng. Ch
ỗ
s có ẽ
ươ
ng
trình. c đi u trên. Chúng ta c n ph i li t kê đ c các tr ng thái và thao tác c ả ệ ượ ượ ề ạ ơ Đ làm đ
ầ
ể
b n c a bài toán này. Sau đây là m t s tr ng thái và thao tác c b n.
ộ ố ạ
ả ủ ơ ả Tr ng thái c b n : ơ ả ạ Bình X đ y, Bình X r ng, Bình X không r ng, Bình X có n lít n c. ầ ỗ ỗ ướ Thao tác ằ ư ả ị
A sang B thì l đ nh r ng các
ằ
i bài
i gi ổ
ơ ữ ế c t
ướ ừ
t cách đ n lít n
ổ
ế A sang B" vì bài toán đã gi
c t
ướ ừ ả ờ L u ý r ng ta không th có thao tác "Đ n lít n
ể
bình đ u không có v ch chia, h n n a n u ta bi
toán tr thành quá đ n gi n. ạ
ơ ề
ở ả "Múc đ y X" ầ "Đ z lít n X sang Y" ổ c t
ướ ừ 56 c trong bình, Đ n c t bình A sang bình B cho ổ ầ ướ ổ ướ ừ c trong bình, Đ đ y n
Đ h t n
ổ ế ướ
đ n khi B đ y ho c A r ng.
ỗ
ầ
ế ặ TTNT ể ễ ậ ơ ả ả ạ ộ Vì đây là m t bài toán đ n gi n nên b n có th d nh n th y r ng, các tr ng thái c b n và thao
ấ ằ
tác ch ng có gì khác so v i các đi u ki n mà chúng ta đã đ a ra.
ư ơ
ớ ạ
ệ ề ẳ t các đo n ch ng trình cho phép ng ạ ươ ẽ ế ườ ượ ừ ạ c hình thành t
ạ i dùng i dùng nh p vào các lu t
ậ
ậ
ồ
các tr ng thái và đi u ki n c b n này, đ ng
ệ ơ ả
ề
ví d trên. Chúng
c nh
ụ
ể ử
ư ở
ượ
ở
ng trình giao ti p v i ng
ườ
ớ
ế ươ ế ặ ạ K ti p, ta s vi
ế ế
(d ng n u ... thì ...) đ
ạ
ế
th i ti n hành chuy n sang d ng máy tính có th x lý đ
ờ ế
ể
ta s không bàn đ n vi c cài đ t các đo n ch
ệ
ẽ
đây. ố c c u t o t
ượ ấ ạ ừ ấ ệ ơ ả ng trình truy n th ng (đ
ề
), ch ng trình trí tu nhân t o đ
ệ ươ ạ ượ ấ ạ ừ hai "ch t li u" c b n là
ầ
hai thành ph n Nh v y, so v i ch
ớ
ươ
ư ậ
d li u
ữ ệ và thu t toán
ậ
ứ (knowledge base) và đ ng c suy di n
là c s tri th c
ơ ở ơ ộ c c u t o t
ễ (inference engine). C s tri th c ng trình quan ứ : là t p h p các tri th c liên quan đ n v n đ mà ch ứ ế ề ấ ậ ợ ươ tâm gi i quy t. ơ ở
ả ế ng pháp v n d ng tri th c trong c s tri th c đ gi ễ : là ph ươ ứ ể ả
i ậ ụ ơ ở ứ Đ ng c suy di n
ơ
ộ
quy t v n đ .
ề
ế ấ 57 ứ ế
ỉ ể
ặ ệ
ữ ệ ộ
ể ễ c ti n hóa m i c a d li u và thu t toán c a ch ơ
ằ
ậ
ạ ộ ượ ố ừ
ễ
ơ ở
ủ
ươ
ơ t ng quát, đ
khác nhau và c s tri th c có thể ể
c chu n hóa
ẩ
ứ chính là lo i nhiên ổ
ơ ở ạ ạ t đ v n hành lo i đ ng c này ! ứ
trên thì c s tri th c
N u xét theo quan ni m bi u di n tri th c mà ta v a bàn lu n
ơ ở
ậ ở
ễ
t và đ ng c suy di n cũng ch là m t d ng c a thu t
ch là m t d ng d li u đ c bi
ậ
ộ ạ
ộ ạ
ủ
ỉ
ệ
t mà thôi. Tuy v y, có th nói r ng, c s tri th c và đ ng c suy di n là
toán đ c bi
ệ
ơ
ộ
ứ
ậ
ặ
m t b
ng trình! B n có th hình
ớ ủ ữ ệ
ế
ộ ướ
ạ
ễ gi ng nh m t lo i đ ng c
dung đ ng c suy di n
ư ộ
ơ
ộ
dùng đ v n hành nhi u lo i xe máy
ể ậ
ề
li u đ c bi
ặ ệ ể ậ ạ ộ ệ ơ TTNT nh nh ng c s d li u khác ng t ả ấ ứ ơ ở ữ ệ ừ ữ
ẫ ế ố ự ư ữ
ứ
ơ ở
ễ ư ậ ứ ấ ạ ơ ở
ư ự
ữ
ươ ề ươ
ự
ề ể
ắ ả
ả ề
ữ ừ ứ ặ ẫ
ệ ố ẽ ứ ự C s tri th c cũng g p ph i nh ng v n đ t
ặ
nh s trùng l p, th a, mâu thu n. Khi xây d ng c s tri th c, ta cũng ph i chú ý đ n
ế
ắ
này. Nh v y, bên c nh v n đ bi u di n tri th c, ta còn ph i đ ra các
nh ng y u t
ph
tác này s đ
ẽ ượ
đ c p đ n nh ng ph
ế
ề ậ ng pháp đ lo i b nh ng tri th c trùng l p, th a ho c mâu thu n. Nh ng thao
ể ạ ỏ ữ
c th c hi n trong quá trình ghi nh n tri th c vào h th ng. Chúng ta s
ậ
ệ
ng pháp này trong ph n tìm hi u v các lu t d n.
ươ
ữ ậ ẫ ề ể ầ t cho chúng ta th y c u trúc chung nh t c a m t ch ng trình trí ắ ấ ấ ấ ủ ộ ươ Hình nh trên tóm t
ả
tu nhân t o.
ạ ệ ứ ơ ấ ấ ố ớ
ể ầ
ị ủ ể
ẳ ể
ộ ễ
ị ặ ộ ỉ Đây có l
là ki u bi u di n tri th c đ n gi n nh t và g n gũi nh t đ i v i chúng ta.
ả
ẽ
M nh đ là m t kh ng đ nh, m t phát bi u mà giá tr c a nó ch có th ho c là đúng
ệ
ể
ề
ho c là sai.
ặ Ví d :ụ phát bi u "1+1=2" có giá tr đúng. ể ị phát bi u "M i lo i cá có th s ng trên b " có giá tr sai. ể ố ể ạ ọ ờ ị 58 ề ị ủ ữ ệ ề ộ ỉ ụ
ặ ả
ấ ư ờ i ph thu c vào th i gian, không gian và nhi u y u t ụ ộ ệ
ị ủ
ị ủ
ạ Giá tr c a m nh đ không ch ph thu c vào b n thân m nh đ đó. Có nh ng m nh
ệ
ệ
đ mà giá tr c a nó luôn đúng ho c sai b t ch p th i gian nh ng cũng có nh ng m nh
ấ
ữ
ề
khác quan
đ mà giá tr c a nó l
ế ố
ờ
ề
khác. Ch ng h n nh m nh đ : "Con ng
ớ
ườ
ẳ
tr n" là đúng khi ể
ả
nh ng hành tinh có l c h p d n y u thì có th sai.
ự ấ i không th nh y cao h n 5m v i chân
ẫ ạ
ư ệ
ề
trái đ t , còn
ấ ề
ơ
ế ở ữ ể ầ ở TTNT Ta ký hi u m nh đ b ng nh ng ch cái la tinh nh ề ằ ư a, b, c, ... ữ ữ ệ ệ Bạn đọc chắn hẳn đã từng sử dụng logic mệnh đề trong chương trình rất nhiều lần (như trong cấu
trúc lệnh IF ... THEN ... ELSE) để biểu diễn các tri thức "cứng" trong máy tính ! nh ng m nh đ c s là phép ể ạ ữ ệ ề ớ ừ ữ ề ơ ở ệ (cid:216) ) Có 3 phép n i c b n đ t o ra nh ng m nh đ m i t
ố ơ ả
h i (ộ (cid:218) ), giao((cid:217) ) và ph đ nh ( ủ ị giá tr nh ng m nh đ con, ề ứ ừ ị ị ữ ề ệ Bên c nh các thao tác tính ra giá tr các m nh đ ph c t
ạ
chúng ta có đ c m t c ch suy di n nh sau : ộ ơ ế ệ
ư ượ ễ B là đúng thì giá tr c a B ề ệ ế ệ ị ủ ề fi
Modus Ponens : N u m nh đ A là đúng và m nh đ A
s là đúng.
ẽ B là đúng và m nh đ B là sai thì giá tr c a A s ế ệ ị ủ ệ ề ẽ ề fi
Modus Tollens : N u m nh đ A
là sai. ề ề ệ Các phép toán và suy lu n trên m nh đ đã đ
c đ c p nhi u đ n trong các tài li u
ệ
ế
ượ ề ậ
ậ
đây.
t
v toán nên chúng ta s không đi vào chi ti
ế ở
ẽ
ề ệ ễ ạ ơ ả ấ ể
ệ ộ ở
ộ ộ ể
ề không có c uấ
ư ề ậ
i) đ tăng c - t n t và l ng t ứ ằ
ủ
ạ
ượ i ta đã đ a vào
ườ
ủ
ng tính c u trúc c a
ấ ệ
ế ấ
ừ "
( ồ ạ ể Bi u di n tri th c b ng m nh đ g p ph i m t tr ng i c b n là ta không th can
ề ặ
ả
thi p vào c u trúc c a m t m nh đ . Hay nói m t cách khác là m nh đ
ệ
ề
trúc . Đi u này làm h n ch r t nhi u thao tác suy lu n . Do đó, ng
ề
ọ $
- v i m i,
khái ni m v t
ườ
ớ
ị ừ
ệ
m t m nh đ .
ề
ệ ộ c c u t o b i ị ừ , m t m nh đ
ệ ề đ đ i t
ố ượ
c bi u di n d ộ
ệ ữ ố ầ
ị ừ Các m nh đ s đ
ề ẽ ượ
ệ ở hai thành ph n là các
ể ng tri
ễ ướ
i Trong logic v t
ượ ấ ạ
th c ứ và m i liên h gi a chúng (g i là v t ).
ọ
d ng :
ạ V t (<đ i t ng 1>, <đ i t ng 2>, …, <đ i t ng n>) ị ừ ố ượ ố ượ ố ượ Nh v y đ bi u di n v c a các trái cây, các m nh đ s đ c vi i thành : ề ẽ ượ ể ể ư ậ ị ủ ễ ệ t l
ế ạ V (Cam, Ng t) ọ (cid:222)
Cam có v Ng t ị ọ ị Cam có màu Xanh (cid:222) Màu (Cam, Xanh) Kiểu biểu diễn này có hình thức tương tự như hàm trong các ngôn ngữ lập trình,
các đối tượng tri thức chính là các tham số của hàm, giá trị mệnh đề chính là kết
quả của hàm (thuộc kiểu BOOLEAN). 59 TTNT , ta có th bi u di n các tri th c d ể ể
ị ủ ệ
c xác đ nh thông qua các đ i t
ố ượ ữ
i d ng các m nh đ t ng quát, là nh ng
ề ổ
ng tri th c c u t o nên
ứ ấ ạ ứ ướ ạ
ị ượ V i v t
ễ
ớ ị ừ
m nh đ mà giá tr c a nó đ
ề
ệ
nó. B (A, B) = T n t i Z sao cho : B (A, Z) và (Anh(Z, B) ho c Anh(B,Z)) ồ ạ ố ặ ố ủ ế ặ ộ ườ i con c a A"
ủ ứ "A là b c a B n u B là anh ho c em c a m t ng
nh sau : c bi u di n d Ch ng h n tri th c :
ạ
ẳ
có th đ
ể ượ ố ủ
i d ng v t
ễ ướ ạ ị ừ ư ể Trong tr ng h p này, m nh đ B (A,B) là m t m nh đ t ng quát ườ ề ố ề ổ ệ ệ ợ ộ Nh v y n u ta có các m nh đ c s là : ề ơ ở ư ậ ệ ế ố ủ ố ủ ị thì m nh đ
ệ ề c) B ("An", "Tú") s có giá tr là đúng. (An là b c a Tú). ố ủ ẽ ố ị ế ề ộ ố ệ ể
ừ ỉ ử ụ
ữ
c giá tr c a m nh đ ng thì ta s không th tìm đ
ệ
ư ậ ệ
ằ
ệ ượ ở ượ
c
ẽ
ề (cid:217) , (cid:218) , (cid:216)
. T đó, ta cũng
ề c. S dĩ nh v y vì ta không th th hi n
ể ể ệ
ặ
ứ "(A là b c a B) n u có Z sao cho (A là b c a Z) và (Z anh ho c
ố ủ
đã cho phép ng minh tri th c
ướ ạ ủ ị ừ Rõ ràng là n u ch s d ng logic m nh đ thông th
ườ
m t m i liên h nào gi a c và a,b b ng các phép n i m nh đ
ố
không th tính ra đ
ị ủ
ể
t
ố ủ
ườ
em C)" d
ề
chúng ta th hi n đ ng. Chính đ c tr ng c a v t
ườ
ư
c các tri th c d ng t ng quát nh trên.
ổ ế
i d ng các m nh đ thông th
ệ
ể ệ ượ ứ ạ ặ
ư : Thêm m t s ví d n a đ các b n th y rõ h n kh năng c a v t
ạ ụ ữ ể ủ ị ừ ộ ố ấ ả ơ ậ ậ ấ ể c bi u di n d i d ng v t Câu cách ngôn "Không có v t gì là l n nh t và không có v t gì là bé nh t!" có th
đ
ượ ấ
ớ
nh sau :
ị ừ ư ễ ướ ạ ể L nH n(x,y) = x>y ớ ơ Nh H n(x,y) = x " " x, $ y : L nH n(y,x) và x, $ ớ ơ y : Nh H n(y,x)
ỏ ơ ầ Câu châm ngôn "G n m c thì đen, g n đèn thì sáng" đ
ự
nào thì ta cũng s thành ng ầ
i x u" có th đ ơ ớ ạ
nh sau : c hi u là "ch i v i b n x u
ấ
ượ
c bi u di n b ng v t
ị ừ ư
ễ ườ ấ ể ượ ể
ằ ể ẽ $ Ng iX u (x) = y : B n(x,y) và Ng iX u(y) ườ ấ ạ ườ ấ 60 ụ ị ừ ượ ứ ể ặ
c nghiên c u và phát tri n thành m t ngôn ng l p trình đ c
ng s ữ ậ
ủ đã đ
ệ ộ
ầ ươ ữ ọ ẽ i thi u t ng quan v i các b n v ngôn ng này. Công c v t
tr ng cho trí tu nhân t o. Đó là ngôn ng PROLOG. Ph n đ c thêm c a ch
ư
gi
ớ ệ ổ ạ
ớ ữ ề ạ TTNT ứ ề ệ ọ fi b). Đây cũng chính là bài toán ch ng minh th ấ
ễ ườ ứ M t trong nh ng v n đ khá quan tr ng c a logic m nh đ là ch ng minh tính đúng
ủ
ề
ữ
ộ
ặ
ng g p
đ n c a phép suy di n (a
ắ ủ
trong toán h c. ọ ệ ớ
ớ ằ
ộ ề
ể ứ ế ặ ượ ễ ế Rõ ràng r ng v i hai phép suy lu n c b n c a logic m nh đ (Modus Ponens, Modus
ậ ơ ả ủ
c phép
Tollens) c ng v i các phép bi n đ i hình th c, ta cũng có th ch ng minh đ
ượ
ứ
ổ
suy di n. Tuy nhiên, thao tác bi n đ i hình th c là r t khó cài đ t đ
c trên máy tính.
ứ
Th m chí đi u này còn khó khăn v i c con ng ấ
i! ố
ớ ả ườ ề ậ ớ ạ ể ụ ượ ứ ằ ộ c m i bài
ọ
ế ươ ậ ươ
ng ả ư
ề ươ ệ ớ ng pháp "thô b o" là l p b ng chân tr . Tuy v lý thuy t, ph
ề
ị
ộ ứ ạ ủ
c k t qu cu i cùng nh ng đ ph c t p c a
ượ ế
ị
n) v i n là s bi n m nh đ . Sau đây chúng ta s
ẽ
ớ
ng pháp ch ng minh m nh đ v i đ ph c t p ch có O(n). V i công c máy tính, b n có th cho r ng ta s d dàng ch ng minh đ
toán b ng m t ph
ằ
ạ
pháp l p b ng chân tr luôn cho đ
ậ
ng pháp này là quá l n, O(2
ph
nghiên c u hai ph
ứ
ươ
ứ ẽ ễ
ả
ả ố
ố ế
ệ ề ớ ộ ứ ạ ỉ VII.1. Thu t gi ậ ả ươ i V ng H o
ạ B1 : Phát bi u l i gi thi ể ạ ả ế t và k t lu n c a v n đ theo d ng chu n sau :
ề ậ ủ ấ ế ạ ẩ GT1, GT2, ..., GTn fi KL1, KL2, ..., KLm c xây d ng t ệ ề ượ ự ừ các bi n m nh đ và 3
ệ ề ế Trong đó các GTi và KLi là các m nh đ đ
(cid:217) , (cid:218) , (cid:216)
phép n i c b n : ố ơ ả B2 : Chuy n v các GTi và KLi có d ng ph đ nh. ủ ị ể ế ạ Ví d : ụ p (cid:218) q, (cid:216) (r (cid:217) s), (cid:216) g, p (cid:218) r fi s, (cid:216) p (cid:222) p (cid:218) q, p (cid:218) r, p fi (r (cid:217) s), g, s B3 : N u GTi có phép (cid:217) thì thay th phép (cid:217) b ng d u "," ế ế ấ ằ N u KLi có phép (cid:218) thì thay th phép (cid:218) b ng d u "," ế ế ấ ằ Ví d : ụ p (cid:217) q, r (cid:217) ((cid:216) p (cid:218) s) fi (cid:216) q, (cid:216) s (cid:222) p, q, r, (cid:216) p (cid:218) s fi (cid:216) q, (cid:216) s 61 B4 : N u GTi có phép (cid:218) thì tách thành hai dòng con. ế TTNT N u KLi có phép (cid:217) thì tách thành hai dòng con. ế ở Ví d : ụ p, (cid:216) p (cid:218) q fi q p, (cid:216) p fi q p, q fi q c ch ng minh n u t n t c hai phía. B5 : M t dòng đ
ộ ượ ế ồ ạ ứ i chung m t m nh đ
ộ ề ở ở ả ệ Ví d :ụ p, q fi q đ c ch ng minh ượ ứ p, (cid:216) p fi q (cid:222) pfi p, q B6 : c hai v và 2 v không có chung ế ộ ở ế a) N u m t dòng không còn phép n i
m t bi n m nh đ thì dòng đó không đ
ề ế ệ ộ ố (cid:217) ho c ặ (cid:218)
ở ả
ế
c ch ng minh.
ứ
ượ c ch ng minh n u t t c dòng d n xu t t ế ấ ả ấ ừ ạ ầ
d ng chu n ban đ u
ẩ ứ ẫ b) M t v n đ đ
ộ ấ
đ u đ
ề ượ ề ượ
c ch ng minh.
ứ VII.2 Thu t gi i Robinson ậ ả i này ho t đ ng d a trên ph ng pháp ch ng minh ph n ch ng. Thu t gi
ậ ả ạ ộ ự ươ ứ ứ ả Ph ng pháp ch ng minh ph n ch ng ươ ứ ứ ả fi Ch ng minh phép suy lu n (a b) là đúng (v i a là gi thi ứ ậ ớ ả ế t, b là k t lu n).
ế ậ (cid:216) s b sai suy ra b là đúng. Ph n ch ng : gi
ứ ả ả ử (cid:216) Bài toán đ c ch ng minh n u a đúng và b đúng sinh ra m t mâu thu n. ượ ứ ế ẫ ộ B1 : Phát bi u l i gi thi t và k t lu n c a v n đ d ể ạ ả ế ậ ủ ấ ề ướ ạ i d ng chu n nh sau :
ẩ ư ế GT1, GT2, ...,GTn fi KL1, KL2, .., KLm Trong đó : GTi và KLj đ c xây d ng t (cid:217) , (cid:218) , (cid:216) ượ ự ừ các bi n m nh đ và các phép toán :
ề ệ ế B2 : N u GTi có phép ế (cid:217) thì thay b ng d u ","
ằ ấ 62 N u KLi có phép ế (cid:218) thì thay b ng d u ","
ằ ấ TTNT B1 v thành danh sách m nh đ nh sau : B3 : Bi n đ i dòng chu n
ổ ẩ ở ế ề ư ề ệ KLm } { GT1, GT2, ..., GTn , (cid:216) KL1, (cid:216) KL2, ..., (cid:216) c 2 có 2 m nh đ đ i ng u nhau thì bài toán ế ệ ẫ (cid:216) c ch ng minh. Ng ệ
i thì chuy n sang B4. (a và
c l
ượ ạ b
ề ở ướ
ể ứ ề ố
ề ố
a g i là hai m nh đ đ i
ọ ệ B4 : N u trong danh sách m nh đ
đ
ượ
ng u nhau)
ẫ ề ớ ằ
ệ ộ ặ
ệ ệ
ề ố ề ớ ề
ẫ B5 : Xây d ng m t m nh đ m i b ng cách tuy n m t c p m nh đ trong danh sách
m nh đ
bi n đó đ ệ
ể
ộ
c 2. N u m nh đ m i có các bi n m nh đ đ i ng u nhau thì các
ế
ế
c lo i b .
ạ ỏ ự
b
ề ở ướ
ượ ệ
ế q, q là đ i ng u nên s đ ề (cid:216)
Hai m nh đ
ệ ẽ ượ ẫ ố c lo i b
ạ ỏ (cid:222) p (cid:218) (cid:216) r (cid:218) s B6 : Thay th hai m nh đ v a tuy n trong danh sách m nh đ b ng m nh đ m i. ề ớ ề ừ ề ằ ệ ệ ệ ể ế Ví d : ụ { p (cid:218) (cid:216) q , (cid:216) r (cid:218) s (cid:218) q , w (cid:218) r, s (cid:218) q } (cid:222) { p (cid:218) (cid:216) r (cid:218) s , w (cid:218) r, s (cid:218) q } ế ệ ộ c ch ng minh. c thêm m t m nh đ m i nào và trong danh sách m nh
B7 : N u không xây d ng đ
ệ
ượ
đ không có 2 m nh đ nào đ i ng u nhau thì v n đ không đ
ố
ề ề ớ
ề ự
ề ượ ứ ệ ẫ ấ Ví d : ụ Ch ng minh r ng ứ ằ (cid:216) p (cid:218) q, (cid:216) q (cid:218) r, (cid:216) r (cid:218) s, (cid:216) u (cid:218) (cid:216) s fi (cid:216) p, (cid:216) u B3: { (cid:216) p (cid:218) q, (cid:216) q (cid:218) r, (cid:216) r (cid:218) s, (cid:216) u (cid:218) (cid:216) s, p, u } B4 : Có t t c 6 m nh đ nh ng ch a có m nh đ nào đ i ng u nhau. ấ ả ề ư ư ệ ề ệ ẫ ố ệ
tuy n m t c p m nh đ (ch n hai m nh đ có bi n đ i ng u). Ch n hai m nh ộ ặ ệ ệ ế ề ề ể ẫ ọ ố ọ B5 : (cid:222)
đ đ u :
ề ầ (cid:216) p (cid:218) q (cid:218) (cid:216) q (cid:218) r (cid:222) (cid:216) p (cid:218) r Danh sách m nh đ thành :
ệ ề 63 {(cid:216) p (cid:218) r , (cid:216) r (cid:218) s, (cid:216) u (cid:218) (cid:216) s, p, u } TTNT V n ch a có m nh đ đ i ng u.
ệ ề ố ư ẫ ẫ Tuy n hai c p m nh đ đ u tiên
ệ ề ầ ể ặ (cid:216) p (cid:218) r (cid:218) (cid:216) r (cid:218) s (cid:222) (cid:216) p (cid:218) s (cid:216) p (cid:218) s, (cid:216) u (cid:218) (cid:216) s, p, u } Danh sách m nh đ thành {
ệ ề V n ch a có hai m nh đ đ i ng u
ẫ ề ố ư ệ ẫ Tuy n hai c p m nh đ đ u tiên ề ầ ể ệ ặ (cid:216) (cid:216) p (cid:218) s (cid:218) u (cid:218) (cid:216) s (cid:222) (cid:216) p (cid:218) (cid:216) u (cid:216) p (cid:218) (cid:216) u, p, u } Danh sách m nh đ thành : {
ệ ề V n ch a có hai m nh đ đ i ng u
ẫ ề ố ư ệ ẫ Tuy n hai c p m nh đ :
ặ ể ệ ề (cid:216) p (cid:218) (cid:216) u (cid:218) u (cid:222) (cid:216) p (cid:216) Danh sách m nh đ tr thành : { p, p } ề ở ệ Có hai m nh đ đ i ng u nên bi u th c ban đ u đã đ c ch ng minh. ề ố ứ ệ ể ẫ ầ ượ ứ VIII.1. Khái ni m ệ ậ ể ễ ươ ứ ằ ở ổ ể ượ ấ ưở ứ ộ : "N U Ế đi u ki n hành đ ng ộ ứ
ả ề c đi th ng, c phát minh b i Newell và Simon
ộ
i bài toán t ng quát. Đây là m t
c c u trúc
sẽ
ẳ ượ Ế ạ ỏ ng c b n là tri th c có th đ
ệ x y ra THÌ
ạ
c THÌ ki m tra ngu n đi n, … ng pháp bi u di n tri th c b ng lu t sinh đ
Ph
ượ
trong lúc hai ông đang c g ng xây d ng m t h gi
ộ ệ ả
ố ắ
ự
ki u bi u di n tri th c có c u trúc. Ý t
ơ ả
ấ
ễ
ể
ể
b ng m t c p
ộ ặ đi u ki n – hành đ ng
ề
ệ
ằ
đ
ượ
N U máy tính đã m mà không kh i đ ng đ
Ế c thi hành". Ch ng h n : N U đèn giao thông là đ THÌ b n không đ
ệ ở ộ ẳ
ở ượ ể ồ 64 c áp d ng r ng rãi trong nhi u h ở ậ ụ ộ ố ệ ổ ế
ậ ộ ấ ụ
ố ề ề ỉ ẫ ư ể ỉ ế c dùng đ b t ch Ngày nay, các lu t sinh đã tr nên ph bi n và đ
th ng trí tu nhân t o khác nhau. Lu t sinh có th là m t công c mô t
các v n đ th c t
ể
ề ự ế
này, các lu t đ
ữ
ậ ượ
h u ích đ tr giúp cho các quy t đ nh trong quá trình tìm ki m, t
ế ị
ể ợ
ữ
gian tìm ki m. M t ví d khác là lu t sinh có th đ
ậ
ụ
ế ệ
ề
ượ
ế
đ gi
i quy t
ả ể ả
ể
ạ
ng h p
ợ
thay cho các ki u phân tích v n đ truy n th ng. Trong tr
ườ
ấ
c dùng nh là nh ng ch d n (tuy có th không hoàn ch nh) nh ng r t
ấ
ư
đó làm gi m không
ả
ủ
c hành vi c a ừ
ể ắ ể ượ ướ ộ TTNT ữ ỉ ơ ể ễ
nh ng chuyên gia. Theo cách này, lu t sinh không ch đ n thu n là m t ki u bi u di n
ộ
ậ
tri th c trong máy tính mà là m t ki u bi u di n các hành vi c a con ng
ể ể
i.
ườ ầ
ủ ứ ễ ễ ộ M t cách t ng quát lu t sinh có d ng nh sau :
ậ ư ạ ổ ộ Q P1 (cid:217) P2 (cid:217) ... (cid:217) Pn fi ấ ạ ữ ữ ề ậ ấ Tùy vào các v n đ đang quan tâm mà lu t sinh có nh ng ng nghĩa hay c u t o khác
nhau : 1, P2, ..., Pn, Q là nh ng bi u th c logic.
ữ Trong logic v t : P ị ừ ứ ể IF (P1 AND P2 AND .. AND Pn) THEN Q. Trong ngôn ng l p trình, m i m t lu t sinh là m t câu l nh. ữ ậ ệ ậ ộ ỗ ộ Trong lý thuy t hi u ngôn ng t nhiên, m i lu t sinh là m t phép d ch : ữ ự ể ế ậ ỗ ộ ị ONE fi m t. ộ TWO fi hai. JANUARY fi tháng m tộ i ta th ng ph i ch rõ hai thành ph n chính sau : Đ bi u di n m t t p lu t sinh, ng
ộ ậ ể ễ ễ ậ ườ ườ ả ầ ỉ (1) T p các s ki n F(Facts) ự ệ ậ F = { f1, f2, ... fn } (2) T p các quy t c R (Rules) áp d ng trên các s ki n d ng nh sau :
ụ ự ệ ư ạ ắ ậ q f1 ^ f2 ^ ... ^ fi fi Trong đó, các fi , q đ u thu c F ề ộ Ví d : Cho 1 c s tri th c đ c xác đ nh nh sau : ơ ở ứ ượ ụ ư ị Các s ki n : A, B, C, D, E, F, G, H, K ự ệ T p các quy t c hay lu t sinh (rule) ậ ắ ậ R1 : A fi E 65 R2 : B fi D TTNT R3 : H fi A R4 : E (cid:217) G fi C R5 : E (cid:217) K fi B R6 : D (cid:217) E (cid:217) K fi C R7 : G (cid:217) K (cid:217) F fi A VIII.2. C ch suy lu n trên các lu t sinh
ậ ơ ế ậ m t s s ki n ban đ u, xác đ nh ừ ộ ố ự ệ ầ ị c "sinh" ra t Suy di n ti n
ễ
các s ki n có th đ
ự ệ ế : là quá trình suy lu n xu t phát t
ấ
ậ
s ki n này.
ừ ự ệ ể ượ R3 : H fi A {A, H. K } R1 : A fi E { A, E, H, H } R5 : E (cid:217) K fi B { A, B, E, H, K } R2 : B fi D { A, B, D, E, H, K } R6 : D (cid:217) E (cid:217) K fi C { A, B, C, D, E, H, K } Suy di n lùi :
ễ ượ ấ ừ ộ ố ự ệ
ụ ườ c xu t phát t
ộ ự ệ ặ m t s s ki n ban đ u, ta
ầ
ự ế
là
ng g p trong th c t
ở
các tình tr ng c a máy tính, ch n đoán xem máy tính đã b h ng hóc
ị ỏ ừ ạ ẩ là quá trình suy lu n ng
ậ
tìm ki m các s ki n đã "sinh" ra s ki n này. M t ví d th
ự ệ
ế
xu t phát t
ủ
ấ
đâu. Ví d : ụ T p các s ki n : ự ệ ậ ng" ỏ ườ ạ ộ c ng là "h ng" hay "ho t đ ng bình th
Ổ ứ
ỏ
ỏ t" ho c "sáng" ắ ặ •
• H ng màn hình.
• L ng cáp màn hình.
• Tình tr ng đèn
c ng là "t
ổ ứ
ạ
• Có âm thanh đ c
c ng.
ọ ổ ứ
• Tình tr ng đèn màn hình "xanh" ho c "ch p đ "
ỏ
ạ
• Không s d ng đ
• Đi n vào máy tính "có" hay "không" 66 ặ ớ c máy tính. ử ụ ượ ệ TTNT c máy ế ử ụ ổ ứ ặ ỏ ỏ ượ R1. N u ( ( c ng "h ng") ho c (cáp màn hình "l ng")) thì không s d ng đ
tính. ệ ọ ổ ứ ạ
c ng là "không") ho c tình tr ng ặ R2. N u (đi n vào máy là "có") và ( (âm thanh đ c
đèn t")) thì ( c ng "h ng"). ế
c ng là "t
ổ ứ ổ ứ ắ ỏ ớ ỏ R3. N u (đi n vào máy là "có") và (tình tr ng đèn màn hình là "ch p đ ") thì (cáp màn
ế
ạ
ệ
hình "l ng").
ỏ c máy tính", ta ượ ị ượ c các nguyên nhân gây ra s ki n "không s d ng đ
Đ xác đ nh đ
ph i xây d ng m t c u trúc đ th g i là đ th AND/OR nh sau :
ồ ị ọ
ộ ấ ự ệ
ồ ị ử ụ
ư ể
ả ự ỏ ể ượ ư ậ ổ ứ ỏ ị
ệ ố c nguyên nhân gây ra h ng hóc là do
ả ầ ượ ể ể ệ c ng "không"…T i m t b ệ ộ ướ ạ
ệ ố ể ượ ườ ẽ ư ể ế ệ ế ậ ạ i ta th c ng h ng hay cáp
ỏ
ư
t đi vào các nhánh đ ki m tra các đi u ki n nh
ề
c, n u giá tr c n xác đ nh
ị ầ
ị
i dùng tr c
ự
ậ
t máy tính có đi n không, h th ng s hi n ra
ẽ ệ
ồ
ế
ng s d ng ngăn x p ế
b t kỳ m t lu t nào, h th ng s yêu c u ng
ầ
ệ ố
ể
ử ụ ườ ườ i nh ng nhánh ch a ki m tra). Nh v y là đ xác đ nh đ
màn hình l ng, h th ng ph i l n l
đi n vào máy "có", âm thanh
ổ ứ
c suy ra t
không th đ
ừ ấ
ộ
ti p nh p vào. Ch ng h n nh đ bi
ạ
ẳ
màn hình câu h i ỏ "B n ki m tra xem có đi n vào máy tính không (ki m tra đèn ngu n)?
ệ
(C/K)". Đ th c hi n đ
ể ự
ậ
(đ ghi nh n l
ậ ạ ể
c c ch suy lu n lùi, ng
ệ ượ ơ ế
ể
ư
ữ ể VIII.3. V n đ t i u lu t ề ố ư ậ ấ 67 ậ ậ ộ ơ ở ả ắ ệ ố ữ ứ ng có quan h không t T p các lu t trong m t c s tri th c r t có kh năng th a, trùng l p ho c mâu thu n.
ẫ
ừ
i dùng v vi c đ a vào h th ng nh ng tri
ể đ l
Dĩ nhiên là h th ng có th
ề ệ ư
ườ
th c nh v y. Tuy vi c t
i u m t c s tri th c v m t t ng quát là m t thao tác khó
ệ ố ư
ư ậ
(vì gi a các tri th c th
ườ ặ
ệ ố
ộ
ng minh), nh ng trong gi
ư ứ ấ
ổ ỗ cho ng
i
ộ ơ ở
ệ ứ ề ặ ổ
ườ ớ ạ ơ
i h n c ứ ữ TTNT ứ ướ ạ ấ
i d ng lu t, ta v n có m t s thu t toán đ n gi n đ lo i b các v n
ậ ể ạ ỏ ộ ố ẫ ậ ả ơ s tri th c d
ở
đ này.
ề VIII.3.1. Rút g n bên ph i ọ ả Lu t sau hi n nhiên đúng : ể ậ A (cid:217) B fi A (1) Do đó lu t ậ A (cid:217) B fi A (cid:217) C Là hoàn toàn t ng đ ng v i ươ ươ ớ A (cid:217) B fi C ọ ắ ả ế ữ ự ệ
ậ ế Quy t c rút g n
: Có th lo i b nh ng s ki n bên v ph i n u nh ng s ki n đó đã
ự ệ
ậ
xu t hi n bên v trái. N u sau khi rút g n mà v ph i tr thành r ng thì lu t đó là lu t
ỗ
ế
ệ
hi n nhiên. Ta có th lo i b các lu t hi n nhiên ra kh i tri th c. ể ạ ỏ ữ
ế
ể ạ ỏ ế
ả ở
ỏ ọ
ể ấ
ể ứ ậ VIII.3.2. Rút g n bên trái ọ Xét các lu t : ậ (L1) A, B fi C (L2) A fi X (L3) X fi C fi fi ậ ậ
ằ ậ C có th đ
Rõ ràng là lu t A, B
ể ượ
ng đ n các k t lu n trong m i tr
h
ưở
ậ
ọ ườ
ế
ế
c lo i b kh i lu t d n trên.
d th a và có th đ
ỏ
ể ượ
ư ừ C mà không làm nhả
c thay th b ng lu t A
ế ằ
ng h p. Ta nói r ng s ki n B trong lu t (1) là
ự ệ
ợ
ậ ẫ ạ ỏ VIII.3.3. Phân rã và k t h p lu t ế ợ ậ (cid:218) B fi C Lu t A
ậ T ng đ ng v i hai lu t ươ ươ ậ ớ A fi C 68 B fi C TTNT ớ ể ạ ỏ Ặ ậ ậ ắ ố V i quy t c này, ta có th lo i b hoàn toàn các lu t có phép n i HO C. Các lu t có
phép n i này th
ố ng làm cho thao tác x lý tr nên ph c t p.
ử ứ ạ ườ ở VIII.3.4. Lu t th a ừ ậ fi M t lu t d n A B đ c g i là th a n u có th suy ra lu t này t nh ng lu t còn l ậ ẫ ộ ượ ọ ừ ế ể ậ ừ ữ ậ ạ
i. fi B, B fi C, A fi C} thì lu t th 3 là lu t th a vì nó ừ ứ ậ ậ ậ
c suy ra t i. Ví d : trong t p các lu t g m {A
ụ
có th đ
ạ
ể ượ ậ ồ
2 lu t còn l
ậ ừ VIII.3.5. Thu t toán t i u t p lu t d n ậ ố ư ậ ậ ẫ ố
i u hóa t p lu t đã cho b ng cách lo i đi các lu t có phép n i ậ ậ ạ Thu t toán này s t
ằ
ẽ ố ư
HO C, các lu t hi n nhiên ho c các lu t th a.
ể ậ
Ặ ậ
ặ ừ ậ ậ Thu t toán bao g m các b c chính ậ ồ ướ ọ ế ả V i m i lu t r trong R
ậ ớ ỗ V i m i s ki n A
ỗ ự ệ ớ V Ph i(r)
ế ả ˛ V Trái(r) thì Lo i A ra kh i v ph i c a R. N u A
ế ỏ ế ả ủ ế ạ N u V Ph i(r) r ng thì lo i b r ra kh i h lu t d n : R = R – {r} ỏ ệ ậ ẫ ế ả ạ ỏ ế ỗ ˛ V i m i lu t r : X 1 (cid:218) X2 (cid:218) … (cid:218) Xn fi Y trong R ậ ớ ỗ V i m i i t 1 đ n n R := R + { Xi Y } ỗ ớ ừ ế R := R – {r} fi ừ V i m i lu t r thu c R
ậ ộ ớ ỗ N u V Ph i(r) BaoĐóng(V Trái(r), R-{r}) thì R := R – {r} ế ả ế ế ˛ ọ ế 1 (cid:217) A2, …, An fi V i m i lu t d n r : X : A
ậ ẫ ỗ ớ Y thu c R
ộ V i m i s ki n Ai thu c r ỗ ự ệ ộ ớ G i lu t r Y ậ 1 : X – Ai fi ọ 69 TTNT S = ( R – {r} ) ¨ {r1} N u BaoĐóng( X – Ai , S) BaoĐóng(X, R) thì lo i s ki n A ra kh i X ế ạ ự ệ ỏ ” VIII.4. u đi m và nh
Ư ể ượ c đi m c a bi u di n tri th c b ng lu t
ậ
ễ ứ ằ ủ ể ể u đi m Ư ể ễ ệ ố ữ ầ
t h u hi u trong nh ng tình hu ng h th ng c n
ố
ệ ữ
ữ ư
c. Nó có nh ng u
ượ
ữ ậ ặ
ự ệ
ự ệ ữ ể Bi u di n tri th c b ng lu t đ c bi
ứ ằ
ể
đ a ra nh ng hành đ ng d a vào nh ng s ki n có th quan sát đ
ư
ộ
đi m chính y u sau đây :
ế
ể ậ ấ ễ ể ườ
i Các lu t r t d hi u nên có th d dàng dùng đ trao đ i v i ng
ể ễ
dùng (vì nó là m t trong nh ng d ng t
ạ ổ ớ
nhiên c a ngôn ng ).
ữ ể
ủ ự ữ ộ c c ch suy lu n và gi i thích t các ể ễ ự ượ ơ ế ậ ả ừ Có th d dàng xây d ng đ
lu t. ậ Vi c hi u ch nh và b o trì h th ng là t ệ ố ệ ệ ả ỉ ươ ng đ i d dàng.
ố ễ Có th c i ti n d dàng đ tích h p các lu t m .
ờ ể ả ế ễ ể ậ ợ Các lu t th ậ ườ ng ít ph thu c vào nhau.
ộ ụ Nh ượ c đi m
ể ề ậ
ế ố ộ ẫ ứ ạ
ả ề ề Các tri th c ph c t p đôi lúc đòi h i quá nhi u (hàng ngàn) lu t sinh.
ứ
ỏ
Đi u này s làm n y sinh nhi u v n đ liên quan đ n t c đ l n qu n
ả
ề
ấ
ẽ
tr h th ng.
ị ệ ố ố ự ệ ố ạ ễ ặ ễ ậ c đi m mang tính ch ấ
ườ
t c ph
ơ ấ ả ươ
ể ể
ọ
ơ
ợ ứ ằ
ượ ủ ể i. ử
Th ng kê cho th y, ng
i xây d ng h th ng trí tu nhân t o thích s
ệ
d ng lu t sinh h n t
ng pháp khác (d hi u, d cài đ t) nên
ậ
ễ ể
ụ
h th
ng tìm m i cách đ bi u di n tri th c b ng lu t sinh cho dù có
ọ ườ
ph
ng pháp khác thích h p h n! Đây là nh
ươ
quan c a con ng
ủ ườ ậ ứ ủ
i h n kh năng tìm ki m c a ớ ạ ế ả ơ ở
ươ ớ ẽ
ề ệ ố ề ệ ặ ng trình đi u khi n. Nhi u h th ng g p khó khăn trong vi c đánh
ư ặ ệ ự ể
ậ ậ C s tri th c lu t sinh l n s làm gi
ch
giá các h d a trên lu t sinh cũng nh g p khó khăn khi suy lu n trên
lu t sinh. ậ 70 X.1. Khái ni m ệ TTNT ộ ạ ươ ễ ứ ầ ng pháp bi u di n tri th c đ u tiên và cũng là ph
ng pháp này s bi u di n tri th c d ữ
ễ ể ẽ ể ễ ể
ươ
ng (khái ni m) còn các cung cho bi ươ
ng
i d ng
ứ ướ ạ
t m i quan
ố
ế ệ M ng ng nghĩa là m t ph
pháp d hi u nh t đ i v i chúng ta. Ph
ấ ố ớ
m t đ th , trong đó đ nh là các đ i t
ố ượ
ỉ
ộ ồ ị
ng (khái ni m) này.
h gi a các đ i t
ệ ữ ố ượ ệ ệ chích chòe, chim, hót, cánh, t ổ có m t s m i quan h
ộ ố ố ệ Ch ng h n : gi a các khái ni m
ữ
ạ
nh sau : ẳ
ư Chích chòe là m t loài chim. ộ Chim bi t hót ế Chim có cánh Chim s ng trong t ố ổ Các m i quan h này s đ ẽ ượ ệ ố c bi u di n tr c quan b ng m t đ th nh sau :
ằ ộ ồ ị ư ự ể ễ ng đ ộ ạ ữ ạ ồ ị ể ữ ủ ụ
ậ ừ ưở
ậ
ắ c t
ượ ấ ả ữ
ủ ồ ị
ể ự
t c a m ng ng nghĩa so v i đ th thông th ể ệ ủ ườ
ữ ườ ồ ị ộ ệ ế ỉ
ạ ể ệ t gi a hai khái ni m t ố
ồ ị ề
ỉ ễ
ế ữ ươ ứ
ả ữ
ệ ữ ệ ữ ể ễ ả ườ ả ụ
ệ ệ ố ố ễ
ồ ị
ễ
có". bi t c nh ng m t
Do m ng ng nghĩa là m t lo i đ th cho nên nó th a h
ặ
ạ
m nh c a công c này. Nghĩa là ta có th dùng nh ng thu t toán c a đ th trên m ng
ạ
ng nghĩa nh thu t toán tìm liên thông, tìm đ
ng đi ng n nh t,… đ th c hi n các
ấ
ư
ệ
ữ
ng chính
c ch suy lu n. Đi m đ c bi
ớ ồ ị
ạ
ặ
ơ ế
ậ
) cho các cung. Trong đ th tiêu chu n,
có, làm, là, bi
là vi c gán m t ý nghĩa (
ẩ
t, ...
ế
ộ
ệ
ấ ả
t c
ự liên h ệ gi a hai đ nh đó và t
vi c có m t cung n i gi a hai đ nh ch cho bi
t có s
ữ
ỉ
ỉ
ữ
các cung trong đ th đ u bi u di n cho cùng m t lo i liên h . Trong m ng ng nghĩa,
ữ
ạ
ộ
ệ như
ng ng có s liên h
cung n i gi a hai đ nh còn cho bi
ệ
ố
ự
c s l
th nào
ớ ượ ố ượ
ng
. Vi c gán ng nghĩa vào các cung c a đ th đã giúp gi m b t đ
ủ ồ ị
ế
ư
đ th c n ph i dùng đ bi u di n các m i liên h gi a các khái ni m. Ch ng h n nh
ạ
ẳ
ệ
ố
ồ ị ầ
ng, ta ph i dùng đ n 4 lo i đ th cho 4
trong ví d trên, n u s d ng đ th thông th
ạ ồ ị
ế
ế ử ụ
m i liên h : m t đ th đ bi u di n m i liên h "
ệ là", m t đ th cho m i liên h
ố
ộ ồ ị
ộ ồ ị ể ể
t" ế và m t cho "
"làm", m t cho "
ộ
ộ 71 trong khái ạ ể ị ủ ế ừ ừ ở ạ ữ ộ
ệ ư ố ữ ẽ ặ ẳ ộ ỉ ạ
ữ ả ờ M t đi m khá thú v c a m ng ng nghĩa là tính k th a. B i vì ngay t
ữ
ệ "là") nên có nhi uề
ni m, m ng ng nghĩa đã hàm ý s phân c p (nh các m i liên h
ấ
ự
ạ
đ nh trong m ng m c nhiên s có nh ng thu c tính c a nh ng đ nh khác. Ch ng h n
ủ
ỉ
theo m ng ng nghĩa
i "có" cho câu h i : "Chích chòe có
ỏ
làm t ạ
ở
không?". Ta có th kh ng đ nh đ ữ
trên, ta có th d dàng tr l
ể ễ
ể ế
c đi u này vì đ nh "chích chòe" có liên k t ượ ề ẳ ổ ị ỉ TTNT ỉ ớ ỉ ế ỉ ạ ẽ ế ể c ki u ạ
ể "suy lu n" ậ mà ta v a th c hi n b t ngu n t
ừ ậ ớ ỉ
ổ
ậ
thu t toán "loang" hay "tìm
ồ ừ
ạ ữ ặ
c r t nhi u phép suy di n t t" v i đ nh "làm t " nên suy ra đ nh
"là" v i đ nh "chim" và đ nh "chim" l
i liên k t "bi
ổ
ế
ạ
t" v i đ nh "làm t ". (N u đ ý, b n s nh n ra
"chích chòe" cũng có liên k t lo i "bi
ớ ỉ
ế
ế
đ
ắ
ệ
ự
ượ
liên thông" trên đ th !). Chính đ c tính k th a c a m ng ng nghĩa đã cho phép ta có
ế ừ ủ
th th c hi n đ
ễ ừ ữ nh ng thông tin s n có trên m ng.
ẵ ồ ị
ệ ượ ấ ể ự ề ạ 72 ạ ể ễ ườ
ượ ườ ố ư ị ừ ừ ng khó khăn (đ c bi ơ ữ
ữ
ể ữ ề ấ
ạ ữ ặ ặ ạ ệ ố ớ
ủ ế
ể
ng pháp bi u di n khác. i nh ng khi
Tuy m ng ng nghĩa là m t ki u bi u di n tr c quan đ i v i con ng
ư
ự
ộ
ữ
ể
ố ớ
ễ
c bi u di n
ng đ
đ a vào máy tính, các đ i t
ng và m i liên h gi a chúng th
ể
ệ ữ
ố ượ
ư
(nh v t ). H n n a, các thao tác tìm ki m trên
i d ng nh ng phát bi u đ ng t
d
ế
ướ ạ
ộ
ể
ữ
ướ ớ
c l n).
t đ i v i nh ng m ng có kích th
m ng ng nghĩa th
ặ
ạ
ườ
ữ
ạ
c dùng ch y u đ phân tích v n đ . Sau đó, nó
Do đó, mô hình m ng ng nghĩa đ
ạ
ượ
ẽ
c chuy n đ i sang d ng lu t ho c frame đ thi hành ho c m ng ng nghĩa s
s đ
ậ
ổ
ẽ ượ
c dùng k t h p v i m t s ph
đ
ượ ể
ế ợ ộ ố ươ ể ễ ớ TTNT X.2. u đi m và nh Ư ể ượ c đi m c a m ng ng nghĩa
ạ ữ ủ ể u đi m Ư ể ạ ữ ấ ạ ộ t. M ng ng nghĩa r t linh đ ng, ta có th d dàng thêm vào m ng các
đ nh ho c cung m i đ b sung các tri th c c n thi
ỉ ể ễ
ứ ầ ớ ể ổ ế ặ M ng ng nghĩa có tính tr c quan cao nên r t d hi u.
ự ấ ễ ể ữ ạ ạ ữ ấ ừ M ng ng nghĩa cho phép các đ nh có th th a k các tính ch t t
ỉ
đ nh khác thông qua các cung lo i "là", t
ạ
ỉ
"ng m" gi a nh ng đ nh không có liên k t tr c ti p v i nhau. các
ể ừ ế
ế
đó, có th t o ra các liên k t
ừ
ế ự ế ể ạ
ớ ữ ữ ầ ỉ nhiên theo cách th c con ng i ghi ạ ộ ữ ự ứ ườ M ng ng nghĩa ho t đ ng khá t
nh n thông tin. ạ
ậ Nh ượ c đi m
ể ẫ ế ư ẩ ị ủ ể ạ ạ ỉ Cho đ n nay, v n ch a có m t chu n nào quy đ nh các gi
i h n cho
ớ ạ
ộ
các đ nh và cung c a m ng. Nghĩa là b n có th gán ghép b t kỳ khái
ấ
ni m nào cho đ nh ho c cung!
ỉ ệ ặ ẽ ế ể ẫ ừ ế ố ổ ẫ ộ ư
ứ ư ể
ẳ
ể ế ế ở ạ
ạ
ế
ậ ằ
ữ ự ộ ệ ọ ể
ở ứ ạ
ẫ ằ
ả ế ạ ừ ế
ố
ộ ả Tính th a k (v n là m t u đi m) trên m ng s có th d n đ n nguy
c mâu thu n trong tri th c. Ch ng h n, n u b sung thêm nút "Gà" vào
ơ
t "bay"!. S dĩ có
m ng nh hình sau thì ta có th k t lu n r ng "Gà" bi
ạ
đi u này là vì có s không rõ ràng trong ng nghĩa gán cho m t nút c a
ủ
ề
m ng. B n đ c có th ph n đ i quan đi m vì cho r ng, vi c sinh ra
ố
ả
ể
ạ
t k m ng d ch không ph i do khuy t đi m
mâu thu n là do ta thi
ể
ế ế ạ
c a m ng!. Tuy nhiên, xin l u ý r ng, tính th a k sinh ra
ề
r t nhi u
ằ
ủ
ấ
ư
ợ
m i liên "ng m" nên kh năng n y sinh ra m t m i liên h không h p
ệ
ả
ầ
ố
là r t l n!
l
ấ ớ
ệ ầ ể ể ễ ạ ữ
ng minh trên m ng ng c th hi n t không đ ư
ệ ủ ụ ằ
ể ệ ườ ề ờ ự ạ H u nh không th bi n di n các tri th c d ng th t c b ng m ng ng nghĩa vì các
ứ ạ
ữ
khái ni m v th i gian và trình t
ượ
nghĩa. X.3. M t ví d tiêu bi u ụ ộ ể ộ ươ ng đ i cũ và có nh ng y u đi m nh ng m ng ng
ế ữ ư ạ ố 73 i bài toán t đ ng. Dù là m t ph
ng pháp t
nghĩav n có nh ng ng d ng vô cùng đ c đáo. Hai lo i ng d ng tiêu bi u c a m ng
ạ
ữ ứ
ẫ
ng nghĩa là ng d ng x lý ngôn ng t
ụ ụ
nhiên và ng d ng gi
ả
ứ ữ
ể ủ
ự ộ ể
ạ ứ
ụ ươ
ụ
ử ộ
ữ ự ữ ứ TTNT ữ ự ử ạ ữ đó có th ph n nào "hi u" đ
ầ ể
c ý nghĩa
ượ ể i khoái trá" nhiên, m ng ng nghĩa có th giúp máy
có thể ể
ườ "Châu đang đ c m t cu n sách dày và c
ộ ố Ví d 1ụ : Trong ng d ng x lý ngôn ng t
ụ
ứ
c c u trúc c a câu đ t
tính phân tích đ
ể ừ
ủ
ượ ấ
c a câu. Ch ng h n, câu
ạ
ọ
ẳ
ủ
đ
ộ
ằ
ễ
ượ c bi u di n b ng m t m ng ng nghĩa nh sau :
ạ ữ ư ể i bài toán tam giác t ng quát Ví d 2 : Gi
ụ ả ổ ể ẽ ụ ố ng đ ư ể
ề ơ
ườ ạ ầ
ậ ạ
ạ ữ
ườ ạ
ề ế ệ ạ ầ ể ế ạ
ầ ầ ạ ả ạ
ồ ậ
ố ượ ở ặ i? Li u có m t ch ớ
i đ ộ
ạ
ả ượ t
c ộ ng trình này l ộ
i khá đ n gi n. Bài toán này s đ
ạ ươ ả ơ Chúng ta s không đi sâu vào ví d 1 vì đây là m t v n đ quá ph c t p đ có th trình
ề
ộ ấ
ứ ạ
bày trong cu n sách này. Trong ví d này, chúng ta s kh o sát m t v n đ đ n gi n
ả
ẽ
ả
ụ
ộ ấ
c
h n nh ng cũng không kém ph n đ c đáo. Khi m i h c l p trình, b n th
ượ
ạ
ớ ọ ậ
ộ
ơ
giáo viên cho nh ng bài t p nh p môn đ i lo i nh
ư "Cho 3 c nh c a tam giác, tính
ủ
ậ
ng cao", "Cho góc a, b và c nh AC. Tính chi u dài trung tuy n", ...
chi u dài các đ
ề
V i m i bài t p này, vi c b n c n làm là l y gi y bút ra tìm cách tính, sau khi đã xác
ấ
ậ
ấ
ỗ
ớ
ng trình. N u có 10 bài, b n ph i
đ nh các b
ả
c tính toán, b n chuy n nó thành ch
ươ
ướ
ị
i vi c tính toán r i l p trình 10 l n. N u có 100 bài, b n ph i làm 100 l n. Và
làm l
ế
ệ
ạ
ng bài toán thu c lo i này là r t nhi u! B i vì m t tam giác
tin bu n cho b n là s l
ạ
ề
ấ
ộ
ồ
ạ
m i l n g p m t bài toán m i, b n đ u ph i
khác nhau!. Không l
ấ ả 22 y u t
có t
ả
t c
ộ
ế ố
ẽ ỗ ầ
ề
t c
đ ng gi
l p trình l
ấ ả (vài
ng trình t ng quát có th t
ổ
ạ
ể ự ộ
ươ
ệ
ậ
ạ
i là CÓ ! Và ng c
ngàn!) nh ng bài toán tam giác thu c lo i này không? Câu tr l
ả ờ
ạ
ữ
nhiên h n n a, ch
ả ằ
i b ng
c gi
ẽ ượ
ơ ữ
m ng ng nghĩa.
ữ ạ 3 22 -1 (kho ng vài ngàn liên quan đ n c nh và góc c a tam giác. Đ xác đ nh m t tam giác hay ế ạ ể ị ế ố
ự ầ ộ ả
) cách đ xây d ng hay xác đ nh m t tam giác. ộ
trong đó ph i có y u t
ế ố ạ
ị c nh. Nh v y
ư ậ
ộ Có 22 y u t
ủ
đ xây d ng m t 1 tam giác ta c n có 3 y u t
ế ố
ể
có kho ng Cả
ể
ả
Theo th ng kê, có kho ng 200 công th c liên quan đ n c nh và góc 1 tam giác.
ứ
ả ự
ế ạ ố i bài toán này b ng công c m ng ng nghĩa, ta ph i s d ng kho ng 200 đ nh ằ ả ả ử ụ
c a tam giác. M ng ng ữ
ể ứ ụ ạ
ỉ ứ ạ ỉ
ữ ế ố ủ Đ gi
ể ả
đ ch a công th c và kho ng 22 đ nh đ ch a các y u t
ả
ể ứ
nghĩa cho bài toán này có c u trúc nh sau :
ấ ư Đ nh c a đ th bao g m hai lo i : ủ ồ ị ạ ồ ỉ 74 ữ ậ ệ ằ Đ nh ch a công th c (ký hi u b ng hình ch nh t)
Đ nh ch a y u t ứ
ứ
c a tam giác (ký hi u b ng hình tròn)
ệ
ứ ế ố ủ ằ ỉ
ỉ TTNT ư ế còn l ị ủ ẳ ượ
0 thì khi bi c a tam giác, ta gi
ạ
c hai góc, ta s tính đ ế
t
ằ
i. Ch ng h n nh trong công th c
ứ
ư
c góc còn l i. * L u ý : trong m t công th c liên h gi a n y u t
ứ
ộ
thì s tính đ
giá tr c a n-1 y u t
ẽ
ế ố
t ng 3 góc c a tam giác b ng 180
ằ
ổ ế ố ủ
ệ ữ
c giá tr c a y u t
ị ủ ế ố
t đ
ế ượ đ nh r ng n u đã bi
ả ị
ạ
ượ ủ ẽ ạ ế ữ ậ ệ đ nh hình tròn đ n đ nh hình ch nh t cho bi
ỉ
ữ
ườ ấ
tam giác xu t
ặ
ng h p cung n i gi a hai đ nh hình tròn ho c t y u t
ế ế ố
ỉ ợ ố Cung : ch n i t
ỉ ố ừ ỉ
hi n trong công th c nào
ứ
cung n i gi a hai đ nh hình ch nh t).
ỉ
ữ (không có tr
ữ ậ ố C ch suy di n th c hi n theo thu t toán "loang" đ n gi n sau : ơ ế ự ễ ệ ậ ả ơ ỉ ữ
đã cho ban đ u (nh ng ầ B1 : Kích ho t nh ng
y u t
ế ố ữ đ nh hình tròn
ạ
đã có giá tr )
ị t c ữ ể B2 : L p l
nh ng đ nh ng v i nh ng y u t
kích ho t đ c sau cho đ n khi kích ho t đ
ạ ượ ấ ả
c t
i b
ế
ặ ạ ướ
c n tính ho c không th
ữ
ỉ ứ
ặ
ế ố ầ
ớ
c b t kỳ đ nh nào n a.
ữ
ỉ
ạ ượ ấ ộ ỉ
ỉ ạ ỉ ố ớ n đ nh hình tròn
ỉ
ạ thì kích ho t đ nh
i này thông qua ạ ạ ỉ
đ nh hình ch nh t). N u ế m t đ nh hình ch nh t có cung n i v i
mà n-1 đ nh hình tròn đã đ
hình tròn còn l
công th c
ứ ở ỉ ữ ậ
c kích ho t
ượ
i (và tính giá tr đ nh còn l
ị
ữ ậ 75 Gi s ta có m ng ng nghĩa đ gi i bài toán tam giác nh hình sau ả ử ể ả ữ ạ ư TTNT ủ ề ạ ườ c thi hành c a thu t toán nh và chi u dài c nh a c a tam giác. Tính chi u dài đ
ậ ề
ủ ướ ữ ớ ng cao
ư Ví d : ụ "Cho hai góc a, b
hC". V i m ng ng nghĩa đã cho trong hình trên. Các b
ạ
sau : a, b, B t đ u : đ nh a c a đ th đ c kích ho t. ắ ầ ỉ ủ ồ ị ượ ạ ừ Công th c (1) đ
ứ
th c (1) tính đ c kích ho t (vì
c c nh b. Đ nh b đ a đ
c kích ho t. ượ
ượ ạ ạ
ỉ ứ a, b,
ượ c kích ho t). T công
ạ
ượ
ạ a, b c kích ho t (vì c góc ượ ạ ). T công th c (4) tính đ
ứ ừ ượ d Công th c (4) đ
ứ c kích ho t). T ạ ừ Công th c (2) đ
ượ
ứ
công th c (2) tính đ
ứ c kích ho t (vì 3 đ nh
ạ
c đ
c c nh
ượ ạ ỉ
c. Đ nh
ỉ b, d ,
ượ b đ
ượ
c kích ho t.
ạ ỉ ạ ừ ạ
c di n tích ượ
c kích ho t. Công th c (3) đ
ượ
ứ
công th c (3) tính đ
ứ c kích ho t (vì 3 đ nh a, b, c đ
ượ
ượ S. Đ nh S đ
ỉ ệ c kích ho t) . T
ạ ượ ạ c kích ho t). T công
ạ ừ Công th c (5) đ
ứ
th c (5) tính đ ứ c kích ho t (vì 2 đ nh S, c đ
ỉ
ượ
c kích ho t.
ạ c hC. Đ nh hC đ
ỉ ượ ượ Giá tr hC đã đ c tính. Thu t toán k t thúc. ị ượ ế ậ ng trình, ta có th cài đ t m ng ng nghĩa gi ươ ể ữ ặ ạ ả ằ
i bài toán tam giác b ng V m t ch
ề ặ
m t m ng hai chi u A trong đó :
ả
ộ ề ỗ ộ ứ ứ ộ ớ C t ộ : ng v i công th c. M i c t ng v i m t công th c tam giác khác
ớ
nhau (đ nh hình ch nh t). ứ
ữ ậ ứ
ỉ tam giác. M i dòng ng v i m t y u t tam giác ứ ộ ế ố ứ ỗ ớ Dòng : ng v i y u t
ớ ế ố
khác nhau (đ nh hình tròn).
ỉ tam ứ ứ ớ ộ j có y u t ế ố -1 nghĩa là trong công th c ng v i c t
= 0. i A[i,j] A[i, j] =
Ph n t
ầ ử
giác ng v i c t
ứ ớ ộ i. Ng c l
ượ ạ ộ ỉ ị ủ ạ ặ ệ
tam giác b ng 1. Đ th c hi n thao tác "kích ho t" m t đ nh hình tròn, ta đ t giá tr c a toàn dòng ng
ứ
ể ự
v i y u t
ớ ế ố ằ ứ ể ể ế ố ư ể ề
hay ch a (nghĩa là ki m tra đi u ỉ ộ
ữ ậ ỉ ỉ c kích ho t ố ạ "), ta ch vi c l y
ỉ ệ ấ hi uệ gi a ữ t ngổ s ô có giá tr b ng 1 và
ớ ị ằ
ả ằ ể ế ế Đ ki m tra xem m t công th c đã có đ n-1 y u t
ủ
ki n "ệ đ nh hình ch nh t có cung n i v i n đ nh hình tròn mà n-1 đ nh hình tròn đã
ố ớ
đ
t ng ổ s ô có
ố
ượ
giá tr ị -1 trên c t ng v i công th c c n ki m tra. N u k t qu b ng
n, thì công th cứ
ộ ứ
ứ ầ
.
đã có đ n-1 y u t
ế ố ủ 76 Tr l i m ng ng nghĩa đã cho. Quá trình thi hành kích ho t đ c di n ra nh sau : ở ạ ạ ượ ữ ạ ư ễ TTNT M ng bi u di n m ng ng nghĩa ban đ u ữ ể ễ ả ạ ầ a b d a, b , a c a đ th đ c kích ho t. Kh i đ u :
ở ầ đ nh
ỉ ủ ồ ị ượ ạ a b d 77 b s đ c kích ho t. Trên c t ộ (1), hi u (1+1+1 – (-1)) = 4 nên dòng ệ ẽ ượ ạ TTNT a b d Trên c t (4), hi u (1+1+1 – (-1)) = 4 nên dòng d s đ c kích ho t. ệ ộ ẽ ượ ạ a b d Trên c t (2), hi u (1+1+1 – (1)) = 4 nên dòng c đ c kích ho t. ệ ộ ượ ạ 78 TTNT a b d Trên c t (3), hi u (1+1+1 – (-1)) = 4 nên dòng S đ c kích ho t. ệ ộ ượ ạ a b d Trên c t (5), hi u (1+1 – (1)) = 3 nên dòng hC đ c kích ho t. ệ ộ ượ ạ vi c tính ra giá tr các y u t i ạ ở ệ ỉ ừ ị ớ ủ ệ ố
ả
t, v i m t chút s a đ i, ch
ộ
ế 79 Kh năng c a h th ng này không ch d ng l
thi
ử ổ
bài toán và th m chí còn có th ch n đ
ậ
nghĩa là cách gi
ả ử ụ ế ố ầ
c n
ứ ủ
i hình th c c a
ng trình này còn có th đ a ra cách gi
ả
ể ư
i u hi u theo
i hình th c t
i u (t
ố ư
ể
ứ ố ư
ả
ư ậ
i s d ng nh ng công th c đ n gi n nh t). S dĩ có th nói nh v y
ể
ở
ấ
ả ươ
ể ọ ượ
ữ c cách gi
ứ ơ TTNT ế ậ ủ ả ấ ể ả ứ ạ ủ ộ ườ ượ ề ộ . Do đó, khi đ tạ
c gi
i pháp t
ể ọ ượ
ứ
ộ
ừ ả ị
ng đ
ụ ừ * ố
ng pháp suy lu n b ng cách v n d ng thu t toán A v i ng ạ
ớ ướ ượ ậ ụ ằ h=0 đ cóể ậ
ng đi" t ậ
c l ự c l
ng h=0 vì hai lý do sau (1) không
ọ ướ ượ
ộ
i h n đ r ng tìm ki m (2) xây d ng m t
ế
ộ ộ
ớ ạ
t là làm sao đ h th ng không
ể ệ ố
ệ
ặ i u. Ta ch n
ố ư
ầ
ả
ng đ i khó khăn, đ c bi
ố ươ tìm ki m theo chi u r ng
vì cách suy lu n c a ta trong bài toán này là
đ n k t qu , ta có th có r t nhi u cách khác nhau. Đ có th ch n đ
ố
i
ế
ề
ế
ể
c đ "ph c t p" c a m t công th c. M t trong nh ng
ữ
u, b n c n ph i đ nh nghĩa đ
ạ ầ
ượ ộ
ư
c dùng là s l
tiêu chu n th
ng phép nhân, chia, c ng, tr , rút căn, tính sin,
ẩ
ộ
ố ượ
ộ ứ ạ
c áp d ng trong công th c. Các phép tính sin, cos và rút căn có đ ph c t p
cos, ... đ
ứ
ượ
cao nh t, k đ n là nhân chia và cu i cùng là c ng tr . Cu i cùng b n có th c i ti n
ể ả ế
ấ
ộ
ố
ế ế
l
i ph
ạ
ươ
c "đ
th ch n ra đ
ượ
ườ
ể ọ
gian bài toán nh nên ta không c n ph i gi
ỏ
ng nh v y là t
c l
ướ ượ
ư ậ
đánh giá quá cao h. XI.1. Khái ni m ệ Dưới một khía cạnh nào đó, người ta có thể xem phương pháp biểu diễn tri thức bằng
frame chính là nguồn gốc của ngôn ngữ lập trình hướng đối tượng. Ý tưởng của phương
pháp này là "thay vì bắt người dùng sử dụng các công cụ phụ như dao mở để đồ hộp,
ngày nay các hãng sản xuất đồ hộp thường gắn kèm các nắp mở đồ hộp ngay bên trên
vỏ lon. Như vậy, người dùng sẽ không bao giờ phải lo lắng đến việc tìm một thiết bị để
mở đồ hộp nữa!". Cũng vậy, ý tưởng chính của frame (hay của phương pháp lập trình
hướng đối tượng) là khi biểu diễn một tri thức, ta sẽ "gắn kèm" những thao tác thường gặp
trên tri thức này. Chẳng hạn như khi mô tả khái niệm về hình chữ nhật, ta sẽ gắn kèm
cách tính chu vi, diện tích. ữ ệ ộ ấ ứ ự ế
ng đ i t ụ ể ộ ố
t c nh ng tri th c liên quan đ n m t đ i
ng
ố ượ ứ
ệ
ng). Ng i v i các ướ
c l ượ ạ ớ ấ ả ữ
ẽ ế
ng đ i t
ố ượ
ế ố ủ ậ
ứ ể ể ố ươ ướ
c đ c p đ n, frame "đóng gói" toàn b m t đ i
ộ ộ ố
ượ ề ậ
ng, tình hu ng ho c c m t v n đ ph c t p thành m t th c th duy nh t có c u
ấ
ộ
ấ
ự
ề ứ ạ
ứ ề ộ ố
ng đ i l n tri th c v m t đ i
ố ớ
ố ượ
khác. Do đó, frame có th giúp ta
ể
ữ ộ
ặ Frame là m t c u trúc d li u ch a đ ng t
ng c th nào đó. Frames có liên h ch t ch đ n khái ni m h
t
ệ ặ
ượ
(th c ra frame là ngu n g c c a l p trình h
ồ
ự
ph
ng pháp bi u di n tri th c đã đ
ễ
ươ
t
ặ ả ộ ấ
ượ
trúc. M t frame bao hàm trong nó m t kh i l
t
ượ
mô t ộ
ự ệ
khá chi ti ị
t m t đ i t ng. ng t
ng, s ki n, v trí, tình hu ng ho c nh ng y u t
ế ố
ả ố
ộ ố ượ ế ữ ẩ ặ
ễ
c xây d ng d a trên nh ng kinh nghi m ho c các đ c đi m đã đ ượ
ự ữ
c hi u bi
ể ể ể
ữ ượ ệ ứ
c dùng đ bi u di n nh ng tri th c "chu n" ho c nh ng tri th c
ứ
t c n
ế ặ
ặ
i chúng ta v n luôn "l u tr " r t nhi u các tri th c chung mà
ữ ấ ể
ề ặ
ư ủ ứ ả
i ữ ấ ng đ
Frame th
ườ
đ
ượ
ự
k . B não c a con ng
ẫ
ẽ ộ
khi c n, chúng ta có th "l y ra" đ v n d ng nó trong nh ng v n đ c n ph i gi
ầ
ả
ể ậ ụ
quy t. Frame là m t công c thích h p đ bi u di n nh ng ki u tri th c này.
ế ườ
ể ấ
ụ ề ầ
ứ ể ể ữ ễ ể ộ ợ 80 XI.2. C u trúc c a frame ủ ấ TTNT m t ả ộ đ i t ộ
slot và facet. M t ộ slot là m t thu c tính đ c t ng (object)
ố ượ
ộ
ộ ượ ể M i m t frame mô t
ỗ
b n là
ả
frame. Ví d : trong frame mô t . M t frame bao g m 2 thành ph n c
ồ
ng đ
ng ầ ơ
ở
c bi u di n b i
ễ
. xe h i, có hai slot là ộ
đ i t
ặ ả ố ượ
tr ng l
ọ ượ và lo i máy ụ ạ ả ơ ể ứ ặ ộ b i slot. ề facet. Các facet (đôi lúc đ
m t s thông tin ho c th t c liên quan đ n thu c tính đ
ế ủ ụ c g i là slot "con")
c mô t
ả ở M i slot có th ch a m t ho c nhi u
ỗ
đ c t
ặ ả ộ ố
ộ
ặ
Facet có nhi u lo i khác nhau, sau đây là m t s facet th
ề ượ ọ
ượ
ng g p.
ặ ộ ố ườ ạ : cho bi Value (giá tr ) ị t ế giá tr ị c a thu c tính đó (nh xanh, đ , tím vàng n u slot là
ư ủ ế ộ ỏ màu xe). Default (giá tr m c đ nh) : h th ng s t ị ặ ị
ẳ ẽ ự ộ
ẳ ề ỗ
ng bánh. ế
đ ng s d ng giá tr trong facet này n u
ị
nào!). Ch ng h n trong frame v xe, xét slot v
ề
Slot này s có giá tr 4. Nghĩa là, m c đ nh m t chi c xe h i s có 4
ộ ử ụ
ạ
ặ ị ơ ẽ ế ẽ ệ ố
slot là r ng (nghĩa là ch ng có đ c t
ặ ả
s l
ị
ố ượ
bánh! ng t ế ị ế ậ
t giá tr slot có th nh n ể ị : (t
nh ki u bi n), cho bi
ươ
nh ng lo i giá tr gì (nh s nguyên, s th c, ch cái, ...)
ư ố Range (mi n giá tr )
ề
ữ ự ư ể
ố ự ữ ạ ị c thi hành khi m t giá tr trong slot đ ả ộ ượ
c ộ If added : mô t
thêm vào (ho c đ c hi u ch nh). Th t c th ng đ t d ặ ượ m t hành đ ng s đ
ỉ ẽ ượ
ủ ụ ộ
c vi
ế ướ ạ ị
i d ng m t script.
ộ ượ ườ ệ c s d ng khi slot không có giá tr nào. Facet mô t m t hàm đ tính ượ ử ụ ị ả ộ ể If needed : đ
ra giá tr c a slot.
ị ủ Frame MÁY Frame : XE H IƠ Thu c l p ộ ớ : ph ươ ng ti n v n chuy n.
ậ ệ ể Tên nhà s n xu t :
ả ấ Audi Model : 5000 Turbo Xy-lanh : 3.19 inch
T l
nén : 3.4
ỷ ệ
inche
Xăng :
TurboCharger
Mã l c : 140 hp ự Qu c gia c a nhà s n xu t ấ : Đ cứ ủ ả ố : Sedan Lo i xe
ạ ng : 3300lb Tr ng l
ọ ượ 4 (default) S l
ố ượ ng c a :
ử H p s đ ng ộ ố : 3 s t ố ự ộ 81 ng bánh : 4 (default) S l
ố ượ TTNT Máy (tham chi u đ n frame Máy)
ế ế Ki u ể : In-line, overhead cam : 5 S xy-lanh
ố Kh năng tăng t c ả ố 0-60 : 10.4 giây ¼ d m : 17.1 giây, 85 mph. ặ XI.3. Tính k th a ế ừ , m t h th ng trí tu nhân t o th ng s d ng nhi u frame đ c liên ự ế ượ ệ ộ ệ ố
ộ ử ụ
ể ề
ị ủ ườ
ữ ộ Trong th c t
ạ
k t v i nhau theo m t cách nào đó. M t trong nh ng đi m thú v c a frame là tính phân
ế ớ
c p. Đ c tính này cho phép k th a các tính ch t gi a các frame.
ế ừ
ấ ữ ấ ặ ọ ơ ả ạ trên cùng t ng cao nh t. Các frame n m ở ươ ứ ấ Hình sau đây cho th y c u trúc phân c p c a các lo i hình hình h c c b n. G c c a
ố ủ
ằ ở ướ
cây
i
d
ấ
ớ
ể
m c th p h n có th
cùng (không có frame con nào) g i là lá. Nh ng frame n m
ơ
t c nh ng tính ch t c a nh ng frame cao h n.
th a k t ấ ủ
ấ ấ
ng ng v i m c đ tr u t
ứ ộ ừ ượ
ữ
ọ
ấ ủ ằ ở ứ
ơ ừ ế ấ ả ữ ữ 82 ấ ẽ ề ự ữ ể ồ ng, frame cha s bao g m các
ẽ
ị ự ự ủ ấ
đ nh nghĩa
ị
ộ ứ ộ ổ
ộ Các frame cha s cung c p nh ng mô t
t ng quát v th c th . Frame có c p càng cao
ả ổ
thì m c đ t ng quát càng cao. Thông th
ườ
c a các thu c tính. Còn các frame con s ch a đ ng giá tr th c s c a các thu c tính
ẽ ứ ự
ủ
này. TTNT M t ví d bi u di n các đ i t ụ ể ố ượ ộ ễ ng hình h c b ng frame
ọ ằ Các ki u d li u c b n : ể ữ ệ ơ ả Area : numeric; // di n tích ệ Height : numeric; //chi u cao ề Perimeter : numberic; //chu vi Side : numeric; //c nhạ Diagonal : numeric; //đ ng chéo ườ Radius : numeric; //bán kính Angle : numeric; //góc Diameter : numeric; //đ ng kính ườ pi : (val:numeric = 3.14159) 83 Frame : CIRCLE (hình tròn) TTNT r : radius; s : area; p : perimeter; d : diameter; d = 2 · r; s = pi · r2; p = 2 · pi · r; Frame RECTANGLE (hình ch nh t) ữ ậ b1 : side; b2 : side; s : area; p : perimeter; s = b1 · b2; 2; p = 2 · (b1+b2); 2 + b2 d2 = b1 Frame SQUARE (hình vuông) Là : RECTANGLE b1 = b2; Frame RHOMBUS (hình thoi) b : side; d1 : diagonal; d2 : diagonal; 84 s : area; TTNT p : perimeter; alpha1 : angle; alpha2 : angle; h : height; cos (alpha2/2) · d1 = h; s = d1 · d2 / 2; p = 4 · b; s = b · h; cos (alpha2/2)/(2· b) = d2; ể ễ ọ ễ ể ể ậ ụ ọ ơ ả ạ ả ể
k
ng trình ụ
x, hãy vi t ch ệ
ề ươ ế ng hình h c khác theo cách này. Sau khi
Chúng ta có th d dàng khai báo các đ i t
ố ượ
đã bi u di n các tri th c v các hình hình h c c b n xong, ta có th v n d ng nó đ
ứ ề
i các bài toán hình h c, ch ng h n bài toán tính di n tích. Ví d , cho hình vuông
gi
ẳ
ọ
t c nh hình vuông có chi u dài là
ộ ế c, bi
và vòng tròn n i ti p
ế ạ
đ tính di n tích ph n tô đen.
ầ
ệ
ể ệ ễ ấ ằ ươ ạ ệ
t m t ch
ộ
ệ ợ ng trình c a chúng ta tr nên r t g n nh . B n hãy l u ý 3 l nh đ
ấ ọ ượ ư ệ ở thi t ầ ẽ ặ ả ạ
gi thi t ệ
ộ ế
ư
ủ
i. L nh đ u tiên s "đ c t " l
ụ ướ
ệ ng trình bình th
ể
ậ
c in đ m
ế "hình vuông có c nh v i
ớ
ạ
ộ ế , còn l nh th 3 mô t
ứ
ệ ả ệ
D th y r ng, di n tích ph n tô đen chính là hi u gi a di n tích hình vuông và di n
ữ
ầ
ng
tích hình tròn n i ti p. Dĩ nhiên là b n cũng có th vi
ườ
ể ế
đ tính toán, nh ng khi đã "tích h p" các tri th c v tính di n tích bên trong bi u di n,
ễ
ứ ề
ể
ch
ẹ ạ
ươ
trong ví d d
i gi
ệ
ả
, l nh k ti p đ c t
chi u dài x"
ế "hình tròn n i ti p"
ế ế
vi c tính di n tích b ng cách l y di n tích hình vuông tr cho di n tích hình tròn.
ấ
ằ
ệ ặ ả ả
ệ ề
ệ ừ ệ VAR x, s : numeric; k : square; c : circle; BEGIN 85 TTNT k.b1 := x; c.d := x; s := k.s – c.s; END. ng trình máy tính c a chúng ta đã ho t đ ng khá gi ng nh vi c "mô ố ươ ạ ộ ư ệ ủ
ữ ự khá chính xác (ch ng h n nh : ừ ượ ộ
ạ ả
ng đ
ề ạ b ng các ngôn t
là 5, chi u dài c nh
ừ đ nh A
ỉ
ự
ể nhiên. Hãy nghĩ xa h n m t tí. Các bài toán hình
ơ
ư cho m t ộ tam
ẳ
ề ặ
đáy là 6, ....). Do đó, v m t
ữ ể ộ ừ i ạ ng trình đ "hi u" nh ng đ bài
ề
ể
i dùng có th hoàn toàn nh
ờ
ườ
ể
i gi
l
ả ờ
ị
cho vi c gi ả cho máy tính (ch không
c đi ướ
i các bài toán hình ệ ả nhiên! Nh v y, ch
ư ậ
t " các gi
i bài toán b ng ngôn ng t
ả
ằ
c mô t
h c th
ườ
ọ
ả ằ
xu t phát t
giác v i ớ chi u cao
ề
ấ
nguyên tác, chúng ta v n có th xây d ng m t ch
ươ
ẫ
này (theo nh cách mà chúng ta v a làm). Sau đó, ng
ư
mô t
i giúp bài toán cho mình b ng cách
máy tính gi
ứ
ằ
ả
c n ph i l p trình). B n có c m giác đi u này th t thú v không? Đây chính là b
ả
ậ
ề
ả ậ
ầ
tr giúp
đ u tiên trong vi c t o ra m t ch
ng trình
ộ
ợ
ươ
ầ
h c trên máy tính v i giao ti p b ng ngôn ng t
ữ ự
ằ
ế
ọ ệ ạ
ớ ạ ể ứ ệ ố ườ ườ ng cài đ t m t m ng ng
ộ ặ ữ
ạ
TRIANGLE, i ta th
ể ẳ ộ ạ
ố ư ở ữ ụ ộ ữ ạ tam giác (thay vì s d ng các công th c liên h ế ố ử ụ ví d trong ph n m ng ng nghĩa)
ệ ứ Đ tăng thêm s c m nh cho h th ng này, ng
nghĩa ngay bên trong m i frame. Ch ng h n, ta có th có m t frame
ỗ
trong đó cài đ t m t m ng ng nghĩa (gi ng nh
ầ
ạ
ặ
m i liên h gi a các y u t
đ đ c t
ệ ữ
ể ặ ả ố
đ n gi n nh ví d trên).
ư
ả
ơ ụ ộ ể nh frame nh ng thay vì đ c t
ư ng, nó mô t ứ ươ
ự ệ . Đ mô t ễ
ả m t chu i các s ki n
ỗ
ứ ề ng t
ể
ườ ự ư
ả
i, đ i t
ố ượ m t đ i
ặ ả ộ ố
ộ
chu i s ki n, script s d ng m t
ử ụ
ỗ ự ệ
ế ự
ng và hành đ ng liên quan đ n s
ộ Script là m t cách bi u di n tri th c t
t
ộ
ượ
dãy các slot ch a thông tin v các con ng
ki n đó. ệ ư ủ ấ ộ
Tuy c u trúc c a các script là r t khác nhau tùy theo bài toán, nh ng nhìn chung m t
ấ
script th ng bao g m các thành ph n sau : ườ ầ ồ (entry condition): mô t ả ữ ệ ầ
nh ng tình hu ng ho c đi u ki n c n ề ặ c khi các s ki n trong script có th di n ra. Đi u ki n vào
ề
ệ
c th a mãn tr
đ
ỏ
ượ ướ ự ệ ố
ể ễ là nh ng con ng i có liên quan trong script. Role (di n viên):
ễ ữ ườ t c nh ng đ i t ng đ c s d ng trong các chu i s ấ ả ữ ố ượ ượ ử ụ ỗ ự Prop (tác t ): ố là t
ki n s di n ra.
ệ ẽ ễ Scene(Tình hu ng) : là chu i s ki n th c s di n ra. ố ự ự ễ ỗ ự ệ 86 Result (K t qu ) Role sau khi script đã thi hành xong. ả : tr ng thái c a các ủ ế ạ TTNT m t bi n th (ho c tr ng h p đ c bi ả ộ ế ể ặ ườ ặ ợ ệ ể ả
t) có th x y Track (phiên b n) ả : mô t
ra trong đo n script.
ạ ộ ộ ế ể ụ ụ ế ị ọ ể ườ ể ễ ượ ử ụ
ệ ườ
ứ ằ
ộ ặ ng đ
ề
ng g p trong cu c s ng v i nh ng
ộ ố ớ ươ ẩ ữ ữ ễ ả ố ữ ể tình hu ng ố
ỏ ư ạ vi c khách hàng mua th c ăn v thay vì vào nhà
ứ ộ
ả ệ ề ụ ổ
Sau đây là m t ví d tiêu bi u cho script. Ví d này là m t bi n th c a ví d n i
ể ủ
ng g p trong
ti ng v nhà hàng bán th c ăn nhanh (các nhà hàng bán gà rán mà ta th
ứ
ặ
ề
c s d ng đ minh h a cách bi u di n tri th c b ng script
các siêu th !) th
trong cách sách nói v trí tu nhân t o. Đi ăn trong m t nhà hàng là m t tình hu ng
ố
ộ
ạ
, tác tố, hoàn c nh,ả
, di n viên
ữ đi u ki n vào
th
ễ
ệ
ề
ườ
c
ể ượ
ng pháp này có th đ
k t qu
ví d , b n s th y ph
ả khá "chu n". Và qua script
ụ ạ ẽ ấ
ở
ế
chính xác nh ng tình hu ng di n ra hàng ngày c a nh ng nhà hàng bán
dùng đ mô t
ủ
ể
là nh ng đo n script con trong đo n script chính đ mô
th c ăn nhanh. Các
ứ
ạ
ạ
nh ng tình hu ng nh trong toàn b quá trình. L u ý r ng trong đo n script này có
t
ằ
ố
ả ữ
tình hu ng tùy ch n trong đó mô t
ọ
ố
hàng ăn. Script "nhà hàng" Phiên b n ả : Nhà hàng bán th c ăn nhanh. ứ Di n viên : Khách hàng ễ Ng ườ i ph c v .
ụ ụ Tác t :ố Bàn ph c v .
ụ ụ Ch ng i. ồ ỗ Khay đ ng th c ăn ứ ự Th c ănứ Ti nề Các lo i gia v nh mu i, t ng, t, tiêu, ... ị ư ố ươ ạ ớ Đi u ki n vào :
ệ ề Khách hàng đói Khách hàng có đ ti n đ tr .
ể ả ủ ề Tình hu ng 1 : Vào nhà hàng ố Khách hàng đ u xe vào bãi đ u xe. ậ ậ 87 Khách hàng b c vào nhà hàng. ướ TTNT Khách hàng x p hàng tr ế ướ c bàn ph c v .
ụ ụ Khách hàng đ c th c đ n trên t ng và quy t đ nh s kêu món ăn gì. ự ơ ọ ườ ế ị ẽ Tình hu ng 2: Kêu món ăn. ố Khách hàng kêu món ăn v i ng i ph c v (đang đ ng ớ ườ ụ ụ ứ ở qu y ph c v )
ụ ụ ầ Ng i ph c v đ t th c ăn lên khay và đ a hóa đ n tính ti n cho khách. ườ ụ ụ ặ ư ứ ề ơ Khách hàng tr ti n cho ng ả ề ườ i ph c v .
ụ ụ Tình hu ng 3: Khách hàng dùng món ăn ố Khách hàng l y thêm các gia v
ị ấ Khách hàng c m khay đ n m t bàn còn tr ng. ế ầ ộ ố Khách hàng ăn th c ăn. ứ Tình hu ng 3A (tùy ch n) : Khách hàng mua th c ăn đem v ứ ố ọ ề Khách hàng mang th c ăn v nhà. ứ ề Tình hu ng 4 : Ra v ố ề Khách hàng thu d n bàn ọ Khách hàng b rác (th c ăn th a, x ng, m ng v n, ...) vào thùng rác. ứ ừ ỏ ươ ụ ả Khách hàng ra kh i nhà hàng. ỏ Khách hàng lái xe đi. K t qu : ế ả Khách hàng không còn đói. Khách hàng còn ít ti n h n ban đ u. ề ầ ơ Khách hàng vui v *ẻ Khách hàng b c mình * ự 88 Khách hàng quá no. TTNT * Tùy ch n. ọ ế ệ ự ữ ố ố ả ệ ế ể i dùng có th đ t câu h i và h th ng có th suy ra đ ườ ể ỏ ờ
ệ ố
ấ ể ặ
ầ ườ ữ ề ng h p có th không c n thêm thông tin). Do đó, cũng gi ng nh i chính xác mà không c n ng
ể ố ợ ầ
ứ ươ ộ ạ ễ ng đ i h u d ng vì nó cho phép ta mô
ệ ố ữ ụ
i v n th c hi n m i ngày ho c đã
ự ườ ẫ ể
ố ữ ặ ẩ ỗ Script r t h u d ng trong vi c d đoán đi u gì s x y đ n trong nh ng tình hu ng xác
ấ ữ ụ
ề
ẽ ả
dự
đ nh. Th m chí trong nh ng tình hu ng ch a di n ra, script còn cho phép máy tính
ậ
ư
ị
ễ
ữ
c vi c gì s x y ra và x y ra đ i v i ai và vào th i đi m nào. N u máy tính
đoán đ
ượ
ố ớ
ẽ ả
kích ho t m t script, ng
ượ
c
ộ
ạ
i dùng cung c p thêm nhi u thông tin
nh ng câu tr l
ả ờ
ư
(trong m t s tr
ộ ố ườ
frame, script là m t d ng bi u di n tri th c t
t
chính xác nh ng tình hu ng "chu n" mà con ng
ả
n m b t chính xác.
ắ ắ ặ ạ ứ ướ ạ ư ể
ứ ữ ậ ấ ể ữ
ề ạ ợ
ể ặ ỏ ề ữ ườ ườ ề ặ i dùng) có th đ t câu h i v nh ng con ng
ẽ ế ặ ệ ố
ẳ ể ặ ể ạ ỏ i trong scene 1 và đ a ra đáp án "Đ u xe
ư ạ
ả ờ ệ ố ấ i d ng hình
Đ cài đ t script trong máy tính, b n ph i tìm cách l u tr các tri th c d
ả
th c. LISP là ngôn ng l p trình phù h p nh t đ làm đi u này. Sau khi đã cài đ t
ặ
ệ
i ho c đi u ki n
xong script, b n (ng
có liên quan trong script. H th ng sau đó s ti n hành thao tác tìm ki m ho c thao tác
ế
so m u đ tìm câu tr l
tr
ướ
và b c vào nhà hàng". i. Ch ng h n b n có th đ t câu h i "Khách hàng làm gì
ẫ
ả ờ
c tiên?". H th ng s tìm th y câu tr l
ậ
ẽ
ướ ể ễ ụ ụ ụ ứ ệ ậ
ữ ứ ậ ự
ự
c 3 m c tiêu trên, khi ch n ph
ọ ượ ươ ữ ể c b n sau đây : ứ
M c tiêu chính bi u di n tri th c trong máy tính là ph c v cho vi c thu nh n tri th c
vào máy tính, truy xu t tri th c và th c hi n các phép suy lu n d a trên nh ng tri th c
ứ
ấ
ệ
đã l u tr . Do đó, đ th a mãn đ
ễ
ng pháp bi u di n
ể ỏ
ụ
tri th c, chúng ta ph i cân nh c m t s y u t
ả ộ ố ế ố ơ ả ư
ứ ắ Tính t ự nhiên, đ ng b và d hi u c a bi u di n tri th c.
ễ ể ủ ứ ễ ể ồ ộ c khai báo c th hay nhúng vào ủ ứ ượ ụ ể i d ng các mã th t c? M c đ tr u t
h th ng d
ệ ố ứ ộ ừ ượ
ướ ạ ng c a tri th c : tri th c đ
ứ
ủ ụ ủ ơ ở ễ ổ ộ Tính đ n th và linh đ ng c a c s tri th c (có cho phép d dàng b sung tri
ứ
th c, m c đ ph thu c gi a các tri th c, ...)
ứ
ộ
ứ ể
ơ
ứ ộ ụ ữ ủ ứ ứ ệ ả ạ ấ Tính hi u qu trong vi c truy xu t tri th c và s c m nh c a các phép suy lu n
ậ
(theo ki u heuristic) . ệ
ể Lu t sinh ậ ơ ả ả ơ ấ
ệ c m i lo i tri ễ ể
Cú pháp đ n gi n, d hi u,
di n d ch đ n gi n, tính đ n
ơ
ễ ề
th cao, linh đ ng (d đi u
ộ ễ ị
ể R t khó theo dõi s phân c p, không
ự
hi u qu trong nh ng h th ng l n,
ớ
ữ
ả
không th bi u di n đ
ạ
ễ ượ
ể ể ấ
ệ ố
ọ 89 TTNT ch nh).
ỉ ệ th c, r t y u trong vi c bi u di n các
tri th c d ng mô t
ả ễ
ể
, có c u trúc.
ấ ứ ấ ế
ứ ạ M ng ng nghĩa ữ ạ ễ ự ấ ỗ ỉ D theo dõi s phân c p, s dò
theo các m i liên h , linh đ ng ẽ
ộ ệ ố ớ
ử ắ
ằ Ng nghĩa g n li n v i m i đ nh có
ề
ữ
ạ
th nh p nh ng, khó x lý các ngo i
ể ậ
, khó l p trình.
l
ậ
ệ Frame ạ ễ ạ ố ậ ễ ứ
ặ Khó l p trình, khó suy di n, thi u
ế
ph n m m h tr .
ỗ ợ
ề ầ ạ
ệ t hóa, d đ a vào các
ễ ư
ặ ị ệ ễ
Có s c m nh di n đ t t
t, d
cài đ t các thu c tính cho các
ộ
slot cũng nh các m i liên h ,
ệ
ố
ư
d dàng t o ra các th t c
ủ ụ
ễ
chuyên bi
ễ ự
thông tin m c đ nh và d th c
hi n các thao tác phát hi n các
ệ
giá tr b thi u sót.
ị ế ị Logic hình th cứ ậ ờ ễ ứ ở ệ C ch suy lu n chính xác
ơ ế
(đ
c ch ng minh b i toán
ượ
h c). ọ ử
Tách r i vi c bi u di n và x lý,
ể
ệ
ng d li u
không hi u qu v i l
ữ ệ
ả ớ ượ
l n, quá ch m khi c s d li u l n.
ơ ở ữ ệ ớ
ậ
ớ Một trong những ví dụ kết hợp nhiều kiểu biểu diễn tri thức mà chúng ta đã từng
làm quen là kiểu kết hợp giữa frame và mạng ngữ nghĩa trong việc trợ giúp giải
bài toán hình học. ệ ế ư ứ ể ể ễ ố ọ ớ ậ
ợ ề ạ ề ấ ứ ể ể ể ỗ ể
i n y sinh ra v n đ "d ch" m t tri th c t
ề ị ử ụ
ụ ư ệ ề
ư ậ
ể ộ ố ệ ươ ể ễ ể t, hi n nay v n ch a có m t ki u bi u di n tri th c nào
Tuy v y, nh chúng ta đã bi
ộ
ẫ
ư
phù h p v i m i tình hu ng. Do đó, khi ph i làm vi c v i nhi u ngu n tri th c khác
ồ
ệ ớ
ứ
ả
ộ ằ
nhau (khác lo i, khác tính ch t), chúng ta nhi u lúc ph i hy sinh tính đ ng b b ng
ồ
ả
ộ
cách s d ng cùng lúc nhi u ki u bi u di n tri th c, m i ki u bi u di n ng v i m t
ễ ứ
ớ
ễ
ứ ừ
nhi m v con. Nh ng nh v y, chúng ta l
ộ
ạ ả
ki u bi u di n này sang ki u bi u di n khác. Tuy th nh ng m t s h ch
ng trình
ễ
trí tu g n đây v n dùng cùng lúc nhi u ki u bi u di n d li u khác nhau.
ề ấ
ế ư
ễ ữ ệ ể
ệ ầ ể ể ẫ 90 ố ộ ậ ữ ự ố ợ ươ ặ ậ ệ ụ ự ế ợ
ụ
ế ng đ i thành công là s k t h p gi a lu t sinh và
ả
ặ ữ ả
ế ữ
ư ề ứ
ố
ể ễ ng ho c nh ng m i liên k t tĩnh gi a các đ i t
i chính là u đi m c a frame. Ngày nay, đã có r t nhi u
ề
ủ
ạ
ể ữ ể ể
ự các đ i t
ể
ộ
ễ ậ
ệ ố ổ ế ủ ề ộ nh ng đ i t ứ
ố ượ ệ ấ ệ
ễ ơ ả ư ộ ớ ả ể ặ ả ữ
ỗ ợ
ng tác m t cách t
ộ ả ươ ậ ể ượ ể ậ ắ
ệ ự ể ạ
ườ
c các lu t đ ụ
c s d ng khi nào và cho m c ấ
ể ả
ư ượ M t trong nh ng s ph i h p t
ữ
t là trong các tác v
frame. Lu t sinh không đ hi u qu trong nhi u ng d ng, đ c bi
ủ ệ
ng.
đ nh nghĩa, mô t
ố ượ
ữ
ố ượ
ị
Nh ng nh ng y u đi m này l
ấ
ư
ể
h th ng đã t o ra m t ki u bi u di n lai gi a lu t sinh và frame có đ
c u đi m
ượ ư
ạ
ệ ố
c a hai cách bi u di n. S thành công c a các h th ng n i ti ng nh KEE, Level5
ư
ủ
ữ
Object và Nexpert Object đã minh ch ng cho đi u này. Frame cung c p m t ngôn ng
ấ
ng xu t hi n trong các lu t. Frame còn
c u trúc hi u qu đ đ c t
ậ
ấ
ng
đóng vai trò nh m t l p h tr cho thao tác suy di n c b n trên nh ng đ i t
ố ượ
ữ
ớ ủ
không c n ph i t
ng minh trong các lu t. Kh năng phân l p c a
ả
ườ
ầ
c dùng đ phân ho ch, t o ch m c và s p x p các lu t sinh trong
frame còn có th đ
ế
ỉ ụ
ạ
i dùng trong vi c xây d ng và hi u các
h th ng. Kh năng này r t thích h p cho ng
ệ ố
ợ
lu t, cũng nh cũng có th theo dõi đ
ậ ượ ử ụ
ậ
gì. TTNT * Suy luận không chắc chắn (Hypothetical reasoning) : là kỹ thuật suy luận dựa trên các điều kiện
có thể có mâu thuẫn hoặc không chắc chắn. ộ ấ ự ế ợ ữ ế ợ
ằ ủ ệ ố ể
ẫ ế ế ậ ứ ạ ệ ề ỉ Hình sau cho th y m t ki u k t h p gi a lu t sinh và frame. S k t h p này đã cho
ậ
ả ủ ự
phép t o ra các lu t so m u nh m tăng t c đ tìm ki m c a h th ng. K t qu c a s
ố ộ
ạ
k t h p này cho phép t o ra các bi u di n ph c t p h n r t nhi u so v i vi c ch dùng
ễ
ế ợ
ể
frame, th m chí ph c t p h n c vi c l p trình tr c ti p b ng ngôn ng C++ !!.
ơ ả ệ ậ ơ ấ
ằ ạ
ứ ạ ự ế ớ
ữ ậ ứ ằ ề ễ ể ậ ế Ví d k t h p bi u di n tri th c b ng lu t sinh và frame trong bài toán đi u ch
ụ ế ợ
ch t hóa h c
ọ ấ ề Cho tr ọ
c m t s ch t hóa h c. Hãy xây d ng chu i các ph n ng hóa h c
ự ả ứ ỗ V n đ :
ọ
ấ
đ đi u ch m t s ch t hóa h c khác.
ể ề ướ
ế ộ ố ấ ộ ố ấ
ọ ầ ủ ế ứ ự
ọ i d ng lu t.
ậ
ễ ướ ạ
ể ệ ướ ạ
i d ng ẩ ng trình ph n ng sau : Đ u tiên, đây là m t ng d ng h t s c t
nhiên c a tri th c bi u di n d
ứ
ụ
ể
ộ ứ
c th hi n d
Lý do là vì b n thân các ph n ng hóa h c tiêu chu n đ u đ
ề ượ
ả ứ
ả
lu t. Ch ng h n ta có các ph
ươ
ạ ả ứ ậ ẳ NaCl Na + Cl2 fi Fe + Cl2 fi FeCl2 Cu + Cl2 fi CuCl2 91 HCl + HClO Cl2 + H2O fi TTNT MnO2 + 4HCl fi MnCl2 + Cl2 + H2O HCl + KMnO4 fi KCl + MnCl2 + H2O + Cl2 NaCl + H2O fi Cl2 + H2 + NaOH ... ế ộ ự ệ ươ ấ ộ ư ậ
ư ế ấ ậ ẫ ọ ộ ả ứ
ng trình ph n ng
ở
nhiên, tr
ấ ự Nh v y, n u xem m t ch t hóa h c là m t s ki n và m t ph
ọ
nh là m t lu t d n thì bài toán đi u ch ch t hóa h c, m t cách r t t
ề
thành bài toán suy lu n ti n trong c s tri th c d ng lu t d n.
ơ ở ộ
ộ
ậ ẫ ứ ạ ế ậ ố ượ ấ ớ Tuy nhiên, s l
trên các ph n ng c th nh v y mà ph i s d ng các ph n ng t ng quát h n nh :
ả ứ ậ ự
ng các ph n ng là r t l n, nên ta không th s d ng các lu t d a
ư
ơ ả ứ
ụ ể ư ậ ể ử ụ
ổ ả ử ụ ả ứ Mu i + N c Axit + Baz ơ fi ướ ố Xút + H2 ướ fi
Ki m + N c ề c, trong ề ọ ượ t không th t ng quát đ
ể ổ
ả ứ
ng h p này, ta s xem ph n ng đó nh là m t lu t riêng!). (trong hóa h c cũng có nhi u ph n ng r t đ c bi
ệ
tr
ộ ấ ặ
ư ả ứ ườ ẽ ậ ợ 2SO4 ta s d ng các frame t ng quát sau. ạ
c các ph n ng t ng quát nh trên, ta s s d ng các frame. Ch ng h n ả ứ ư ẳ ổ đ
ả ượ
Acid Sulfuric H Đ mô t
ể
đ đ c t
ể ặ ả ử ụ ẽ ử ụ
ổ 92 ọ Ở
ấ
ng đ b n đ c có c s b t đ u. Ý t ở
c v m t ý t đây chúng
ưở ưở ỉ ề
ể ạ
c m t s sinh viên năm 4 c a khoa Công Ngh Thông Tin Đ i H c Khoa H c T Dĩ nhiên là trong các frame
tôi ch trình bày s l
đ
ộ ố
ượ trên còn r t nhi u thu c tính hóa h c khác.
ộ
ọ
ệ ơ ượ ề ặ
ủ ơ ở ắ ầ
ọ ng này đã
ự ạ ọ TTNT 93 ng trình ch y t ặ ồ ươ ạ ố t trong ph m vi các
ạ Nhiên TP. H Chí Minh cài đ t thành công. Ch
ph n ng trong sách giáo khoa l p 10, 11 và 12. ả ứ ớ TTNT II.1. Đâm ch i ồ II.2. Ph ng án ch n thu c tính phân ho ch ươ ạ ọ ộ II.2.1. Quinlan II.2.2. Đ đo h n lo n
ạ ộ ỗ II.3. Phát sinh t p lu t
ậ ậ II.4. T i u t p lu t
ố ư ậ ậ II.4.1. Lo i b m nh đ th a
ề ừ
ạ ỏ ệ II.4.2. Xây d ng m nh đ m c đ nh ề ặ ị ự ệ ti p thu tri th c ậ ế ể ế ứ đ bi ườ
i nhi u hình th c khác nhau nh h c thu c lòng ọ ễ ng là
ề ữ ọ
ờ t cách v n d ng.
ậ ụ
ộ ọ ệ ọ ự ư ọ
ứ
ng h p), h c theo ki u nghe nhìn,...
ườ ể ọ ợ ậ ề
ỉ c cung c p m t s các tr ả
ẽ ượ ệ ố ộ ố ườ ươ ấ ẽ ế ậ ể ậ ườ ẫ ợ ng h p "m u"). Ngay c ch v i ki u h c này,
ớ
i ệ ố
ng không gi ng nh các tr
ố
ề ộ ầ ữ ụ ớ Thu t ng "h c" theo nghĩa thông th
ngoài đ i, quá trì h c di n ra d
ướ
Ở
(h c v t), h c theo kinh nghi m (h c d a theo tr
ọ ẹ
Trên máy tính cũng có nhi u thu t toán h c khác nhau. Tuy nhiên, trong ph m vi c a
ủ
ọ
ạ
giáo trình này, chúng ta ch kh o sát ph
ng pháp h c d a theo tr
ng h p. Theo
ọ ự
ươ
ợ
ườ
ng pháp này, h th ng s đ
ph
ng h p "m u", d a trên
ự
ẫ
ợ
t p m u này, h th ng s ti n hành phân tích và rút ra các quy lu t (bi u di n b ng
ằ
ậ
ễ
ể
ệ ố
ẫ
ng h p
lu t sinh). Sau đó, h th ng s d a trên các lu t này đ "đánh giá" các tr
ợ
ườ
ậ
khác (th
ọ
ể
ả ỉ ớ
chúng ta cũng đã có nhi u thu t toán h c khác nhau. M t l n n a, v i m c đích gi
thi u, chúng ta ch kh o sát m t tr
ợ
ỉ ườ
ọ
ng h p đ n gi n.
ơ ẽ ự
ư
ậ
ộ ườ ệ ả ả Có th khái quát quá trình ng h p i d ng hình th c nh sau : ể h c theo tr
ọ ườ ợ d ướ ạ ứ ư ng h p p trong ệ ố ứ ấ ạ ộ ườ ợ D li u cung c p cho h th ng là m t ánh x f trong đó ng m t tr
ữ ệ
ộ
t p h p P v i m t "l p" r trong t p R.
ậ
ộ ớ
ợ
ậ ớ 94 f : P |fi R TTNT p fi r t c các tr ng nh (và h u h n) so v i t p t
ữ ạ ườ ớ ậ ấ ả
P’). M c tiêu c a chúng ta là xây d ng ánh x
ự ườ
ụ ng h p ườ ợ p’ trong t p ậ P’ v i m t "l p" ộ ớ r trong t p ậ R. H n n a, ng h p c n quan
ợ ầ
ọ
ạ f ’ sao cho có th ng m i
ể ứ
f,
ơ ữ f ’ ph i b o toàn ả ả ỏ
ủ
ớ Tuy nhiên, t p ậ P th
tâm P’ (P (cid:204)
tr
nghĩa là : ng h p là tìm cách xây d ng ánh x f’ d a theo ánh x f. f đ ườ ự ự ạ ạ ợ ượ
c V i m i P thì f(p) ” f ’(p) ớ ọ p ˛ Phương pháp học theo trường hợp là một phương pháp phổ biến trong cả nghiên
cứu khoa học và mê tín dị đoan. Cả hai đều dựa trên các dữ liệu quan sát, thống
kê để từ đó rút ra các quy luật. Tuy nhiên, khác với khoa học, mê tín dị đoan
thường dựa trên tập mẫu không đặc trưng, cục bộ, thiếu cơ sở khoa học. ể ể ụ ể ợ ụ ể
ụ ủ
i ộ ể ắ ị Dĩ nhiên là trong thực tế để có thể đưa ra được một kết luận như vậy, chúng ta cần nhiều
dữ liệu hơn và đồng thời cũng cần nhiều thuộc tính dẫn xuất trên. Ví dụ đơn giản này chỉ
nhằm để minh họa ý tưởng của thuật toán máy học mà chúng ta sắp trình bày. 95 ng h p này, t p ậ R c a chúng ta ch g m có hai ph n t ợ
ng"} c li ấ ả ữ ườ ả i đ
ườ ượ
ự ệ ượ ộ ủ
. Còn t p ậ P là t
i) Chúng ta quan sát hi n t
ấ ẹ ặ Phát bi u hình th c có th khó hình dung. Đ c th h n, ta hãy cùng nhau quan sát
ứ
m t ví d c . Nhi m v c a chúng ta trong ví d này là xây d ng các quy lu t đ có
ậ ể
ộ
ụ ụ
ệ
ự
khi đi t m bi n thì b cháy n ng. Ta g i tính ch t
ườ nh th nào
th k t lu n m t ng
ấ
ể ế
ọ
ắ
ư ế
ậ
. Nh v y,
(thu c tính m c tiêu)
cháy n ng hay không cháy n ng là thu c tính quan tâm
ư ậ
ộ
ụ
ắ
ộ
ắ
ầ ử {"cháy n ng",
trong tr
ỉ ồ
ắ
ườ
i (8
"bình th
t c nh ng ng
t kê trong b ng d
ướ
ệ
chi u cao
ng cháy n ng d a trên 4 thu c tính sau :
ng
ề
ườ
ắ
dùng kem
(cao, trung bình, th p), màu tóc (vàng, nâu, đ ) cân n ng (nh , TB, n ng),
ặ
ỏ
thu c tính d n xu t
(có, không),. Ta g i các thu c tính này g i là ấ . ẫ ộ ọ ộ ọ TTNT Sarah Vàng T.Bình Không Cháy Nhẹ Dana Vàng Cao T.Bình Có Không Alex Nâu T.Bình Có Không Th pấ Annie Vàng T.Bình Không Cháy Th pấ Emilie T.Bình Không Cháy Đỏ N ng ặ Peter Nâu Cao Không Không N ngặ John Nâu T.Bình Không Không N ng ặ Kartie Vàng Có Không Th pấ Nhẹ ầ ươ ầ ng pháp này là tìm cách
trong t phân ho ch ạ t p P ban đ u thành
ậ
t c các t p Pi đ u có chung thu c tính t c các ph n t ng đ u tiên c a ph
ủ
ấ ả ầ ử ấ ả ề ậ ộ Ý t
ưở
các t p Pi sao cho t
ậ
m c tiêu. ụ Pn và " (i,j) i„ j : thì (Pi ˙ Pj = ˘ ) và P = P1 ¨ P2 ¨ " i, " k,l : pk ˛ Pi và pl ˛ Pj thì f(pk) = f(pl) ượ ặ ạ Pi đ ộ ứ ế c hình thành b ng cách k t h p các ạ
ri (ri ˛
ri trong đó các GTi là m nh đ đ ở
c đ c tr ng b i
ư
ớ m i ỗ phân ho ch ạ Pi ta xây d ngự
ằ ế ợ Sau khi đã phân ho ch xong t p P thành t p các phân ho ch
ậ
ậ
c ti p theo là ng v i
thu c tính đích
ướ
lu t ậ Li : GTi fi
ề ượ
ệ
thu c tính d n xu t.
ẫ ấ ộ ộ ầ ữ ạ ả ứ ể ề ấ ng trên v i b ng s li u mà ta đã có. M t l n n a, v n đ hình th c có th làm b n c m th y khó khăn. Chúng ta hãy th ý
ử
t
ưở ấ
ớ ả ố ệ ạ ể ể ầ ộ ạ ộ ẽ
i). Cách th hai là phân ho ch thành hai t p, m t t p g m t ấ
ườ vào m t phân ho ch riêng (P
ạ ườ ậ ồ ứ
và t p còn l ổ
ộ ậ
i t c nh ng ng i ấ ả ữ ạ ậ ạ
i bao g m t
ồ
ể ườ không cháy
ế
i quy t
ả
ẳ ư ả c gì !! Có hai cách phân ho ch hi n nhiên nh t mà ai cũng có th nghĩ ra. Cách đ u tiên là cho
1 = {Sarah}, P2 = {Dana}, … t ng c ng s có 8
m i ng
i
ỗ
phân ho ch cho 8 ng
ấ
t
ườ cháy n ng ắ
c nh ng ng
ả ữ
n ngắ . Tuy đ n gi n nh ng phân ho ch theo ki u này thì chúng ta ch ng gi
ạ
ơ
đ
ượ 96 II.1. Đâm ch i ồ TTNT ng pháp khác. Bây gi ử ộ ươ ầ ộ
c 3 phân ho ch khác nhau
ạ ế ự ượ ể Chúng ta hãy th m t ph
– màu tóc. N u d a theo màu tóc đ phân chia ta s có đ
ng v i m i giá tr c a thu c tính màu tóc. C th là :
ộ
ứ b n hãy quan sát thu c tính đ u tiên
ờ ạ
ẽ
ụ ể ị ủ ỗ ớ Pvàng = { Sarah, Dana, Annie, Kartie } Pnâu = { Alex, Peter, John } * Các ng i b cháy n ng đ c g ch d i và in đ m. ườ ị ắ ượ ạ ướ ậ Pđỏ = { Emmile } t kê ra nh trên, ta dùng s đ cây đ ti n mô t cho các b ệ ể ệ ơ ồ ư ả ướ ạ
c phân ho ch Thay vì li
sau : ạ ề ỏ ỏ th a mãn đ
ượ
i không cháy n ng, Pđ ệ "có (Pnâu ch a toàn ng
ứ ườ ụ ộ c đi u ki n
ỏ ch a toàn
ứ ắ i cháy n ng). Quan sát hình trên ta th y r ng phân ho ch Pnâu và Pđ
ấ ằ
chung thu c tính m c tiêu"
ng
ắ ườ ườ ta hãy quan sát thu c tính chi u cao. i t p Pvàng là còn l n l n ng
ạ ậ
ạ ẫ ộ
ậ ẽ ế ụ
i cháy năng và không cháy n ng. Ta s ti p t c
ề ắ
ộ ậ ờ : PVàng, Th pấ = {Annie, Kartie}, ậ ậ ộ Còn l
phân ho ch t p này thành các t p con. Bây gi
Thu c tính này giúp phân ho ch t p Pvàng thành 3 t p con
ạ
PVàng, T.Bình= {Sarah} và PVàng,Cao= { Dana } 97 N u n i ti p vào cây hình tr c ta s có hình nh cây phân ho ch nh sau : ố ế ế ở ướ ư ẽ ả ạ TTNT ủ ắ ắ ẫ ộ
t c các nút lá c a cây không còn l n l n
ấ ả
c phân
ạ
c g i là
ượ ọ ữ
ạ Quá trình này c th ti p t c cho đ n khi t
ế
ứ ế ế ụ
gi a cháy n ng và không cháy n ng n a. B n cũng th y r ng, qua m i b
ỗ ướ
ữ
ho ch cây phân ho ch ngày càng "phình" ra. Chính vì v y mà quá trình này đ
quá trình "đâm ch i". Cây mà chúng ta đang xây d ng đ c g i là cây đ nh danh. ấ ằ
ậ
ượ ọ ạ
ồ ự ị i g p m t v n đ m i. N u nh ban đ u ta không ch n thu c tính ế ế ầ ọ ề ớ
ộ ạ ặ
ạ ộ ấ
ọ ể ạ ẳ ề
t h n? Đ n đây, chúng ta l
ư
ộ
màu tóc đ phân ho ch mà ch n thu c tính khác nh chi u cao ch ng h n đ phân
ư
ể
ho ch thì sao? Cu i cùng thì cách phân ho ch nào s t
ẽ ố ơ
ạ ạ ố II.2. Ph ng án ch n thu c tính phân ho ch ươ ọ ộ ạ ng t ấ ề ế ặ ộ
c m t
nh bài toán tìm ki m : "Đ ng tr
ướ
ứ
i đây s giúp ta
ẽ ướ ầ c thu c tính phân ho ch t ự ư
ng pháp đánh giá d
ươ
c xây d ng cây đ nh danh. i m i b V n đ mà chúng ta g p ph i cũng t
ngã r , ta c n ph i đi vào h
ẽ
ả
ch n đ
ọ ượ ả
ươ
ng nào?". Hai ph
ướ
ỗ ướ
ạ ự ạ ộ ị II.2.1. Quinlan ế ị ự ằ ạ ộ ị ủ ừ ụ ẫ ộ ỗ ộ ư
Quinlan quy t đ nh thu c tính phân ho ch b ng cách xây d ng các
vector đ c tr ng
ặ
ụ ể
cho m i giá tr c a t ng thu c tính d n xu t và thu c tính m c tiêu. Cách tính c th
ấ
nh sau : ư VA(j) = ( T(j , r1), T(j , r2) , …, T(j , rn) ) T(j, ri) = (tổng số phần tử trong phân hoạch có giá trị thuộc tính dẫn xuất A là j và có giá
trị thuộc tính mục tiêu là ri ) / ( tổng số phần tử trong phân hoạch có giá trị thuộc tính dẫn
xuất A là j ) * trong đó r1, r2, … , rn là các giá trị của thuộc tính mục tiêu * V i m i thu c tính d n xu t ấ A còn có th s d ng ể ử ụ đ phân ho ch, tính : ể ẫ ạ ớ ộ ỗ ) đ ư ậ ế ẽ ể ậ ộ ộ ị Nh v y n u m t thu c tính A có th nh n m t trong 5 giá tr khác nhau thì nó s có 5
ộ
vector đ c tr ng.
ặ ư ộ ơ c g i là vector đ n v n u nó ch có duy nh t m t thành ph n có
ỉ ầ ấ ộ M t vector V(Aj
ị ế
ượ ọ
giá tr 1 và nh ng thành ph n khác có giá tr 0.
ị
ầ ữ ị Thu c tính đ c ch n đ phân ho ch là thu c tính có nhi u vector đ n v nh t. ộ ượ ề ể ạ ấ ộ ọ ơ ị 98 i ví d c a chúng ta, ở ạ ư ẽ ạ ặ ụ ủ
ư tr ng thái ban đ u (ch a phân ho ch) chúng ta s tính
ở ạ
ộ ầ
ấ ể ể ộ (vàng, ị ừ
ầ
ộ
nên s có 3 vector đ c tr ng t Tr l
vector đ c tr ng cho t ng thu c tính d n xu t đ tìm ra thu c tính dùng đ phân
ẫ
ho ch. Đ u tiên là thu c tính màu tóc. Thu c tính màu tóc có 3 giá tr khác nhau
ạ
đ , nâu)
ỏ ộ
ng ng là :
ươ ứ ư ẽ ặ TTNT VTóc (vàng) = ( T(vàng, cháy n ng), T(vàng, không cháy n ng) )
ắ ắ S ng ố ườ S ng ố ườ ắ S ng i tóc vàng và không cháy n ng là : ố ườ ắ VTóc(vàng) = (2/4 , 2/4) = (0.5, 0.5) Do đó VTóc(nâu) = (0/3, 3/3) = (0,1) (vector đ n v ) ơ ị S ng T ng t ươ ự ố ườ S ng ố ườ ắ S ng i tóc nâu và không cháy n ng là : ố ườ ắ VTóc(đ ) = (1/1, 0/1) = (1,0) (vector đ n v ) ơ ị ỏ 2 T ng s vector đ n v c a thu c tính tóc vàng là
ị ủ ơ ổ ố ộ VC.Cao(Cao) = (0/2,2/2) = (0,1) VC.Cao(T.B) = (2/3,1/3) VC.Cao(Th p) = (1/3,2/3) ấ VC.N ngặ (Nh ) = (1/2,1/2)
ẹ (T.B) = (1/3,2/3) VC.N ng ặ VC.N ngặ (N ng) = (1/3,2/3) ặ VKem (Có) = (3/3,0/3) = (1,0) VKem (Không) = (3/5,2/5) 99 Các thu c tính khác đ c tính t ng t ộ ượ ươ ự ế , k t qu nh sau :
ả ư TTNT c ch n đ phân ề ấ ơ ộ ị ẽ ượ ể ọ Nh v y thu c tính màu tóc có s vector đ n v nhi u nh t nên s đ
ố
ư ậ
ho ch. ạ ạ ứ ạ
ườ ng t ẽ ế ụ
ự ố ớ ắ
ư ặ đ i v i các thu c tính còn
. Trong phân ho ch Pvàng, t p d li u c a chúng ạ
ộ
ậ ữ ệ ủ ươ
ạ ặ Sau khi phân ho ch theo màu tóc xong, ch có phân ho ch theo tóc vàng (Pvàng) là còn
ỉ
ậ
i cháy n ng và không cháy n ng nên ta s ti p t c phân ho ch t p
ch a nh ng ng
ắ
ữ
này. Ta s th c hi n thao tác tính vector đ c tr ng t
ệ
ẽ ự
l
i ạ (chi u cao, cân n ng, dùng kem)
ta còn l i là : ề
ạ Sarah T.Bình Không Cháy Nhẹ Dana Cao T.Bình Có Không Annie T.Bình Không Cháy Th pấ Kartie Có Không Th pấ Nhẹ VC.Cao(Cao) = (0/1,1/1) = (0,1) VC.Cao(T.B) = (1/1,0/1) = (1,0) VC.Cao(Th p) = (1/2,1/2) ấ VC.N ngặ (Nh ) = (1/2,1/2)
ẹ (T.B) = (1/2,1/2) VC.N ng ặ VC.N ngặ (N ng) = (0,0)
ặ VKem (Có) = (0/2,2/2) = (0,1) VKem (Không) = (2/2,0/2) = (1,0) 100 ộ ề ề ố ị ơ
ạ ộ ơ ộ 2 thu c tính dùmg kem và chi u cao đ u có 2 vector đ n v . Tuy nhiên, s phân ho ch
ạ
c a thu c tính dùng kem là ít h n nên ta ch n phân ho ch theo thu c tính dùng kem.
ọ
ủ
Cây đ nh danh cu i cùng c a chúng ta s nh sau :
ẽ ư ủ ố ị TTNT II.2.2. Đ đo h n lo n ộ ỗ ạ ả ư ủ ứ ự ặ ỉ ầ ự ỗ ộ ộ ộ ớ
ng pháp c a Quinlan, ng v i
Thay vì ph i xây d ng các vector đ c tr ng nh ph
ư ươ
m i thu c tính d n xu t ta ch c n tính ra đ đo h n lo n và l a ch n thu c tính nào
ỗ
ọ
ạ
có đ đo h n lo i là th p nh t. Công th c tính nh sau :
ư
ấ ẫ
ạ ấ
ấ ứ ộ ỗ TA = trong đó : có trong phân ho ch bt là t ng s ph n t ầ ử ố ổ ạ có thu c tính d n xu t A có giá tr j. bj là t ng s ph n t ầ ử ổ ố ẫ ấ ộ ị có thu c tính d n xu t A có giá tr j và thu c tính m c tiêu ụ ẫ ấ ộ ộ ị ầ ử bri : t ng s ph n t
ố
ổ
có giá tr i.
ị II.3. Phát sinh t p lu t
ậ ậ (Màu tóc vàng) và (có dùng kem) fi không cháy n ngắ (Màu tóc vàng) và (không dùng kem) fi cháy n ngắ (Màu tóc nâu) fi không cháy n ngắ (Màu tóc đỏ) fi cháy n ngắ 101 ắ ậ ừ ậ ị đ nh cho đ n nút lá đó và phát sinh ra lu t t ỉ ệ ừ cu i ph n II.2 ta có các lu t sau (xét các nút lá t Nguyên t c phát sinh t p lu t t
ch vi c đi t
ừ ỉ
đ nh danh k t qu
ế
ị ế
ả ở ố cây đ nh danh khá đ n gi n. ng v i m i nút lá, ta
ỗ
ả Ứ
ơ
cây
ụ ể
ậ ươ ứ
trái sang ph i)
ả ớ
ng ng. C th là t
ừ ậ ầ TTNT ơ ệ
không có gì ph i nói gì thêm. Chúng ta hãy th c hi n ự ả ả
ả
c cu i cùng là t i u t p lu t. Khá đ n gi n ph i không? Có l
b
ướ ố ư ậ ẽ
ậ ố II.4. T i u t p lu t
ố ư ậ ậ II.4.1. Lo i b m nh đ th a
ề ừ
ạ ỏ ệ (Màu tóc vàng) và (có dùng kem) fi không cháy n ngắ ng pháp lo i b m nh đ th a đã đ ươ ạ ỏ ệ ượ ầ ễ ứ ế c trình bày trong ph n bi u
ể
ề ừ ở ỉ
ữ ệ ự ụ ậ ậ ng pháp lo i b m nh đ th a
ạ ỏ ệ
ươ
ậ
c, b n hãy quan sát lu t
ph n tr
ạ
ầ ướ Khác so v i các ph
ớ
ề ừ
di n tri th c (ch quan tâm đ n logic hình th c), ph
ứ
đây d a vào d li u. V i ví d và t p lu t đã có
ở
ớ
sau : ữ ả ả ố ờ ọ i
ườ có
ng ng v i tóc màu vàng và b cháy n ng hay không. Trong d li u đã ta hãy l p m t b ng (g i là b ng Contigency), b ng th ng kê nh ng ng
ữ ệ
ị ắ Bây gi
dùng kem t
cho, có 3 ng ộ ả
ớ
i không dùng kem. ậ
ươ ứ
ườ 2 0 1 0 ả ố
ệ ư ế ả Theo b ng th ng kê này thì rõ ràng là thu c tính tóc vàng (trong lu t trên) không đóng
ộ
góp gì trong vi c đ a ra k t lu n cháy n ng hay không (c 3 ng
ậ
ắ
không cháy n ng) nên ta có th lo i b thu c tính tóc vàng ra kh i t p lu t.
ể ạ ỏ ậ
i dùng kem đ u
ề
ườ
ậ
ỏ ậ ắ ộ Sau khi lo i b m nh đ th a, t p m nh đ c a chúng ta trong ví d trên s còn : ề ừ ậ ạ ỏ ệ ề ủ ụ ệ ẽ (Màu tóc vàng) và (không dùng kem) fi cháy n ngắ (Màu tóc nâu) fi không cháy n ngắ (Màu tóc đỏ) fi cháy n ngắ ư ế ấ ơ ệ ề ể ắ Nh v y quy t c chung đ có th lo i b m t m nh đ là nh th nào? R t đ n gi n,
ả
gi ư ậ
s lu t c a chúng ta có n m nh đ :
ả ử ậ ủ ể ạ ỏ ộ
ề
ệ 102 TTNT ạ ậ ợ th a t ể ể
ồ i là đ Đ ki m tra xem có th lo i b m nh đ Ai hay không, b n hãy l p ra m t t p h p P
ề
bao g m các ph n t
ề A1 , A2 , … Ai-, Ai+1, …, An (l u ý : không
c n xét là có th a Ai hay không, ch c n th a các m nh đ còn l
ầ ể ạ ỏ ệ
ầ ử ỏ ấ ả ệ
ỏ t c m nh đ
ỏ
ỉ ầ ộ ậ
ư
c)
ượ ệ ề ạ Sau đó, b n hãy l p b ng Contigency nh sau : ư ậ ạ ả (cid:216) E F G H (cid:216) E là s ph n t
ố ầ ử trong P th a c Ai và R.
ỏ ả trong P th a Ai và không th a R F là s ph n t
ố ầ ử ỏ ỏ trong P không th a Ai và th a R G là s ph n t
ố ầ ử ỏ ỏ trong P không th a Ai và không th a R H là s ph n t
ố ầ ử ỏ ỏ Trong đó N u t ng F+H = 0 thì có th lo i b m nh đ Ai ra kh i lu t. ể ạ ỏ ệ ế ổ ề ậ ỏ II.4.2. Xây d ng m nh đ m c đ nh ề ặ ị ự ệ ỏ fi
N u không có lu t nào th a ế ậ cháy n ng (1)
ắ Ho c ặ không cháy n ng. (2) ỏ fi
N u không có lu t nào th a ế ậ ắ ể ậ ụ ậ ắ ộ ộ ỉ ị (ch có hai lu t vì thu c tính m c tiêu ch có th nh n m t trong hai giá tr là cháy n ng hay không cháy
ỉ
n ng)ắ ề ặ ộ ấ ộ ườ ả ặ ng h p mà t
ợ
ộ ấ ả
ộ ặ ị ặ ả ậ ộ t c các lu t đ u không
Có m t v n đ đ t ra là khi g p ph i m t tr
ậ ề
th a thì ph i làm nh th nào? M t cách hành đ ng là đ t ra m t lu t m c đ nh đ i
ạ
ư ế
lo i nh : ỏ
ạ ư (Màu tóc vàng) và (không dùng kem) fi cháy n ngắ (Màu tóc đỏ) fi cháy n ngắ 103 Gi s ta đã ch n lu t m c đ nh là (2) thì t p lu t c a chúng ta s tr thành : ả ử ậ ủ ẽ ở ặ ị ậ ậ ọ TTNT không cháy n ng. (2) ỏ fi
N u không có lu t nào th a ế ậ ắ ằ ư ậ ẫ ậ ặ ị ế
ậ ế ằ ở t c các lu t d n đ n k t lu n không cháy n ng
ắ
L u ý r ng là chúng ta đã lo i b đi t
ế
và thay nó b ng lu t m c đ nh. T i sao v y? B i vì các lu t này
ậ v iớ
ậ
lu t m c đ nh. Rõ ràng là ch có th có m t trong hai kh năng là cháy n ng hay không. có cùng k t lu n
ắ ạ ỏ
ạ
ể ấ ả
ậ
ộ ặ ị ậ ả ỉ V n đ là ch n lu t nào? Sau đây là m t s quy t c. ộ ố ề ắ ấ ậ ọ ậ ặ ị ề ậ
ế
c vì có 2 lu t d n đ n cháy
ậ ẫ
ượ ấ
ế 1) Ch n lu t m c đ nh sao cho nó có th thay th cho nhi u lu t nh t. (trong ví
ể
ọ
d c a ta thì nguyên t c này không áp d ng đ
ụ ủ
ụ
ắ
n ng và 2 lu t d n đ n không cháy n ng)
ế
ắ ậ ẫ ắ ặ ị ụ ủ ọ
ọ ấ
ắ ậ
ợ 2) Ch n lu t m c đ nh có k t lu n ph bi n nh t. Trong ví d c a chúng ta thì
ậ
ổ ế
ế
nên ch n lu t (2) vì s tr
ắ
ng h p không cháy n ng là 5 còn không cháy n ng
ố ườ
ậ
là 3. ọ ậ ặ ị ề ủ ậ ổ ậ ượ ụ ủ ấ ọ ẽ
ổ ậ ẫ 3) Ch n lu t m c đ nh sao cho t ng s m nh đ c a các lu t mà nó thay th là
ế
ố ệ
c ch n s là lu t (1) vì t ng
nhi u nh t. Trong ví d c a chúng ta thì lu t đ
ổ
ậ
ề
ề ủ
s m nh đ c a lu t d n đ n cháy n ng là 3 trong khi t ng s m nh đ c a
ố ệ
ắ
ố ệ
lu t d n đ n không cháy n ng ch là 2.
ậ ẫ ề ủ
ế ế
ắ ỉ ng trình gi i bài toán hành trình ng i bán hàng rong b ng hai ươ
i GTS ằ
ng h p có n đ a đi m khác nhau. ả
1 và GTS2 trong tr 1) Vi
ế
thu t gi
ậ t ch
ả ườ
ị ể ợ ườ ế ươ ả ụ
i bài toán phân công công vi c b ng cách ng d ng ệ ằ ứ 2) Vi
t ch
nguyên lý th t ng trình gi
.
ứ ự , hãy gi ồ ậ ả ụ
ng l n l 3) ng d ng nguyên lý th t
Ứ
kh i l
ầ ượ
ố ượ
nhóm sao cho chênh l ch kh i l i bài toán chia đ v t sau. Có n v t v i
ậ ớ
ứ ự
1, M2, … Mn. Hãy tìm cách chia n v t này thành hai
ng gi a hai nhóm này là nh nh t. t là M
ệ ố ượ ậ
ỏ ữ ấ 4) Vi t ch ng trình gi i bài toán mã đi tu n. ế ươ ả ầ 5) Vi t ch ng trình gi i bài toán 8 h u. ế ươ ả ậ *. 6) Vi t ch ng trình gi i bài toán Ta-canh b ng thu t gi i A ế ươ ả ằ ậ ả *. 7) Vi t ch ng trình gi i bài toán tháp Hà N i b ng thu t gi i A ế ươ ả ộ ằ ậ ả 104 ườ ồ ổ
ng đi ng n nh t trong m t b n đ t ng ộ ả ắ ấ c bi u di n b ng m t m ng hai chi u A, trong đó A[x,y]=0 là ế
ễ ể ả ộ i dùng click chu t trên 8)* Vi
t ch
ươ
ế
quát. B n đ đ
ồ ượ
ả
có th đi đ
ượ
ể ng trình tìm ki m đ
ằ
c và A[x,y]= 1 là v t c n. Cho phép ng
ậ ả ề
ườ ộ TTNT ế ả ấ ồ ị m t ô b t kỳ sang ô k c n nó là 1. ể
màn hình đ t o b n đ và xác đ nh đi m xu t phát và k t thúc. Chi phí đ đi
ể
t
ừ ộ ể ạ
ấ ế ậ ng h p chi phí đ di chuy n t ườ ể ừ ể ợ ộ ấ
ô (x,y) sang m t b t M r ng bài toán trong tr
kỳ k (x,y) là A[x,y]. ở ộ
ế i bài toán đong n 1. Vi c gi t ch ng trình minh h a các b ướ ồ ọ
c (s d ng đ h a ử ụ ọ ả ướ 2. Vi ặ ệ
t ạ ậ
ể ứ 3. Vi ng trình cài đ t hai thu t toán V ng H o và Robinson trong đó li
ươ
c ch ng minh m t bi u th c logic.
ộ
ứ
ng trình gi ươ
t). ố
ươ
ướ
ươ ả ư
i bài toán tam giác t ng quát b ng m ng ng nghĩa (l u ý ữ ằ ạ ổ ậ ị 4. Hãy th xây d ng m t b lu t ph c t p h n trong ví d đã đ ế
càng t
t ch
ế
kê các b
t ch
ế
s d ng thu t toán ký pháp ngh ch đ o Ba Lan)
ử ụ
ộ ộ ậ ả
ứ ạ ự ượ ụ t ch ỏ ơ
ế ủ ử
ẩ
ệ ươ
ử ứ
ậ ẩ 5. Hãy cài đ t các frame đ c t ỏ
ặ ả ọ ằ ặ ng hình h c b ng k thu t h
ậ ướ
ộ ủ
các đ i t
ố ượ
ạ ỹ
ự ữ ậ c trình bày dùng
đ chu n đoán h ng hóc c a máy tính. Vi
ng trình ng d ng b lu t này
ộ ậ
ụ
ể
trong vi c chu n đoán h ng hóc c a máy tính (s dùng thu t toán suy di n lùi).
ễ
ố
ng đ i
ữ
ng trong ngôn ng l p trình mà b n quen dùng. Hãy xây d ng m t ngôn ng
ệ
i dùng có th s d ng các frame này trong vi c ể ử ụ t
ượ
script đ n gi n cho phép ng
ả
gi i m t s bài toán hình h c đ n gi n. ơ
ộ ố ả ườ
ọ ơ ả CH NG 3 ƯƠ 1) Cho b ng s li u sau ố ệ ả ườ ộ ị Hãy xây d ng cây đ nh danh và tìm lu t đ xác đ nh m t ng
ị
ự
Châu Á b ng hai ph
ươ
ằ i là Châu Âu hay
ạ
ng pháp vector đ c tr ng c a Quinlan và đ đo h n lo n. ậ ể
ặ ư ủ ộ ỗ STT Dáng Cao Gi iớ Châu 1 To TB Nam Á 2 Cao Nam Á Nhỏ 3 TB Nam Âu Nhỏ 4 To Cao Nam Âu 5 TB Âu Nhỏ Nữ 6 Cao Nam Âu Nhỏ 105 7 Âu Nhỏ Cao Nữ TTNT 8 To TB Âu Nữ ế ươ ệ ặ ổ
ng trình yêu c u ng ọ ự
ư ườ ầ ụ ỗ ự
ng trình cài đ t t ng quát thu t toán h c d a trên vi c xây d ng
ậ
i dùng đ a vào danh sách các thu c
ộ
ộ
t c các giá tr c a m i thu c
ị ủ
ẽ ệ
t
ng trình s li
ươ ấ
ầ ấ ậ ệ ố ẽ ư ườ ị t ch
2)* Vi
cây đ nh danh. Ch
ươ
ị
tính d n xu t, thu c tính m c tiêu cùng v i t
ộ
ẫ
ớ ấ ả
i dùng cung c p b ng s li u quan sát. Ch
tính; yêu c u ng
ả
ố ệ
ườ
ầ
b ng s li u. Sau đó, yêu c u
c t
kê lên màn hình các lu t mà nó tìm đ
ố ệ
ượ ừ ả
ng
ế
ng h p c n xác đ nh, h th ng s đ a ra k t
ườ
ợ ầ
lu n c a tr
ậ ủ i dùng nh p vào các tr
ậ
ng h p này.
ợ ườ L u ý : Nên s d ng m t h qu n tr CSDL đ cài đ t ch ng trình này. ộ ệ ử ụ ư ể ả ặ ị ươ 106END;
Hình : Bài toán 4 kh i l p ph
THEN
IF (Gtrái + Gph i + Gtrên + Gd
ả
ELSE
THEN
IF Gph i + Gd
ả
ELSE
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 đ
ạ
tr ng thái hi n hành (Ti) là tr ng thái kh i đ u (T
2) L p l
ặ ạ
ti p (Tk) nào t
a) Đ t S b ng t p t
b) Xác đ nh Tkmax là tr ng thái t
Mã gi
ả
END;
ELSE BEGIN
Hình : Các tình hu ng khó khăn cho tìm ki m leo đèo.
Hình : M t tr
Hình M t tr
Hình : Tr ng thái kh i đ u và tr ng thái k t thúc
ở ầ
Hình Minh h a thu t gi
1. Đ t ặ OPEN ch a tr ng thái kh i đ u.
2. Cho đ n khi tìm đ
ế
2.a. Ch n tr ng thái
t nh t
t
ố
ấ (Tmax) trong OPEN (và xóa Tmax kh i OPEN)
2.b. N u Tmax là tr ng thái k t thúc thì thoát.
2.c. Ng
m i tr ng thái k ti p Tk th c hi n :
ế ế
ỗ ạ
Tính f(Tk); Thêm Tk vào OPEN
1. Đ t ặ OPEN ch a tr ng thái kh i đ u.
2. Cho đ n khi tìm đ
ế
giá tr g nh nh t
ỏ ấ trong OPEN (và xóa Tmax kh iỏ
ị
2.a. Ch n tr ng thái (Tmax) có
OPEN)
2.b. N u Tmax là tr ng thái k t thúc thì thoát.
2.c. Ng
m i tr ng thái k ti p Tk th c hi n :
ế ế
ỗ ạ
g(Tk) = g(Tmax) + cost(Tmax, Tk);
1. Đ t ặ OPEN ch a tr ng thái kh i đ u.
2. Cho đ n khi tìm đ
ế
giá tr f nh nh t
ỏ ấ trong OPEN (và xóa Tmax kh iỏ
ị
2.a. Ch n tr ng thái (Tmax) có
OPEN)
2.b. N u Tmax là tr ng thái k t thúc thì thoát.
2.c. Ng
m i tr ng thái k ti p Tk th c hi n :
ế ế
ỗ ạ
Tính h’(Tk)
f(Tk) = g(Tk) + h’(Tk);
1. Đ t OPEN ch ch a T0. Đ t g(T0) = 0, h’(T0) = 0 và f’(T0) = 0.
ặ
Đ t CLOSE là t p h p r ng.
2. L p l
2.a. N u OPEN r ng : bài toán vô nghi m, thoát.
2.b. Ng
2.b.1. L y Tmax ra kh i
CLOSE.
2.b.2. N u Tmax
ế
2.b.3. N u Tmax không ph i là TG. T o ra danh sách
ạ
ả
ti p c a Tmax. G i m t tr ng thái này là Tk. V i m i Tk, làm các b
ỗ
ộ ạ
2.b.3.1. Tính g(Tk) = g(Tmax) + cost(Tmax, Tk).
2.b.3.2. N u t n t
2.b.3.3. N u t n t
Lan truy nề s thay đ i giá tr g, f’ cho t
ự
tr ng thái k ti p c a Ti ( t
ế ế ủ
ạ
l u tr trong CLOSE và OPEN.
ư
2.b.3.4. N u Tk
Ban đ u : ầ
OPEN = {(Arad,g= 0,h’= 0,f’= 0)}
CLOSE = {}
OPEN = {}
CLOSE = {(Arad,g= 0,h’= 0,f’= 0)}
h’(Sibiu) = 253
g(Sibiu) = g(Arad)+cost(Arad,Sibiu)
= 0+140= 140
f’(Sibiu) = g(Sibiu)+h’(Sibiu)
= 140+253 = 393
Cha(Sibiu) = Arad
h’(Timisoara) = 329
g(Timisoara) = g(Arad)+cost(Arad, Timisoara)
= 0+118= 118
f’(Timisoara) = g(Timisoara)+ h’(Timisoara)
= 118+329 = 447
Cha(Timisoara) = Arad
h’(Zerind) = 374
g(Zerind) = g(Arad)+cost(Arad, Zerind)
= 0+75= 75
f’(Zerind) = g(Zerind)+h’(Zerind)
= 75+374 = 449
Cha(Zerind) = Arad
OPEN = {(Sibiu,g= 140,h’= 253,f’= 393,Cha= Arad)
(Timisoara,g= 118,h’= 329,f’= 447,Cha= Arad)
(Zerind,g= 75,h’= 374,f’= 449,Cha= Arad)}
CLOSE = {(Arad,g= 0,h’= 0,f’= 0)}
OPEN = {(Timisoara,g= 118,h’= 329,f’= 447,Cha= Arad)
(Zerind,g= 75,h’= 374,f’= 449,Cha= Arad)}
CLOSE = {(Arad,g= 0,h’= 0,f’= 0)
(Sibiu,g= 140,h’= 253,f’= 393,Cha= Arad)}
h’(Arad) = 366
g(Arad) = g(Sibiu)+cost(Sibiu,Arad)
= 140+140= 280
f’(Arad) = g(Arad)+h’(Arad)
= 280+366 = 646
h’(Fagaras) = 178
g(Fagaras) = g(Sibiu)+cost(Sibiu, Fagaras) = 140+99= 239
f’(Fagaras) = g(Fagaras)+ h’(Fagaras)
= 239+178= 417
h’(Oradea) = 380
g(Oradea) = g(Sibiu)+cost(Sibiu, Oradea)
= 140+151 = 291
f’(Oradea) = g(Oradea)+ h’(Oradea)
= 291+380 = 671
h’(R.Vilcea) = 193
g(R.Vilcea) = g(Sibiu)+cost(Sibiu, R.Vilcea)
= 140+80 = 220
f’(R.Vilcea) = g(R.Vilcea)+ h’(R.Vilcea)
= 220+193 = 413
OPEN = {(Timisoara,g= 118,h’= 329,f’= 447,Cha= Arad)
(Zerind,g= 75,h’= 374,f’= 449,Cha= Arad)
(Fagaras,g= 239,h’= 178,f’= 417,Cha= Sibiu)
(Oradea,g= 291,h’= 380,f’= 617,Cha= Sibiu)
(R.Vilcea,g= 220,h’= 193,f’= 413,Cha= Sibiu)}
CLOSE = {(Arad,g= 0,h’= 0,f’= 0)
(Sibiu,g= 140,h’= 253,f’= 393,Cha= Arad)}
h’(Sibiu) = 253
g(Sibiu) = g(R.Vilcea)+ cost(R.Vilcea,Sibiu)
= 220+80= 300
f’(Sibiu) = g(Sibiu)+h’(Sibiu)
= 300+253 = 553
h’(Craiova) = 160
g(Craiova) = g(R.Vilcea)+ cost(R.Vilcea, Craiova)
= 220+146= 366
f’(Craiova) = g(Fagaras)+h’(Fagaras)
= 366+160= 526
h’(Pitesti) = 98
g(Pitesti) = g(R.Vilcea)+ cost(R.Vilcea, Pitesti)
= 220+97 = 317
f’(Pitesti) = g(Oradea)+h’(Oradea)
= 317+98 = 415
OPEN = {(Timisoara,g= 118,h’= 329,f’= 447,Cha= Arad)
(Zerind,g= 75,h’= 374,f’= 449,Cha= Arad) (Fagaras,g=
239,h’= 178,f’= 417,Cha= Sibiu)
(Oradea,g= 291,h’= 380,f’= 617,Cha= Sibiu) (Craiova,g=
366,h’= 160,f’= 526,Cha= R.Vilcea)
(Pitesti,g= 317,h’= 98,f’= 415,Cha= R.Vilcea) }
CLOSE = {(Arad,g= 0,h’= 0,f’= 0)
(Sibiu,g= 140,h’= 253,f’= 393,Cha= Arad)
(R.Vilcea,g= 220,h’= 193,f’= 413,Cha= Sibiu) }
h’(Bucharest) = 0
g(Bucharest) = g(Pitesti)+cost(Pitesti, Bucharest)
= 317+100= 418
f’(Bucharest) = g(Fagaras)+h’(Fagaras)
= 417+0= 417
Cha(Bucharest) = Pitesti
Cha(R.Vilcea) = Sibiu
Cha(Sibiu) = Arad
h’(Pitesti) = 98
g(Pitesti) = g(TP)+cost(TP, Pitesti)
= 240+75= 315
f’(Pitesti) = g(TP)+h’(Pitesti) = 315+98= 413
OPEN = {(Timisoara,g= 118,h’= 329,f’= 447,Cha= Arad)
(Zerind,g= 75,h’= 374,f’= 449,Cha= Arad)
(Fagaras,g= 239,h’= 178,f’= 417,Cha= Sibiu)
(Oradea,g= 291,h’= 380,f’= 617,Cha= Sibiu)
(Craiova,g= 366,h’= 160,f’= 526,Cha= R.Vilcea)
(Pitesti,g= 315,h’= 98,f’= 413,Cha= TP) }
CLOSE = {(Arad,g= 0,h’= 0,f’= 0)
(Sibiu,g= 140,h’= 253,f’= 393,Cha= Arad)
(R.Vilcea,g= 220,h’= 193,f’= 413,Cha= Sibiu)
}
A. T NG QUAN TRÍ TU NHÂN T O
Ổ
Ạ
Ệ
I. M Ở Đ U Ầ
II. THÔNG TIN, D LI U VÀ TRI TH C
Ữ Ệ
Ứ
I
U
R
5
10
2
2.5
20
8
4
12
3
7.3
14.6
2
Ộ
Ậ
ƯƠ
NG PHÁP BI U DI N TRI
Ễ
Ễ
III. THU T TOÁN – M T PH
TH C? Ứ
Ề Ằ
Ớ
Ả
Ế
Ấ Đ B NG CÁCH
IV. LÀM QUEN V I CÁCH GI I QUY T V N
CHUY N GIAO TRI TH C CHO MÁY TÍNH
Ứ
Ể
Vx = 3, Vy = 4 và z = 2
2
B. CÁC PH
NG PHÁP BI U DI N TRI TH C TRÊN MÁY TÍNH
ƯƠ
Ứ
Ễ
Ễ
V. LOGIC M NH
Đ Ề
Ệ
VI. LOGIC V T
Ị Ừ
...
a) B ("An", "Bình") có giá tr đúng (Anh là b c a Bình)
ị
b) Anh("Tú", "Bình") có giá tr đúng (Tú là anh c a Bình)
Đ N LOGIC M NH Đ
Ế
Ệ
Ề
VII. M T S THU T GI I LIÊN QUAN
Ậ
Ộ Ố
Ả
q (cid:218) (cid:216)
r (cid:218) s (cid:218) q
Ví d : ụ p (cid:218) (cid:216)
Ứ Ử Ụ
Ậ
Ẫ
Ấ
Ễ
Ể
VIII. BI U DI N TRI TH C S D NG LU T D N XU T (LU T
Ậ
SINH)
S ki n ban đ u :
ự ệ
ầ H, K
T p các lu t :
ậ
ậ
B1 : Rút g n v ph i
B2 : Phân rã các lu tậ
B3 : Lo i b lu t th a
ạ ỏ ậ
B4 : Rút g n v trái
X. BI U DI N TRI TH C S D NG M NG NG NGHĨA
Ứ Ử Ụ
Ữ
Ạ
Ễ
Ễ
(1)
(2)
(3)
(4)
(5)
-1
0
0
-1
0
-1
-1
0
-1
0
0
-1
0
-1
0
a
-1
0
-1
0
0
b
-1
-1
-1
0
0
c
0
-1
-1
0
-1
S
0
0
-1
0
-1
hC
0
0
0
0
-1
(1)
(2)
(3)
(4)
(5)
1
0
0
1
0
1
1
0
1
0
0
-1
0
-1
0
a
1
0
1
1
0
b
-1
-1
-1
0
0
c
0
-1
-1
0
-1
S
0
0
-1
0
-1
hC
0
0
0
0
-1
(1)
(2)
(3)
(4)
(5)
1
0
0
1
0
1
1
0
1
0
0
-1
0
-1
0
a
1
0
1
1
0
b
1
1
1
0
0
c
0
-1
-1
0
-1
S
0
0
-1
0
-1
hC
0
0
0
0
-1
(1)
(2)
(3)
(4)
(5)
1
0
0
1
0
1
1
0
1
0
0
1
0
1
0
a
1
0
1
1
0
b
1
1
1
0
0
c
0
-1
-1
0
-1
S
0
0
-1
0
-1
hC
0
0
0
0
-1
(1)
(2)
(3)
(4)
(5)
1
0
0
1
0
1
1
0
1
0
0
1
0
1
0
A
1
0
1
1
0
B
1
1
1
0
0
C
0
1
1
0
1
S
0
0
-1
0
-1
hC
0
0
0
0
-1
(1)
(2)
(3)
(4)
(5)
1
0
0
1
0
1
1
0
1
0
0
1
0
1
0
a
1
0
1
1
0
b
1
1
1
0
0
c
0
1
1
0
1
S
0
0
1
0
1
hC
0
0
0
0
-1
XI. BI U DI N TRI TH C B NG FRAME
Ứ Ằ
Ể
Ễ
XII. BI U DI N TRI TH C B NG SCRIPT
Ứ Ằ
Ể
Ễ
XIII. PH I H P NHI U CÁCH BI U DI N TRI TH C
Ố Ợ
Ứ
Ễ
Ề
Ể
ủ
ể
ế
ươ
ể
ng pháp bi u
B ng sau cho chúng ta m t s u và khuy t đi m c a các ph
di n tri th c đã đ
ộ ố ư
c trình bày.
ả
ễ
ượ
ứ
P.Pháp
u đi m
Nh
Ư ể
ượ
c đi m
ể
Ch
ng 3 M Đ U V QUAN MÁY H C
ươ
Ở Ầ
Ọ
Ề
I. TH NÀO LÀ MÁY H C ?
Ọ
Ế
II. H C B NG CÁCH XÂY D NG CÂY Đ NH DANH
Ọ Ằ
Ự
Ị
I. TH NÀO LÀ MÁY H C ?
Ọ
Ế
Hình 3.1 : H c theo tr
ọ
ẫ
t p m u.
g i là
ậ
ọ
Đ NH DANH
II. H C B NG CÁCH XÂY D NG CÂY
Ị
Ọ Ằ
Ự
Tên
Tóc
Ch.Cao
K t quế
ả
Dùng
kem?
Cân
N ngặ
... ¨
R), b
4
i tóc vàng là :
2
i tóc vàng và cháy n ng là :
2
3
i tóc nâu là :
0
i tóc nâu và cháy n ng là :
3
Tên
Ch.Cao
K t quế
ả
Dùng
kem?
Cân
N ngặ
Không cháy n ngắ
Cháy n ngắ
Màu vàng
Màu khác
(có dùng kem) fi
không cháy n ngắ
A1 và A2 và … và An fi
R
R
R
Ai
Ai
BÀI T P Ậ
CH
NG 1
ƯƠ
CH
NG 2
ƯƠ
GS.TSKH. Hoàng Kiếm
Ths. Đinh Nguyễn Anh Dũng