パズルで鍛えるアルゴリズム力


技術評論社


著者:大槻兼資


はじめに

第1章 アルゴリズム入門
1-1 テンパズル 〜力まかせ探索
 テンパズル
 パズルに挑戦
 テンパズルを解くアルゴリズム
  コラム スタックとキュー Part 1
  コラム コンピュータの計算力
 テンパズルソルバーの実装
 テンパズルの掘り下げ
 まとめ
 パズルの解答
  コラム アルゴリズムとプログラムの違い
 もう一歩 トランプゲーム「四則」
1-2 小町算 〜再帰関数
 小町算
 手で解いてみる
 小町算を解くアルゴリズム
  コラム 再帰呼び出しの効率化
 小町算ソルバーの実装
 まとめ
 もう一歩 小町算の問題を作る
1-3 虫食算 〜枝刈り
 虫食算
 パズルに挑戦
 虫食算を解くアルゴリズム
 枝刈り
  コラム 組合せ爆発
 虫食算ソルバーの部品の準備
 虫食算ソルバーの実装
 まとめ
 パズルの解答
 もう一歩 虫食算を作る

第2章 グラフアルゴリズム
2-1 数独 〜深さ優先探索1
 数独
 数独の手筋の紹介
 グラフ
  コラム ケーニヒスベルクの橋と四色問題
 数独を解くアルゴリズム
 数独ソルバーの部品の準備
 数独ソルバーの実装
 高速化のための工夫
 まとめ
 パズルの解答
  コラム 数独の最小ヒント数は17
 もう一歩 数独を作る 〜山登り法
2-2 覆面算 〜深さ優先探索2
 覆面算
  コラム パズルの巨匠紹介 Part 1:デュードニー
 パズルに挑戦
  コラム 言葉パズルで覆面算を作る!
 覆面算ソルバーの実装
 覆面算を作るアルゴリズム
 リストアップ法による覆面算メイカーの実装
 ワイルドカード法による覆面算メイカーの実装
 まとめ
 パズルの解答
 もう一歩 虫食算と覆面算の融合!
2-3 迷路 〜幅優先探索
 迷路
  コラム パズルとは何か
 迷路に関連するパズル
 今回解く問題の設定
 迷路ソルバーの実装
  コラム サム・ロイドの『ハンモック・パズル』
 グラフ上の幅優先探索
  コラム スタックとキュー Part 2
 油分け算への応用
 まとめ
 パズルの解答
 もう一歩 碁石拾い

第3章 発展的なアルゴリズム
3-1 15パズル 〜反復深化A*
 15パズル
 コラム サム・ロイドの『14-15パズル』
 手で解いてみる
  コラム 一般サイズの15パズル
 15パズルソルバーの方針
 反復深化深さ優先探索
 反復深化A*
 15パズルソルバーの実装
 まとめ
  コラム ルービックキューブのGod’s Number
3-2 4×4オセロ 〜ゲーム探索
 4×4オセロ
 「ゲームを解く」ということ
 各ゲームの解析状況
 手で解いてみる
 ゲーム解析をグラフ探索で考える
 ゲーム探索の実装
 4×4オセロソルバーの実装
 まとめ
3-3 編集距離 〜動的計画法
 編集距離
 パズルに挑戦
  コラム 編集距離の実応用
 編集距離をグラフで表す
 動的計画法
 編集距離ソルバーの実装
  コラム アルゴリズムの計算量
 まとめ
 パズルの解答
 コラム ダイクストラ法
3-4 ドミノタイリング 〜マッチング
 ドミノタイリング
  コラム パズルの巨匠紹介 Part 2:ロイド
 手で解いてみる
  コラム テトロミノ
 二部マッチング問題への帰着
 二部マッチング問題の解法
 ドミノタイリングソルバーの実装
 まとめ

本書全体のまとめ
ブックガイド
索引

書籍目次技術書籍

Posted by shi-n