國際象棋殘局庫
什么是國際象棋殘局庫?有多少種國際象棋殘局庫格式?彼此有什么不同?下面學習啦小編給你介紹國際象棋殘局庫吧,歡迎閱讀。
國際象棋殘局庫介紹
Aaron Tay
A1. 什么叫殘局庫?(endgame tablebase,簡稱egtb)
概述性地說殘局數(shù)據(jù)庫是儲存了殘局局面[經(jīng)回溯分析計算過]的數(shù)據(jù)庫文件,它使用在棋弈程序上,當進入殘局時只要適合使用的殘局數(shù)據(jù)庫文件存在,程序?qū)⒆叩梅浅M昝馈?/p>
多數(shù)棋弈引擎并不一定要到達殘局庫所涵蓋的局面時才使用殘局庫。例如,在到達如此局面之前幾步,引擎計算(但還沒走棋)一系列交換之后直接進入殘局庫里存有的局面。引擎于是搜索探查殘局庫并取得那個設想局面的結果。如此當然提高了棋力。
【譯注:作者說他不熟悉殘局數(shù)據(jù)庫的技術細節(jié);譯者也不熟悉,那也需要一定數(shù)學和程序設計基礎。但作者的解釋未免也太過簡單些了,不妨試著這樣解釋:殘局庫是經(jīng)特別算法產(chǎn)生的特定格式的、儲存各限定棋子數(shù)目的殘局之所有局面及其估值的數(shù)據(jù)庫文件集合。比如王+車對王的最簡單殘局,其相應數(shù)據(jù)庫文件就儲存了由這三個棋子在棋盤上組成的一切可能局面及估值,所以當局面到達王+車對王局面時,引擎就直接在數(shù)據(jù)庫中搜索、對照局面并取出相應估值,這樣它“想都不用想”就知道該如何走。因為制作殘局庫文件時,用回溯分析計算過所有局面,得出最佳結果,因此按殘局庫里的走法走相對應的殘局是最正確最完美的(這是對合格殘局庫的要求)。所以使用殘局庫大大提高了引擎走末段殘局的棋力--幾乎不花時間計算且又走出最準確的棋步。目前,棋子數(shù)目最大的是六子殘局,即雙方剩下棋子加起來一共六只,不管什么組合(顯而易見,雙方各有一只王加起來就占了兩子)?!?/p>
A2. 有多少種殘局庫格式?彼此有什么不同?
有各種各樣的殘局庫格式,包括肯·托普森式(Ken Thompson)、史蒂文·愛德華茲式(Steven J. Edwards)、歐根尼·納利莫夫式(Eugene Nalimov)以及Chessmaster9000專用的EDGB殘局庫格式。
不過總的來說它們劃分為兩種殘局庫類型:將殺步數(shù)(DTM)類型和變換步數(shù)(DTC)類型。粗略地以非專業(yè)語言來說,彼此之間區(qū)別如下:
將殺步數(shù)(DTM)類型:即Distance to mate,這種類型的庫為每一個局面儲存最短的將殺可能(以層,即ply來計算,一層相當于半個回合)。例如Nalimov殘局庫。
變換步數(shù)(DTC)類型:即Distance to conversion,這種類型的庫儲存每一個局面及其一個“轉(zhuǎn)換”之間的最短層數(shù)。所謂一個轉(zhuǎn)換,指或者是兵升變,或者某子被吃去,或者出現(xiàn)將殺。例如Thompson殘局庫。
另外,無論是DTM還是DTC類型的殘局庫,都不能識別50回合自然限著規(guī)則。為了克服它們的缺點,已經(jīng)提出了DTZ和DTR另外兩種類型。但至今只停留在理論上。
說到具體每種格式的區(qū)別,還不能簡單就說得清楚的。Crafty的作者于2000年10月在新聞組作過如下解釋:
“Edwards式:屬于將殺步數(shù)(DTM)類型。Edwards式的主要問題是這種殘局庫體積比其它的龐大。
“Nalimov式:也屬于將殺步數(shù)(DTM)類型,但Nalimov式的殘局庫文件是壓縮的,也可以以壓縮形式使用而無不利之處。對于擁有全部3、4、5子殘局的殘局庫,別的格式其文件總數(shù)大小超過30G,而使用這種格式的大約只有7.5G。
“Thompson式:屬于變換步數(shù)(DTC)類型(每當發(fā)生吃子,殘局的‘級數(shù)’都變小)。這種格式難以以壓縮形式使用,相對于Nalimov式,它提供的信息也不相同……比如,它告訴你一些信息,卻沒有區(qū)分是負還是和,而Nalimov式對此則有區(qū)分。
“Nalimov式是最佳選擇。幾乎每個引擎都支持它……”
當然,他沒有提及僅是Chessmaster9000專用的EDGB格式殘局庫,因為EDGB是2002年8月才發(fā)布的。Nalimov式仍然是最流行的在用殘局庫格式,因此我想再多談一點這種格式。
Nalimov式幾近“完美”,因為它把吃過路兵也考慮進去了。但是沒把王車易位也考慮進去。只不過,大概只有排局迷才會對此計較。
總的來說,現(xiàn)代幾乎所有的國際象棋程序包括大多數(shù)Winboard引擎使用Nalimov式殘局庫,一部分原因是它們不設版權,一部分原因它們更高效?,F(xiàn)在Nalimov式殘局庫已經(jīng)出了部分6子殘局庫。Nalimov式殘局庫有兩種形式,壓縮的和非壓縮的,壓縮的以“emd”為文件后綴。
多數(shù)現(xiàn)代棋弈程序能解壓使用壓縮的殘局庫,例如Crafty從16.5版本后就支持壓縮的Nalimov式殘局庫。我注意到有個Winboard引擎Esc只能用非壓縮的。
殘局庫還有其它一些格式,但比較少見。比較著名的,商業(yè)性高級棋弈軟件Nimzo8使用它的Nimzo殘局庫,這種殘局庫放入到內(nèi)存中使用,因此讀取比較快。一直沒有公開發(fā)表但棋力不俗的Ferret也使用它的專用殘局庫。我文章余下部分,除非特別說明,殘局庫都是指Nalimov式。
A4. 常見棋弈程序是否支持、以及各支持什么格式的殘局庫?
這里有一些:Chessbase出版發(fā)行的那些大名鼎鼎的高級軟件比如(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發(fā)行的軟件比如Fritz,你就同時擁有3-4子壓縮Nalimov式殘局庫。但你可能覺得不夠,有三種方法可得到更多:購買、下載、自造。如果你有Chessmaster9000,CD原盤上已附帶所有4子和部分5子殘局庫。寫作此文時,Chessmaster9000專用的這種EDGB殘局庫既還沒有得出售、也沒有地方下載。
Chessbase出版發(fā)行的The Chessbase Endgame Turbo CD一共四張CD,包含Nalimov式全部3和4子、以及部分重要的5子殘局庫,還可找得到一套9CD的,包含更全。
關于下載,你可以到ftp://ftp.cis.uab.edu/pub/hyatt/TB去下載所有3、4、5和少部分6子殘局庫【譯注:對于熟悉國際象棋軟件的,這個FTP站可說大大有名,既可以下載Nalimov式殘局庫,也是提供各版本Crafty下載的老家】,要下載5子以上的殘局庫,你需要較快的網(wǎng)上下載速度,因為它們很大?!締螁我粋€文件上百M是很平常的,而且文件很多】
至于自造殘局庫,可使用tbgen.exe這個工具,下載:
ftp://ftp.cis.uab.edu/pub/hyatt/TB/tbexe.zip,教程可在http://moq.pythoz.com/WinBoard.htm找;http://www.aarontay.per.sg/winboard/EndgameP.html也有。但想自造5子殘局,需要很快的電腦和大量的內(nèi)存。
A9. 殘局庫文件有多大?我需要完整的5子殘局庫嗎?
注意都是指Nalimov式。
安裝殘局庫文件越多,程序的棋力就越強??墒牵惶淄暾?、4、5子殘局文件要占7.05GB的硬盤空間!【所以想下載的話有些心理準備】注意你購買的很多號稱“全版”的殘局庫CD其實并不是完整的,有些不重要的殘局庫被剔除了,比如王+后+車+象對單王這樣的5子殘局,引擎靠算完全足夠了,沒必要用殘局庫。人們多數(shù)都是下載完整的3子和4子庫,然后選擇一些5子庫來下載。由于殘局中有車存在的情況較多,所以優(yōu)先下載帶車的殘局庫文件。
一般不同子數(shù)的殘局庫文件放在同一目錄下,然后在引擎的設置文件中指明殘局庫的路徑就可使用了。除非另有特別需求可有些放在子目錄下,而且要檢查一下你的引擎、或界面是否允許設置指向不同的殘局庫路徑。Yace的作者指出,幾乎所有的引擎都支持同時指向不同的殘局庫路徑。
使用殘局庫時,有個問題要注意處理好,否則可能出現(xiàn)啼笑皆非的情況。比如你有王+車+兵對王+車的殘局庫文件(假定你已有全套3和4子殘局庫),這種情況下你應同時還有王+后+車對王+車的殘局庫文件,因為要考慮兵升變?yōu)楹蟮那闆r!
有些引擎很“笨”的,假如你缺少王+后+車對王+車的殘局庫文件,在某些強方可勝的王+車+兵對王+車殘局里,且兵可升變?yōu)楹蟮那闆r下,它竟然不懂得升變的!為什么會這樣呢?因為你有王+車+兵對王+車的殘局庫文件,對于當前局面引擎通過查找殘局庫看到強方勝;而對于兵升變?yōu)楹蟮木置?,引擎找不到相應?后+車對王+車殘局庫文件,雖然兵升變?yōu)楹?,引擎當然評價強方獲得很高分的優(yōu)勢(其實也是勝勢),但也是只會定為“相對不確定”,也就是說很高分的優(yōu)勢還是不如已明確指出的勝利“更高分”!類似的情況還有,比方你有王+后+兵對王+后的殘局庫文件卻沒有王+后+后對王+后文件,那么……
有些引擎比較“智能”,能避免這個問題,因此缺乏某些殘局庫文件也沒關系;但有些比如Fritz、Tiger、Amy、Comet、Gandalf就不會處理了?!咀g注:原文如此,但他沒說到哪個版本的Fritz和Tiger都有這個問題】
當然,上述那個情況,如果是存在有快速將殺的可能,倒不一定出現(xiàn)這個問題。
注意,Yace目前還不支持4+1的5子殘局庫,即一方有王和隨便三子/兵,另一方單王;【譯注:4+1未必很好勝,甚至難勝的;原文提到,但沒說什么,這種特殊情況,比如:王+三只最邊的兵疊在一起對處在這邊上的單王……】
A10. 關于6子殘局庫
就我所知,使用到6子殘局的引擎還不多,盡管從原理上讓引擎使用6子殘局庫很簡單。
6子殘局庫的用法沒什么變的,一樣。能下載Nalimov式6子殘局庫的地方是ftp://ftp.cis.uab.edu/pub/hyatt/TB/Six/,目前還不多,而且一個文件就大于2G,所以分成兩部分供下載。
引擎使用查找6子殘局庫,對于系統(tǒng)還有一些嚴厲的技術要求,要求很高。
目前的6子殘局庫,不包含兵的幾乎齊了,而包含兵的還沒出現(xiàn)。估計全套的6子殘局庫要占用1000G的空間大小。
A11. 關于殘局庫是否工作正常和是否出現(xiàn)內(nèi)部錯誤。
殘局庫的內(nèi)部錯誤,是指下載下來或自己制作的殘局庫中的某個(或某些)文件內(nèi)部出現(xiàn)“腐朽”,結果不但發(fā)揮不了效力,甚至可能導致某些使用它(們)的引擎啟動不了。這當然是個問題,想想看殘局庫的文件有這么多啊,想抓出究竟是哪一個文件有內(nèi)部錯誤很不容易。
不過要知道殘局庫是否工作正常并非沒有辦法,用引擎中分析局面時,特別是專門根據(jù)你所擁有的殘局庫而設定局面時,往往光憑觀察就知道殘局庫是否在使用:引擎走棋或給出估值很迅速,“想都不想地”,而且給出的估值一般恒定不變【譯注:另外那些“一眼看出”數(shù)十步之后殺棋的肯定使用到了殘局庫】。有些引擎在分析模式時會在思考變化上指出估值是來自殘局庫,例如Crafty在主變后方會加上“”字樣。【譯注:也可以打開引擎的log模式,分析后手工文本方式查看log文件,往往有說殘局庫的使用情況,比如Ruffian】
假如你使用Nalimov式殘局庫,要批量檢查一大批文件有更簡單辦法:
1、使用datacomp.exe;
2、下載殘局庫時會見到MD5驗證文件,可以使用之檢查,見http://www.aarontay.per.sg/Winboard/md5.html;
這些需要做一些操作,供有興趣者自行研究。另外譯者還推薦你若有光盤刻錄機,不妨刻錄備份一到兩套殘局庫,有什么問題覆蓋回來就是了。不少人用了幾年的殘局庫,也未出現(xiàn)過這種文件內(nèi)部錯誤。
A13. Crafty怎么樣使用殘局庫?
Winboard下的引擎一般都要手工編輯引擎配置文件。編輯Crafty的引擎配置文件Crafty.rc,在里面加一行 tbpath=你的殘局庫硬盤實際路徑。其它引擎的設置大同小異,只不過:1)不同引擎的配置文件名稱可能不同,比如yace是yace.ini,Ruffian是ruffian.ctg 等等,都是文本方式打開;2) 參數(shù)寫法不同,不過從字面上一般都可以看出是哪個。
假如你是用Fritz等商業(yè)程序,則是在option項里的tablebase標簽設定,以Deep Fritz 7為例如下:
可注意到它有三欄,如果你的殘局庫都放在同一個目錄里,可以只在第一欄填或按選殘局庫路徑,否則可填更多路徑。殘局庫是可以分放在不同路徑的,目的是可臨時手工選擇使用哪些。那里還可順便設殘局庫緩存數(shù)目。
其它軟件的殘局庫設定方法,一般在菜單中也不難找到。
A14. 殘局庫文件的成對性
譬如殘局庫文件kqkr,即王+后對王+車,但哪方持后哪方持車呢?顯然一個完整的殘局庫應該是白方黑方的情況都要考慮,即要對稱考慮。
早期的Nalimov式殘局庫需要兩個文件.nbw 和.nbb來考慮這種對稱性,上述例子就是分別有kqkr.nbw.emd和kqkr.nbb.emd兩個文件。所有殘局庫文件都是這樣成對出現(xiàn)的,下載時兩個都要下載才構成一個完整的王+后對王+車殘局庫。最后的后綴.emd表示這是經(jīng)過壓縮的殘局庫文件,不壓縮的話體積大很多。現(xiàn)在大多數(shù)引擎能直接使用壓縮的殘局庫。
但自從六子殘局庫開始出現(xiàn)之后,出現(xiàn)新的格式,某些殘局庫只需要一個文件就足夠了。但同時也需要更新版本的引擎才支持只需一個文件的殘局庫,而且絕對對稱的那些殘局,比如krkr等還是兩個文件都要。這個以后再說。
目前為穩(wěn)妥著想,最好還是成對文件都下載使用。
順便說說,免費下載下來的Nalimov殘局文件是,比如kqkr.nbw.emd,而Chessbase發(fā)售的endgame turbo光盤所帶的則是,比如kqkrnbw.emd,中間少了個圓點。但使用起來這兩者看不出有什么區(qū)別,反正Fritz兩種都認。它們可以互換。
A15. 救命!殘局庫還是用不了怎么辦!
原因可能有:
1、殘局庫路徑指向錯誤;
2、文件內(nèi)部錯誤(“腐朽了”)或文件名錯誤地改了;
3、沒有成對下載使用,.nbw 和.nbb要一起有的;
4、殘局庫規(guī)格不符合當前引擎要求。
第一個原因最常見,特別是改了路徑卻忘了改指向;文件“腐朽”有可能出現(xiàn)在下載過程中出錯,也可能硬盤有錯或其它軟硬件操作錯誤導致(斷電、非法操作等有可能導致);第三個原因其實也經(jīng)常出現(xiàn),下載時一定要看清,尤其五子殘局以上的由于太大,不少人都是選擇只下載一部分;第四原因要先了解引擎是否只支持別的殘局庫,一般Nalimov式最通用,但chessmaster就不用它。
如果某些局面里,引擎奇怪地不愿意走最明顯取勝的著法[一般是升變?yōu)楹骫,那就要懷疑是不是出現(xiàn)殘局庫不完整的問題【不是前面說的文件內(nèi)部錯誤】,其它文章有說。當然前提是你要證實引擎是不是發(fā)現(xiàn)還有更明顯的勝法。
A16. 有什么圖形界面工具可以更直觀察看殘局庫?
1、有一個免費的數(shù)據(jù)庫工具SCID http://scid.sourceforge.net/,它的作者說有這個功能;
2、Shredder6的“endgame oracle”;
3、一個叫Wihelm的免費工具。