1. Trang chủ
  2. » Công Nghệ Thông Tin

slide thuyết trình môn báo cáo môn trí tuê nhân tạo áp dụng thuật toán tìm kiếm minmax và cắt tỉa alpha beta xây dựng trò chơi cờ cờ tướng tr

15 1,3K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 607,99 KB

Nội dung

Khái quát về giải thuật MiniMax• Là một giải thuật tìm kiếm được bắt nguồn từ trò chơi tổng bằng không.. • Áp dụng trong các thể loại game đối kháng 1-1 như tic-tac-toe, cờ tướng,… • Giả

Trang 1

BÁO CÁO BÀI TẬP LỚN

TRÍ TUỆ NHÂN TẠO

GIẢNG VIÊN: PHẠM VĂN HẢI

Đề tài:

NGHIÊN CỨU VÀ CẶT ĐẶT GIẢI THUẬT TÌM KIẾM MINMAX– CẮT TỈA ALPHA BETA VÀO GAME CỜ TƯỚNG

Nhóm 18:

1 Phạm Toàn Thắng 20102749

2 Nguyễn Viết Hiện 20101536

3 Nguyễn Đình Tài 20102117

4 Tô Đông Hoàng 20081074

5 Đỗ Đức Huy20081125

Trang 2

Nôi dung chính

1 Khái quát về giải thuật MiniMax

2 Khái quát về giải thuật Alpha Beta

3 Xây dựng game cờ tướng

4 Kết luận

2

Trang 3

1.1 Khái quát về giải thuật MiniMax

• Là một giải thuật tìm kiếm được bắt nguồn từ trò chơi tổng bằng không.

• Áp dụng trong các thể loại game đối kháng 1-1 như tic-tac-toe, cờ tướng,…

• Giải thuật Minimax giúp tìm ra nước đi tốt nhất, bằng cách đi ngược từ cuối trò chơi

trở về đầu Tại mỗi bước, nó sẽ ước định rằng người A đang cố gắng tối đa hóa cơ

hội thắng của A khi đến phiên anh ta, còn ở nước đi kế tiếp thì người chơi B cố gắng

để tổi thiểu hóa cơ hội thắng của người A (nghĩa là tối đa hóa cơ hội thắng của B).

3

Trang 4

Minmax hoạt động như thế nào???

4

Trang 5

1.2 Cách xây dựng giải thuật MiniMax

• Public int MinMax (int pos, int depth){

if depth = 0 then

return Eval (pos); //Trả về giá trị thế cờ pos

else{

best = -INFINITY;

Gen (pos); //Sinh ra mọi nước đi từ thế cờ pos

while (còn lấy được một nước đi m)

{

pos = Tính thế cờ mới nhờ đi m;

value = -MinMax (pos, depth - 1);

if (value > best) best = value;

}

return best;

}

}

5

Trang 6

• Nếu hệ số nhánh trung bình của cây là b và ta thực hiện tìm kiếm đến

độ sâu d thì số nút phải lượng giá ở đáy cây như ta đã biết là bd Đây

chính là số đo độ phức tạp của thuật toán Nếu b = 40, d = 4 (các con số

thường gặp trong trò chơi cờ) thì số nút phải lượng giá là 404 = 2560000

(trên 2 triệu rưỡi nút) Còn với b = 40, d = 5 thì số nút phải lượng giá sẽ

tăng 40 lần nữa thành 405 = 102400000 (trên 102 triệu nút)

1.2 Đánh giá giải thuật MiniMax

6

Trang 7

• Thủ tục AlphaBeta là một cải tiến thuật toán Minimax

nhằm tỉa bớt nhánh của cây tìm kiếm, làm giảm số lượng

nút phải sinh và lượng giá, do đó có thể tăng độ sâu của

cây tìm kiếm Giả sử hình 3 là một thế cờ mà hai nút đầu

tiên đã được lượng giá Nếu thực hiện thủ tục Minimax

đối với các nút đó sẽ cho thấy người chơi cực đại đã

được đảm bảo nếu đi nước bên trái sẽ được ít nhất là 2

điểm dù là các lượng giá của các nút khác cho kết quả

như thế nào đi nữa

2 1 Khái quát về giải thuật AlphaBeta

7

Trang 8

• int AlphaBeta(int alpha, itn beta, int depth){

if depth == 0

return Eval { Tính giá trị thế cờ pos }

else{

best = -INFINITY;

Gen; { Sinh ra mọi nước đi từ vị trí pos }

while (còn lấy được một nước đi m) and (best < beta) do

{

if best > alpha then alpha := best;

thực hiện nước đi m;

value := -AlphaBeta(-beta, -alpha, depth-1);

bỏ thực hiện nước đi m;

if value > best then best := value;

}

AlphaBeta := best;

end;

end;

1.2 Cách xây dựng giải thuật AlphaBeta

8

Trang 9

1.2 Đánh giá và so sánh AlphaBeta với MiniMax

Độ sâu

Tỉ lệ số nút Minimax / AlphaBeta

9

Trang 10

Ví dụ về cắt tỉa

10

Trang 11

3 Xây dựng trò chơi Cờ tướng áp dụng thuật toán Minmax và AlphaBeta

• Eval() : Phương thức lượng giá

• Xây dựng 2 phương thức tìm

kiếm MinMax và AlphaBeta

11

Trang 12

• Phương thức Val() đánh giá thế cờ hiện tại.

Để đánh giá “điểm” của 1 thế cờ rất không đơn giản, nếu muốn có sự biến hóa không lường, mềm mại như con người, thì phải dựa vào nhiều tiêu chi khác nhau

để đánh giá, như ví trí quân cờ, cách kết hợp các quân cờ để vừa công, vừa thủ…

- 1 Tiêu chí đơn giản được đặt ra đó là “có gì ăn nấy” và cố gắng ăn được quân cờ nhiều điểm của địch

- Phương pháp là sẽ lấy tổng giá trị các quân cờ hiện có của bên mình trừ đi tổng giá trị các quân cờ hiện có của đối phương Do đó, một thế cờ này hơn thế cờ kia ở chỗ nó còn nhiều quân bên mình hơn, nhiều quân giá trị cao hơn cũng

như có bắt được nhiều quân và quân giá trị cao của đối phương hơn không

12

3 Xây dựng trò chơi Cờ tướng áp dụng thuật toán Minmax và AlphaBeta

Trang 13

Xây dựng hàm lượng giá Val()

• Các quân cờ được gán cho một số điểm nhất định.

13

Quân cờ Kí hiệu Điểm Tốt PAWN 10 (20 nếu đã qua sông)

Trang 14

private int Eval() { int sum = 0;

for (int i = 0; i < BOARD_SIZE; ++i) {

if (color[i] == side) { sum += pointtable[piece[i]][color[i]-1][i];

} else if (color[i] == xside) { sum -= pointtable[piece[i]][color[i]-1][i];

}

} ++evalcount;

return sum + Bonous();

}

14

Xây dựng hàm lượng giá Val()

Trang 15

4 Kết luận.

• Đồ án mới chỉ dừng lại ở mức độ tiếp cận, chưa thể nghiên cứu sâu hơn, và tối ưu thuật toán hơn

• Giao diện chương trình chỉ phục vụ cho học tập nên không thân thiện với người dung

• Cần xây dựng được hàm lượng giá tốt hơn, để có thể tạo ra những

nước đi mang tính nghệ thuật trong Cờ Tướng.

15

Ngày đăng: 23/10/2014, 23:58

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w