アルゴリズムとは?【意味を簡単に】フローチャート、種類

アルゴリズムとは、ある特定の問題を解決するための計算方法や処理方法のこと。この記事ではアルゴリズムの基礎知識、アルゴリズムが用いられている実例や関連書籍を解説します。

1.アルゴリズムとは?

アルゴリズム(algorithm)とは、問題を解決したり目標を達成したりするための計算方法や処理方法のこと。もともとコンピュータープログラミングで用いられた言葉で、大量なデータを高速に処理するために、プログラムへ組み込んだ一定の計算手順や処理方法をアルゴリズムと呼んでいます。

身近な例では数学の解法が挙げられるでしょう。多くの場合、ひとつの処理に対して複数のアルゴリズムが存在し、目的達成までの速さや作業効などによって適したアルゴリズムは異なります。

英語の algorithmの意味とは?

英語の「algorithm」の意味は「問題解決の方法」または「問題を解決するための手段や手順を定式化したもの」です。「アルゴリズム」という言葉は、9世紀前半の数学者アル・フワーリズミーの名前が由来になっているとされています。

部下を育成し、目標を達成させる「1on1」とは?

・1on1の進め方がわかる
・部下と何を話せばいいのかわかる
・質の高いフィードバックのコツがわかる

効果的に行うための1on1シート付き解説資料をダウンロード⇒こちらから


【評価業務の「めんどうくさい」「時間がかかる」を一気に解決!】

評価システム「カオナビ」を使って評価業務の時間を1/10以下にした実績多数!!

●評価シートが自在につくれる
●相手によって見えてはいけないところは隠せる
●誰がどこまで進んだか一覧で見れる
●一度流れをつくれば半自動で運用できる
●全体のバランスを見て甘辛調整も可能

カオナビの資料を見てみたい

2.アルゴリズムの基本構造とフローチャート

アルゴリズムは3種類の基本構造に分かれています。基本構造の特徴と、アルゴリズムを図で表すときに使われる「フローチャート」について説明しましょう。

アルゴリズムの基本構造3つ

現在普及しているアルゴリズムの基本構造は下記の3種類です。各構造の特徴を説明します。

  1. 順次構造
  2. 選択構造
  3. 反復構造

①順次構造

「この処理が終わったら、次はこの処理」という形で、記載された順のとおりに処理を進める構造のこと。プログラミングの処理は基本、上に書かれた指示から順に行われます。

そのため最初に実行したい処理をいちばん上の行に書き、次に実行したい処理はその下の行に書く、と順々にプログラミングしていくのが基本です。

②選択構造

「いくつかの処理のなかから特定の処理を選択する」という構造のこと。たとえばクイズで「Aを選択したら正解」「Bを選択したら不正解」というように、選択によって別々の処理を行うものです。

プログラミングでは選択によってさまざまな分岐を作るため、「分岐構造」とも呼ばれます。

③反復構造

「一定の条件を満たしたら同じ処理を繰り返す」という構造のこと。同じ処理を繰り返すかどうかは、毎回判定によって決定します。

たとえば自動販売機プログラムで「所持金が130円以上であればジュースを1本買う」という処理を反復させた場合、所持金が130円未満になるまで購入を繰り返すのです。所持金が100円未満になったら購入条件を満たせなくなり、このループ処理は終了されます。

基本構造をフローチャートで表現する

アルゴリズムの処理は、フローチャート(流れ図)という図で表される場合がよくあります。内容が理解しやすくなるため、プログラミングだけでなく、仕事の手順などを説明する際にも活用されるのです。

フローチャートで使われる図形は基本、「矢印」「長方形」「ひし形」「六角形」の4つ。順次構造は矢印と長方形のみ、選択構造と反復構造は矢印と長方形とひし形が使用されます。

なおフローチャートはあくまでプログラムの順序や過程の大枠を示すものであるため、各処理の詳細までは基本、記載しません。

部下を育成し、目標を達成させる「1on1」とは? 効果的に行うための1on1シート付き解説資料をプレゼント⇒こちらから

