國際象棋/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. 實施將殺