書籍
アルゴリズム部門
絵で視覚的に理解する
-
アルゴリズム図鑑 増補改訂版: 絵で見てわかる33のアルゴリズム - アルゴリズムが絵で説明されており、雰囲気をつかむのに向いている。スマートフォンアプリ(Android、iOS)だと無料で読むことができる。
注意
コードを書くときは、別の書籍を読む必要がある。
-
アルゴリズム ビジュアル大事典 - アルゴリズム・データ構造の計算方法と結果をビジュアル的に捉えることができる書籍。スマートフォンのカメラで、QRコードにアクセスするとアルゴリズム・データ構造に関するアニメーションが閲覧できるページもある。
-
なっとく!アルゴリズム - 解説の丁寧さと図の豊富さが特徴。
注意
サンプルコードがPython2(公式のサポート終了)で書かれているため、print文などはPython3の書き方を調べる必要がある。
コンテストで頻出・典型的な知識を習得する
- アルゴリズム的思考力が身につく! プログラミングコンテストAtCoder入門 - drkenさんによる書籍の第3弾(通称、AtCodeer本)。記事「AtCoderに登録したら次にやること ~ これだけ解けば十分闘える!過去問精選10問 ~」を単行本化したAtCoderの入門書。C++とPythonの文法、AtCoder Beginner Contest (通称、ABC)のC問題を解くための典型的な知識などが習得できる。
- 著者の紹介記事 - 書籍のコンセプト・内容・想定読者が紹介されている。
- 最強最速アルゴリズマー養成講座 プログラミングコンテストTopCoder攻略ガイド - 通称、チーター本。著者がAtCoder社長chokudaiさんの書籍。
- プログラミングコンテスト攻略のためのアルゴリズムとデータ構造 - 通称、螺旋本。後述する蟻本と比べると初心者向け。基本的なアルゴリズムが詳しく解説されている。
- 問題解決力を鍛える!アルゴリズムとデータ構造 - drkenさんによる書籍(通称、けんちょん本)。後述する蟻本を読み進めるための基礎が学べる。
- 内容や難易度の詳細
- 書籍に掲載されているソースコードや章末問題の略解
- yuk1ty/book-algorithm-solution - 有志が本文のソースコード(C++)をPythonで書き直している。
- 競技プログラミングの鉄則 ~アルゴリズム力と思考力を高める77の技術~ - E869120さんによる書籍の第2弾。アルゴリズムや思考テクニックを学ぶことができる。豊富なオリジナル問題やヒューリスティック最適化への対応などが特徴。
- 書籍「競技プログラミングの鉄則」を書きました - 著者による書籍の内容と想定読者の説明。
- 【発売即重版】書籍『競技プログラミングの鉄則』を著者が解説 - 著者による書籍の解説動画。視聴者からの質問・回答コーナーもある。
- 『競技プログラミングの鉄則』序盤20,000文字+目次を無料公開します! - 著者が書籍の目次と序章・第1章を無料で公開している記事。
- E869120/kyopro-tessoku - ソースコード(C++、Python、Java)、節末問題・力試し問題の解答、正誤表が掲載されている。
- 競技プログラミングの鉄則 演習問題集 - AtCoderの自動採点システムで、書籍に掲載されている問題を解くことができる。
- 有志による紹介動画 - kaede2020さんが、書籍の7章「ヒューリスティック」の概要を紹介している。
- 有志による書評 - Ryo Suzukiさんによる書評。
-
プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ - 通称、蟻本。初級編からかなり難しいが、典型的なアルゴリズムと考え方が収録されている。
参考
解説がとてもシンプル、かつ、第2版発行からやや時間が経過していることから、Web記事・解説ブログとともに参照することを推奨。
幅広い分野の基礎を学ぶ
- Pythonで学ぶアルゴリズムとデータ構造 - アルゴリズム・データ構造をPythonで学ぶための入門書。ソート・データの探索・グラフ理論・動的計画法・計算量に加えて、乱択アルゴリズム・数論や社会への応用例など幅広い話題が解説されている。
特定の分野を重点的に学ぶ
- Open Data Structures - データ構造に関する入門書。ソースコードがGitHubで公開されている。
- 高校数学の基礎が150分でわかる本 - E869120さんが執筆した高校数学の入門書。フルカラーの図解、中学数学のサポート、実用的な具体例、穴埋め式の演習問題が用意されていることに加え、気軽に読めることが特徴。
- 著者の紹介記事 - 書籍の内容および特徴・想定読者などが紹介されている。
他分野とのコラボ
- 問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本 - E869120さんによる書籍(略称: 「アルゴリズム×数学」本、または、#アルゴ数学本(出典))。有名アルゴリズムの紹介だけでなく、関連する数学的知識・アルゴリズムの活用に向けた数学的考察についても解説されている。
- 書籍の詳細な内容や想定読者
- ソースコード(C++、Python、Java、C)・問題の解答・正誤表
- AtCoderの自動採点システムを利用して演習問題を解く - 書籍に掲載されているプログラミング問題がAtCoderで解くことができる。
- E869120本をSwiftで解く(問題58-90) - 有志によるSwiftでの解答例。
- 執筆体験記 - 著者が、書籍を書くことになったきっかけから出版までの過程を振り返った記事。
- パズルで鍛えるアルゴリズム力 - drkenさんによる書籍の第2弾。有名なパズル(数独・虫食い算・迷路など)を題材に、アルゴリズムの考え方を学ぶことができる。
- 著者の紹介記事 - 書籍の内容・想定読者・伝えたいメッセージなどが紹介されている。
- パズルのソルバーと解答、正誤表
情報オリンピック・国際大学対抗プログラミングコンテストに参加する
- JOI公式テキスト Pythonで問題解決 情報オリンピックに出てみよう - 日本情報オリンピック(JOI: Japanese Olympiad in Informatics)の公式テキスト。Pythonの基礎的な文法から二次予選の攻略までに必要な知識を学ぶことができる。
- 書籍の紹介と便利リンク集
- 公式解説動画
- PyTry - 競技プログラミング初心者向けのPython実行環境。
- 競技プログラマーハンドブック - Competitive Programmer’s Handbookの和訳。基本的なアルゴリズムから発展的な内容まで幅広く扱われている。主な想定読者は、国際情報学オリンピック(IOI)や国際大学対抗プログラミングコンテスト(ICPC)への参加を考えている学生。
アルゴリズム実技検定を受ける
- アルゴリズム実技検定 公式テキスト[エントリー~中級編] - betrue12さんとkenkooooさんによる書籍(通称、PAST本)。「アルゴリズム実技検定(PAST)」初の公式テキスト。
- アルゴリズム実技検定 公式テキスト[上級~エキスパート編] - PAST本の続編。著者は、drkenさん、tsutajさん、kenkooooさん。
- tsutaj/pastbook-2-source-code - ソースコード(C++、Python)とリンク集が掲載されている。
ヒューリスティック部門
- ゲームで学ぶ探索アルゴリズム実践入門~木探索とメタヒューリスティクス - 探索アルゴリズムを体系的に学ぶことができる入門書。想定読者は、自作ゲームでCPU(対戦AI)を作成したい人やコンテスト(ゲームAI・ヒューリスティック型)に参加したい人。
- thunder本をRustで書いてみた(Greedyまで) - 有志が本文のソースコード(C++)をRustで実装している記事。
- 「ゲームで学ぶ探索アルゴリズム実践入門」のサンプルコードでAtCoderの問題を解いてみた - 筆者が同書のサンプルコードを利用して、コンテストの過去問を解く過程を解説している。
- 数字集め迷路 - 同書に掲載されているオリジナルゲームで遊ぶことができる。
- メタヒューリスティクスの数理 - メタヒューリスティクス(難易度の高い最適化問題を解くための経験的手法を有機的に結合させたもの)の手法がうまく働く理由を数理的に説明している書籍。
- Design of Heuristic Algorithms for Hard Optimization - 巡回セールスマン問題を題材に、主要なヒューリスティック・メタヒューリスティックスに関する手法がシンプルかつ厳密に解説されている。
- Optunaによるブラックボックス最適化 - 機械学習に不可欠なハイパーパラメータ調整を自動化するブラックボックス最適化を分かりやすく・詳しく説明した入門書。
小説
- アルゴリズムの乙女たち - 競技プログラミングの全国大会出場を目指す大学生たちの姿を描いた小説。
- ようこそ、競プロの世界へ!~異世界転生~ - 競技プログラミングの世界に転生した高校生を描いた小説。