3.アルゴリズムのデータ構造

アルゴリズムは目的によっていくつかに分類され、それぞれの分類でも複数の処理方法があります。アルゴリズムの代表的な種類について説明しましょう。

アルゴリズムには2種類ある

アルゴリズムの基本分類は「ソートアルゴリズム」と「探索アルゴリズム」の2つです。それぞれどのような特徴があるのでしょう。

ソートアルゴリズム

「整列」「並べ替え」を行うアルゴリズムのこと。大量のデータを扱う際は、作業を効率化するためにデータを見やすく並べ替える必要があります。ソートアルゴリズムを使うと、データを「昇順にする」「降順にする」などの並べ替え処理が行えるのです。

ソートアルゴリズムの方法には「バブルソート」「クイックソート」「マージソート」などがあり、扱うデータの量によって適したアルゴリズムが異なります。

  1. バブルソート
  2. クイックソート
  3. マージソート

①バブルソート

隣り合う値を比較し、一定の条件によって整列させるアルゴリズム。

一定の条件とは「値の大小」のことで、隣り合う値を比較し入れ替えて「値の小さい順(昇順)」あるいは「値の大きい順(降順)」で整列させます。

たとえば「231」というデータを昇順にしたい場合、まずは右端の隣り合う「31」を比較して左右を入れ替えて「213」とするのです。次に隣り合う「21」を比較して左右を入れ替えて「123」とします。隣接する値が多いほど比較回数が増えるため、値の長いデータが大量にあると処理時間が長くなりがちです。

②クイックソート

グループ分けの処理を行うことで値を整列させるアルゴリズム。

バラバラのデータを「昇順」「降順」に整列させるという意味ではバブルソートと同じですが、整列の方法が異なるのです。バブルソートでは最初に基準値を決め、「基準値よりも大きいグループ」と「基準値よりも小さいグループ」にわけます。

今度はそのグループ内で再度基準値を決め、また大きいグループと小さいグループに分別。この処理(グループ分け)を繰り返し、値を整列させていきます。

③マージソート

分割とマージ(併合)によってデータを整列させるアルゴリズム。

たとえば「87654321」というデータを昇順に並べ替えたい場合、まずは値を「8」「7」「6」「5」「4」「3」「2」「1」と最小単位まで分割し、「78」「56」「34」「12」のように隣接する値を昇順で併合。

さらに「5678」「1234」を昇順で併合し、「12345678」に並び替えて処理が完了します。高速かつ安定した処理が行えるため、マージソートを標準で組み込んでいるプログラミング言語も少なくありません。

探索アルゴリズム

複数のデータ内を探索して条件に合ったデータを探し出すアルゴリズムのこと。探索(サーチ)してデータを見つけ出すため、サーチアルゴリズムとも呼ばれます。

ソートアルゴリズムと並んで、プログラミングでは必須といえるアルゴリズムです。探索アルゴリズムの処理方法もいくつかあります。代表的な下記3つを解説しましょう。

  1. 線形探索
  2. 二分探索
  3. ハッシュ探索

①線形探索

データを端から順番に探索し、条件に合ったデータを探し出すアルゴリズム。探索アルゴリズムの中で、もっとも基本でシンプルな処理方法です。

探索例を挙げると「123456789」というデータの中から「6」の値を見つけ出したい場合、端の「1」から順に探索をします。

「1」は条件に一致しないので次は「2」を探索し、「2」も一致しないので次の「3」を探索、と順に進めていき、「6」の値が見つかるまで探索を続けるのです。

②二分探索

データのグループ分けを繰り返して、目的の値を探し出すアルゴリズム。目的の値が「データの中央値よりも大きいか、小さいか」で切り分けて、目的の値を絞っていく方法です。

たとえば「1234567」というデータから「1」を見つけ出したい場合、「1」は中央値の「4」よりも小さいので「123」のグループに切りわけます。

さらにこのグループの中央値の「2」と比較し、2より小さい「1」が見つかるという流れです。ただしこの探索では、値を昇順または降順でソートしておく必要があります。

