こんにちは、@yshr10icです。
アルゴリズムを基礎から勉強し直したかったので、ずっと積読していた本書を読むことにしました。
次は積読してたこれ読む pic.twitter.com/UuMBGOvInh
— yshr10ic (@yshr_10ic) January 2, 2022
本書のポイント
個人的にポイントだと思ったところは以下のとおりです。
- アルゴリズムの考え方とC++での書き方を学ぶことができる
- 17章「PとNP」、18章「難問対策」では効率の良いアルゴリズムが知られていない問題に対するアプローチ方法が紹介されている
注意点として、本書は入門書ではないので、他のアルゴリズムとデータ構造に関する入門書である程度の知識を得てから読んだ方が良いと思いました。
本書を読んでみて
本書の目次は以下のとおりです。
- 第1章 アルゴリズムとは
- 第2章 計算量とオーダー記法
- 第3章 設計技法(1):全探索
- 第4章 設計技法(2):再帰と分割統治法
- 第5章 設計技法(3):動的計画法
- 第6章 設計技法(4):二分探索法
- 第7章 設計技法(5):貪欲法
- 第8章 データ構造(1):配列、連結リスト、ハッシュテーブル
- 第9章 データ構造(2):スタックとキュー
- 第10章 データ構造(3):グラフと木
- 第11章 データ構造(4):Union-Find
- 第12章 ソート
- 第13章 グラフ(1):グラフ探索
- 第14章 グラフ(2):最短路問題
- 第15章 グラフ(3):最小全域木問題
- 第16章 グラフ(4):ネットワークフロー
- 第17章 PとNP
- 第18章 難問対策
第1、2章ではアルゴリズムとは何なのか、計算量とオーダー記法について書かれています。
第3〜7章では「アルゴリズムの設計技法」について説明されています。他の本ですと、設計技法は本の後半に書かれていることが多いと思いますが、本書では前半に書かれています。それだけ著者は設計技法が重要であると思っていることが伺えます。
第8〜11章では「データ構造」について説明されています。他の本ではあまり紹介されない「Union-Find」といった設計技法に関しても紹介されているのが面白いと思いました。
第12章は「ソート」についてで、第13〜16章では「グラフアルゴリズム」について説明されています。グラフアルゴリズムの説明では、それまでに説明されてきた設計技法やデータ構造を利用することが多いため、非常に読みやすい順番で説明されております。
最後に第17章では「PとNP」について比較的分かりやすく説明されており、第18章では「難問対策」として、難問に取り組むための方法論がまとめられています。
アルゴリズムとデータ構造の学習順序
「本書のポイント」で本書は入門書ではないとお伝えしましたが、個人的に本書を読む前にどの本を読めば良いのかまとめてみました。
問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本
(2024/11/21 00:57:45時点 Amazon調べ-詳細)
この本はアルゴリズムとデータ構造だけではなく、そこに必要な数学の基礎から勉強することができます。フルカラーで非常に分かりやすくまとめられておりますので、入門書としてはこの本が良いと思いました。
私のブログでも簡単に読書メモを残しているので、もし良かったら見てみてください。
アルゴリズム図鑑 絵で見てわかる26のアルゴリズム
この本は実装方法については学ぶことはできませんが、代表的なデータ構造、アルゴリズムについて絵で見て分かるように説明されています。データ構造、アルゴリズムについて直感的に理解したい方にはおすすめです。
まとめ
本書は発売してすぐに購入していたのですが、読むのに挫折してしまい積読状態でした。アルゴリズムとデータ構造の学習順序で紹介している本を読んだ後に本書を読んでみると理解できるようになったので、そのような学習順序で本書を読んでみるのはいかがでしょうか。
その他おすすめの本
(2024/11/21 00:57:45時点 Amazon調べ-詳細)
(2024/11/21 00:59:14時点 Amazon調べ-詳細)
(2024/11/21 01:15:22時点 Amazon調べ-詳細)