四子棋是已解決的遊戲:怎麼贏,以及為什麼先手有優勢

如果你曾經覺得四子棋先下的人幾乎穩贏,那不是錯覺:兩位研究者在 1988 年證明了這一點。這個遊戲已經「被解決」,也就是說,只要雙方都不犯錯,就知道誰會贏。這裡會告訴你這代表什麼、誰證明了它、哪一步開局真正重要,以及身為會犯錯的人類,你能怎麼做來多贏幾局。

更新日期:

遊戲「已被解決」是什麼意思

當雙方從起始局面開始都下得完美時,結果已知,這個遊戲就算被解決了。通常分成三個等級。「超弱」解法只知道誰贏或是否平手,但不知道策略。「弱」解法則還知道一個從開局就保證那個結果的策略。「強」解法則知道從任何可能的局面出發的最佳結果。

對於經典的 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 獨立確認。