③ハッシュ探索

特定の計算式(ハッシュ関数)を用いてデータを探索するアルゴリズム。目的のデータとそのデータの格納先を何らかの計算式(ハッシュ関数)によって関連付け、高速でデータを見つけ出すというのがハッシュ探索の考え方です。

たとえば「値の全桁を合計して10で割ったときに出た余り」が1ならばここ、というように値を格納していきます。のちにその値を探索するときは、この計算式を実行すれば格納場所へすぐにたどり着けるという仕組みです。

部下を育成し、目標を達成させる「1on1」とは? 効果的に行うための1on1シート付き解説資料をプレゼント⇒こちらから

4.身近にあるアルゴリズムの例

ITシステムには必ずといっていいほどアルゴリズムが使われています。そのため私たちは生活のあらゆるところでアルゴリズムを見ているのです。ここでは日常生活で見られるアルゴリズム活用の事例を説明します。

電車やバスの乗り換え検索

電車やバスなどの乗り換え検索には、検索アルゴリズムが活用されています。乗り換え検索は目的地までの所要時間や移動経路を調べられるサービスです。仕事での移動や旅行などで利用する人は多いでしょう。

たとえば「電車で東京駅から横浜駅まで行きたい」という場合、乗り換え検索を使用すると、東京駅から横浜駅までの複数の移動ルートと所要時間が表示されます。

これは「電車で東京駅から横浜駅までのルートと時間」という課題に対して、「時間が早い順」「料金が安い順」などの条件を満たす複数のルートを検索するアルゴリズムが使われているのです。

買い物の支払い

支払いの際、無意識にアルゴリズムを使っていることがあります。たとえばできるだけ少ない枚数でお釣りを受け取りたい場合です。630円の代金を支払うときに、以下の現金を持っているとしましょう。

  • 1,000円札 1枚
  • 100円玉 3枚
  • 50円玉 1枚
  • 10円玉 4枚

まず1,000円札のみでの支払いをした場合、お釣りが370円となり、最少でも6枚の硬貨を受け取ります。手持ちの硬貨を活用して、この枚数をできるだけ少なくしてみましょう。1

,030円で支払った場合のお釣りは400円です。しかし硬貨が4枚返却されます。1,050円で支払ってもお釣りは420円で、硬貨は6枚です。1,130円を支払うとお釣りが500円となり、最少1枚まで減らせます。これが最適解といえるでしょう。

このように、条件を満たす組み合わせを探すことはアルゴリズムの基本なのです。

検索サービス

ネットの検索サービスは、アルゴリズムが活用されている典型的な例です。GoogleやYahoo!など、ネット上のすべての検索サービスはアルゴリズムが活用されています。

検索サービスで近年注目を集めているのは「パーソナライゼーション(個人最適化)」を加えた検索。たとえば港区にいる人が「ヘアサロン」というキーワードで検索すると、港区にあるヘアサロンが表示されます。これは「そのユーザーの現在地や過去の検索履歴をもとに検索結果を表示する」というアルゴリズムになっているからです。

自動販売機

私たちの身近にある自動販売機にも、順次や反復、選択といったアルゴリズムの基本構造が活用されているのです。

たとえば自動販売機ではお金を投入すると「商品ボタン」が光ります。

こうした自動販売機はお金が投入された際、「投入金額が商品価格以上ならボタンが光る」「投入金額が商品価格以下ならボタンは光らない」「投入金額が商品価格以上だが在庫がない場合はボタンが光らない」「光っているボタンが押されたら商品を出す」などのプログラムが組まれているのです。

また決済方法によって、「ICカードを読み取る」「決済アプリとの通信を開始する」などの分岐も生じます。

Excel、紙の評価シートを豊富なテンプレートで楽々クラウド化。
人事評価システム「カオナビ」で時間が掛かっていた人事業務を解決!
【公式】https://www.kaonavi.jp にアクセスしてPDFを無料ダウンロード

5.アルゴリズムに関する書籍

