掲載数No.1プログラミング教室・ロボット教室検索サイト

「アルゴリズム」とは?今さら聞けないキーワードを解説!

2002年の放映スタート以来、大人気の番組「ピタゴラスイッチ」。「『考え方』を育てる」という目的のもと、「ピタゴラ装置」などのユニークなコンテンツを発信し、子供たちの好奇心を刺激し続けています。

さて、そんな「ピタゴラスイッチ」の人気ソングといえば「アルゴリズム体操」ですが、そもそも「アルゴリズム」とは何なのでしょうか。

ニュースで時おり耳にする「Googleが検索エンジンのアルゴリズムを変更した」とは、一体何のことなのでしょうか。今回は、コンピュータの基本単語「アルゴリズム」についてご説明します。

プログラミングスクールで、転職に有利なスキルが学べる!

アルゴリズムとは?「計算の手順・やり方」のこと!

「アルゴリズム」とは、簡単に言うと「手順や計算方法」のことです。さらにざっくりとした言い方をすれば「やり方」とも言えるでしょう。

そもそもコンピュータは日本語に訳すと「電子計算機」となります。つまりコンピュータは、人の手では時間がかかりすぎたり、面倒だったりする計算を代わりにやってもらうためにあるのです。

そのときコンピュータにさせる「計算の手順、やり方」こそが「アルゴリズム」である、というわけです。

重要なのは、ある結果にたどり着くためのやり方(アルゴリズム)はたくさんあることです。

でも、最終的に同じ結果になるのであれば、できれば効率よく、すばやく計算してくれるほうが助かりますよね。

ですから、いくつかのアルゴリズムがある場合、より効率よく計算できるアルゴリズムのほうが優れていることになります。

コンピュータを「料理のヘタな友達」にたとえてみよう

話を分かりやすくするために「友達に頼んで、カレーを作ってもらう」ケースを想像してみましょう。友達(自分の代わりに料理をしてくれる人)をコンピュータ、調理の進め方をアルゴリズムと考えてください。

残念ながら、コンピュータは勝手に仕事を行ってくれません。

例えると、一人でキッチンに立ったことがなく、一体何をすればいいのか自分では判断できない友達ということになります。ですから友達に、カレーの作り方(アルゴリズム)を教えてあげなければいけません。

カレーの作り方はいろいろありますが、その中にも効率のいい方法、悪い方法はあります。

たとえば野菜を柔らかくする場合、普通は切ったあと、すべてをまとめて茹でますよね。でも理論上は、切ったかけらをひとつずつ茹でていくこともできます。

この方法でも最終的にはすべての野菜が柔らかくなりますが(計算結果が同じになる)、時間がいくらあっても足りません。つまり、効率の悪いやり方(効率の悪いアルゴリズム)だと言えるのです。

代表的なアルゴリズム「二分探索法(にぶんたんさくほう)」

