Báo cáo Nghiên cứu về Lịch sử Chơi Cờ Tướng (Xiangqi) Trên Máy Tính
Tổng hợp có hệ thống lịch sử phát triển engine cờ tướng từ thập niên 1980 đến năm 2026, bao gồm các engine tiêu biểu, giao thức và hệ sinh thái công cụ. Chương 7: Biên Dịch Engine Cờ Tướng và Xây Dựng Makefile → Chương 1: Chân Dung các Nhà Phát Triển E…
Chương 7: Biên Dịch Engine Cờ Tướng và Xây Dựng Makefile
7.1 Cấu Trúc Makefile Cơ Bản
Makefile của một engine Cờ Tướng thường bao gồm các mục tiêu sau:
release: Phiên bản phát hành (tối ưu hóa đầy đủ, không có thông tin gỡ lỗi) debug: Phiên bản gỡ lỗi (không tối ưu hóa, bao gồm ký hiệu gỡ lỗi) profile: Phiên bản phân tích (bao gồm ký hiệu phân tích) test: Phiên bản kiểm thử (bao gồm kiểm thử đơn vị)
Lựa chọn cờ trình biên dịch: -O3: Mức tối ưu hóa cao nhất (phiên bản phát hành) -march=native: Tối ưu hóa cho kiến trúc CPU hiện tại -lto: Tối ưu hóa thời gian liên kết (Link-Time Optimization) -fno-exceptions: Vô hiệu hóa xử lý ngoại lệ (không cần trong engine)
7.2 Tùy Chọn Biên Dịch cho Các Kiến Trúc CPU Khác Nhau
Biên dịch chung: make build ARCH=x86-64
Biên dịch kiến trúc cụ thể: make build ARCH=x86-64-avx2 (cho CPU hỗ trợ AVX2) make build ARCH=x86-64-bmi2 (cho CPU hỗ trợ BMI2) make build ARCH=x86-64-avx512 (cho CPU hỗ trợ AVX512, một số CPU cao cấp)
Biên dịch kiến trúc ARM: make build ARCH=armv8 (ARMv8 chung) make build ARCH=armv8-neon (cho ARMv8 hỗ trợ NEON, như Apple Silicon)
Chương 8: Hướng Kỹ Thuật Tương Lai cho Engine Cờ Tướng
8.1 Meta-Learning và Học Chuyển Giao
Meta-Learning và Học chuyển giao (Transfer Learning) có thể mang lại những đột phá cho phát triển engine Cờ Tướng:
Ứng dụng học chuyển giao trong cờ: Sử dụng trọng số mạng từ huấn luyện NNUE cờ quốc tế làm điểm khởi đầu cho huấn luyện Cờ Tướng. Do sự tương đồng về cấu trúc giữa cờ quốc tế và Cờ Tướng (cả hai đều là trò chơi thông tin hoàn hảo, hai người chơi luân phiên đi), học chuyển giao có thể giảm đáng kể số lượng mẫu cần thiết cho huấn luyện.
Tiềm năng của meta-learning: Thông qua meta-learning, engine có thể thích ứng nhanh hơn với các thế cờ và đối thủ mới. Meta-learning mang lại cho engine khả năng “học cách học.”
8.2 Đào Sâu Hợp Tác Người-Máy
Hợp tác người-máy trong tương lai có thể vượt xa mô hình đơn giản “người xem phân tích của engine và chơi”:
Phân tích hội thoại: Tương tác với engine thông qua ngôn ngữ tự nhiên; engine có thể giải thích kết quả phân tích của nó bằng ngôn ngữ tự nhiên.
Huấn luyện cá nhân hóa: Engine có thể tạo ra các bài tập huấn luyện nhắm mục tiêu dựa trên điểm yếu cụ thể của người dùng.
Hỗ trợ nhận thức: Engine có thể xác định và bổ sung các điểm mù trong nhận thức của người chơi.
8.3 Tiếp Tục Tiêu Chuẩn Hóa
Các hướng tiêu chuẩn hóa trong tương lai cho engine Cờ Tướng bao gồm:
- Tiêu chuẩn hóa giao thức: Hoàn thiện thêm giao thức UCCI, tiêu chuẩn hóa các tùy chọn và mở rộng engine
- Tiêu chuẩn hóa kiểm thử: Thiết lập điểm chuẩn kiểm thử engine Cờ Tướng thống nhất
- Tiêu chuẩn hóa dữ liệu: Thúc đẩy định dạng và tính khả dụng mở của dữ liệu ván đấu và dữ liệu huấn luyện NNUE
- Tiêu chuẩn hóa API: Cung cấp API engine tiêu chuẩn hóa cho các nền tảng phân tích trực tuyến
Tập VIII: Giải Thích Chi Tiết về Thuật Ngữ Kỹ Thuật
Nền Tảng Toán Học của Tỉa Alpha-Beta
Nguyên lý toán học của tỉa Alpha-Beta dựa trên định lý Minimax và các điều kiện tỉa. Cho một nút cây trò chơi n, giả sử độ sâu tìm kiếm d, điều kiện tỉa là:
Nếu alpha >= beta, tỉa.
Ý nghĩa trực quan của điều kiện này: Người chơi MAX (người chơi alpha) đã có lợi ích đảm bảo ít nhất là alpha, trong khi người chơi MIN (người chơi beta) đảm bảo rằng MAX sẽ không nhận được lợi ích cao hơn beta. Khi alpha >= beta, các đảm bảo của cả hai bên xung đột — MAX đã đạt được giới hạn trên mà MIN sẵn sàng chấp nhận.
Trong điều kiện sắp xếp tối ưu (nước đi tốt nhất được tìm kiếm trước), độ phức tạp nút của Alpha-Beta là: N = O(b^(d/2))
Trong điều kiện sắp xếp tệ nhất (nước đi tệ nhất được tìm kiếm trước), độ phức tạp giảm xuống: N = O(b^d)
Hệ số phân nhánh b cho Cờ Tướng khoảng 40-60, có nghĩa là với sắp xếp tối ưu, độ sâu tìm kiếm có thể tăng khoảng 60-80%.
Nguyên Lý Toán Học của Tìm Kiếm Sâu Dần
Tổng chi phí tính toán của Tìm kiếm sâu dần (Iterative Deepening - ID) có thể được biểu diễn như sau: Total = Σ_{i=1}^{D} N_i
trong đó N_i là số nút tìm kiếm ở độ sâu i và D là độ sâu tìm kiếm cuối cùng.
Trong tìm kiếm Alpha-Beta, N_i ≈ O(b^(i/2)) (với sắp xếp tối ưu).
Tổng chi phí tính toán của tìm kiếm sâu dần: Total ≈ Σ_{i=1}^{D} k × b^(i/2) = k × (b^(D/2+1) - b^(1/2)) / (b^(1/2) - 1)
So với chi phí tính toán của tìm kiếm sâu nhất trực tiếp (k × b^(D/2)), chi phí bổ sung của tìm kiếm sâu dần là: Ratio ≈ 1 / (1 - 1/b^(1/2))
Khi b=40, Ratio ≈ 1.19. Nghĩa là, tìm kiếm sâu dần chỉ tiêu tốn thêm khoảng 19% tính toán so với tìm kiếm sâu nhất trực tiếp, đồng thời mang lại nhiều lợi ích như kiểm soát thời gian, khởi động bảng chuyển vị và ổn định tìm kiếm.
Nguyên Lý Toán Học của SEE (Static Exchange Evaluation)
SEE đánh giá lãi hoặc lỗ ròng của một chuỗi trao đổi ăn quân. Phương pháp đánh giá của nó như sau:
Cho một nước ăn quân (quân A tại vị trí P1 ăn quân B tại vị trí P2), SEE tính toán lãi hoặc lỗ ròng của chuỗi trao đổi tại vị trí P2:
- Ghi lại giá trị quân V_B tại vị trí P2
- Giả định bên tấn công sử dụng quân A để ăn quân B, tạo ra lãi ròng gain = V_B (tạm thời)
- Bên phòng thủ ăn lại quân tấn công tại P2 bằng quân có giá trị thấp nhất có thể hợp lệ di chuyển đến P2
- Bên tấn công ăn lại quân phòng thủ tại P2 bằng quân có giá trị thấp nhất
- Lặp lại cho đến khi một bên không thể tiếp tục
- Tổng lãi ròng là tích lũy của tất cả các bước
Giả định của SEE: Cả hai bên thực hiện ăn quân theo thứ tự từ giá trị thấp nhất đến giá trị cao nhất. Giả định này đúng trong hầu hết các trường hợp nhưng có thể không đúng trong các đòn tấn công hy sinh.
Siêu Dữ Liệu Tài Liệu
Tiêu đề Báo cáo: Báo cáo Nghiên cứu về Lịch sử Chơi Cờ Tướng Trên Máy tính Phiên bản: V1.0 Ngày: Tháng 7 năm 2026 Tác giả: Cộng đồng Hợp tác Viết Bảo trì và Cập nhật: Sẽ được cập nhật liên tục Giấy phép: Tài liệu Công cộng (phân phối tự do)
Tập IX: Đào Sâu Lịch Sử Cộng Đồng
Chương 1: Chân Dung các Nhà Phát Triển Engine
1.1 Chen Chaoying (陈朝营): Từ Nhà Phát Triển Cá Nhân đến Người Dẫn Đầu Engine Thương Mại
Chen Chaoying là một trong những nhân vật quan trọng nhất trong lịch sử engine Cờ Tướng. Các engine của ông là Cyclone (Xiangqi Xuanfeng / 象棋旋风) và Intella (Yitian Xiangqi / 倚天象棋) đại diện cho trình độ cao nhất của engine Cờ Tướng từ năm 2005 đến 2010.
Chen Chaoying không có nền tảng khoa học máy tính chính quy. Được thúc đẩy bởi niềm đam mê lập trình và Cờ Tướng, ông bắt đầu học công nghệ phát triển engine từ đầu. Quá trình tích lũy kỹ thuật của ông bao gồm:
- Nghiên cứu mã nguồn mở của ElephantEye để hiểu kiến trúc cơ bản của engine Cờ Tướng
- Học các công nghệ tiên tiến từ engine cờ quốc tế (đặc biệt là Crafty và Fruit)
- Trao đổi ý tưởng với các thành viên cộng đồng trên Diễn đàn Qizhong (棋中论坛), nhận phản hồi và lời khuyên kỹ thuật
- Kiểm thử hiệu suất engine thông qua các cuộc thi, liên tục tối ưu hóa và cải tiến
Nhật ký nhà phát triển của Chen Chaoying (được đăng trên Diễn đàn Qizhong) đã ghi lại hành trình tâm lý và suy nghĩ kỹ thuật của ông trong quá trình phát triển engine. Những cuốn nhật ký này là tài liệu lịch sử quý giá cho sự phát triển engine Cờ Tướng.
Triết lý kỹ thuật của Chen Chaoying:
- Tìm kiếm là vua: Ông tin rằng cốt lõi sức mạnh engine nằm ở hiệu suất tìm kiếm, hàm đánh giá chỉ là thứ yếu
- Kỹ thuật là trên hết: Ông nhấn mạnh hiệu quả mã và tối ưu hóa hiệu suất, tập trung vào hiệu suất biên dịch và thời gian chạy
- Hướng đến người dùng: Ông coi trọng tính khả dụng và trải nghiệm người dùng của engine, khiến Cyclone trở thành lựa chọn lý tưởng cho hầu hết người dùng
1.2 Huang Chen (黄晨): Đóng Góp Kỹ Thuật của “Cha đẻ Mã nguồn Mở”
Những đóng góp của Huang Chen cho giao thức UCCI đã được thảo luận chi tiết trong các chương trước. Ở đây chúng tôi bổ sung một số khía cạnh về tính cách kỹ thuật của ông:
Triết lý kỹ thuật của Huang Chen:
- Chia sẻ mở: Ông kiên quyết phát hành ElephantEye dưới giấy phép LGPL, mặc dù điều đó có nghĩa là engine của ông không bao giờ có thể bắt kịp các engine thương mại về sức mạnh chơi
- Giáo dục là trên hết: Tài liệu kỹ thuật ông viết nhằm mục đích giảng dạy, giúp người mới bắt đầu hiểu và làm chủ công nghệ phát triển engine
- Thúc đẩy tiêu chuẩn hóa: Giao thức UCCI và định dạng XQF mà ông thiết kế đã thúc đẩy tiêu chuẩn hóa hệ sinh thái engine Cờ Tướng
Trang web xqbase.com của Huang Chen không chỉ phát hành ElephantEye mà còn biên soạn nhiều tài nguyên lập trình Cờ Tướng. Nội dung trang web bao gồm:
- Cài đặt chi tiết về biểu diễn thế cờ
- Tối ưu hóa thuật toán sinh nước đi
- Khung cài đặt cây tìm kiếm
- Ý tưởng thiết kế hàm đánh giá
- Đặc tả hoàn chỉnh của giao thức UCCI
- Câu hỏi thường gặp về lập trình Cờ Tướng
Việc duy trì xqbase.com kéo dài hơn một thập kỷ, trong thời gian đó Huang Chen liên tục cập nhật và bổ sung nội dung. Ngay cả sau khi sức mạnh chơi của ElephantEye bị vượt qua bởi các engine thương mại, ông vẫn kiên trì duy trì trang web và mã nguồn.
Huang Chen cũng phát triển một loạt công cụ:
- ElephantBoard (Xiangqi Wizard / 象棋巫师): GUI Cờ Tướng giàu tính năng
- XQFTOOLS: công cụ chuyển đổi giữa định dạng XQF và PGN
- Trình gỡ lỗi UCCI: công cụ giúp nhà phát triển kiểm thử cài đặt giao thức UCCI
Những công cụ này đã hình thành cơ sở hạ tầng cho phát triển engine Cờ Tướng, hạ thấp rào cản gia nhập cho người khác.
1.3 Jiang Zhimin (蒋志敏) và Zhang Min (张闽): Câu Chuyện Kỹ Thuật của Bộ Đôi “Mingshou”
Xiangqi Mingshou (象棋名手) của Jiang Zhimin và Zhang Min đã tạo nên một lịch sử vẻ vang trong lĩnh vực engine Cờ Tướng thương mại. Đặc điểm của bộ đôi này:
Jiang Zhimin chịu trách nhiệm chính về thuật toán tìm kiếm và logic engine cốt lõi. Ông có chuyên môn sâu sắc trong tối ưu hóa tìm kiếm và hiệu suất tìm kiếm PVS của Mingshou dẫn đầu trong số các engine cùng thời.
Zhang Min chịu trách nhiệm chính về hàm đánh giá và hiểu biết thế trận. Ông có hiểu biết sâu sắc về nguyên lý Cờ Tướng và hàm đánh giá của Mingshou được coi là đỉnh cao của kỷ nguyên đánh giá thủ công.
Sự phân công lao động và hợp tác giữa hai người là chìa khóa thành công của Mingshou: một người tập trung vào “cách tìm kiếm” (thuật toán tìm kiếm) và người kia tập trung vào “cách đánh giá” (hàm đánh giá). Sự phân công lao động chuyên biệt này cực kỳ hiếm trong cộng đồng engine Cờ Tướng vốn bị thống trị bởi các nhà phát triển cá nhân.
Tên gọi Mingshou cũng có một câu chuyện thú vị: các ký tự “名手” (Mingshou) đồng thời truyền tải ý nghĩa “kỳ thủ nổi tiếng” và hàm ý tầm nhìn công ty “danh sư xuất cao đồ” (engine giúp người chơi nâng cao trình độ).
Sự chú trọng của Mingshou vào cộng đồng giáo viên Cờ Tướng cũng là một yếu tố thành công. Nhóm Mingshou đã hợp tác với nhiều trường dạy cờ và tổ chức đào tạo, biến Mingshou trở thành công cụ tiêu chuẩn cho giảng dạy cờ.
1.4 Li Guolai (李国来) và GGzero: Người Tiên Phong trong Học Tăng Cường
Jiajia Xiangqi (佳佳象棋) của Li Guolai ban đầu sử dụng kiến trúc Alpha-Beta truyền thống. Tuy nhiên, ông đã nhận ra một cách sắc sảo ý nghĩa cách mạng của AlphaZero đối với AI cờ.
Dự án GGzero là sự khám phá của Li Guolai theo con đường học tăng cường (reinforcement learning). Những thách thức chính mà dự án này phải đối mặt:
- Tài nguyên tính toán không đủ: Học tăng cường sâu yêu cầu tài nguyên tính toán GPU lớn, rất hạn chế đối với một nhà phát triển cá nhân
- Phương pháp kỹ thuật chưa trưởng thành: Vào thời điểm đó, nghiên cứu học thuật về học tăng cường cho Cờ Tướng đang ở giai đoạn rất sơ khai
- Khoảng cách với Alpha-Beta: Sức mạnh chơi của GGzero không bao giờ đạt đến trình độ của các engine Alpha-Beta truyền thống
Tuy nhiên, sự khám phá của GGzero đã tích lũy kinh nghiệm quan trọng cho sự phát triển tiếp theo của engine Cờ Tướng. Nó đã chứng minh rằng:
- MCTS + mạng nơ-ron có thể áp dụng cho Cờ Tướng
- Huấn luyện tự đấu có thể tạo ra dữ liệu đánh giá thế cờ hữu ích
- Con đường kỹ thuật của học tăng cường cho Cờ Tướng yêu cầu nhiều hợp tác cộng đồng hơn
1.5 Daniel Tan: Nhà Phát Triển Liên Ngành Thế Hệ Mới
Daniel Tan đại diện cho một thế hệ nhà phát triển engine Cờ Tướng mới. Nền tảng của anh phản ánh xu hướng đa dạng hóa giữa các nhà phát triển engine Cờ Tướng:
- Nền tảng học thuật: Daniel Tan có kinh nghiệm nghiên cứu trong khoa học máy tính
- Tầm nhìn liên ngành: Nghiên cứu của anh bao gồm thiết kế NNUE, tối ưu hóa tập dữ liệu huấn luyện, cải tiến thuật toán tìm kiếm, v.v.
- Hợp tác quốc tế: Anh đồng tác giả một bài báo học thuật về tập dữ liệu huấn luyện NNUE với Neftali Watkinson Medina
Engine Orange của Daniel Tan là một ví dụ đại diện cho engine Cờ Tướng NNUE độc lập. Không giống như Pikafish dựa trên mã nguồn Stockfish, Orange là một engine độc lập được cài đặt từ đầu. Mặc dù khó khăn, phương pháp phát triển “từ đầu” này giúp đào sâu hiểu biết về các chi tiết kỹ thuật NNUE.