(Tiểu luận) đồ án trí tuệ nhân tạo cờ tướng

28 11 0
(Tiểu luận) đồ án trí tuệ nhân tạo cờ tướng

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM ĐỒ ÁN TRÍ TUỆ NHÂN TẠO CỜ TƯỚNG Ngành: CÔNG NGHỆ THÔNG TIN Lớp: 20DTHA2 Giảng viên hướng dẫn: Nguyễn Khắc Chiến Nhóm Sinh viên thực hiện: Nguyễn Minh Hùng – 2011062908 Huỳnh Quốc Trung – 2011061197 Trần Nhật Minh – 2011061689 TP Hồ Chí Minh, tháng 10 năm 2022 0 Tieu luan Mục lục CHƯƠNG 1: GIỚI THIỆU CỜ TƯỚNG 1.1Nguồn gốc trò chơi 1.2Mơ tả trị chơi +Cách chơi: +Sơ lược luật chơi: Bàn cờ Quân cờ nước CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Chiến lược Minimax .8 2.2 Cắt tỉa AlphaBeta 10 CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ .10 3.1 Phân tích tốn cờ tướng 10 3.2 Cấu trúc liệu cách biểu diễn trạng thái toán 13 Cấu trúc liệu: 13 3.3 Các vấn đề thuật giải .14 Biểu diễn bàn cờ .14 Tạo nước cờ hợp lệ 15 Kiểm tra vị trí phép đến: 16 Đánh giá cờ 17 Ưu điểm cách tính này: 18 Nhược điểm: .19 3.4 Thuật tốn tìm nước tốt .19 Cây trò chơi 19 Vét cạn 20 Thuật toán Minimax 21 Đánh giá thuật toán Minimax 21 Thủ tục AlphaBeta 22 Ý tưởng .22 Chương 4: Ứng dụng 23 4.1 Giới thiệu chương trình cờ tướng 23 Chức 23 Giao diện trò chơi .24 4.2 Cài đặt .24 4.3 Kết chạy chương trình (Minh họa file Video) 24 Chương 5: KẾT LUẬN 24 TÀI LIỆU THAM KHẢO 24 BẢNG CHẤM CÔNG 25 0 Tieu luan CHƯƠNG 1: GIỚI THIỆU CỜ TƯỚNG 1.1Nguồn gốc trò chơi Cờ tướng (phiên âm Hán Việt Tượng Kỳ), hay gọi cờ Trung Hoa (Tiếng Anh: Chinese Chess) phổ biến giới từ Trung (nhưng theo phương Tây có nguồn gốc từ Ấn Độ), trị chơi trí tuệ dành cho hai người, loại cờ chơi phổ biến giới với cờ vua Ván cờ tiến hành hai người, người cầm quân Trắng (hay Đỏ), người cầm quân Đen (hay Xanh cây) Mục đích người tìm cách quân bàn cờ theo luật để chiếu bí hay bắt Tướng (hay Soái, Suý) đối phương giành thắng lợi Bàn cờ tướng thật trận địa sinh động, có tầng có lớp thật hồn hảo: đủ binh chủng chiến trường, cơng có, thủ có, quân chia thành ba lớp xen kẽ hài hồ Lại cịn có sơng, cung cấm Hình tượng quốc gia hồn chỉnh, có vua tơi, có binh chủng, có quan nhà, quân trận v.v , vừa có ý nghĩa, vừa mang sắc thái phương Đông rõ nét Tại Việt Nam, cờ tướng chơi phổ biến đời sống hàng ngày dịp lễ tết Người chơi cờ tướng Việt Nam sáng tạo cách chơi mới, “cờ người” 1.2Mơ tả trị chơi +Cách chơi: Ván cờ tiến hành hai người, người cầm quân Trắng (hay Đỏ), người cầm quân Đen (hay Xanh cây) Mục đích người tìm 0 Tieu luan cách quân bàn cờ theo luật để chiếu bí hay bắt Tướng (hay Soái, Suý) đối phương giành thắng lợi +Sơ lược luật chơi: Bàn cờ Bàn cờ hình chữ nhật đường dọc 10 đường ngang cắt vng góc 90 điểm hợp thành Một khoảng trống gọi sông (hay hà) nằm ngang bàn cờ, chia bàn cờ thành hai phần đối xứng Mỗi bên có cung Tướng hình vng (Cửu cung) hợp thành đường dọc 4, 5, kể từ đường ngang cuối bên, có vẽ hai đường chéo xuyên qua Theo quy ước, bàn cờ quan sát diện, phía quân Trắng (hoặc Đỏ), phía quân Đen Các đường dọc bên Trắng (Đỏ) đánh số từ đến từ phải qua trái Các đường dọc bên Đen đánh số từ tới từ phải qua trái Ranh giới hai bên "sông" (hà) Con sơng có tên "Sở hà Hán giới" sông định biên giới nước Sở nước Hán Sơ đồ bàn cờ tướng 0 Tieu luan Sắp xếp quân cờ theo vị trí Quân cờ nước Mỗi ván cờ lúc bắt đầu phải có đủ 32 quân, chia cho bên gồm 16 quân Trắng (Đỏ) 16 quân Đen, gồm loại quân Tuy tên quân cờ bên viết khác (ký hiệu theo chữ Hán) giá trị cách quân chúng lại giống hoàn toàn Bảy loại quân có ký hiệu số lượng cho bên hình sau: Các quân cờ tướng Tướng Quân tướng 0 Tieu luan Tướng chốt chặt cung có tới Sỹ Tượng canh gác hai bên Tướng ngang hay dọc bước phạm vi cung tướng Tính theo khả chiến đấu Tướng quân yếu nước bị giới hạn cung Tuy nhiên nhiều tình huống, đặc biệt cờ tàn đòn "lộ mặt tướng" lại tỏ hiểm mạnh Lúc Tướng mạnh ngang với Xe Sĩ Qn sĩ Trong cờ tướng, qn Sỹ có vai trị "hộ giá" cho Tướng (hoặc Soái) Chúng đứng sát cạnh Tướng, bước theo đường chéo Cửu cung Như vậy, chúng di chuyển đứng điểm coi quân cờ yếu bị hạn chế nước Sỹ có chức việc bảo vệ Tướng, Sỹ cho nguy hiểm đối phương đủ Xe dùng Xe Mã Tốt công Nước quân Sĩ Tượng (Tịnh, Bồ) Quân Tượng Quân Tượng đứng bên cạnh quân Sỹ tương đương với Tượng cờ vua Quân theo đường chéo hình vng gồm cờ Chúng khơng qua sơng, chúng có nhiệm vụ lại bên sơng để bảo vệ vua Chỉ có điểm mà Tượng di chuyển tới đứng Tượng khơng di chuyển 0 Tieu luan đến vị trí nêu có qn đặt vị trí hình vng ô Khi ta gọi Tượng bị cản vị trí cản gọi "mắt Tượng" Tượng tính mạnh Sĩ chút Khả phịng thủ Tượng tính nhỉnh Nói chung Tượng cờ dễ nguy Sĩ Xe (Xa) Quân Xe Quân Xe ăn theo đường thẳng đứng ngang giống hệt quân Xe cờ tướng Chúng bắt đầu nước từ phía góc bàn cờ, chúng coi quân cờ mạnh cờ tướng Pháo Pháo Quân Pháo giống quân Xe, theo chiều thẳng đứng ngang, ăn quân cách nhảy qua quân cờ khác Có thể nói pháo quân cờ lợi hại cờ tướng Cách ăn quân Pháo Mã 0 Tieu luan Quân mã Với bàn cờ cải tiến nay, đất rộng có vơ số đường để tung hoành, Mã phi nước đại khắp bàn cờ Quân Mã di chuyển theo hình chữ L hay nói cách khác quân Mã di chuyển theo đường chéo hình chữ nhật 2x3 3x2 Cách quân mã Tốt (Binh, Chốt) Quân Tốt Quân Tốt tương tự quân Tốt cờ vua, chúng thẳng theo chiều đứng ăn quân bước Khi Tốt qua sông, chúng ăn theo chiều ngang 0 Tieu luan Không giống cờ vua, chúng khơng có luật phong Hậu, hay Xe, đến hết bàn cờ, lúc này, chúng gọi Tốt lụt Việc mát vài Tốt từ đầu xem việc thí quân cờ CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Để giải toán cờ tướng ta áp dụng lược Minimax - cắt tỉa AlphaBeta 2.1 Chiến lược Minimax Minimax (còn gọi minmax) phương pháp lý thuyết định có mục đích tối thiểu hóa (minimize) tổn thất vốn dự tính "tối đa" (maximize) Có thể hiểu ngược lại là, nhằm tối đa hóa lợi ích vốn dự tính tối thiểu (maximin) Nó bắt nguồn từ trị chơi có tổng khơng Nó mở rộng cho nhiều trị chơi phức tạp giúp đưa định chung có diện khơng chắn Một phiên giải thuật áp dụng cho trò chơi tic-tac-toe, mà người chơi thắng, thua, hịa Nếu người chơi A thắng nước đi, "nước tốt nhất" nước để dẫn đến kết thắng Nếu người B biết có nước mà dẫn đến tình người A thắng nước tiếp theo, nước khác dẫn đến tình mà người chơi A có thể, tốt nhất, hịa nước tốt người B nước sau 0 Tieu luan Ta nắm rõ, nước "tốt nhất" Giải thuật Minimax giúp tìm nước tốt nhất, cách ngược từ cuối trò chơi trở đầu Tại bước, ước định người A cố gắng tối đa hóa hội thắng A đến phiên anh ta, nước người chơi B cố gắng để tối thiểu hóa hội thắng người A (nghĩa tối đa hóa hội thắng B) 2.2 Cắt tỉa AlphaBeta Thuật toán cắt tỉa Alpha – Beta cải tiến thuật toán Min – Max với tư tưởng “Nếu thấy việc làm tệ khơng nên thời gian xem tệ đến mức ”.Nhằm mục đích tỉa bớt nhánh trò chơi, làm giảm số lượng nút phải sinh lượng giá, tăng độ sâu tìm kiếm giúp 10 0 Tieu luan Nhưng Minimax lại có nhược điểm phụ thuộc vào nhiều hàm đánh giá (lượng giá).Nếu hàm đánh giá cho ta đánh giá khơng xác trạng thái, hướng dẫn ta tới trạng thái xem tốt, thực tế lại bất lợi cho ta.Thiết kế một hàm đánh giá tốt việc khó, địi hỏi ta phải quan tâm đén nhiều nhân tố: quân lại hai bên, bố trí qn đó,… có mâu thuẫn độ xác hàm đánh giá thời gian tính Hàm đánh giá xác địi hỏi nhiều thời gian tính tốn, đơi tính tốn lâu khiến người chơi khơng thể chờ được.Vì ta chuyển sang kỹ thuật cải tiến cắt tỉa AlphaBeta để tăng tốc độ suy nghĩ máy Giải thuật cắt tỉa α - β Ý tưởng: Tìm kiếm theo kiểu depth – first Nút MAX có giá trị α (ln tăng) Nút MIN có giá trị β (ln giảm) Tìm kiếm kết thúc dưới: Nút MIN có β ≤ α nút MAX Nút MAX có α ≥ β nút Giải thuật cắt tỉa α – β mối quan hệ nút lớp n n+2, mà tồn có gốc lớp n+1 cắt bỏ 3.2 Cấu trúc liệu cách biểu diễn trạng thái tốn Cấu trúc liệu: Gồm có Class: Class ChessDefinition,Class ChessStd , ChessThink, Class resource: -Class ChessDefinition: định nghĩa cờ tướng bao gồm: +Khai báo người đánh (Man) máy (Com) giá trị với phe tương tự Đỏ Đen +Khai báo quân cờ thuộc phe đỏ: Tướng(King),sĩ(Advisor),Tượng(Elephant), … 0,1,2…Tương tự phe đen 14 0 Tieu luan +Khai báo hàm loadpieceicon để chèn hình ảnh quân cờ +Khai báo Struct Movehistory để quản lý nước quân cần gồm điểm xuất phát (from) điểm đến(dest) -Class ChessStd: +Khai báo hàm bool CanGo để kiểm tra nước bị cản quân cờ (Mã,Tượng) xử lý cách ăn quân Pháo +Khai báo hàm bool IsNormal để kiểm tra qn cờ phép vào khơng? Ví dụ:Tướng sĩ khơng thể ngồi cung,Tượng không qua sông … +Hàm void FixManMap -Class ChessThink: +Khai báo hàm bool Think với điểm số ( lượng giá quân cờ ) để đánh giá cờ bước hợp lý -Class resource: Dùng để tạo giao diện icon chức undo chương trình -Các trạng thái: +Trạng thái ban đầu trạng thái quân cờ bàn cờ chưa nước +Trạng thái kết thúc trạng thái tướng bên bị ăn 3.3 Các vấn đề thuật giải Biểu diễn bàn cờ Bàn cờ cờ tướng hình chữ nhật bao gồm đường dọc 10 đường ngang Các quân cờ chia làm bên đứng giao điểm đường Cách đơn giản để biểu diễn bàn cờ máy tính ta dùng mảng chiều, kích thước x 10 Trong chương trình này, nhóm nghiên cứu sử dụng kĩ thuật có tên gọi “Hộp thư” Mục đích kĩ thuật nhằm giảm bớt phép kiểm tra vượt giới hạn bàn cờ làm đơn giản chương trình Mấu chốt thay cho bàn cờ có kích thước x 10 = 90, ta dùng bàn cờ có kích thước 11 x 12 = 121 Các ô ứng với đường bao mở rộng có giá trị 32, tức giá trị vượt biên Sở dĩ có đến đường biên khơng phải qn Mã Tượng nhảy đến ô 15 0 Tieu luan Hnh 1: Kĩ thuật Mailbox Tạo nước cờ hợp lệ Một việc quan trọng để máy tính chơi cờ phải cho biết nước đi từ cờ Máy tính tính tốn để chọn nước có lợi cho Các u cầu với thủ tục sinh nước là:  Chính xác (rất quan trọng): Do số lượng nước sinh lớn, luật quân nhiều phức tạp nên việc kiểm tra tính đắn tương đối khó  Đầy đủ (quan trọng): Sinh nước có từ cờ  Nhanh: Do chức phải sinh hàng triệu nước máy đến lượt nên việc giảm thời gian sinh nước có ý nghĩa lớn Sinh nước thuật tốn vét cạn Máy tìm nước hợp lệ có Máy phải sinh từ nước hay nước ngớ ngẩn (như đẩy Tướng vào vị trí khống chế đối phương) Ta hình dung thủ tục sinh nước Gen có đầy vòng lặp for, câu lệnh kiểm tra if rẽ nhánh case, phép tính kiểm tra giới hạn chiếm phần đáng kể Thủ tục sinh nước cho bên tới lượt chơi vào nội dung biến side Đây thủ tục phức tạp dễ sai Một nước có hai giá trị cần quan tâm Đó điểm xuất phát (from) điểm đến (to) Ta khai báo cấu trúc move sau để dùng nơi cần đến liệu nước struct MOVEHISTORY { int count; 16 0 Tieu luan int man[MAXMOVE]; POINT from[MAXMOVE]; POINT to[MAXMOVE]; int betaken[MAXMOVE]; }; Kiểm tra vị trí phép đến: Việc chuyển tọa độ từ bàn cờ thường sang bàn cờ mở rộng giúp ta loại bỏ nước vượt khỏi bàn cờ Ta phải kiểm tra số giới hạn khác Ví dụ Tướng Sĩ khơng thể ngồi cung, Tượng khơng phép qua sơng, Tốt tiến, ngang đất đối phương, quân Tướng không đối mặt trực tiếp với Để kiểm tra quân cờ có phép vào khơng, ta sử dụng hàm IsNormal(const int &piece, const POINT &point) Ngồi cịn phải kiểm tra nước bị cản (đối với quân Tượng Mã) xử lý cách ăn quân quân pháo trường hợp đặc biệt hàm CanGo Tổng thể ta có hàm sau: BOOL IsNormal(const int &piece, const POINT &poin) Begin if(đi biên) return FALSE; case piece of: {xử lý quân cờ Tướng, Sĩ, Tượng, Tốt) end return TRUE End BOOL CanGo(int map[11][12], int piece, const POINT &from, const POINT &to) Begin if(!IsNormal(piece, to)) {xử lý nước Xe, Pháo, Mã) case piece of: {xử lý kiểm tra nước hợp lệ tất quân cờ} end return TRUE 17 0 Tieu luan End Đánh giá cờ Đánh giá cờ nhiệm vụ định chương trình chơi cờ có "cao thủ" hay khơng Căn vào cờ máy gán cho điểm số (lượng giá tĩnh) để đánh giá độ tốt - xấu Nhờ điểm máy so sánh cờ với biết chọn nước tốt Đây nhiệm vụ khó khăn phức tạp khơng tồn thuật tốn tổng quát thống để tính điểm Điểm cờ dựa nhiều yếu tố mà khó số hố hết phụ thuộc vào số lượng giá trị quân cờ tại, phụ thuộc vào tính hãm, tính biến, công, thủ quân cờ cục diện trận đấu Trong chương trình, nhóm nghiên cứu định đưa đánh giá điểm số cho quân cờ sau: Quân cờ Điểm số Tướng 300 Sĩ 400 Tượng 300 Xe 1000 Pháo 600 Mã 600 Tốt 300 Bên cạnh cần có cách tính lại điểm quân Tốt sang sông ma trận chiều sau: const int Bonus[2][12][11]= { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 1, 2, 3, 4, 4, 4, 3, 2, 1, 0}, { 0, 1, 2, 3, 4, 4, 4, 3, 2, 1, 0}, { 0, 1, 2, 3, 3, 3, 3, 3, 2, 1, 0}, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, 18 0 Tieu luan { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0}, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, { 0, 1, 2, 3, 3, 3, 3, 3, 2, 1, 0}, { 0, 1, 2, 3, 4, 4, 4, 3, 2, 1, 0}, { 0, 1, 2, 3, 4, 4, 4, 3, 2, 1, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } }; Sở dĩ mảng chiều ta cần tính cho quân tốt bên Trong chương trình cài đặt phương pháp đơn giản nhất: lượng giá dựa sở giá trị quân cờ Cách tính lấy tổng giá trị qn cờ có bên trừ tổng giá trị quân cờ có đối phương Do đó, cờ cờ chỗ cịn nhiều qn bên hơn, nhiều quân giá trị cao có bắt nhiều quân quân giá trị cao đối phương khơng Ưu điểm cách tính này:  Đơn giản, dễ thực tính tốn 19 0 Tieu luan  Là cách tính nhanh Do tính nhanh nên tăng độ sâu tìm kiếm Việc tăng thêm độ sâu lại giúp máy có nhìn xa hơn, “cao cờ” nhiều khắc phục nhược điểm cách tính đơn giản Nhược điểm:  Cách làm bỏ qua nghệ thuật, chiến lược chơi cờ  Các quân cờ triển khai không theo chiến lược chung hết  Chỉ trọng tới việc ăn quân đối phương nhanh mà không xây dựng trận có lợi cho sau Để cải thiện nhược điểm trên, cần phải đánh giá thêm khả hỗ trợ quân cờ Các quân cờ hỗ trợ sức mạnh tăng thêm nhiều Để đánh giá việc hỗ trợ nhau; ta tìm ma trận thể kiểm sốt phe (nếu vị trí true vị trí có qn cờ phe kiểm soát) Nếu quân nằm vùng kiểm sốt tức hỗ trợ qn bên 3.4 Thuật tốn tm nước tốt Cây trò chơi Các trạng thái bàn cờ khác (hay gọi cờ, tình cờ) q trình chơi biểu diễn thành tìm kiếm ta tiến hành tìm kiếm để tìm nước tốt Cây trị chơi có nút tình khác bàn cờ, nhánh nối nút cho biết từ tình bàn cờ chuyển sang tình khác thơng qua nước đơn Dĩ nhiên, nước diễn theo cặp hai đấu thủ tiến hành Độ sâu trị chơi ply số tầng (chính độ sâu d cây) 20 0 Tieu luan Hnh 2: Minh họa độ sâu trò chơi Vét cạn Dùng thuật toán vét cạn để tìm kiếm trị chơi dường ý tưởng đơn giản Ta cần chọn nhánh dẫn tới nước thắng để quân đảm bảo thắng lợi Rất tiếc rằng, cách làm lại thực bùng nổ tổ hợp Ví dụ, từ cờ, trung bình có khả 16 nước khác (ta gọi hệ số nhánh nút b = 16) Như vậy, sau tầng ta có 16 nút con, nút lại có 16 Tổng số nút độ sâu thứ hai 16x16 = b2 Cứ độ sâu d có bd nút Hnh 3: Thuật toán vét cạn Nếu giả sử độ sâu 100 (hệ số nhánh 16 độ sâu 100 số nhỏ số thường gặp trị chơi cờ), số nhánh phải duyệt lên đến 16100 hay xấp xỉ 10120 - số lớn khủng khiếp Vì số khả tăng q nhanh, có số vấn đề đơn giản thích hợp với kiểu tìm kiếm vét hết khả (kiểu tìm kiếm vét cạn đòi hỏi phải kiểm tra tất đỉnh) Do đó, phương pháp tìm kiếm khác đời phát triển Ngược lại, có phương pháp ln ln xác nhằm 21 0 Tieu luan đánh giá cờ tốt hay so với kia, trị chơi trở thành đơn giản cách chọn nước dẫn tới cờ tốt Do khơng cần phải tìm kiếm Rất tiếc, thủ tục khơng có Ta cần có chiến lược tìm kiếm trị chơi Thuật tốn Minimax Minimax (cịn gọi minmax) phương pháp lý thuyết định có mục đích tối thiểu hóa (minimize) tổn thất vốn dự tính "tối đa" (maximize) Có thể hiểu ngược lại là, nhằm tối đa hóa lợi ích vốn dự tính tối thiểu (maximin) Nó bắt nguồn từ trị chơi có tổng khơng Nó mở rộng cho nhiều trò chơi phức tạp giúp đưa định chung có diện không chắn Ta nắm rõ, nước "tốt nhất" Giải thuật Minimax giúp tìm nước tốt nhất, cách ngược từ cuối trị chơi trở đầu Tại bước, ước định người A cố gắng tối đa hóa hội thắng A đến phiên anh ta, cịn nước người chơi B cố gắng để tổi thiểu hóa hội thắng người A (nghĩa tối đa hóa hội thắng B) Ví dụ minh họa trò chơi với Minimax 22 0 Tieu luan Hnh 4: Thuật toán Minimax Đánh giá thuật toán Minimax Nếu hệ số nhánh trung bình b ta thực tìm kiếm đến độ sâu d số nút phải lượng giá đáy ta biết bd Đây số đo độ phức tạp thuật toán Nếu b = 40, d = (các số thường gặp trò chơi cờ) số nút phải lượng giá 404 = 2560000 (trên triệu rưỡi nút) Còn với b = 40, d = số nút phải lượng giá tăng 40 lần thành 40 = 102400000 (trên 102 triệu nút) Lưu ý: toàn ý tưởng thuật toán dựa việc chuyển đổi cờ thành số để đánh giá Rất tiếc số thường không tốt không đủ để đánh giá hết điều Mặt khác, thuật tốn tốn (chạy chậm) việc sinh nước lượng giá tốn thời gian tính tốn, độ sâu trò chơi bị hạn chế nhiều Ta cần có thêm cải tiến để cải thiện tình hình 23 0 Tieu luan Thủ tục AlphaBeta Thủ tục AlphaBeta cải tiến thuật toán Minimax nhằm tỉa bớt nhánh trò chơi, làm giảm số lượng nút phải sinh lượng giá, tăng độ sâu tìm kiếm Ý tưởng Nguyên tắc Alpha-Beta: “Nếu biết điều thật tồi đừng thời gian tìm hiểu tồi tệ đến đâu” Hnh 5: Cắt tỉa AlphaBeta Tại nút u nút Thì b nút Nếu eval(u) > eval(v) giả sử eval(a) > eval(v) nữa, min(v, a) = eval(v) Mặt khác eval(u) > eval(v) max(u, b) = eval(u) Trong trường hợp eval(a) eval(v) => eval(u) > eval(a) max(u, b) = eval(u) Vậy kết luận vị tìm giá trị cho nút a vơ nghĩa nên ta cắt bỏ Trong điều kiện lí tưởng, thuật tốn AlphaBeta phải xét số nút theo công thức: 24 0 Tieu luan Với b = 40 d = ta có số nút phải xét 2x40 - = 3199 Như điều kiện lí tưởng số nút phải xét nhờ AlphaBeta (chỉ khoảng nghìn nút) thuật tốn Minimax (hơn 2,5 triệu nút) 2560000 / 3199 khoảng 800 lần Còn với b = 40 d = ta có số nút phải xét 40 + 40(5/2) - = 64000+10119-1 = 74118 Số nút phải xét nhờ AlphaBeta thuật tốn Minimax (hơn 102 triệu nút) 102400000/74118 = 1382 lần Dưới bảng so sánh số nút phải xét hai thuật toán Minimax AlphaBeta Hnh 6: So sánh Minimax AlphaBeta Chương 4: Ứng dụng 4.1 Giới thiệu chương trình cờ tướng Chức Chương trình có chức đánh lại , người chơi mặc định Quân Đỏ, máy Quân Đen 25 0 Tieu luan Giao diện trò chơi 4.2 Cài đặt Ngôn ngữ sử dụng C++ để lập trình mơi trường Visual Studio 2022 tải mơi trường hỗ trợ lập trình C++ 4.3 Kết chạy chương trình (Minh họa file Video) Nhận xét: Giao diện đơn giản Các nước chưa cho nước tốt Chương 5: KẾT LUẬN Do thời gian có hạn nên chương trình cờ tướng chưa thực hồn thiện tương lai nhóm cố gắng tăng độ sâu cho tìm kiếm, cải thiện thuật tốn đồng thời làm giao diện tốt Sau thời gian làm đồ án, em rút nhiều kinh nghiệm kiến thức lập trình TÀI LIỆU THAM KHẢO TS Phạm Thanh Hà (2012),Phạm Hồng Nguyên (2001) Bài viết Writing a chess program in 99 steps từ : http://www.sluijten.com Code tham khảo : http://xiang-qi.appspot.com/software2.html 26 0 Tieu luan BẢNG CHẤM CÔNG Họ Tên Nguyễn Minh Hùng MSSV LỚP CÔNG VIỆC 2011062908 20DTHA2 Viết báo cáo ,thuyết trình,hỗ Huỳnh Quốc Trung trợ code nhóm 2011061197 20DTHA2 Tìm tư liệu, báo cáo,viết ĐIỂM 7.5 powerpoint,chỉnh sửa code, Trần Nhật Minh báo cáo lần cuối 2011061689 20DTHA2 Tham gia hỗ trợ code nhóm , chỉnh sửa powerpoint 27 0 Tieu luan 28 0 Tieu luan ... Phân tích tốn cờ tướng + Quá trình chơi cờ tướng trình bên Đen Đỏ thay phiên đưa định với nước hợp lệ Để máy đánh cờ với người, ta cần phải làm cho máy hiểu cờ tướng. Vì ta biểu diễn cờ tướng theo... rõ nét Tại Việt Nam, cờ tướng chơi phổ biến đời sống hàng ngày dịp lễ tết Người chơi cờ tướng Việt Nam sáng tạo cách chơi mới, ? ?cờ người” 1.2Mơ tả trị chơi +Cách chơi: Ván cờ tiến hành hai người,... tất quân cờ} end return TRUE 17 0 Tieu luan End Đánh giá cờ Đánh giá cờ nhiệm vụ định chương trình chơi cờ có "cao thủ" hay không Căn vào cờ máy gán cho điểm số (lượng giá tĩnh) để đánh giá độ

Ngày đăng: 06/02/2023, 09:16

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

Tài liệu liên quan