では、次はコンピュータのアルゴリズムについて説明します。アルゴリズムには色々なものがありますが、中でも代表的なのは「二分探索法(にぶんたんさくほう」です。

たとえば、親戚の子どもが何歳だったか知りたいとします。

考えられる方法としては、「0歳?」「ちがうよ」「1歳?」「ちがうよ」と、0歳から順に聞いていく方法がありますね。

この方法は最もシンプルですが、親戚の子どもが18歳だった場合、19回も質問を繰り返すことになります。ちょっと面倒くさいですね。

これを効率よくするには、真ん中あたり(10歳)から質問していけばいいのです。「10歳?」と聞いて「それよりは大きいよ」と言われたら、0歳から10歳の間はもう質問しなくても良くなります。さっそく半分の可能性が消えるわけですから、先ほどの方法と比べるとずっと効率が良いわけです。

このように、半分のところで分けて調べる方法が「二分探索法」というアルゴリズムです。親戚の子どもの例であれば最大でも19回の質問で済みますが、コンピュータで計算する場合はまったく桁が違います。

そうなると「面倒くさい」では済まないですよね。ですから、なるべく効率的なアルゴリズムの研究が日々進められているわけです。

他にもある!代表的なアルゴリズム

アルゴリズムには様々な種類があり、用途や目的によって利用されるアルゴリズムは違ってきます。ここでは、代表的なものをいくつか紹介します。

探索アルゴリズム(目的となるデータを探す)

まずは探索アルゴリズムの紹介。これは目的となるデータを探すもので、たとえば国語辞書の中から「プログラミング」という単語を探す場合を考えてみましょう。

線型探索

線型探索は、最も原始的なアルゴリズムだと言えるでしょう。先頭から順番に探索を行っていき、一致するものを探します。国語辞書の例ですと、「プログラミング」の項目を見つけるために「」から探していくことになります。

非効率的であり計算量も多くなってしまうのですが、対象となるデータが少ない場合は、これで十分なこともあります。

二分探索法

記事上部でも触れている二分探索法について。辞書の例でいうと、「最初の文字である“プ”は、辞書全体の中で前半と後半のどちらかにあるだろうか?」をまず考えると良いでしょう。前半にあることが分かれば「あ」から探し始めますが、後半にあることが判明しているのであれば、もう「あ」から探す必要はありません。これだけで、線型探索法に比べて探索時間は半分以下になります。

ソートアルゴリズム(規則に従ってデータを並べ替える)

次は、あるデータを一定の規則について並べ替えるアルゴリズム(ソートアルゴリズム)について考えてみましょう。たとえば、以下の数字を大きい順に並べ替えるとします。

[3,1,1000,233,987]

選択ソート

選択ソートは、ソートアルゴリズムの中で最も基本的なものです。まず、1番目の数字から順番に見ていき、最も大きいものを1番目に配置しなおします。次に2番目の数字から順番に見ていき、その中で最も大きなものを2番目に配置。さらに数字番目の数字を……というように、全ての数字を見ていきながら、順番に大きいものを見つけていくアルゴリズムになります。

線型探索と同じように、頭から全ての数字を何度も参照するので、対象となるデータが多ければ多いほど爆発的に計算量が多くなってしまいます。

バブルソート

バブルソートも、ソートアルゴリズムの中では基本的なものです。隣り合うデータ同士の大きさを比較し、もし右側の方が大きければそれを左側に持っていきます。これを繰り返していって、数字の入れ替えが発生しなくなれば、処理を終了することができます。

[3,1,1000,233,987]の例で説明すると、まず3と1では3の方が大きいため、入れ替えは発生しません。次に1と1000では1000の方が大きいため、この2つの数字が入れ替わります。これを続けていくと、1度目で以下の形になります。

[3,1000,233,987,1]

これを繰り返していけば、大きい数字は先頭に、小さい数字は最後尾へとどんどん交換されていくことになります。

バブルソートは、基本的には選択ソートよりも計算量を少なく抑えることができます。しかし、最悪の場合は選択ソートと全く同じ手数がかかってしまいますので注意が必要です。また、選択ソートと同様に、対象となるデータが多くなれば爆発的に計算量が増えてしまうという欠点もあります。

生活のあちこちで活用されるアルゴリズム

アルゴリズムは生活の至るところで使われています。

たとえばカーナビや乗り換え案内

中心となるのは、A地点からB地点まで行く方法が何パターンかあった場合、どの経路を通るのがいちばん早いか?を計算してくれるアルゴリズムです。

それから、時おりニュースを騒がせる「Googleの検索アルゴリズム」。これはGoogleで検索された単語に対して、どのページを上位に表示させるかという計算方法(アルゴリズム)です。

サイトの運営者にとっては、この順序は高ければ高いほど嬉しい状態です。大体の人は、上から順にページを見ていきますよね。逆に、下の方のページはあまり見ないことも多いはずです。

せっかく作ったサイトは、なるべく多くの人に見てもらいたい。そうなると、「Googleはどういうやり方(アルゴリズム)で順位を決めているんだろう?」という点が気になるわけです。

Googleは検索アルゴリズムの詳しい内訳を公開しておらず、その上、ときどき大幅な変更を加えます。

ですから「アルゴリズムが変わった!次は一体どのようなものだろう?」「もしかしたら、自分のサイトも順位が下がる(上がる)かも!」がニュースになるわけです。

ビジネスでも用いられるアルゴリズム

アルゴリズムは、生活の中だけではなくビジネスでも様々な場面で使われています

Googleがアルゴリズムを頻繁に変えたり、そのためにエンジニアにお金を払ったりしているのも、ビジネスに役立つからです。Googleの検索結果がより良いものになることが分かれば、みんなGoogleを使うようになります。そしてGoogleは検索結果に表示する広告で対価を得ていますから、利用者や利用回数が多ければ多いほどビジネス的には効果が高いといえるのです。

また、インターネット広告にもアルゴリズムが使われています。最近のインターネット広告は、広告枠に対して自動的に配信されるものが多くなっています。ではどうやって表示する広告を決めるかというと、裏では「オークション」が行われています。しかし、普段イメージするようなオークションではなく、このオークションは自動かつ一瞬で行われています。事前に広告を掲載したい事業者を募集しておき、掲載希望料金など様々な要素から配信する広告を決めているのです。

ここにも複雑なアルゴリズムが使われています。そのため、インターネット広告に携わる仕事をしたりするのであれば、このアルゴリズムについても勉強したり情報収集したりする必要が出てくるでしょう。その他、非エンジニア・プログラマーであっても、IT企業で働くのであればアルゴリズムに関する知識を持っておいて損はないはずです。

アルゴリズムを学ぶ必要はある?

本記事で紹介した二分探索法は初歩的なアルゴリズムで、日常的に使っているコンピューターやアプリ、Webサービスでは、もっと複雑なアルゴリズムによって動いている場合もあります。

プログラマーやシステムエンジニアを目指すのであれば、アルゴリズムの勉強を仕事に活かすことができるかもしれません。しかしプログラミングの現場においても、すでに用意されている関数やパッケージを使うだけで済む場合も多く、実務の中で役に立つと感じることは意外と少ないでしょう。また、そもそもプログラミングを仕事にしないのであれば、アルゴリズムなんて自分には関係ないと思ってしまうかもしれません。

しかし、アルゴリズム的な思考を学ぶことは仕事や生活の上でも役立ちます。それは、前述した「料理のヘタな友達」の例を考えてみてもそうでしょう。ここまで極端ではなくとも、仕事や日常の中に非合理的な作業はたくさん存在しています。アルゴリズムの手法を知っていると、「何とかできないかな?」と常に考える癖がつきます。

アルゴリズム的な考え方を使って物事を改善したりするのは、頭を使わなければならないし面倒なことです。しかし、改善を一度行えば、その作業をするたびに時間を節約することができます。効果が積み上がっていくのですね。

自分には関係ないと思っている方も、アルゴリズムを学ぶこと仕事や生活に応用することができるかもしれません。

まとめ:どうしてあの曲は「アルゴリズム体操」なの?


さて、ここで「アルゴリズム体操」を思い出してみましょう。

アルゴリズム体操では、一人の動きを受けて、もう一人の動きが進んでいきます。つまり、二人の動きが連鎖しているわけです。カレーの例でいうと「にんじんを切る。まとめて鍋に入れる。水を入れて茹でる。」という手順です。

「前の手順を受けて、次の手順が進む」動きがアルゴリズム的なので「アルゴリズム体操」という名前になっているのでしょう。難しげな単語を身近にする、ネーミングの妙だと言えますね。


プログラミングスクールで、転職に有利なスキルが学べる!

新たなスキル「プログラミング教育」を先取りしませんか? 今後のプログラミング教育流れ図
今から、先取りしませんか?
コエテコ経由の体験申し込みでアマギフ2000円分プレゼント!
お近くの教室を探す →

あわせて読みたいガイド

ガイドを読めばプログラミング教育がスッキリわかる!
プログラミングまるわかりガイドを読む

RECOMMEND

この記事を読んだ方へおすすめ