アルゴリズムへの理解(´・∀・`)

アルゴリズム」とは、簡単に言うと「手順や計算方法」のことです。さらにざっくりとした言い方をすれば「やり方」とも言えるでしょう。 そもそもコンピュータは日本語に訳すと「電子計算機」となります。つまりコンピュータは、人の手では時間がかかりすぎたり、面倒だったりする計算を代わりにやってもらうためにあるのです。 そのときコンピュータにさせる「計算の手順、やり方」こそが「アルゴリズム」である、というわけです。 重要なのは、ある結果にたどり着くためのやり方(アルゴリズム)はたくさんあることです。 でも、最終的に同じ結果になるのであれば、できれば効率よく、すばやく計算してくれるほうが助かりますよね。 ですから、いくつかのアルゴリズムがある場合、より効率よく計算できるアルゴリズムのほうが優れていることになります。 コンピュータを「料理のヘタな友達」にたとえてみよう 話を分かりやすくするために「友達に頼んで、カレーを作ってもらう」ケースを想像してみましょう。友達(自分の代わりに料理をしてくれる人)をコンピュータ、調理の進め方をアルゴリズムと考えてください。 残念ながら、コンピュータは勝手に仕事を行ってくれません。 例えると、一人でキッチンに立ったことがなく、一体何をすればいいのか自分では判断できない友達ということになります。ですから友達に、カレーの作り方(アルゴリズム)を教えてあげなければいけません。 カレーの作り方はいろいろありますが、その中にも効率のいい方法、悪い方法はあります。 たとえば野菜を柔らかくする場合、普通は切ったあと、すべてをまとめて茹でますよね。でも理論上は、切ったかけらをひとつずつ茹でていくこともできます。 この方法でも最終的にはすべての野菜が柔らかくなりますが(計算結果が同じになる)、時間がいくらあっても足りません。つまり、効率の悪いやり方(効率の悪いアルゴリズム)だと言えるのです。 アルゴリズムは生活の至るところで使われています。 たとえばカーナビや乗り換え案内。 中心となるのは、A地点からB地点まで行く方法が何パターンかあった場合、どの経路を通るのがいちばん早いか?を計算してくれるアルゴリズムです。 それから、時おりニュースを騒がせる「Googleの検索アルゴリズム」。これはGoogleで検索された単語に対して、どのページを上位に表示させるかという計算方法(アルゴリズム)です。 サイトの運営者にとっては、この順序は高ければ高いほど嬉しい状態です。大体の人は、上から順にページを見ていきますよね。逆に、下の方のページはあまり見ないことも多いはずです。 せっかく作ったサイトは、なるべく多くの人に見てもらいたい。そうなると、「Googleはどういうやり方(アルゴリズム)で順位を決めているんだろう?」という点が気になるわけです。 Googleは検索アルゴリズムの詳しい内訳を公開しておらず、その上、ときどき大幅な変更を加えます。 ですから「アルゴリズムが変わった!次は一体どのようなものだろう?」「もしかしたら、自分のサイトも順位が下がる(上がる)かも!」がニュースになるわけですね(´・∀・`)