六子棋是和棋:首度發表的解答
morris 是三連棋類的家族。你先把棋子放到由線構成的棋盤上,再沿著線移動;自己的三顆棋子連成一條標記線就形成 三連,可以吃掉對手一顆棋子。把對手逼到不足三顆棋子,你就贏了。
最有名的是九子棋,它被解出已超過三十年:Ralph Gasser 在 1993 年將它強解,雙方最佳著法下是和棋,而 Gévay 與 Danner 在 2014 年算出了整個家族的擴充解。
六子棋是同一張棋盤去掉最外圈,它出現在每一份 morris 變體清單上,卻不在任何求解論文裡。我把它強解了:在全部 42,372,745 個可達局面上皆為和棋。
開啟最佳著法局面瀏覽器 → 你可以對著殘局庫走任何一條路線:每一著都依雙方最佳著法下的結果上色,綠色為勝、灰色為和棋、紅色為負。大小切換鈕可在每方四子、五子、六子之間切換。
這個遊戲
六子棋下在兩個同心正方形上,四個邊的中點以線相連:共 16 個點,沒有對角線。它就是九子棋棋盤拿掉最外層正方形後的樣子。
每位玩家有六顆棋子。先是擺子階段,雙方輪流把棋子放到空點上;十二顆全部放完後進入移動階段,棋子可滑到相鄰的空點。自己的三顆棋子連成一條標記線(任一正方形的邊)即形成三連;形成三連可吃掉一顆不在三連中的敵方棋子,除非對方所有棋子都在三連中。當你的棋子少於三顆,或輪到你走卻無子可動時,你就輸了。
我求解的是不可飛子的標準規則:只剩三顆棋子的一方仍然一次只能走一步。飛子(只剩三子的一方可跳到任何空點)會改變著法樹;我另外單獨求解,結果同樣是和棋,因此這個結論在兩種慣例下都成立。
結果
六子棋已被強解:殘局庫存有每一個可達局面的值,因此從任何地方都能走出最佳著法,而不只是開局。我的做法是從終局局面出發,在整個遊戲範圍內逆向推算。
開局是和棋,而白方的十六種首著擺子全都能守和。
| 項目 | 數值 |
|---|---|
| 可達局面數 | 42,372,745 |
| 勝/和棋/負(依行棋方) | 23,392,364 / 3,459,385 / 15,520,996 |
同一張棋盤在棋子數更少時同樣是和棋:
| 每方棋子數 | 可達局面數 | 開局 |
|---|---|---|
| 4 | 4,111,151 | 和棋 |
| 5 | 17,844,721 | 和棋 |
| 6 | 42,372,745 | 和棋 |
原創性的主張有其範圍:這是首度發表的解答,而非可證明為史上第一。六子棋既不見於學術著作(Gasser 1996;Gévay 與 Danner 2014),也不見於開源求解器 Malom 與 Sanmill,它們涵蓋九子、十二子、Lasker Morris 以及 Morabaraba,但沒有六子。因此我把殘局庫與求解器公開,讓人查證而非相信。
全部 4200 萬個局面都放得進記憶體,因此在筆電上約一分鐘就能完成求解,不需要外部儲存。三個彼此獨立的求解器對結果一致,四子與五子變體的結果也彼此相符,這正是如果存在更小的已解 morris 所能提供的交叉驗證。
值得注意的發現
沒有哪一種開局是敗著,但應手才是考驗。每一種首著擺子都能和棋,但它們對應手的考驗強度不同。下在邊中點,對手十五種應手全都和棋。下在角上,十五種應手中有八種會輸。在外圈角落擺子之後,勝負分界依循環:外圈其餘各點和棋,整個內圈皆負。
和棋是一條狹窄的通道。這盤棋從開始就是和棋,但和棋局面很稀少:4200 萬個之中只有 350 萬個,約 8%。其餘 92% 中已有一方處於勝勢或敗勢。
這個家族以對角線為分界。六子棋與九子棋、Lasker Morris 同為和棋。唯一先手勝的 Morabaraba,正是加入對角線三連的那個變體。
九子棋被解出了嗎?
是的,而且已經超過三十年。Ralph Gasser 強解了九子棋:雙方最佳著法下為和棋,他在 1993 年的 ETH 技術報告中公布,並於 1996 年在 Games of No Chance 中寫成 Solving Nine Men’s Morris。兩個年份都常被引用;1993 年是解出的時間,1996 年是論文發表的時間。
Gévay 與 Danner 其後在 2014 年算出整個家族的超強解與擴充解,而開源求解器 Malom 與 Sanmill 涵蓋九子、十二子與 Lasker Morris。
六子棋一直是缺口。補上之後,這個家族的現況如下:
| 變體 | 結果 | 最早解出 |
|---|---|---|
| 三子棋 | 先手勝 | 民間流傳 |
| 六子棋 | 和棋 | Liou,2026 |
| 九子棋 | 和棋 | Gasser,1993 |
| Lasker Morris | 和棋 | Stahlhacke,2003 |
| Morabaraba | 先手勝 | Gévay,2015 |
各項的結構化紀錄,含引用出處與複雜度數字,收錄在 solved-games。
結論
六子棋是和棋,而它的殘局庫小到可以整個放進記憶體並完整釋出,這也是上面那個局面瀏覽器能在你的網頁瀏覽器中執行完整解答的原因。九子棋大上數千倍,需要逐切片求解;從頭重現它已知的和棋結果是這個引擎的下一個目標,那更像是規模問題而非新的結論。
從頭求解最有意思的一半,是你能交到別人手上的那一半:可供查詢的殘局庫,以及可重新執行的求解器。兩者都在下面。
資源:
- 六子棋局面瀏覽器:對著殘局庫走任何一條路線,每一著都標示為勝、負或和棋。
- game-solver:逆向求解器與 morris 外掛,殘局庫作為發行附檔提供。
- solved-games:這項結果所加入的已解遊戲結構化登錄庫。
- Gasser,Solving Nine Men’s Morris(Games of No Chance,1996):更大的那個兄弟。
- Gévay 與 Danner,Calculating Ultra-Strong and Extended Solutions for Nine Men’s Morris, Morabaraba, and Lasker Morris(2014)。