我一直在阅读有关Zobrist Hashing的信息,该方式可在Chess,Go,TicTacToe等游戏中有效编码棋盘游戏状态。但是,我对如何获取Zobrist哈希中包含的信息感到非常困惑。
例如,我正在构建国际象棋搜索树。如果我在搜索树中的某个节点上,并且仅有的状态是表示为Zobrist哈希的游戏状态,那么我如何知道合法的举动,组成的位置或玩家是否赢得了比赛?我是否也不必存储整个未处理的董事会状态以检查所有合法举动的条件?
但是,如果除了Zobrist哈希值之外我还必须存储未哈希的板状态,那么Zobrist哈希值实际上是做什么的?如果除了未哈希的板状态之外,它并没有在搜索树中节省内存,并且如果我想与哈希表进行比较,则可以随时在未哈希的板状态下调用哈希函数,而无需必须在每个节点上携带Zobrist Hash。这似乎是一个很酷的主意,但我觉得我缺少一些重要的东西。