Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
593,42 KB
Nội dung
Mục Lục A Thuật toán Minimax I Thuật toán minimax II Các Alpha-beta Cutoff Thủ tục B Trị chơi tíc tắc toe 10 I Giới thiệu trò chơi 10 II Mục tiêu trò chơi 10 III Hướng giải 10 IV Thuật toán 12 V Giới thiệu chương trình 18 Giao diện chương trình 18 Chức chương trình 18 Kết trò chơi 20 C Tài liệu tham khảo 22 Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com A Thuật toán Minimax Thuật toán minimax Thuật toán minimax chứa đựng tất khả việc chuyển đổi trạng thái từ trạng thái đưa từ bao phủ lên khoảng trống Thuật toán có ứng dụng trị chơi có khả chuyển đổi trạng thái từ trạng thái thử nghiệm cho trước Một ví dụ thơng dụng ta bắt trước thuật tốn minimax qua trị chơi Nim game Đây trò chơi người chơi.Trò chơi bắt đầu với số lẻ que.thông thường vị trí dịng đơn gọi cọc mốc Mỗi người chơi đặt cọc mốc để phá vỡ mốc đối phương dòng.trò chơi kết thúc người ko đưa bước thành công.Người ko đưa bước thành cồng thua Theo quy ước tiêu chuẩn đặt tên cho hai người chơi MINIMIZER MAXIMIZER NIM trò chơi phòng thủ người chơi mở gọi MINIMIZER I Biểu đồ của trò chơi NIM biểu diễn hình in fig 4.12 (a) , phân ranh giới bước MAXIMIZER MINIMIZER Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com thuật tốn Minimax, trình bày thời gian ngắn, theo quy ước sử dụng Sự thành công MAXIMIZER ký hiệu 1, thành cơng MINIMIZER -1 hịa 0.Những giá trị gắn vào bước người chơi.một câu hỏi thường phát sinh người chơi biết bước họ thành cơng hay thất bại trị chơi kết thúc.Điều thấy rõ thuật toán Minimax theo nguyên tắc : định số từ {+1,0,-1} phụ thuộc vào bước có thành cơng hay khơng MAXIMIZER MINIMIZER hịa theo thứ tự.bây ta truyền giá trị phụ thuộc vào bước MAXIMIZER MINIMIZER Nếu Maximizer di chuyển sau giá trị giá trị tối đa sở hữu offsprings Trong trường hợp MINIMIZER di chuyển giá trị tối thiểu giá trị sở hữu offsprings Khoa cơng nghệ thơng tin trường đại học Công Nghiệp Hà Nội Page LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Nếu giá trị truyền lên đến nút gốc nguyên tắc trên, sau người chơi chọn di chuyển tốt đến lượt Các tính tốn q trình trò chơi Minimax minh họa fig 4,12 (b) Hàm Minnimax 1.mở rộng toàn không gian trống sau nút gán giá trị {+1,0,-1} tùy thuộc vào bước MAXIMIZER hay MINIMIZER tương ứng node tương ứng làm Begin Nếu nút MAXIMIZER , giá trị giá trị cực đại giá trị ; Nếu nút MINIMIZER ,thì giá trị giá trị cực tiểu giá trị End For; End Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com II Các Alpha-beta Cutoff Thủ tục Thuật tốn Minimax nói u cầu mở rộng tới tồn khoảng khơng gian trống Đây hạn chế nghiêm trọng , đặc biệt với vấn đề mở rộng khoảng trống Để giải khó khăn cách giải dung đánh giá heuristic tình trạng bước người chơi để chọn bước cho người chơi.Chúng ta minh họa q trình tính tốn biện pháp heuristic nút với tiếng trò chơi TIC TAC TOE Xét hàm heuristic e(n) [3], [5] nút n đánh giá khác biệt dịng giành chiến thắng người chơi e(n) =M(O)- O(n) M (n) = số dịng tơi giành chiến thắng O (n) = số dịng giành chiến thắng đối thủ Ví dụ, fig 4,13 M (n) = 6, O (n) = e (n) = Bây giờ, thảo luận loại thuật tốn, mà khơng u cầu mở rộng tồn khơng gian exhaustively Thuật tốn gọi alpha-beta thuật toán cắt Trong thuật toán này, hai phụ lớp chuyển động xem xét để lựa chọn di chuyển từ lựa chọn thay Alpha beta biểu hai cắt cấp liên kết với nút MAX MIN Giá trị alpha MAX node giảm, giá trị beta nút MIN khơng tăng Nhưng làm tính tốn giá trị alpha beta? Chúng giá trị lưu lên đến gốc Minimax Có vài thú vị điểm khám phá giai đoạn Trước q trình tính tốn MAX / MIN giá trị lưu lớp con, thuật toán alpha-beta cắt ước lượng e (n) tất Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com nút rìa n Bây giờ, giá trị ước tính sau thuật tốn Minimax Bây giờ, để cắt tỉa đường dẫn không cần thiết bên nút, kiểm tra xem i) giá trị beta nút MIN bên nút MAX nhỏ với giá trị alpha Nếu có, cắt tỉa đường bên nút MIN ii) giá trị beta nút MAX bên nút MIN nhỏ với giá trị alpha Nếu có, cắt tỉa đường bên nút MAX Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Fig.4.14: Hai lớp di chuyển Maximizer với e tính (n) rìa nút: C, D, E; lưu giá trị nút B A thiết lập αmax βmin giá trị nút A B tương ứng Dựa thảo luận trên, chúng tơi trình bày bước α-β thuật tốn tìm kiếm i) Tạo nút mới, di chuyển bắt đầu, mở rộng khác theo độ sâu cách Để thực định lựa chọn di chuyển độ sâu d, nên mở rộng Khoa cơng nghệ thơng tin trường đại học Công Nghiệp Hà Nội Page LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com lên đến độ sâu (d + 2) ii) Tính e (n) cho tất để lại (rìa) nút n iii) Tính α ' (cho nút tối đa) β ' tối đa giá trị (đối với nút min) tổ tiên nút rìa nguyên tắc sau Ước tính tối thiểu giá trị (e α) sở hữu β trẻ em nút MINIMIZER N gán ' tối đa giá trị Tương tự vậy, ước tính tối đa giá trị (e β) sở hữu nút Maximizer N gán giá trị αmin Fig 4.15: Những cách nghĩ để di chuyển thay F tự sinh lớp G e(G)=-1, β max F =-1, , β max F nhỏ so với α A Như ko có nhu cầu tìm kiếm F, G bớt khơng gian tìm kiếm Khoa cơng nghệ thơng tin trường đại học Công Nghiệp Hà Nội Page LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Fig 4.16: Nút G bị cắt tỉa , nút C, D E mở rộng e(n ) thiết lập n = H , I , J K giá trị αmin ước lượng nút C, D, E.Bởi giá tri αmin C lớn giá trị βmax B, giá tri αmin D giá trị βmax B, ko cần tìm kiếm nút C D IV) Nếu nút MAXIMIZER có giá trị αmin Sau giá trị αmin = MAX(αmin) Một mặt khác nút MINIMIZER có giá trị βmax sau βmax = MAX(βmax) V) Nếu thiết lập giá trị βmax nút MINIMIZER N nhỏ αmin nút cha MAXIMIZER N’ sau ko cần tìm kiếm nút N Tương tự Nếu thiết lập giá trị αmin nút MAXIMIZER N nhỏ αmin nút cha MINIMIZER N’ sau ko cần tìm kiếm nút N Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Những bước thực trị chơi kết thúc B Trị chơi tíc tắc toe I Giới thiệu trò chơi Trò chơi chơi đối thủ với ô Một đối thủ trước đánh o (X) vào ô bàn cờ , đối thủ cịn lại chọn cịn lại để Hai đối thủ thay đánh vào trống có đối thủ có nằm đường thẳng trước thắng Nếu hết cờ mà khơng có đối thủ có nằm đường thẳng ván cờ kết thúc với tỷ số hịa II Mục tiêu trò chơi Đến lượt chơi người cố gắng để tạo quân cờ nằm đường thẳng để người chiến thắng cố ngăn cản người tạo quân cờ đường thẳng III Hướng giải Sử dụng thuật toán Minnimax – chế cắt tỉa alpha beta để tìm nước tốt có lợi cho người chơi Hai đối thủ trò chơi gọi MIN MAX MAX đại diện cho đối thủ dành thắng lợi hay cố gắng tối ưu hóa ưu Ngược lại MIN đối thủ cố gắng tối thiểu hóa điểm số MAX Ta giả thiết MIN dùng thong tin MAX Khi áp dụng thủ tục Minnimax ta đánh dấu luân phiên mức khơng gian tìm kiếm phù hợp với đối thủ có bước mức ví dụ MIN quyền trước, nút gán giá trị hay tùy theo thắng với MIN hay Khoa cơng nghệ thông tin trường đại học Công Nghiệp Hà Nội Page 10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com MAX.Minimax truyền giá trị lên cao dần đồ thị qua nút cha mẹ theo luật sau: -Nếu trạng thái cha mẹ nút MAX , gán cho giá trị tối đa cháu - Nếu trạng thái cha mẹ nút MIN , gán cho giá trị tối thiểu cháu Giá trị gán cho trạng thái cách rõ trạng thái tốt mà đối thủ đạt Các giá trị dùng để lựa chọn bước có Kết việc áp dụng Minnimax vào đồ thị khơng gian trạng thái trị chơi Nim thể hình Vì tất nước sảy cho MIN dần đến giá trị nên đối thủ MAX bắt trị chơi giành thắng lợi cho nước MIN Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page 11 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com IV Thuật toán using System; using System.Collections.Generic; using System.Text; Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page 12 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com public enum GameState { InProgress, ComputerWins, HumanWins, Draw } class Board { #region Declare field and delegate public static readonly int Empty = 0; public static readonly int X = -1; public static readonly int O = 1; public GameState BoardState; //represents the state of the game public int iBoardSize; //Size of board in one dimension public int iEmptySquares; //Count of unplayed squares used to check for draw condition public int[,] aiBoard; //The board #endregion // //Create a new Board object from a size parameter // public Board(int iSize) { Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page 13 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com this.iBoardSize = iSize; this.iEmptySquares = iSize * iSize; this.aiBoard = new int[iSize, iSize]; this.BoardState = GameState.InProgress; } // //Create a new Board object by copying an existing one // public Board(Board board) { this.iEmptySquares = board.iEmptySquares; this.iBoardSize = board.iBoardSize; this.BoardState = board.BoardState; this.aiBoard = new int[iBoardSize, iBoardSize]; //Copy aiBoard int i, j; for (i = 0; i < this.iBoardSize; i++) { for (j = 0; j < this.iBoardSize; j++) { this.aiBoard[i, j] = board.aiBoard[i, j]; } } } // // Apply a move // public void MakeMove(int CurrentPlayer, Move move) { aiBoard[move.iCol, move.iRow] = CurrentPlayer; Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page 14 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com //Check for draw condition iEmptySquares ; if (iEmptySquares == 0) this.BoardState = GameState.Draw; } // // Checks the board for a winner and reassigns // this.BoardState as appropriate // public void CheckBoard() { int i, j, iTotal; //Check the rows for (i = 0; i < iBoardSize; i++) { iTotal = 0; for(j = 0; j< iBoardSize; j++) { iTotal += aiBoard[i, j]; } if (iTotal == -iBoardSize) { this.BoardState = GameState.ComputerWins; return; } if (iTotal == iBoardSize) { this.BoardState = GameState.HumanWins; return; } } //Check the columns Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page 15 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com for (j = 0; j < iBoardSize; j++) { iTotal = 0; for (i = 0; i < iBoardSize; i++) { iTotal += aiBoard[i, j]; } if (iTotal == -iBoardSize) { this.BoardState = GameState.ComputerWins; return; } if (iTotal == iBoardSize) { this.BoardState = GameState.HumanWins; return; } } //Check Top-Left to Bottom-Right diagonal iTotal = 0; for (i = 0; i < iBoardSize; i++) { iTotal += aiBoard[i, i]; } if (iTotal == -iBoardSize) { this.BoardState = GameState.ComputerWins; return; } if (iTotal == iBoardSize) { this.BoardState = GameState.HumanWins; return; } Khoa công nghệ thông tin trường đại học Công Nghiệp Hà Nội Page 16 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com //Check Top-Right to Bottom-Left diagonal iTotal = 0; for (i = iBoardSize - 1, j = 0; i >= && j