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 1Sinh 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 2Mụ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 3I 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 4Luậ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 8Thuậ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 9Khô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 10Má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 11Biể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 12Cá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 13IV 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 17Hàm lượng giá
Value = 500 * Close2 + 1000* Open2 + 2000* Close3 + 3000* Open3 + 4000 * Close4 + 5000*Open4 + 10000000000
*Close5
Trang 19Thuậ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 202 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 22Thuật toán Cắt tỉa α-β
Trang 23Hạ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 24IV 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 25CẢM ƠN CÁC BẠN ĐÃ
LẮNG NGHE!