tomoima525's blog

Androidとか技術とかその他気になったことを書いているブログ。世界の秘密はカレーの中にある!サンフランシスコから発信中。

Grokking Algorithms アルゴリズム初学者、学び直したい人に勧めたい洋書技術本

f:id:tomoima525:20170529231655j:plain:w400
最近同僚に Grokking Algorithms というアルゴリズムについて書いた本が楽しく読めたと教えてもらい、自分も一通り読んだらアルゴリズム再学習に非常に良かったのでブログに書きます。

ざっくり内容

Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People

Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People

Grokking(わかる、意味を知る) アルゴリズムという名の通り、アルゴリズムの基本を知ることが出来る一冊になっています。この本の特徴としては、400枚にも及ぶ豊富なイラストでアルゴリズムの解説がなされている事が挙げられます。著者のAditya氏はEtsyのエンジニアですが、アートについても見識がある方だそうです。内容については、アルゴリズムの基本(計算量とは等)やソートに始まりk近傍法といった中級レベルのアルゴリズムまでを網羅しています。

なお調べたところ邦題はなっとくアルゴリズムというようです。

なっとく!アルゴリズム

なっとく!アルゴリズム

良かったところ

イラストと例がわかりやすい

本書の他との違いはイラストがほぼ1ページおきにあるところでしょう。
一見複雑な話も視覚化すると理解が深まります。行き帰りの電車が読書時間な自分は帰りの電車は疲れて内容が入ってこないこともあるのですが、本書は飽きずに楽しめました。

f:id:tomoima525:20170529224006j:plain:w400
図でわかるクイックソートアルゴリズム

なお、著者はサンフランシスコ在住ということもあって、ベイエリアが例えに出てくることがしばしばあります。セールスマン巡回問題にサンフランシスコ、バークレーが出て来た時はニヤニヤしてしまいました。

f:id:tomoima525:20170529223922j:plain:w400
丁度電車で通ってるところや…!

英語が平易

英語が平易だったのも個人的にはポイントが高かったです。技術書は専門用語が多いので、専門外の分野だとさらに難易度が上がったりするものです。が、この本はテクニカルターム以外だったら高校レベルの語彙なのかなと思います。語りかけ口調(Do you think ~ ?) が多用されているのも堅苦しくなくて良いです。

人に説明するのに役に立つ

イラストが多くて平易だとすると内容が薄いのかな、と思われるかもしれませんが全然そんなことはないです。後半になると比較的難しい内容(貪欲法とか)にも踏み込んでいきます。アルゴリズム本は後半になると難解になりがちですが、たくさんのページを割いて例を用いつつ噛み砕いて書いているため、自分が人に説明する時も役に立ちます。
例えば貪欲法については、まずはクラスルームの単純なスケジュールを組む例から入ります。毎ステップ単純なルールでスケジュールを組んだ結果が、最も良い結果になりうるというところから、” 部分的な最適解から全体的な最適解を導く”という貪欲法のアルゴリズムを説明していきます。

初学者でも余裕な一冊だし英語の勉強にもなる

イラストと文章の平易さで、別分野の人や初学者でも全く問題ない内容だと思います。自分は学生の頃に一通りアルゴリズムを勉強したままでしばらく遠のいていたので、再学習という点でも非常にためになる一冊でした。洋書で技術書を読んでみたいけど難易度高いのはちょっと、という人にもおすすめしたいです。

ちなみに、数ヶ月前に第二版が出たアルゴリズムクイックリファレンスも先日(日本語版)購入したのですが、その名の通りアルゴリズムとサンプルがコレほどかというくらいまとめられていてアルゴリズムをすでに学んでいる人にはこちらも推したいです。

アルゴリズムクイックリファレンス 第2版

アルゴリズムクイックリファレンス 第2版