アルゴリズムとは?日常生活に浸透する身近なシステムの基礎知識

プログラムコード一部

「アルゴリズム」という言葉を聞いたことのある人は多いでしょう。データを扱うシステムで必ずと言ってよいほど利用されており、さまざまな種類のアルゴリズムによって私たちは情報を探すことができています。アルゴリズムを知ることは、社会を支える情報インフラを理解することでもあります。

今回は、身近にあるアルゴリズムの例と、主なアルゴリズムの種類、一般で利用されているアルゴリズムをご紹介します。

アルゴリズムとは?

まずはアルゴリズムの意味と、インターネットにおけるアルゴリズムの使われ方についてご説明します。

アルゴリズムの意味

アルゴリズム(algorithm)とは、もともとは「算法」「計算の手順」を意味する数学用語で、問題を解くための手順や計算方法のことです。情報科学が学問的に確立されると、数学用語から転じる形で一般的に使われるようになりました。

アルゴリズムの語源は、9世紀に活躍した偉大なイスラム数学者・天文学者であるアル=フワーリズミーのラテン語読み「アルゴリトミ」にあるとされています。中世ヨーロッパの大学では、イスラム学者の遺した著作を講義に利用していました。そのためヨーロッパの数学で「アルゴリズム」の語が定着し、現代の情報科学にまで受け継がれているのです。

アルゴリズムは計算の手順を示すものであり、これに沿って問題を解くと解答にたどり着くことができます。この考え方が、情報科学におけるプログラミングでも利用されているのです。プログラミング言語でアルゴリズムを実装することにより、さまざまな問題の解を発見して返す(return)プログラムを構築できます。

インターネットで使われるアルゴリズムとは?

インターネットやコンピュータでも、数多くのアルゴリズムが用いられています。特に検索エンジンにおけるアルゴリズムは、膨大な数のWebページにランク付けを行う際のロジックを指しています。Webページに関するデータを収集し、重み付けを行い、並べ替えることで検索ニーズに対応するランキング結果を検索ユーザーに返しているのです。ですから上位に表示されるページは、検索ニーズにより合致していると検索エンジンが評価したものとなります。

GoogleやBingなどの検索エンジンは、たびたびアルゴリズムのアップデートを実施しています。ユーザーの検索ニーズを読み取り、よりニーズに合ったページをランキング結果として返すためには、細やかなものから大規模なものまで、定期的なアップデートが必要なのです。

アルゴリズムの主な種類

データを集めたり並べ替えたりするアルゴリズムには数多くの種類がありますが、大きく分けると「ソートアルゴリズム」と「探索アルゴリズム」の二つに分けられます。ここでは、それぞれの代表的なアルゴリズムについて簡単にご紹介します。

ソートアルゴリズム

・バブルソート

バブルソートは、一定の規則でデータを整列させるソート(sort:並べ替え、整列)アルゴリズムの一つです。データの末尾から、隣にある値との大小を比較して交換する作業を繰り返していきます。

一例として、「5・7・3」という3つの数字にバブルソートを使って、昇順(値の小さい順)にデータを並べ替えてみましょう。まずは末尾の3と7を比較します。3<7なので、3と7を入れ替えて「5・3・7」となります。次に3と5を比較すると3<5ですから、これを入れ替えて「3・5・7」となります。最後に7と5を比較しますが、7>5なので入れ替える必要がありません。結果、「5・7・3」を「3・5・7」と入れ替えることができました。

この例のように、バブルソートは最も分かりやすく単純なソート方法と言えます。

・クイックソート

クイックソートもソートアルゴリズムの一つで、その名の通りクイック=素早いのが特徴です。データの比較と入れ替え回数が少なく済みます。先頭の値やランダムな値などを比較基準である「軸要素」として決定し、データ全体を2分割して大小の比較と入れ替えを行います。

「5・3・8・2・6」という5つの数字にクイックソートを適用し、先頭の数字5を軸要素に決めて昇順に並べ替えてみます。最初に5つの数字を「5・3」と「8・2・6」に分割し、前者では軸要素5以上の数字、後者では5未満の数字を探します。前者の数列からは5,後者の数列からは2が該当しますから、両者を入れ替えます。すると、数列は「2・3」と「8・5・6」となります。

次は、「2・3」の数列の先頭2と、「8・5・6」の数列の先頭8をそれぞれ軸要素にして、両方の数列に同様の処理を行います。すると「2・3」は変わらずそのまま(最終決定)、「8・5・6」は「6・5・8」(8のみ最終決定)となります。3回目のソートとして「6・5」にクイックソートを適用すると、数列全体が「2・3・5・6・8」としてソート完了となります。

