Bài tập lớn : Thuật toán A* ứng dụng trong bài toán ghép tranh | Bài tập lớn Nhập môn trí tuệ nhân tạo | Đại học Bách Khoa Hà Nội

Bài tập lớn : Thuật toán A* ứng dụng trong bài toán ghép tranh | Bài tập lớn Nhập môn trí tuệ nhân tạo | Đại học Bách Khoa Hà Nội. Tài liệu gồm 23 trang giúp bạn tham khảo, củng cố kiến thức và ôn tập đạt kết quả cao trong kỳ thi sắp tới. Mời bạn đọc đón xem!

TRNG I HC BÁCH KHOA HÀ NI
VIN CÔNG NGH THÔNG TIN VÀ TRUYN THÔNG
----------
BÀI TP LN
NHP MÔN TRÍ TU NHÂN TO
 tài:
THUT TOÁN A*
NG DNG TRONG BÀI TOÁN GHÉP TRANH
Sinh viên thc hin : ình Cng
(Các thành viên khác) : ……………………
Mã s
sinh viên : 20080370
Nhóm: 3
HÀ NI 04-2013
2
MC LC
Li nói u ........................................................................................................................................ 3
I- BÀI TOÁN GHÉP TRANH ......................................................................................................... 4
II- THUT TOÁN A* ....................................................................................................................... 5
1- Gii thiu thut toán ................................................................................................................ 5
2- Mô t thut toán ...................................................................................................................... 7
3- Cài t thut toán ..................................................................................................................... 7
III- CÀI T BÀI TOÁN ................................................................................................................. 9
1. Trng thái xut phát ................................................................................................................. 9
2. Cài t A* ............................................................................................................................... 9
3. Hàm ưc lưng heuristic ....................................................................................................... 12
3.1 Các hàm ưc lưng heuristic .......................................................................................... 12
3.2 Ví d so sánh 3 hàm heuristic.......................................................................................... 14
III- KT QU ................................................................................................................................. 15
1- Giao din ............................................................................................................................... 15
2- So sánh .................................................................................................................................. 16
3- Nhn xét ................................................................................................................................ 21
IV- KT LUN ............................................................................................................................... 22
Tài liu tham kho .......................................................................................................................... 23
PHIU GIAO NHIM V BÀI TP LN .......................................... Error! Bookmark not defined.
3
Li nói u
ây tài liu dùng  biu din cơ bn thit k gii quyt bài toán
“Trò chơi ghép tranh” s dng thut toán A* do tôi thit k lp trình. Tài liu
này giúp ta cái nhìn toàn v
n v c chc n ng c!a ph"n mm c#ng như ng
d
ng thut toán A*  gii quyt bài toán này. Do th$i gian có hn nên % án
không th
ti ưu ưc toàn b& không gian trng thái bài toán. Tuy nhiên, nhóm
s
' nghiên cu hoàn thin trong th$i gian sm nht.
Nhóm th
c hin tài nh(m mc ích xây dng m&t h thng gii quyt
m
&t bài toán thc t da trên chin lưc tìm kim heuristic xây dng m&t t
chơi ng dng gii trí. Trong quá trình thc hin  tài không tránh kh)i nh*ng
sai sót, nhóm tôi mong s' nhn ưc s góp ý và ánh giá c!a th"y.
Xin chân thành c
m n !
4
I- BÀI TN GHÉP TRANH
Game ghép tranh(N-Puzzle) m
&t trò chơi khá hay trí tu, ưc
bi
t n vi nhiu phiên bn và tên g+i khác nhau như: 8-puzzle, 15-puzzle, Gem
puzzle, Boss puzzle. Bài toán N-puzzle v
n  c, in cho nh thut toán
liên quan
n trí tu nhân to. Bài toán t ra là phi tìm ư$ng i t- trng thái
hi
n ti ti trng thái ích. cho ti nay v.n chưa thut toán ti ưu  gii
bài toán này.
Ph
"n mm N-Puzzle m&t chương trình xây dng trò chơi gii quyt
bài toán này. Ph"n mm ưc vit trên nn Java, s dng giao din % h+a 
ph)ng trò chơi thut toán A*  tìm ư$ng i. Ngư$i dùng có th s dng
chu&t/bàn phím chơi vi các kích thưc khác nhau vi hình nh khác nhau
ho
c có th s dng chc n ng tìm l$i gii nh$ thut toán A*.
Yêu c
"u xây dng bng ô vuông n hàng, n c&t. Bng g%m 1 ô trng và n
2
-
1
ô cha các s trong phm vi [1, n
2
-
1]. Xut phát t- m&t cách xp bt kì, di
chuy
n ô trng lên trên, xung dưi, sang phi, sang trái ưa các ô v trng
thái
ích. S dng chu&t hay phím chc n ng  di chuyn ô trng. Chương trình
ch
c n ng t &ng chơi / bt trng thái nào ó. M0i trng thái c!a bng s
m
&t hoán v1 c!a n
2
ph"n t. 2 ây ta có th m/ r&ng b(ng vic thêm hình nh
vào game ho
c g3n s vào hình nh  gi ý cho ngư$i chơi. 2 trng thái ban
"u, các ô ưc s3p xp ng.u nhiên, nhim v c!a ngư$i chơi tìm ưc
cách
ưa chúng v trng thái ích(ô "u trng, các ô khác theo th t t ng d"n t-
trái qua ph
i, t- trên xung dưi).  ơn gin trong cách tip cn bài toán, ta
gi 1nh ch4 các ô trng di chuyn trong bng di chuyn n các v1 trí khác
nhau. Như vy ti m&t trng thái bt kì ti a 4 cách di chuyn n trng thái
khác(trái, ph
i, lên, xung).
5
1.1.1: Trng thái b3t "u và ích
Bưc di chuyn c!a ô trng:
1.1.2: Bưc di chuyn c!a ô trng
II- THUT TOÁN A*
1- Gii thiu thut toán
Thu
t toán A* ưc t l"n "u tiên n m 1986 b/i Peter Hart, Nils
Nilson Bertram Raphael. Trong báo cáo c
!a h+, thut toán ưc g+i thut
6
toán A, khi s dng thut toán này vi m&t hàm ánh giá heuristic thích hp s'
thu ưc hot &ng ti ưu, do ó mà có tên là A*.
Trong khoa h
+c máy tính, A* là m&t thut toán tìm kim trong % th1.
Thut toán này tìm m&t ư$ng i t- nút kh/i "u ti m&t nút ích cho trưc(
ho
c ti m&t nút th)a mãn iu kin ích). Thut toán này s dng m&t ánh giá
heuristic  xp loi t-ng nút theo ưc lưng v tuyn ư$ng tt nht i qua nút
ó. Thut toán này duyt các nút theo th t c!a ánh giá heuristic này. Do ó,
thut toán A* là m&t ví d c!a tìm kim theo la ch+n tt nht(best-first search).
Xét bài toán tìm
ư$ng bài toán mà A* thư$ng ưc dùng  gii. A*
xây dng t ng d"n tt c các tuyn ư$ng t- im xut phát cho ti khi tìm
th
y m&t ư$ng i chm ti ích. Tuy nhiên, c#ng như tt c các thut toán tìm
ki
m có thông tin nó ch4 xây dng các tuyn ư$ng có v5 d"n v ích.
 bit nh*ng tuyn ư$ng nào kh n ng s' d.n ti ích, A* s dng
