Tr

ng đ i h c H i Phòng

ườ

ạ ọ

Khoa Toán-Tin

Đ tài xây d ng ch

ng trình Game

ươ

15-Puzzle

Giáo viên h

ng d n: Nguy n Ng c Kh

ng

ướ

ươ

ngươ

Sinh viên th c hi n: Ø Nguy n Văn Hùng ễ Ø Đào Quang Ph Ø Đào Nh t Th nh

1

N i dung

2

Gi

i thi u Game 15-Puzzle

Ø Game 15-puzzle còn g i là Gem Puzzle, Boss Puzzle, Game of

Ø Là trò ch i di chuy n trên m t khung bao g m các ô vuông đánh

Fifteen, Mystic Square và nhi u tên khác ề

Ø Trò ch i này cũng t n t

ơ ứ ự ẫ ộ ồ ng u nhiên v i m t ô b thi u ớ ế ộ ị s theo th t ố

t nh h n là 8-Puzzle

c khác nhau, đ c bi ỡ

ỏ ơ

3

i trong các kích ồ ạ ơ

Gi

i thi u Game 15-Puzzle

Ø N u kích th

ế ặ

c đ t tên t ơ ượ ọ ọ ơ ượ ng ô và s l ng ng s l ướ ế ượ ặ ươ ứ c g i là 8-Puzzle ho c 9- c g i là 15-Puzzle ho c ặ ng c a ủ ố ượ ố ượ

c là 3 x 3 ô, trò ch i đ Puzzle, và n u là 4 × 4 ô, trò ch i đ 16-Puzzle, đ không gian

Ø M c tiêu c a trò ch i là đ t các ô theo tr t t ơ

b ng cách tr t ậ ự ằ ủ ụ ặ ượ

Ø n-Puzzle là m t v n đ c đi n cho các thu t toán mô hình hóa

các ô đ di chuy n không gian tr ng ể ể ố

ề ổ ể ộ ấ ậ

4

liên quan đ n ế đánh giá

Gi

i thi u Game 15-Puzzle

ượ ử ụ ườ ề ồ

§ Hàm đánh giá th ố ỗ

c s d ng cho v n đ này bao g m ấ đ m s ô đ t sai ch và tìm ki m t ng kho ng cách Manhattan ế ả ế gi a m i kh i v i v trí c a nó trong c u hình m c tiêu ữ ng đ ặ ỗ ố ớ ị ủ ụ ấ

ậ ấ

ng di i ấ ả ể ố ượ ả ả ố ằ

§ T t c hàm đánh giá đ u đ chuy n nhi u s không đ ề ẽ ậ ư

5

u cho các thu t toán tìm ki m nh t đ nh ch ng h n nh A* ề ượ ượ ế c ch p nh n, nghĩa là, s l c đánh giá cao nh m đ m b o t ẳ ấ ị ư ạ

Mô t

gi ả ả

i thu t A* ậ

Ø Trong khoa h c máy tính, A* (đ c là

A sao) là m t thu t toán tìm ọ ậ ộ

ọ ki m trong đ th . ồ ị ế

Ø Thu t toán này tìm m t đ c (ho c t

ộ ườ ặ ớ ướ i m t m t nút kh i đ u t ng đi t ộ ở ầ ớ i m t nút th a mãn m t đi u ki n ệ ề ộ ừ ộ ỏ ộ

nút đích cho tr đích).

Ø Thu t toán này s d ng m t "đánh giá heuristic" đ x p lo i ạ t nh t đi qua nút đó.

ậ ể ế

ộ ng v tuy n đ ng t ử ụ c l ướ ượ t ng nút theo ừ ế ườ ề ấ ố

Ø Thu t toán duy t các nút theo th t ệ

6

c a đánh giá heuristic này ậ ứ ự ủ

Mô t

gi ả ả

i thu t A* ậ

Ø A* S d ng các t p: Open , Close (Đ l u các tr ng

ử ụ

ể ư

thái)

Và các giá tr : G,H,F (Đ ph n ánh đ t

t c a

ộ ố ủ

tr ng thái)

Ø Trong đó:

§ Open: Ch a các tr ng thái đã đ

c sinh ra nh ng

ượ

ư

ch a đ

ạ ứ ư ượ xét đ nế c

§ Close: Ch a các tr ng thái đã đ

ượ

c xét đ n ế

§ G(x):Chi phí đ đi t

tr ng thái đ u đ n tr ng thái

ừ ạ

ế

7

x

§ H(x):Là hàm đánh giá heuristic v chi phí nh nh t

t

ừ x đ đ n đích

ể ế

§ F(x)=G(x)+H(x) :F(x) Dùng đ đánh giá đ u tiên

ộ ư

