ロアちゃんかわいい

競プロっぽい話がなされる駄文の掃きだめ

チーター本の感想

おはようございます。精進不足レート冷やし子と申します。冷え冷え。

『最強最速アルゴリズマー養成講座』、所謂チーター本を読み終えたので、感想を書いておきます。

チーター本、何

チーター本、正式には『最強最速アルゴリズマー養成講座 -プログラミングコンテストTopCoder攻略ガイド』は、皆さんご存知AtCoder株式会社社長、chokudaiこと高橋直大さんの著書です。
簡単に言うと競技プログラミング未経験者の為の競プロ講座で、ヒョウ柄模様が特徴です。(チーター本なんだからチーター柄なのかもしれませんが)
chokudaiさんのITMediaでの連載『最強最速アルゴリズム養成講座』にアプリケーションプラネットでの『TopCoderレーニング講座』教材の資料を組み合わせたものとのことで、TopCoderの過去問を例題に、競技プログラミングにおける基本的な考え方が解説されています。

・対象レベルは?

上記の通り未経験者~初心者向けです。
例題のレベルが準備編、初級編、中級編、上級編に分かれています。上級編はかなり難しくほとんど自力で解けませんでした。
2020年2月10日現在のAtCoderのレートで言うと、灰色~緑色向けだと思います。

・どうでしたか

この本の方針は全探索を軸に、コンピュータに上手く問題を解かせるための考え方を身に着けるというものです。
些末な知識はほとんど載っていません。
基本的なアルゴリズムであるダイクストラ法なども後述するような丁寧な説明があるものの、例題などは用意されていませんでした。
前回のクソ長い記事の最後の方で紹介した動的計画法や貪欲法の項目で、
「こういう名前のアルゴリズムがあるわけではなく、あくまでアルゴリズムの設計手法、方針にこういう名前が付いている」
というようなことを書いたと思います。
そういった、アルゴリズム設計の中心的な部分を主に解説してくれる本だと思っていただいて大丈夫です。

上記のように方針が明確な分読み進めやすく、僕のような初心者にはとても良い本でした。
各章のテーマ分けも分かりやすく、「全探索する」「計算量を評価する」「動的計画法・メモ化で計算短縮」「探索範囲を狭める」「貪欲法」などが解説されています。
これらの方針を気にするようになってから、プログラミングの見え方が随分変わった気がします。

一方、知識量は大して増えないと思った方がよいです。
あくまで根本的な思考力の養成が目的だからか、Union-FindやDijkstra法なども、アルゴリズムの考え方に重点が置かれて解説されていました。
そうしたアルゴリズムの知識量を増やしたい方は蟻本(正式には『プログラミングコンテストチャレンジブック』といいます)を読むと良いと思います。(蟻本はまだ読み終えていませんが、今読んでいる部分だけでもアルゴリズムの種類数が段違いです)
僕のようにチーター本→蟻本というのも全然ありだと思います。(あり本だけにw)

以下は気になった点。
TopCoderのデザインがクソ分かりにくく変更されており、登録が難しいです。注意。
TopCoderの過去問、どういう訳か表示がクソ遅い時があります。後時々バグります。
・プログラミング全くやったことない人は注意ですが、クラス等分からないことがあると思います。一応説明はありますが、ある程度は仕方ないので調べましょう。
・説明が分かりにくい部分があり、何度か読み直すことになりました。ソースコードと読み比べながら根気よく読むことが求められます。
・確認した限り一か所だけ数式の誤字(p281, 多分2C→2^C)がありましたが、ソースコードの方は合っていたのでそちらをよく読むようにするのが良いと思います。

総括するととても良い本でした。夢月ロアちゃんの動画も見てみると尚良いと思います。

www.youtube.com

ロアちゃんかわいい。ではおやすみなさい。