佐布里斯特哈希

也称为: 佐布里斯特键值法

一种为国际象棋局面的完整状态生成可快速更新的数字指纹的方法。

此页面暂时以英语显示。完整本地化将在后续阶段加入。

解释

佐布里斯特哈希会为构成局面的各种特征分配伪随机数。通常,每一种棋子类型、颜色和格子的组合都有一个数,此外还会为轮到哪方走棋、权利,以及与吃过路兵这种特殊兵吃法有关的状态分配数值。伪随机表示这些值看似随机,但可以用可重复的方式生成。

局面键通过 XOR,也就是异或,组合所有当前生效的数值。异或是一种二进制运算,作用类似开关:同一个值应用两次会撤销自身效果。当一枚棋子移动时,程序可以从键中移除它在原格的数值,再加入它在新格的数值,无须从头重建整个键。吃子、升变和行棋方变化也可以用同样方式更新。

这种指纹让能够迅速识别某个局面此前是否出现过。引擎可以在不同走法序列到达同一状态时复用已存分析、检测重复局面,并组织缓存,也就是用于快速保存先前结果的存储。正确比较不仅要包含棋子位置,还必须包含会改变合法着法或适用规则的信息。

佐布里斯特键并不保证绝对唯一。两个不同局面可能产生同一个数,这种现象称为碰撞。足够长的键会使风险很低,但程序在设计存储和验证机制时仍须考虑这种可能性。在等测试中,增量更新的键也能帮助发现错误,例如走一步再撤销后未能恢复原始值。

常见混淆

相同棋子与相同局面

两个视觉上完全相同的棋盘,如果轮到走棋的一方、王车易位权利或有效的吃过路兵可能性不同,仍可能代表不同状态。

哈希与加密

这里的目标是快速识别局面,而不是隐藏信息或保护秘密数据。

来源

  1. 1.Zobrist Hashing, Chess Programming Wiki

相关术语

© 2026 MindZug