c a x Nh v y F(x) càng nh thì đ u tiên càng

ư ậ

ộ ư

l n ớ

Mô t

gi ả ả

i thu t A* ậ

Ø Ngoài ra ta còn s d ng thêm 1 giá tr ị

ử ụ

Ø Vi c s d ng thêm giá tr Cha nh m giúp ta có th tìm l

Cha(x):L u l i tr ng thái đã sinh ra tr ng thái x ư ạ ạ ạ

c ể ằ ị i đ ạ ượ

8

con đ ệ ử ụ ng t ườ ừ ạ tr ng thái đích đ n tr ng thái đ u ế ạ ầ

Mô t

gi ả ả

i thu t A* ậ

ứ T0(Tr ng ạ

thái ban đ u).

1. Đ t ặ OPEN ch ch a ầ

Đ t ặ g(T0) = 0 ; Cha(T0)=null ; Tính H(T0) và F(T0)

Đ t ặ CLOSE là t p h p r ng.

ợ ỗ

c sau cho đ n

ế

9

2. L p l ặ khi g p đi u ki n d ng. ặ

i các b ề

ướ ệ ừ

2.a. N u ế OPEN r ng : bài toá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à Đích

thì thoát và thông báo l

i gi

i là

Tmax.

Mô t

gi ả ả

i thu t A* ậ

ạ ọ

10

2.b.3. N u ế Tmax không Đích. Sinh ra các ph i làả ủ Tmax. tr ng thái con c a G i m t tr ng thái này là ạ ộ ỗ Tk, làm các Tk. V i m i ớ c sau b ướ 2.b.3.1.

Tính g(Tk) =

g(Tmax) + cost(Tmax, Tk).

Đ tặ

Cha(Tk)=Tmax

; Tính

H(Tk) và F(Tk)

2.b.3.2. N u t n t

i

ế ồ ạ Tk’

trong OPEN ho c ặ CLOSE

trùng v i ớ Tk.

N u ế G(Tk) < G(Tk’)

thì

G(Tk’)

=

Đ t ặ

G(Tk)

Tính l

i ạ F(Tk’)

Cha(Tk’) =

Đ t ặ

Tmax

2.b.3.3. N u ế Tk ch a ư

xu t hi n trong c

ả OPEN

l n ẫ CLOSE thì

Thêm Tk vào OPEN

Mô t

gi ả ả

i thu t A* ậ

11

Mô t

gi ả ả

i thu t A* ậ

12

Mô t

gi ả ả

i thu t A* ậ

13

Mô t

gi ả ả

i thu t A* ậ

ộ ụ

§ Đ ph c t p th i gian c a A* ph thu c vào đánh giá heuristic. c m r ng theo hàm mũ ấ i, nh ng nó s là hàm đa th c khi hàm ứ ả

ứ ạ ườ ộ ượ ở ộ

ủ ng h p x u nh t, s nút đ ẽ ấ ố ư ờ

ờ Trong tr ợ i gi c a đ dài l ộ ủ heuristic h th a mãn đi u ki n sau: ỏ ề ệ

ế

i u, nghĩa là hàm cho k t qu là chi ả ố ư ố ủ h i đích. Nói cách khác, sai s c a ớ ả h * -

§ trong đó h* là heuristic t ừ x t phí chính xác đ đi t không nên tăng nhanh h n lôgarit c a "heuristic hoàn h o" ơ ự ừ x t hàm tr v kho ng cách th c t ả

14

i đích. ả ề ủ ớ

Mô t

gi ả ả

i thu t A* ậ

§ V n đ s d ng b nh c a A* còn r c r i h n đ ph c t p

ắ ố ơ ề ử ụ ứ ạ ớ ủ ộ ộ

§ Trong tr

th i gian. ấ ờ

ng h p x u nh t, A* ph i ghi nh s l ng nút tăng ườ ớ ố ượ ấ ả ấ ợ

§ M t s bi n th c a A* đã đ

theo hàm mũ.

ộ ố ế ệ

ượ ng này, m t trong s đó là A* l p sâu d n ( ể ủ ộ ể ặ ầ

c phát tri n đ đ i phó v i hi n ớ ể ố iterative ớ ớ ạ memory-bounded A* - MA*) simplified memory bounded ớ ớ ạ

15

t ố ượ i h n ( deepening A*), A* b nh gi ộ và A* b nh gi i h n đ n gi n ( ả ơ ộ A*).

Mô t

gi ả ả

i thu t IDS ậ

Ø Thu t toán tìm ki m sâu d n(IDS-Iterative deepening search)

Ø Là thu t toán tìm m t đ

ế là m t thu t toán tìm ki m trong đ th ồ ị ậ ộ ế ậ

ừ ộ

