圍棋官子最好一手電腦能不能算?

四種「最好」、一個 PSPACE 困難、與「先下大的」何時失效

一句話答案:乾淨官子下,四步公式可解;一般情況電腦永遠算不快;「先下大的」這條常識在含 follow-up 時會失效。

  1. 乾淨官子可秒解:每塊空地互不影響、無劫、形狀屬於常見型(corridor / switch / 已成定地),算每塊的「先動 vs 後動得分差」 Δ,下 Δ 最大那塊的關鍵點。複雜度 $O(n^2 + m \log m)$。
  2. 一般情況算不快:去掉「乾淨」假設後,問題變成 PSPACE-hard——直觀說「電腦永遠算不快」,等價於要解很長的形式邏輯題。
  3. 「最好」其實有四種:(B) 溫度最高;(C) 得分差最大;(D-must) 該下哪手最有利;(D-avoid) 絕不能下哪手。四者通常不一樣。
  4. 「先下大的」會失效:當某塊有 follow-up(先動之後對方還能反擊),先下溫度最高那塊可能輸 6 目以上。本頁附顯式反例 G+H。
  5. D-must 的詭異成對打平:對 m≥3 個 simple switch 之和,第 2 名與第 3 名、第 4 名與第 5 名... 必定打平。這是代數結構強迫的,不是巧合。

§1 「先下大的」這條常識何時對、何時錯?

圍棋從小被教:「官子要先下大的」——意思是先下「這手值最多目」那塊。

這條常識在 95% 的情況都對。但有一種詭異情形:你眼睛看到「這塊 10 目」,下完之後對方反擊一手,你的得分倒退到 2 目;而旁邊那塊本來只值 8 目,你先下卻能穩穩拿 8 目。這時「先下大的」害你輸了 6 目。

這種情形在數學上叫做「Hotstrat 失效」。Hot 在 CGT(組合博弈論)裡指「這手值多少目」(溫度),Hotstrat 就是「先下溫度最高那塊」的策略。

本頁要說明:什麼時候 Hotstrat 對、什麼時候錯,以及錯的時候該怎麼算。

形式化定義:什麼是「溫度」、什麼是「Hotstrat」?

對一個 CGT 局部 $G$,定義:

  • 左停止值 $LS(G)$:黑先動、之後雙方最佳對弈、終局得分。
  • 右停止值 $RS(G)$:白先動、之後雙方最佳對弈、終局得分。
  • swing $\Delta(G) = LS(G) - RS(G)$:先動 vs 後動的得分差。
  • 溫度 $T(G)$:對 simple switch $\{a \mid b\}$ 而言 $T = (a-b)/2 = \Delta/2$;一般 hot 局部用 thermograph 之 mast 高度(BCG Ch. 6)。

Hotstrat(標準 CGT 啟發式):當盤面是多個獨立局部之和 $G_1 + G_2 + \cdots + G_m$,永遠先下 $\arg\max_i T(G_i)$。

BCG 1982 的標準定理:在「all-small」或「無共享威脅」假設下,Hotstrat 是最優的。本研究關心的是這假設失效時——即 mixed sum with hot follow-up——Hotstrat 何時與最佳對弈分歧(§5 反例)。

§2 「最好」其實有 4 種定義

當你說「圍棋官子最好下哪?」,數學上其實有四種解讀:

代號數學名稱圍棋話翻譯例:應該下哪?
BHotstrat(溫度最大) 「先下大的」——這手值最多目那塊 先下溫度 8 那塊
Cswing 最大 「先動 vs 後動差最多」那塊 先下 Δ=16 那塊
D-must強制先動之得分最高 「黑該下哪手最有利」 選 V_j 最大那 j
D-avoid強制先動之得分最低 「黑絕不能下哪手」(誰下誰倒大楣) 選 V_j 最小那 j

四種定義在「乾淨 simple switch sum」裡,第 1 名相同(定理 F1);但從第 2 名起會分歧——D-must 出現詭異的成對打平(定理 F2),D-avoid 之第 1 名甚至可與 C 之第 1 名差很遠(定理 F3)。

形式化:D-must / D-avoid 的精確 V_j 公式

設盤面分解 $\{R_i\}_{i=1}^m$,定義「黑強制先動 $R_j$ 之後續最佳對弈終值」:

$$V_j = RS\Big( R_j^{L^*} + \sum_{i \neq j} R_i \Big), \quad R_j^{L^*} = \arg\max_{R_j^L} RS\big(R_j^L + \textstyle\sum_{i \neq j} R_i\big)$$

