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

    對於以下棋局:命名

相關文章
相關標籤/搜索