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

slike thuyết trình áp dụng thuật toán tìm kiếm min max và alphabeta cắt tỉa xây dựng trò chơi cờ ca rô trên ngôn ngữ java

25 1,9K 5

Đ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 25
Dung lượng 443,46 KB

Nội dung

Mục đích bài toán: Xây dựng một chương trình game cờ Caro bằng Java với một trí tuệ nhân tạo - thông minh, nhanh nhạy có thể đối kháng với con người, ứng dụng thuật toán Min-Max và cắt

Trang 1

Sinh viên thực hiện:

Đề tài: Game cờ Caro sử dụng thuật toán Min-Max và cắt

tỉa alpha - beta

Trang 2

Mục đích bài toán:

Xây dựng một chương trình game cờ Caro bằng Java

với một trí tuệ nhân tạo - thông minh, nhanh nhạy có thể đối kháng với con người, ứng dụng thuật toán Min-Max và cắt tỉa alpha-beta

Trang 3

I Giới thiệu về game cờ Caro

Cờ caro hay gomoku chính là môn cờ logic lâu đời và cổ xưa nhất trên Trái Đất

Là trò chơi đối khàng giữa 2 người

Một số dạng biến thể của gomoku:

- Gomoku

- ProGomoku

- Pente

Trang 4

Luật chơi:

- Bàn cờ chuẩn 13 x 13, quân đen đi trước.

- Ai tạo được 5 quân liền nhau trước thì thắng

Ví dụ: quân O thắng

Trang 5

Biểu diễn bài toán dưới dạng cây trò chơi (Game tree)

Trò chơi có thể được biểu diễn như một cây gồm gốc, những nút, những lá và những nhánh

Phân tích bài toán

Trang 6

- Gốc là trạng thái ban đầu của trò chơi.Với mỗi trò chơi cụ thể thì trạng thái (ở mỗi thời điểm) lại được đặc trưng bởi nhưng thông số riêng

- Các nút (Node) của cây thể hiện tình trạng hiện tại của trò chơi, gồm nút cha (Parent Node) và nút con (Children Node)

- Các nhánh nối giữa các nút thể hiện nước đi cho biết

từ một tình huống của trò chơi chuyển sang tình

huống khác thông qua một nước đi nào đó

Cây trò chơi

Trang 7

- Nút lá (leave node), thể hiện thời điểm kết thúc

khi mà kết quả của trò chơi đã rõ ràng.

Trang 8

Thuật toán vét cạn liệu có được sử

dụng

Nếu như thuật toán vét cạn thực sự dùng được

để tìm kiếm trên cây trò chơi thì ta chỉ cần chọn nhánh cây dẫn tới nút chiến thắng để đi, và như vậy các trò chơi không còn sự hấp dẫn thường

có.Và thực tế là, trong các trò chơi đối kháng thì sau một vài lượt đi thì lại sinh ra rất nhiều khả

năng đánh tiếp theo (bùng nổ tổ hợp) Do đó

không dùng thuật toán vét cạn cho chiến lược tìm kiếm được.

Trang 9

Không gian tìm kiếm nước đi và chiến lược tìm kiếm trong cờ Caro

 Trong cờ caro thì cứ sau mỗi nước đi số ô trống sẽ giảm.Vì vậy việc tìm kiếm nước đi tiếp theo là tìm kiếm trong không gian các ô trống còn lại, sau mỗi lượt đi thì không gian tìm kiếm sẽ giảm dần

 Chiến lược thường được cả người lẫn máy dùng là phân tích thế cờ chỉ sau một nước đi nào đó của cả 2 bên Tức là trên cây trò chơi, việc tìm kiếm nước đi

là chọn 1 nút trên cây sao cho nước đi đó là “tốt”

Và để đánh giá được nút đó thì thường phải “nhìn xa”, liên quan đến độ sâu của cây

Trang 10

Máy tính thì thế cờ này được đánh giá tốt hơn thế cờ kia nhờ so sánh điểm của thế cờ đó do bộ lượng giá trả lại.Vì không gian tìm kiếm là quá lớn nên chúng ta giới hạn cho máy tính chỉ tìm kiếm ở một đọ sâu nhất định,

=> Và tất nhiên độ sâu càng lớn thì chương

trình càng “thông minh” nhưng trả giá về

mặt thời gian…

Trang 11

Biểu diễn các trạng thái

- Bàn cờ với kích thước nxn (với n từ 10 đến 18)

