国际象棋/KQK 终局分析
本书是对 KQK 终局的精确分析,其中一方拥有国王和皇后,而另一方只拥有国王。使用计算机生成一个名为棋局库的数据库相对容易,该数据库包含所有可能的棋局以及每个棋局的将死步数。尽管这个棋局库提供了 KQK 终局的完整解决方案,但它只是一种计算机可以使用的格式。本书以人类可以理解的格式展示了强制将死的最佳方法。
在正常的游戏中,无需遵循最佳算法。像国际象棋维基教科书中那样简单得多的算法只需要比最佳算法多几步就能将死,但这很容易在50 步规则的限制内完成。
在所有给定的棋局中,按照惯例,强的一方是白方。将死的步数是指白方所需的步数,包括将死的一步。例如,在给定的示例棋局中,“白方下一步将死”意味着白方的第五步是将死的一步,例如 1.Kb5 Kc7 2.Qe6 Kd8 3.Qf7 Kc8 4.Kc6 Kd8 5.Qd7#。如果是黑方走棋,“黑方下一步将死”意味着白方的第五步(编号为 6)是将死的一步,例如 1... Kc6 2.Qd3 Kb7 3.Qd7+ Kb8 4.Kb5 Ka8 5.Kb6 Kb8 6.Qd8#。结果是双方最佳走棋的结果。如果黑方走棋不佳,他可能会更快被将死,而如果白方走棋不佳,将死可能会更慢。
KQK 终局共有 23,048 个和局棋局。和局棋局只包括黑方陷入僵局或白方皇后被吃的情况。
共有四种僵局棋局配置,如图表所示。如果黑方国王在角落,皇后可以像和局棋局 A 中那样覆盖三个逃跑的方格。白方国王可以位于剩下的 59 个方格中的任何一个,所以考虑到旋转和镜像,这种类型的棋局共有 59 x 8 = 472 个。如果白方国王覆盖了两个逃跑的方格(和局棋局 B),皇后只需要覆盖一个方格。如果白方国王在 b6 上,皇后必须沿对角线进攻,因此有五个可能的方格,而如果白方国王在 a6 上,它也可以沿直线进攻,因此有十个方格。考虑到旋转和镜像,这种类型的棋局共有 15 x 8 = 120 个。
黑方国王在棋盘边上时,还有两种类型的僵局。在和局棋局 C 中,皇后覆盖了五个逃跑的方格中的四个,而白方国王覆盖了第五个方格,它可以从五个可能的方格中做到这一点。同样的情况也适用于向右移动 1、2、3 或 4 列的位置。当向右移动 5 列时,白方国王只有两个位置。因此,考虑到旋转和镜像,这种类型的棋局共有 27 x 8 = 216 个。和局棋局 D 显示了第四种类型的僵局。皇后再次覆盖了五个逃跑的方格中的四个,但第五个方格现在位于黑方国王旁边,而不是斜对面。白方国王可以位于两个方格,并且该位置可以向右移动 1、2 或 3 个位置。因此,考虑到旋转和镜像,这种类型的棋局共有 8 x 8 = 64 个。
接下来,我们需要计算皇后被吃的情况下的棋局数量。黑方国王有 64 个可能的位置。白方皇后必须位于黑方国王的旁边,所以如果黑方国王在角落,有三种可能性,如果它在边上,有五种可能性,如果它在中间,有八种可能性。白方国王不能位于黑方国王的旁边,因为那将构成一个非法的棋局,它也不能位于皇后的旁边,因为它将保护皇后不被吃。下表显示了对于每种白方皇后和黑方国王配置,白方国王的可能性数量。
黑方国王/白方皇后 | 棋局数量 |
---|---|
a8/b8, b8/a8 | 464 x 2 |
b8/a7 | 448 |
a8/b7, b7/a8 | 220 x 2 |
b8/b7, c8/c7, d8/d7, b7/b8, c7/c8, d7/d8 | 440 x 6 |
b8/c7, c8/b7, c8/d7, d8/c7, d8/e7, b7/c8, c7/b8, c7/d8, d7/c8, d7/e8 | 424 x 10 |
b8/c8, c8/b8, c8/d8, d8/c8, d8/e8 | 448 x 5 |
b7/c7, c7/b7, c7/d7, c7/c6, d7/c7, d7/e7, d7/d6, c6/c7, c6/d6, d6/d7, d6/c6, d6/e6, d6/d5, d5/d6, d5/e5 | 416 x 15 |
b7/c6, c6/b7, c6/d5, d5/c6, d5/e4 | 200 x 5 |
c7/b6, c7/d6, d7/c6, d7/e6, c6/d7, d6/c7, d6/e7, d6/c5, d6/e5, d5/e6 | 400 x 10 |
总计 | 22176 |
皇后被吃的 22,176 个棋局加上 872 个僵局棋局,总共为 23,048 个和局棋局。
总共有 364 个将死棋局,在棋局库中显示为“黑方走棋输在 0 步”。
所有将死棋局都将黑方国王放在棋盘边上或角落。黑方国王在棋盘中间时,有两种情况:皇后位于黑方国王旁边,皇后至少距离两个方格。如果皇后位于黑方国王的旁边,它必须受到白方国王的保护。因此,白方国王不会覆盖皇后没有覆盖的任何方格,而皇后无法覆盖所有方格。如果皇后至少距离两个方格,它只能覆盖四个方格,除了给出将死之外,白方国王只能覆盖三个方格。
将死棋局分为三大类。在 A 型棋局中,国王处于对峙状态,皇后从侧面给出将死。皇后需要至少距离黑方国王两个方格,所以有六个棋局将国王放在 a8 上,每个棋局将国王放在 b8、c8 或 d8 上。当黑方国王在 a8 上时,白方国王可以位于 b6 以及 a6 上,所以总共还有六个棋局,因此包括旋转和镜像,总共为 27 x 8 = 216 个。
在 B 型棋局中,皇后站在黑方国王旁边,受到白方国王的保护。有 2 个棋局将国王放在 a8 上,每个棋局将国王放在 b8、c8 或 d8 上有 3 个。当国王在 a8 上时,皇后也可以在 b7 上,所以总共有 3 个棋局,总共为 14 个。由于其中一个棋局的所有三个棋子都在对角线上,因此旋转和镜像可以得到 (1 x 4) + (13 x 8) = 108 个棋局。
在 C 型棋局中,白方国王位于黑方国王相邻的直线上,皇后从侧面给出将死,距离两个方格。通过将国王移动到侧面而未被覆盖的方格由皇后覆盖。有一个棋局将黑方国王放在 b8 上,两个棋局将黑方国王放在 c8 和 d8 上,总共为 5 个,或者包括旋转和镜像为 40 个。
这使得总共为 216 + 108 + 40 = 364 个棋局,它们都是将死棋局。
C 型棋局只对其本身和前一步的棋局产生评估差异。例如,从图表棋局后退一步,皇后一定是最后移动的,它只能从以下方格中的一个移动而来:a4、b5、e1、e2、e3、e4、e5、e7、f7、g6 或 h5,因为它不可能给出将死。如果它在 e7 或 f7 上,白方可以选择在 c7 上将死,而不是在 e8 上。
如果白方皇后位于其他方格中,而黑方从 b8 移动,白方就错过了(A 型)将死。如果黑方从 d7 或 d8 中的任何一个移动,他本来可以移动到 e7、d7 或 d8 中的任何一个,而不是 c8,从而避免将死一段时间。对于移动了一列或向左移动了一、二或三列的位置,这些分析是相似的,它们都是 C 型棋局。因此,除非白方有直接将死,否则可以安全地忽略 C 型棋局。
共有 2,448 种白方一步将杀的棋局。黑方国王位于角上的情况下,共有 744 种棋局。如果将棋局旋转和反射,使黑方国王位于 a8,那么白方国王将位于 a6(376 种棋局)、b6(320 种棋局)或 c6(48 种棋局)。黑方国王位于棋盘边缘的情况下,共有 968 种国王对峙的棋局,以及 736 种白方国王位于黑方国王旁边一格的棋局。
只有一种棋局(包括旋转和反射,共有 8 种)是白方走棋 10 步将杀。由于黑方国王可能来自 8 个不同的方格,因此共有 8 种棋局在黑方走棋的情况下 10 步必输。由于其中 2 种棋局的所有棋子都位于同一个长对角线上,因此包括旋转和反射在内,共有 56 种棋局。
从图中可以看出,除了 1.Qd5+?? 和 1.Qc6+??,任何棋步都可行。
下一步是提供一个可以用于所有棋局的通用算法。我还没有完成这项分析。我正在努力从给定的棋局中生成一个可能的棋步列表(是的,它看起来很简单,但实际上有数千种棋局)。我需要验证所有符合模式的棋步是否都是最佳的。
算法的总体思路是
1. 将黑方国王限制在以下位置
a. 棋盘边缘的行或列
b. 棋盘边缘的两行或两列
c. 与白方国王位于同一半棋盘
d. 与白方国王位于同一四分之一棋盘
2. 将白方国王靠近黑方国王
3. 将黑方国王逼到棋盘边缘
4. 实施将杀