28得票14回答
当编写计算机下棋程序时,我该如何建模棋盘?

你会使用哪些数据结构来代表计算机国际象棋程序中的棋盘?

24得票12回答
国际象棋优化

好的,我已经在开发我的国际象棋程序一段时间了,但现在遇到了瓶颈。我已经完成了所有标准优化(negascout、迭代加深、杀手着法、历史启发式、静态搜索、兵的位置评估和一些搜索扩展),但是现在已经没有想法了! 我很快就要把它变成多线程,这应该可以提高性能,但除此之外,你们有没有其他巧妙的技巧?...

23得票4回答
如何寻找魔术位板?

const int BitTable[64] = { 63, 30, 3, 32, 25, 41, 22, 33, 15, 50, 42, 13, 11, 53, 19, 34, 61, 29, 2, 51, 21, 43, 45, 10, 18, 47, 1, 54, 9, 57, ...

20得票1回答
Alpha-beta剪枝和置换表,迭代加深

我正在尝试实现带有置换表的alpha-beta极小化极大剪枝算法。我使用此伪代码作为参考: http://people.csail.mit.edu/plaat/mtdf.html#abmemfunction AlphaBetaWithMemory(n : node_type; alpha ,...

18得票5回答
12个占主导地位的骑士难题(回溯算法)

我已经搜寻了数小时,但仍未找到一个完全可行的解决方案。所以我遵循与象棋主教相似的问题。 我需要在棋盘上放置12个骑士,使得棋盘上所有空闲的方格都被至少一个棋子攻击。 最终结果应该如下所示: 问题是我的程序仅尝试不同的两个最后棋子的组合,然后以某种方式崩溃。已编辑 迄今为止,我所做的...

16得票2回答
如何将Stockfish集成到Android应用程序中?

我正在尝试将Stockfish(或任何UCI兼容引擎)集成到我的Android应用程序中。 我从这里下载了Stockfish Android zip文件: 下载Stockfish Engine。 在zip文件的Android目录下有两个文件: stockfish-8-arm64-v8a...

15得票8回答
计算机象棋树搜索的现状是什么?

我对只能提高少数百分比速度的微小优化不感兴趣。 我对alpha-beta搜索中最重要的启发式和评估函数的最重要组成部分感兴趣。 我特别关注具有最高(改进/代码大小)比率的算法。(而不是改进/复杂性)。 谢谢。 附言 杀手着法启发式是一个完美的例子——易于实现且功能强大。 启发式数据库太过复杂。

15得票4回答
15得票1回答
在极小化极大树的特定深度中计算移动得分

我用C语言实现了一个国际象棋游戏,使用以下结构体: move - 表示在字符棋盘[8][8](国际象棋棋盘)上从(a,b)移动到(c,d)的动作 moves - 是一系列带有头和尾的移动的链表。 变量: playing_color为'W'或'B'。 minimax_depth是之前设置的极小...

14得票4回答
编程一个国际象棋人工智能

我想尝试编写一个国际象棋AI。有没有.NET框架(或者甚至是用Lua脚本编写的象棋程序)可以让我编写和测试一个国际象棋AI,而无需担心实际制作国际象棋游戏?