ộ ườ c (ho c t ặ ớ i m t m t nút kh i đ u t ng đi t ộ ở ầ ớ i m t nút th a mãn m t đi u ki n ệ ề ộ ỏ ộ ướ

Ø Thu t toán này s d ng gi

ậ nút đích cho tr đích)

i thu t DFS(Depth First Search) ử ụ ả

16

ậ cho t ng đ sâu trong cây tìm ki m ậ ừ ế ộ

Mô t

gi ả ả

i thu t IDS ậ

ØTìm ki m theo chi u sâu-DFS

ế

§ Phát tri n các nút ch a xét theo chi u sâu – ề ư đ sâu gi m c xét theo th t

ứ ự ộ

ượ

ể Các nút đ d nầ

§ Cài đ t:ặ

c

fringe là m t c u trúc ki u ngăn x p ể ớ ượ b sung vào đ u

ế ầ

ấ (LIFO) – Các nút m i đ c a ủ fringe)

17

DFS (N, A, n0, ĐICH)

{

fringe ← n0;

closed ← ;∅

while (fringe ≠ ) do∅

{ n ← GET_FIRST(fringe); // l y ph n t đ u tiên c a ầ ử ầ ủ fringe ấ

closed ← closed n;⊕

if (n ĐICH) then return SOLUTION(n); ∈

if (Γ(n) ≠ ) then fringe ← Γ(n) fringe; ∅ ⊕

}

return (“No solution”);

}

Mô t

gi ả ả

i thu t IDS ậ

§ Ví d DFS: ụ

18

Mô t

gi ả ả

i thu t IDS ậ

§ Ví d DFS: ụ

19

Mô t

gi ả ả

i thu t IDS ậ

§ Ví d DFS: ụ

20

Mô t

gi ả ả

i thu t IDS ậ

§ Ví d DFS: ụ

21

Mô t

gi ả ả

i thu t IDS ậ

§ Ví d DFS: ụ

22

Mô t

gi ả ả

i thu t IDS ậ

§ Ví d DFS: ụ

23

Mô t

gi ả ả

i thu t IDS ậ

ØTìm ki m sâu d n-IDS

ế

§ Áp d ng gi ả ụ có đ dài<=1 ộ

i thu t DFS đ i v i các đ ng đi (trong cây) ố ớ ậ ườ

i gi i), ti p t c áp d ng ả ụ

