WUZIQI — Gomoku
好看,本身就是理由
← 返回部落格

棋理與搜尋

五子棋裡的「證明」:從活三活四到必勝路徑

有些手不是因為看起來強,而是因為它們能把局面一步步推向無法逃避的結果。

把連續威脅看成一條被逐步證明的路徑,棋面就會安靜下來。
把連續威脅看成一條被逐步證明的路徑,棋面就會安靜下來。

在五子棋裡,「證明」是要找到一條讓對手無論怎麼應都無法脫身的道路,而不是把每個變化都平均算完。活三、衝四、活四只是路標;真正關鍵的是它們能否連成必勝路徑。

從強手到可證明的強手

很多局面看上去都很凶:一個活三擺在盤上,旁邊還有潛在的眠三。但強不等於贏。可證明的強手,要求下一步威脅能迫使對方防守,而防守之後仍有新的強制點。

例如黑棋形成一條橫向活三,對方一定要封住一端嗎?未必。如果白棋能同時製造衝四,黑棋就不能只照自己的劇本走。判斷威脅時,必須把「對方最強反擊」也放進計算。

五子棋中由活三轉為衝四再轉為必勝點的示意圖
一條威脅鏈通常不是靠單個活三取勝。更常見的情況是活三迫防、衝四迫防,最後出現無法同時防住的雙四。

VCF:連續衝四的證明

VCF 常被解釋為「Victory by Continuous Four」,也就是連續用四來取勝。它的特點很直接:每一步都形成衝四或活四,對方若不擋,下一手立即五連。

VCF 的計算相對清晰,因為防守點通常很少。黑棋衝四,白棋只能堵指定位置;黑棋再在另一路衝四,白棋繼續被迫應答。只要鏈條不斷,最後就會出現白棋無法兼顧的點。

這也是為什麼高手會先看四再看三。四的強制性最高,它把局面壓縮成少數分支。關於 VCF 的基本概念,可參見VCF and VCT concepts in gomoku

VCT:用威脅持續取得先手

VCT 是「Victory by Continuous Threats」。它不要求每一步都是四,也可以用活三、雙三、眠三轉活三等方式持續製造必須處理的威脅。

VCT 比 VCF 更寬,也更難。活三雖然常常要防,但對方可能選擇反做一個更急的四,或者用一手同時防守並反擊。因此,VCT 的證明要檢查更多防法。

VCF 像一條窄橋:對方只能後退。VCT 像一張網:關鍵在於確認每個出口都被威脅覆蓋。

活三活四只是語言,不是結論

說「我有活三」只是描述形狀;說「這個活三必勝」才是結論。中間缺少的部分,就是威脅序列:對方防哪裡,我接著走哪裡;若對方換一種防法,我是否仍能保持先手。

一個常見誤判是把雙活三當成立刻勝勢。若規則或局面允許對方下一手形成活四,雙活三可能反而太慢。威脅的急迫性要按「五、活四、衝四、活三」的優先順序重新比較。

更系統的說法見Threat sequence theory in gomoku strategy:威脅是一種帶有回應集合的連續結構,不只是孤立棋形。

五子棋 VCT 中不同防守分支被逐一覆蓋的示意圖
VCT 的難點在分支:每一種合理防守,都必須能接回新的強制威脅。

PNS:把「能否證明」變成搜尋問題

PNS,即 Proof-number search,常用於判斷一個目標能否被證明。放在五子棋中,目標可以是「黑棋從此局面存在必勝威脅序列」。

它並不平均展開所有變化,而是優先研究最接近證明或最接近反證的分支。某個進攻點若只差一個關鍵回應就能閉合,搜尋會集中到那裡;某個防守若能破壞所有威脅,也會被優先檢驗。

這解釋了「證明」為什麼常比蠻力更像讀棋:它看得更有目的,優先追問哪些分支最接近成立或最接近被推翻。相關方法可參考Proof-number search in gomoku

一條必勝路徑應滿足什麼

第一,每一步威脅都足夠急。若對方可以脫先做更大的威脅,路徑就斷了。第二,防守分支要完整。只證明對方「通常會擋左邊」沒有意義,還要證明擋右邊、反衝、兼防時都不行。

第三,最後要收束到明確勝形:五連、無法同時防住的雙四,或連續四的末端。沒有收束點的進攻只是壓力,不是證明。

實戰提示:復盤時不要只標出好手。給每個強手寫下「若對方這樣防,我下一手是什麼」。寫不出來的地方,就是證明尚未成立的地方。

從復盤中訓練證明感

訓練證明感,可以從短 VCF 開始:限定只找連續四,直到能快速看出三到五步的強制鏈。隨後再加入活三,練習判斷哪些三是真正迫防,哪些只是形狀好看。

一些比賽程式與架構筆記也強調這種分層:先用模式辨識找候選威脅,再用搜尋驗證強制序列。可參見Starpoint and TKGOMOKU architecture notes from Gomocup 2026

對棋手來說,價值不在術語本身,而在思維方式:每個活三都要問它能否繼續,每個衝四都要問它是否唯一,每條進攻線都要經得起對方最頑強的防守。


讀完了?打開 WUZIQI 試一局。