アルゴリズム

アルゴリズム大事典

橋本英美
工学社

第0章 「アイデア」から「アルゴリズム」
「アイデア」から「アルゴリズム」へ
「アルゴリズム」の、図による表現
計算量
VBAを使ってみよう
「フローチャート」と「VBAの命令」の対応
考え方の実際

第1章 「アルゴリズム」から「プログラム」へ
1 変数の内容を入れ替える
2 n桁目を取得する
3 金種を計算する
4 角度を一定の範囲に収める
5 三角関数と角度の関係
6 整列を出力する①
7 整列を出力する②
8 加算だけで掛け算をする①
9 加減算だけで割り算をする
10 加算だけで掛け算をする②
11 一定条件で処理を打ち切る①
12 一定条件で処理を打ち切る②
13 山分けをする
14 スイッチ処理をする
15 ローレル指数を求める
16 BMIを求める
17 不快指数を求める
18 チェックデジットを求める
19 水差し問題を解く

第2章 簡単な数値計算
20 三角形ができるか調べる
21 周囲が最長の三角形を求める
22 三角形の形を調べ
23 二次方程式の解を求める
24 階乗を求める

第3章 整数の計算
25 最大公約数を求める
26 3個以上の数の「最大公約数」を求める
27 最小公倍数を求める
28 「拡張ユークリッドの互除法」を使う
29 約分をする
30 「互いに素」か調べる
31 「互いに素」の数の個数を調べる
32 因数分解をする
33 「ゴールドバッハ(Goldbach)の予想」を確かめる
34 「ピタゴラス(Pythagoras)数」を求める
35 約数を求める
36 「和の完全数」を求める
37 「積の完全数」を求める
38 累乗を求める
39 べき乗余を求める

第4章 素数
40 素数を生成する
41 素数かどうか調べる①
42 素数かどうか調べる②
43 素数かどうか調べる③
44 素因数分解をする①
45 素因数分解をする②

第5章 配列
46 最大値の位置を調べる①
47 最大値の位置を調べる②
48 最大値の位置を調べる③
49 ベストスリーを求める
50 重複をチェックする
51 同じ値があるか調べる
52 データの種類を調べる①
53 データの種類を調べる②
54 データを「左シフト」する
55 データを「右シフト」する
56 データを「左ローテション」する
57 データを「右ローテション」する
58 データが何番目にあるか求める
59 数と一致する数列の和の範囲を求める
60 状態の変化を見る
61 「奇数」の「魔方陣」を作る
62 「4の倍数」の「魔方陣」を作る

第6章 「進数変換」と「ビット処理」
63 「10進数」を「n進数」に変換する
64 「n進数」を「10進数」に変換する
65 小数点を含む「10進数」を「2進数」に変換する
66 「1のビット」の数を数える
67 「ビット列」を逆転する

第7章 多段桁の計算
68 多段桁で「整数」の「加算」をする
69 「細菌の数」を計算する
70 多段桁で「整数」の「減算」をする
71 多段桁で「整数」の「乗算」をする
72 多段桁で「整数」の「除算」をする
73 多段桁で「実数」の「加算」をする
74 多段桁で「実数」の「減算」をする

第8章 並べ替え(ソート)
75 「交換法」でデータを昇順に並べる
76 「選択法」でデータを昇順に並べる
77 「挿入法」でデータを昇順に並べる
78 「シェル・ソート」でデータを昇順に並べる
79 「クイック・ソート」でデータを昇順に並べる
80 「二重ソート」でデータを並べる

第9章 「順列」と「組み合わせ」
81 すべての組み合わせを作る
82 順列を生成する①
83 順列を生成する②
84 順列を生成する③
85 「引き算パズル」を解く
86 「エイトクイーン」を解く
87 組み合わせを生成する
88 「ナップザック問題」を解く

第10章 レコードの処理
89 データを抽出する
90 レコードを併合する①
91 レコードを併合する②
92 項目を削除する
93 項目の差分を抽出する
94 項目を変更する

第11章 乱数
95 「線形合同法」で乱数を作る
96 線形フィードバックの「シフト・レジスタ」で乱数を作る
97 乱数で「サイコロの目」を出す
98 「カード」」をシャッフルする
99 「カードゲーム」をシミュレートする
100 「モンテカルロ法」で円周率を求める
101 「ビュフォン(Buffon)の針」で円周率を求める
102 「ポアソン乱数」を作る
103 「待ち行列」をシミュレートする
104 「ジャンケンの勝率」を求める

第12章 暗号
105 「シーザー(Caesar)暗号」により「暗号化」する
106 「シーザー暗号」を「復号化」する
107 「ストリーム暗号」で暗号化する
108 「ストリーム暗号」を複合化する
109 「RSA暗号」で「暗号化」「複合化」する
110 「RSA暗号」の「鍵」を生成する

第13章 「スタック」と「キュー」
111 「スタック」に積む
112 「スタック」から下ろす
113 「数の加減算パズル」を解く
114 「ハノイ(Hanoi)の塔」問題を解く
115 迷路を作る
116 「キュー」に入れる
117 「キュー」から除く
118 「エイトパズル」を解く

第14章 「腕づく法」と「欲張り法」
119 「腕づく法」で最適解を求める
120 「欲張り法」(貪欲法)で解を求める
121 再短時間を求める
122 すべての経路を求める
123 「農夫と狼と羊とキャベツ」の問題を解く
124 「動的計画法」で価格を求める
125 「数字タイル」パズルを解く

第15章 再帰呼び出し
126 「再帰呼び出し」で「階乗」を求める
127 「再帰呼び出し」で「フィボナッチ数列」を求める
128 迷路を解く

第16章 図形
129 「多角形の面積」を求める①
130 「多角形の面積」を求める②
131 「ベクトルの方向」を求める
132 3点の間の「角度」を求める
133 線分の「交点座標」を求める
134 「多角形の内側」に指定した「点」はあるか
135 「凸包問題」を解く

第17章 曲線のあてはめ
136 「最小2乗法」(単回帰分析)で「直線」を引く①
137 「最小2乗法」で「直線」を引く②
138 「直交回帰直線」を引く
139 「多項式近似」で「曲線」を引く
140 「ラグランジュ(Lagrange)補間」で「曲線」を引く
141 「ニュートン(Newton)の補間」で「曲線」を引く

第18章 数値計算
142 「ガウス(Gauss)の消去法」で「連立一次方程式」を解く
143 「ガウス=ジョルダン(Gauss-Jordan)法」(掃き出し法)で「連立一次方程式」を解く
144 「逆行列」を求める
145 「軸選択」をする①
146 「軸選択」をする②
147 「逐次近似法」で「根」を求める
148 「二分法」(中点法)で「根」を求める
149 「レギュラ・ファルシ(Regula Falsi)法」(はさみうち法)で「根」を求める
150 「ニュートン=ラプソン(Newton-Lapson)法」で「根」を求める

おわりに
参考文献
索引