読もうと思った経緯
もともとアルゴリズムについてはなんとなくの知識があり、かつ興味もあった一方で、アルゴリズムと一緒に語られるデータ構造ってなんなのだろうという疑問を持っていた。たまたまipadアプリ「アルゴリズム図鑑」を購入して動かしていたところ、具体的に自分で実装してみたいと考えるようになった。
並行して勉強している言語がpythonであったので、pythonでアルゴリズムに書かれている本の中から、
- 新しめで
- アルゴリズム図鑑と類似の話題を扱っており
- コードとコードの説明がしっかりしていそうなもの
を探したところ、本書を手に取った。
どう読んだか
kindleで読んでいた。流れとしては、本文を読み、コードをPCで開いてコードの解説を読んだあと、自分自身でコードを写経するということの繰り返しをした。頭から終わりまで、この方法で一通り進めた。9月9日に購入したようなので、3週間で読んだようだ。
読んだ感想
一言で言うと「いい意味で地味」。(少なくともkindleでは)2色刷りとかになっていないし、淡々とした説明が続くので、飽きやすいといった可能性はある。しかし、裏を返せば無駄な記載がなく、必要な説明をすることに専念されているともいえる。コードについての説明もかなり詳しく書かれていると感じている。
また、コードについても、base Python(という言い方があるのだろうか。)で一からアルゴリズムやデータ構造を構成しており、理解につながりやすい工夫がなされていた。また、変数の命名方法や、条件処理など「ほーなるほどそう書くとスッキリするな」と私のレベルで思うところも多く、単純にpythonのコーディングの勉強にもなった。
上記のとおり「いい意味で地味」であるのでパッと見で面白さがわかりにくい可能性もある。そのため、「アルゴリズム図鑑」のアプリや書籍で興味を持った後に、自分で具体的にpythonで実装してみたいと思ったなら、手に取るのが良いのではないだろうか。
今後どう読んでいくか
割と詰め込み感があったので、ことあるごとに見返すことになると思われる。ダイクストラとA*アルゴリズムがちょっとあやしい。また、本書で扱われていないアルゴリズムについても、ぐぐりながら自分で構成してみる、といったことができるレベルまでは連れてきてくれたと思うので、必要に応じて知識を広げたい。