báo cáo môn trí tuê nhân tạo áp dụng thuật toán alpha - beta pruning để xây dựng trò chơi cờ úp trên android

9 1.1K 18
báo cáo môn trí tuê nhân tạo áp dụng thuật toán alpha - beta pruning để xây dựng trò chơi cờ úp trên android

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

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG Báo cáo Trò chơi cờ úp trên nền android sử dụng thuật toán Alpha-Beta cắt tỉa Sinh viên thực hiện: Phạm Xuân Cường 20090438 Đinh Minh Quốc 20092156 Nguyễn Quốc Vinh 20093277 Lê Thanh Tùng 20093106 Ngô Việt Linh 20091599 Trần Thanh Sơn 20092281 Hà Nội 07/2013 Mục lục Sinh viên thực hiện: Phạm Xuân Cường 20090438 1 Mục lục 2 I. Đặt vấn đề bài toán 1. Giới thiệu trò chơi cờ úp: Cờ úp là một biến thể của trò chơi cờ Tướng, sử dụng bàn cờ và các quân giống trong cờ Tướng. Trong trò chơi này, tại thời điểm bắt đầu, các quân cờ mỗi bên trên bàn sẽ được úp xuống một cách ngẫu nhiên. Nước đi đầu tiên của cờ úp phải tuân theo luật đi của cờ tướng tại vị trí nó đang chiếm giữ. Sau nước đầu, các quân cờ được lật lại và từ nước này, quân cờ sẽ đi theo luật của cờ Tướng thông thường Luật đi các quân cờ • Tướng: Mỗi nước đi một ô, đi ngang hoặc dọc. Tướng luôn ở trong phạm vi cung."Cung" gồm 4 hình vuông nhỏ được gạch đường chéo. • Sĩ: Đi chéo, mỗi nước một ô. Sĩ luôn ở trong "Cung" giống như Tướng. • Tượng: Đi chéo 2 ô mỗi nước, đi ngang hoặc dọc. Tượng không được phép qua sông sang bàn cờ của đối phương.Nước đi của Tượng không hợp lệ khi có quân cờ chặn giữa đường. • Xe: Đi ngang hoặc dọc khắp bàn cờ miễn không có quân khác cản trên đường đi. • Mã: Đi ngang 2 ô và đi dọc 1 ô ( hoặc đi dọc 2 ô và đi ngang 1 ô) cho mỗi nước đi.Nếu có quân khác nằm cạnh mã và cản đường ngang 2 hoặc cản đường dọc 2, thì mã không được đi đường đó. • Pháo: Đi ngang hoặc dọc giống như Xe. Điểm khác là khi Pháo muốn ăn quân của đối phương thì giữa Pháo và quân muốn ăn phải có quân cản ở giữa. • Tốt: Đi mỗi nước một ô. Nếu Tốt chưa qua sông thì chỉ được đi thẳng tiến. Khi đã vượt qua sông có thể đi ngang hoặc đi thẳng tiến, mỗi nước một ô. Một số ngoại lệ của cờ úp: • Quân sĩ không bị giới hạn trong cung mà có thể đi khắp bàn cờ • Quân tượng có thể sang lãnh thổ đối phương • Quân tốt có thể xuất phát từ dưới đường biên ngang bên sân nhà, khi qua sông được đi ngang. Kết thúc trận đấu: • Chiếu bí: Nếu một bên chiếu (bắt Tướng) và đối phương không còn khả năng đỡ. Bên chiếu tướng thắng. • Hết nước đi: Nếu một bến tới lượt đi nhưng không có nước hợp lệ để đi, bên đó sẽ bị thua. • Xin thua: Người chơi xin đầu hàng và chấp nhận thua ván chơi. • Cầu hòa: Người chơi cầu hòa và đối phương đồng ý. Ván chơi được xử hòa. 2. Mục tiêu của bài toán Xây dựng ứng dụng mô phỏng trò chơi cờ úp giữa người với máy, người với người trên nền tảng điện thoại android 3. Mô tả không gian trạng thái của bài toán • Trạng thái đầu: Là trạng thái của bàn cờ tại thời điểm bắt đầu cuộc chơi. Trạng thái được thể hiện ở hình dưới. Với trò chơi này, mỗi trạng thái ban đầu được sinh ngẫu nhiên từ 2.17! khả năng • Trạng thái đích: Là trạng thái mà một trong hai quân tướng của hai bên bị ăn mất hoặc quân tướng không còn nước đi hợp lệ. Khi đó, bên còn lại là người thắng cuộc • Trạng thái trung gian: Là trạng thái hợp lệ của bàn cờ tại một thời điểm bất kỳ trong một ván đấu • Các cạnh nối: Trạng thái bàn cờ tại mức i và mức (i+1) có cạnh nối với nhau nếu trạng thái mức (i+1) được sinh ra từ trạng thái mức I bằng cách di chuyển một quân cờ trên bàn theo một bước đi hợp lệ của nó II. Phương pháp giải quyết 1. Giới thiệu thuật toán 1.1. Thuật toán MINIMAX : Đây là thuật toán thường được sử dụng trong các trò chơi đối kháng hai bên. Giả sử mỗi trạng thái của bàn cở được gắn một giá trị cụ thể. Người chơi Max sẽ chọn nước đi dẫn đến điểm của mình lớn hơn, trong khi Min sẽ tìm các nước đi để điểm của mình nhỏ đi. Các giá trị điểm của trạng thái bàn cờ được xác định thông qua hàm lượng giá của trò chơi Ví dụ về thuật toán MINIMAX: Xét một cây như hình vẽ, tại thời điểm ban đầu, Max chọn nút có giá trị 3. Đến lượt đi của Min, Min sẽ chọn nút hoặc có giá trị bằng 2. Đến lượt đi của Max, Max sẽ chọn nút (có giá trị bằng 6) hoặc nút (có giá trị bằng 14) tương ứng. 1.2. Thuật toán Alpha-Beta cắt tỉa Mặc dù thuật toán MINIMAX hiệu quả cho các trò chơi đối kháng, tuy nhiên thuật toán này sẽ rất chậm nếu cây tìm kiếm là lớn và không hiệu quả trong thực tế. Đặc biệt là với bài toán trò chơi cờ úp, mặc dù tại thời điểm bắt đầu, số nút con chỉ là 44. Nhưng từ mức thứ hai trở đi, số nút con sinh ra sau mỗi trạng thái là rất nhiều. Vì thế nếu chỉ dùng MINIMAX thì thời gian chạy khá lâu. Thuật toán Alpha-Beta cắt tỉa là một cải tiến dựa trên MINIMAX cho phép ta dự đoán những nhánh cây không chứa kết quả và loại bỏ nhánh đấy để làm giảm số lượng nút phải sinh và lượng giá, do đó làm tăng độ sâu cây tìm kiếm Ý tưởng của tìm kiếm alpha – beta rất đơn giản: Thay vì nếu như tìm kiếm toàn bộ không gian đến một độ sâu lớp cố định, tìm kiếm alpha – beta thực hiện theo kiểu tìm kiếm sâu. Có hai giá trị, gọi là alpha và beta được tạo ra trong quá trình tìm kiếm. Giá trị alpha liên quan với các nút MAX và có khuynh hướng không bao giờ giảm. Ngược lại giá trị beta liên quan đến các nút MIN và có khuynh hướng không bao giờ tăng. Giả sử có giá trị alpha của một nút MAX là 6, MAX không cần phải xem xét giá trị truyền ngược nào nhỏ hơn hoặc bằng 6 có liên quan với một nút MIN nào đó bên dưới. Alpha là giá trị thấp nhất mà MAX có thể nhận được sau khi cho rằng MIN cũng sẽ nhận giá trị tốt nhất của nó. Tương tự nếu MIN có giá trị beta là 6 nó cũng không cần xem xét các nút nằm dưới nó có giá trị lớn hơn hoặc bằng 6. Để bắt đầu thuật toán tìm kiếm alpha – beta, ta đi xuống hết độ sâu lớp theo kiểu tìm kiếm sâu, đồng thời áp dụng đánh giá heuristic cho một trạng thái và tất cả các trạng thái anh em của nó. Giả thuyết tất cả đều là nút MIN. Giá trị tối đa của các nút MIN này sẽ được truyền ngược lên cho nút cha mẹ (là một nút MAX). Sau đó giá trị này được gán cho ông bà của các nút MIN như là một giá trị beta kết thúc tốt nhất. Tiếp theo thuật toán này sẽ đi xuống các nút cháu khác và kết thúc việc tìm kiếm đối với nút cha mẹ của chúng nếu gặp bất kỳ một giá trị nào lớn hơn hoặc bằng giá trị beta này. Quá trình này gọi là cắt tỉa beta (β cut). Cách làm tương tự cũng được thực hiện cho việc cắt tỉa alpha (α cut) đối với các nút cháu của một nút MAX. Hai luật cắt tỉa dựa trên các giá trị alpha và beta là: o Quá trình tìm kiếm có thể kết thúc bên dưới một nút MIN nào có giá trị beta nhỏ hơn hoặc bằng giá trị alpha của một nút cha MAX bất kỳ của nó. o Quá trình tìm kiếm có thể kết thúc bên dưới một nút MAX nào có giá trị alpha lớn hơn hoặc bằng giá trị beta của một nút cha MIN bất kỳ của nó. Việc cắt tỉa alpha – beta như vậy thể hiện quan hệ giữa các nút ở lớp n và các nút ở lớp n+2 và do quan hệ đó toàn bộ các cây con bắt nguồn ở lớp n+1 đều có thể loại khỏi việc xem xét. Chú ý rằng giá trị truyền ngược thu được hoàn toàn giống như kết quả Minimax, đồng thời tiết kiệm được các bước tìm kiếm một cách đáng kể. Thuật toán được mô tả qua mã giả sau 2. Hàm chi phí Hàm chi phí của trò chơi tại mỗi trạng thái được đánh giá dựa trên ba yếu tố • Tổng điểm quân đỏ (người chơi Max) • Tổng điểm quân đen (người chơi Min) • Điểm thưởng Công thức tổng quát của hàm lượng giá Trong đó: • f(x): Điểm số của quân x trên bàn cờ. Nếu quân cờ x ở trạng thái úp thì f(x)= diemTrangThaiUp. Nếu quân cờ ở trạng thái lật thì f(x)= diemTrangThaiLat+ diemViTri. Nếu quân cờ đã bị ăn thì f(x)=0. Dưới đây là điểm của từng loại quân với các trạng thái tương ứng. STT Quân cờ Trạng thái úp Trạng thái lật 1 Chốt 20 10 2 Sĩ 20 35 3 Tượng 20 35 4 Mã 20 45 5 Pháo 20 100 6 Xe 20 70 7 Tướng 6000 diemViTri của mỗi loại quân được biểu diễn qua một ma trận thể hiện điểm của từng loại quân trên mỗi vị trí của bàn cờ VD: Điểm vị trí của quân xe • là điểm thưởng của phe đỏ và phe đen cho một thế cờ tốt được sinh ra trên bàn cờ − Khi bên đen bị khuyết sĩ mà bên đỏ vẫn còn 2 xe thì bên đỏ được cộng điểm − Khi tốt sang sông được cộng điểm − … III. Cài đặt chương trình Chương trình được cài đặt trên các máy chạy hệ điều hành android thông qua file .apk Giao diện của chương trình Bắt đầu ván chơi Kết thúc ván chơi IV. Đánh giá chương trình • Chương trình mô phỏng thành công trò chơi cờ úp trên nền android • Trong tương lai, sẽ cải tiến thêm các mức độ khó vào trong trò chơi . bài toán 1. Giới thiệu trò chơi cờ úp: Cờ úp là một biến thể của trò chơi cờ Tướng, sử dụng bàn cờ và các quân giống trong cờ Tướng. Trong trò chơi này, tại thời điểm bắt đầu, các quân cờ mỗi. HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG Báo cáo Trò chơi cờ úp trên nền android sử dụng thuật toán Alpha- Beta cắt tỉa Sinh viên thực hiện: Phạm Xuân Cường 20090438 Đinh. một quân cờ trên bàn theo một bước đi hợp lệ của nó II. Phương pháp giải quyết 1. Giới thiệu thuật toán 1.1. Thuật toán MINIMAX : Đây là thuật toán thường được sử dụng trong các trò chơi đối

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

Từ khóa liên quan

Mục lục

  • Sinh viên thực hiện: Phạm Xuân Cường 20090438

  • Mục lục

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

Tài liệu liên quan