2009-05-01から1ヶ月間の記事一覧
C#初心者が最初に学ぶべきことはマネージコード-アンマネージコード間のデータの受け渡しであることは論をまたない。 これを押さえれば、使い慣れた言語で生成した“Hello World!”文字列をC#に持ってきて表示させれは“Hello World!”のできあがりだからだ(何 …
局面を列挙する部分に5つのfeatureを盛り込もうとしたら、知能が足りないので丸一日かかった 一カ所Kyokumen::MoveTo()からKyokumen::AddMove()を呼んだとき、本当に正しくピン判定されるのか疑問に思えてしばらく悩んだ 遠回りの論理により結局間違いじゃな…
[AI]駒移動型ゲームの局面間距離の評価手法 落とし穴法というものがある(のをうさぴょん本で知った)。 これは、盤上の駒移動に計量の概念を持ち込むことで改良できるはずだ(とっくの昔に誰かが思いついてると予想)。 シュワルツ!(と叫んで逃げる飛び去る局…
いったい天王山いくつあるんだYO! つか、探索自重の人なつもりので、これは へーそうれつか、 ぐらいで済まさしてもらおうかな、、
Azomanから本がやっと届いた。 池泰弘『コンピュータ将棋アルゴリズム─最強アルゴリズムの探求とプログラミング』(I/O BOOKS) 松浦健一郎,司ゆき『パズルゲームアルゴリズムマニアックス』(ソフトバンククリエイティブ) 前者はうさぴょんとれさぴょんの作者…
何を言っているのか(ry GHI問題については下記に詳しい説明がありますん↓↓↓ ttp://www.fun.ac.jp/~kishi/pdf_file/kishimoto_gpw2004_paper.pdf つか漏れは今のところコレしか読んでいない(何 GHI問題まとめ 深さ優先探索である手筋aが導かれる過程(深さ方向…
『コンピュータ将棋アルゴリズム─最強アルゴリズムの探求とプログラミング』の著者名が間違ってたので修正しました。
αβ探索(またはdf-pn探索)において枝のカットを効率よく行うには子ノードの列挙順序が重要だ。 特に反復深化させる場合、第k回目の反復において深度d毎にαβ幅極小だった子ノードを記憶しておいて、第k+1回の探索(最大深度を第k回より増す)で深度dに達したとき…
ようわからんが、df-pn探索アルゴリズムをC++で書き下してみる。 基本形(?) 多分こんな感じ…? #include <limits.h> class Node { public: void ResetChildNode(); Node& NewChildNode(); Node& NewNullNode(); bool HasValue(); void Dispose(); }; #define INFINITE </limits.h>…
df-pnが難しいという声がちらほら見聞されるが、ポイントを正しく押さえればこれはさほど難しくはない。 準備 まず「詰み」(=必至)を自明なものとそうでないものに分けよう。 自明な詰み そのノードの局面を見るだけで判断がつき、子ノードを見る必要がない…
ここに考えをぺらぺら書き散らしてるのは、誰かが見てるかもと思うと興奮する作業のモチベーションが上がるから好きでそうしているのだが、仮にひょっとしてもしかすると万が一本当に見てる人がいたりしてネガティブなコメントをよこしたりするとモチベが最…
駄目だった。 上の問題を定式化すると n1->n2->n3という遷移でpが勝利した場合、n3において成立した勝利条件は(ここでのゲームの仮定の下では) (セルの空間的範囲)×(その中の駒の種類) として記述できる。 このとき、n1においてどのセルの内容がn3におけるp…
昨日のエントリは深夜に書いたせいかほどよく錯誤していたorz いきなり詰み局面から着手して巻き戻そうとすると、話が爆発するのは当然だ。 昨日のエントリで 例えば、ノードn、○の手番でセル(5,5)から(9,5)にかけて ○○_○○と並んだ(「_」は空白)ならその5…
局面の辞書を書いてみたんですが、コレまともに使えるようにするには、詰みの必要十分条件を求めるルーチンが欲しいっすね… 例えば盤全体は11×11=121セルなのに、6×6セルの範囲内の駒の配列だけで詰みが成立する場合、3^(121-36)=3E40もの無駄な組み合わせに…
よさげなアイデアが浮かんだので、局面Nが詰みか否か判定するという目標は修正しなくていい。 前提 学習すべきパターンの集合が学習の進度依存で変化するような学習システムは学習の挙動が予測し難いので避けるべき。特に今の構想だと集合の中身が入れ替わる…
はい、ではこちらに完成した巻き戻しエンジンが用意してありますん 巻き戻しに大切なこと 巻き戻しはとにかく高速にやりたい。バット、複雑なアルゴリズムは実装したくない。 1局面戻る度に詰みか否かの探索を反復するような実装では遅すぎる。 また、プログ…
今考えている枠組みでは、結合加重調整時の評価関数は、局面をパーセプトロンの入力(局面の特徴量ベクトル)に変換する前処理関数と、パーセプトロンの2つの部分からなる。 パーセプトロンに何をどう入力するのが最適かを明らかにする一般理論は未だ存在しな…
我もまた一匹のマングースであろうぞ!(←駄目 たくさん読めば強くなる? 先日評価関数はどうあるべきかについて書いたわけだが、同様の主張が激指のページで思い切り否定されとる↓↓↓ ttp://www.logos.t.u-tokyo.ac.jp/~gekisashi/strength.html 世知辛え! …
死活の概念や勝負勘といったものの自動獲得を考えてみる。 必要性? コンピュータ将棋について見聞きする限り、現状強い思考ルーチンほど微に入り細に渡るチューニングが必要なようだ。単純に末端評価関数の値を信用して探索したのでは、末端評価関数の精度…
将棋やオセロや三目並べとかの思考ルーチンの評価関数はどうあるべきか考えてみるテスト。 末端評価関数 ゲーム木を葉ノードまで読み切れるならAND/OR木として読み切った時点で勝敗(もしくは引き分け)が決定する。のだが、ノード数の爆発のためゲーム終盤を…
「中間層にあたる論理エレメントを大量に用意する」などと書きつつ末端評価関数案で線形和でいいと書いてしまった… 中間層は置く方向で(入力、中間、出力の計3段)。