Zobrist hashing とは https://en.wikipedia.org/wiki/Zobrist_hashing チェスをするコンピュータを作るときにチェスの状態をハッシュするために Zobrist さんが作ったハッシュ方法らしいです。 できること 集合をハッシュすることで、集合の一致判定が O(1) 時間になります。(衝突することもあります。) 集合 A のハッシュから、A に 1 要素 追加 / 削除 したときのハッシュを O(1) 時間で計算できます。 集合 A のハッシュと集合 B のハッシュから、対称差(XOR) A△B のハッシュを O(1) 時間で計算できます。 やり方 集合の要素として出てくる値にランダムな整数を割り当てます。 集合のハッシュは、その集合の各要素に割り当てられた整数の総 XOR です。 例 1. 集合の要素として出てくる値 : a,b,c に