• 教科書献本のご案内
  • ニュースメール
  • アフターサービス
  • facebook

コンピュータ囲碁の入門(CD-ROM付き) 

この書籍は現在お取り扱いできません。

書籍情報
ISBN978-4-320-12150-8
判型A5 
ページ数204ページ
発行年月2005年11月
本体価格2,800円
コンピュータ囲碁の入門 書影
コンピュータ囲碁の入門

 あなたは囲碁プログラム(囲碁ソフトともいう)と対局したことがあるだろうか.最近は,たくさんの囲碁プログラムが販売されている.パソコン用だけではなく,家庭用ゲーム機の囲碁プログラムもある.また,店頭で買わなくても,インターネットからフリーの囲碁プログラムをダウンロードすることもできる.現在,最も強いプログラムはアマチュア初段程度の棋力であり,多くの人が遊ぶにはちょうどよい強さといえるだろう.コンピュータ囲碁の研究者や囲碁プログラムの作者は,今から40年後ぐらいには人間の名人に勝てるプログラムができると予想している.
 では,そんな囲碁プログラムはどのような仕組みになっているのだろうか.残念ながら今まで囲碁プログラムの仕組みに関して,一般の人が入手できる資料は多いとはいえなかった.とくに,強いプログラムは商品として販売されているため,仕組みに関して公に発表されることがなかった.そこで,囲碁プログラムの作者と研究者が,プログラム作成の経験と公表されている資料をもとに囲碁プログラムのつくり方をまとめ,解説することを目的としてつくったのが,この本である.高校生,囲碁愛好家,大学での研究テーマとして囲碁などの高度な知能プログラミングを考えている先生や学生を対象にした,読みやすくやさしい囲碁プログラミングの入門書を目指している.
 本書は,2004年5~8月に岐阜県内の高校生,高等専門学校生を対象として開催された「囲碁プログラミング講習会」で使用されたテキストがもとになっている.受講生の中には,その年の秋に開催された世界コンピュータ囲碁大会に出場した人もおり,この本を読めばあなたもすぐに囲碁プログラムをつくり始めることができるはずである.
 第1章では,コンピュータと囲碁,とくに人工知能との関係について説明する.第2章では,囲碁プログラム作成の準備として,囲碁プログラムをつくるために何を考えるべきなのかを説明する.第3章からは,実際に囲碁プログラムを作成する.まず第3章では,囲碁をルール通りに打つために,禁じ手のチェックをする碁盤プログラムを作成する.この碁盤プログラムは,コンピュータを碁盤と碁石の代わりにしたプログラムで,人間対人間の対局ができる.第4章では,コンピュータが次の一手を考える最も簡単な思考ルーチンをつくる.このプログラムはとても弱いが,人間対コンピュータの対局ができる.第5章~第7章では,囲碁プログラムのデータ構造について説明する.碁盤の上は黒と白の石しか存在しないが,棋力の高い人は,その盤面から多くの情報,たとえば石の強さなどを認識している.囲碁プログラムも同じように,盤上の石の配置だけでなく,たくさんの情報を認識し,その情報を使うことによって良い手を打てるようになる.囲碁プログラムのデータ構造は階層的な構造になっているので,その階層ごとに説明していく.第8章では候補手の生成方法について説明し,第9章で候補手の評価方法について説明する.第10章では,囲碁プログラムの思考部以外の説明を行なう.
 添付CD-ROMには,本書の中でサンプルとして記述されているプログラムと囲碁プログラムのGUIプログラムが入っている.このプログラムをもとに,あなたのオリジナルのアイデアを加えることで,すぐにコンピュータ囲碁大会に参加できる.
 本書の中でサンプルとして記述しているプログラムの言語はC言語である.読者はC言語の基礎は習得していることを想定しているので,言語の文法説明は省く.また,サンプルのプログラムは,囲碁プログラムの仕組みの説明を第一に考えているため,処理速度や使用メモリ量などの効率は良くないところがある.

目次

第1章 コンピュータと囲碁
1.1 人工知能とゲームプログラミング
1.2 コンピュータ囲碁の歴史
1.3 参考になるWebページ
1.4 囲碁プログラムの強さ

第2章 囲碁プログラムの設計
2.1 囲碁のルール
2.2 次の一手を考えるために必要なこと
2.3 必要ではないができた方がよいこと
2.4 囲碁プログラムの処理の流れ
2.5 囲碁プログラムの構造
2.6 囲碁プログラムの処理の流れ(別案)
2.7 囲碁プログラムに適したプログラミング言語

第3章 碁盤プログラムの作成
3.1 碁盤の表現(データ構造)
3.2 碁盤の表示
3.3 対局の流れ
3.4 石を取り除く処理
3.5 合法手
3.6 もっとも単純な思考ルーチン(ランダムに次の一手を求める)
3.7 碁盤プログラムのサンプル

第4章 地の認識
4.1 地とは何か
4.2 地の認識の実験(その1)
4.3 地の認識の実験(その2)
4.4 地の認識の改良
4.5 地を評価関数としたプログラム
4.6 地を評価関数として次の一手を求めるプログラム

第5章 連(連結した石のデータ構造)
5.1 盤面の認識
5.2 もっとも基本的な単位(連)
5.3 連のデータ構造の属性
5.4 連の生死を調べる
5.5 連の識別番号を付けるプログラム

第6章 結線(接続関係を表わすデータ構造)
6.1 石と石との接続関係
6.2 結線のデータの属性
6.3 接続の度合いの調べ方

第7章 群(生死の単位のデータ構造)
7.1 群の定義
7.2 結線を使った群の認識のアルゴリズム
7.3 群のデータ構造の属性
7.4 群の強さの調べ方
7.5 眼数の調べ方
7.6 包囲のされ具合い
7.7 周囲に存在する群による影響

第8章 候補手の生成
8.1 候補手生成の概要
8.2 いろいろな囲碁プログラムの候補手の例
8.3 候補手生成アルゴリズム
8.4 認識結果を利用した候補手
8.5 候補手専用のアルゴリズムを利用した候補手
8.6 パターン(データベース)を利用した候補手
8.7 負の候補手
8.8 パターンから候補手を生成するプログラム

第9章 候補手の評価と着手選択
9.1 候補手の評価
9.2 評価値の調整
9.3 着手選択
9.4 時間調整

第10章 思考部以外
10.1 GUI
10.2 性能テスト
10.3 改良の手順

第11章 おわりに

付録A ゲーム木探索
A.1 ゲーム木(Game Tree)
A.2 深さ優先探索と幅優先探索
A.3 ミニマックス法(minimax)
A.4 アルファベータ法(alpha-beta)
A.5 囲碁におけるゲーム木探索の例
A.6 水平線効果(地平線効果)

付録B 棋譜(SGFの解説)

付録C 通信対戦
C.1 コンピュータどうしを直接接続する方式
C.2 対局サーバを介して対戦を行なう方式

付録D コンピュータ囲碁大会

付録E 付属CD-ROMの使い方
E.1 Borland C++ Compiler 5.5のインストール
E.2 Borland C++ Compiler 5.5用の環境の設定
E.3 本文に掲載されているソースのコンパイルと実行
E.4 思考DLLのコンパイルと実行
E.5 著作権および免責事項