アルゴリズムの強化手法を探る
|
池 泰弘 著
2016年 8月23日発売
B5判
240ページ
定価 \2,530(本体 \2,300)
|
ISBN978-4-7775-1965-1 C3004 \2300E
|
|
2012年、コンピュータとプロ棋士が対戦する「電王戦」がはじまりました。
そして2015年10月、情報処理学会がコンピュータ将棋の実力はトッププロ棋士に追い付いている(統計的に勝ち越す可能性が高い)という分析結果を出し、「コンピュータ将棋プロジェクト」の終了を宣言しました。
しかし、「コンピュータ将棋」の強さがプロ棋士を越えたからと言って、開発を辞めてしまう開発者はどれくらいいるのでしょうか。その程度のことで開発を辞める開発者は、おそらく誰もいないでしょう。
*
このように、大きな動きの中にある今、「コンピュータ将棋」ですが、本書はそんな「コンピュータ将棋」のアルゴリズムを、一から解説しています。
本書では、使用言語としてJavaを使っていますが、アルゴリズムに絞って解説しているので、「C」や「C++」など他の言語にも応用することが可能です。
また、「将棋」のルールや駒の動かし方から説明しているので、「将棋」がよく分からない人でも手軽に読むことができます。
本書掲載の「将棋プログラム」もダウンロードできるので、プログラム制作の参考になるのはもちろん、「将棋プログラム」の実際の動きを見ながらアルゴリズムを学ぶことができます。
※本書は好評だった「Java将棋のアルゴリズム」に最新の情報を加筆し、現状に合わせてプログラムを一新しました。
|
|
■ 主な内容 ■ |
1章 将棋のルール
1-1 将棋のルール
将棋の基本ルール
盤上の位置を表わす符号
駒の名称と動き方
禁手
棋譜の表記法
2章 将棋のルールの実装
2-1 基本的な定数の定義
2-2 「局面」の表現方法
2-3 「位置」の表現方法
2-4 「手」の表現方法
2-5 局面での合法手の生成
3章 簡単なユーザー・インターフェイスと思考ルーチンの実装
3-1 インターフェイスと思考ルーチンの実装
4章 「局面の評価」の実装と「思考ルーチン」の改造 「将棋」のルールの実装
4-1 評価関数
4-2 駒の価値
5章 MinMaxとαβ法
5-1 先読みをする
5-2 MinMax法
5-3 αβ法とは
5-4 「MinMax」と「NegaMax」、「αβ」と「Negaαβ」
6章 実装の高速化
6-1 高速化の実際
7章 序盤定跡
7-1 定跡とは
7-2 定跡データの保持の方法
7-3 定跡通りに指すためのプログラム
7-4 定跡データを用意する方法
8章 序盤の駒組み
8-1 序盤の考察
9章 中終盤の駒の価値の評価
9-1 中終盤での駒の評価
9-2 実際のプログラム
10章 指し手の評価と前向き枝刈り
10-1 指し手の評価
10-2 αβ法と組み合わせる
10-3 手法の評価
11章 ハッシュ法とハッシュ法を用いた高速化
11-1 ハッシュ法とは
11-2 将棋におけるハッシュの方法
11-3 乱数を用いたハッシュ表の生成
11-4 ハッシュ法を用いた高速化
12章 通信の実装
12-1 CSAプロトコル
12-2 CSAプロトコルの実装
13章 相手思考時間の利用
13-1 スレッドとは
13-2 通信や相手の入力などを待ちながら思考する
14章 「複数スレッド」での探索
14-1 並列化
14-2 変更を加えたプログラム
最終章 これからの課題とヒント
15-1 課題とヒント
15-2 展望 〜未来に向けて〜
|
本書内容に関するご質問は、こちら
本書のサポートページはこちら.
|
|
|