Java将棋のアルゴリズム [改訂版]
Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS)
工学社
著者:池秦弘
はじめに
改訂にあたって
目次
ファイルのダウンロードについて
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 定跡データを用意する方法
PLC形式のデータ
棋泉形式のデータ
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 展望〜未来に向けて〜
索引