象棋被窮盡了嗎?
遠遠遠遠遠遠……沒有。
目前象棋圈軟體愛好者跑出來的大殘局庫子力組合,例如有車炮對馬炮士象全(四大子+雙士雙相)、雙馬單相對馬卒雙象(三大子+一兵+三相)、雙炮單士相對馬缺士(三大子+雙士三相)、雙馬炮單士對車雙士(四大子+三士)、炮兵單缺相對炮卒(二大子+二兵+雙士一相)等等,可見距離「窮盡」(十二大子+十兵+四士四相)極其遙遠。
當然,由於象棋本身的原因,強引擎之間的和棋率已經極高,和棋率見:象棋頂級引擎目前的和棋率有多少?,但這不代表窮盡。
目前最準確的象棋狀態總數估算是《智能系統學報》發表的《動態規劃求解中國象棋狀態總數》,該文作者在知乎上也有發表:中國象棋狀態總數,儘管存在些小問題,但數量級在 40 位數左右或者保守說接近 40 位數是沒問題的,理論最少儲存都需要接近 30 位數的 TB,而全球資料總量加起來恐怕不足 14 位數的 TB。至於硬體的計算量,沒有儲存只會產生巨量的重複計算。即使退一萬步無視儲存,不重複地計算局面,雙路 9654 滿載執行皮卡魚 2023 年版本時開局平均每秒計算 3 億局面,考慮到皮卡魚使用神經網路評估減速,就假設使用極簡評估算它每秒 10 億局面,再假設全世界有一千億臺雙路 9654,算一百年也只有 30 位數的量級,還是差太多。
浮點計算與象棋無關,量子計算機目前也只是解決特定問題(目前在這點上,被拿出來說的特例反而代表了只能解決極少問題),尚無看見解決象棋的可能性。
另外,有言論說「象棋合理著法有限所以可以基本算盡」,問題就在於所謂合理著法是需要窮盡結果支撐的,無法知道某一招是不是不合理的,現在強引擎剪枝都剪得極多,剪枝的目的就是為了都搜尋「合理著法」,但是總有很多局面引擎也很難計算出優解。
即使目前的引擎,偶爾也能發現評估嚴重誤判的局面,可以合理推測——沒發現的嚴重誤判局面數量也不少,只是囿於在正常均勢局雙方很難走出來(象棋容錯率高)。
在容錯率低的局面下可以很好展現象棋軟體的誤判情況。一個例子是引擎在高優局的表現,50% 和棋率的高優勢局,即使是再強的機器進行自對弈也可能產生「某局面這次走出紅勝,但下次走該局面走出和棋」的情況,有時候引擎評估己方優勢極大但仍然最終和棋,有時候引擎評估己方優勢小但仍然能走贏,這種例子比比皆是,可以很直觀看出目前象棋引擎遠沒有那麼「神」。
