國際象棋譯文苑》文摘
 
殘局庫
 
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回合自然限著規則。為了克服它們的缺點,已經提出了DTZDTR另外兩種類型。但至今只停留在理論上。
  說到具體每種格式的區別,還不能簡單就說得清楚的。Crafty的作者于200010月在新聞組作過如下解釋:
  “Edwards式:屬于將殺步數(DTM)類型。Edwards式的主要問題是這種殘局庫體積比其它的龐大。
  “Nalimov式:也屬于將殺步數(DTM)類型,但Nalimov式的殘局庫文件是壓縮的,也可以以壓縮形式使用而無不利之處。對于擁有全部345子殘局的殘局庫,別的格式其文件總數大小超過30G,而使用這種格式的大約只有7.5G
  “Thompson式:屬于變換步數(DTC)類型(每當發生吃子,殘局的‘級數’都變小)。這種格式難以以壓縮形式使用,相對于Nalimov式,它提供的信息也不相同……比如,它告訴你一些信息,卻沒有區分是負還是和,而Nalimov式對此則有區分。
  “Nalimov式是最佳選擇。幾乎每個引擎都支持它……”
  當然,他沒有提及僅是Chessmaster9000專用的EDGB格式殘局庫,因為EDGB20028月才發布的。Nalimov式仍然是最流行的在用殘局庫格式,因此我想再多談一點這種格式。
  Nalimov式幾近“完美”,因為它把吃過路兵也考慮進去了。但是沒把王車易位也考慮進去。只不過,大概只有排局迷才會對此計較。
  總的來說,現代幾乎所有的國際象棋程序包括大多數Winboard引擎使用Nalimov式殘局庫,一部分原因是它們不設版權,一部分原因它們更高效。現在Nalimov式殘局庫已經出了部分6子殘局庫。Nalimov式殘局庫有兩種形式,壓縮的和非壓縮的,壓縮的以“emd”為文件后綴。
  多數現代棋弈程序能解壓使用壓縮的殘局庫,例如Crafty16.5版本后就支持壓縮的Nalimov式殘局庫。我注意到有個Winboard引擎Esc只能用非壓縮的。
  殘局庫還有其它一些格式,但比較少見。比較著名的,商業性高級棋弈軟件Nimzo8使用它的Nimzo殘局庫,這種殘局庫放入到內存中使用,因此讀取比較快。一直沒有公開發表但棋力不俗的Ferret也使用它的專用殘局庫。我文章余下部分,除非特別說明,殘局庫都是指Nalimov式。
 
  A4. 常見棋弈程序是否支持、以及各支持什么格式的殘局庫?
  這里有一些:Chessbase出版發行的那些大名鼎鼎的高級軟件比如(Deep)FritzJuniorHIARCSShredder 5.0+等都支持Nalimov式;Shredder 5.0+另支持ThompsonNimzo8+另支持自身的Nimzo殘局庫;Rebel Tiger 2.0Chess Tiger 14.0也支持NalimovCT15也是】,早期Rebel不支持任何殘局庫;Chessmaster 9000及以后版本支持其專用的EDGB殘局庫;Chess Genius 6.5支持Thompson式;絕大部分免費的Winboard引擎都是支持Nalimov式,其中Crafty15.21版本之前使用Edwards式,之后只支持Nalimov式;16.5版本之后可使用壓縮的Nalimov式殘局庫。
 
  A5. 從哪里可得到殘局庫?
  如果你有Chessbase發行的軟件比如Fritz,你就同時擁有3-4子壓縮Nalimov式殘局庫。但你可能覺得不夠,有三種方法可得到更多:購買、下載、自造。如果你有Chessmaster9000CD原盤上已附帶所有4子和部分5子殘局庫。寫作此文時,Chessmaster9000專用的這種EDGB殘局庫既還沒有得出售、也沒有地方下載。
  Chessbase出版發行的The Chessbase Endgame Turbo CD一共四張CD,包含Nalimov式全部34子、以及部分重要的5子殘局庫,還可找得到一套9CD的,包含更全。
  關于下載,你可以到ftp://ftp.cis.uab.edu/pub/hyatt/TB去下載所有345和少部分6子殘局庫【譯注:對于熟悉國際象棋軟件的,這個FTP站可說大大有名,既可以下載Nalimov式殘局庫,也是提供各版本Crafty下載的老家】,要下載5子以上的殘局庫,你需要較快的網上下載速度,因為它們很大。【單單一個文件上百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子殘局,需要很快的電腦和大量的內存。
 
  A9. 殘局庫文件有多大?我需要完整的5子殘局庫嗎?
  注意都是指Nalimov式。
  安裝殘局庫文件越多,程序的棋力就越強。可是,一套完整的345子殘局文件要占7.05GB的硬盤空間!【所以想下載的話有些心理準備】注意你購買的很多號稱“全版”的殘局庫CD其實并不是完整的,有些不重要的殘局庫被剔除了,比如王+++象對單王這樣的5子殘局,引擎靠算完全足夠了,沒必要用殘局庫。人們多數都是下載完整的3子和4子庫,然后選擇一些5子庫來下載。由于殘局中有車存在的情況較多,所以優先下載帶車的殘局庫文件。
  一般不同子數的殘局庫文件放在同一目錄下,然后在引擎的設置文件中指明殘局庫的路徑就可使用了。除非另有特別需求可有些放在子目錄下,而且要檢查一下你的引擎、或界面是否允許設置指向不同的殘局庫路徑。Yace的作者指出,幾乎所有的引擎都支持同時指向不同的殘局庫路徑。
  使用殘局庫時,有個問題要注意處理好,否則可能出現啼笑皆非的情況。比如你有王++兵對王+車的殘局庫文件(假定你已有全套34子殘局庫),這種情況下你應同時還有王++車對王+車的殘局庫文件,因為要考慮兵升變為后的情況!
  有些引擎很“笨”的,假如你缺少王++車對王+車的殘局庫文件,在某些強方可勝的王++兵對王+車殘局里,且兵可升變為后的情況下,它竟然不懂得升變的!為什么會這樣呢?因為你有王++兵對王+車的殘局庫文件,對于當前局面引擎通過查找殘局庫看到強方勝;而對于兵升變為后的局面,引擎找不到相應王++車對王+車殘局庫文件,雖然兵升變為后,引擎當然評價強方獲得很高分的優勢(其實也是勝勢),但也是只會定為“相對不確定”,也就是說很高分的優勢還是不如已明確指出的勝利“更高分”!類似的情況還有,比方你有王++兵對王+后的殘局庫文件卻沒有王++后對王+后文件,那么……
  有些引擎比較“智能”,能避免這個問題,因此缺乏某些殘局庫文件也沒關系;但有些比如FritzTigerAmyCometGandalf就不會處理了。【譯注:原文如此,但他沒說到哪個版本的FritzTiger都有這個問題】
  當然,上述那個情況,如果是存在有快速將殺的可能,倒不一定出現這個問題。
  注意,Yace目前還不支持4+15子殘局庫,即一方有王和隨便三子/兵,另一方單王;【譯注:4+1未必很好勝,甚至難勝的;原文提到,但沒說什么,這種特殊情況,比如:王+三只最邊的兵疊在一起對處在這邊上的單王……】
 
  A10. 關于6子殘局庫
  就我所知,使用到6子殘局的引擎還不多,盡管從原理上讓引擎使用6子殘局庫很簡單。
  6子殘局庫的用法沒什么變的,一樣。能下載Nalimov6子殘局庫的地方是ftp://ftp.cis.uab.edu/pub/hyatt/TB/Six/,目前還不多,而且一個文件就大于2G,所以分成兩部分供下載。
  引擎使用查找6子殘局庫,對于系統還有一些嚴厲的技術要求,要求很高。
  目前的6子殘局庫,不包含兵的幾乎齊了,而包含兵的還沒出現。估計全套的6子殘局庫要占用1000G的空間大小。
 
  A11. 關于殘局庫是否工作正常和是否出現內部錯誤。
  殘局庫的內部錯誤,是指下載下來或自己制作的殘局庫中的某個(或某些)文件內部出現“腐朽”,結果不但發揮不了效力,甚至可能導致某些使用它()的引擎啟動不了。這當然是個問題,想想看殘局庫的文件有這么多啊,想抓出究竟是哪一個文件有內部錯誤很不容易。
  不過要知道殘局庫是否工作正常并非沒有辦法,用引擎中分析局面時,特別是專門根據你所擁有的殘局庫而設定局面時,往往光憑觀察就知道殘局庫是否在使用:引擎走棋或給出估值很迅速,“想都不想地”,而且給出的估值一般恒定不變【譯注:另外那些“一眼看出”數十步之后殺棋的肯定使用到了殘局庫】。有些引擎在分析模式時會在思考變化上指出估值是來自殘局庫,例如Crafty在主變后方會加上“<EGTB>”字樣。【譯注:也可以打開引擎的log模式,分析后手工文本方式查看log文件,往往有說殘局庫的使用情況,比如Ruffian
  假如你使用Nalimov式殘局庫,要批量檢查一大批文件有更簡單辦法:
