中国象棋初、中局阶段,每方步法约有40多个,其中好多是无用着法。如果每一个步法都进行指定深度的搜索,会使得搜索效率非常低下。
空着裁剪示例:
待评估点为b0,一个正常的搜索序列像这样:[r1,b1,r2,b2,r3,b3](序列1)
现在让r1不走(空一步),让黑棋继续走,形成了[,b1,r2,b2] (序列2)
假设序列2中每一步都是最佳应对着法。
【1】如果b0是步坏棋,那么黑棋并不能借红棋少走一步之机而扩大自己的分值。
【2】如果b0是步好棋,那么经过序列2,黑棋必能够扩大自己分值。
空步裁剪除走一步外,一般还要再少搜索一个回合(深度共减少3层)。虽然深度减小了,但准确度足够高!因此可以迅速判断出无用着法,大大节省了时间。
残局中验证空步裁剪
在残局阶段,用来防守的棋子往往都是站好位置就行,被迫移动会导彼此失去掩护。前面说的少走一步,在残局阶段反而可能成为有利条件。此时就需要对空步裁剪进行验证。
[r1,b1,r2,b2] (序列3)
走完序列2后如果情况【1】成立,接着再走序列3,如果黑棋分值反而比序列2高,则验证失败。需要进行完整深度搜索。
哪些情况下需要使用带验证的空着裁剪?
(1) r方进攻子力达到3个,就使用不带检验的空着裁剪;
(2) r方进攻子力小于3个,则使用带检验的空着裁剪;
(3) r方只有仕(士)相(象)等守子,则禁用空着裁剪。