BÀI 1:
T NG QUAN TRÍ TU NHÂN T O
(3 ti t)
1. Gi i thi u chung
Trí tu nhân t o hay trí thơng minh nhân t o (Artificial Intelligence hay machine
intelligence - AI) là trí tu
ng này th
ng dùng
c bi u di n b i b t c m t h th ng nhân t o nào. Thu t
nói
n các máy tính có m c ích khơng nh t
nh và ngành
khoa h c nghiên c u v các lý thuy t và ng d ng c a trí tu nhân t o.Tuy r ng trí thơng
minh nhân t o có ngh a r ng nh là trí thơng minh trong khoa h c vi n t
ng, nó là m t
trong nh ng ngành tr ng y u c a tin h c. Trí thơng minh nhân t o liên quan
x , s h c h i và kh n ng thích ng thơng minh c a máy móc. Các ví d
g m các tác v
n cách c
ng d ng bao
i u khi n, l p k ho ch và l p l ch (scheduling), kh n ng tr l i các câu
h i v ch!n oán b nh, tr l i khách hàng v các s n ph!m c a m t công ty, nh n d ng
ch vi t tay, nh n d ng ti ng nói và khn m"t. B i v y, trí thơng minh nhân t o ã tr
thành m t môn h c, v#i m c ích chính là cung c p l i gi i cho các v n
th c t . Ngày nay, các h th ng nhân t o
c dùng th
c a cu c s ng
ng xuyên trong kinh t , y d
c,
các ngành k$ thu t và quân s , c%ng nh trong các ph&n m m máy tính thơng d ng trong
gia ình và trị ch'i i n t .
Các tr
ng phái trí tu nhân t o
Trí tu nhân t o (TTNT) chia thành hai tr
ng phái t duy: TTNT truy n
th ng và Trí tu tính tốn.
TTNT truy n th ng h&u nh bao g m các ph 'ng pháp hi n
c phân lo i là các
ph 'ng pháp h c máy (machine learning), "c tr ng b i hình th c hóa (formalism) và
phân tích th ng kê. Nó cịn
c bi t v#i các tên TTNT bi u t
ng, TTNT logic, TTNT
ng n n(p (neat AI) và TTNT c) i n (Good Old Fashioned Artificial Intelligence). Các
ph 'ng pháp g m có:
• H chun gia: áp d ng các kh n ng suy lu n
chuyên gia có th x lý các l
t t#i m t k t lu n. M t h
ng l#n thông tin ã bi t và
a ra các k t lu n
d a trên các thơng tin ó. Clippy ch 'ng trình tr giúp có hình cái k*p gi y c a
Microsoft Office là m t ví d . Khi ng
h #ng nh t
nh và
i dùng gõ phím, Clippy nh n ra các xu
a ra các g i ý.
• L p lu n theo tình hu ng
• M ng Bayes
1
Trí tu tính tốn nghiên c u vi c h c ho"c phát tri n l"p (ví d : tinh ch+nh tham s
trong h th ng, ch,ng h n h th ng connectionist). Vi c h c d a trên d
li u kinh
nghi m và có quan h v#i Trí tu nhân t o phi ký hi u, TTNT l n x n (scruffy AI) và tính
tốn m m (soft computing). Các ph 'ng pháp chính g m có:
• M ng neuron: các h th ng m nh v nh n d ng m-u (pattern recognition).
• H m (Fuzzy system): các k$ thu t suy lu n không ch(c ch(n, ã
d ng r ng rãi trong các h th ng công nghi p hi n
cs
i và các h th ng qu n lý
s n ph!m tiêu dùng.
• Tính tốn ti n hóa (Evolutionary computation): ng d ng các khái ni m sinh
h c nh qu&n th , bi n d và
u tranh sinh t n
t t h'n cho bài toán. Các ph 'ng pháp này th
sinh các l i gi i ngày càng
ng
c chia thành các thu t
toán ti n hóa (ví d thu t tốn gien) và trí tu b&y àn (swarm intelligence)
(ch,ng h n h ki n).
• TTNT d a hành vi (Behavior based AI): m t ph 'ng pháp mô- un
xây
d ng các h th ng TTNT b ng tay.
Ng
i ta ã nghiên c u các h th ng thơng minh lai (hybrid intelligent system),
trong ó k t h p hai tr
ng phái này. Các lu t suy di n c a h chuyên gia có th
c
sinh b i m ng n'-ron ho"c các lu t d-n xu t (production rule) t. vi c h c theo th ng kê
nh trong ki n trúc ACT-R.
Các ph 'ng pháp trí tu nhân t o th
ng
c dùng trong các cơng trình nghiên
c u khoa h c nh n th c (cognitive science), m t ngành c g(ng t o ra mơ hình nh n th c
c a con ng
i (vi c này khác v#i các nghiên c u TTNT, vì TTNT ch+ mu n t o ra máy
móc th c d ng, không ph i t o ra mô hình v ho t
ng c a b óc con ng
i).
L ch s trí tu nhân t o
/&u th k0 17, René Descartes ã
a ra quan i m r ng c' th c a
ng v t ch+ là
các c1 máy tinh x o. N m 1642, Blaise Pascal ch t o chi c máy tính c' h c &u tiên.
Charles Babbage và Ada Lovelace ã nghiên c u v các máy tính c' h c có kh n ng l p
trình
c.
Bertrand Russell và Alfred North Whitehead
Mathematica, trong ó logic hình th c ã
ã xu t b n cu n Principia
c cách m ng hóa. Warren McCulloch và
Walter Pitts xu t b n A Logical Calculus of the Ideas Immanent in Nervous Activity n m
1943 "t n n móng cho m ng n'-ron.
Th p niên 1950 là th i k2 c a nhi u ho t
ng trong l nh v c TTNT. John
McCarthy thi t l p thu t ng "artificial intelligence" trong h i th o &u tiên dành cho ch
2
này. Ơng cịn sáng ch ngơn ng l p trình Lisp. Alan Turing
a ra "Turing test" nh
là m t ph 'ng pháp ki m ch ng hành vi thông minh. Joseph Weizenbaum xây d ng
ELIZA, m t chatterbot cài "t li u pháp tâm lý Rogerian.
Trong các th p niên 1960 và 1970, Joel Moses bi u di n s c m nh c a suy di n ký
hi u trong vi c tích h p các bài tốn trong ch 'ng trình Macsyma, ch 'ng trình tốn h c
s d ng c' s tri th c &u tiên thành công. Marvin Minsky và Seymour Papert xu t b n
Perceptrons, trong ó ch ng minh các gi#i h n c a các m ng n'-ron 'n gi n, và Alain
Colmerauer phát tri n ngơn ng l p trình Prolog. Ted Shortliffe bi n di n s c m nh c a
các h th ng s d ng lu t
bi u di n tri th c và suy di n trong các ch!n oán và li u
pháp y h c trong m t ch 'ng trình mà
Moravec phát tri n chi c xe &u tiên
i khi
c g i là h chuyên gia &u tiên. Hans
c máy tính i u khi n t
ng v
t ch #ng ng i
v t.
Th p niên 1980, m ng n'-ron
(backpropagation), thu t tốn này ã
c s
c mơ t
d ng r ng rãi v#i thu t toán truy n ng
c
&u tiên b i Paul John Werbos vào n m 1974.
Th p niên 1990 ánh d u các thành t u chính trong nhi u l nh v c c a TTNT và
c th hi n
trong nhi u ng d ng a d ng. N)i ti ng nh t là Deep Blue, m t máy tính ch'i c vua ã th(ng
Garry Kasparov trong m t tr n
ki m
u 6 ván n)i ti ng n m 1997. DARPA tuyên b r ng chi phí ti t
c do cài "t các ph 'ng pháp TTNT cho vi c l p l ch cho các 'n v trong Chi n tranh
vùng V nh l&n th nh t ã bù l i
c toàn b
&u t c a chính ph M$ cho nghiên c u TTNT
k t. th p niên 1950.
2. Nh ng
c tr ng c a trí tu nhân t o
• S d ng máy tính vào suy lu n trên các ký hi u, nh n d ng qua m u, h c, và
các suy lu n khác…
• T p trung vào các v n
“khó” khơng thích h p v i các l i gi i mang tính
thu t tốn.
• Quan tâm
n các k$ thu t gi i quy t v n
chính xác, khơng
• Cho l i gi i ‘
y
s d ng các thông tin không
,m h …
t t’ ch không ph i là l i gi i chính xác hay t i u.
• S d ng heuristics
• S d ng tri th c chuyên môn
Các l nh v c ng d ng:
• Game Playing: Tìm ki m / Heuristic
• Automatic reasoning & Theorem proving: Tìm ki m / Heuristic
3
• Expert System: là h #ng phát tri n m nh m3 nh t và có giá tr
ng d ng cao
nh t.
• Planning & Robotic: các h th ng d báo, t
ng hóa
• Machine learning: Trang b kh n ng h c t p
gi i quy t v n
kho tri
th c:
Supervised : Ki m soát
c tri th c h c
c. Khơng tìm ra cái m#i.
UnSupervised:T h c, khơng ki m sốt. Có th t o ra tri th c m#i nh ng
c%ng nguy hi m vì có th h c nh ng i u khơng mong mu n.
• Natural Language Understanding & Semantic modelling: Không
tri n m nh do m c
c phát
ph c t p c a bài toán c v tri th c & kh n ng suy
lu n.
• Modeling Human performance: Nghiên c u c' ch t) ch c trí tu c a con
ng
i
áp d ng cho máy.
• Language and Environment for AI:Phát tri n công c và mơi tr
ng
xây
d ng các ng d ng AI.
• Neural network / Parallel Distributed processing: gi i quy t v n
tính toán và t c
kinh c a con ng
n ng l c
tính tốn b ng k$ thu t song song và mô ph ng m ng th&n
i.
4
BÀI 2
THU4T TOÁN - THU4T GI5I
(3 ti t LT + 3 ti t TH)
1. Khái ni m thu t toán – thu t gi i
Trong quá trình nghiên c u gi i quy t các v n
– bài toán, ng
i ta ã
a ra nh ng
nh n xét nh sau:
a) Có nhi u bài tốn cho
n nay v-n ch a tìm ra m t cách gi i theo ki u thu t
tốn và c%ng khơng bi t là có t n t i thu t tốn hay khơng.
b) Có nhi u bài tốn ã có thu t tốn
gi i nh ng khơng ch p nh n
c vì th i
gian gi i theo thu t tốn ó q l#n ho"c các i u ki n cho thu t tốn khó áp
ng.
c) Có nh ng bài toán
v-n ch p nh n
T. nh ng nh n
ni m thu t toán. Ng
c gi i theo nh ng cách gi i vi ph m thu t toán nh ng
c.
nh trên, ng
i ta ã m r ng hai tiêu chu!n c a thu t tốn: tính xác
úng (n. Vi c m r ng tính xác
thu t
i ta th y r ng c&n ph i có nh ng )i m#i cho khái
nh
i v#i thu t toán ã
nh và tính
c th hi n qua các gi i
quy và ng-u nhiên. Tính úng c a thu t tốn bây gi khơng cịn b(t bu c
m t s cách gi i bài toán, nh t là các cách gi i g&n úng. Trong th c ti n có nhi u tr
h p ng
i ta ch p nh n các cách gi i th
i v#i
ng
ng cho k t qu t t (nh ng không ph i lúc nào
c%ng t t) nh ng ít ph c t p và hi u qu . Ch,ng h n n u gi i m t bài tốn b ng thu t tốn
t i u ịi h i máy tính th c hiên nhi u n m thì chúng ta có th s6n lịng ch p nh n m t
gi i pháp g&n t i u mà ch+ c&n máy tính ch y trong vài ngày ho"c vài gi .
Các cách gi i ch p nh n
chu!n c a thu t tốn th
ng
c nh ng khơng hồn toàn áp ng &y
các tiêu
c g i là các thu t gi i. Khái ni m m r ng này c a thu t
toán ã m c a cho chúng ta trong vi c tìm ki m ph 'ng pháp
gi i quy t các bài toán
c "t ra.
M t trong nh ng thu t gi i th
ng
c
c p
n và s d ng trong khoa h c trí
tu nhân t o là các cách gi i theo ki u Heuristic.
2. C u trúc bài tốn tìm ki m
H&u h t các v n
-bài tốn ph c t p
u có d ng "tìm
nói m t cách hình th c h'n là "xu t phát t. m t +nh c a m t
qu nh t
n m t +nh nào ó". M t phát bi u khác th
ng i trong
th , tìm
th " hay
ng i hi u
ng g"p c a d ng bài toán này là :
5
Cho tr
c hai tr ng thái T0 và TG hãy xây d ng chu i tr ng thái T0, T1, T2, ..., Tn-1,
Tn = TG sao cho :
th a mãn m t i u ki n cho tr
c (th
ng là nh nh t).
Trong ó, Ti thu c t p h p S (g i là không gian tr ng thái – state space) bao g m t t
c các tr ng thái có th có c a bài tốn và cost(Ti-1, Ti) là chi phí
bi n )i t. tr ng thái
Ti-1 sang tr ng thái Ti. D nhiên, t. m t tr ng thái Ti ta có nhi u cách
tr ng thái Ti+1. Khi nói
bi n )i sang
n m t bi n )i c th t. Ti-1 sang Ti ta s3 dùng thu t ng h #ng
i (v#i ng ý nói v s l a ch n).
Mơ hình chung c a các v n
-bài toán ph i gi i quy t b ng ph
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
tr ng thái T này sang tr ng thái Tk
c bi u di n d
t
th . Chi phí c n thi t
chuy n t
i d ng các con s n m trên cung n i gi a hai nút
ng tr ng cho hai tr ng thái.
/a s các bài toán thu c d ng mà chúng ta ang mơ t
d #i d ng
ng pháp tìm ki m l i gi i.
th . Trong ó, m t tr ng thái là m t +nh c a
c các tr ng thái chính là t p h p bao g m t t c
thái Ti-1 sang tr ng thái Ti là vi c i t. +nh
+nh c a
u có th
c bi u di n
th . T p h p S bao g m t t
th . Vi c bi n )i t. tr ng
i di n cho Ti-1 sang +nh
i di n cho Ti
theo cung n i gi a hai +nh này.
3. Tìm ki m chi u sâu và tìm ki m chi u r ng
a) Tìm ki m chi u sâu (Depth First Search)
Trong tìm ki m theo chi u sâu, t i tr ng thái ( +nh) hi n hành, ta ch n m t tr ng
thái k ti p (trong t p các tr ng thái có th bi n )i thành t. tr ng thái hi n t i) làm tr ng
thái hi n hành cho
n lúc tr ng thái hi n hành là tr ng thái ích. Trong tr
ng h p t i
tr ng thái hi n hành, ta không th bi n )i thành tr ng thái k ti p thì ta s3 quay lui
6
(back-tracking) l i tr ng thái tr #c tr ng thái hi n hành (tr ng thái bi n )i thành tr ng
thái hi n hành)
)i
ch n
ng khác. N u
tr ng thái tr #c này mà c%ng không th bi n
c n a thì ta quay lui l i tr ng thái tr #c n a và c th . N u ã quay lui
n tr ng
thái kh i &u mà v-n th t b i thì k t lu n là khơng có l i gi i. Hình nh sau minh h a
ho t
ng c a tìm ki m theo chi u sâu.
Hình nh c a tìm ki m chi u sâu. Nó ch l u ý "m r ng" tr ng thái
c ch n mà không "m
r ng" các tr ng thái khác (nút màu tr!ng trong hình v").
b) Tìm ki m chi u r ng (Breath First Search)
Ng
c l i v#i tìm ki m theo ki u chi u sâu, tìm ki m chi u r ng mang hình nh c a
v t d&u loang. T. tr ng thái ban &u, ta xây d ng t p h p S bao g m các tr ng thái k
ti p (mà t. tr ng thái ban &u có th bi n )i thành). Sau ó, ng v#i m1i tr ng thái Tk
trong t p S, ta xây d ng t p Sk bao g m các tr ng thái k ti p c a Tk r i l&n l
các Sk vào S. Quá trình này c l"p l i cho
t b) sung
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.
7
Hình nh c a tìm ki m chi u r ng. T i m t b
c, m i tr ng thái
u
c m r ng, khơng b sót
tr ng thái nào.
Chi u sâu
Tính hi u qu
Chi u r ng
Hi u qu khi l i gi i n m sâu Hi u qu khi l i gi i
trong cây tìm ki m và có m t n m g&n g c c a cây
ph 'ng án ch n h #ng
chính xác. Hi u qu
chi n l
c ph
i tìm ki m. Hi u qu
c a c a chi n l
thu c vào thu c vào
ph 'ng án ch n h #ng
c ph
sâu c a
i. l i gi i. L i gi i càng
Ph 'ng án càng kém hi u xa g c thì hi u qu
qu thì hi u qu c a chi n c a chi n l
l
c càng
c càng gi m. Thu n l i gi m. Thu n l i khi
khi mu n tìm ch+ m t l i mu n tìm nhi u l i
gi i.
gi i.
L
ng b nh# s
d ng
l u tr các
Ch+ l u l i các tr ng thái Ph i l u toàn b
ch a xét
n.
các
tr ng thái.
tr ng thái
Tr
ng h p x u nh t Vét c n toàn b
Tr
ng h p t t nh t
Ph 'ng án ch n h #ng
tuy t
Vét c n toàn b .
i Vét c n toàn b .
i chính xác. L i gi i
c xác
nh m t cách tr c
ti p.
8
Tìm ki m chi u sâu và tìm ki m chi u r ng
u là các ph 'ng pháp tìm ki m có h
th ng và ch(c ch(n tìm ra l i gi i. Tuy nhiên, do b n ch t là vét c n nên v#i nh ng bài
toán có khơng gian l#n thì ta khơng th dùng hai chi n l
l
c này
th c)
c này
c. H'n n a, hai chi n
u có tính ch t "mù qng" vì chúng không chú ý
n nh ng thông tin (tri
tr ng thái hi n th i và thơng tin v
ích c&n
Các tri th c này vô cùng quan tr ng và r t có ý ngh a
h'n mà ta s(p s a bàn
t t#i cùng m i quan h gi a chúng.
thi t k các thu t gi i hi u qu
n.
9
BÀI 3
THU4T GI5I HEURISTIC
(6 ti t LT + 3 ti t TH)
1. Khái ni m hàm Heuristic
a) Khái ni m Heuristic
Heuristic là nh ng tri th c
c a con ng
c rút t+a t. nh ng kinh nghi m, “tr c giác”
i.
Heuristic có th là nh ng tri th c “ úng” hay “sai”.
Heuristic là nh ng meta knowledge và “th
ng úng”.
Trong nh ng bài tốn tìm ki m trên khơng gian tr ng thái, có 2 tr
ng h p c&n
n
heuristic:
V n
có th khơng có nghi m chính xác do các m nh
ch"t ch3 hay thi u d li u
V n
kh,ng
không phát bi u
nh k t qu .
có nghi m chính xác nh ng phí t)n tính tốn
tìm ra nghi m là quá
l#n (h qu c a bùng n1 t) h p)
Heuristic giúp tìm ki m
Heuristic
t k t qu v#i chi phí th p h'n
nh h #ng q trình tìm ki m theo h #ng mà “nó” cho r ng kh n ng
t
t#i nghi m là cao nh t. Không “sâu” c%ng khơng “r ng”
K t qu c a tìm ki m v#i Heuristic
Vi c tìm ki m theo
nh h #ng c a heuristic có k t qu t t hay x u tùy theo
heuristic “ úng” hay “sai”.
Heuristic có kh n ng b xót nghi m
Heuristic càng t t càng d-n
b) Hàm l
Hàm l
n k t qu nhanh và t t.
ng giá Heuristic
ng giá Heuristic là hàm #c l
ng phí t)n
i t. tr ng thái hi n t i
n
tr ng thái goal.
C' s
xác
Hàm l
ng giá cho k t qu
k t qu tìm
nh hàm l
ng giá là d a vào tri th c/kinh nghi m thu th p
c.
úng (g&n th c th ) hay sai (xa giá tr th c) s3 d-n
n
c t t hay x u.
Khơng có chu!n m c cho vi c ánh giá m t hàm l
Khơng có c u trúc chung cho hàm l
ng giá Heuristic vì:
ng giá
Tính úng/sai thay )i liên t c theo t.ng v n
c th
Tính úng/sai thay )i theo t.ng tình hu ng c th trong m t v n
10
Có th dùng nhi u hàm l
giá v các hàm l
ng giá khác nhau theo tình hu ng
ng
ng giá.
2. Tìm ki m leo
i
Tìm ki m leo
i nói chung th c ch t ch+ là m t tr
ng h p "c bi t c a tìm ki m
theo chi u sâu nh ng khơng th quay lui. Trong tìm ki m leo
ti p theo
c n hàm l
c quy t
i, vi c l a ch n tr ng thái
nh d a trên m t hàm Heuristic.
Quy #c g i hàm Heuristic là h, ln khơng âm
Chi phí
T t
cl
ng h’ = 6 và chi phí t i u th c s h = 4+5 = 9 ( i theo
ng 1-3-7)
ng
1) N u tr ng thái b(t &u c%ng là tr ng thái ích thì thốt và báo là ã tìm
l i gi i. Ng
2) L"p l i cho
c
c l i, "t tr ng thái hi n hành (Ti) là tr ng thái kh i &u (T0)
n khi
t
n tr ng thái k t thúc ho"c cho
n khi không t n t i
m t tr ng thái ti p theo h p l (Tk) c a tr ng thái hi n hành :
a) /"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à thốt.
b.2. N u khơng ph i là tr ng thái k t thúc nh ng t t h'n tr ng thái hi n
hành thì c p nh t nó thành tr ng thái hi n hành.
b.3. N u nó khơng t t h'n tr ng thái hi n hành thì ti p t c vịng l"p.
Gi mã:
Ti := T0; Stop :=FALSE;
WHILE Stop=FALSE DO BEGIN
IF Ti ≡ TG THEN BEGIN
c k t qu >; Stop:=TRUE;
END;
ELSE BEGIN
11
Better:=FALSE;
WHILE (Better=FALSE) AND (STOP=FALSE) DO BEGIN
IF <không t n t i tr ng thái k ti p h p l c a Ti> THEN
BEGIN
c k t qu >; Stop:=TRUE; END;
ELSE BEGIN
Tk := <m t tr ng thái k ti p h p l c a Ti>;
IF <h(Tk) t t h'n h(Ti)> THEN BEGIN
Ti :=Tk; Better:=TRUE;
END;
END;
END; {WHILE}
END; {ELSE}
END;{WHILE}
Trong m t s tr
ng h p, t t h'n là nh h'n : h’(Tk) < h’(Ti); m t s tr
khác t t h'n là l#n h'n h’(Tk) > h’(Ti)...Ch,ng h n,
i v#i bài tốn tìm
nh t gi a hai i m. N u dùng hàm h’ là hàm cho ra kho ng cách theo
gi a v trí hi n t i (tr ng thái hi n t i) và ích
ng h p
ng i ng(n
ng chim bay
n (tr ng thái ích) thì t t h'n ngh a là
nh h'n.
M t tr ng thái k ti p h p l là tr ng thái ch a
c xét
n. Gi s h c a tr ng thái
hi n t i Ti có giá tr là h(Ti) = 1.23 và t. Ti ta có th bi n )i sang m t trong 3 tr ng thái
k ti p l&n l
t là Tk1, Tk2, Tk3 v#i giá tr các hàm h t 'ng ng là h(Tk1) = 1.67, h(Tk2)
= 2.52, h’(Tk3) = 1.04. /&u tiên, Tk s3
h’(Ti) nên Tk không
c ch n. K ti p là Tk s3
ch n. Cu i cùng thì Tk3
c ch n và m nh
3. Tìm ki m leo
c gán b ng Tk1, nh ng vì h’(Tk) = h’(Tk1) >
c gán b ng Tk2 và c%ng không
c
c ch n. Nh ng gi s h’(Tk3) = 1.3 thì c Tk3 c%ng khơng
<khơng th sinh ra tr ng thái k ti p c a Ti> s3 có giá tr TRUE.
id c
V c' b n, leo
id c
ng
ng c%ng gi ng nh leo
i, ch+ khác
i m là leo
id c
ng s3 duy t t t c các h #ng i có th và ch n i theo tr ng thái t t nh t trong s 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 t t h n tr ng thái hi n hành mà nó tìm th y).
T t
ng
1) N u tr ng thái b(t &u c%ng là tr ng thái ích thì thốt và báo là ã tìm
l i gi i. Ng
c
c l i, "t tr ng thái hi n hành (Ti) là tr ng thái kh i &u (T0)
12
2) L"p l i cho
n khi
t
n tr ng thái k t thúc ho"c cho
n khi (Ti) không
t n t i m t tr ng thái k ti p (Tk) nào t t h'n tr ng thái hi n t i (Ti)
a) /"t S b ng t p t t c tr ng thái k ti p có th có c a Ti và t t h'n Ti.
b) Xác
nh Tkmax là tr ng thái t t nh t trong t p S
/"t Ti = Tkmax
Mã gi
Ti := T0;
Stop :=FALSE;
WHILE Stop=FALSE DO BEGIN
IF Ti ≡ TG THEN BEGIN
c k t qu >;
STOP :=TRUE;
END;
ELSE BEGIN
Best:=h’(Ti);
Tmax := Ti;
WHILE <t n t i tr ng thái k ti p h p l c a Ti> DO BEGIN
Tk := <m t tr ng thái k ti p h p l c a Ti>;
IF <h’(Tk) t t h'n Best> THEN BEGIN
Best :=h’(Tk);
Tmax := Tk;
END;
END;
IF (Best>Ti) THEN
Ti := Tmax;
ELSE BEGIN
c k t qu >;
STOP:=TRUE;
END;
END; {ELSE IF}
END;{WHILE STOP}
Hi u qu c a c hai thu t gi i leo
Ch t l
i 'n gi n và leo
id c
ng ph thu c vào :
ng c a hàm Heuristic.
/"c i m c a không gian tr ng thái.
Tr ng thái kh i &u.
13
So v#i leo
i u này có
i 'n gi n, leo
m b o leo
ch+ t t h'n leo
id c
id c
ng có u i m là luôn luôn ch n h #ng có tri n v ng nh t
ng ln t t h'n leo
i 'n gi n trong m t s tr
i 'n gi n không? Câu tr l i là không. Leo
ng h p mà thôi. / ch n ra
c h #ng i t t nh t, leo
ph i duy t qua t t c các h #ng i có th có t i tr ng thái hi n hành. Trong khi ó, leo
tr ng thái
u tiên t t h'n (so v#i tr ng thái hi n hành) mà nó tìm ra
ng ch n
c m t h #ng i s3 l#n h'n so v#i leo
ng s3 tìm
i. Li u
id c
ng
id c
ng
i 'n gi n ch+ ch n i theo
c. Do ó, th i gian c&n thi t
leo
id c
i 'n gi n. Tuy v y, do lúc nào c%ng ch n h #ng i t t nh t
nên leo
id c
ng th
n l i gi i sau m t s b #c ít h'n so v#i leo
i 'n gi n. Nói m t cách ng(n
g n, leo
id c
ng s3 t n nhi u th i gian h'n cho m t b #c nh ng l i i ít b #c h'n; cịn leo
th i gian h'n cho m t b #c i nh ng l i ph i i nhi u b #c h'n. /ây chính là y u t
i 'n gi n t n ít
c và m t gi a hai thu t gi i
nên ta ph i cân nh(c k$ l 7ng khi l a ch n thu t gi i.
C hai ph 'ng pháp leo núi 'n gi n và leo núi d c
ng
bài toán m"c dù l i gi i ó th c s hi n h u. C hai gi i thu t
u có kh n ng th t b i trong vi c tìm l i gi i c a
u có th k t thúc khi
t
c m t tr ng thái mà
khơng cịn tr ng thái nào t t h'n n a có th phát sinh nh ng tr ng thái này không ph i là tr ng thái ích. /i u này
s3 x y ra n u ch 'ng trình
#i m c c
i
t
a ph
nm t i mc c
a ph 'ng, m t o n 'n i u ngang.
ng (a local maximum) : là m t tr ng thái t t h'n t t c lân c n c a nó nh ng khơng
t t h'n m t s tr ng thái khác
xa h'n. Ngh a là t i m t i m c c
lân c n c a tr ng thái hi n t i
i
i
i
a ph 'ng, m i tr ng thái trong m t
u x u h n tr ng thái hi n t i. Tuy có dáng v8 c a l i gi i nh ng các c c
a ph 'ng không ph i là l i gi i th c s . Trong tr
ng h p này, chúng
c g i là nh ng ng n
i
th p.
#o n
n i u ngang (a plateau) : là m t vùng b ng ph,ng c a không gian tìm ki m, trong ó, tồn b các
tr ng thái lân c n
u có cùng giá tr .
Các tình hu ng khó kh$n cho tìm ki m leo èo.
/
i phó v#i các các i m này, ng
i ta ã
a ra m t s gi i pháp. Ta s3 tìm hi u 2 trong s các gi i pháp
này. Nh ng gi i này, không th c s gi i quy t tr n v*n v n
Ph 'ng án &u tiên là k t h p leo
mà ch+ là m t ph 'ng án c u nguy t m th i mà thôi.
i và quay lui. Ta s3 quay lui l i các tr ng thái tr #c ó và th
i theo h #ng
khác. Thao tác này h p lý n u t i các tr ng thái tr #c ó có m t h #ng i t t mà ta ã b qua tr #c ó. /ây là m t
cách khá hay
i phó v#i các i m c c
i
a ph 'ng. Tuy nhiên, do "c i m c a leo
i là "b #c sau cao h'n
b #c tr #c" nên ph 'ng án này s3 th t b i khi ta xu t phát t. m t i m quá cao ho"c xu t phát t. m t +nh
n
i mà
c l i gi i c&n ph i i qua m t "thung l%ng" th t sâu nh trong hình sau.
14
M t tr
ng h p th t b i c a leo èo k t h p quay lui.
Cách th hai là th c hi n m t b #c nh y v t theo h #ng nào ó
th
n m t vùng m#i c a khơng gian tìm
ki m. Nơm na là "b #c" liên t c nhi u "b #c" (ch,ng h n 5,7,10, …) mà t m th i "quên" i vi c ki m tra "b #c sau
cao h'n b #c tr #c". Ti p c n có v8 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
vi c nh y v t s3
ti n
n l i gi i th c s . Trong tr
ng h p chúng ta ang
a chúng ta sang m t v trí hồn tồn xa l , mà t. ó, có th s3 d-n chúng ta
khác. H'n n a, s b #c nh y là bao nhiêu và nh y theo h #ng nào là m t v n
ng khá g&n l i gi i,
n m t r(c r i ki u
ph thu c r t nhi u vào "c i m
khơng gian tìm ki m c a bài tốn.
M t tr
ng h p khó kh$n cho ph
Leo núi là m t ph 'ng pháp c c b b i vì nó quy t
ng án "nh y v t".
nh s3 làm gì ti p theo d a vào m t ánh giá v tr ng
thái hi n t i và các tr ng thái k ti p có th có (t t h n tr ng thái hi n t i, tr ng thái t t nh t t t h'n tr ng thái hi n
t i) thay vì ph i xem xét m t cách tồn di n trên t t c các tr ng thái ã i qua. Thu n l i c a leo núi là ít g"p s
bùng n) t) h p h'n so v#i các ph 'ng pháp toàn c c. Nh ng nó c%ng gi ng nh các ph 'ng pháp c c b khác
ch1 là khơng ch(c ch(n tìm ra l i gi i trong tr
ng h p x u nh t.
4. Thu t gi i u tiên t i u (BFS)
9u 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 t c các nhánh. 9u i m c a tìm ki m chi u r ng là không b sa vào các
ng d-n b
t(c (các nhánh c t). Tìm ki m u tiên t i u s3 k t h p 2 ph 'ng pháp trên cho phép ta i
theo m t con
ng duy nh t t i m t th i i m, nh ng
ng th i v-n "quan sát"
c
15
nh ng h #ng khác. N u con
ng ang i "có v8" khơng tri n v ng b ng nh ng con
ng ta ang "quan sát" ta s3 chuy n sang i theo m t trong s các con
ng này.
M t cách c th , t i m1i b #c c a tìm ki m BFS, ta ch n i theo tr ng thái có kh
n ng cao nh t trong s các tr ng thái ã
d c
c xét cho
n th i i m ó. (khác v#i leo
i
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 ti p có th
n
c t. tr ng thái hi n t i). Nh v y, v#i ti p c n này, ta s3 u tiê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
id c
ng), nh ng ta s3 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 mà ta phát hi n ra
r ng h #ng này càng i thì càng t ,
n m c nó x u h'n c nh ng h #ng mà ta ch a i,
thì ta s3 không i ti p h #ng hi n t i n a mà ch n i theo m t h #ng t t nh t trong s
nh ng h #ng ch a i. /ó là t t
ng ch
o c a tìm ki m BFS.
Ví d :
Kh i &u, ch+ có m t nút (tr ng thái) A nên nó s3
con s d #i nút là giá tr cho bi t
nh t nên nó s3
c m r ng t o ra 3 nút m#i B,C và D. Các
t t c a nút. Con s càng nh , nút càng t t. Do D là nút có kh n ng
c m r ng ti p sau nút A và sinh ra 2 nút k ti p là E và F. / n ây, ta l i th y nút B
có v8 có kh n ng nh t (trong các nút B,C,E,F) nên ta s3 ch n m r ng nút B và t o ra 2 nút G và H.
Nh ng l i m t l&n n a, hai nút G, H này
c m r ng và các nút
c ánh giá ít kh n ng h'n E, vì th s chú ý l i tr v E. E
c sinh ra t. E là I và J. : b #c k ti p, J s3
nh t. Quá trình này ti p t c cho
c m r ng vì nó có kh n ng
n khi tìm th y m t l i gi i.
/ cài "t các thu t gi i theo ki u tìm ki m BFS, ng
i ta th
ng c&n dùng 2 t p
h p sau :
16
OPEN : t p ch a các tr ng thái ã
c sinh ra nh ng ch a
ch n m t tr ng thái khác). Th c ra, OPEN là m t lo i hàng
mà trong ó, ph&n t có
hàng
c xét
n (vì ta ã
i u tiên (priority queue)
u tiên cao nh t là ph&n t t t nh t. Ng
i ta th
ng cài "t
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.
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
c xét
n. Chúng ta c&n l u tr nh ng tr ng
ng h p khi m t tr ng thái m#i
n tr #c ó. Trong tr
c t o ra l i
ng h p khơng gian tìm
ki m có d ng cây thì khơng c&n dùng t p này.
Thu t gi i BEST-FIRST SEARCH
1. /"t OPEN ch a tr ng thái kh i &u.
2. Cho
n khi tìm
c tr ng thái ích ho"c khơng cịn nút nào trong OPEN, th c
hi n :
2.a. Ch n tr ng thái t t nh 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ì thốt.
2.c. Ng
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 m1i tr ng thái k ti p Tk th c hi n :
Tính f(Tk); Thêm Tk vào OPEN
Trên th c t , c%ng nh tìm ki m chi u sâu và chi u r ng, hi m khi dùng BFS m t
cách tr c ti p. Thông th
A
ng, ng
i ta th
ng dùng các phiên b n c a BFS là AT, AKT và
*
5. Thu t gi i AT
Thu t gi i AT là m t ph 'ng pháp tìm ki m theo ki u BFS v#i
tr hàm g – t)ng chi u dài con
T t
ng ã i t. tr ng thái b(t &u
t t c a nút là giá
n tr ng thái hi n t i.
ng
1. /"t OPEN ch a tr ng thái kh i &u.
2. Cho
n khi tìm
c tr ng thái ích ho"c khơng cịn nút nào trong OPEN, th c
hi n :
2.a. Ch n tr ng thái (Tmax) có giá tr g nh nh t trong OPEN (và xóa Tmax
kh i OPEN)
2.b. N u Tmax là tr ng thái k t thúc thì thốt.
2.c. Ng
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 m1i tr ng thái k ti p Tk th c hi n :
g(Tk) = g(Tmax) + cost(Tmax, Tk); Thêm Tk vào OPEN.
17
Chú ý: Vì ch s% d&ng hàm g (mà khơng dùng hàm
cl
ng h’)
ánh giá
t tc a
m t tr ng thái nên ta c'ng có th xem AT ch là m t thu t toán.
6. Thu t gi i AKT (Algorithm for Knowlegeable Tree Search)
Thu t gi i AKT m r ng AT b ng cách s d ng thêm thông tin #c l
ng h’. / t t
c a m t tr ng thái f là t)ng c a hai hàm g và h’.
Thu t gi i AKT
1. /"t OPEN ch a tr ng thái kh i &u.
2. Cho
n khi tìm
c tr ng thái ích ho"c khơng cịn nút nào trong OPEN, th c
hi n :
2.a. Ch n tr ng thái (Tmax) có giá tr f nh nh t trong OPEN (và xóa Tmax
kh i OPEN)
2.b. N u Tmax là tr ng thái k t thúc thì thốt.
2.c. Ng
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 m1i tr ng thái k ti p Tk th c hi n :
g(Tk) = g(Tmax) + cost(Tmax, Tk);
Tính h’(Tk)
f(Tk) = g(Tk) + h’(Tk);
Thêm Tk vào OPEN.
7. Thu t gi i A*
A* là m t phiên b n "c bi t c a AKT áp d ng cho tr
có s d ng thêm t p h p CLOSE
l u tr nh ng tr
r ng AKT b ng cách b) sung cách gi i quy t tr
có s6n trong OPEN ho"c CLOSE. Khi xét
giá tr c' b n g, h’, f’
ph n ánh
ng h p
ng h p ã
th . Thu t gi i A*
c xét
n. A* m
ng h p khi "m " m t nút mà nút này ã
n m t tr ng thái Ti bên c nh vi c l u tr 3
t t c a tr ng thái ó, A* cịn l u tr thêm hai thơng
s sau :
Tr ng thái cha c a tr ng thái Ti (ký hi u là Cha(Ti) : cho bi t tr ng thái d-n
tr ng thái Ti. Trong tr
ng h p có nhi u tr ng thái d-n
cho chi phí i t. tr ng thái kh i &u
n
n Ti thì ch n Cha(Ti) sao
n Ti là th p nh t, ngh a là :
g(Ti) = g(Tcha) + cost(Tcha, Ti) là th p nh t.
Danh sách các tr ng thái k ti p c a Ti : danh sách này l u tr các tr ng thái k
ti p Tk c a Ti sao cho chi phí
n Tk thơng qua Ti t. tr ng thái ban &u là th p
nh t. Th c ch t thì danh sách này có th
tr ng thái
c tính ra t. thu c tính Cha c a các
c l u tr . Tuy nhiên, vi c tính tốn này có th m t nhi u th i gian
18
(khi t p OPEN, CLOSE
c m r ng) nên ng
i ta th
ng l u tr ra m t danh
sách riêng.
Thu t gi i A*
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 r1ng.
2.
L"p l i các b #c sau cho
n khi g"p i u ki n d.ng.
2.a. N u OPEN r1ng : bài tốn vơ nghi m, thoát.
2.b. Ng
c l i, ch n Tmax trong OPEN sao cho f’(Tmax) là nh nh t
2.b.1. L y Tmax ra kh i OPEN và
a Tmax vào CLOSE.
2.b.2. N u Tmax chính là TG thì thốt và thơng báo l i gi i là Tmax.
2.b.3. N u Tmax không ph i là Tg. T o ra danh sách t t c các tr ng
thái k ti p c a Tmax. G i m t tr ng thái này là Tk. V#i m1i Tk, làm
các b #c sau :
2.b.3.1. Tính g(Tk) = g(Tmax) + cost(Tmax, Tk).
2.b.3.2. N u t n t 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
2.b.3.3. N u t n t i Tk’ trong CLOSE 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
Lan truy n s thay )i giá tr g, f’ cho t t
c các tr ng thái k ti p c a Ti ( t t c các
c p) ã
c l u tr trong CLOSE và
OPEN.
2.b.3.4. N u Tk ch a xu t hi n trong c OPEN l-n
CLOSE thì :
Thêm Tk vào OPEN
Tính : f' k) = g(Tk)+h’(Tk).
(T
L u ý:
Sau khi ã tìm th y tr ng thái ích Tg,
c&n l&n ng
khi
t
xây d ng l i
c theo thu c tính Cha c a các tr ng thái ã
n T0. /ó chính là "con
ng" t i u i t. Tg
c "con
ng" t. T0
n Tg ch+
c l u tr trong CLOSE cho
n
n T0 (hay nói cách khác là t. T0
n Tg).
19
Thao tác c p nh t l i g(Tk’) , f’(Tk’) và Cha(Tk’) trong b #c 2.b.3.2 và 2.b.3.3. Các thao tác
này th hi n t t
ng : "luôn ch n con
tr chi phí t i u th c s tính t. T0
ng t i u nh t". C th , giá tr g(Tk’) nh m l u
n Tk’. Do ó, n u chúng ta phát hi n th y m t "con
ng" khác t t h'n thông qua Tk (có chi phí nh h'n) con
ta ph i ch n "con
ng" m#i t t h'n này. Tr
ng hi n t i
c l u tr thì
ng h p 2.b.3.3 ph c t p h'n. Vì t. Tk’ n m
trong t p CLOSE nên t. Tk’ ta ã l u tr các tr ng thái con k ti p xu t phát t. Tk’. Nh ng
g(Tk’) thay )i d-n
l
n giá tr g c a các tr ng thái con này c%ng ph i thay )i theo. Và
n
t các tr ng thái con này l i có th có các các tr ng thái con ti p theo c a chúng và c
th cho
n khi m1i nhánh k t thúc v#i m t tr ng thái trong OPEN (ngh a là khơng có
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
tr ng thái
n âu, ta c p nh t l i g c a các
n ó (dùng cơng th c g(T) = g(Cha(T)) +cost(Cha(T), T) ) và vì th giá tr f’
c a các tr ng thái này c%ng thay )i theo.
Minh h a ho t
B n
ng c a thu t gi i A*
các thành ph c a Romania
c cho trong
m t thành ph , gi a hai +nh có cung n i ngh a là có
c a cung chính là chi u dài (tính b ng km) c a
ng chim bay m t thành ph
B ng
n Bucharest
th sau. Trong ó m1i +nh c a
th c a là
ng i gi a hai thành ph t 'ng ng. Tr ng s
ng i n i hai thành ph t 'ng ng, chi u dài theo
c cho trong b ng kèm theo.
c a Romania v i kho ng cách
ng tính theo km
20
Kho ng cách
ng chim bay t m t thành ph
Ch n hàm h’ chính là kho ng cách
Ti+1) chính là chi u dài con
Các b #c ho t
Ban
n Bucharest
ng chim bay cho trong b ng trên và hàm chi phí cost(Ti,
ng n i t. thành ph Ti và Ti+1.
ng c a thu t tốn A* trong vi c tìm
ng i ng(n nh t t. Arad
n Bucharest.
u:
OPEN = {(Arad,g= 0,h’= 0,f’= 0)}
CLOSE = {}
Do trong OPEN ch+ ch a m t thành ph duy nh t nên thành ph này s3 là thành ph t t nh t. Ngh a là
Tmax = Arad.Ta l y Arad ra kh i OPEN và
a vào CLOSE.
OPEN = {}
CLOSE = {(Arad,g= 0,h’= 0,f’= 0)}
T. Arad có th
i
n
c 3 thành ph là Sibiu, Timisoara và Zerind. Ta l&n l
t tính 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.
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
21
f’(Zerind) = g(Zerind)+h’(Zerind)
= 75+374 = 449
Cha(Zerind) = Arad
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.
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)}
B
c 1, nút
c óng ngo(c vuông (nh [Arad]) là nút trong t p CLOSE, ng
c l i là trong t p OPEN.
Trong t p OPEN, nút Sibiu là nút có giá tr f’ nh nh t nên ta s3 ch n Tmax = Sibiu. Ta l y Sibiu ra kh i
OPEN và
a vào CLOSE.
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)}
T. Sibiu có th
i
n
c 4 thành ph là : Arad, Fagaras, Oradea, Rimnicu. Ta l&n l
t tính các giá tr
g, h’, f’ cho các nút này.
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
22
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
Nút Arad ã có trong CLOSE. Tuy nhiên, do g(Arad) m#i
c t o ra (có giá tr 280) l#n h'n g(Arad)
l u trong CLOSE (có giá tr 0) nên ta s3 không c p nh t l i giá tr g và f’ c a Arad l u trong CLOSE. 3
nút còn l i : Fagaras, Oradea, Rimnicu
u khơng có trong c OPEN và CLOSE nên ta s3
vào OPEN, "t cha c a chúng là Sibiu. Nh v y,
a 3 nút này
n b #c này OPEN ã ch a t)ng c ng 5 thành ph .
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)}
Trong t p OPEN, nút R.Vilcea là nút có giá tr f’ nh nh t. Ta ch n Tmax = R.Vilcea. Chuy n R.Vilcea
t. OPEN sang CLOSE. T. R.Vilcea có th
l
i
n
c 3 thành ph là Craiova, Pitesti và Sibiu. Ta l&n
t tính giá tr f’, g và h’ c a 3 thành ph này.
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
23
g(Pitesti) = g(R.Vilcea)+ cost(R.Vilcea, Pitesti)
= 220+97 = 317
f’(Pitesti) = g(Oradea)+h’(Oradea)
= 317+98 = 415
Sibiu ã có trong t p CLOSE. Tuy nhiên, do g’(Sibiu) m#i (có giá tr là 553) l#n h'n g’(Sibiu) (có giá tr
là 393) nên ta s3 khơng c p nh t l i các giá tr c a Sibiu
Pitesti và Craiova
c l u trong CLOSE. Còn l i 2 thành ph là
u khơng có trong c OPEN và CLOSE nên ta s3
a nó vào OPEN và "t cha c a
chúng là R.Vilcea.
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) }
/ n ây, trong t p OPEN, nút t t nh t là Pitesti, t. Pitesti ta có th
i
n
c R.Vilcea,
Bucharest và Craiova. L y Pitesti ra kh i OPEN và "t nó vào CLOSE. Th c hi n ti p theo t 'ng
t nh trên, ta s3 không c p nh t giá tr f’, g c a R.Vilcea và Craiova l u trong CLOSE. Sau khi
tính tốn f’, g c a Bucharest, ta s3
a Bucharest vào t p OPEN, "t Cha(Bucharest) = Pitesti.
h’(Bucharest) = 0
g(Bucharest) = g(Pitesti)+cost(Pitesti, Bucharest)
= 317+100= 418
f’(Bucharest) = g(Fagaras)+h’(Fagaras)
= 417+0= 417
24
c Tmax = Bucharest. Và nh v y thu t tốn k t thúc (th c ra thì t i b #c
: b #c k ti p, ta s3 ch n
này, có hai ng c viên là Bucharest và Fagaras vì
u cùng có f’= 417 , nh ng vì Bucharest là ích nên
ta s3 u tiên ch n h'n).
/ xây d ng l i con
h’ cho
n lúc
ng i t. Arad
n Bucharest ta l&n theo giá tr Cha
c l u tr kèm v#i f’, g và
n Arad.
Cha(Bucharest) = Pitesti
Cha(R.Vilcea) = Sibiu
Cha(Sibiu) = Arad
V y con
ng i ng(n nh t t. Arad
Minh h a m t tr
n Bucharest là Arad, Sibiu, R.Vilcea, Pitesti, Bucharest.
ng h p ph c t p h n c a thu t gi i
Gi s có thêm m t thành ph t m g i là TP và con
ng gi a TP và Pitesti có chi u dài 60. Và kho ng cách
Nh v y rõ ràng, con
ng t i u
ng gi a Sibiu và TP có chi u dài 100, con
ng chim bay t. TP
n Bucharest là 174.
n Bucharest khơng cịn là Arad, Sibiu, R.Vilcea, Pitesti, Bucharest
n a mà là Arad, Sibiu, TP, Pitesti, Bucharest.
Trong tr
ng h p này, chúng ta v-n ti n hành b #c 1 nh
trên. Sau khi th c hi n hi n 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 nhánh TP.
25