アルゴリズムに関する本は、数多く販売されています。アルゴリズムの基礎知識を学べるものから、特定のプログラミング言語を通して学べるものまでその特徴はさまざまです。アルゴリズムに関するおすすめの書籍8冊について説明します。

  1. 図解でかんたんアルゴリズム
  2. 問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本
  3. 新・明解Pythonで学ぶアルゴリズムとデータ構造
  4. アルゴリズムを、はじめよう
  5. 基本情報技術者 大滝みや子先生のかんたんアルゴリズム解法
  6. アルゴリズム図鑑 絵で見てわかる26のアルゴリズム
  7. プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
  8. 世界でもっとも強力な9のアルゴリズム

①図解でかんたんアルゴリズム

アルゴリズムの基礎知識はもちろん、プログラミングで必要となる「変数」や「データ型」、「配列」といった重要な項目も含めて解説しています。

徹底した図解による説明でイメージをつかみやすく、会話形式でまとめられているため読みやすいです。B6程度のサイズでページ数も少な目なので移動中でも開きやすく、アルゴリズム初心者でも最後まで読み進められるでしょう。

②問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本

数学的知識をベースにしてアルゴリズムを学べる本です。数学の基礎知識や方程式を通して、代表的なアルゴリズムやアルゴリズムにおける思考法を学べます。

特徴はアルゴリズムの基礎をしっかり学ぶため、「例題」「演習問題」が200問掲載されている点。「数学はちょっと苦手だな」という人に適した一冊です。

③新・明解Pythonで学ぶアルゴリズムとデータ構造

プログラミング言語のひとつである「Python」を通して、アルゴリズムを学べます。とくにPythonは機械学習などにも用いられる言語であるため、アルゴリズムの理解は必須です。

本書ではPythonで実装したプログラムをもとに、基礎から応用まで幅広いアルゴリズムを学んでいくため、実際の処理の流れや結果などを体験できます。

④アルゴリズムを、はじめよう

アルゴリズムの入門書的な本で、「プログラマーが最低限知っておくべき知識」に絞って解説されているのが特徴です。

使用頻度の高い検索アルゴリズムやソートアルゴリズムに限定しているうえ、イラストや図、フローチャートを使いながら丁寧に説明されています。「まったくのゼロからアルゴリズムを勉強したい」という人におすすめです。

⑤基本情報技術者 大滝みや子先生のかんたんアルゴリズム解法

ソフトウェア開発経験を有するシステムエンジニアがアルゴリズムとフローチャートを解説した本です。特徴は「資格取得」を目指す人を対象にしていること。

基本情報技術者試験に出題される「フローチャート」「疑似言語」「C言語」「Java」などを基礎からしっかりと学べます。ただし疑似言語は実際の言語に似せた架空の言語であるため、実務で生かすには応用力が必要です。

⑥アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

26の基本的なアルゴリズムと7つのデータ構造を、フルカラーのイラストと図で学べる本です。ソートやグラフの動きを図で追えるので、アルゴリズムの仕組みやプログラミングの内容をスムーズに理解できるでしょう。

なおこの本のもとになったスマホアプリ「アルゴリズム図鑑」では、それぞれのアルゴリズム処理をアニメーション化しているので、この本と併用するとより理解が深まります。

⑦プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

アルゴリズムとデータ構造、計算幾何学などを基礎から学べる入門書的な本です。本書はプログラミングコンテスト対策という目的もあり、コンテストのシステムに似せた自動採点システムを用いて学習を進めます。

学習にはコーディングも含まれているので、プログラミングの基礎スキルも必要です。座学だけでなく、手を動かしながらアルゴリズムを覚えたい人におすすめです。

⑧世界でもっとも強力な9のアルゴリズム

さまざまなアルゴリズムの歴史や概要を知っていける本です。世界で使われている代表的なアルゴリズムを例に挙げて、章ごとに分かりやすく説明されています。

アルゴリズムの歴史や発祥を通して、知識を深めることを目的とした本なので、アルゴリズムに関する専門用語や専門知識を知らない人も楽しめる内容となっています。