Tải bản đầy đủ (.pdf) (68 trang)

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 pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.21 MB, 68 trang )

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


×