15
1 Em cảm ơn thầy vì đã dạy em môn Trí tuệ nhân tạo. Phan Phước Thiện

BaoCao Content

Embed Size (px)

Citation preview

Page 1: BaoCao Content

1

Em cảm ơn thầy vì đã dạy em môn Trí tuệ nhân tạo.Phan Phước Thiện

Page 2: BaoCao Content

2

Mục lục Trang

1. Giới thiệu bài toán 8 puzzle…………………………….3

2. Mô tả thuật toán Best First Search……………………...4

3. Cài đặt bài toán 8 puzzle bằng Visual C# 2005………...8

4. Tài liệu tham khảo……………………………………..12

Page 3: BaoCao Content

3

1. Giới thiệu bài toán 8 puzzleBài toán 8 puzzle khi bắt đầu là một mảng gồm 9 ô vuông, mỗi ô mang một giá trị ngẫu nhiên không trùng nhau từ 1 đến 8 hoặc rỗng, ví dụ như hình bên dưới:

Trong quá trình di chuyển, ô mang giá trị rỗng có thể di chuyển qua trái, lên trên, qua phải hoặc xuống dưới. Đến khi đạt được trạng thái quy định trước (ví dụ trạng thái bên dưới), bài toán xem như đã được giải quyết.

2 8 3

1 6 4

7 5

1 2 3

8 4

7 6 5

Page 4: BaoCao Content

4

2 .Mô tả thuật toán Best First Search (BFS)Phần này em trình bày vể thuật toán BFS thông qua bài toán 8 puzzle.

A. Heuristic

- Heuristic là gì?

a. Heuristic là những tri thức được rút tỉa từ những kinh nghiệm, “trực giác” của con người.

b. Heuristic có thể là những tri thức “đúng” hay “sai”.

c. Heuristic là những meta knowledge và “thường đúng”.

- Heuristic dùng để làm gì?

Trong những bài toán tìm kiếm trên không gian trạng thái, có 2 trường hợp cần đến heuristic:

a. Vấn đề có thể không có nghiệm chính xác do các mệnh đề không phát biểu chặt chẽ hay thiếu dữ liệu để khẳng định kết quả.

b. Vấn đề có nghiệm chính xác nhưng phí tổn tính toán để tìm ra nghiệm là quá lớn (hệ quả của bùng nổ tổ hợp)

Heuristic giúp tìm kiếm đạt kết quả với chi phí thấp hơn

B. Thuật toán BFS

a. Best First search tương tự như Depth First & Breath First nhưng phần tử được xét tiếp theo là phần tử có giá trị heuristic tốt nhất.

b. Cần có một hàm đánh giá các trạng thái để xác định giá trị heuristic cho các trạng thái.

i. Không gian trạng thái vẫn không thay đổi về “toàn cục“ tuy nhiên thường Heuristic search có không gian trạng thái làm việc nhỏ hơn Depth First và Breath First.

Page 5: BaoCao Content

5

ii. Do sự định hướng các trạng thái kế tiếp theo hướng có khả năng tìm ra nghiệm nhanh hơn nên số trạng thái xét dư thừa sẽ hạn chế sinh ít trạng thái con hơn

iii. Điều này cũng là nguyên nhân làm cho Best First Search có thể dẫn đến kết quả là “nghiệm phụ” thay vì “nghiệm tối ưu”.

C. BFS với bài toán 8 puzzle

Xét bài toán 8 puzzle với goal là:

Bắt đầu Mục tiêu

Hàm lượng giá: F(n) = G(n) + H(n)

Với G(n): số lần chuyển vị trí tile đã thực hiện

H(n): Số tile nằm sai vị trí

Nút X có giá trị heuristic tốt hơn nút Y nếu F(x) < F(y).

Page 6: BaoCao Content

6

Page 7: BaoCao Content

7

Hoạt động theo giải thuật Best First Search

Lần X Open Close

0

1

2

3

4

5

6

7

A4

C4

E5

F5

J5

l5

M5

[a4]

[c4,b6,d6]

[e5,f5,g6,b6,d6]

[f5,h6,g6,b6,d6,i7]

[j5,h6,g6,b6,d6,k7,i7]

[l5,h6,g6,b6,d6,k7,i7]

[m5,h6,g6,b6,d6,k7,i7,n7]

[]

[a4]

[a4,c4]

[a4,c4,e5]

[a4,c4,e5,f5]

[a4,c4,e5,f5,j5]

[a4,c4,e5,f5,j5,l5]

Page 8: BaoCao Content

8

3 .Cài đặt bài toán 8 puzzle bằng Visual C# 2005

A. Mô hình của chương trình

a. Lớp Status

frmMain

frmNewGame

Status

ChessTable

RandomNumber

Page 9: BaoCao Content

9

b. Lớp ChessTable

c. RandomNumber.cs

Page 10: BaoCao Content

10

d. frmNewGame

Tạo ván mới với tùy chọn độ sâu suy nghĩ từ 4-9

e. frmMain

Giao diện chính của chương trình, cho phép tạo ván mới và hiển thị quá trình hoạt động của game.

B. Nguyên tắc hoạt động

- Bước 1: tạo game từ frmNewGame, sau đó frmMain sẽ chuyển cho đối tượng ChessTable quản lý để tiến hành tạo game mới với độ sâu tìm kiếm đã xác định.

- Bước 2: ChessTable sẽ tạo ra một đối tượng startStatus là trạng thái ban đầu. Sau đó, bằng phương thức doThinking() của đối tượng ChessTable sẽ tìm kiếm đến khi gặp Goal hoặc đến độ sâu định trước thì trả về đối tượng gần nhất Tmin(ở trên cùng trong stack close). Trong quá trình tìm kiếm, trạng thái trung gian sẽ được lưu vào close và closeAll.

- Bước 3: nếu trạng thái Tmin là Goal thì hiển thị trạng thái Goal và qua bước kết thúc, ngược lại qua bước 4

- Bước 4: hiển thị các trạng thái trong stack

Page 11: BaoCao Content

11

close từ Tmin đến root (chỉ những trạng thái có họ hàng với nhau). Sau đó lặp lại bước 2.

- Bước 5: kết thúc

C. Giao diện chính của chương trình

- New game:

- Running:

Page 12: BaoCao Content

12

- Goal:

Page 13: BaoCao Content

13

4 .Tài liệu tham khảo

a. Slide bài giảng môn AI của thầy

b. Trang web google.com.vn và các trang khác