zobrist hashing


Zobrist 哈希是一種專門針對棋類游戲而提出來的編碼方式,以其發明者 Albert L.Zobrist 的名字命名。Zobrist 哈希通過一種特殊的置換表,也就是對棋盤上每一位置的各個可能狀態賦予一個編碼索引值,來實現在極低沖突率的前提下在一個整型數據上對棋盤進行編碼。其編碼步驟描述如下:

1) 將棋盤分為最小單位(如果將9X9圍棋盤分為81個交叉點),求出每個單位上不同狀態數(如圍棋盤上的 1 個交叉點有 3 個狀態)。

2) 為每個單位上的每種狀態生成一個一定范圍內(如64位整數)隨機數。

3) 對於特定的棋局,將每個單位上的狀態對應的隨機數作異或運算,所得即為哈希值。

 

用 Zobrist 哈希為棋局狀態編碼至少具備兩個優點:

1) 當隨機數的范圍足夠大時,不同的棋局產生哈希沖突的概率非常小,在實際應用中通常可以忽略。

2) 在棋局進行過程中,不必每次重新開始計算棋局的哈希值,只需計算棋局狀態發生改變的部分。

 

以下以一個 的圍棋棋盤為例對 Zobrist 哈希作進一步說明:

  1. 2X2的圍棋棋盤一共有 4 個單位,每個單位有 3 種狀態(黑子,白子,空點),則為每種狀態生成 1 個 8 位的隨機數:

    對於如下棋局:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM