什麼是「殘局庫」?
殘局庫是窮盡某些子力組合的庫,目前象棋愛好者跑出的最大的庫應該是車炮 vs 馬炮士象全那種級別,不嚴謹的說,也就是體積大約是 5-6 大子級別,而象棋完整殘局庫體積應該是有 20 多個大子級別。
例如窮盡「帥 VS 將」,以此為基礎再開始窮盡「帥兵 vs 將」……如果要搞出車對雙馬的殘局庫,那麼必須先搞好帥對將、帥對馬、帥對雙馬、帥車對將、帥車對馬的殘局庫。
殘局庫先窮盡一個子力組合的所有局面,然後提取所有取勝局面,再提取被將死方無法阻止將死方將死的所有局面……如此倒推,推出所有的理論必勝必負局面,最終推不到的局面都是和棋,記錄所有局面的勝/和/負結論,此時如果不做後續行為就叫做「審局庫」。後續給所有勝負局面排序,以達到給一個勝負局面,引擎就能給出最優的下一步著法,此時是完整的殘局庫。
在殘局庫的規則下,如果沒有 bug,那麼殘局庫結論是絕對準確的,殘局庫只有勝、負、和三種結論,除了勝負局面所需的步數外,不存在任何分數。
DTM 與 DTC
象棋殘局庫主要有 DTM(Depth to mate)和 DTC(Depth to conversion)兩種。
DTM 的勝方目標只有將死和困斃,敗方目標是盡力拖延將死和困斃。
而 DTC,這裡以雲庫 DTC 說明。勝方目標是將死、困斃、子力變化(勝方自己的子被吃也算),取最短的一項作為目標。還有一個特殊的循環犯規次數,勝方會盡力防止負方循環犯規,如果無法防止,則勝方會走負方犯規次數最少的路徑,並且拖延負方犯規。而負方會拖延被將死、被困斃、場上子力變化,並且盡力犯規。
注意
如果沒有犯規次數,不代表勝方真的可以完全防止對手犯規。假設某個局面紅有個相擋著黑車,黑車可以吃掉它並且進行長將,這個局面仍然可能顯示沒有犯規次數,因為負方對拖延子力變化是更優先的,所以著法中負方不會優先吃相。
DTC 因為對目標的步數更短,所以體積比 DTM 小很多。
部分象棋引擎可以配合自己格式的殘局庫進行搜尋。
殘局庫的終極目標是全子殘局庫,當然目前絕無可能實現。
