Kỹ nghệ tri thức và học máy: Doing dogem

9 386 2
Kỹ nghệ tri thức và học máy: Doing dogem

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

Thông tin tài liệu

Doing Dodgem In Hours Với mục tiêu giúp bạn xây dựng trò chơi Dodgem, sau q trình tìm tòi, tơi xin dịch trích dẫn từ tài liệu đọc qua, nhằm tóm lược lại cách cô đọng nhất, giúp bạn tiết kiệm thời gian, cơng sức qua trình làm trò chơi Dodgem, xin giới thiệu tài liệu với tiêu đề: Doing Dogem In Hours Mục lục: Chương I: Giới Thiệu Dodgem Game Chương II: Hàm đánh giá thuật toán Chương III: Xây dựng thuật toán cho Dodgem Game Chương IV: Dodgem Game References Nội dung Chương I: Giới thiệu Dodgem Game Dodgem game, chess game giống cờ caro, cờ tướng,… Mỗi game có người chơi Trong đó, người gọi Max, người lại gọi Min Hai người thay phiên đưa nước theo quy luật Trò chơi Dodgen (được tạo Colin Vout) Có hai quân Trắng hai quân Đen, ban đầu xếp vào bàn cờ 3*3 (Hình vẽ) Qn Đen tới trống bên phải, Quân Trắng tới trống bên trái, bên phải, Quân Đen cột bên phải khỏi bàn cờ, quân Trắng hàng khỏi bàn cờ Ai đưa hai quân m.nh khỏi bàn cờ trước thắng, tạo t.nh bắt đối phương không thắng Vấn đề đặt là: lựa chọn nước tối ưu dành cho Trang Doing Dodgem In Hours Chương II: Hàm đánh giá thuật tốn Trong trò chơi Dodgem game có thuật tốn sử dụng như: Minimax, Negamax, AlphaBeta… Trong lần giới thiệu xin giới thiệu thuật toán Minimax AlphaBeta, bạn đọc tìm hiểu thêm thuật tốn Negamax website:http://www.hamedahmadi.com/gametree/#minimax Các bạn theo dõi hình bên Như để tìm nước tối ưu dành cho quân Đen, ta phải duyệt hết qua tất đường có nó, ta tạo trò chơi Như vậy, câu hỏi đặt ta lựa chọn nước thích hợp (dành cho người chơi computer) Câu trả lời ta cần phải xây dựng hàm đánh sau: Ngoài ra, quân trắng cản trực tiếp quân đen, cộng thêm 40 điểm cho quân trắng, cản gián tiếp cộng 30 điểm, Tương tự cho quân đen, quân Đen cản trực tiếp quân Trắng thêm -40 điểm, cản gián tiếp thêm -30 điểm Trang Doing Dodgem In Hours Ví dụ, tính giá trị bàn cờ cho hình vẽ bên Trong bàn cờ đầu, ta có giá trị sau: Quân đen: -10 + = -10, Quân trắng: + 10 = 15, xét trạng thái khác, ta thấy quân đen vừa bị cản trực tiếp, vừa bị cản gián tiếp, Quân trắng thêm 70 điểm, Vậy KQ cuối là: -10 + 15 +70 = 75, tương tự, cho hình số Chương III: Xây dựng thuật toán cho Dodgem Game Như nói trên, lần giới thiệu này, xin giới thiệu đến bạn thuật toán Minimax AlphaBeta *Thuật toán Minimax: Nguyên lý: Nước tối ưu dành cho v, nước duyệt qua tất đỉnh u, đỉnh tốt số đỉnh v Như vậy, vận dụng quy tắc trên, ta tìm hiểu hình bên dưới, Trang Doing Dodgem In Hours Với Blue (Quân Trắng), ta chọn Max(các children), Red (Quân Đen), ta tìm Min(các children) Từ hình vẽ trên, ta xây dựng thủ tục đệ quy, gồm hàm, BlueValue() đại diện cho Quân trắng, nhằm tìm nước tối ưu cho ( Max(children)), ngược lại, RedValue() đại diện cho quân đen, tìm Miin(Children) cho int BlueValue(Board b, int depth) { if ((GameOver(b) or depth>MaxDepth) return Analysis(b) int max = -infinity for each legal move m in board b { copy b to c make move m in board c int x = RedValue(c, depth+1) if (x>max) max = x } return max } int RedValue(Board b, int depth) { if ((GameOver(b) or depth>MaxDepth) return Analysis(b) int = infinity for each legal move m in board b { copy b to c make move m in board c int x = BlueValue(c, depth+1) if (x eval(v), ta không cần xuống để đánh giá đỉnh a mà khơng ảnh hưởng dến đánh giá đỉnh c Hay nói cách khác ta cắt bỏ gốc a Lập luận tương tự cho trường hợp a đỉnh Đen, trường hợp eval(u) < eval(v) ta cắt bỏ gốc a Cụ thể hơn, ta có hình bên Trang Doing Dodgem In Hours Trong khi, ta cố tìm giá trị cho A, Chúng ta xuống B, tìm giá trị là Min(6,9) Sau đó, ta qua C Từ đó, tính E là Max(4,-2) Do đó, C nhỏ hơn,Ngay lúc ta biết giá trị C MaxDepth) return Analysis(b) int max = -infinity for each legal move m in board b { copy b to c make move m in board c int x = RedValue(c, depth+1, alpha, beta) if (x>max) max = x if (x>alpha) alpha = x if (alpha>=beta) return alpha } return max } int RedValue(Board b, int depth, int alpha, int beta) { if ((GameOver(b) or depth>MaxDepth) return Analysis(b) int = infinity for each legal move m in board b { copy b to c make move m in board c int x = BlueValue(c, depth+1, alpha, beta) if (x= beta thay alpha>beta, điều làm tăng tốc độ cho chương trình Các hàm khởi tạo giá trị ban đầu sau: depth=0; alpha=-infinity, beta=infinity Như vậy, tùy vào quân Trắng hay quân Đen mà bạn gọi hàm BlueValue() trước RedValue() trước thông qua hàm AlphaBeta() sau: Void Alpha_Beta(u, v) { Alpha = - infinity; Beta = infinity; For Mỗi đỉnh w u { If(val

Ngày đăng: 17/09/2019, 23:46

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan