Ngành học: Kỹ thuật phần mềmTên đề tài: Xây dựng chương trình chơi cờ vua với máy tính Mục đích: Tìm hiểu ,học tập các thuật toán AI cơ bản và xây dựng một chương trình chơi cờ vua đơn g
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN _
BÁO CÁO THỰC NGHIỆM/THÍ NGHIỆM
HỌC PHẦN: TRÍ TUỆ NHÂN TẠO – IT6094
Đề tài:
XÂY DỰNG CHƯƠNG TRÌNH CHƠI CỜ VUA VỚI MÁY TÍNH
Sinh viên thực hiện: Lê Văn Ninh – 2022604238
Lê Bá Phúc – 2022601873
Võ Xuân Quang – 2022605267Nguyễn Hữu Quang - 202260638
Nhóm: 12
Lớp học phần: 20241IT6094009 Khóa: 17
Giảng viên hướng dẫn: Trần Thanh Huân
Trang 2Ngành học: Kỹ thuật phần mềm
Tên đề tài: Xây dựng chương trình chơi cờ vua với máy tính
Mục đích: Tìm hiểu ,học tập các thuật toán AI cơ bản và xây dựng một chương
trình chơi cờ vua đơn giản từ đó phát triển khả năng làm việc nhóm
Yêu cầu:
- Hoàn thành các nhiệm vụ của đề tài
-Sử dụng kỹ năng làm việc nhóm trong quá trình thực hiện báo cáo
-Trình bầy báo cáo đúng yêu cầu, sử dụng kỹ năng “Viết báo cáo” khi thực
hiện đề tài
-Sử dụng kỹ năng viết tài liệu kỹ thuật, phi kỹ thuật trong phần mở đầu của báo cáo
Kết quả thu được: Bản báo cáo đề tài (bản cứng và bản mềm); sản phẩm đề tài
Ngày giao đề tài: 20/11/2024
Ngày hoàn thành: 20/12/2024
Giảng viên hướng dẫn: Trần Thanh Huân
Hà nội, Ngày 06 Tháng 11 Năm 2024
Trang 3
Nhận xét của GV Tuần 1
- Đã xây dựng bố cục báo cáo
- Hoàn thànhđầy đủ phần được giao
- Đã xây dựng bố cục báo cáo
- Hoàn thànhđầy đủ phần được giao
- Đã xây dựng bố cục báo cáo
- Hoàn thànhđầy đủ phần được giao
Trang 4- Hoàn thànhđầy đủ phần được giao
Tuần 2
1 Lê Văn
Ninh
- Làm nội dung chương 2: Tìm hiểu
về thuật toán Tìm kiếm sâu dần ()
- Tổng hợp và hoàn thiện nội dung của các thành viên trong nhóm
- Hoàn thànhđầy đủ phần được giao
2 Lê Bá
Phúc
- Làm nội dung chương 2: Tìm hiểu
về thuật toán Minimax (Định nghĩa, nguyên lý hoạt động, khả năng áp dụng ưu và nhược điểm của thuật toán)
- Hoàn thànhđầy đủ phần được giao
3 Võ Xuân
Quang
- Làm nội dung chương 2: Tìm hiểu
về kỹ thuật Alpha-Beta Prunning (Khái niệm , cách áp dụng , hiệu quả)
- Tập hợp nội dung các phần chương
2, check lỗi chính tả
- Hoàn thànhđầy đủ phần được giao
4 Nguyễn
Hữu
Quang
- Làm nội dung chương 2: Tìm hiểu
về thuật toán Tìm kiếm theo chiều sâu và Tìm kiếm theo chiều rộng (Định nghĩa và nguyên lý hoạt động)
- Hoàn thànhđầy đủ phần được giao
Trang 5- Xây dựng thuật toán Minimax được
áp dụng trong ứng dụng
- Hoàn thànhđầy đủ phần được giao
3 Võ Xuân
Quang
- Thảo luận với các thành viên trong nhóm về quy trình xây dựng chương trình
- Sử dụng thuật toán Minimax đã được xây dựng để áp dụng kỹ thuật Alpha-Beta Pruning cải tiến thuật toán
- Hoàn thànhđầy đủ phần được giao
- Xây dựng giao diện của bài toán
- Hoàn thànhđầy đủ phần được giao
- Hoàn thànhđầy đủ phần được giao
2 Lê Bá
Phúc
- Chỉnh sửa và hoàn thiện báo cáo - Hoàn thành
đầy đủ nhiệm vụ
Trang 6nhiệm vụ được giao
Trang 7LỜI NÓI ĐẦU
Cờ vua là một trò chơi mang tính chiến thuật cao, đòi hỏi người chơi phải vậndụng tư duy logic và kỹ năng phân tích để đạt được chiến thắng Trong bối cảnh côngnghệ ngày càng phát triển, việc ứng dụng trí tuệ nhân tạo (AI) vào trò chơi cờ vuakhông chỉ mang lại trải nghiệm mới mẻ cho người chơi mà còn là cơ hội để nghiêncứu và thử nghiệm các thuật toán thông minh trong lĩnh vực này Đề tài của chúng tôiđược thực hiện với mục tiêu xây dựng một chương trình chơi cờ vua sử dụng AI, tậptrung vào việc thiết kế và phát triển hệ thống để người chơi có thể tương tác với mộtđối thủ máy tính linh hoạt và đầy thử thách
Trong suốt quá trình thực hiện đề tài, nhóm đã nghiên cứu các tài liệu chuyênngành, tìm hiểu về thuật toán cờ vua phổ biến như Minimax, Alpha-Beta Pruning vàcác chiến lược tối ưu hóa khác Chúng tôi đã áp dụng các công cụ lập trình phù hợp đểtriển khai chương trình, đồng thời tiến hành thử nghiệm để đánh giá hiệu quả hoạtđộng của hệ thống Báo cáo này trình bày chi tiết quá trình thực hiện, từ giai đoạn lên
kế hoạch, thiết kế hệ thống, đến triển khai và kiểm tra Chúng tôi cũng chia sẻ nhữngkhó khăn gặp phải và cách nhóm giải quyết, nhằm giúp những ai quan tâm đến lĩnhvực này có thêm kinh nghiệm tham khảo
Chúng em xin gửi lời cảm ơn sâu sắc đến giảng viên hướng dẫn, người đã hỗ trợtận tình và đóng góp những ý kiến quan trọng giúp nhóm hoàn thiện đề tài Những chỉdẫn của thầy không chỉ giúp chúng tôi hiểu rõ hơn về các vấn đề kỹ thuật mà còn địnhhướng cách tiếp cận vấn đề một cách hiệu quả Sự hỗ trợ của thầy là một yếu tố quantrọng giúp nhóm hoàn thành công việc này
Mặc dù đã cố gắng hết sức trong việc nghiên cứu và triển khai, chúng em nhậnthấy báo cáo vẫn có thể còn những thiếu sót hoặc hạn chế Chúng em rất mong nhậnđược sự góp ý từ thầy để cải thiện và hoàn thiện hơn trong tương lai
Trang 8MỤC LỤC
LỜI NÓI ĐẦU 6
DANH SÁCH HÌNH ẢNH 8
PHẦN MỞ ĐẦU 9
CHƯƠNG 1 TỔNG QUAN 11
1.1 Giới thiệu chung 11
1.1.1 Lý do chọn đề tài 11
1.1.2 Mục tiêu và ý nghĩa của đề tài 12
1.1.3 Yêu cầu của bài toán 13
1.2 Cơ sở lý thuyết 13
1.2.1 Trí tuệ nhân tạo (AI) 13
1.2.2 Giới thiệu về cờ vua 15
1.2.3 Các công cụ và công nghệ sử dụng 18
CHƯƠNG 2: TÌM HIỂU VÀ LỰA CHỌN PHƯƠNG PHÁP 20
2.1 Thuật toán tìm kiếm nước đi 20
2.1.1 Thuật toán Minimax 20
2.1.2 Kỹ thuật Alpha-Beta Pruning 22
2.2 Các phương pháp tìm kiếm không gian trạng thái trong cờ vua 26
2.2.1 Thuật toán tìm kiếm theo chiều sâu (Depth First Search – DFS) 26
2.2.2 Thuật toán tìm kiếm theo chiều rộng (Breadth First Search – BFS) 28 2.2.3 Thuật toán tìm kiếm sâu dần(Iterative Deepening Search -IDS) 30
2.3 So sánh và lựa chọn phương pháp tìm kiếm không gian trạng thái trong cờ vua 31
2.3.1 Tìm kiếm theo chiều rộng (Breadth First Search – BFS) kết hợp với Minimax và Alpha-Beta Pruning 32
2.3.2 Tìm kiếm theo chiều sâu (Depth First Search – DFS) kết hợp với Minimax và Alpha-Beta Pruning 32
2.3.3 Tìm kiếm sâu dần (Iterative Deepening Search – IDS) kết hợp với Minimax và Alpha-Beta Pruning 32
2.3.4 Đánh giá và lựa chọn phương pháp tìm kiếm kết hợp với Minimax và Alpha-Beta Pruning 33
Trang 93.1 Phát triển hệ thống 35
3.1.1 Phát triển giao diện 35
3.1.2 Xử lý trò chơi 38
3.1.3 Xây dựng thuật toán 40
3.2 Kiểm thử, đánh giá hệ thống 42
3.2.1 Hiệu suất thuật toán 42
3.2.2 Hạn chế và hướng phát triển 43
KẾT LUẬN 45
TÀI LIỆU THAM KHẢO 46
DANH SÁCH HÌNH ẢNH Hình 1.1 Hình ảnh minh họa cấp độ của AI 15
Trang 10Hình 1.2 Hình ảnh Deep Blue đánh bại Garry Kasparov 16
Hình 1.3.Hình ảnh minh họa cho tình huống “chiếu” 17
Hình 1.4.Hình ảnh minh họa tình huống “chiếu hết” 18
Hình 1.5.Hình ảnh minh họa tình huống Stalemate 18
Hình 1.6.Hình minh họa 2 bên chỉ còn mỗi vua nên hòa vì tính huống Insufficient material 19
Hình 2.1.Ví dụ về cây trò chơi 24
Hình 2.2.Ví dụ với một cây trò chơi trung bình 25
Hình 2.3 Minh hoạ tìm kiếm theo chiều sâu 28
Hình 2.4 Minh hoạ tìm kiếm theo chiều rộng 30
Hình 3.1.Hình ảnh bàn cờ 36
Hình 3.2.Khởi tạo Pygame và thiết lập cửa sổ 37
Hình 3.3.Hàm vẽ bàn cờ 37
Hình 3.4.Hàm xử lý quân cờ được chọn 37
Hình 3.5.Hàm tải hình ảnh các quân cờ từ tệp piece_images 38
Hình 3.6.Hàm vẽ thông báo lên màn hình 38
Hình 3.7.Hàm xử các nút “Reset” và “Log out 39
Hình 3.8.Các hàm xử lý các nước đi của xe , mã , tượng , hậu , vua 39
Hình 3.9.Hàm xử lý nước đi của quân tốt 40
Hình 3.10.Các hàm xử lý đảm bảo vua không bị chiếu sau khi đi 40
Hình 3.11.Các hàm kiểm tra hòa cờ 41
Hình 3.12.Giải thuật Minimax với Alpha-Beta Pruning 42
Hình 3.13.Kết hợp tìm kiếm sâu dần và Minimax với Alpha-Beta Pruning trong tìm nước đi tốt nhất 43
PHẦN MỞ ĐẦU
Cờ vua là trò chơi trí tuệ nổi tiếng, được sử dụng rộng rãi để nghiên cứu AI
Từ Deep Blue đến AlphaZero, AI đã cho thấy tiềm năng lớn trong việc tối ưu hóa
thuật toán và phát triển các hệ thống chơi cờ thông minh Nghiên cứu này tập trung
vào việc xây dựng chương trình chơi cờ sử dụng thuật toán Minimax kết hợp
Trang 11Alpha-Beta Pruning nhằm tối ưu hóa khả năng tính toán, đồng thời cung cấp một
giao diện người dùng trực quan
Tuy nhiên, việc phát triển một chương trình chơi cờ vua hiệu quả là một thử thách lớn, đòi hỏi giải quyết nhiều vấn đề phức tạp Cụ thể, phát triển hệ thống chơi
cờ AI yêu cầu xử lý quy tắc di chuyển phức tạp, tính toán nước đi tối ưu trong thời gian ngắn và đảm bảo hiệu suất cao Thuật toán Minimax và Alpha-Beta Pruning được lựa chọn để giảm thiểu không gian trạng thái cần phân tích và nâng cao hiệu quả
Mục đích và ý nghĩa của đề tài là phát triển một chương trình chơi cờ vua
sử dụng các thuật toán Minimax và Alpha-Beta Pruning để tối ưu hóa hiệu suất tính toán, đồng thời phát triển một giao diện người dùng trực quan và dễ sử dụng
Phạm vi giải quyết vấn đề của báo cáo tập trung vào việc xây dựng một hệ
thống chơi cờ vua cơ bản giữa người chơi và máy tính, không tích hợp các mô hình học sâu (Deep Learning) Các thuật toán tìm kiếm nước đi sẽ được tối ưu hóa thông qua việc sử dụng Minimax và Alpha-Beta Pruning, trong khi giao diện người dùng
sẽ được thiết kế để giúp người chơi dễ dàng tương tác với chương trình
Nội dung các chương trong báo cáo sẽ được trình bày như sau:
Chương 1: Tổng quan - Chương này cung cấp cái nhìn tổng quan về lý do
chọn đề tài, mục tiêu và ý nghĩa của nghiên cứu Đồng thời, chương cũng trình bày các yêu cầu và cơ sở lý thuyết cần thiết cho việc phát triển chương trình, bao gồm các thuật toán AI cơ bản và công cụ phát triển sẽ được sử dụng như Python, thư viện Python-Chess và Tkinter
Chương 2: Tìm hiểu và lựa chọn phương pháp - Phần này tập trung vào
việc tìm hiểu các phương pháp và thuật toán trong trò chơi cờ vua Các thuật toán Minimax và Alpha-Beta Pruning sẽ được phân tích chi tiết, đồng thời sosánh các phương pháp tìm kiếm không gian trạng thái khác như tìm kiếm theo chiều sâu (DFS), chiều rộng (BFS) và sâu dần (IDDFS) để đánh giá ưu nhược điểm của từng phương pháp và tính ứng dụng của chúng trong cờ vua
Chương 3: Xây dựng và phát triển hệ thống - Chương này mô tả quá trình
thiết kế và phát triển hệ thống chơi cờ vua, bao gồm việc phát triển giao diện người dùng, xử lý logic trò chơi theo quy tắc cờ vua, và tích hợp các thuật toán AI vào hệ thống Bên cạnh đó, chương cũng trình bày quá trình kiểm thử hệ thống và đánh giá hiệu suất thuật toán, đồng thời phân tích các hạn chế hiện tại và đề xuất hướng phát triển trong tương lai để cải thiện hệ thống
Trang 12CHƯƠNG 1 TỔNG QUAN
Cung cấp một cái nhìn tổng quan về lý do chọn đề tài, mục tiêu và ý nghĩa của nghiên cứu, cùng với các yêu cầu và cơ sở lý thuyết cần thiết Phần mở đầu giớithiệu lý do tại sao cờ vua vẫn luôn là trò chơi hấp dẫn và là môi trường phù hợp để
áp dụng các thuật toán trí tuệ nhân tạo, từ những hệ thống nổi tiếng như Deep Blue đến các công nghệ hiện đại như AlphaZero Đề tài này không chỉ mang tính chất nghiên cứu mà còn có giá trị thực tiễn trong việc phát triển các ứng dụng AI trong trò chơi chiến lược
Phần mục tiêu và ý nghĩa của đề tài giải thích rõ những kỳ vọng từ việc xây dựng chương trình chơi cờ vua, bao gồm tối ưu hóa thuật toán Minimax kết hợp vớiAlpha-Beta Pruning, phát triển giao diện người dùng dễ sử dụng, và tạo cơ hội nghiên cứu các thuật toán AI Bên cạnh đó, yêu cầu của bài toán được trình bày chi tiết, từ tính chính xác trong việc tuân thủ quy tắc cờ vua đến việc tối ưu hóa hiệu suất của AI
Phần cơ sở lý thuyết cung cấp một cái nhìn tổng quan về trí tuệ nhân tạo (AI), các thuật toán tìm kiếm như Minimax, Alpha-Beta Pruning, cùng các khái niệm cơ bản trong cờ vua Thêm vào đó, phần này cũng giới thiệu các công cụ và công nghệ sẽ được sử dụng trong việc phát triển chương trình, bao gồm ngôn ngữ lập trình Python, thư viện Python-Chess và Stockfish, cùng các thư viện hỗ trợ giao diện người dùng như Tkinter
1.1 Giới thiệu chung
1.1.1 Lý do chọn đề tài
Cờ vua là một trò chơi trí tuệ cổ điển, xuất hiện từ lâu đời và vẫn giữ đượcsức hấp dẫn với hàng triệu người chơi trên khắp thế giới Điểm nổi bật của cờvua nằm ở việc đòi hỏi người chơi phải vận dụng khả năng tư duy logic, phântích chiến thuật và dự đoán nước đi của đối thủ để đưa ra quyết định tối ưu.Trong thời đại công nghệ 4.0, với sự phát triển vượt bậc của trí tuệ nhân tạo(AI), các thuật toán tìm kiếm và học máy đã được ứng dụng rộng rãi trong nhiềulĩnh vực, đặc biệt là trong các trò chơi chiến lược như cờ vua Từ những chươngtrình chơi cờ nổi tiếng như Deep Blue của IBM (đánh bại kỳ thủ Garry Kasparovvào năm 1997) đến các hệ thống hiện đại như AlphaZero, AI không chỉ thể hiệnkhả năng phân tích vượt trội mà còn giúp con người hiểu thêm về các chiến thuậtchơi
Xuất phát từ niềm đam mê nghiên cứu trí tuệ nhân tạo và sự yêu thích đốivới trò chơi cờ vua, chúng tôi lựa chọn đề tài “Xây dựng chương trình chơi cờ
Trang 13vua với máy tính” Đề tài không chỉ là một thử thách về mặt kỹ thuật mà còn có ýnghĩa thực tiễn trong việc phát triển các ứng dụng AI tương tác thông minh.
Lý do cụ thể lựa chọn đề tài bao gồm:
- Ứng dụng thực tiễn: Một chương trình chơi cờ vua giúp người chơi rèn luyện
tư duy chiến lược và khả năng phân tích
- Thách thức công nghệ: Việc triển khai các thuật toán tìm kiếm và kỹ thuật đánhgiá yêu cầu khả năng xử lý dữ liệu phức tạp và tối ưu hóa hiệu suất hệ thống
- Khám phá AI: Đề tài là cơ hội để nghiên cứu sâu về các thuật toán AI cổ điểnnhư Minimax và Alpha-Beta Pruning, đồng thời áp dụng chúng trong môitrường thực tế
1.1.2 Mục tiêu và ý nghĩa của đề tài
+ Chương trình có thể được sử dụng làm công cụ học tập, nghiên cứu chonhững người muốn tìm hiểu về cờ vua hoặc thuật toán trí tuệ nhân tạo
- Về xã hội
Trang 14+ Đề tài góp phần ứng dụng công nghệ vào giáo dục và giải trí, giúp ngườichơi có một sản phẩm tiện lợi và dễ sử dụng.
+ Khuyến khích người dùng tìm hiểu về AI và các ứng dụng thực tế của nó,nâng cao nhận thức về công nghệ hiện đại
1.1.3 Yêu cầu của bài toán
1.1.3.1 Tính chính xác trong quy tắc
- Chương trình cần tuân thủ đầy đủ các quy tắc của cờ vua, bao gồm:
+ Quy tắc di chuyển của từng loại quân cờ (Hậu, Xe, Mã, Tượng, Tốt, Vua).+ Các tình huống đặc biệt: chiếu tướng, chiếu bí, phong cấp Tốt, nhập thành,bắt Tốt qua đường, hòa
1.1.3.2 Tính thông minh của AI
- Máy tính cần có khả năng đưa ra nước đi hợp lý, không chỉ dựa vào giá trịquân cờ mà còn dựa trên chiến lược dài hạn, như kiểm soát trung tâm bàn cờ
và bảo vệ Vua
- Thuật toán Minimax và kỹ thuật Alpha-Beta Pruning cần được áp dụng đểtối ưu hóa hiệu suất xử lý
1.1.3.3 Giao diện người dùng (UI)
- Giao diện hiển thị bàn cờ 8x8 rõ ràng, trực quan, hỗ trợ người chơi tương tác
+ Cải thiện AI với thuật toán học máy
+ Hỗ trợ chế độ nhiều người chơi hoặc chơi trực tuyến
+ Phân tích ván cờ và đưa ra gợi ý nước đi cho người chơi
1.2 Cơ sở lý thuyết
1.2.1 Trí tuệ nhân tạo (AI)
Trí tuệ nhân tạo (Artificial Intelligence - AI) là một lĩnh vực trong khoahọc máy tính tập trung vào việc phát triển các hệ thống có khả năng thực hiệnnhững nhiệm vụ mà trước đây yêu cầu trí thông minh của con người AI có một
số cấp độ chẳng hạn như
Trang 15- AI yếu (ANI - Artificial Narrow intelligence ): Tập trung vào việc thực hiệncác nhiệm vụ cụ thể, có thể nhận diện giọng nói, chơi game, hoặc hỗ trợ kháchhàng Đây là dạng AI phổ biến hiện nay, ví dụ như Chat GPT, Bard hay Bing, …
- AI mạnh (AGI - Artificial General intelligence ): Hướng đến việc xây dựng các
hệ thống có khả năng tư duy như con người, tuy nhiên hiện tại vẫn là một mụctiêu trong tương lai
- Siêu trí tuệ nhân tạo (ASI - Artificial Super intelligent): Một giai đoạn tiềmnăng mà AI vượt qua khả năng của con người trong tất cả các lĩnh vực
Các phương pháp chính trong AI:
Học máy (Machine Learning): Là nhánh AI giúp máy tính học từ dữ liệu và cải
thiện hiệu suất theo thời gian
Học có giám sát (Supervised Learning): Dùng dữ liệu gắn nhãn để huấn luyện
mô hình, ví dụ: phân loại hình ảnh, dự đoán giá cổ phiếu
Học không giám sát (Unsupervised Learning): Phân tích dữ liệu không gắnnhãn, ví dụ: phân cụm khách hàng
Học tăng cường (Reinforcement Learning): Học cách hành động thông quatương tác với môi trường, ứng dụng nhiều trong trò chơi và robot
Mạng nơ-ron nhân tạo (Artificial Neural Networks – ANN): Lấy cảm hứng từ
cấu trúc của não người, được ứng dụng trong các bài toán nhận diện hình ảnh,giọng nói, và xử lý ngôn ngữ
Các thuật toán tìm kiếm và tối ưu hóa: Như thuật toán Minimax, A*, và thuật
toán tiến hóa, thường được áp dụng trong các trò chơi như cờ vua
Hình 1.1 Hình ảnh minh họa cấp độ của AI
Trang 16Ứng dụng của AI trong thực tế:
- Y tế: Chẩn đoán bệnh, tối ưu hóa điều trị, phân tích hình ảnh y tế
- Kinh doanh: Dự báo doanh số, phân tích thị trường, chatbot chăm sóc kháchhàng
- Trò chơi: AI đã đạt đến trình độ vượt qua con người ở nhiều trò chơi, như DeepBlue đánh bại Garry Kasparov trong cờ vua (1997) hay AlphaGo chiến thắng kỳthủ cờ vây Lee Sedol -kỳ thủ cờ vây số 1 thế giới (2016)
Hình 1.2 Hình ảnh Deep Blue đánh bại Garry Kasparov
1.2.2 Giới thiệu về cờ vua
Cờ vua là một trò chơi chiến lược dành cho hai người, mỗi người có 16 quâncờ: vua, hoàng hậu, xe, tượng, mã và tốt Mục tiêu của trò chơi là “chiếu hết” vuađối phương, tức là đặt vua vào tình trạng không thể di chuyển để thoát khỏi sự tấncông Trò chơi diễn ra trên bàn cờ 8x8 ô vuông, và mỗi quân cờ có một cách dichuyển riêng biệt
Quy tắc cơ bàn trong cờ vua
Cách di chuyển các quân cờ:
Vua (King): Di chuyển một ô mỗi lần theo mọi hướng (ngang, dọc hoặc chéo).Hoàng hậu (Queen): Di chuyển bất kỳ số ô nào theo mọi hướng
Trang 17Xe (Rook): Di chuyển theo chiều ngang hoặc dọc, không giới hạn số ô.
Tượng (Bishop): Di chuyển theo các đường chéo, không giới hạn số ô
Mã (Knight): Di chuyển theo hình chữ "L" (hai ô theo chiều ngang và một ô theochiều dọc hoặc ngược lại), có thể nhảy qua các quân cờ khác
Tốt (Pawn): Di chuyển một ô mỗi lần về phía trước, nhưng có thể ăn theo đườngchéo Tốt có thể di chuyển hai ô ở lần đi đầu tiên Khi đến hàng cuối của đốiphương, tốt có thể được thăng cấp thành quân cờ khác (hoàng hậu, xe, tượng hoặcmã)
Các khái niệm:
Nước đi hợp lệ: Di chuyển bất kỳ quân cờ nào mà không khiến quân vua bị tấn
công (chiếu)
Chiếu (Check): Khi quân vua nằm trong vùng bị tấn công bởi quân cờ của đối
phương Người chơi phải tìm cách bảo vệ vua bằng cách chặn đường tấn cônghoặc di chuyển quân vua ra khỏi tình trạng bị chiếu
Hình 1.3.Hình ảnh minh họa cho tình huống “chiếu”
Trang 18Chiếu hết (Checkmate): Khi quân vua nằm trong vùng bị tấn công bởi quân cờ
của đối thủ mà không còn cách nào để thoát khỏi sự tấn công, đồng nghĩa với việc kết thúc ván cờ với chiến thắng cho đối phương
Hình 1.4.Hình ảnh minh họa tình huống “chiếu hết”
- Các tình huống đặc biệt:
Thế cờ hòa (Stalemate): Thế cờ hòa xảy ra khi một bên không thể thực hiện bất
kỳ nước đi hợp lệ nào, nhưng quân vua của họ vẫn an toàn và không bị chiếu.Trong tình huống này, ván cờ kết thúc ngay lập tức với kết quả hòa
Hình 1.5.Hình ảnh minh họa tình huống Stalemate
Trang 19Thế cờ tứ tuyệt (Fourfold repetition): Ván cờ có thể kết thúc hòa nếu một tình
huống bàn cờ được lặp lại bốn lần trong quá trình chơi
Ví dụ: Giả sử trong ván cờ, một tình huống bàn cờ lặp lại 3 lần, và nếu bạnhoặc đối phương thực hiện một nước đi nào đó, tình huống đó sẽ lại xuất hiện lầnthứ 4 Khi tình huống này xảy ra, nếu một trong hai bên yêu cầu hòa, ván cờ sẽkết thúc hòa
Đủ quân cờ (Insufficient material): Trường hợp cả hai bên không còn đủ quân
cờ để chiếu hết đối phương, ván cờ kết thúc hòa
Hình 1.6.Hình minh họa 2 bên chỉ còn mỗi vua nên hòa vì tính huống
Insufficient material
Chiến lược trong cờ vua: Cờ vua không chỉ là việc di chuyển các quân cờ mà
còn là một trò chơi chiến lược yêu cầu người chơi phải tính toán và dự đoán các nước đi của đối phương Một chiến lược thành công cần hiểu rõ về vị trí
và sức mạnh của các quân cờ, đồng thời dự đoán nước đi của đối thủ Các
thuật toán AI trong cờ vua sử dụng các phương pháp tìm kiếm, như Minimax
và Alpha-Beta Pruning, để xác định các nước đi tối ưu dựa trên việc dự đoán
các nước đi của cả hai người chơi
1.2.3 Các công cụ và công nghệ sử dụng
Ngôn ngữ lập trình Python
- Python là một ngôn ngữ lập trình phổ biến và dễ học, với cú pháp rõ ràng vàcác thư viện mạnh mẽ hỗ trợ phát triển các ứng dụng AI Đặc biệt, Python rất
Trang 20mạnh mẽ khi xây dựng các hệ thống AI cho các trò chơi chiến lược như cờvua
- Thư viện Python-Chess: Thư viện Python-Chess cho phép quản lý bàn cờ,kiểm tra các trạng thái hợp lệ của quân cờ, và tương tác với các engine phântích cờ vua mạnh mẽ như Stockfish Thư viện này rất hữu ích khi xây dựng cácứng dụng chơi cờ vua, hỗ trợ kiểm tra tính hợp lệ của các nước đi, đồng thờitích hợp các công cụ phân tích AI mạnh mẽ
- Stockfish là một engine cờ vua miễn phí và mạnh mẽ, thường được sử dụngtrong các hệ thống AI chơi cờ Nó hỗ trợ tính toán và phân tích các nước đi,giúp tối ưu hóa chiến lược cho AI Thư viện Python-Chess có thể tích hợpStockfish để tăng cường khả năng tính toán của AI trong các ứng dụng cờ vua
Thư viện AI: Minimax và Alpha-Beta Pruning
- Thuật toán Minimax là nền tảng của các chiến lược AI trong cờ vua Thuật toán này giúp AI tìm kiếm các nước đi tối ưu trong một cây tìm kiếm, trong
đó AI cố gắng tối đa hóa lợi thế và tối thiểu hóa thiệt hại Tuy nhiên, thuật toán này có thể gặp vấn đề với số lượng nhánh rất lớn, vì vậy Alpha-Beta Pruning được sử dụng để tối ưu hóa quá trình tìm kiếm, giảm thiểu số lượng tính toán cần thiết mà vẫn đảm bảo tính chính xác
- Alpha-Beta Pruning là kỹ thuật tối ưu hóa trong thuật toán Minimax Nó giúp giảm thiểu số lượng nhánh trong cây tìm kiếm, từ đó tiết kiệm thời giantính toán mà không làm giảm tính chính xác của kết quả
Giao diện người dùng (UI)
- Để xây dựng giao diện người dùng cho hệ thống chơi cờ vua, thư viện Tkinter trong Python được sử dụng Tkinter cho phép xây dựng các ứng dụng GUI (Giao diện Người dùng Đồ họa), giúp người chơi tương tác với bàn cờ, thực hiện các nước đi và theo dõi trạng thái của trận đấu
- Tkinter: Là thư viện đồ họa của Python, giúp xây dựng các giao diện người dùng đơn giản nhưng hiệu quả cho các trò chơi như cờ vua
Tổng kết chương 1
Chương 1 đã làm rõ mục tiêu và tầm quan trọng của việc xây dựng một chươngtrình chơi cờ vua sử dụng trí tuệ nhân tạo, cụ thể là qua thuật toán Minimax và Alpha-Beta Pruning Đề tài không chỉ giúp nghiên cứu về AI mà còn đóng góp vào việc pháttriển công cụ hỗ trợ người chơi cờ vua, cải thiện khả năng tư duy chiến lược và tạo ranhững ứng dụng thực tiễn trong giáo dục và giải trí Các công nghệ và công cụ nhưPython, thư viện Python-Chess, và Tkinter được lựa chọn để phát triển hệ thống chơi
cờ vua này
Trang 21CHƯƠNG 2: TÌM HIỂU VÀ LỰA CHỌN PHƯƠNG PHÁP
Tập trung vào việc tìm hiểu và lựa chọn phương pháp tìm kiếm và thuật toán trong trò chơi cờ vua, một lĩnh vực quan trọng trong trí tuệ nhân tạo Chương này sẽtrình bày chi tiết về các thuật toán cơ bản như Minimax và cách cải tiến chúng bằngAlpha-Beta Pruning để tối ưu hóa hiệu quả tính toán Đồng thời, chương cũng so sánh các phương pháp tìm kiếm không gian trạng thái như tìm kiếm theo chiều sâu (DFS), chiều rộng (BFS) và sâu dần (IDDFS), từ đó đánh giá ưu nhược điểm và tínhứng dụng của từng phương pháp trong trò chơi cờ vua
1.1 Thuật toán tìm kiếm nước đi
1.1.1 Thuật toán Minimax
1.1.1.1 Khái niệm thuật toán
Thuật toán Minimax là một kỹ thuật phổ biến trong lý thuyết trò chơi và trí tuệnhân tạo, được thiết kế để tìm nước đi tối ưu trong các trò chơi hai người có tổngbằng không (như cờ vua) Mục tiêu của thuật toán là tối ưu hóa kết quả chongười chơi chính (MAX) trong khi giả định đối thủ (MIN) cũng luôn chơi tối ưu
để giảm thiểu lợi ích của MAX
Cấu trúc cơ bản của Minimax dựa trên cây trạng thái của trò chơi:
Các nút lá biểu thị điểm số (utility) của trạng thái khi trò chơi kết thúc
Các nút trung gian biểu thị lựa chọn nước đi tối ưu dựa trên chiến lược của MAXhoặc MIN
1.1.1.2 Mô tả cách hoạt động của thuật toán.’
Bước 1: Xây dựng cây trạng thái
Bắt đầu từ trạng thái hiện tại, sinh tất cả trạng thái có thể xảy ra từ các nước đihợp lệ
Cây trạng thái được xây dựng với nút gốc là trạng thái hiện tại và các nhánh làcác nước đi có thể
Bước 2: Đánh giá trạng thái ở các nút lá
Áp dụng hàm heuristic để gán điểm số cho các trạng thái cuối cùng (nút lá).Điểm số phản ánh mức độ có lợi của trạng thái đối với MAX (max là người chơi)
Bước 3: Quay lui và chọn giá trị tối ưu
Trang 22Ở mỗi nút trung gian:
Nếu là lượt của MAX, chọn giá trị lớn nhất từ các nút con
Nếu là lượt của MIN, chọn giá trị nhỏ nhất từ các nút con
Bước 4: Chọn nước đi
Tại nút gốc, thuật toán chọn nước đi tương ứng với giá trị tối ưu được tính toán
1.1.1.3 Mã giả của thuật toán
# Thuật toán Minimax
def minimax(node, depth, isMaximizingPlayer):
if depth == 0 or is_terminal(node):
return evaluate(node) # Đánh giá trạng thái
if isMaximizingPlayer:
maxEval = -infinityfor child in get_children(node):
eval = minimax(child, depth - 1, False)maxEval = max(maxEval, eval)
return maxEvalelse:
minEval = infinityfor child in get_children(node):
eval = minimax(child, depth - 1, True)minEval = min(minEval, eval)
return minEval
1.1.1.4 Ưu và nhược điểm khi áp dụng trong cờ vua
Ưu điểm:
- Đảm bảo tìm được nước đi tối ưu nếu cây trạng thái được duyệt đầy đủ
- Phù hợp với các trò chơi có không gian trạng thái nhỏ hoặc độ sâu giới hạn
Nhược điểm:
- Đòi hỏi tài nguyên tính toán lớn khi không gian trạng thái và độ sâu tìm kiếmtăng
Trang 23- Trong cờ vua, không gian trạng thái rất lớn (khoảng 1012010^{120}), khiến Minimax nguyên bản không khả thi để duyệt toàn bộ cây trạng thái.
1.1.1.5 Khả năng áp dụng và cải tiến
Mặc dù Minimax nguyên bản không khả thi với cờ vua do kích thước
không gian trạng thái, nhưng khi kết hợp với các kỹ thuật tối ưu như Alpha-Beta Pruning, thuật toán vẫn có thể hoạt động hiệu quả Alpha-Beta Pruning giúp
giảm đáng kể số lượng trạng thái cần đánh giá bằng cách loại bỏ các nhánhkhông cần thiết trong quá trình duyệt cây Ngoài ra, các cải tiến như:
Giới hạn độ sâu tìm kiếm (depth-limited search): Chỉ duyệt đến một độ sâu cố định.
Hàm heuristic: Đánh giá trạng thái nhanh chóng mà không cần đi đến trạng thái
cuối cùng
Nhờ các tối ưu hóa này, Minimax vẫn là nền tảng cơ bản cho nhiều AI chơi
cờ vua hiện đại, kết hợp với những chiến lược bổ trợ để đảm bảo hiệu quả và độchính xác cao
1.1.2 Kỹ thuật Alpha-Beta Pruning
1.1.2.1 Khái niệm thuật toán
Alpha-Beta Pruning là một phiên bản sửa đổi của thuật toán minimax Nó làmột kỹ thuật tối ưu hóa cho thuật toán minimax
Như chúng ta đã thấy trong thuật toán tìm kiếm minimax rằng số lượng trạngthái trò chơi mà nó phải kiểm tra là cấp số nhân theo chiều sâu của cây Vì chúng
ta không thể loại bỏ số mũ, nhưng chúng ta có thể cắt nó thành một nửa Do đó,
có một kỹ thuật mà không cần kiểm tra từng nút của cây trò chơi, chúng ta có thểtính ra quyết định minimax chính xác và kỹ thuật này được gọi là cắt tỉa Điềunày liên quan đến hai tham số ngưỡng Alpha và beta để mở rộng trong tương lai,
vì vậy nó được gọi là Beta Pruning Nó còn được gọi là Thuật toán Beta
Alpha-1.1.2.2 Cách tối ưu thuật toán Minimax bằng cắt tỉa Alpha-Beta
a) Chiến lược cắt tỉa
Nút Max có một giá trị alpha (lớn hơn hoặc bằng alpha – luôn tăng), nút min cómột giá trị beta (nhỏ hơn hoặc bằng beta – luôn giảm)
Khi chưa có alpha và beta xác định thì thực hiện tìm kiếm sâu (depth-first) đểxác định được alpha, beta, và truyền ngược lên các nút cha
b) Cắt tỉa như thế nào?