プログラミング言語C++ (アスキーアジソンウェスレイシリーズ―Ascii Addison Wesley programming series)

プログラミング言語C++ (アスキーアジソンウェスレイシリーズ―Ascii Addison Wesley programming series)

第18章 アルゴリズムと関数オブジェクト

形式は解放である。 技術者の諺

この引用は、最近のこの本の中でも秀逸だと思います。
マニュアル主義というものが、よくたたかれる昨今のなか、
形式や、仕様といったものが、ないと、集団的な組織行動において、とんでもないコストが発生するという
経験則が、見事に言葉になっていると思います。


アルゴリズムとは何か  (一般人向けの解説)

私の研究は、「アルゴリズム」と「組合せ最適化」です。ここでは、そのうちのアルゴリズムについて解説しましょう。

アルゴリズム」というのは、コンピューターで計算を行うときの「計算方法」のことなんですが、広く考えれば、何か物事を行うときの「やり方」のことだと言っていいでしょう。その「やり方」を工夫して、より良いやり方を見つけよう、というのが、アルゴリズムの研究です。同じ計算を行うんだったら、いい方法でやればより速く計算できますね、ということです。

コンピュータにやらせる仕事のメインが計算をさせることなのだとしたら、
こういう項目が、第18章にくるというものが、はたして、ほめられたものなのだろうかと、ふと疑問に感じます。
ほかの入門書だと、ここで出てくるアルゴリズムで、具体的なプログラムを記述して、例解をしていくという
アプローチなのですが。
代表的なアルゴリズムが、羅列されているだけで、とくに、小難しいことにぶち当たって、なきそうになることはないのではないかと思います。

18−1 イントロダクション
18−2 標準ライブラリアルゴリズムの概要
18−3 シーケンスとコンテナ
 18−3−1 入力シーケンス
18−4 関数オブジェクト
 18−4−1 関数オブジェクトの基底クラス
 18−4−2 叙述関数
 18−4−3 算術関数オブジェクト
 18−4−4 バインダ、アダプタ、ネゲータ
18−5 変更なしのシーケンスアルゴリズム
 18−5−1 for_each
 18−5−2 findファミリ
 18−5−3 count
 18−5−4 equal と mismatch
 18−5−5 search
18-6 シーケンス変更アルゴリズム
 18−6−1 コピー 
 18−6−2 transform
 18−6−3 unique
 18−6−4 replace
 18−6−5 remove
 18−6−6 fillとgenerate
 18−6−7 reverseとrotate
 18−6−8 swap
18-7 シーケンスのソート
 18-7−1 ソート
 18-7−2 二分探索
 18-7−3 merge
 18-7−4 partition
 18-7−5 シーケンスに対する集合演算
18−8 ヒープ
18−9 minとmax
18-10 順列
18−11 Cスタイルアルゴリズム
18−12 アドバイス
18−13 練習問題