1.2くらいから考える将棋ブログ

わかった気になるも、よくわからないことを考えていく?

やねうら王のテラショック定跡コマンドで遊ぶー4

 

jotcut-jshakki.hatenablog.com

 続き

 

今回はextend_treeの続きで、extend_treeの際に読み込む定跡、棋譜局面集を変えてどうなるか観察した。

 

前回で作成したexam0.db, exam1.db に対して、

makebook extend_tree book/exam0.db book/blank.sfen book/write-blank-db0.sfen

makebook extend_tree book/exam1.db book/blank.sfen book/write-blank-db1.sfen

makebook extend_tree book/exam0.db book/hashifu.sfen book/write-hashifu-db0.sfen

makebook extend_tree book/exam1.db book/hashifu.sfen book/write-hashifu-db1.sfen

を実行し、それぞれ出力されたsfenを比較した。

入力sfen
blank hashifu
startpos startpos moves 1g1f 1c1d 9g9f 9c9d 7g7f

blank.sfenは何も入力されてない=平手局面であり、hashifu.sfenは端歩を付き合った棋譜局面である。

出力sfen
write-blank-db0 write-blank-db1 write-hashifu-db0 write-hashifu-db1
startpos moves 2g2f 3c3d 2f2e
startpos moves 2g2f 3c3d 7g7f
startpos moves 2g2f 8c8d 2f2e
startpos moves 2g2f 8c8d 7g7f
startpos moves 2g2f 4a3b
startpos moves 7g7f 3c3d 6i7h
startpos moves 7g7f 8c8d 6i7h
startpos moves 7g7f 4a3b
startpos moves 2g2f 3c3d 2f2e 2b3c
startpos moves 2g2f 3c3d 2f2e 4a3b
startpos moves 2g2f 3c3d 7g7f 4c4d
startpos moves 2g2f 3c3d 7g7f 4a3b
startpos moves 2g2f 3c3d 6i7h
startpos moves 2g2f 8c8d 2f2e 8d8e
startpos moves 2g2f 8c8d 2f2e 4a3b
startpos moves 2g2f 8c8d 7g7f 8d8e
startpos moves 2g2f 8c8d 7g7f 4a3b
startpos moves 2g2f 4a3b
startpos moves 7g7f 3c3d 6i7h 4c4d
startpos moves 7g7f 3c3d 6i7h 4a3b
startpos moves 7g7f 8c8d 6i7h 8d8e
startpos moves 7g7f 8c8d 6i7h 4a3b
startpos moves 7g7f 4a3b
startpos moves 1g1f 1c1d 9g9f 9c9d 7g7f startpos moves 1g1f 1c1d 9g9f 9c9d 7g7f

 

それぞれ

write-blank-db0.sfenとwrite-blank-db1.sfenを比較すると、exam1.dbで延長したsfenの方が長い手数で広く局面を登録している。今回のコマンドでは与えられた棋譜局面の末端が平手局面であるので、平手(sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1 ) から定跡手で到達することのできる全局面が書き出されている。そのため、登録局面が多いexam1.dbから作られたwrite-blank-db1.sfenの方が長く広くなっている。

一方でhashifu.sfenとwrite-hashifu-db0.sfen、write-hashifu-db1.sfenは一切変化がない、これは、与えられた棋譜局面での末端が定跡に一切hitしなかったため、全く延長が行われなかったためだと思われる。

 

ここまでの観察で

定跡にhitさせて幅広く延長させたい場合、与える棋譜局面は短いほうがいい(極端に言えばstartposのみ)ということがわかった。

前々回の記事にてextend_treeを行ってもほとんどsfenが変わらなかったと書いたが、ここまでの挙動から振り返ってみるとそれも当然のことで、入力棋譜局面はほとんどが32手までの棋譜である(→hit対象の定跡局面はBの33手目から)のに対し、定跡の手数上限を32手にしていたため、ほとんどの棋譜は定跡にhitせず、延長されなかったということであった。

 

これでextend_treeの大まかな動作がつかめたので、最後に確認として以下のコマンドを実行してみた。

makebook extend_tree book/hashifu.db book/hashifu.sfen book/write-h1.sfen

makebook extend_tree book/hashifu.db book/hashifu2.sfen book/write-h2.sfen

ここでhashifu.dbは

hashifu.db
#YANEURAOU-DB2016 1.00
sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1
1g1f 9c9d 0 24 484
sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/8P/PPPPPPPP1/1B5R1/LNSGKGSNL w - 2
9c9d 1f1e 0 24 484
sfen lnsgkgsnl/1r5b1/1pppppppp/p8/9/8P/PPPPPPPP1/1B5R1/LNSGKGSNL b - 3
1f1e 9d9e 0 24 484<
sfen lnsgkgsnl/1r5b1/1pppppppp/p8/8P/9/PPPPPPPP1/1B5R1/LNSGKGSNL w - 4
9d9e 2h1h 0 24 484
sfen lnsgkgsnl/1r5b1/1pppppppp/9/p7P/9/PPPPPPPP1/1B5R1/LNSGKGSNL b - 5
2h1h 8b9b 0 24 484
sfen lnsgkgsnl/1r5b1/1pppppppp/9/p7P/9/PPPPPPPP1/1B6R/LNSGKGSNL w - 6
8b9b 1h1f 0 24 484
sfen lnsgkgsnl/r6b1/1pppppppp/9/p7P/9/PPPPPPPP1/1B6R/LNSGKGSNL b - 7
1h1f 9b9d 0 24 484
sfen lnsgkgsnl/r6b1/1pppppppp/9/p7P/8R/PPPPPPPP1/1B7/LNSGKGSNL w - 8
9b9d 1f2f 0 24 484

である 

 

各入出力sfen
hashifu.sfen write-h1.sfen hashifu2.sfen write-h2.sfen
startpos moves 1g1f 1c1d 9g9f 9c9d 7g7f startpos moves 1g1f 1c1d 9g9f 9c9d 7g7f startpos moves 1g1f 1c1d 9g9f 9c9d 7g7f
startpos moves 1g1f 1c1d
startpos moves 1g1f
startpos moves 1g1f 9c9d
startpos moves 1g1f 9c9d 1f1e 9d9e
startpos moves 1g1f 9c9d 1f1e 9d9e 2h1h
startpos moves 1g1f 1c1d 9g9f 9c9d 7g7f
startpos moves 1g1f 1c1d
startpos moves 1g1f 9c9d 1f1e 9d9e 2h1h 8b9b 1h1f 9b9d

 

このようによしなにしてくれる。

 

現状のまとめ

やねうら王でmakebook extend_treeを行う際、特別な事情がなければ読み込み棋譜は平手局面(startposのみ)にしておくとよい。