倶楽部入口倶楽部活動検索累計訪問者数
一年目 約9万3千 |
王手の判断合法手生成時に必ずチェックしなければならない事の一つに「生成された手が自玉の王手にならない」があります。人間にとっては馬鹿らしいほど基本中の基本ですがソフトを書く身としては避けては通れない道ですね。 その方法としては、「候補手」を指した後... ①敵側の駒を全部動かして自玉を取れる手が存在するかを調べる ⇒ 一番単純 ②自玉の位置に(玉以外の)他の駒が有ると仮定して、そこから駒を動かす。その到達地点に同じ敵の駒が有れば王手が存在する。 ⇒ これは①を反転した見方です。 (例)自玉の位置に飛車が有ると仮定し、そこから到達できる升を全てチェック。敵の飛車がその中に有るならば(敵の飛車も自玉の位置まで到達できるので)王手の存在が確認されました。 ③敵の駒が利いている全ての升をマークします。王がマークされた升に乗っているなら王手確認です。 ⇒ ①と似ているがチョッと違う。更には「利き」の情報は(評価関数での)二次的使用ができます。 「王手チェック」は合法手候補全てに繰り返さないといけませんので。 (A)可能な限り速く がルールです。(将棋ソフト書くには何でも「速く、速く、より速く」なのね) 現在の所、無明君は(こうなることは想定内なのですが...以下参照)28%の検索時間を「王手チェック」に取られているので改良なのです。 無明君は現在の所「③敵の駒が利いている全ての升をマークします」を使用しています。ところが一手生成する毎にマーキングを始めからやり直すのですこぶる効率悪しです。駒を動かした差分だけをアップデートすればより速く成ります。(と思う) (補足) 更には「王手が掛かっていた場合、応手はそれを解消しなければならない」も同じ場所でチェックしています。解消できない場合は「詰み」ですね。
投稿者: 紫外線 投稿日時: 日, 10/04/2009 - 14:17 categories [ ]
返信 |
ID取得(無料)してログインすると広告は不表示掲示板更新状況ID取得(無料)してログインすると広告は不表示 |
最近のコメント
15分 30秒前
1時間 50分前
2時間 1分前
2時間 49分前
4時間 19分前
4時間 47分前
6時間 24分前
6時間 32分前
6時間 11分前
7時間 18分前
8時間 1分前
8時間 52分前
17時間 38分前
18時間 25分前
19時間 23分前
21時間 24分前
21時間 56分前
22時間 42分前
1日 31分前
1日 57分前