Bài tập giải thuật a trí tuệ nhân tạo

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À NI 04-

MC LC

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 bit 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 là vn  c, in cho mô hì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. Và cho ti nay v chưa có thut toán t i ưu  gii bài toán này.

Ph"n mm N-Puzzle là m&t chương trình xây d ng trò chơi và gii quyt bài toán này. Ph"n mm ưc vit trên nn Java, s dng giao di n % h+a  mô ph]ng trò chơi và 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 và vi hình nh khác nhau hoc có th s dng chc n ng tìm l$i gii nh$ thut toán A*.

Yêu c"u xây d ng bng ô vuông n hàng, n c&t. Bng g%m 1 ô tr ng 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 chuyn ô tr ng lên trên, xu ng 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 ô tr ng. Chương trình có chc n ng t &ng chơi / bt kì trng thái nào ó. M 0 i trng thái c!a bng s là m&t hoán v 1 c!a n 2 ph"n t. 2 ây ta có th m/ r&ng b[ng vi c thêm hình nh vào game hoc g 3 n s vào hình nh  gi ý cho ngư$i chơi. 2 trng thái ban "u, các ô ưc s 3 p xp ng nhiên, và nhi m v c!a ngư$i chơi là tìm ưc cách ưa chúng v trng thái ích[ô "u tr ng, các ô khác theo th t t ng d"n t- trái qua phi, t- trên xu ng dưi].  ơn gin trong cách tip cn bài toán, ta gi 1nh ch 4 các ô tr ng di chuyn trong bng là di chuyn n các v 1 trí khác nhau. Như vy ti m&t trng thái bt kì có t i a 4 cách di chuyn n trng thái khác[trái, phi, lên, xu ng].

1.1: Trng thái b 3 t "u và ích

Bưc di chuyn c!a ô tr ng:

1.1: Bưc di chuyn c!a ô tr ng

II- THUT TOÁN A*

1- Gii thiu thut toán Thut 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+, thut toán ưc g+i là thut

2- Mô t thut toán Gi s n là 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 g c n 0 ti nút hi n ti n
  • h[n] chi phí ưc lưng t- nút hi n ti n ti ích
  • f[n] chi phí t,ng th ưc lưng c!a ư$ng i qua nút hi n ti n n ích M&t ưc lưng heuristic h[n] ưc xem là chp nhn ưc nu vi m+i nút n: 0 8 h[n] 8 h*[n]

Trong ó h*[n] là chi phí tht[th c t]  i t- nút n n ích.

3- Cài t thut toán OPEN[FRINGE]: tp 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 mà trong ó ph"n t có & ưu tiên cao nht là ph"n t t t nht.

CLOSE: tp 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 có 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 ni trong OPEN bên cnh vi c lưu tr* 3 giá tr 1 cơ bn g, h, f  ph 9 n ánh & t t 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 ni [ký hi u Cha[ni]]: cho bit trng thái d n trng thái ni.
  • Danh sách các trng thái tip theo c!a ni: danh sách này lưu tr* các trng thái k tip nk c!a ni sao cho chi phí n nk thông qua ni t- trng thái ban "u là thp nht. Th c cht danh sách này có th ưc tính t- thu&c tính Cha c!a các trng thái ã ưc lưu tr*. Tuy nhiên vi c tính toán này có th mt 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.

Thut toán A*:

function Astar[n 0 , ngoal]

  1. t OPEN ch 4 ch n 0. t g[n 0 ] = h[n 0 ] = f[n 0 ] = 0. t CLOSE là tp r 0 ng
  2. Lp li các bưc sau cho n khi gp iu ki n d-ng 2 Nu OPEN r 0 ng: bài toán vô nghi m, thoát. 2 Ngưc li, ch+n ni trong OPEN sao cho f[ni] sao cho f[ni]min 2.b Ly ni ra kh]i OPEN và ưa ni vào CLOSE 2.b Nu ni chính là ích ngoal thì thoát và thông báo l$i gii là ni 2.b Nu ni không phi là ích. To danh sách tt c các trng thái k tip c!a ni. G+i m&t trng thái này là nk. Vi m 0 i nk, làm các bưc sau: 2.b.3 Tính g[nk] = g[ni] + cost[ni, nk]; h[nk]; f[nk] = g[nk] + h[nk]. 2.b.3 t Cha[nk] = ni 2.b.3 Nu nk chưa xut hi n trong OPEN và CLOSE thì thêm nk vào OPEN
  3. KQ tp trng thái kt qu, lưu các trng thái t- trng thái hi n ti ti ích "u vào: trng thái hi n ti, trng thái ích "u ra: tp các trng thái t- trng thái hi n ti ti trng thái ích iu ki n 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 có th ci tin b[ng vi c b] tp CLOSE. Ta thy trong bưc 2.b / trên sau khi tìm ra các trng thái con c!a trng thái ni. Khi ó ni có t i a 4 trng thái con, nhưng trong các trng thái con c!a ni có 1 trng thái trùng vi trng thái cha c!a ni. Vì vy ta có th loi b] trng thái này  tránh vi c xét lp. Khi loi b] trng thái này s&

039; không t%n ti m&t trng thái con nào trùng vi m&t trng thái trong tp CLOSE n*a. Vi c loi b] này s&

039; tránh ưc vi c kim tra / bưc 2.b.3 gây t n 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 tìm kim A*. IDA* giúp loi b] hn ch b& nh c!a A* mà ko hy sinh gii pháp t i ưu. M 0 i 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 có chi phí vưt quá m&t ngư:ng cutoff thì nút ó s&

039; b 1 c 3 t gim, quá trình tìm kim backtracks trưc khi tip tc. Các ngư:ng chi phí ưc kh/i to ưc lưng heuristic c!a trng thái ban "u, và trong m 0 i l"n lp k tip làm t ng t,ng chi phí c!a các nút có chi phí thp ã ưc c 3 t t 4 a trưc ó. Thut toán chm dt khi trng thái ích có t,ng chi phí không vưt quá ngư:ng hi n ti.

Minh ha A*

1.1: Minh h+a A*

h 1 = 1+0+2+1+1+0+1+1 = 7 3.1 heuristic2 = t,ng khong cách d 1 ch chuyn [;,] ng 3 n nht  d 1 ch chuyn các ô sai v v 1 trí úng c!a nó c&ng thêm ch 4 s pht cp ô hàng xóm vi nhau ang n[m ngưc v 1 trí c!a nhau.

1.1: ích 1.1: Minh ha

 h 2 = d + a Trong ó a là ch s pht cp ô hàng xóm ang nm ngc v trí. Cp [2,1] mu n v úng v 1 trí c"n d 1 ch 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. Vì vy trong 1.1 có 2 cp hàng xóm n[m ngưc v 1 trí nên / ây a = 2+2 = 4.

3.1 heuristic

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1.1: ích 1.1: Minh ha Xét 1 ô n[m sai v 1 trí: d = |rows – row| 2 + |cols – 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

 h 3 = d 3 – [0*d 3 ] + a

3.1 heuristic Xét 1 ô sai n[m sai v 1 trí: d = |rows – row| 2 + |cols – col| 2 t d 4 = ?d  h 4 = d 4 + a

3 Ví d so sánh 3 hàm heuristic

Xét trng 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*d 34 ] + 2 = 21
  • heuristic4 = d 34 + 2 = 24

8 7 1

6 4

3 2 5

2- So sánh Vi trng thái b 3 t "u là trng thái / hình trên:

 Thut 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 gii quyt: 38598ms

Chủ Đề