國際象棋殘局庫
什麼是?有多少種格式?彼此有什麼不同?下面小編給你介紹吧,歡迎閱讀。
介紹
Aaron Tay
A1. 什麼叫殘局庫?***endgame tablebase,簡稱egtb***
概述性地說殘局資料庫是儲存了殘局局面[經回溯分析計算過]的資料庫檔案,它使用在棋弈程式上,當進入殘局時只要適合使用的殘局資料庫檔案存在,程式將走得非常完美。
多數棋弈引擎並不一定要到達殘局庫所涵蓋的局面時才使用殘局庫。例如,在到達如此局面之前幾步,引擎計算***但還沒走棋***一系列交換之後直接進入殘局庫裡存有的局面。引擎於是搜尋探查殘局庫並取得那個設想局面的結果。如此當然提高了棋力。
【譯註:作者說他不熟悉殘局資料庫的技術細節;譯者也不熟悉,那也需要一定數學和程式設計基礎。但作者的解釋未免也太過簡單些了,不妨試著這樣解釋:殘局庫是經特別演算法產生的特定格式的、儲存各限定棋子數目的殘局之所有局面及其估值的資料庫檔案集合。比如王+車對王的最簡單殘局,其相應資料庫檔案就儲存了由這三個棋子在棋盤上組成的一切可能局面及估值,所以當局面到達王+車對王局面時,引擎就直接在資料庫中搜索、對照局面並取出相應估值,這樣它“想都不用想”就知道該如何走。因為製作殘局庫檔案時,用回溯分析計算過所有局面,得出最佳結果,因此按殘局庫裡的走法走相對應的殘局是最正確最完美的***這是對合格殘局庫的要求***。所以使用殘局庫大大提高了引擎走末段殘局的棋力--幾乎不花時間計算且又走出最準確的棋步。目前,棋子數目最大的是六子殘局,即雙方剩下棋子加起來一共六隻,不管什麼組合***顯而易見,雙方各有一隻王加起來就佔了兩子***。】
A2. 有多少種殘局庫格式?彼此有什麼不同?
有各種各樣的殘局庫格式,包括肯·託普森式***Ken Thompson***、史蒂文·愛德華茲式***Steven J. Edwards***、歐根尼·納利莫夫式***Eugene Nalimov***以及Chessmaster9000專用的EDGB殘局庫格式。
不過總的來說它們劃分為兩種殘局庫型別:將殺步數***DTM***型別和變換步數***DTC***型別。粗略地以非專業語言來說,彼此之間區別如下:
將殺步數***DTM***型別:即Distance to mate,這種型別的庫為每一個局面儲存最短的將殺可能***以層,即ply來計算,一層相當於半個回合***。例如Nalimov殘局庫。
變換步數***DTC***型別:即Distance to conversion,這種型別的庫儲存每一個局面及其一個“轉換”之間的最短層數。所謂一個轉換,指或者是兵升變,或者某子被吃去,或者出現將殺。例如Thompson殘局庫。
另外,無論是DTM還是DTC型別的殘局庫,都不能識別50回合自然限著規則。為了克服它們的缺點,已經提出了DTZ和DTR另外兩種型別。但至今只停留在理論上。
說到具體每種格式的區別,還不能簡單就說得清楚的。Crafty的作者於2000年10月在新聞組作過如下解釋:
“Edwards式:屬於將殺步數***DTM***型別。Edwards式的主要問題是這種殘局庫體積比其它的龐大。
“Nalimov式:也屬於將殺步數***DTM***型別,但Nalimov式的殘局庫檔案是壓縮的,也可以以壓縮形式使用而無不利之處。對於擁有全部3、4、5子殘局的殘局庫,別的格式其檔案總數大小超過30G,而使用這種格式的大約只有7.5G。
“Thompson式:屬於變換步數***DTC***型別***每當發生吃子,殘局的‘級數’都變小***。這種格式難以以壓縮形式使用,相對於Nalimov式,它提供的資訊也不相同……比如,它告訴你一些資訊,卻沒有區分是負還是和,而Nalimov式對此則有區分。
“Nalimov式是最佳選擇。幾乎每個引擎都支援它……”
當然,他沒有提及僅是Chessmaster9000專用的EDGB格式殘局庫,因為EDGB是2002年8月才釋出的。Nalimov式仍然是最流行的在用殘局庫格式,因此我想再多談一點這種格式。
Nalimov式幾近“完美”,因為它把吃過路兵也考慮進去了。但是沒把王車易位也考慮進去。只不過,大概只有排局迷才會對此計較。
總的來說,現代幾乎所有的國際象棋程式包括大多數Winboard引擎使用Nalimov式殘局庫,一部分原因是它們不設版權,一部分原因它們更高效。現在Nalimov式殘局庫已經出了部分6子殘局庫。Nalimov式殘局庫有兩種形式,壓縮的和非壓縮的,壓縮的以“emd”為檔案字尾。
多數現代棋弈程式能解壓使用壓縮的殘局庫,例如Crafty從16.5版本後就支援壓縮的Nalimov式殘局庫。我注意到有個Winboard引擎Esc只能用非壓縮的。
殘局庫還有其它一些格式,但比較少見。比較著名的,商業性高階棋弈軟體Nimzo8使用它的Nimzo殘局庫,這種殘局庫放入到記憶體中使用,因此讀取比較快。一直沒有公開發表但棋力不俗的Ferret也使用它的專用殘局庫。我文章餘下部分,除非特別說明,殘局庫都是指Nalimov式。
A4. 常見棋弈程式是否支援、以及各支援什麼格式的殘局庫?
這裡有一些:Chessbase出版發行的那些大名鼎鼎的高階軟體比如***Deep***Fritz、Junior、HIARCS、Shredder 5.0+等都支援Nalimov式;Shredder 5.0+另支援Thompson;Nimzo8+另支援自身的Nimzo殘局庫;Rebel Tiger 2.0和Chess Tiger 14.0也支援Nalimov式【CT15也是】,早期Rebel不支援任何殘局庫;Chessmaster 9000及以後版本支援其專用的EDGB殘局庫;Chess Genius 6.5支援Thompson式;絕大部分免費的Winboard引擎都是支援Nalimov式,其中Crafty在15.21版本之前使用Edwards式,之後只支援Nalimov式;16.5版本之後可使用壓縮的Nalimov式殘局庫。
A5. 從哪裡可得到殘局庫?
如果你有Chessbase發行的軟體比如Fritz,你就同時擁有3-4子壓縮Nalimov式殘局庫。但你可能覺得不夠,有三種方法可得到更多:購買、下載、自造。如果你有Chessmaster9000,CD原盤上已附帶所有4子和部分5子殘局庫。寫作此文時,Chessmaster9000專用的這種EDGB殘局庫既還沒有得出售、也沒有地方下載。
Chessbase出版發行的The Chessbase Endgame Turbo CD一共四張CD,包含Nalimov式全部3和4子、以及部分重要的5子殘局庫,還可找得到一套9CD的,包含更全。
關於下載,你可以到
至於自造殘局庫,可使用tbgen.exe這個工具,下載:
A9. 殘局庫檔案有多大?我需要完整的5子殘局庫嗎?
注意都是指Nalimov式。
安裝殘局庫檔案越多,程式的棋力就越強。可是,一套完整的3、4、5子殘局檔案要佔7.05GB的硬碟空間!【所以想下載的話有些心理準備】注意你購買的很多號稱“全版”的殘局庫CD其實並不是完整的,有些不重要的殘局庫被剔除了,比如王+後+車+象對單王這樣的5子殘局,引擎靠算完全足夠了,沒必要用殘局庫。人們多數都是下載完整的3子和4子庫,然後選擇一些5子庫來下載。由於殘局中有車存在的情況較多,所以優先下載帶車的殘局庫檔案。
一般不同子數的殘局庫檔案放在同一目錄下,然後在引擎的設定檔案中指明殘局庫的路徑就可使用了。除非另有特別需求可有些放在子目錄下,而且要檢查一下你的引擎、或介面是否允許設定指向不同的殘局庫路徑。Yace的作者指出,幾乎所有的引擎都支援同時指向不同的殘局庫路徑。
使用殘局庫時,有個問題要注意處理好,否則可能出現啼笑皆非的情況。比如你有王+車+兵對王+車的殘局庫檔案***假定你已有全套3和4子殘局庫***,這種情況下你應同時還有王+後+車對王+車的殘局庫檔案,因為要考慮兵升變為後的情況!
有些引擎很“笨”的,假如你缺少王+後+車對王+車的殘局庫檔案,在某些強方可勝的王+車+兵對王+車殘局裡,且兵可升變為後的情況下,它竟然不懂得升變的!為什麼會這樣呢?因為你有王+車+兵對王+車的殘局庫檔案,對於當前局面引擎通過查詢殘局庫看到強方勝;而對於兵升變為後的局面,引擎找不到相應王+後+車對王+車殘局庫檔案,雖然兵升變為後,引擎當然評價強方獲得很高分的優勢***其實也是勝勢***,但也是隻會定為“相對不確定”,也就是說很高分的優勢還是不如已明確指出的勝利“更高分”!類似的情況還有,比方你有王+後+兵對王+後的殘局庫檔案卻沒有王+後+後對王+後文件,那麼……
有些引擎比較“智慧”,能避免這個問題,因此缺乏某些殘局庫檔案也沒關係;但有些比如Fritz、Tiger、Amy、Comet、Gandalf就不會處理了。【譯註:原文如此,但他沒說到哪個版本的Fritz和Tiger都有這個問題】
當然,上述那個情況,如果是存在有快速將殺的可能,倒不一定出現這個問題。
注意,Yace目前還不支援4+1的5子殘局庫,即一方有王和隨便三子/兵,另一方單王;【譯註:4+1未必很好勝,甚至難勝的;原文提到,但沒說什麼,這種特殊情況,比如:王+三隻最邊的兵疊在一起對處在這邊上的單王……】
A10. 關於6子殘局庫
就我所知,使用到6子殘局的引擎還不多,儘管從原理上讓引擎使用6子殘局庫很簡單。
6子殘局庫的用法沒什麼變的,一樣。能下載Nalimov式6子殘局庫的地方是
引擎使用查詢6子殘局庫,對於系統還有一些嚴厲的技術要求,要求很高。
目前的6子殘局庫,不包含兵的幾乎齊了,而包含兵的還沒出現。估計全套的6子殘局庫要佔用1000G的空間大小。
A11. 關於殘局庫是否工作正常和是否出現內部錯誤。
殘局庫的內部錯誤,是指下載下來或自己製作的殘局庫中的某個***或某些***檔案內部出現“腐朽”,結果不但發揮不了效力,甚至可能導致某些使用它***們***的引擎啟動不了。這當然是個問題,想想看殘局庫的檔案有這麼多啊,想抓出究竟是哪一個檔案有內部錯誤很不容易。
不過要知道殘局庫是否工作正常並非沒有辦法,用引擎中分析局面時,特別是專門根據你所擁有的殘局庫而設定局面時,往往光憑觀察就知道殘局庫是否在使用:引擎走棋或給出估值很迅速,“想都不想地”,而且給出的估值一般恆定不變【譯註:另外那些“一眼看出”數十步之後殺棋的肯定使用到了殘局庫】。有些引擎在分析模式時會在思考變化上指出估值是來自殘局庫,例如Crafty在主變後方會加上“”字樣。【譯註:也可以開啟引擎的log模式,分析後手工文字方式檢視log檔案,往往有說殘局庫的使用情況,比如Ruffian】
假如你使用Nalimov式殘局庫,要批量檢查一大批檔案有更簡單辦法:
1、使用datacomp.exe;
2、下載殘局庫時會見到MD5驗證檔案,可以使用之檢查,見;
這些需要做一些操作,供有興趣者自行研究。另外譯者還推薦你若有光碟燒錄機,不妨燒錄備份一到兩套殘局庫,有什麼問題覆蓋回來就是了。不少人用了幾年的殘局庫,也未出現過這種檔案內部錯誤。
A13. Crafty怎麼樣使用殘局庫?
Winboard下的引擎一般都要手工編輯引擎配置檔案。編輯Crafty的引擎配置檔案Crafty.rc,在裡面加一行 tbpath=你的殘局庫硬碟實際路徑。其它引擎的設定大同小異,只不過:1***不同引擎的配置檔名稱可能不同,比如yace是yace.ini,Ruffian是ruffian.ctg 等等,都是文字方式開啟;2*** 引數寫法不同,不過從字面上一般都可以看出是哪個。
假如你是用Fritz等商業程式,則是在option項裡的tablebase標籤設定,以Deep Fritz 7為例如下:
可注意到它有三欄,如果你的殘局庫都放在同一個目錄裡,可以只在第一欄填或按選殘局庫路徑,否則可填更多路徑。殘局庫是可以分放在不同路徑的,目的是可臨時手工選擇使用哪些。那裡還可順便設殘局庫快取數目。
其它軟體的殘局庫設定方法,一般在選單中也不難找到。
A14. 殘局庫檔案的成對性
譬如殘局庫檔案kqkr,即王+後對王+車,但哪方持後哪方持車呢?顯然一個完整的殘局庫應該是白方黑方的情況都要考慮,即要對稱考慮。
早期的Nalimov式殘局庫需要兩個檔案.nbw 和.nbb來考慮這種對稱性,上述例子就是分別有kqkr.nbw.emd和kqkr.nbb.emd兩個檔案。所有殘局庫檔案都是這樣成對出現的,下載時兩個都要下載才構成一個完整的王+後對王+車殘局庫。最後的字尾.emd表示這是經過壓縮的殘局庫檔案,不壓縮的話體積大很多。現在大多數引擎能直接使用壓縮的殘局庫。
但自從六子殘局庫開始出現之後,出現新的格式,某些殘局庫只需要一個檔案就足夠了。但同時也需要更新版本的引擎才支援只需一個檔案的殘局庫,而且絕對對稱的那些殘局,比如krkr等還是兩個檔案都要。這個以後再說。
目前為穩妥著想,最好還是成對檔案都下載使用。
順便說說,免費下載下來的Nalimov殘局檔案是,比如kqkr.nbw.emd,而Chessbase發售的endgame turbo光碟所帶的則是,比如kqkrnbw.emd,中間少了個圓點。但使用起來這兩者看不出有什麼區別,反正Fritz兩種都認。它們可以互換。
A15. 救命!殘局庫還是用不了怎麼辦!
原因可能有:
1、殘局庫路徑指向錯誤;
2、檔案內部錯誤***“腐朽了”***或檔名錯誤地改了;
3、沒有成對下載使用,.nbw 和.nbb要一起有的;
4、殘局庫規格不符合當前引擎要求。
第一個原因最常見,特別是改了路徑卻忘了改指向;檔案“腐朽”有可能出現在下載過程中出錯,也可能硬碟有錯或其它軟硬體操作錯誤導致***斷電、非法操作等有可能導致***;第三個原因其實也經常出現,下載時一定要看清,尤其五子殘局以上的由於太大,不少人都是選擇只下載一部分;第四原因要先了解引擎是否只支援別的殘局庫,一般Nalimov式最通用,但chessmaster就不用它。
如果某些局面裡,引擎奇怪地不願意走最明顯取勝的著法[一般是升變為後],那就要懷疑是不是出現殘局庫不完整的問題【不是前面說的檔案內部錯誤】,其它文章有說。當然前提是你要證實引擎是不是發現還有更明顯的勝法。
A16. 有什麼圖形介面工具可以更直觀察看殘局庫?
1、有一個免費的資料庫工具SCID ;
2、Shredder6的“endgame oracle”;
3、一個叫Wihelm的免費工具。