問題解決力を鍛える!アルゴリズムとデータ構造(モンダイカイケツリョクヲキタエル!アルゴリズムトデータコウゾウ)
- 著者:
- 大槻 兼資/秋葉 拓哉(オオツキ ケンスケ/アキバ タクヤ)
- 出版社:
- 講談社
- 出版日:
- 2020年10月02日頃
- ISBN:
- 9784065128442
- シリーズ:
- KS情報科学専門書
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
◆ 2 万部突破のベストセラー!みんな読んでる!◆
◆「 IT エンジニア本大賞 2021 特別賞」受賞◆
競技プログラミング経験が豊富な著者が、「アルゴリズムを自分の道具としたい」という読者に向けて執筆。入門書を標榜しながら、 AtCoder の例題、 C++のコードが充実。入門書であり実践書でもある、生涯役立つテキストを目指した。
【推薦の言葉】
プログラムが「書ける」ことと、効率の良い結果を得ることには大分ギャップがある。本書は、どのようにすれば効率のよい結果が得られるか? すなわちどのようなアルゴリズムを採用すればよいか? という点に対して、幅広くかつ明快に解説している。
また本書は、アルゴリズム初心者に対して、アルゴリズムへの興味を惹かれるように記述されている。アルゴリズム上級者への初めの一歩には最適であろう。
ーー河原林健一 (国立情報学研究所副所長)
【全体を通して、アルゴリズムの設計技法を重視した構成】
まず、 1 、 2 章でアルゴリズムと計算量について概観します。そして、 3 〜 7 章が、早くも本書のメインパートといえる部分であり、「アルゴリズムの設計技法」について詳しく解説します。これらの設計技法に関する話題は、多くの書籍では、最後の方で簡単に説明しています。しかし本書は、現実世界の問題を解決するための実践的なアルゴリズム設計技法の鍛錬を目指しています。そこで、アルゴリズム設計技法について前半で詳しく解説する構成としました。そして、これらの設計技法が後半の章でも随所に使われていくことを示していきます。
その後、 8 〜 11 章では、設計したアルゴリズムを効果的に実現するうえで重要となるデータ構造を解説します。データ構造について学ぶことで、アルゴリズムの計算量を改善したり、また、 C++や Python などで提供されている標準ライブラリの仕組みを理解して、それらを有効に活用したりすることができるようになります。
そしていったん、 12 章でソートアルゴリズムについての話題を挟んだ後に、 13 〜 16 章でグラフアルゴリズムについて解説します。グラフは、非常に強力な数理科学的ツールです。多くの問題は、グラフに関する問題として定式化することで、見通しよく扱うことができるようになります。また、グラフアルゴリズムを設計するとき、 3 〜 7 章で学ぶ設計技法や、 8 〜 11 章で学ぶデータ構造が随所で活躍します。
最後に、 17 章で P と NP に関する話題を解説し、世の中には「効率的に解くアルゴリズムを設計することができそうにない難問」が多数あることを見ます。 18 章で、これらの難問に取り組むための方法論をまとめます。ここでも、動的計画法 (5 章) や貪欲法 (7 章) といった設計技法が活躍します。
技書の森解説
通称「けんちょん本」として知られる本書は、アルゴリズムとデータ構造の入門書でありながら、単なる知識のカタログに終わらない構成で支持を集めています。全探索・貪欲法・動的計画法・グラフ探索といった解法パターンを、「どの場面で使い分けるか」という問題解決の判断力とセットで身につけられる点が特徴です。
各章は具体的な問題 (AtCoder の類題を含む) から出発し、計算量の見積もり・データ構造の選定・実装という流れで解説が進みます。 C++ のコード例が中心ですが、擬似コードレベルでの理解に比重が置かれているため、他言語を使う読者でもロジックは追えます。著者の大槻兼資氏と監修の秋葉拓哉氏はともに競技プログラミングの実績があり、説明の正確さと実践的な視点の両立が取れています。
前提は高校数学と基本的なプログラミング経験で、大学のアルゴリズム講義を受ける代わりに独学で基盤を築きたい人に向いています。競技プログラミングに取り組むかどうかに関わらず、コーディング面接やシステム設計の場面で「計算量を意識した選択」ができるようになるための足腰を鍛えてくれる一冊です。
言及 Qiita 記事 (53 件)
AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~
♡ 8320アルゴリズム, algorithm, AtCoder, 競技プログラミング, 新人プログラマ応援アルゴリズムとは何か!? ~ 文系理系問わず楽しめる精選 6 問 ~
♡ 2541アルゴリズム, 機械学習, DeepLearning, 競技プログラミング, 新人プログラマ応援アルゴリズムの世界地図
♡ 1325アルゴリズム, 最適化, 競技プログラミング, データ構造, 新人プログラマ応援1年半のソフトウェアエンジニア長期インターンで出会ったオススメ本をたくさん紹介します
♡ 859本, インターン, 書籍紹介あのアルゴリズムはどこ? Pythonを使用してAtCoderの緑色や水色を目指す方に、30以上のアルゴリズムスニペットと100問以上の問題(ACコード付き)を紹介!
♡ 692Python, アルゴリズム, AtCoder, 競技プログラミング, PypyAtCoderで青色(8割以上のIT企業でアルゴリズム力はカンスト)になったので青になるまでに必要そうなことをまとめる
♡ 639C++, アルゴリズム, AtCoder, 競技プログラミングレッドコーダーが教える、競プロ・AtCoder上達のガイドライン【上級編:目指せレッドコーダー!】
♡ 591アルゴリズム, AtCoder, 数学, 競技プログラミング, 新人プログラマ応援直感でわかる、ヒューリスティック問題の羅針盤 ~貪欲法から山登り法まで~
♡ 413アルゴリズム, 最適化, 競技プログラミング, 新人プログラマ応援, ヒューリスティック【競プロ】新人SEがAtCoderを始めて水色になった【色変記事】
♡ 303AtCoder, Se, 競技プログラミング, 新人プログラマ応援SE 1年目で読んだ技術書68冊+α
♡ 275Java, 初心者, 技術書, Se
この本に興味がある方におすすめ
この本に関連
大槻 兼資 の他の書籍
関連記事
アルゴリズム本ガイド - 競プロだけじゃない、実務に活きる選び方
アルゴリズム本の 3 タイプと、実務でアルゴリズムの知識が活きる場面、数学が苦手な人向けの学習ルートを紹介します。
機械学習・AI 本ガイド - エンジニアが読むべき技術書の選び方
機械学習の基礎から実践まで学べる技術書の選び方を紹介。「Python ではじめる機械学習」などのハンズオン本を軸に、数学が苦手な人向けの学習ルートと ML 本の賞味期限の見極め方を解説します。
手が止まったら本を開け - デバッグとしての読書
コードを書いていて手が止まる瞬間は、読書のチャンスです。実装に詰まったときに技術書を開く習慣が、問題解決力とコードの質を同時に高める理由を解説します。