圍棋官子最好一手電腦能不能算?
四種「最好」、一個 PSPACE 困難、與「先下大的」何時失效
一句話答案:乾淨官子下,四步公式可解;一般情況電腦永遠算不快;「先下大的」這條常識在含 follow-up 時會失效。
- 乾淨官子可秒解:每塊空地互不影響、無劫、形狀屬於常見型(corridor / switch / 已成定地),算每塊的「先動 vs 後動得分差」 Δ,下 Δ 最大那塊的關鍵點。複雜度 $O(n^2 + m \log m)$。
- 一般情況算不快:去掉「乾淨」假設後,問題變成 PSPACE-hard——直觀說「電腦永遠算不快」,等價於要解很長的形式邏輯題。
- 「最好」其實有四種:(B) 溫度最高;(C) 得分差最大;(D-must) 該下哪手最有利;(D-avoid) 絕不能下哪手。四者通常不一樣。
- 「先下大的」會失效:當某塊有 follow-up(先動之後對方還能反擊),先下溫度最高那塊可能輸 6 目以上。本頁附顯式反例 G+H。
- 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 種定義
當你說「圍棋官子最好下哪?」,數學上其實有四種解讀:
| 代號 | 數學名稱 | 圍棋話翻譯 | 例:應該下哪? |
|---|---|---|---|
| B | Hotstrat(溫度最大) | 「先下大的」——這手值最多目那塊 | 先下溫度 8 那塊 |
| C | swing 最大 | 「先動 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 乾淨官子下,四步公式可解
「乾淨官子」= 滿足以下三個條件的盤面:
- 不含劫
- 各塊空地互不影響(無共享氣、無跨區威脅)
- 每塊形狀屬於 BW 標準型(corridor / switch / 已成定地 / sente sequence ⋯)
殘局後段大致都符合;中盤含戰鬥不適用。在乾淨官子下,最好一手有四步公式:
- 把空地切成 m 塊(不相連的 region):$\{R_1, R_2, \ldots, R_m\}$。
- 對每塊算「先動 vs 後動得分差」 $\Delta_i = LS(R_i) - RS(R_i)$。
- 找 Δ 最大那塊 $R^*$。
- 答案 = $R^*$ 的關鍵點 $(x^*, y^*)$。
常見形狀的 Δ 速查:
| 形狀 | $LS$(黑先得) | $RS$(白先得) | Δ | 關鍵點 |
|---|---|---|---|---|
| Corridor 長 1 | 1 | 0 | 1 | 唯一空點 |
| Corridor 長 2 | 2 | 0 | 2 | 開放端 |
| Corridor 長 3 | 3 | 1 | 2 | 開放端 |
| Corridor 長 5 | 5 | 4 | 1 | 開放端 |
| 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$。
定理 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,最複雜的版本):
- 分解 $s$ 為 regions $\{R_i\}$($O(n^2)$)。
- 對每塊 $R_i$ 由 BWFormula 算 $(LS_i, RS_i, T_i, \mu_i, m^*_i)$($O(n^2)$)。
- 對 hot regions($\Delta_i > 0$)依 Δ 降序排為 $\sigma$($O(m \log m)$)。
- 預處理 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)}$
- 每個 $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)$。
- 對 $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 取 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 之和。我們發現一個結構性現象:
這不是巧合,是「對弈序列項對換」之代數結構強迫。具體地,當你「強制 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」之階梯結構。
定理 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),擇要列出:
- D-sign-flipping 之 reduction:baseline $V_0$ 之循環依賴問題未解。
- BW 標準形狀之經驗覆蓋率:實戰 19×19 終局多大比例真的乾淨?需收集 KGS / GoQuest 終局資料統計。
- Hotstrat 失效之 worst-case 上界:本研究給出 6 目顯式反例;最壞情況下 Hotstrat 可損多少目?
- 結構性 ties (F2) 之擴展:能否擴到 corridor sums 或一般 BW 標準形狀?
- 含劫之 quasi-polynomial 算法:本研究排除 ko;含 ko 但 ko 數 $O(\log n)$ 之上下界?