m&t hàm ánh giá heuristic v khong cách t- im bt k6 cho ti ích. Trong
trư$ng hp tìm ư$ng i, ánh giá này th khong cách ư$ng chim bay -
m&t ánh giá xy x4 thư$ng dùng cho khong cách c!a ư$ng giao thông.
im khác bit c!a A* i vi tìm kim theo la ch+n tt nht còn
tính n khong cách ã i qua. iu ó m cho A* "y ! ti ưu, ngh7a
A* s
' luôn tìm thy ư$ng i ng3n nht nu t%n ti m&t ư$ng i như th. A*
không m bo s' chy nhanh hơn các thut toán m kim ơn gin hơn. Trong
m&t môi trư$ng dng mê cung, cách duy nht n ích có th là trưc ht phi
i v phía xa ích và cui cùng mi quay tr/ li. Trong trư$ng hp ó, vic th
các nút theo th
t “g"n ích hơn thì ưc th trưc” có th gây tn th$i gian.
7
2- Mô t thut toán
Gi
s n m&t trng thái t ti(có ư$ng i t- trng thái ban "u n
0
ti
n). Ta xác 1nh hàm ánh giá: f(n) = g(n) + h(n)
g(n) là chi phí t
- nút gc n
0
ti nút hin ti n
h(n) chi phí ưc lưng t- nút hin ti n ti ích
f(n) chi phí t
,ng th ưc lưng c!a ư$ng i qua nút hin ti n n
ích
M
&t ưc lưng heuristic h(n) ưc xem chp nhn ưc nu vi m+i
nút n: 0 8 h(n) 8 h*(n)
Trong
ó h*(n) là chi phí tht(thc t)  i t- nút n n ích.
3- Cài
t thut toán
OPEN(FRINGE): t
p cha các trng thái ã ưc sinh ra nhưng chưa
ưc xét n. OPEN là m&t hàng i ưu tiên trong ó ph"n t & ưu tiên
cao nh
t là ph"n t tt nht.
CLOSE: t
p cha các trng thái ã ưc xét n. Chúng ta c"n lưu tr*
nh
*ng trng thái này trong b& nh phòng trư$ng hp khi m&t trng thái
mi ưc to ra li trùng vi m&t trng thái mà ta ã xét n trưc ó.
Khi xét
n m&t trng thái n
i
trong OPEN bên cnh vic lưu tr* 3 giá tr1 cơ
bn g, h, f  ph9n ánh & tt c!a trng thái ó, A* còn lưu tr* thêm hai thông s
sau:
Trng thái cha c!a trng thái n
i
(ký hiu Cha(n
i
)): cho bit trng thái d.n
n trng thái n
i
.
Danh sách các tr
ng thái tip theo c!a n
i
: danh sách này lưu tr* các trng
thái k tip n
k
c!a n
i
sao cho chi phí n n
k
thông qua n
i
t- trng thái ban
"u là thp nht. Thc cht danh sách này th ưc tính t- thu&c tính
Cha c
!a các trng thái ã ưc lưu tr*. Tuy nhiên vic tính toán này có th
m
t nhiu th$i gian(khi tp OPEN,CLOSE ưc m/ r&ng) nên ngư$i ta
thư$ng lưu tr* ra m&t danh sách riêng.
8
Thut toán A*:
function Astar(n
0
, n
goal
)
1.
t OPEN ch4 ch n
0
. t g(n
0
) = h(n
0
) = f(n
0
) = 0. t CLOSE tp
r
0ng
2. L
p li các bưc sau cho n khi gp iu kin d-ng
2.a N
u OPEN r0ng: bài toán vô nghim, thoát.
2.b Ng
ưc li, ch+n n
i
trong OPEN sao cho f(n
i
) sao cho f(n
i
)min
2.b.1 L
y n
i
ra kh)i OPEN và ưa n
i
vào CLOSE
2.b.2 N
u n
i
chính là ích n
goal
thì thoát và thông báo l$i gii là n
i
2.b.3 N
u n
i
không phi ích. To danh sách tt c các trng thái
k
tip c!a n
i
. G+i m&t trng thái này là n
k
. Vi m0i n
k
, làm các bưc sau:
2.b.3.1 Tính g(n
k
) = g(n
i
) + cost(n
i
, n
k
); h(n
k
);
f(n
k
) = g(n
k
) + h(n
k
).
2.b.3.2
t Cha(n
k
) = n
i
2.b.3.3 Nu n
k
chưa xut hin trong OPEN CLOSE thì
thêm n
k
vào OPEN
9
III- CÀI T BÀI TOÁN
1. Tr
ng thái xut phát
R
t d thy m0i trng thái c!a bng s là m&t hoán v1 c!a n
2
ph"n t( vi n
kích thưc cnh), như vy không gian trng thái c!a nó là n
2
!, 8-puzzle là 9! =
362880(n = 3) và 15-puzzle 16! = 20922789888000(n = 4),…. Khi m t ng lên
1
ơn v1 thì không gian trng thái s' t ng lên rt nhanh, iu này khin cho vic
gii quyt vi các phiên bn n > 3 ít ưc áp dng.
 to ra m&t trng thái ban "u c!a trò chơi ta dùng mng 1 chiu và sinh
