象棋游戏中的电脑方懂得游戏规则,并能算出后面好几步的棋子,棋力也不差,一不小心经常掉入陷阱,不知怎么设计的?难道给它输入几本棋谱吗?
參考答案:总的来说,对弈程序是个系统工程,它是以下四个系统的有机结合:(1) 棋盘结构,(2) 局面评价,(3) 搜索技术,(4) 其他。以ElephantEye为例,这四个部分在程序中的比例各占25%,也就是说,每个方面都很重要。那么这四个部分应该以什么样的方式逐步建立呢?另一个公开源代码的程序VSCCP(Very Simple Chinese Chess Program)给出了一个方向,这是本很好的对弈程序设计的入门教材。尽管VSCCP在棋力上还有很大的提升空间,但是它的结构体系是比较完整的,参考下面一组公式,找到有待提升的空间,只要稍作改进就能成为ElephantEye。
棋盘结构 = 局面表示 + 着法移动 + 着法生成 + 特殊局面判断
局面评价 = 知识 + 优化的局面表示
搜索技术 = 完全搜索 + 静态搜索 + 启发 + 裁剪 + 选择性延伸 + 置换表 + 残局库 + 并行技术
其他 = 开局库 + 时间控制 + 后台思考 + 引擎协议