8パズルの探索プログラム (2章) |
8パズル(深さ優先探索) 8パズル(広さ優先探索) 8パズル(A*探索) |
|
倉庫番 (2.4節) |
倉庫番のプログラム gcc *.c -lfreeglut -lglu32 -lopengl32 としてコンパイルする。 キー操作は以下の通り(詳しくはプログラム参照):
|
|
ナンバーリンク (2.3節) |
ナンバーリンクの探索プログラム GNU makeがインストールされている環境でmakeとすると実行ファイル(a.exe)が生成される。 |
|
箱入り娘パズル (2.4節) |
箱入り娘の探索プログラム ruby random.rbのようにして実行する。 algorithmというgenパッケージが必要であり、その インストール方法はこれを参照。 |
|
ペグソリティア (2.5節) |
縦型探索プログラム 横型探索プログラム A*探索プログラム gccでコンパイルできる。 |
|
数独(その1) (2.6節) |
数独の探索プログラム python3 sudoku.py のようにして実行する。 |
|
手掛かりのない数独 (2.6節) |
手掛かりのない数独+アルファ 以下のようにコンパイルする。 g++ -std=c++11 main.cpp NoClueSudoku2.cpp HakoiriMusume.cpp PuzzleSearch.cpp SlidePuzzle.cpp 実行すると、他にも変形スライドパズルや箱入り娘の 解法も得られる。 |
|
数独(その2) (2.6節) |
数独(shidoku)の代数的な探索プログラム 数式処理システム sage notebookから動作する。 実行のイメージは ここにある。 |
N-queen (3.2節) |
バックトラックのプログラム(N-queen) gcc common.c minmax.c -lm としてコンパイルする。 |
|
線画解釈 (3.3節) |
線画解釈のサンプルプログラム プログラムはJavascript で実装されており、 適当なWebブラウザでai.html を開くと実行できる。 |
|
ATMSによる解法(4色問題) (3.4節) |
4色問題を解くプログラムと地図データ g++ -o solver 4color.cppとしてコンパイルする。 ./solver < data1.txt > ans1.txt として実行する。 |
|
ATMSによる解法(覆面算) (3.4節) |
覆面算のプログラム 以下のようにして実行する。
|
|
チェスパズル(その1) (3.5節) |
チェスパズルを解くプログラム ポーンをできるだけ多く配置する。一直線にならばないようにする。 gccでコンパイルして実行する。 |
|
チェスパズル(その2) (3.5節) |
チェスパズルを解くプログラム 互いに攻撃しない駒の最大配置を求める。gccでコンパイルする。 引数は次の意味である
|
|
クヌースのヒップパズル (3.6節) |
ヒップパズルを解くプログラム 以下でコンパイルして実行する。
|
三目並べ(Tit-tac-toe) (4.2節) |
alpha-betaカットのプログラム(Tit-tac-toe) gcc common.c ab.c -lm としてコンパイルする。 |
|
三目並べ(Tit-tac-toe) (4.2節) |
min-maxのプログラム(Tit-tac-toe) gcc common.c ab.c -lm としてコンパイルする。 |
|
チェス (4章) |
チェスのプログラム cygwin用の実行コードがある。Windowsを大きくするとよい。 gcc chessnew.c -lm -lcurses としてコンパイルする。 指し手の表現は国際式表記であり、例えば、E2E4となる。 キャッスリングはE1G1、アンパサンはE5F6である。 キー操作は以下の通り(詳しくはプログラム参照):
|
|
マリオAI(4.4節) |
マリオのA*探索プログラム 以下の手順でインストール、実行する。実行にはjava環境が必要である。
|
|
パックマン(small world) (4.9節) |
パックマンのプログラム makeでコンパイルできる。 main.cの
|
|
パックマン(モンテカルロ木探索) (4.9節) |
パックマンのプログラム htmlファイルを開き、コンソール(F12キー)から makeRouteMap(map); を入力すると実行できる。 ダイクストラ法で各地点同士の最短距離を計算するのにしばらく時間がかかる。 jsonデータをロードしているので ローカルファイルに対してXMLHttpRequestが実行可能なブラウザでのみ 動作する(Firefox, Edgeでの動作確認)。 mapの変更方法はここに書かれている。 画面の右では探索方法や各キャラクタのパラメータを変更できる。 |
|
オセロ (4.7節) |
オセロのプログラム binの下の実行ファイルはそのまま実行可能(Linux, Windows)。 ビルドには、Visual Studio2017の環境下でOpenGLとGLUTが必要。 |
|
オセロとfool's mate (4.7節) |
オセロのプログラム(fool's play) $python play.py -g foolsmate でfool's playを実行する。 詳細は本文の説明を参照。また実行環境については、 これと これ を参照してほしい。オプションの説明は以下の通り。
|
|
3次元Tit-for-tat(4x4x4)(その1) (4.6節) |
3次元Tit-for-tat(4x4x4)のプログラム(その1) UTC法との対戦を行う。 コマンドライン引数によってオプションが指定できる。 ./main [先手:0, 後手:その他(default:0)] [UCTの総playout回数(default:10000)] 例) ./main 0 10000 |
|
3次元Tit-for-tat(4x4x4)(その2) (4.6節) |
3次元Tit-for-tat(4x4x4)のプログラム(その2) UTC法 v.s. min-max(α・βカット)の対戦を行う。 実行には引数にplayout数を入れる。 評価関数は単純に隅や真ん中が強くなるようにするだけである。 |
DQNによるアタリ シミュレーション (5.2節) |
[cppソースコード(.zip, 1.2M)] CUDA required for GPU mode | |
進化するマリオ (5.3節) |
基本部分は「マリオのA*探索プログラム」に従ってインストールする。 GAマリオのプログラムはここから 入手できる。 詳細は本書の記述を参考にしてほしい。 |
本ソフトウェアは、教科書の問題への解答例を提供するものです。 必ずしもすべての解答・最適解を与えるものではありません。
プログラムは様々な言語(C,C++,Sage Notebook,ruby,pythonなど)で書かれていて、 実行環境もそれぞれ異なります。
ご自身の環境でそのまま動くとは限りません。 そのため、本文の説明からプログラムの動作を理解して自分なりに書き換えることを推奨します。
また、Cのソースプログラムでのゲーム探索については、以下の本にも解説がありますので参照して下さい。