Đ tài: Xây d ng ch ng trình minh h a thu t toán A* ươ
GVHD: Nông Th Hoa
M C L C
L I NÓI Đ U
M c dù trong các th k 18, 19 và đ u th k 20, s hình th c hóa trong khoa h c ế ế
tính toán đã t o đi u ki n tiên quy t v m t trí tu cho vi c nghiên c u ế Trí tu nhân
t o, nh ng ph i cho đ n th k 20 cùng v i s ra đ i c a máy tính s thì ư ế ế Trí tu nhân
t o m i tr thành m t ngành khoa h c s c s ng. M t thành ph n không th thi u ế
đ c c a ượ Trí tu nhân t o vi c ng c máy tính s nh m t ph ng ti n ch n ư ươ
l a đ t o ra th nghi m c thuy t v trí tu . Hai m i quan tâm n n t ng nh t ế
c a các nhà nghiên c u Ttu nhân t o bi u di n tri th c tìm ki m. S quan ế
tâm th nh t chú ý đ n v n đ n m b t theo m t ngôn ng tri th c đ y đ mà hành vi ế
thông minh đòi h i. Trong khi đó, tìm ki m thu t gi i quy t v n đ theo ch ế ế
kh o sát có h th ng m t không gian tr ng thái bài tn, t c là các giai đo n tu n t
ch n l a trong quá trình gi i quy t v n đ . ế
Trong các chi n l c tìm ki m, ng i ta bi u di n q trình gi i quy t v n đế ượ ế ườ ế
nh m t quá trình tìm ki m đ ng đi trên m t đ th không gian tr ng thái mà trong đó:ư ế ườ
m i tr ng thái bài toán đ c xem nh m t nút c a đ th hay còn g i là m t tr ng thái ượ ư
c đ ng chuy n tr ng thái khi áp d ng các phép toán h p l o m t tr ng tháiườ
o đó s chuy n bài toán t tr ng thái này sang tr ng thái khác đ c g i là các liên k t ượ ế
c a đ th . Đây không ph i ch là m t trong nh ng kĩ thu t hi u qu nh quy t c và
chính xác c a nó làm cho vi c cài đ t trên máy tính mang tính tr c ti p. ế
Trong bài t p l n y, em tìm hi u v Thu t toán tìm ki m A* ế và s d ng ngôn
ng l p trình Visual Basic đ xây d ng ch ng trình minh h a cho thu t toán. D a trên ươ
s ch b o t n tình c a c th y cô giáo và s giúp đ c a c b n cùng l p, d a trên
Sinh viên th c hi n: Ngô Hoàng Liêm
1
L p ĐHCQ K6B
Đ tài: Xây d ng ch ng trình minh h a thu t toán A* ươ
GVHD: Nông Th Hoa
nh ng ki n th c đã h c, em đã hoàn thành đ tài y tuy nhiên v n n nhi u sai sót, ế
r t mong s đóng p ý ki n c a c th y các b n đ đ i c a em đ c ế ượ
hoàn thi n h n. ơ
Em xin chân thành c m n! ơ
Ph n I: THUY T C S Ơ
I – TRÍ TU NHÂN T O LÀ GÌ
Thu t ng trí tu nhân t o đ c John McCarthy đ a ra trong h i th o ượ ư
Dartmouth vào a năm 1956. Đây đ c xem th i đi m ra đ i th t s c a lĩnhượ
v c nghiên c u trí tu nhân t o (TTNT).
Trong các sách vi t v TTNT các năm g n đây, các c gi đã đ a ra nhi u đ nhế ư
nghĩa v TTNT, nh ng nhìn chung, ta có th hi u: “TTNT là s thi t k và nghiên c u ư ế ế
các ch ng trình máy tính ng x m t cách thông minh. Các ch ng trình này đ c xâyươ ươ ượ
d ng đ th c hi n các nh vi khi th c hi n ng i đ ng v t chúng ta xem ườ
thông minh” (“Dean, Allen and Aloimonos, 1995).
Hi n nay nhi u nhà nghiên c u quan ni m r ng, TTNT lĩnh v c nghiên c u s
thi t k các tác nhân thông minh (intelligent agent). Tác nhân thông minh b t c cái gìế ế
t n t i trong môi tr ng hành đ ng m t cách thông minh. M c tiêu khoa h c c a ườ
TTNT hi u đ c b n ch t c nh vi thông minh. M c tiêu th c ti n, công ngh ượ
c a TTNT là xây d ngn các h thông minh, các máy thông minh.
M t s ngành khoa h c khác cũng nghiên c u các năng l c đ c xem là thông minh ượ
c a con ng i nh : Tri t h c, Tâm lý h c… Nh ng khác v i c ngành khoa h c trên, ườ ư ế ư
TTNT là m t ngành c a khoa h c máy tính – nghiên c u x lý thông tin b ng máy tính.
Do đó, TTNT đ t ra m c tiêu nghiên c u: m th o đ hi u đ c các nh vi thông ế ượ
minh b ng thu t toán, r i nghiên c u c ph ng pháp cài đ t c ch ng trình có th ươ ươ
Sinh viên th c hi n: Ngô Hoàng Liêm
2
L p ĐHCQ K6B
Đ tài: Xây d ng ch ng trình minh h a thu t toán A* ươ
GVHD: Nông Th Hoa
th c hi n đ c các hành vi thông minh. Nh v y chúng ta c n y d ng các mô hình ượ ư
tính toán (computational models) ph c v cho vi c gi i thích, t c hành vi thông
minh b ng thu t toán, ti p theo ta c n ch ra tính hi u qu , nh kh thi c a thu t toán ế
th c hi n m t nhi m v t đó đ a ra các ph ng pháp cài đ t. ư ươ
II – GI I QUY T V N Đ B NGM KI M
V n đ tìm ki m, m t ch t ng quát, có th hi u là tìm m t đ i t ng th a mãn ế ượ
m t s đòi h i o đó, trong m t t p h p r ng l n các đ i t ng. Trong các lĩnh v c ượ
nghiên c u c a trí tu nn t o, chúng ta th ng xuyên ph i đ i đ u v i v n đ tìm ườ
ki m. Đ c bi t trong l p k ho ch và h c máy, tìm ki m đóng vai trò r t quan tr ng.ế ế ế
Trong khuôn kh ch ng trình gi ng d y c a nhà tr ng, chúng ta s đ c tìm ươ ườ ượ
hi u các k thu t sau:
c k thu t tìm ki m mù. ế
c k thu t tìm ki m kinh nghi m (tìm ki m heuristic). ế ế
c k thu t tìm ki m t i u. ế ư
c ph ng pháp tìm ki m có đ i th .ươ ế
III – CÁC CHI N L C TÌM KI M T I U ƯỢ Ư
V n đ tìm ki m t i u, m t ch t ng quát, th phát bi u nh sau: m t đ i ế ư ư
t ng x trong không gian tìm ki m đ c gán v i m t s đo giá tr c a đ i t ng đóượ ế ượ ượ
f(x), m c tiêu c a ta là tìm đ c đ i t ng có giá tr ượ ượ f(x) l n nh t (ho c nh nh t) trong
không gian tìm ki m. Hàm ếf(x) đ c g i là hàm m c tiêu.ượ
c chi n l c tìm ki m bao g m:ế ượ ế
c k thu t tìm đ ng đi ng n nh t trong không gian tr ng thái: Thu t tn ườ
A*, thu t toán nhánh – và – c n.
Sinh viên th c hi n: Ngô Hoàng Liêm
3
L p ĐHCQ K6B
Đ tài: Xây d ng ch ng trình minh h a thu t toán A* ươ
GVHD: Nông Th Hoa
c k thu t tìm ki m đ i t ng t t nh t: m ki m leo đ i, m ki m ế ượ ế ế
Gradient, tìm ki m mô ph ng luy n kim.ế
Tìm ki m b t ch c s ti n hóa: Thu t toán di truy n.ế ướ ế
3.1 – M t s quy c trong bài toán tìm đ ng đi ướ ườ
Giá tr c a cung (a,b) là đ i đ ng n i t a đ n b. ườ ế
Đ dài đ ng đi t tr ng thái đ u đ n tr ng thái k t thúc là t ng đ i c ườ ế ế
cung trên đ ng đi.ườ
Không gian tìm ki m: T t c các đ ng đi t tr ng thái đ u đ n tr ng tháiế ườ ế
đích.
3.2 – Xây d ng hàm đánh giá
Gi s u là m t tr ng thái t i (đi t tr ng thái đ u đ n ế u), xây d ng các hàm:
g(u): đánh giá đ dài đ ng đi t tr ng thái đ u đ n u. ườ ế
h(u): đánh giá đ dài đ ng đi t u đ n tr ng thái đích. ườ ế
f(u) = g(u) + h(u): đánh giá đ i đ ng đi t tr ng thái đ u đ n tr ng thái ườ ế
đích mà đi qua u.
IV – THU T TN A*
Thu t toán A* thu t toán s d ng k thu t m ki m t t nh t đ u tiên v i hàm ế
đánh giá f(u). T c là: trong c tr ng thái ch phát tri n, ch n tr ng thái giá tr hàm
đánh giá nh nh t (ho c l n nh t) đ phát tri n ti p. Đ nh đ c phát tri n có th ế ượ
m c hi n t i ho c các m c trên.
4.1 – Thu t toán
1. Kh i t o danh sách L ch ch a tr ng thái ban đ u;
2. Loop do
Sinh viên th c hi n: Ngô Hoàng Liêm
4
L p ĐHCQ K6B
Đ tài: Xây d ng ch ng trình minh h a thu t toán A* ươ
GVHD: Nông Th Hoa
2.1. If L r ng then
{ thôngo th t b i; stop;}
2.2. Lo i tr ng thái u đ u danh sách L;
2.3. if u là tr ng thái đích then
{ thôngo thành công; stop;}
2.4. for m i tr ng thái v k u do
{ g(v) ← g(u) + k(u,v);
f(v) ← g(v) + h(v);
Đ t v vào danh sách L; }
2.5. S p x p L theo th t tăng d n c a hàm f sao cho tr ng thái có ế
giá tr c a hàm f nh nh t đ u danh sách;
End loop;
4.2 – M t s nh n xét v thu t toán A*
Chúng ta đ a ra m t s nh n xét v thu t tn A* nh sau:ư ư
Ng i ta ch ng minh đ c r ng, n u m đánh giá ườ ượ ế h(u) đánh giá th p (tr ng ườ
h p đ c bi t, h(u) = 0 v i m i tr ng thái u) thì thu t toán A* là thu t toán t i u ư , t c
nghi m mà nó tìm ra ngi m t i u. Ngoài ra, n u đ i c a c cung không nh ư ế
h n m t s d ng δ o đó thì thu t toán A* là thu t toán ơ ươ đ y đ theo nghĩa r ng, nó
luôn d ng và tìm ra cây nghi m.
Trong tr ng h p hàm đánh giá ườ h(u) = 0 v i m i u, thu t toán A* chính thu t
toán tìm ki m t t nh t đ u tiên v i hàm đánh gế g(u).
Thu t toán A* đã đ c ch ng t r ng thu t toán hi u qu nh t trong s các ư
thu t toán đ y đ t i u cho v n đ tìm ki m đ ng đi ng n nh t. ư ế ườ
Sinh viên th c hi n: Ngô Hoàng Liêm
5
L p ĐHCQ K6B