アルゴリズムを勉強しようと思った時、「難しい」という考えが脳裏を過るのではないでしょうか。
正直、難しいだろうと二の足を踏んでいる人もいるかもしれません。今回は、勉強する時におすすめのアルゴリズムの本を紹介します。本を活用してアルゴリズムについて勉強しましょう。
アルゴリズムとは
アルゴリズムは、「問題を解決するための手順」「計算方法」を指す言葉です。答えを求める時の手順を具体的・明確に示したもので、その手順に従っていれば誰でも同じ答えが得られます。
ただし、コンピュータを使ってプログラムで問題を解決するための手順を表すために「アルゴリズム」を使われます。大量の単純な計算を高速に処理できるため、処理手順を少し変えるだけで処理時間が短縮できるメリットがあり、結果、アルゴリズムに対して注目が集まるようになりました。
アルゴリズムは昔から存在した
アルゴリズムは昔から存在していました。王将を取るためにはどのような手を出せばいいのか、という考え方であったり、魔方陣・数独などの数字配置をする時にルールを満たす方法を考えたりすることと同じように、概念自体はありました。
近年、アルゴリズムという言葉が認知されてきただけで、古くから問題を解決するための手段として存在していました。
アルゴリズムの語源は?
アルゴリズムは、英単語「algorithm」が語源と考えられています。「演算方法」という意味です。9世紀の科学者フワーリズミーが著した『アルゴリトミ』に由来されています。四則演算・代数方程式などの数学に関する理論が記載されています。
アルゴリズムを学ぶ理由
アルゴリズムを学ぶ理由は、「プログラミング言語に慣れる」という意味があると考えられます。自分自身で実装してみることで、プログラミングの基礎となる要素などがアルゴリズムに詰まっています。変数や配列、ループや条件分岐などは特に、プログラミングの基礎となる要素です。データ構造などについても学べます。
実務の現場でもデータ量が少ない内は問題ありませんが、データ量が増えて来ると処理速度に時間がかかった場合、アルゴリズムの選択が重要であることを再認識できます。
アルゴリズムの例
アルゴリズムについて実例を紹介して解説します。
アルゴリズムの例
- 料理
- Googleの検索
- プログラミング
例①:料理を例にアルゴリズムを考える
料理を例に考えてみると、例えば野菜を「半月切り」する場合に2パターン存在します。
- 輪切りをしてから1枚ずつ半分に切る
- 最初に半分に切ってから輪切りする
どちらのパターンでも最終的に「半月切り」になります。両パターンでの違いは「切る回数」の差が生じます。例えば、トマトを半月切りで10枚に切る場合、1つ目のパターンでは合計9回切る必要があり、2つ目のパターンは合計5回で達成できます。
切り方のパターンを考えることで、切る回数(手間)を減らせます。
例②:Googleの検索アルゴリズム
Googleの検索エンジンについても5つのアルゴリズムに従って動作しています。
Googleの検索エンジンに使われるアルゴリズム
- 検索意図の把握
- 検索意図に関連するWebサイトの検索
- Webページの品質評価
- ユーザビリティ評価
- ユーザー関連情報の考慮
それぞれのアルゴリズムによって、Googleの検索エンジンは、ユーザーに最適な検索結果を返すようにプログラムされ、動いています。そのため、SEO対策を考える時には、上記ポイントを踏まえた対策を行うことで、検索上位に表示される可能性が高まります。
例③:プログラミングにおけるアルゴリズムの例
プログラミングにおけるアルゴリズムは、「探索アルゴリズム」「整列アルゴリズム」が例として挙げられます。
- 探索アルゴリズム:取得したいデータをリストから探索する
- 整列アルゴリズム:ランダムに並べられたデータを昇順・降順に並べ替える
それぞれのアルゴリズムには、「計算量」という指標からアルゴリズムの効率の良さを示します。プログラミングでは、このほかにも多くの種類のアルゴリズムを使用されているため、じっくりと時間をかけて勉強することが必要となります。
おすすめのアルゴリズムを学べる本
アルゴリズムを勉強できるおすすめの本を紹介します。
プログラマーなら知っておきたい40のアルゴリズム 定番・最新系をPythonで実践! (impress top gear)
検索・ソートから機械学習・説明可能性まで勉強できます。様々なアルゴリズムを一挙に把握できるようになるので、問題解決力・データ活用力が身につきます。アルゴリズムの基本から、検索・ソートの実例などが学べます。
戦略ゲームAI 解体新書 ストラテジー&シミュレーションゲームから学ぶ最先端アルゴリズム (AI&TECHNOLOGY)
ストラテジー&シミュレーションゲームに利用されている戦略ゲームAI技術について、国内や海外の事例を交え、その仕組みを丁寧に解説しています。技術の概要から解説され、ビジュアルを交えながら分かりやすく解説している本です。
しっかり学ぶ数理最適化 モデルからアルゴリズムまで (KS情報科学専門書)
最適化問題へのモデル化・基本的なアルゴリズムを俯瞰して基礎を固める本です。イメージしやすい具体的な例や理解の定着のための演習問題がついています。じっくり学びたい人におすすめです。
図解! アルゴリズムのツボとコツがゼッタイにわかる本
楽しくアルゴリズムを学べる本です。変数や配列、関数といったアルゴリズムを理解するために必要な基礎知識や基本のデータの並べ替えなどをイラスト・図などで解説しているので初心者でも理解できます。
スマートな良いコードのために Pythonで学ぶアルゴリズム入門
アルゴリズムの仕組みを理解し、スマートなコードを実現できる本です。データ構造・アルゴリズムの現実のコードを知り、スキルアップできます。Pythonプログラマーにとって必須の本です。
Python版 コンピュータ科学とプログラミング入門 コンピュータとアルゴリズムの基礎 (近代科学社Digital)
工学系基礎教育としてのコンピュータ教育・プログラミング教育を実現するための本です。工学的問題の解決に対するコンピュータ・プログラムへの抵抗をなくし、スムーズにコンピュータを使う素養を養えます。
マスターアルゴリズム 世界を再構築する「究極の機械学習」
世界有数の研究者による機械学習の説明書です。聖亜k津に溶け込む機械学習とは何かという点についてや、観測衛星・DNAシーケンサ・量子加速器などのデータから、機械学習は自然界の謎をすべて解き明かすのかということを勉強できます。
まとめ:アルゴリズムについて時間かけてしっかり理解を深めて現場で活かそう
アルゴリズムを勉強するのにおすすめの本を紹介しました。アルゴリズムを理解することは難しいので、自分のレベルに合う本を選ぶことが重要です。
基礎をしっかりと固めてから、ちょっとずつ理解を深めていくことで、着実に知識が身につきます。