báo cáo môn trí tuê nhân tạo á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 8
báo cáo môn trí tuê nhân tạo á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

Đ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

Mục lục Page 1 of 25 Lời mở đầu Mục đích của chúng em về bài tập lớn này là xây dựng một chương trình 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 trong một trò chơi cụ thể. Ở bài tập lớn này chúng em xây dựng chương trình cờ caro, áp dụng các giải thuật MinMax, cắt tỉa alpha-beta. Qua đó, giúp chúng em hiểu được cách thực mà con người đưa trí tuệ và bản lĩnh của mình vào máy móc, khiến máy móc có thể hoạt động tương đương hoặc thậm trí vượt trội hơn so với con người! Page 2 of 25 Phân công công việc: Thành viên Thông tin Công việc Nguyễn Đức Cường Nhóm trưởng MSSV: 20101215 - Thiết kế các Form - Các chức năng thiết lập bàn cờ. Mai Đức Anh 20101089 - Tìm hiểu và cài đặt giải thuật MiniMax, AnphaBeta cắt tỉa - Thiết kế class Computer. Lê Công Hưng 20101667 - Thiết kế các Form - Các chức năng thiết lập bàn cờ. Chu Văn Định 20101378 - Thiết kế và cài đặt Bàn cờ, class CGoban. - Viết báo cáo Nguyễn Trung Đức 20096258 - Tìm hiểu và cài đặt giải thuật MiniMax, AnphaBeta cắt tỉa - Thiết kế class Computer. Trần Nam Sơn 20096270 - Thiết kế và cài đặt Bàn cờ, class CGoban. Page 3 of 25 I. Giới thiệu về trò chơi cờ caro Hình 1: Gomoku Cờ caro chính là môn cờ logic lâu đời và cổ xưa nhất trên Trái Đất. Cờ caro đã được sáng tạo từ nhiều nền văn minh khác nhau một cách độc lập. Nó bắt đầu xuất hiện từ năm 2000 trước CN ở sông Hoàng Hà, Trung Quốc. Một số nhà khoa học đã tìm thấy bằng chứng chứng minh Caro đã được phát minh ở Hy lạp cổ đại và ở Châu Mỹ trước thời Colombo. Môn cờ cổ của Trung Quốc là Wutzu. Cờ Caro du nhập từ Trung Quốc vào Nhật Bản từ khoảng năm 270 trước CN. Nó thường được gọi là Gomoku nhưng cũng có các tên gọi khác tuỳ theo thời gian và địa phương như Kakugo, gomoku-narabe, Itsutsu-ishi Người ta đã tìm thấy một trò chơi cổ từ một di tích ở Nhật năm 100 sau CN và thấy nó là một biến thể của Caro. Nó đã lan truyền nhanh chóng với cái tên Kakugo (trò 5 quân). Các nhà sử học nói rằng vào các thế kỷ 17 và 18, mọi người đều chơi trò này-người già cũng như người trẻ. Năm 1858, khi quyển sách đầu tiên về trò chơi này được xuất bản, nó được gọi là Kakugo. Nó tiếp tục được chơi, được gọi với nhiều tên khác nhau như Goren, Goseki, rồi Gomokunarabe, Gomoku và phát triển cho đến ngày nay thành thể loại phức tạp nhất trong họ hàng đông đúc của nó, là Renju (chuỗi ngọc trai). Page 4 of 25 Page 5 of 25 - Luật chơi của Gomoku cổ như sau: o Bàn cờ 15 x 15, quân đen đi trước. o Ai tạo được 5 quân liền nhau trước thì thắng Như hình bên dưới thì O thắng: Hình 2: Luật chơi Gomoku Khi trình độ các kỳ thủ Gomoku được nâng cao, họ nhận ra rằng nếu chỉ chơi đơn giản như trong Gomoku thì đó sẽ là một lợi thế quá lớn cho bên tiên tức bên Đen (thực tế chính là ưu thế thắng). Sau đó một số nhà toán học đã chứng minh được rằng nếu chơi với luật Gomoku trên bàn cờ bằng hoặc rộng hơn 15x15 thì Đen chắc chắn thắng (sure win), và sau đó cách đi cụ thể cũng đã được tìm ra, hệ thống và phân loại.Và chính vì vậy, từ đó Gomoku lâm vào một giai đoạn khủng hoảng. Khả năng đánh thắng 100 phần trăm của Đen đã làm trò chơi này mất đi ý nghĩa của nó. Có nhiều cải tiến được đề xuất, một số đã bị bỏ qua nhanh chóng, số khác làm xuất hiện các biến thể mới của Gomoku. Ý tưởng chung của các cải tiến là đề ra một số hạn chế cho Đen, nhằm cân bằng ưu thế đi tiên. Dưới đây là một số biến thể phổ biến: - Gomoku. Hiện nay được chơi chính thức với bàn 13x13. Không có hoà. Nếu hết đất thì Trắng thắng. Chưa tìm được chứng minh nào cho thấy Đen chắc chắn thắng. Tuy nhiên Đen vẫn có ưu thế rất lớn. - ProGomoku. Chơi trên bàn 15x15. Nước đầu của Đen đặt sẵn ở trung tâm. Nước thứ ba (nước thứ hai của Đen) phải đặt ngoài hình vuông cấm. Hình Page 6 of 25 vuông cấm là hình vuông trung tâm kích thước 5x5. Không có hạn chế cho Trắng. Đã có chứng minh Đen chắc chắn thắng trong biến thể này. - Pente. Biến thể này không còn giống Gomoku. Luật bổ sung là có thể ăn quân đối phương. Nước ăn quân được thực hiện bằng cách chặn hai đầu một nước hai quân đối phương và ăn hai quân đó. Ai tạo được nước năm hoặc ăn được 5 cặp quân trước thì thắng. Rất phổ biến ở Mỹ. Chơi trên bàn 19x19. II. Phân tích bài toán 1. Mục đích bài toán Tìm hiểu về giải thuật MINMAX, cắt tỉa alpha-beta, áp dụng được các thuật toán đó vào trò chơi cờ caro. 2. Trò chơi đối kháng - Cờ caro là trò chơi đối kháng giữa 2 người (gọi là MAX và MIN) - Thay phiên nhau đi giữa các nước (moves). - Kết thúc trò chơi: Người thắng được thưởng (điểm), người thua bị phạt điểm - Trò chơi bao gồm các thông tin sau: o Trạng thái bắt đầu (Initial state): Trạng thái cuar trò chơi + người chơi nào được đi nước đầu tiên. o Hàm chuyển trạng thái (Sucessor function): Trả về thông tin gồm (nước đi, trang thái)  Tất cả các nước đi hợp lên từ trạng thái hiện tại  Trạng thái mới (là trạng thái chuyển đến sau nước đi) o Ki m tra k t thúc trò ch i (Terminal Test)ể ế ơ o Hàm ti n ích (Utility function) đ đánh giá các tr ng thái k t thúcệ ể ạ ế o Tr ng thái b t đ u + Các n c đi h p l = Cây bi u di n trò ch iạ ắ ầ ướ ợ ệ ể ễ ơ 2. 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 Page 7 of 25 Hình 3: biểu diễn bài toán dưới dạng cây - 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, tức là 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 chỉ một nước đi nào đó. - Các lá (leave) hay còn gọi là 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) hay còn gọi là mức của cây, số tầng của cây. Thường thì mỗi vị trí kết thúc của trò chơi (nút lá) sẽ gán một trọng số, chẳng hạn gán 1 cho chiến thắng, 0 cho hòa và -1 cho thua trận.Tại mỗi nút cũng có một trọng số tương ứng được xác định bằng một cách nào đó.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. Dưới đây là ví dụ về cây trò chơi qua trò chơi bốc sỏi: Giả thiết có 3 hộp bi, số lượng bi trong mỗi hộp là (1, 2, 2). Mỗi lượt chơi người chơi chỉ được bốc trong 1 hộp bi, với số lượng tùy ý.Người chơi nào bốc bi cuối cùng sẽ là người thua cuộc. Dựa vào đánh giá ở cây trò chơi dưới, ta thấy được những nút lá mà có trọng số là 1, tức là đi theo những nhánh nào đó mà cuối cùng đến được những là đấy thì người chơi Max sẽ giành thắng lợi. Page 8 of 25 Hình 4: Ví dụ về cây trò chơi qua trò chơi bốc sỏi Page 9 of 25 Cây biểu diễn trò chơi cờ Caro 3. Chiến lược tìm kiếm Như vậy với một trò chơi đối kháng, khi mà ta biểu diễn được trò chơi dưới dạng một cây trò chơi, thì vấn đề đặt ra là phải tìm được chiến thuật đi trên cây trò chơi đó để chiếm lợi thế.Tức là phải có chiến lược tìm kiếm tốt để đảm bảo đường đi của mình là “tốt” 3.1 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 Page 10 of 25 [...]... chiến lược tìm kiếm theo chiều sâu) Page 15 of 25 2 Thuật toán Anpha-Beta cắt tỉa - Vấn đề: Giải thuật tìm kiếm MINIMAX vấp phải vấn đề bùng nổ tổ hợp (mức hàm mũ) các khả năng nước đi cần phải xét, không phù hợp với nhiều bài toán trò chơi thực tế Chúng ta có thể cắt tỉa (bỏ đi – không xét đến) một số nhánh tìm kiếm trong cây biểu diễn trò chơi - Phương pháp cắt tỉa o Ý tưởng: Nếu một nhánh tìm kiếm nào... states) Giá trị MINIMAX o 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) o Ngược lại MIN chọn nước đi ứng với giá trị MINIMAX cực tiểu Giải thuật MINIMAX Page 14 of 25 - Theo thuật toán, hàm Max- Value sẽ lấy vị trí cho quân đưa vào mà ở đó nếu quân đối địch đi để điểm trạng thái của quân đưa vào là min thì giá trị min đó là lớn nhất - Hàm Min –Value sẽ... Đố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 Không gian tìm kiếm (kết hợp cắt tỉa) vẫn lớn o 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ào toán  Tri thức bổ sungcho phép đánh giá mỗi trạng thái của trò chơi  Tri thức bổ sung (heuristic) đóng vai trò tương tự như là hàm ước lượng h(n) trong giải thuật tìm kiếm A* V... nhánh tìm kiếm đó nữa o 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 - Ví dụ: Hình 1: Page 16 of 25 - Thuật toán Cắt tỉa tỉa o α-β (Alpha – Beta) α là giá trị cảu 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 o Nếu v là giá trị tồi hơn α thì MAX sẽ bỏ qua nước đi ứng với v Cắt tỉa nhánh ứng với v o β được định nghĩa tương tự với MIN. ..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), chỉ có một số ít các trường hợp là có thể tìm kiếm theo kiểu vét cạn hết các khả năng này.Do đó không dùng thuật toán vét cạn cho chiến lược tìm kiếm được 3.2 Không gian tìm kiếm nước đi & chiến lược tìm kiếm trong cờ Caro Như chúng ta đã biết, 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. .. lại, tức là sẽ lấy vị trí cho quân đưa vào mà ở đó nếu quân đối địch đi để điểm trạng thái của nó là max thì giá trị max đó là nhỏ nhất - Hai hàm này hỗ trợ rất tốt cho tìm nước đi tối ưu, chúng tối ưu cho max trên cơ sở tối ưu của cả quân max và min trong các bước sau đó, phụ thuộc vào độ sâu lựa chọn - Các đặc điểm của giải thuật MINIMAX o Tính hoàn chỉnh: Có (nếu cây biểu diễn trò chơi là hữu hạn) o... chương trình khi chơi Page 23 of 25 - Giao diện khi người chơi hoặc máy chiến thắng Page 24 of 25 Tài liệu tham khảo 1 Tài liệu về các thuật giải trên mạng: http://vi.wikipedia.org/wiki/Minimax http://my.opera.com/hodawa/blog/thuatgiaialphabeta http://www.ocf.berkeley.edu/~yosenl/extras /alphabeta/ alphabeta.html 2 Bài giảng Trí Tuệ Nhân Tạo – Thầy Phạm Văn Hải 3 Bài giảng trí tuệ nhân tạo của thầy Nguyễn... of 25 - - Theo thuật toán, tại mỗi trạng thái con của hàm Max- Value, nếu giá trị của trạng thái đó nhỏ hơn giá trị Max đang có , thì nhánh đó sẽ không được xét tiếp Tương tự với hàm Min –Value, trạng thái con nào có giá trị trạng thái lớn hơn giá trị Min đang có thì sẽ không được xét tiếp Thuật toán có hiệu quả rất nhiều trong việc cắt giảmkhông gian tìm kiếm, cải thiện thời gian tìm kiếm một cách đáng... người chơi hoặc máy đã đánh trước đó hoặc đánh ra ngoài Page 12 of 25 + Trạng thá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! Page 13 of 25 IV Thuật toán sử dụng 1 Thuật toán MINIMAX - - - Các chiến lược tối ưu: o Một chiến lược tối ưu là một chuỗi các nước đi giúp đưa đến trạng thái đích mong muốn (vd: chiến thắng) o Chiến lược của MAX bị ảnh hưởng (phụ thuộc) vào các... nước đi của MIN – và ngược lại o MAX cần chọn một chiến lược giữa cực đại hóa giá trị hàm mục tiêu – với giả sử là MIN đi các nước tối ưu Min cần chọn một chiến lược giúp cực tiểu hoá giá trị hàm mục tiêu o Chiến lược này được xác định bằng việc xét giá trị MINIMAX đối với mỗi nút trong cây biểu diễn trò chơi Chiến lược tối ưu đối với các trò chơi có không gian trạng thái xác định (deterministic states) . về giải thuật MINMAX, cắt tỉa alpha-beta, áp dụng được các thuật toán đó vào trò chơi cờ caro. 2. Trò chơi đối kháng - Cờ caro là trò chơi đối kháng giữa 2 người (gọi là MAX và MIN) - Thay phiên. kế và cài đặt Bàn cờ, class CGoban. Page 3 of 25 I. Giới thiệu về trò chơi cờ caro Hình 1: Gomoku Cờ caro chính là môn cờ logic lâu đời và cổ xưa nhất trên Trái Đất. Cờ caro đã được sáng tạo. người chơi Max sẽ giành thắng lợi. Page 8 of 25 Hình 4: Ví dụ về cây trò chơi qua trò chơi bốc sỏi Page 9 of 25 Cây biểu diễn trò chơi cờ Caro 3. Chiến lược tìm kiếm Như vậy với một trò chơi đối

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

Từ khóa liên quan

Mục lục

  • Lời mở đầu

  • Phân công công việc:

  • I. Giới thiệu về trò chơi cờ caro

  • II. Phân tích bài toán

    • 1. Mục đích bài toán

    • 2. Trò chơi đối kháng

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

    • Cây biểu diễn trò chơi cờ Caro

    • 3. Chiến lược tìm kiếm

      • 3.1 Thuật toán vét cạn liệu có được sử dụng?

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

      • 4. Biểu diễn các trạng thái:

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

        • 1. Thuật toán MINIMAX.

        • 2. Thuật toán Anpha-Beta cắt tỉa.

        • V. Giới thiệu sản phẩm

        • Tài liệu tham khảo

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

Tài liệu liên quan