こんにちは。プログラミング初心者のこんとらりあんと申します。
最初の記事や、質問文を閲覧してくださっている方は再び閲覧いただきありがとうございます。
さて、タイトルにあるように、「アルゴリズムを、はじめよう」を読みました。
以下感想になりますが、私は全くの初心者ですので、的外れなことも言っているかもしれませんが、ご容赦ください。もしくはご指摘ください。
アルゴリズムを、はじめよう
こちらの本ですが、読み始めたきっかけは先日質問を投稿したように、アルゴリズムの勉強をしたいなと思ったからです。
皆さんからもコメントをいただき、自分でも本屋で探したところ、一番とっつき易そうだなと感じました。
結果として1日ほどで一通り内容に目を通せるものでした。
この本の特徴
この本の特徴はなんと言っても流れ図による説明と擬似言語による説明に絞ったところでしょう。
言ってしまえばコードをそこまで書けなくても理解できる本であると思います。
また、イラストによる解説がとても多く、流れをこれでもかと丁寧に説明してくれる印象を受けました。
扱う内容としては、
探索(線形探索、二分探索、ハッシュ探索)
整列(選択ソート、挿入ソート、バブルソート、クイックソート)
数値計算(エラトステネスの篩、ユークリッドの互除法)
になります。かなり絞った内容かと思います。
例えばこれを勉強するとAtcoderではどれくらい、というのは分かりません。
感想
上述のように、コードがないことで本は読みやすく、同時に後半は読み進めるのが辛くもありました。
結局流れ図も、ループが2重になったりすると、理解に時間がかかります。
そうすると自然言語での理解+自分でコードを書いてみるという方が早く済んでしまいます(特に簡単なものであれば)
たしかに擬似言語は基本情報技術者試験の午後試験でも出てくるようですし、そこが結構苦戦しそうだなと思ったのは間違いありません。
今後資格取得を目標にするなら壁になると思います。
そこは自分の勉強不足ですが、それより自分は本筋であるアルゴリズムやコーディングについての知識を先に深めたいと思います。
自分の使い方
この本は、基本的に読み流してから、それを自分で実装していました。
時には難しいものもあったので、後回しにしたり、ChatGPTにヒントをもらったり、Qiitaの記事を読みました。
エラトステネスの篩の計算量を実験で確認する
この記事は私でもそれなりに理解できました。
計算量の理解という側面においても、私含む初心者が読んでおくと参考になると思います。
扱う内容の中で苦戦したものとしては、
挿入ソート、クイックソート、エラトステネスの篩、ハッシュ探索あたりでしょうか。
前二つはそもそもコーディングがおぼつかない感じでした。
後ろ二つに関しては、基礎的なものは書けるが、計算量の工夫や使い方がまだ身についていないという印象です。
今後また勉強しなおします。
次にやること
さて、自分の中ではある程度読了したという理解ですので、次に進んでまた戻ってこようと思います。
次に読むものとしては、
問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本
問題解決力を鍛える!アルゴリズムとデータ構造
の2冊でしょうか。
さらっと見た感じ、前者はPythonによるコードが充実してそうです。また、理解しやすいように感じます。
しかし、数学の要素に重点を置いているため、アルゴリズム等の説明は比較的後半にあるように感じます。
後者は読み応えが非常にありそうで、応用まで手が届いている印象です。また、最初からアルゴリズムの説明が始まっているのでその点は読みやすいかと思います。
レベル的には、アルゴリズム×数学 < アルゴリズムとデータ構造と見受けられました。
心が折れないように、上手く学習できたらいいなと思っています。
ちなみに、蟻本についても検討しましたが、難易度上の理由で見送りました。間違いない一冊であるというのは理解しているので、今後触れるほどのレベルに到達できたらなと思っています。
かなり長い文章になってしまいました。
今はAtcoderと並行してこれらの勉強をしていて楽しいです。
また、数学についても高校数学をやり直しています。
これら全てを引き続き頑張っていきます!!
読んでいただきありがとうございました。