zobrist hashing

佐布里斯特散列(也稱為,作為的佐布里斯特鍵或佐布里斯特簽名 )是一個哈希函式施工中使用的電腦程式,發揮抽象的棋盤遊戲,如西洋棋圍棋,實施換位表,這是一種特殊類型的哈希表採集板位置和使用,以避免多於一次分析的相同位置。它的發明者,阿爾伯特林賽佐布里斯特佐布里斯特散列命名為它也被用作承認置換式合金配置模擬晶體材料的方法。

計算哈希值,使用的哈希值,更新的哈希值,更廣泛的使用,

計算哈希值

佐布里斯特哈希開始隨機生成 一個板遊戲,即每一個可能的元素位串為一個片和一個位置(在象棋比賽中的每個組合,即是12片×64板位置,或14,如果一個國王,可能仍然城堡一個棋子,可以捕捉順便分別對待)。現在任何董事會的配置可以分成獨立的片/位置組件,這些組件映射到前面生成的隨機位串。最終佐布里斯特哈希計算結合那些使用按位異或位串。例如偽代碼盤棋:
恆定的指標  white_pawn:= 1  white_rook:= 2  #等。  black_king:= 12函式init_zobrist():  #填補表的隨機號碼/位串  表:=一個2維數組的大小為64×12  對於i從1到64:#循環在董事會,表示為一個線性陣列 對於j從1到12:#遍歷件表[I] [J] = random_bitstring()函式hash(板):  H:= 0  i從1到64:#遍歷倉板 如果板[I] =空:J:=一塊板[I],在不斷的指數,列出以上H:= H XOR表[I] [J]。 返回ħ

使用的哈希值

如果位串足夠長的時間,不同的電路板位置幾乎肯定會散列成不同的值,但是長的位串需要更多的計算機資源比例來操縱。許多遊戲引擎存儲的哈希值換位表中,省略的位置信息本身完全能夠減少記憶體使用,並假設不會發生哈希衝突,或將極大地影響表的結果,如果他們這樣做。
佐布里斯特哈希是第一個已知的制表散列實例。其結果是一個明智的獨立哈希家庭。特別是,它是強普遍
作為一個例子,在西洋棋中,每64平方可以在任何時候是空的,或者包含一個6個棋子,這是黑色或白色。也就是說,可以在每平方米1 +6×2 = 13個可能的狀態在任何時間。因此,一個需要產生最多為13×64 = 832個隨機的位串。給定的位置,得到它的的佐布里斯特哈希找出哪件是哪個廣場,並結合相關的位串在一起。

更新的哈希值

上面的偽代碼確實,不是每次計算哈希值整板,板的哈希值可以簡單地更新,通過異或位串(s)的立場已經改變,新異或位串的位置。例如,如果一個棋子在棋盤廣場是由從另一個廣場取代,由此產生的位置將產生的異或現有的哈希位串:
'棋子在這個廣場,(異或典當在這個廣場) “車在這個廣場'(異或的車在這個廣場) “車源廣場'(異或車源廣場) “沒有源廣場(異或沒有在源廣場)。
這使得佐布里斯特散列非常有效的遍歷遊戲樹
在計算機去,這種技術也被用來檢測superko。

更廣泛的使用

相同的方法已被用來識別在Monte Carlo模擬中的置換式合金配置,以便對已經計算出的狀態,以防止浪費的計算工作量。

相關詞條

熱門詞條

聯絡我們