手牌構造の作成終了と次の作業
色々苦労していた手牌構造クラスのテスト&バグ取りが完了しました。
新しい手牌構造は、一色分の全ての門前手牌パターンを丸ごとメモリに持つようにして、向聴数チェックや有力な捨て牌候補や受け入れ候補の列挙、手替わりや向聴戻しを含めた局面の変化を高速に処理できるようにしました。
手牌構造の作成がひと段落ついたので、次は、探索処理(局面の先読み)を作成していくつもりです。
既存の探索処理は再帰呼出しを使って実装していますが、新しい探索処理は、再帰呼出しを使わずに、スタックを使ったループで処理するように修正します。C++言語などの処理では、機械語レベルで見ると、関数を呼んだときにパラメタをスタックに積んで、サブルーチンにジャンプするような処理をしているわけですが、それを自分でスタックにデータを積むプログラムにする感じです。
なぜこのような修正をするかというと、スタックに積んだり、スタックに積まれたデータを取り出して処理する箇所をマルチスレッド化することで、マルチコアCPUの性能を無駄なくフルに引き出して、より深く広く局面を読めるようにするためです。基本的なアルゴリズムはオライリーの並列コンピューティング技法に載っているサンプルを参考に作成していくつもりです。
| 固定リンク
« いつものこと | トップページ | またいつものこと »
この記事へのコメントは終了しました。
コメント