定番アルゴリズム本リスト
どうせ何度も使い回ししそうなので,独立した項目に切り離した.
アルゴリズムイントロダクション 第3版 第1巻: 基礎・ソート・データ構造・数学 (世界標準MIT教科書)
- 作者: T.コルメン,R.リベスト,C.シュタイン,C.ライザーソン,浅野哲夫,岩野和生,梅尾博司,山下雅史,和田幸一
- 出版社/メーカー: 近代科学社
- 発売日: 2012/08/02
- メディア: 単行本
- 購入: 1人 クリック: 16回
- この商品を含むブログ (21件) を見る
アルゴリズムイントロダクション 第3版 第2巻: 高度な設計と解析手法・高度なデータ構造・グラフアルゴリズム (世界標準MIT教科書)
- 作者: T.コルメン,R.リベスト,C.シュタイン,C.ライザーソン,浅野哲夫,岩野和生,梅尾博司,山下雅史,和田幸一
- 出版社/メーカー: 近代科学社
- 発売日: 2012/12/26
- メディア: 単行本
- 購入: 1人 クリック: 4回
- この商品を含むブログ (18件) を見る
Introduction to Algorithms (MIT Press)
- 作者: Thomas H. Cormen,Charles E. Leiserson,Ronald L. Rivest,Clifford Stein
- 出版社/メーカー: The MIT Press
- 発売日: 2009/07/31
- メディア: ペーパーバック
- 購入: 5人 クリック: 90回
- この商品を含むブログ (19件) を見る
追記:
総合版ならKindle版もある.
アルゴリズムイントロダクション 第3版 総合版:世界標準MIT教科書
- 作者: Thomas H. Cormen,Clifford Stein,Ronald L. Rivest,Charles E. Leiserson
- 出版社/メーカー: 近代科学社
- 発売日: 2018/01/09
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
- 作者: Narasimha Karumanchi,黒川利明,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/08/24
- メディア: 大型本
- この商品を含むブログ (15件) を見る
Data Structures and Algorithms Made Easy
- 作者: Narasimha Karumanchi
- 出版社/メーカー: Createspace Independent Pub
- 発売日: 2011/12/19
- メディア: ペーパーバック
- この商品を含むブログ (5件) を見る
ごく一般的な参考書.記述言語はC言語. *2
- 作者: George T. Heineman,Gary Pollice,Stanley Selkow,黒川利明,黒川洋
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/12/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (6件) を見る
Algorithms in a Nutshell: A Practical Guide
- 作者: George T. Heineman,Gary Pollice,Stanley Selkow
- 出版社/メーカー: O'Reilly Media
- 発売日: 2016/04/02
- メディア: ペーパーバック
- この商品を含むブログ (4件) を見る
Algorithms in a Nutshell: A Practical Guide (English Edition)
- 作者: George T. Heineman,Gary Pollice,Stanley Selkow
- 出版社/メーカー: O'Reilly Media
- 発売日: 2016/03/22
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
Numerical Recipes with Source Code CD-ROM 3rd Edition : The Art of Scientific Computing
- 作者: William H. Press,Saul A. Teukolsky,William T. Vetterling,Brian P. Flannery
- 出版社/メーカー: Cambridge University Press
- 発売日: 2007/09/01
- メディア: ハードカバー
- 購入: 1人 クリック: 15回
- この商品を含むブログ (2件) を見る
数学アルゴリズム集.まあ説明はいらんだろ.*4
CD-ROMつき/なし,CD-ROMのみの各タイプあり.
- 作者: Anany Levitin,Maria Levitin,黒川洋,松崎公紀
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/04/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (12件) を見る
Algorithmic Puzzles (English Edition)
- 作者: Anany Levitin,Maria Levitin
- 出版社/メーカー: Oxford University Press
- 発売日: 2011/10/12
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
類書*5
プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問
- 作者: 増井敏克
- 出版社/メーカー: 翔泳社
- 発売日: 2015/10/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
追記:その続編.
もっとプログラマ脳を鍛える数学パズル アルゴリズムが脳にしみ込む70問
- 作者: 増井敏克
- 出版社/メーカー: 翔泳社
- 発売日: 2018/02/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
面白そうだったので,さらに追記.
問題解決のPythonプログラミング ―数学パズルで鍛えるアルゴリズム的思考
- 作者: Srini Devadas,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/09/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
Modern C++チャレンジ ―C++17プログラミング力を鍛える100問
- 作者: Marius Bancila,島敏博,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2019/02/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
これはちょっと毛色が違うのかな?
- 作者: ジョー・セルコ,Joe Celko,ミック
- 出版社/メーカー: 翔泳社
- 発売日: 2007/11/02
- メディア: 大型本
- 購入: 18人 クリック: 335回
- この商品を含むブログ (27件) を見る
普通に「アルゴリズムを勉強する」と書いた場合は,こちらの入門の方を指すと思う.プログラマならば基本的なアルゴリズムを覚えると共に,アルゴリズムの考え方,アルゴリズムを自分のアプリケーションへの適用方法や新しいアルゴリズムを創るスキルを身につける必要がある.
以下のようなアルゴリズムの入門書は最低でも一冊は目を通して,幾つかの例題について実装する練習をしておくべき.英単語帳と同じで,マトモな本ならば基本アルゴリズムについてはそれほど大差は無い.他の分野ほど陳腐化も激しくないので,10〜20年以上前の本でもまあまあ使える.*4 *5そしてまともな書籍なら2冊以上は必ずしも必要ない.(持っていても良い.)
このような本で紹介されているアルゴリズムとデータ構造はプログラミングの基本中の基本なので,
- もちろん名前は全部知っている.それがどんなアルゴリズムかも説明できる.
- うち幾つか(5〜8割くらい)については実際に実装した経験がある.
- その他についても実装する必要があれば,いつでも簡単に実装できる自信がある.
- そのアルゴリズムの特性,長所と短所,ボトルネック,実装上の注意点,効率化テクニックについて知っている.その理由についても理解している.
- 計算量やメモリ消費,ディスクアクセスのオーダーを(暗記するのではなく)見積もることができる.*6
- 必要に応じて自分でそのアルゴリズムをカスタマイズしたり,改良したりできる.またその影響や変更後の計算量を見積もることができる.*7
- そこで書かれている擬似コードやサンプルを,自分が必要とする言語に移植し,必要に応じて型安全性や例外処理等を追加できる.*8 特にこれは次に示すサンプルコード集の方で重要性が増す.
- ビッグO記法,多項式オーダー,疑似乱数*7,丸め誤差,貪欲(greedy)アルゴリズム,怠け者(lazy)な処理,アトミック(atomic)な処理,NP完全,巡回セールスマン問題,等々のキーワードも,一通り理解しておくこと.(そんなに多くない.むしろ名前が付いてない部分に対する理解も重要.)
くらいになっておくべきだろう.
「アルゴリズムとデータ構造」みたいなタイトルが付いているのは入門書の場合が多い.単語帳ほどではないけれど,アルゴリズム本もプログラミング関係の書籍としてはかなり多い方だ.単語集と同様に,各人それぞれに好みがあるだろうから,自分の目で確認して自己責任で入手すること.
http://d.hatena.ne.jp/JavaBlack/20110923/p1
*1:「本屋で立ち読みした瞬間,そっとじ」な人も多いだろう.難易度は高めなのでそのつもりで.
*2:洋書だと,Java版とPython版もあるようだ.
*3:旧版 Algorithms in a Nutshell (In a Nutshell (O'Reilly))
*4:C言語版なら和書もあったが,版が古い. http://gihyo.jp/book/1993/4-87408-560-1#toc ニューメリカルレシピ・イン・シー 日本語版―C言語による数値計算のレシピ
*5:少し古いのだとこんなのもあった.これはbit連載だったかな.
*6:原書はこれかな. Programming for the Puzzled: Learn to Program While Solving Puzzles (The MIT Press)