VLM Analyzer v1.0.0

投稿者: | 2017-06-19

限珠案を解析する「VLM Analyzer」をリリースしました。

VLM Analyzerの特徴は

  • [math]n[/math]手五連(通常は[math]n=4, 5[/math])形式の問題を解図/解析可能
  • ほとんどの五手五連問題を1秒以内に解図可能
  • 全変化の解出力が可能
  • 余詰検出が可能

と高速性はもちろん全変化出力、余詰検知など他のSolverではあまり提供されていない機能を提供しています。なお、以前は二手勝ち(≒四手五連)、三手勝ち(≒五手五連)形式での出題もありましたが、最近はほとんどの作品が[math]n[/math]手五連形式になっているため[math]n[/math]手五連形式のみサポートしています。

ただ、現状ではCUI版のみの提供&Linuxでの動作確認のみとなっており使い勝手という面ではまだまだ改善の余地があります。こちらは追々環境を整えていきたいと思っています。

インストール方法

詳細は別記事にしていますが、GitHubに公開しているレポジトリからソースを取得してビルドする形になります。現状、動作確認をしたのはUbuntu16.04のみですがLinux系(MacOS, CentOSなど)であれば同様の手順でインストールができると思います。

実行方法

実行例として「わくわく連珠ランド」さんで紹介されている3手勝ち(≒五手五連)問題をVLM Analyzerで解析します。(問題の解答が出てくるので自力で解きたい方はまず解いてからご覧ください。)

解図対象となる問題は「影」(高木 光男 二段・作, 初出:連珠世界1969年05月号)です。

この問題を[a-o]形式で表現すると

hhihgifihfjfjheifegehedfdicmdkhmkllclfbicdcbdcengmibhclnkcndmjninlnm

になるのでvlm_analyzer/cuiディレクトリに移り以下を実行すると問題を解図できます。

./build/vlm_analyzer -s hhihgifihfjfjheifegehedfdicmdkhmkllclfbicdcbdcengmibhclnkcndmjninlnm --depth 7

なお、depthオプションは五手五連を解く場合には7を、四手五連を解く場合には5を指定します1)一般には[math]n[/math]手五連を解く場合には[math]2n-3[/math]を指定します。
他にもPOS形式ファイルで保存し(01_影.posとします)と

./build/vlm_analyzer --pos 01_影.pos --depth 7

としても同様に解図できます。数秒もかからず(私の環境では0.466秒で)以下の解図結果が出力されます。

Build:Release
VLM Transposition Info:
  Data type: Exact Board(80 bytes)
  Table size: 6291449
  Table space: 528 MB

Result: Solved
First Move: gc
Best response: Unknown
Proof Tree: gc(ppeb(fafcecgd)(befcecgd)(affcecgd))(dajd(lbicjcke)(ieicjcke)(ggicjcke))(fajd(lbicjcke)(ieicjcke)(ggicjcke))(ebjd(lbicjcke)(ieicjcke)(ggicjcke))(ecjd(lbicjcke)(ieicjcke)(ggicjcke))(fcjd(lbicjcke)(ieicjcke)(ggicjcke))(gdjd(lbicjcke)(ieicjcke)(ggicjcke))(bejd(lbicjcke)(ieicjcke)(ggicjcke))(afjd(lbicjcke)(ieicjcke)(ggicjcke))(ifjd(lbicjcke)(ieicjcke)(ggicjcke))
Dual Solution: Unknown
Depth: 7
Nodes: 305098
ProofTree: 54 / 54 (100 %)
Simulation: 475 / 534 (89 %)
Time(s): 0.466
NPS: 654716

前半はBuild(動作モード)やVLM Transposition Info(置換表と呼ばれる探索結果を記録しておく表に関するログ)で、探索結果は

  • Result: 探索結果(Solvedは解図成功、Terminatedは探索打切、Disprovedは不詰)
  • First Move: 解手順の初手
  • Best response: 最善応手
  • Proof Tree: 全変化を含む解手順([a-o]形式)
  • Dual Solution: 余詰探索結果(Unknownは不明、-は余詰なし、余詰がある場合は余詰手順)
  • Depth: 7の場合は五手五連、5の場合は四手五連
  • Nodes~NPS: 探索ログ

となります。

余詰の有無や最善応手を知りたい場合には–dualオプションを付けて実行します。

./build/vlm_analyzer --dual -s hhihgifihfjfjheifegehedfdicmdkhmkllclfbicdcbdcengmibhclnkcndmjninlnm --depth 7

余詰探索は時間がかかるのでしばらく待つと以下の出力が得られます。

Build:Release
VLM Transposition Info:
  Data type: Exact Board(80 bytes)
  Table size: 6291449
  Table space: 528 MB

Result: Solved
First Move: gc
Best response: gcdajdlbicjcke
Proof Tree: gcpp(eb(fafcecgd)(befcecgd)(affcecgd))(jd(lbicjcke)(ieicjcke)(ggicjcke))
Dual Solution: -
Depth: 7
Nodes: 55184580
ProofTree: 4 / 5 (80 %)
Simulation: 191 / 194 (98.5 %)
Time(s): 59.475
NPS: 927861

「Dual Solution」が「-」となっているので無事、余詰はなさそうだと分かります。限珠案の作成や審査時に余詰がなさそうかの検討に活用いただけるのではと思います。

References   [ + ]

1. 一般には[math]n[/math]手五連を解く場合には[math]2n-3[/math]を指定します。

スポンサーリンク

VLM Analyzer v1.0.0」への1件のフィードバック

  1. ピンバック: VLM AnalyzerでSGF形式に対応 | 連珠プログラム(Quinstella, REAL Core)開発ブログ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です