ng.u nhiên m&t mng trng thái hoán v1 c!a n
2
ph"n t trong on (0; n
2
-1).
Vi vic sinh ng.u nhiên thì s' to ra nh*ng trng thái không hp l(trng thái
không d
.n ti trng thái ích c!a bài toán), thì ta c"n phi kim tra xem trng
thái d
.n ti ích ưc hay không trưc khi kh/i to giao din. Ngoài ra ta
th
tr&n ng.u nhiên trng thái ích n m&t trng thái bt kì.
1 2 3 7
4 5 11 10
9 12 14 6
8 13 15
1.1.3: Trng thái b3t "u 15-puzzle và 8-puzzle
2. Cài
t A*
Vi
c cài t thut toán A* trong bài toán N-Puzzle c#ng ging như ph"n
trên
ã nêu:
FRINGE tp cha các trng thái ã ưc sinh ra nhưng chưa ưc
xét
n.
M là t
p các trng thái tip theo c!a trng thái n
i
3 2
1 7 4
6 8 5
10
KQ tp trng thái kt qu, lưu các trng thái t- trng thái hin ti ti
ích
"u vào: trng thái hin ti, trng thái ích
"u ra: tp các trng thái t- trng thái hin ti ti trng thái ích
iu kin d-ng thut toán: tìm thy kt qu hoc gii hn th$i gian hoc
ngư$i dùng cho phép d-ng.
Trong bài toán này ta th
ci tin b(ng vic b) tp CLOSE. Ta thy
trong b
ưc 2.b.3 / trên sau khi m ra các trng thái con c!a trng thái n
i
. Khi ó
n
i
có ti a 4 trng thái con, nhưng trong các trng thái con c!a n
i
có 1 trng thái
trùng vi trng thái cha c!a n
i
. vy ta th loi b) trng thái này  tránh
vi
c xét lp. Khi loi b) trng thái này s' không t%n ti m&t trng thái con nào
trùng v
i m&t trng thái trong tp CLOSE n*a. Vic loi b) này s' tránh ưc
vi
c kim tra / bưc 2.b.3.3 gây tn rt nhiu th$i gian.
Ngoài ra, trong game này còn cài
t thêm thut toán A* sâu d"n(IDA*) là
m&t bin th c!a thut toán m kim A*. IDA* giúp loi b) hn ch b& nh c!a
A* ko hy sinh gii pháp ti ưu. M0i l"n lp c!a thut toán là quá trình tìm
kim theo chiu sâu, f(n) = g(n) + h(n), to nút mi. Khi m&t nút ưc to ra
chi phí v
ưt quá m&t ngư:ng cutoff thì nút ó s' b1 c3t gim, quá trình tìm kim
backtracks trưc khi tip tc. Các ngư:ng chi p ưc kh/i to ưc lưng
heuristic c!a trng thái ban "u, trong m0i l"n lp k tip m t ng t,ng chi
phí c!a các nút chi phí thp ã ưc c3t t4a trưc ó. Thut toán chm dt khi
tr
ng thái ích có t,ng chi phí không vưt quá ngư:ng hin ti.
11
Minh ha A*
1.1.4: Minh h+a A*
12
3. Hàm c lng heuristic
3.1 Các hàm
c lng heuristic
3.1.1 heuristic1 = t
,ng khong cách d1ch chuyn
(
;,<,=,>)
ng
3n nht 
d
1ch chuyn các ô sai v v1 trí úng c!a nó(khong cách Manhattan)
1.1.5: Minh ha
Gi
s: + row
, col
là t+a &(dòng và c&t) c!a ô / v1 trí úng
+ row
s
, col
s
là t+a &(dòng và c&t) c!a ô / v1 trí sai
+ xd = |col
s
– col
|
+ yd = |row
s
– row
|
d = xd + yd là khong cách ng3n nht  di chuyn 1 ô v úng v1 trí
h1 = d
Trong b
ng s 3x3 trên,  di chuyn ô s 8 v v1 trí úng c"n 1 l"n,  di
chuyn ô s 1 v v1 trí úng c"n 2 l"n(qua 2 ô khác).  thu ưc kt qu này ta
làm phép tính ơn gin: ly t,ng khong cách c!a các dòng c&t gi*a hai v1
trí(v1 trí hin ti và v1 trí úng)
- L
y t+a & c!a ô s 1 / v1 trí hin ti ta có: row
s
= 1, col
s
= 0
- L
y t+a & ô s 1 / v1 trí úng : row
= 1/3 = 0; col
s
= 1%3 = 1
- V
y khong cách ng3n nht  di chuyn ô s 1 v v1 trí úng:
d
1
= |row
s
– row
| + |col
s
– col
| = |1 – 0| + |0 – 1| = 2
T
ương t, tính tt c các khong cách d c!a các ô sai còn li ta ưc
13
h
1
= 1+0+2+1+1+0+1+1 = 7
3.1.2 heuristic2 = t
,ng khong cách d1ch chuyn (;,<,=,>) ng3n nht 
d1ch chuyn các ô sai v v1 trí úng c!a c&ng thêm ch4 s pht cp ô hàng
xóm v
i nhau ang n(m ngưc v1 trí c!a nhau.
1.1.6a: ích 1.1.6b: Minh ha
h
2
= d + a
Trong
ó a ch s pht cp ô hàng xóm ang nm ngc v trí. Cp
(2,1) mun v úng v1 trí c"n d1ch chuyn ít nht 4 bưc(không ý ti các ô
khác), 2 bưc ã ưc tính trong ?d nên a = 2. vy trong 1.1.6b 2 cp
hàng xóm n
(m ngưc v1 trí nên / ây a = 2+2 = 4.
3.1.3 heuristic3
1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
1.1.7a: ích
1.1.7b: Minh ha
Xét 1 ô n
(m sai v1 trí: d = |row
s
– row
|
2
+ |col
s
– col
|
2
t d
3
= ?d
2 1
6 7 5
3 8 4
1 2
3 4 5
6 7 8
2
6
3
7
4 5 10
11
12 9 14
1
8 13
15
14
h
3
= d
3
– [0.15*d
3
] + a
3.1.4 heuristic4
Xét 1 ô sai n(m sai v1 trí: d = |row
s
– row
|
2
+ |col
s
– col
|
2
t d
4
= ?d
h
4
= d
4
+ a
3.2 Ví d
so sánh 3 hàm heuristic
Xét tr
ng thái hình trên
+ heuristic1 = 4 + 2 + 1 + 1 + 1 + 1 + 3 + 1 = 14
+ heuristic2 = heuristic1 + 2 = 16 (a = 2)
+ d
34
= 8 + 4 + 1 + 1 + 1 + 1 + 5 + 1 = 22
+ heuristic3 = d
34
– [0.15*d
34
] + 2 = 21
+ heuristic4 = d
34
+ 2 = 24
8 7 1
6 4
3 2 5
15
III- KT QU
1- Giao di
n
Khung hình
chính
Khung so sánh
k
t qu
Các la ch+n
16
2- So sánh
V
i trng thái b3t "u là trng thái / hình trên:
Thut toán A*
+ heuristic 1:
S
bưc thc hin: 37
S
nút ã xét: 36819
T
,ng s nút trên cây: 73742
Th$i gian gii quyt: 38598ms
17
+ heuristic2
S
bưc thc hin: 37
S
nút ã xét: 25950
T
,ng s nút trên cây: 52228
Th
$i gian gii quyt: 19370ms
18
+ heuristic3:
S
bưc thc hin: 37
S
nút ã xét: 400
T
,ng s nút trên cây: 809
Th
$i gian gii quyt: 17ms
19
+ heuristic4
S
bưc thc hin: 41
S
nút ã xét: 475
T
,ng s nút trên cây: 939
Th
$i gian gii quyt: 20ms
20
Thut toán IDA*
+ heuristic1
S bưc thc hin: 37
S
nút ã xét: 77849
T
,ng s nút trên cây: 156896
Th
$i gian gii quyt: 9760ms
+ heuristic2
S
bưc thc hin: 37
S
nút ã xét: 48304
T
,ng s nút trên cây: 97311
Th
$i gian gii quyt: 4081ms
+ heuristic3
S
bưc thc hin: 37
S
nút ã xét: 404
T
,ng s nút trên cây: 811
Th$i gian gii quyt: 4ms
+ heuristic4
S
bưc thc hin: 43
S nút ã xét: 4834
T
,ng s nút trên cây: 9622
Th
$i gian gii quyt: 41ms
| 1/23

Preview text:

TR NG I H C BÁCH KHOA HÀ N I
VI N CÔNG NGH THÔNG TIN VÀ TRUY N THÔNG ----- ----- BÀI T P L N
NH P MÔN TRÍ TU NHÂN T O tài: THU T TOÁN A*
NG D NG TRONG BÀI TOÁN GHÉP TRANH Sinh viên th c hi n : Lê ình C ng
(Các thành viên khác) : …………………… Mã s sinh viên : 20080370 Nhóm: 3 HÀ N I 04-2013 M C L C
L i nói u ........................................................................................................................................ 3
I- BÀI TOÁN GHÉP TRANH ......................................................................................................... 4
II- THU T TOÁN A* ....................................................................................................................... 5
1- Gi i thi u thu t toán ................................................................................................................ 5
2- Mô t thu t toán ...................................................................................................................... 7
3- Cài t thu t toán ..................................................................................................................... 7 III- CÀI
T BÀI TOÁN ................................................................................................................. 9
1. Tr ng thái xu t phát ................................................................................................................. 9
2. Cài t A* ............................................................................................................................... 9
3. Hàm ư c lư ng heuristic ....................................................................................................... 12 3.1
Các hàm ư c lư ng heuristic .......................................................................................... 12
3.2 Ví d so sánh 3 hàm heuristic.......................................................................................... 14
III- K T QU ................................................................................................................................. 15
1- Giao di n ............................................................................................................................... 15
2- So sánh .................................................................................................................................. 16
3- Nh n xét ................................................................................................................................ 21
IV- K T LU N ............................................................................................................................... 22
Tài li u tham kh o .......................................................................................................................... 23
PHI U GIAO NHI M V BÀI T P L N .......................................... Error! Bookmark not defined. 2 L i nói u
ây là tài li u dùng bi u di n cơ b n thi t k và gi i quy t bài toán
“Trò chơi ghép tranh” s d ng thu t toán A* do tôi thi t k và l p trình. Tài li u
này giúp ta có cái nhìn toàn v n v các ch c n ng c!a ph"n m m c#ng như ng
d ng thu t toán A* gi i quy t bài toán này. Do th$i gian có h n nên % án
không th t i ưu ư c toàn b& không gian tr ng thái bài toán. Tuy nhiên, nhóm
s' nghiên c u hoàn thi n trong th$i gian s m nh t.
Nhóm th c hi n tài nh(m m c ích xây d ng m&t h th ng gi i quy t
m&t bài toán th c t d a trên chi n lư c tìm ki m heuristic và xây d ng m&t trò
chơi ng d ng gi i trí. Trong quá trình th c hi n tài không tránh kh)i nh*ng
sai sót, nhóm tôi mong s' nh n ư c s góp ý và ánh giá c!a th"y.
Xin chân thành c m n ! 3
I- BÀI TOÁN GHÉP TRANH
Game ghép tranh(N-Puzzle) là m&t trò chơi khá hay và trí tu , nó ư c
bi t n v i nhi u phiên b n và tên g+i khác nhau như: 8-puzzle, 15-puzzle, Gem
puzzle, Boss puzzle. Bài toán N-puzzle là v n c, i n cho mô hình thu t toán
liên quan n trí tu nhân t o. Bài toán t ra là ph i tìm ư$ng i t- tr ng thái
hi n t i t i tr ng thái ích. Và cho t i nay v.n chưa có thu t toán t i ưu gi i bài toán này.
Ph"n m m N-Puzzle là m&t chương trình xây d ng trò chơi và gi i quy t
bài toán này. Ph"n m m ư c vi t trên n n Java, s d ng giao di n % h+a mô
ph)ng trò chơi và thu t toán A* tìm ư$ng i. Ngư$i dùng có th s d ng
chu&t/bàn phím chơi v i các kích thư c khác nhau và v i hình nh khác nhau
ho c có th s d ng ch c n ng tìm l$i gi i nh$ thu t toán A*.
Yêu c"u xây d ng b ng ô vuông n hàng, n c&t. B ng g%m 1 ô tr ng và n2-1
ô ch a các s trong ph m vi [1, n2-1]. Xu t phát t- m&t cách x p b t kì, di
chuy n ô tr ng lên trên, xu ng dư i, sang ph i, sang trái ưa các ô v tr ng
thái ích. S d ng chu&t hay phím ch c n ng di chuy n ô tr ng. Chương trình
có ch c n ng t &ng chơi / b t kì tr ng thái nào ó. M0i tr ng thái c!a b ng s
là m&t hoán v1 c!a n2 ph"n t . 2 ây ta có th m/ r&ng b(ng vi c thêm hình nh
vào game ho c g3n s vào hình nh g i ý cho ngư$i chơi. 2 tr ng thái ban
"u, các ô ư c s3p x p ng.u nhiên, và nhi m v c!a ngư$i chơi là tìm ư c
cách ưa chúng v tr ng thái ích(ô "u tr ng, các ô khác theo th t t ng d"n t-
trái qua ph i, t- trên xu ng dư i).
ơn gi n trong cách ti p c n bài toán, ta
gi 1nh ch4 các ô tr ng di chuy n trong b ng là di chuy n n các v1 trí khác
nhau. Như v y t i m&t tr ng thái b t kì có t i a 4 cách di chuy n n tr ng thái
khác(trái, ph i, lên, xu ng). 4
1.1.1: Tr ng thái b3t "u và ích Bư c di chuy n c!a ô tr ng:
1.1.2: Bư c di chuy n c!a ô tr ng II- THU T TOÁN A*
1- Gi i thi u thu t toán
Thu t toán A* ư c mô t l"n "u tiên n m 1986 b/i Peter Hart, Nils
Nilson và Bertram Raphael. Trong báo cáo c!a h+, thu t toán ư c g+i là thu t 5
toán A, khi s d ng thu t toán này v i m&t hàm ánh giá heuristic thích h p s'
thu ư c ho t &ng t i ưu, do ó mà có tên là A*.
Trong khoa h+c máy tính, A* là m&t thu t toán tìm ki m trong % th1.
Thu t toán này tìm m&t ư$ng i t- nút kh/i "u t i m&t nút ích cho trư c(
ho c t i m&t nút th)a mãn i u ki n ích). Thu t toán này s d ng m&t ánh giá
heuristic x p lo i t-ng nút theo ư c lư ng v tuy n ư$ng t t nh t i qua nút
ó. Thu t toán này duy t các nút theo th t c!a ánh giá heuristic này. Do ó,
thu t toán A* là m&t ví d c!a tìm ki m theo l a ch+n t t nh t(best-first search).
Xét bài toán tìm ư$ng – bài toán mà A* thư$ng ư c dùng gi i. A*
xây d ng t ng d"n t t c các tuy n ư$ng t- i m xu t phát cho t i khi nó tìm
th y m&t ư$ng i ch m t i ích. Tuy nhiên, c#ng như t t c các thu t toán tìm
ki m có thông tin nó ch4 xây d ng các tuy n ư$ng có v5 d"n v ích.
bi t nh*ng tuy n ư$ng nào có kh n ng s' d.n t i ích, A* s d ng
m&t hàm ánh giá heuristic v kho ng cách t- i m b t k6 cho t i ích. Trong
trư$ng h p tìm ư$ng i, ánh giá này có th là kho ng cách ư$ng chim bay -
m&t ánh giá x y x4 thư$ng dùng cho kho ng cách c!a ư$ng giao thông.
i m khác bi t c!a A* i v i tìm ki m theo l a ch+n t t nh t là nó còn
tính n kho ng cách ã i qua. i u ó làm cho A* "y ! và t i ưu, ngh7a là
A* s' luôn tìm th y ư$ng i ng3n nh t n u t%n t i m&t ư$ng i như th . A*
không m b o s' ch y nhanh hơn các thu t toán tìm ki m ơn gi n hơn. Trong
m&t môi trư$ng d ng mê cung, cách duy nh t n ích có th là trư c h t ph i
i v phía xa ích và cu i cùng m i quay tr/ l i. Trong trư$ng h p ó, vi c th
các nút theo th t “g"n ích hơn thì ư c th trư c” có th gây t n th$i gian. 6 2- Mô t thu t toán
Gi s n là m&t tr ng thái t t i(có ư$ng i t- tr ng thái ban "u n0 t i
n). Ta xác 1nh hàm ánh giá: f(n) = g(n) + h(n)
• g(n) là chi phí t- nút g c n0 t i nút hi n t i n
• h(n) chi phí ư c lư ng t- nút hi n t i n t i ích
• f(n) chi phí t,ng th ư c lư ng c!a ư$ng i qua nút hi n t i n n ích
M&t ư c lư ng heuristic h(n) ư c xem là ch p nh n ư c n u v i m+i nút n: 0 8 h(n) 8 h*(n)
Trong ó h*(n) là chi phí th t(th c t ) i t- nút n n ích. 3- Cài t thu t toán
OPEN(FRINGE): t p ch a các tr ng thái ã ư c sinh ra nhưng chưa
ư c xét n. OPEN là m&t hàng i ưu tiên mà trong ó ph"n t có & ưu tiên cao nh t là ph"n t t t nh t.
CLOSE: t p ch a các tr ng thái ã ư c xét n. Chúng ta c"n lưu tr*
nh*ng tr ng thái này trong b& nh phòng trư$ng h p khi có m&t tr ng thái
m i ư c t o ra l i trùng v i m&t tr ng thái mà ta ã xét n trư c ó.
Khi xét n m&t tr ng thái ni trong OPEN bên c nh vi c lưu tr* 3 giá tr1 cơ
b n g, h, f ph9n ánh & 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 ni (ký hi u Cha(ni)): cho bi t tr ng thái d.n n tr ng thái ni.
• Danh sách các tr ng thái ti p theo c!a ni: danh sách này lưu tr* các tr ng
thái k ti p nk c!a ni sao cho chi phí n nk thông qua ni t- tr ng thái ban
"u là th p nh t. Th c ch t danh sách này có th ư c tính t- thu&c tính
Cha c!a các tr ng thái ã ư 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,CLOSE ư c m/ r&ng) nên ngư$i ta
thư$ng lưu tr* ra m&t danh sách riêng. 7 Thu t toán A*: function Astar(n0, ngoal) 1. t OPEN ch4 ch n0. t g(n0) = h(n0) = f(n0) = 0. t CLOSE là t p r0ng
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 r0ng: bài toán vô nghi m, thoát.
2.b Ngư c l i, ch+n ni trong OPEN sao cho f(ni) sao cho f(ni)min
2.b.1 L y ni ra kh)i OPEN và ưa ni vào CLOSE
2.b.2 N u ni chính là ích ngoal thì thoát và thông báo l$i gi i là ni
2.b.3 N u ni không ph i là ích. T o danh sách t t c các tr ng thái
k ti p c!a ni. G+i m&t tr ng thái này là nk. V i m0i nk, làm các bư c sau:
2.b.3.1 Tính g(nk) = g(ni) + cost(ni, nk); h(nk); f(nk) = g(nk) + h(nk). 2.b.3.2 t Cha(nk) = ni
2.b.3.3 N u nk chưa xu t hi n trong OPEN và CLOSE thì thêm nk vào OPEN 8 III- CÀI T BÀI TOÁN
1. Tr ng thái xu t phát
R t d th y m0i tr ng thái c!a b ng s là m&t hoán v1 c!a n2 ph"n t ( v i n
là kích thư c c nh), như v y không gian tr ng thái c!a nó là n2!, 8-puzzle là 9! =
362880(n = 3) và 15-puzzle là 16! = 20922789888000(n = 4),…. Khi m t ng lên
1 ơn v1 thì không gian tr ng thái s' t ng lên r t nhanh, i u này khi n cho vi c
gi i quy t v i các phiên b n n > 3 ít ư c áp d ng.
t o ra m&t tr ng thái ban "u c!a trò chơi ta dùng m ng 1 chi u và sinh
ng.u nhiên m&t m ng tr ng thái là hoán v1 c!a n2 ph"n t trong o n (0; n2-1).
V i vi c sinh ng.u nhiên thì s' t o ra nh*ng tr ng thái không h p l (tr ng thái
không d.n t i tr ng thái ích c!a bài toán), thì ta c"n ph i ki m tra xem tr ng
thái có d.n t i ích ư c hay không trư c khi kh/i t o giao di n. Ngoài ra ta có
th tr&n ng.u nhiên tr ng thái ích n m&t tr ng thái b t kì. 1 2 3 7 3 2 4 5 11 10 1 7 4 9 12 14 6 8 13 15 6 8 5
1.1.3: Tr ng thái b3t "u 15-puzzle và 8-puzzle 2. Cài t A*
Vi c cài t thu t toán A* trong bài toán N-Puzzle c#ng gi ng như ph"n trên ã nêu:
FRINGE là t p ch a các tr ng thái ã ư c sinh ra nhưng chưa ư c xét n.
M là t p các tr ng thái ti p theo c!a tr ng thái ni 9
KQ t p tr ng thái k t qu , lưu các tr ng thái t- tr ng thái hi n t i t i ích
"u vào: tr ng thái hi n t i, tr ng thái ích
"u ra: t p các tr ng thái t- tr ng thái hi n t i t i tr ng thái ích
i u ki n d-ng thu t toán: tìm th y k t qu ho c gi i h n th$i gian ho c ngư$i dùng cho phép d-ng.
Trong bài toán này ta có th c i ti n b(ng vi c b) t p CLOSE. Ta th y
trong bư c 2.b.3 / trên sau khi tìm ra các tr ng thái con c!a tr ng thái ni. Khi ó
ni có t i a 4 tr ng thái con, nhưng trong các tr ng thái con c!a ni có 1 tr ng thái
trùng v i tr ng thái cha c!a ni. Vì v y ta có th lo i b) tr ng thái này tránh
vi c xét l p. Khi lo i b) tr ng thái này s' không t%n t i m&t tr ng thái con nào
trùng v i m&t tr ng thái trong t p CLOSE n*a. Vi c lo i b) này s' tránh ư c
vi c ki m tra / bư c 2.b.3.3 gây t n r t nhi u th$i gian.
Ngoài ra, trong game này còn cài t thêm thu t toán A* sâu d"n(IDA*) là
m&t bi n th c!a thu t toán tìm ki m A*. IDA* giúp lo i b) h n ch b& nh c!a
A* mà ko hy sinh gi i pháp t i ưu. M0i l"n l p c!a thu t toán là quá trình tìm
ki m theo chi u sâu, f(n) = g(n) + h(n), t o nút m i. Khi m&t nút ư c t o ra có
chi phí vư t quá m&t ngư:ng cutoff thì nút ó s' b1 c3t gi m, quá trình tìm ki m
backtracks trư c khi ti p t c. Các ngư:ng chi phí ư c kh/i t o ư c lư ng
heuristic c!a tr ng thái ban "u, và trong m0i l"n l p k ti p làm t ng t,ng chi
phí c!a các nút có chi phí th p ã ư c c3t t4a trư c ó. Thu t toán ch m d t khi
tr ng thái ích có t,ng chi phí không vư t quá ngư:ng hi n t i. 10 Minh h a A* 1.1.4: Minh h+a A* 11
3. Hàm c l ng heuristic
3.1 Các hàm c l ng heuristic
3.1.1 heuristic1
= t,ng kho ng cách d1ch chuy n (;,<,=,>) ng3n nh t
d1ch chuy n các ô sai v v1 trí úng c!a nó(kho ng cách Manhattan) 1.1.5: Minh h a
Gi s : + row , col là t+a &(dòng và c&t) c!a ô / v1 trí úng
+ rows, cols là t+a &(dòng và c&t) c!a ô / v1 trí sai + xd = |cols – col | + yd = |rows – row |
d = xd + yd là kho ng cách ng3n nh t di chuy n 1 ô v úng v1 trí h1 = d
Trong b ng s 3x3 trên, di chuy n ô s 8 v v1 trí úng c"n 1 l"n, di
chuy n ô s 1 v v1 trí úng c"n 2 l"n(qua 2 ô khác). thu ư c k t qu này ta
làm phép tính ơn gi n: l y t,ng kho ng cách c!a các dòng và c&t gi*a hai v1
trí(v1 trí hi n t i và v1 trí úng)
- L y t+a & c!a ô s 1 / v1 trí hi n t i ta có: rows = 1, cols = 0
- L y t+a & ô s 1 / v1 trí úng : row = 1/3 = 0; cols = 1%3 = 1
- V y kho ng cách ng3n nh t di chuy n ô s 1 v v1 trí úng:
d1 = |rows – row | + |cols – col | = |1 – 0| + |0 – 1| = 2
Tương t , tính t t c các kho ng cách d c!a các ô sai còn l i ta ư c 12 h1 = 1+0+2+1+1+0+1+1 = 7
3.1.2 heuristic2 = t,ng kho ng cách d1ch chuy n (;,<,=,>) ng3n nh t
d1ch chuy n các ô sai v v1 trí úng c!a nó c&ng thêm ch4 s ph t c p ô hàng
xóm v i nhau ang n(m ngư c v1 trí c!a nhau. 1 2 2 1 3 4 5 6 7 5 6 7 8 3 8 4 1.1.6a: ích 1.1.6b: Minh h a h2 = d + a
Trong ó a là ch s ph t c p ô hàng xóm ang n m ng c v trí. C p
(2,1) mu n v úng v1 trí c"n d1ch chuy n ít nh t 4 bư c(không ý t i các ô
khác), 2 bư c ã ư c tính trong ?d nên a = 2. Vì v y trong 1.1.6b có 2 c p
hàng xóm n(m ngư c v1 trí nên / ây a = 2+2 = 4. 3.1.3 heuristic3 1 2 3 2 6 3 7 4 5 6 7 4 5 10 11 8 9 10 11 12 9 14 1 12 13 14 15 8 13 15 1.1.7a: ích 1.1.7b: Minh h a
Xét 1 ô n(m sai v1 trí: d = |rows – row |2 + |cols – col |2 t d3 = ?d 13
h3 = d3 – [0.15*d3] + a 3.1.4 heuristic4
Xét 1 ô sai n(m sai v1 trí: d = |rows – row |2 + |cols – col |2 t d4 = ?d h4 = d4 + a
3.2 Ví d so sánh 3 hàm heuristic 8 7 1 6 4 3 2 5 Xét tr ng thái hình trên
+ heuristic1 = 4 + 2 + 1 + 1 + 1 + 1 + 3 + 1 = 14
+ heuristic2 = heuristic1 + 2 = 16 (a = 2)
+ d34 = 8 + 4 + 1 + 1 + 1 + 1 + 5 + 1 = 22
+ heuristic3 = d34 – [0.15*d34] + 2 = 21 + heuristic4 = d34 + 2 = 24 14 III- K T QU 1- Giao di n Các l a ch+n Khung hình chính Khung so sánh k t qu 15 2- So sánh
V i tr ng thái b3t "u là tr ng thái / hình trên: Thu t toán A* + heuristic 1: S bư c th c hi n: 37 S nút ã xét: 36819 T,ng s nút trên cây: 73742 Th$i gian gi i quy t: 38598ms 16 + heuristic2 S bư c th c hi n: 37 S nút ã xét: 25950 T,ng s nút trên cây: 52228 Th$i gian gi i quy t: 19370ms 17 + heuristic3: S bư c th c hi n: 37 S nút ã xét: 400 T,ng s nút trên cây: 809 Th$i gian gi i quy t: 17ms 18 + heuristic4 S bư c th c hi n: 41 S nút ã xét: 475 T,ng s nút trên cây: 939 Th$i gian gi i quy t: 20ms 19 Thu t toán IDA* + heuristic1 S bư c th c hi n: 37 S nút ã xét: 77849
T,ng s nút trên cây: 156896 Th$i gian gi i quy t: 9760ms + heuristic2 S bư c th c hi n: 37 S nút ã xét: 48304 T,ng s nút trên cây: 97311 Th$i gian gi i quy t: 4081ms + heuristic3 S bư c th c hi n: 37 S nút ã xét: 404 T,ng s nút trên cây: 811 Th$i gian gi i quy t: 4ms + heuristic4 S bư c th c hi n: 43 S nút ã xét: 4834 T,ng s nút trên cây: 9622 Th$i gian gi i quy t: 41ms 20