ISBN 9784274223914
Cによるアルゴリズムとデータ構造(改訂2版)
概要
C言語でアルゴリズムとデータ構造の基礎を実装レベルで習得する
想定読者
情報工学系の学生、または独学でアルゴリズム基礎を体系的に固めたいプログラマー。C言語の基本文法は理解しており、計算量・探索・整列の原理をコードと対応させて学びたい人。
こんな人には向いていない
- アルゴリズムとデータ構造をすでに実務で日常的に扱っており、競技プログラミング水準の最適化知識を求めている人には内容の水準が合わない
- PythonやJavaなど他言語環境で学習したい人には、C言語前提の実装例が障壁になる
- 258ページというコンパクトな構成上、各トピックの深掘りよりも全体像の把握を優先しているため、特定アルゴリズムを徹底的に掘り下げたい読者には物足りない
読了後にできるようになること
- リスト・スタック・キュー・木・ヒープ・グラフといった基本データ構造をC言語で実装できる
- クイックソートを含む代表的な整列アルゴリズムの計算量と使い分けを説明できる
- 動的計画法・分枝限定法などアルゴリズム設計パラダイムを選択する判断軸を持てる
- 二分探索木・B木などの順序集合処理の仕組みを理解し実装に落とせる
- 接尾辞木を含む文字列照合アルゴリズムの原理を把握できる
- 計算複雑性の観点からプログラムの実行効率を評価できる
本書のキー概念(章解説)
- 第 1 章 アルゴリズムと計算量 — O記法と計算複雑性の基礎。後続全章の評価軸になるため最重要
- 第 2 章 基本データ構造 — リスト・スタック・キュー・グラフ・木の実装基礎
- 第 3 章 順序集合の処理 — 二分探索木・B木・ヒープを扱う。実務データ処理への直結度が高い
- 第 4 章 整列 — クイックソートを含む代表的な整列アルゴリズム。計算量比較が明快
- 第 5 章 アルゴリズムの設計 — 動的計画法・分枝限定法など設計パラダイムの整理
- 第 6 章 アルゴリズムの実現 — グラフ問題・文字列照合・接尾辞木を含む応用実装(改訂2版で接尾辞木追加)
ハイライト
- うまくつくられたプログラムは、理解しやすく実行効率も高いものですが、一方、そうでないものは解読も困難なうえに、やたら時間や領域をくいます。(本書の問題意識の核心。良いプログラムを書くための動機付けが端的に表現されている)
- 本書は、新たなアルゴリズムで新たなプログラミングを行うために覚えておかなくてはいけない必須知識、そしてアルゴリズムの設計、実現における基礎を、実用上の価値に重点を置いてまとめています。(理論偏重ではなく実用価値を軸に据えた編集方針が明示されている箇所)
外部からの言及
- アルゴリズムとデータ構造の書籍を横断的に紹介する記事において、本書は改訂2版として市場に存在する複数の同テーマ書籍のひとつとして言及されている。個別評価コメントは少なく、同カテゴリの書籍が増加した現状を記述した文脈での引用にとどまる。(qiita)
編集メモ
Qiita 言及記事 1件(likes 3)のみで、累計エンゲージメントは低水準。当該記事も本書を個別評価せずリスト掲載に留まる。Rakutenランキング情報なし。アルゴリズム教科書として長年版を重ねてきた実績はあるが、外部シグナルの現時点での集積は限定的。
読む前に押さえておきたいこと
- C言語の基本文法(ポインタ・構造体・動的メモリ確保)を一通り書ける状態
- 高校数学レベルの対数・指数の扱いに慣れていること(計算量評価で必要)
学習のコツ
- 第1章の計算複雑性の説明を確実に理解してから各アルゴリズム章に進む。O記法の肌感覚がないと後半の評価比較が腑に落ちにくい。
- 各章末の演習問題はC言語での実装を手で書くことを前提に設計されている。読み流すだけでなく、ダウンロード提供のサンプルコードと自分の実装を照合する使い方が効果的。
- 改訂2版で追加された接尾辞木の章は、文字列処理を業務で扱う読者にとって最も実用的な新増補。該当節を先に確認し、自分の関心領域との一致を判断材料にするとよい。
- 258ページとコンパクトなため、精読後に別途問題集(競技プログラミング系)でアウトプット練習を積む使い方に向いている。
出版社による内容紹介
良いプログラムを書くための必須知識をまとめたテキストであり、五輪の書。 本書は、長年にわたって数多くの優秀なシステムエンジニア、プログラマーに愛読されてきた、良いプログラムを書くための必須知識をまとめたテキストです。 うまくつくられたプログラムは、理解しやすく実行効率も高いものですが、一方、そうでないものは解読も困難なうえに、やたら時間や領域をくいます。さらに、そのようなまずいプログラムには、えてしてミスや内容的な誤りも隠されているものです。 本書は、新たなアルゴリズムで新たなプログラミングを行うために覚えておかなくてはいけない必須知識、そしてアルゴリズムの設計、実現における基礎を、実用上の価値に重点を置いてまとめています。 今回の改訂においては、多くの読者の声をよく参考にして、よりわかりやすく、簡明になるよう見直しを行ったほか、接尾辞木について新たな解説を加えています。 システムエンジニア、プログラマーとして活躍される方の五輪書です。
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。