倶楽部入口倶楽部活動検索累計訪問者数
一年目 約9万3千 |
詰め将棋エンジン - 詰め太郎の冒険我は今週から年明けまで休暇なのでグウタラしながら無明のコード書きです。 誕生当時はちょいと複雑な詰め将棋が苦手な詰め太郎君でしたが色々改良・改造してそれなりに速くなりました。 変更点 ①普通は合法手の生成はその度に行いますが、詰め将棋の場合手数が限られるので一度訪れた局面からの合法手は記憶しておき再使用します。(合法手生成が遅くてもこれならカナリ時間短縮になります) ②「詰め」の判断も時間が比較的掛かるので詰まない局面は覚えておき判断の高速化を図ります。 ③飛・角・香を打つ手のうち玉との距離があって意味の無い合い駒が起きる手は削る。 (例) 13手詰め この場合、飛は8箇所に打てますが9二、8二、7二...に打つ手は無駄なので削ります。 ④(安直ですが)並列化でSPEED UPです。 結果 速度は持ち駒(大駒・香の有無)によってかなり違ってくるようです。 13手詰め ラップトップ(2コア)で計測して約50秒で回答を見つけました。初めてチャレンジした時は(①~④無しで)時間が掛かりすぎたのでギブアップしました。 13手詰め この様に大駒・香が持ち駒に無い場合は10秒程度ですみます。 発見 素朴な質問 以前「飛・角・歩の不成りは在り得るか?」と質問しましたが、ここにその回答(?)を見つけました。 15手詰め 詰める為には不成りが必要でこれ無しでは正解にたどり着けません。 いや~、詰め将棋は奥が深いですね。 追記 13手詰め ...は改良の結果、ラップトップ(2コア)では30秒程度に短縮ですう。
投稿者: 紫外線 投稿日時: 月, 12/21/2009 - 11:10 categories [ ]
返信 |
ID取得(無料)してログインすると広告は不表示掲示板更新状況ID取得(無料)してログインすると広告は不表示 |
最近のコメント
11分 26秒前
1時間 5分前
2時間 40分前
2時間 51分前
3時間 39分前
5時間 9分前
5時間 37分前
7時間 14分前
7時間 22分前
7時間 1分前
8時間 8分前
8時間 51分前
9時間 42分前
18時間 28分前
19時間 15分前
20時間 13分前
22時間 14分前
22時間 46分前
23時間 32分前
1日 1時間前