データ構造とアルゴリズム | ①アルゴリズム
こんにちは、現役理系大学生のShogoです!
今回から、「データ構造とアルゴリズム講座」を開講します。
『データ構造ってなに?』
『アルゴリズム体操しかしらない!』
という方でも理解できる内容になっています!
なお、このコースは初心者向けの内容となっていますので、経験者の方は少し物足りないかもしれません。その場合は、復習のように使っていただけると幸いです。
第1回の内容は、「アルゴリズム」です。
アルゴリズムとはなんなのか、どのような場合に使われているのかを詳しく説明していきたいと思います。
それではいきましょう!
1-1 アルゴリズムとは
アルゴリズムとは、一般的に、「問題を解くための手順や計算方法」のことを意味します。
例えば、Googleの検索アルゴリズムという言葉を聞いたことはありませんか?
この検索アルゴリズムというのは、「ホームページの重要さ、また、関連性を評価し、検索結果の表示順を決めるというプログラム」です。検索結果は、あなたの地域や趣味・志向に応じたものがでてくるはずです。
つまり、ここでいうアルゴリズムとは、「あなたが欲しいであろう情報を探し出すためのツール」と言いかえることができます。
これは一概にGoogleだけではなく、GAFA(Google, Apple, Facebook, Amazon)でも当たり前のように使われています。
1-2 よいアルゴリズムとは
よいアルゴリズムとは、一般的に時間計算量と空間計算量が少ないものを言います。
✅時間計算量
時間計算量とは、アルゴリズムの処理にかかる時間のことを言います。
例えば、上図で、STARTからGOALまで何手かかるかということを考えるとします。このとき時間計算量が少ないということは、手数が最も少ない場合のことを言います。
✅空間計算量
空間計算量とは、アルゴリズムの処理に必要な記憶領域のことを言います。
この簡単な例として、ベクトルや行列が挙げられます。
長さnのベクトルの場合、占有する空間はO(n)です。
行n、列nの行列の場合、占有する空間はO(n×n)=O(n^2)です。
O( )はO記法というのですが、これについては次回詳しく説明します。
上図でいうと、nの長さ、もしくは、行列nの値(要素数)が大きくなるほど、占有する容量が増えることがわかります。つまり、O(n)のほうが空間計算量が少ないです。
1-3 ソートアルゴリズム
アルゴリズムで最も一般的なのが、ソート(整理)です。
大量のデータを並び替え、整理するためのアルゴリズムを、ソートアルゴリズムといいいます。
ソートには以下のようなものがあります。
・ボゴソート
・バブルソート
・インサーションソート
・マージソート
・クイックソート
こちらの記事で紹介すると長くなってしまうので、後々の記事でご紹介します!
1-4 アルゴリズムを学ぶメリット
アルゴリズムは、なんだかよくわからないという方も多いかもしれません。しかし、アルゴリズムを学ぶことで多くのメリットが有ります。
✅コードの効率化を図れる
アルゴリズムを学ぶと、コードの効率化が図れます。
例えば、うまく学習すれば、何十行にも渡って書いていたコードが、たった数行で実行できるようになります。
コードが短くなるということは、時間計算量も空間計算量も少なくなるということです。
✅日常生活に応用できる
アルゴリズムの学習は、日常生活にもいきてきます。
例えば、勤務先や学校まで最速で行きたいとき、『実は、電車で行くよりも、自転車で行ったほうが効率的ではないのか』と考える能力が付きます。
他には、『この会議の時間は適正なのか』や『今の職場の給料はわりにあっているのか』など、常に最適化するように考える習慣ができます。
まとめ
いかがだったでしょうか。
今回は、「アルゴリズム」についてお話しました。
今まであやふやだったアルゴリズムを理解していただけていたら幸いです。
また、今回話しきれなかった内容がたくさんあるので、また今後の記事も楽しみにしていてください!
質問や訂正があれば、遠慮なくこの記事にコメント、もしくは、TwitterにDMをしてください!(@shogo_python)
今回の記事が"いいね!"と思ってくれた方は、スキとフォローをよろしくおねがいします!
では、またの機会にお会いしましょう!
今回のおすすめ書籍