1、使用datacomp.exe
2、下載殘局庫時會見到MD5驗證文件,可以使用之檢查,見http://www.aarontay.per.sg/Winboard/md5.html
  這些需要做一些操作,供有興趣者自行研究。另外譯者還推薦你若有光盤刻錄機,不妨刻錄備份一到兩套殘局庫,有什么問題覆蓋回來就是了。不少人用了幾年的殘局庫,也未出現過這種文件內部錯誤。
 
  A13. Crafty怎么樣使用殘局庫?
  Winboard下的引擎一般都要手工編輯引擎配置文件。編輯Crafty的引擎配置文件Crafty.rc,在里面加一行 tbpath=你的殘局庫硬盤實際路徑。其它引擎的設置大同小異,只不過:1) 不同引擎的配置文件名稱可能不同,比如yaceyace.iniRuffianruffian.ctg 等等,都是文本方式打開;2) 參數寫法不同,不過從字面上一般都可以看出是哪個。
  假如你是用Fritz等商業程序,則是在option項里的tablebase標簽設定,以Deep Fritz 7為例如下:
 
 
  可注意到它有三欄,如果你的殘局庫都放在同一個目錄里,可以只在第一欄填或按選殘局庫路徑,否則可填更多路徑。殘局庫是可以分放在不同路徑的,目的是可臨時手工選擇使用哪些。那里還可順便設殘局庫緩存數目。
  其它軟件的殘局庫設定方法,一般在菜單中也不難找到。
 
  A14. 殘局庫文件的成對性
  譬如殘局庫文件kqkr,即王+后對王+車,但哪方持后哪方持車呢?顯然一個完整的殘局庫應該是白方黑方的情況都要考慮,即要對稱考慮。
  早期的Nalimov式殘局庫需要兩個文件.nbw .nbb來考慮這種對稱性,上述例子就是分別有kqkr.nbw.emdkqkr.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 http://scid.sourceforge.net/,它的作者說有這個功能;
2Shredder6的“endgame oracle”;
3、一個叫Wihelm的免費工具。
 
  出處:Aaron's Winboard and Chess Engines FAQ
  譯者:michael
  類型:略有刪節
  • 上一篇 棋弈軟件基礎——開局庫、哈希表
  • 下一篇 棋弈軟件基礎——殘局庫對引擎棋力的負面影響
  • 返 回 象棋百科全書——電腦象棋
  • www.ejnwjd.tw
    快乐双彩今晚开奖结果