Search in Co-Wiki

Zobrist hashing

game-theory 478 tokens 4 outbound links

Zobrist hashing

constant indices white_pawn := 1 white_rook := 2 # etc. black_king := 12

function init_zobrist(): # fill a table of random numbers/bitstrings table := a 2-d array of size 64×12 for i from 1 to 64: # loop over the board, represented as a linear array for j from 1 to 12: # loop over the pieces table[i][j] := random_bitstring() table.black_to_move = random_bitstring()

function hash(board): h := 0 if is_black_turn(board): h := h XOR table.black_to_move for i from 1 to 64: # loop over the board positions if board[i] ≠ empty: j := the piece at board[i], as listed in the constant indices, above h := h XOR table[i][j] return h

Use of the hash value If the bitstrings are long enough, different board positions will almost certainly hash to different values; however longer bitstrings require proportionally more computer resources to manipulate. The most commonly used bitstring (key) length is 64 bits.

See also * [[alpha–beta-pruning]]

References <references/>