對 simple switch $R_j = \{a_j \mid b_j\}$,$R_j^{L^*}$ 唯一為 $a_j$(一個 number),故:

$$V_j = a_j + RS\Big( \sum_{i \neq j} R_i \Big)$$

三讀法:

  • D-must:top-k by $V_j$ descending——「黑該下哪手最有利」。
  • D-avoid:top-k by $V_j$ ascending——「黑絕不能下哪手」。
  • D-sign-flipping:依 $|V_j - V_0|$ 排($V_0$ = 無 first-move-constraint 之終值);本研究將此讀法之 reduction 與算法列為開放問題(§9.4 #9)。

互動:4 種「最好」之排序對照

三塊空地:corridor 長 3(Δ=2)、corridor 長 5(Δ=1)、switch{8|−8}(Δ=16)。看 4 種定義之 top-3 名次,注意 F2 之成對 ties。

§3 乾淨官子下,四步公式可解

「乾淨官子」= 滿足以下三個條件的盤面:

  1. 不含劫
  2. 各塊空地互不影響(無共享氣、無跨區威脅)
  3. 每塊形狀屬於 BW 標準型(corridor / switch / 已成定地 / sente sequence ⋯)

殘局後段大致都符合;中盤含戰鬥不適用。在乾淨官子下,最好一手有四步公式

四步公式
  1. 把空地切成 m 塊(不相連的 region):$\{R_1, R_2, \ldots, R_m\}$。
  2. 對每塊算「先動 vs 後動得分差」 $\Delta_i = LS(R_i) - RS(R_i)$。
  3. 找 Δ 最大那塊 $R^*$。
  4. 答案 = $R^*$ 的關鍵點 $(x^*, y^*)$。

常見形狀的 Δ 速查:

形狀$LS$(黑先得)$RS$(白先得)Δ關鍵點
Corridor 長 1101唯一空點
Corridor 長 2202開放端
Corridor 長 3312開放端
Corridor 長 5541開放端
Switch $\{a \mid b\}$$a$$b$$a-b$該爭奪點本身
已成定地(number)$v$$v$0不下

整個算法的時間複雜度是 $O(n^2 + m \log m)$——盤面 $n \times n$ 走一次掃描,再對 m 塊排序。19×19 盤面瞬間完成。

互動:corridor 長度 vs Δ

拖動長度 ℓ,看 LS、RS、Δ 如何隨 ℓ 變化。corridor 公式:$LS(C_\ell) = \ell$,$RS(C_\ell) = \lfloor (\ell-1)^2/4 \rfloor$。

5
定理 B(受限上界):完整陳述與算法

定理 B:在 (a)「BW 標準形狀 + ko-free + 局部可分解」或 (b) $|R_i| = O(1)$ 之 promise 下,BEST-MOVE-X 為 $O(n^2 + m \log m)$,X ∈ {B, C, D-must, D-avoid}。

算法 2.3(D-must,最複雜的版本)

  1. 分解 $s$ 為 regions $\{R_i\}$($O(n^2)$)。
  2. 對每塊 $R_i$ 由 BWFormula 算 $(LS_i, RS_i, T_i, \mu_i, m^*_i)$($O(n^2)$)。
  3. 對 hot regions($\Delta_i > 0$)依 Δ 降序排為 $\sigma$($O(m \log m)$)。
  4. 預處理 4 個 prefix/suffix arrays($O(m)$):
    • $P_a^{\text{even}}[p] = \sum_{l \leq p, l \text{ even}} a_{\sigma(l)}$
    • $P_b^{\text{odd}}[p] = \sum_{l \leq p, l \text{ odd}} b_{\sigma(l)}$
    • $S_a^{\text{odd}}[p] = \sum_{l \geq p, l \text{ odd}} a_{\sigma(l)}$
    • $S_b^{\text{even}}[p] = \sum_{l \geq p, l \text{ even}} b_{\sigma(l)}$
  5. 每個 $V_j$ 由 $O(1)$ 公式: $$V_j = a_p + P_a^{\text{even}}[p-1] + P_b^{\text{odd}}[p-1] + S_a^{\text{odd}}[p+1] + S_b^{\text{even}}[p+1]$$ 其中 $p = \sigma^{-1}(j)$。
  6. 對 $V_j$ 排序得 $\pi$,回傳 top-k regions 與其 $m^*$。

正確性:由引理 H(hotstrat-on-switches)之 saddle-point 對弈序列保證;prefix-sums 公式為其 closed-form 求和。

m=3 數值驗算

$\Delta = (10, 8, 6)$,$\mu_i = 0$,故 $(a_l, b_l) = (5, -5), (4, -4), (3, -3)$。

預處理:

  • $P_a^{\text{even}}: [0, 0, 4, 4]$
  • $P_b^{\text{odd}}: [0, -5, -5, -8]$
  • $S_a^{\text{odd}}: [\_, 8, 3, 3, 0]$
  • $S_b^{\text{even}}: [\_, -4, -4, 0, 0]$

計算:

  • $V_1 = 5 + 0 + 0 + 3 + (-4) = 4$ ✓
  • $V_2 = 4 + 0 + (-5) + 3 + 0 = 2$ ✓
  • $V_3 = 3 + 4 + (-5) + 0 + 0 = 2$ ✓ ($V_2 = V_3$,符合 F2)

§4 一般情況下,電腦永遠算不快(PSPACE-hard)

如果把「乾淨官子」的條件拿掉,問題會變得有多難?答案是:PSPACE-hard

白話翻譯:PSPACE-hard 大致等於「電腦永遠算不快」——它是計算複雜度階層裡比 NP-hard 還難的一級。直觀來說,要解這類問題的最快算法,在最壞情況下需要的時間隨盤面大小指數爆炸增長,且這個下界已被證明在合理假設下無法繞過。

所以圍棋官子最好一手的真實面貌是:

  • 乾淨官子:四步公式 $O(n^2 + m \log m)$,瞬間完成 ✓
  • 一般情況:PSPACE-hard,電腦永遠算不快 ✗

兩個答案都對——重點是「乾淨」這個 promise 是否成立。實戰中,殘局後段通常乾淨;中盤含戰鬥則不乾淨。

定理 A:BEST-MOVE-X 為 PSPACE-hard,X ∈ {B, C, D-must, D-avoid}

陳述:在「局部可分解」promise 下,對 X ∈ {B, C, D-must, D-avoid},BEST-MOVE-X 為 PSPACE-hard。

證明骨架:從 Generalized Ladder Game (GLG) 之 PSPACE-completeness(Crâșmaru & Tromp 2000)reduce。每個 GLG instance $(B, s_0)$ 對應一個 BEST-MOVE-X instance。

關鍵:Lemma A.1(Swing 控制)。給定 GLG instance,建構 region $R_\Phi$(含 ladder 嵌入 + swing booster gadget)使:

  • GLG = YES:$\Delta(R_\Phi) = D_Y = 6k$(其中 $k$ 為 ladder chase 長度,$|B|$ 之多項式)
  • GLG = NO:$\Delta(R_\Phi) = D_N \leq 4$

故 $D_Y - D_N \geq 6k - 4 = \Omega(|B|)$,可 polynomial 校準。再加上一塊 calibration switch $R_*$,使「Δ 最大者 = $R_\Phi$」⟺ GLG = YES。

此 reduction 對 X ∈ {B, C, D-must, D-avoid} 共用一個建構(每個 X 各有校準參數)。

(D-sign-flipping 之 reduction 因 baseline $V_0$ 之循環依賴問題列為開放問題。)

為什麼 PSPACE-hard 直觀上「電腦永遠算不快」?

計算複雜度階層大致:P ⊆ NP ⊆ PSPACE ⊆ EXPTIME。

  • P:多項式時間可解(電腦算得快)
  • NP-hard:至少跟「找答案不知怎麼找、但檢驗答案很快」之最難問題一樣難
  • PSPACE-hard:至少跟「QBF(量化邏輯式滿足性)」一樣難——QBF 是 $\exists x_1 \forall x_2 \exists x_3 \cdots$ 之嵌套交替量化,本質上是「我必須對所有對手回應都有對策」之博弈問題
  • EXPTIME-complete:n×n 圍棋全局(不限官子)已知為 EXPTIME-complete(Robson 1983)

本研究的官子問題卡在 PSPACE-hard 而非 EXPTIME——比全局簡單一些,但仍然超出 NP,超出多項式時間。實務上 PSPACE-hard 問題通常用 heuristic(如 KataGo)而非保證最優算法。

計算複雜度階層

本研究的位置(紅點):BEST-MOVE-X 在乾淨 promise 下是 P,去掉 promise 是 PSPACE-hard。對比:圍棋全局(不限官子)是 EXPTIME-complete。

§5 「先下大的」失效:定理 D 之顯式反例

考慮兩塊:$P = G + H$,其中

  • $G = \{10 \mid \{0 \mid -100\}\}$——B 先下得 10 目;W 先下會威脅 B 的大塊死活,B 最佳防守仍要損 0 目,否則全死損 100 目。溫度 $T(G) = 10$
  • $H = \{8 \mid -8\}$——simple switch,B 先得 8 目、W 先得 −8 目。溫度 $T(H) = 8$

「先下大的」預言:$T(G) = 10 > T(H) = 8$,所以下 G。

實際最佳對弈:B 應該下 H!

B 下 G 之終局:2 目
B 下 H 之終局:8 目
「先下大的」之損失:−6 目

原因:B 下 G 取 10 目後,W 反擊 H 得 −8,淨 +2;但 B 下 H 取 8 目後,W 動 G 之 follow-up,B 補後仍保持 0,淨 +8。「先下大的」害你輸 6 目。

關鍵啟示:當某塊有 hot follow-up(例:大塊死活、sente sequence),溫度排序不再對應最佳對弈。實戰中「對方反擊比我搶到的更大」就是這個現象。

互動:G+H 之完整對弈樹

點擊任一節點看 B/W 在該位置之選擇與終局值。紅色=Hotstrat 預言路徑;綠色=最佳對弈路徑。

定理 D:完整 LS(P) 計算

$P = G + H$ 之 L-options(B 動)

  • $L_1$: B 動 $G^L = 10$ → $P^{L_1} = 10 + H$
  • $L_2$: B 動 $H^L = 8$ → $P^{L_2} = G + 8$

$RS(P^{L_1}) = RS(10 + H)$:W 動 $H^R = -8$ → 終值 = $10 + (-8) = 2$。

$RS(P^{L_2}) = RS(G + 8)$:W 動 $G^R = Y = \{0 \mid -100\}$ → $LS(Y + 8) = LS(Y) + 8 = 0 + 8 = 8$。

故 $LS(P) = \max\{2, 8\} = 8$,最佳第一手為 $L_2$(動 $H$)。

Hotstrat 衝突:$T(G) = 10 > T(H) = 8$ 預言動 $G$ → 終值 2,比最佳少 6 目。✓

C 與 D-must 給出正確答案:$\Delta(G) = 10$, $\Delta(H) = 16$ → C-top-1 = $H$ ✓;$V_G = 2, V_H = 8$ → D-must-top-1 = $H$ ✓。

19×19 物理棋盤實現

抽象 CGT 反例 $G + H$ 可在 19×19 實現:

  • $H$ 之實現:右下角 1×16 corridor,雙端對方活子封閉,調 $\ell$ 使 $\Delta = 16$。
  • $Y = \{0 \mid -100\}$ 之實現:左上角構造一個未活的黑大塊(約 50 子),含 100 目地之潛在地盤。B 補一手做活得 0;W 動關鍵點殺死大塊,B 損 100 目。
  • $G = \{10 \mid Y\}$ 之實現:右上角中型半實地,含 follow-up 結構。B 取 10 目地(保 follow-up 之選擇權);W 引發 $Y$ 之活死競爭。

三塊位於不同角落,相距 ≥ 5 子,氣不互動。具體棋形需 tsumego solver 驗證精確死活,但結構性反例不依賴此細節(per BW 1994 Ch. 4 之 mixed-sum examples)。

§6 D-must 之詭異「成對打平」(定理 F2)

考慮 m 塊乾淨 simple switch 之和。我們發現一個結構性現象:

定理 F2:對所有 $k \geq 1$ with $2k+1 \leq m$, $$V_{\sigma(2k)} = V_{\sigma(2k+1)}$$ 即 D-must 排序之第 2 名與第 3 名、第 4 名與第 5 名、... 必定打平

這不是巧合,是「對弈序列項對換」之代數結構強迫。具體地,當你「強制 B 先動 $\sigma(2k)$」 vs「強制 B 先動 $\sigma(2k+1)$」時,後續的對弈序列差異剛好抵消,所以兩個 V 值相同。

具體例(m=3):$\Delta = (10, 8, 6)$,$\mu_i = 0$,$(a_i, b_i) = (5, -5), (4, -4), (3, -3)$:

  • $V_1 = 5 - 4 + 3 = 4$
  • $V_2 = 4 - 5 + 3 = 2$
  • $V_3 = 3 - 5 + 4 = 2$ (= $V_2$!)

意涵:D-must 排序為 $\sigma(1) > \{\sigma(2), \sigma(3)\} > \{\sigma(4), \sigma(5)\} > \cdots$(成對 ties from position 2);而 C 排序為 strict $\sigma(1) > \sigma(2) > \sigma(3) > \cdots$。兩個 ranking 結構性不同

互動:m 變化下之 V_j 排序

拖動 m,看 V_j 之分布如何呈現「成對 ties」之階梯結構。

5
定理 F2 之證明(adjacent-swap 代數計算)

由 §3 算法 2.3 之 prefix-sums 公式,$V_{\sigma(p)}$ 之 closed-form 為:

$$V_{\sigma(p)} = a_{\sigma(p)} + \sum_{l=1}^{p-1} \begin{cases} a_{\sigma(l)} & l \text{ even} \\ b_{\sigma(l)} & l \text{ odd} \end{cases} + \sum_{l=p+1}^{m} \begin{cases} a_{\sigma(l)} & l \text{ odd} \\ b_{\sigma(l)} & l \text{ even} \end{cases}$$

對 $p = 2k$ 與 $p = 2k+1$ 比較:

  • Prefix 差:$V_{\sigma(2k+1)}$ 之 prefix 多一項 $l = 2k$ even → $a_{\sigma(2k)}$;故 prefix 差 = $-a_{\sigma(2k)}$。
  • Suffix 差:$V_{\sigma(2k)}$ 之 suffix 多一項 $l = 2k+1$ odd → $a_{\sigma(2k+1)}$;故 suffix 差 = $+a_{\sigma(2k+1)}$。

加總: $$V_{\sigma(2k)} - V_{\sigma(2k+1)} = (a_{\sigma(2k)} - a_{\sigma(2k+1)}) - a_{\sigma(2k)} + a_{\sigma(2k+1)} = 0$$

故 $V_{\sigma(2k)} = V_{\sigma(2k+1)}$。✓ ($\square$)

F1 與 F3:四種定義之 top-1 何時相同、何時不同

定理 F1(C-top-1 = D-must-top-1, sum-of-simple-switches):對 sum of $m$ non-degenerate simple switches,$\arg\max_j \Delta_j = \arg\max_j V_j$。即「先動 vs 後動差最大那塊」與「強制黑先動之得分最高那塊」第 1 名相同

定理 F3(C-top-1 ≠ D-avoid-top-1, substantive 分歧):構造盤面使「Δ 最大那塊」與「絕不能下那塊」嚴格不同。例:$m = 3$ switches with $\Delta = (10, 8, 6)$,C-top-1 = $\sigma(1)$,D-avoid-top-1 = $\sigma(2)$ 或 $\sigma(3)$(V 最小者),兩者區分性可達 $\Omega(\Delta_1)$ 目。

故四種定義之關係:

  • top-1 上:B = C = D-must(在 simple switch sum 下,per F1)
  • top-1 上:D-avoid 可與 C 不同(per F3)
  • full ranking 上:D-must 出現成對 ties(per F2),C 為 strict

§7 想看完整證明 / 跑工具?

本頁是給高中生 / 圍棋愛好者的入門版。完整內容依深度分層:

想看什麼看哪份難度
一頁 cheatsheet(最簡) practical.md 圍棋常識即可
純數學公式(函數合成) math-solution.md 高中數學 + 一點 CGT 直覺
完整算法(含 pseudocode) algorithm.md 大學算法課
完整證明(PSPACE-hardness 等) proof.md 研究生 CS / CGT
學術論文 A(PSPACE 困難 + 算法) paper-a/paper.pdf · 7 頁 cs.CC / cs.GT 專業
學術論文 B(Hotstrat 失效) paper-b/paper.pdf · 7 頁 math.CO / cs.GT 專業
互動工具(輸入盤面算最佳一手) tool.html 會操作網頁即可
Python / JavaScript 程式碼 GitHub repo 會跑程式即可

歡迎到 GitHub 提 issue / PR,或用每段右上角的「複製到 AI」按鈕,把該段貼給 ChatGPT / Claude 接續討論。

本研究之 5 個未解問題(邀請合作)

研究記錄了若干開放問題(per proof.md §9.4),擇要列出:

  1. D-sign-flipping 之 reduction:baseline $V_0$ 之循環依賴問題未解。
  2. BW 標準形狀之經驗覆蓋率:實戰 19×19 終局多大比例真的乾淨?需收集 KGS / GoQuest 終局資料統計。
  3. Hotstrat 失效之 worst-case 上界:本研究給出 6 目顯式反例;最壞情況下 Hotstrat 可損多少目?
  4. 結構性 ties (F2) 之擴展:能否擴到 corridor sums 或一般 BW 標準形狀?
  5. 含劫之 quasi-polynomial 算法:本研究排除 ko;含 ko 但 ko 數 $O(\log n)$ 之上下界?