§ N u th t b i (không tìm đ ế i thu t DFS đ i v i các đ ả

§ N u th t b i (không tìm đ

gi ấ ạ ậ ố ớ c l ế ụ ượ ờ ng đi có đ dài <=2 ộ ườ

i gi i), ti p t c áp d ng ả ế ụ ụ

§ …(ti p t c nh trên, cho đ n khi: tìm đ

gi ế i thu t DFS đ i v i các đ ả ấ ạ ậ ố ớ c l ượ ờ ườ ng đi có đ dài <=3 ộ

§

i gi ế ụ ư ế c l ượ ờ ả i ho c ặ

24

toàn b cây đã đ c xét mà không tìm đ i gi i) ộ ượ c l ượ ờ ả

Mô t

gi ả ả

i thu t IDS ậ

i ớ

IDS (N, A, n0, ĐICH, l) // l: gi h n đ sâu

ạ ộ

{

; depth

fringe ← n0; closed ← ← l;

25

while (fringe ≠ ) do∅ { n ← GET_FIRST(fringe); // l y ấ

ph n t

đ u tiên c a

ầ ử ầ

ủ fringe

closed ← closed

n;⊕

if

(n

ĐICH)

then

return

SOLUTION(n);

if (Γ(n) ≠

) then

{ case d(n) do // d(n): đ sâu c a

nút n

[0..(depth-1)]: fringe ← Γ(n)

fringe;

depth: fringe ← fringe

Γ(n);

(depth+1): { depth ← depth + l;

if (l=1) then fringe

Γ(n);

else fringe ← Γ(n)

fringe;

}

}

}

return (“No solution”);

}

Mô t

gi ả ả

i thu t IDS ậ

• Ví d IDS ụ

26

Mô t

gi ả ả

i thu t IDS ậ

• Ví d IDS ụ

27

Mô t

gi ả ả

i thu t IDS ậ

• Ví d IDS ụ

28

Mô t

gi ả ả

i thu t IDS ậ

• Ví d IDS ụ

29

Mô t

gi ả ả

i thu t IDS ậ

ng các

nút

đ

c sinh ra trong gi

§ V i đ sâu ớ ộ ượ

d và h s phân nhánh b, thì s l ố ượ ầ ậ

i thu t tìm ki m sâu d n là: ế

ệ ố ả

§ Đ ph c t p v th i gian c a IDS

NIDS = (d+1)b0 + db1 + (d-1)b2 + … + 3bd-2 +2bd-1 + 1bd

ộ ứ ạ ề ờ ủ

§ Đ ph c t p v b nh c a IDS

(d+1)b0 + db1 + (d-1)b2 + … + 3bd-2 +2bd-1 + 1bd = O(bd)

O(bd)

30

ộ ứ ạ ề ộ ớ ủ

i thu t xây d ng Game 15-Puzzle

Áp d ng gi ụ

Ø M t b ng 4x4 v i các ô trong đó có s t

Bài toán 15-puzzle:

1->15 và 1 ô tr ng ộ ả ố ừ ớ ố

Ø Các ô đ c đ t ượ ặ ở đ i ch cho nhau ỗ ổ

Ø Tìm cách di chuy n các ô sao cho các con s v đúng th t

các v trí ng u nhiên, ô tr ng và ô s có th ể ẫ ố ố ị

ố ề ứ ự ể

Ø Bài toán đ t ra ở chuy n là ít nh t ấ ể

31

đây là tìm ph ng án t i u sao cho s l n di ặ ươ ố ư ố ầ

i thu t xây d ng Game 15-Puzzle

Áp d ng gi ụ

Tr ng thái đ u

Tr ng thái đích

i bài toán đi u ki n đ u tiên c n quan tâm là xác đ nh ệ ề ầ ầ ị

§Đ gi ể ả tr ng thái đích ạ §Ti p sau đó là d a vào tr ng thái đích và tr ng thái đ u đ xem ế bài toán có gi

ể ầ ạ

32

ạ c hay không ự i đ ả ượ

i thu t xây d ng Game 15-Puzzle

Áp d ng gi ụ

§ V i bài toán 15-Puzzle ta có đi u ki n gi

i đ ả ượ

c nh sau: ư

.N mod 2 = 0 và ô tr ng n m trên dòng trên ằ ố ch nẵ tính t ừ

xu ngố

§ Vi c tính N s đ

trên xu ng .N mod 2 = 1 và ô tr ng n m trên dòng ố ằ lẻ tính t ừ ố

Đ u tiên hãy th tính có bao nhiêu s bé h n 5

sau ô ch a giá

ơ

ố c là 4 (nh ng ô khoanh tròn)

tr 5. K t qu nh n đ

ả ậ ượ

ế

ầ ị

33

c theo các b ẽ ượ ệ ướ c nh sau: ư

i thu t xây d ng Game 15-Puzzle

Áp d ng gi ụ

T

ng t

ươ

ư ậ

nh v y v i ô có giá tr 11. D th y trong 4 ô ị (9,13,14,12) có 1 giá tr nh h n 11 là 9.

ớ ị ỏ ơ

i ô cu i cùng (12) và c ng d n các

 Làm nh trên t ô đ u tiên (7) t ừ ư c giá tr nh n đ ậ ượ ị

 N = 6+4+1+2+0+1+1+2+6+0+1+0+1+1+0=26

 Ta có ô tr ng n m trên dòng 2 và N mod 2 = 0 => Bài toán gi

34 c i đ ả ượ

i thu t xây d ng Game 15-Puzzle

Áp d ng gi ụ

Ø Áp d ng gi ụ

i thu t A* đ gi i quy t bài toán v y vi c ti p ả ể ả ế ệ ế ậ

Đ i v i bài toán puzzle ng

ườ

ườ

ố ớ ổ

ủ c s d ng và nó có tên g i là

ệ ng đ

ng đánh giá tr ng thái d a i ta th ạ vào t ng s ô sai l ch c a các ô s so v i v trí đúng c a nó. Đây ớ ị ố ọ Manhattan. là cách tính th

ượ ử ụ

ườ

Ví d :ụ

theo ta c n xây d ng hàm đánh giá heuristic(H) ầ ậ ự

Đích

35

=>

i thu t xây d ng Game 15-Puzzle

Áp d ng gi ụ

Trong b ng s ố 7 vào đúng v trí ố 4×4 trên, đ di chuy n ô s 3 ô khác), đ di chuy n ô s ố ể ể

ả ể ị

ể ầ

Làm l n l

ta c n di chuy n nó 9 v đúng v trí ta c n di chuy n nó ầ ể 3 l n(qua ể 1 l nầ ầ ề ị

Ta tính đ

t nh v y cho t ng ô s ầ ượ ư ậ ừ ố

Nh v y

c H = 3+2+1+0+1+1+0+1+2+2+1+1+1+1+1=18 ượ

tr ng thái đích thì H s có giá tr th p nh t là = ư ậ ở ạ ị ấ ẽ ấ

36

0.

Xin chân thành c m ơn!

37