遊戲「已被解決」是什麼意思
當雙方從起始局面開始都下得完美時,結果已知,這個遊戲就算被解決了。通常分成三個等級。「超弱」解法只知道誰贏或是否平手,但不知道策略。「弱」解法則還知道一個從開局就保證那個結果的策略。「強」解法則知道從任何可能的局面出發的最佳結果。
對於經典的 7 列 6 行棋盤上的四子棋,結果很明確:完美下法下,先手的玩家會贏。這不代表實際上一定會贏,因為要做到這一點,他每一回合都要下對那一步,而人與人之間的對局充滿了失誤。
誰解決的、什麼時候
故事有兩位主角,他們在 1988 年 10 月各自獨立得出相同的結論。第一位是詹姆斯·道·艾倫,他在 1988 年 10 月 1 日於 rec.games.programmer 討論群組發文宣布了他的解法。十五天後的 10 月 16 日,荷蘭研究者維克多·阿利斯發表了他自己的解法,內容見於他在阿姆斯特丹自由大學的論文〈A Knowledge-based Approach of Connect-Four〉。
阿利斯的方法是「以知識為基礎」:他不檢查所有局面,而是制定策略規則,例如哪些格子值得控制、哪些威脅重要,再搭配搜尋來證明先手能強制獲勝。後來也有人用暴力法得到相同的結果,利用局面資料庫與強大的電腦;例如程式設計師約翰·特羅普建立了包含所有 8 子局面的資料庫,作為出發點。兩條路徑的結論一致。
開局的關鍵:中間那列
不是隨便哪一步都行。結果取決於先手第一步下在哪一列:
| 第一步 | 完美下法下的結果 |
|---|---|
| 中間那列(第 4 列) | 先手贏 |
| 中間旁邊的列(第 3 與第 5 列) | 平手 |
| 外側的列(1、2、6 與 7) | 後手贏 |
「先手贏」在實際上代表什麼
理論說先手會贏,如果對手下得好,也不保證你什麼:優勢是真的,但需要精準。即便如此,先手能給你兩樣具體的東西。第一是主動權:你先下,對手通常得回應你的威脅。第二是奇偶性,這是棋手之間廣為流傳的實用規則:因為棋盤有 6 行,是偶數,又是輪流下,所以奇數行(從下往上數的第 1、3、5 行)的格子往往會留給先手,偶數行的則留給後手。因此在奇數行的威脅,對先手通常更有價值。
為什麼中央這麼有價值
中間那列的棋子參與的可能連線,比任何其他列都多。從中央可以用許多不同的組合,連成橫向、縱向以及兩條斜線的四子;邊緣的棋子幾乎只能用在一兩個方向。所以強力的程式會從中央向外排序它們的走法,開局庫也是從第 4 列開始。
對你來說,實用的原則很簡單:沒有明顯更好的一步時,就選靠近中央的列。如果對手先佔了中央,也別慌:旁邊的列仍然非常好。
對人類多贏幾局的訣竅
- 如果你先手,就從中間那列開始。這是完美下法下唯一會贏的開局。
- 尋找雙重威脅:同時有兩條三連線,而且收尾的格子都能下。對手只能擋住一個。這是對人類最常見的獲勝方式。
- 想想「懸空」的威脅:一條三連線,它的最後一格還下不到,因為下面還缺一顆棋子。如果那一格剛好在對你依奇偶性有利的行,對手遲早得下在下面,把它讓給你。
- 放下棋子前,看看正上方會空出哪一格。如果你送給對手一個能讓他完成連線的格子,你就輸了。
- 在兩端都開放的三連線形成之前就擋住:那是必敗的局面。提前一步想。
- 在最後階段,重要的是誰先沒有安全的走法:好好保護你還能安全下的列。
- 如果你是後手,就爭取偶數行的格子,並從容地擋住每一個奇數行的威脅:這是你取得平手或讓對手犯錯的最佳路徑。
那麼電腦就不會輸嗎?
一個從頭開始下得完美、又先手的程式永遠不會輸,但這是關於遊戲理論解法的說法,不是對任何程式都成立。從起始局面解決整盤棋需要大量的運算,在瀏覽器中,每一步只有一秒半,是做不到的。
因此我們的四子棋的「無敵」等級,就如實說明它:是最強的等級。它使用帶有迭代加深的 alpha-beta 搜尋、記住已見過局面的表、從中央開始的列順序,以及一個非常短的開局庫。它會預先分析許多步,幾乎不放過失誤,但我們不保證它不可能被擊敗。如果你打敗了它,那是你真正贏了。
如何練習
進步的好方法,是在「困難」等級對電腦練習,再挑戰「無敵」,並輪流先手。輸了的時候,回顧那一局,找出雙重威脅是在哪一回合出現的:幾乎都能追溯到更早的一步平靜的棋。也建議試試變體,例如更大的棋盤或 PopOut 模式,它們逼你用不同的方式思考,也能訓練你對棋盤的觀察力。
常見問題
誰證明了四子棋已被解決?
詹姆斯·道·艾倫在 1988 年 10 月 1 日宣布,維克多·阿利斯則獨立地在 1988 年 10 月 16 日發表他的解法。之後也有暴力法的驗證。
完美下法下,四子棋誰會贏?
先手的玩家,前提是他的第一顆棋下在經典 7×6 棋盤中間那一列。如果他下在中間旁邊的列,理論上是平手;如果下在最邊上的四列之一,則後手會贏。
這代表先手一定會贏嗎?
不是。那是沒有人犯錯時的結果。實際上他每一回合都得持續下對,而人會失誤。先手是優勢,不是保證。
其他尺寸的棋盤也被解決了嗎?
很多都已經解決了,但結果會隨尺寸改變。例如約翰·特羅普回報 8×8 的棋盤是後手獲勝。本文只談 7 列 6 行的經典棋盤。
「無敵」等級永遠不會輸嗎?
我們不保證。它是我們提供的最強等級,每一步都有深度搜尋與大量運算,但在可用的時間內無法解決整盤棋。只提供經典的 7×6 棋盤。
四子棋有多少種局面?
7×6 的棋盤上計算出 4,531,985,219,092 種合法局面,這個數字在 2008 年由 Stefan Edelkamp 與 Peter Kissmann 獨立確認。