・マージソート

マージソートは、数列の分解と比較、そしてマージ(併合)によって効率よく並べ替えを行うソートアルゴリズムです。未整列の数列に対して2分割を繰り返し、最小単位である1要素(1文字)ずつまで分解できたら、大小の比較とマージを繰り返して数列を再構築するのです。

先ほどと同じ「5・3・8・2・6」の数列を昇順にソートしてみましょう。この数列を分解していくと、最小単位はそれぞれ「5」「3」「8」「2」「6」となります。ここから「5」と「3」、「8」と「2」、「6」で比較とマージを一回だけ実行すると「3・5」、「2・8」、「6」になります。もう一回実行すると「2・3・5・8」、「6」になります。3回目のソートで「2・3・5・6・8」が完成するわけです。

探索アルゴリズム

・線形探索

線形探索は最も単純な探索アルゴリズムで、配列の端から順番に探したいデータを順番に探していきます。仮に「5・3・8・2・6」から「2」を探すために線形探索を利用するのであれば、左から順々にデータを見ていき4番目に発見することになります。

・二分探索

二分探索は、ソート済の配列に適用可能な探索アルゴリズムです。探索したい元データと配列における中央部分のデータを比較し、その大小に応じて探索すべきデータの数を半減させていきます。「2・3・5・6・8」から「6」を探す場合、最初に中央部分の「5」がピックアップされ、「6」と比較します。6>5ですから、5より左側にあるより小さな値2個(2と3)は探索不要になります。残った「6・8」の中央部分として「6」がピックアップされ、探すべき「6」と同一であることから探索完了となるのです。

以上の2つはきわめて単純な方法ですが、他にも探索アルゴリズムには数多くの種類があります。

アルゴリズムが使われている主なシステム

アルゴリズムは、現代社会を支えるさまざまなシステムに活用されています。検索サービスやSNSなど、主なものをご紹介します。

検索サービス

先にもご紹介したGoogleやBingだけでなく、アクセスしたWebページ内だけを検索対象とするようなものに至るまで、あらゆる検索サービスはアルゴリズムを活用しています。利用者が検索したキーワードを基に、求める情報を検索結果として返します。

最近、強まっているのは、ユーザーの検索履歴や人々の検索需要の増減などのデータを基に、必要と思われる情報を優先的に表示する(パーソナライゼーション=個人化)です。たとえば「ケーキ屋」で検索すると、過去の検索結果やユーザーの現在地などのデータを基に、ユーザーがいる(と推測される)場所に近いカフェや洋菓子店などが検索結果として返ってきます。

SNSサービス

TwitterやFacebookなどのSNS(ソーシャルネットワーキングサービス)でも、アルゴリズムは数多く利用されています。本人の投稿や友人関係、過去の閲覧履歴、経歴などのデータを基に、その人が必要と思われる情報を選別して表示されるようにしています。検索エンジンと同様に、より有益な情報をユーザーに提供することを意図したものです。

乗り換え案内

アプリで提供されている乗り換え案内サービスも、アルゴリズムを活用したサービスの典型例です。ダイクストラ法(最短経路問題)という探索アルゴリズムを利用して、適切な乗り換え方法を見つけ出しています。「最短の経路がよい」「最安を優先してほしい」「乗り換え回数が少ないのを優先してほしい」など、ユーザーの需要に応じて異なる解を返すことが可能です。

アルゴリズムは現代社会に不可欠な「縁の下の力持ち」

今回ご紹介した以外にもさまざまなアルゴリズムが存在し、社会のさまざまなシステムで利用されています。膨大な量の情報があふれる現代において、情報を整理し必要なものだけを選定するアルゴリズムは不可欠な存在であると言えるでしょう。

    関連記事

    1. 未来の技術

      SQLとは?初心者が押さえておきたい基礎知識と効果的な学習法

    2. カメラのレンズ

      フィジカルコンピューティングとは?メリットとビジネスへの活用事例

    3. ビッグデータ

      ビッグデータの活用事例とは?主な種類とビジネスに利用するメリット

    4. 両手とアイコン

      IT企業に就職するには?活躍するために身に付けておきたいスキル

    5. 日本と各国を繋ぐ世界地図

      IoTプラットフォームの基礎知識|主な種類と利用するメリット

    6. 地球上のデータのやり取りの様子

      グローバル社会とは?日本のメリットと課題、子供に準備させること