我已经阅读了大量与此问题相关的网络信息,但仍未找到明确的答案。
我的目标是建立一个国际象棋棋局数据库,能够识别移位(通常是哪些棋子在哪些位置)。
编辑:它还应该能够识别相似(但不完全相同)的棋局。
这是一个20年前的讨论(当时空间是个问题):https://groups.google.com/forum/#!topic/rec.games.chess.computer/wVyS3tftZAA
其中一位参与者谈到了如何将棋子编码到一个方形矩阵中,使用4 x 64位加上额外信息(如王车易位、吃兵等)的几个比特: 有六种棋子(步兵、车、马、象、后、王)加上一个空格,需要3比特(2^3),再加上1比特来表示棋子的颜色。
总共会有4个64位数字,再加上一些额外信息。
问题:是否有其他更有效的存储国际象棋棋局的方法?
我应该提到这个问题是以数据库为中心,而不是以游戏为中心的(也就是说,我的唯一兴趣是高效地存储和检索,而不是创建任何人工智能或生成任何棋招)。
谢谢, Adrian