- Các quân cờ được đánh tại giao điểm của các đường kẻ (số đường kẽ tùy thuộc vào kích thước bàn cờ) tức các nút

- Mỗi nút được biểu diễn bằng một trang ba trạng thái: + Trạng thái 0 (EMPTY): Ô cờ trống

+ Trạng thái 1(BLUE): Ô cờ được đánh bởi người

thứ nhất

+ Trạng thái 2(RED): Ô cờ được đánh bởi người thứ hai

Trang 12

Các trạng thái có thể xảy ra khi đang chơi:

+ WIN: khi một trong 2 người chơi đánh được 5 quân liên tiếp theo một trong các trường hợp: 5 quân nằm ngang

liên tiếp, 5 quân thẳng đứng liên tiếp, 5 quân chéo trái liên tiếp hoặc 5 quân chéo phải liên tiếp

+ FILLED: Khi tất cả các nốt trên bàn cờ đã được đánh mà không ai dành chiến thắng Khi đó sẽ có cửa sổ thông báo hòa

+ ILLEGAL: Phạm qui, không được đánh Người chơi phạm qui khi đánh vào nước mà người chơi hoặc máy đã đánh trước đó hoặc đánh ra ngoài

+ OK: Khi 3 trạng thái trên không xảy ra thì người chơi có thể được đánh tiếp!

Trang 13

IV Thuật toán sử dụng

1 Thuật toán Min-Max

Trang 14

Các chiến lược tối ưu

giúp đưa đến trạng thái đích mong muốn.

nước đi của MIN và ngược lại

đại hóa giá trị hàm mục tiêu – với giả sử

là MIN đi các nước đi tối ưu

tiểu hóa giá trị hàm mục tiêu

Trang 15

 MAX chọn nước đi ứng với giá trị

MINIMAX cực đại (để đạt được giá trị cực đại của hàm mục tiêu)

 „ Ngược lại, MIN chọn nước đi ứng với Ngược lại, MIN chọn nước đi ứng với giá trị MINIMAX cực tiểu

Trang 16

 MAX chọn nước đi ứng với giá trị MINIMAX cực đại (để đạt được giá trị cực đại của hàm mục tiêu)

„ Ngược lại, MIN chọn nước đi ứng với Ngược lại, MIN chọn nước đi ứng với giá trị MINIMAX cực tiểu

Thuật toán MIN-MAX

Trang 17

Hàm lượng giá

 Value = 500 * Close2 + 1000* Open2 + 2000* Close3 + 3000* Open3 + 4000 * Close4 + 5000*Open4 + 10000000000

*Close5

Trang 19

Thuật toán cắt tỉa α-β

 α là giá trị của nước đi tốt nhất đối với MAX (giá trị tối đa) tính đến hiện tại đối với nhánh tìm kiếm

 „ Ngược lại, MIN chọn nước đi ứng với Nếu v là giá trị tồi hơn α, MAX sẽ bỏ qua nước đi ứng với v, Cắt tỉa nhánh

ứng với v

 β được định nghĩa tương tự đối với MIN

Trang 20

2 Thuật toán cắt tỉa alpha-beta

Trang 21

 Ý tưởng: Nếu một nhánh tìm kiếm nào

đó không thể cải thiện đối với giá trị

(hàm tiện ích) mà chúng ta đã có, thì

không cần xét đến nhánh tìm kiếm đó nữa!

 Việc cắt tỉa các nhánh tìm kiếm (“tồi”)

không ảnh hưởng đến kết quả cuối cùng

Thuật toán Cắt tỉa α-β

Trang 22

Thuật toán Cắt tỉa α-β

Trang 23

Hạn chế thuật toán Cắt tỉa α-β

 Đối với các trò chơi có không gian trạng thái lớn, thì phương pháp cắt tỉa α-β vẫn không phù hợp

 Có thể hạn chế không gian tìm kiếm

bằng cách sử dụng các tri thức cụ thể

của bài toán như Tri thức bổ sung

(heuristic)

Trang 24

IV Demo Chương trình

 Chương trình được viết dưới ngôn ngữ Java

và giao diện được thực hiện bằng thư viện Java Swing

 Trình biên dịch là NetBeans

 Dưới đây là hình ảnh minh họa giao diện của chương trình:

Trang 25

CẢM ƠN CÁC BẠN ĐÃ

LẮNG NGHE!

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

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w