zobrist hashing

Zobrist 哈希是一种专门针对棋类游戏而提出来的编码方式,以其发明者 Albert L.Zobrist 的名字命名。Zobrist 哈希经过一种特殊的置换表,也就是对棋盘上每一位置的各个可能状态赋予一个编码索引值,来实如今极低冲突率的前提下在一个整型数据上对棋盘进行编码。其编码步骤描述以下:编码

1) 将棋盘分为最小单位(若是将9X9围棋盘分为81个交叉点),求出每一个单位上不一样状态数(如围棋盘上的 1 个交叉点有 3 个状态)。spa

2) 为每一个单位上的每种状态生成一个必定范围内(如64位整数)随机数。索引

3) 对于特定的棋局,将每一个单位上的状态对应的随机数做异或运算,所得即为哈希值。游戏

 

用 Zobrist 哈希为棋局状态编码至少具有两个优势:图片

1) 当随机数的范围足够大时,不一样的棋局产生哈希冲突的几率很是小,在实际应用中一般能够忽略。it

2) 在棋局进行过程当中,没必要每次从新开始计算棋局的哈希值,只需计算棋局状态发生改变的部分。class

 

如下以一个 的围棋棋盘为例对 Zobrist 哈希做进一步说明:随机数

  1. 2X2的围棋棋盘一共有 4 个单位,每一个单位有 3 种状态(黑子,白子,空点),则为每种状态生成 1 个 8 位的随机数:im

    对于以下棋局:命名

相关文章
相关标签/搜索