Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
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
Sinh viên thực hiện: - Mai Đức Anh. 20101089 - Lê Công Hưng. 20101667 - Nguyễn Đức Cường. 20101215 - Chu Văn Định. 20101378 - Nguyễn Trung Đức. 20096258 - Trần Nam Sơn. 20096270 BÀI TẬP LỚN Đề tài: Game cờ Caro sử dụng thuật toán Min-Max và cắt tỉa alpha - beta 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 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. 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 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 - 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 - 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. - Ngoài ra thì còn một thông số của cây nữa là độ sâu (Fly) - Dựa vào cây trò chơi này, người ta có thể tìm ra nước đi “tốt” để giành phần thắng cho mình (nếu có thể), bằng cách tìm kiếm trên cây để tìm ra nước đi tốt nhất. 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. 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 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… [...]... đế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 α-β 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) IV Demo Chương trình ... về bộ nhớ O(bm).theo tìm kiếm sâu 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 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 2 Thuật toán cắt tỉa alpha-beta Thuật toán Cắt tỉa α-β Ý tưởng: Nếu một nhánh tìm kiếm nào đó không thể cải... mục tiêu – với giả sử là MIN đi các nước đi tối ưu 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 giá trị MINIMAX cực tiểu Thuật toán MIN- MAX 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 giá trị MINIMAX cực tiểu Hàm lượng... 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! IV Thuật toán sử dụng 1 Thuật toán Min- Max Các chiến lược tối ưu Chiến lược tối ưu là chuỗi các nước đi giúp đưa đến trạng thái đích mong muốn Chiến lược MAX bị ảnh hưởng bởi các nước đi của MIN và ngược lại MIN cần chọn một chiến lược giúp cực tiểu hóa giá trị hàm mục tiêu MAX cần chọn một chiến lược giúp... 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) 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: CẢM ƠN CÁC BẠN ĐÃ LẮNG NGHE! ... 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 Các trạng thái có thể xảy ra khi đang chơi: ... 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 . LỚN Đề tài: Game cờ Caro sử dụng thuật toán Min- Max và cắt tỉa alpha - beta 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. con người, ứng dụng thuật toán Min- Max và cắt tỉa alpha-beta 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. đượ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