「アルゴリズムを、はじめよう」のススメとPythonによる実装

昨今のAIブームに背中を押されて、コンピュータサイエンスのバックグラウンドを持たないままエンジニアやデータサイエンティストの道を志す人は多いのではないかと思います。

私も当初全くのゼロからデータサイエンスや機械学習を勉強しはじめ、現在はデータ分析を仕事にしています。

自分のような人間が抱える大きな問題は、コンピュータサイエンスの知識が浅いということです。

流石に知識が少なすぎて実務にも潜在的に支障をきたすイベントが生じてきたので、なんとかせねばと思い、まずアルゴリズムとデータ構造の勉強から始めることにしました。

最初はLeetCodeと呼ばれるコーディングテスト対策サイトで勉強していたのですが、easy問題ですらエレガントな解法が思いつかずbrute-forceな手法で攻めてしまうことが多く、基礎能力不足を感じていました。

さらに初歩からやり直そうということで、定番書である「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」でもやろうかと思って立ち読みしたところボリュームが多く挫折しそうだったので()、さらにさらに初歩的な本書「アルゴリズムを、はじめよう」を手にとった次第です。

アルゴリズムに絞って解説

本書の特徴は、データ構造に関する説明は変数と配列のみに限定し、その代わりアルゴリズムに焦点を挙げて解説している点です。

アルゴリズムとデータ構造の入門書では、基本的にデータ構造から先に説明が始まることが多いようです。

データ構造には変数と配列以外にも多くの種類があり、楽しいパートであるアルゴリズムの章にたどり着く前に挫折してしまう人が多いそうで、それを防ぐための配慮だそうです。

プログラマとして最低限知っておくべき9つの定番アルゴリズムについて、イラスト、フローチャート、疑似コードを元にステップバイステップで丁寧に解説されています。

これでもかというくらい易しく教えてくれるので、プログラミングの経験がある方であれば挫折することはほとんどないのではないでしょうか。

Pythonで実装してみました

私の場合は、疑似コードを参考にしてPythonで実装しながら学習を進めました。

疑似コードが載っているので別に自分なんかが書いた実装例は必要ないとは思うのですが、せっかくなのでGitHubに置いておきます

疑似コードではarrayやtargetが特定の値に固定されていることが多かったのですが、以下のように変数として指定する形で実装しています。

まとめ

本書を通して、アルゴリズムをフローチャート・疑似コードに落とし込むプロセスを追体験することができ、自分が実行したい処理をプログラムに落とし込む能力が上がった気がします。

本書で登場したアルゴリズムは基本情報技術者試験の出題範囲でもあるので、試験対策として使うのも良いかと思います。

コンピューテーショナル思考を学ぶ嚆矢として最適な一冊でした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です