みなさんは、「アルゴリズム」という言葉をご存知でしょうか? よくプログラミングに関連して耳にすることが多いように思いますが、一体どういう意味の言葉なのでしょうか。

  • アルゴリズムの意味を理解していますか?(写真:マイナビニュース)

    アルゴリズムの意味を理解していますか?

そこで今回は、アルゴリズムについてお話ししたいと思います。

アルゴリズムとは

アルゴリズムとは、問題を解くための計算手順や、課題を解決するための方法や手順のことです。JISでは、「明確に定義された規則の有限個の集まりであって、有限回適用することにより問題を解くことができるもの」と定義されています。

身近なアルゴリズムと関連用語

実は、私たちの日常にもアルゴリズムは溢れています。どんな方法や手順でゴールに到達するのか、その手法はさまざまです。誰もが知っている身近なアルゴリズムを例に、具体的にみていきましょう。

カーナビ

まずは、カーナビです。出発地点から目的地までは多数の分岐点があり、それだけ多くの組み合わせのルートが存在します。その中から最適なルートを探し出すために、カーナビには経路探索のアルゴリズムが用いられています。

お会計

お会計の場面で自然とアルゴリズムを実行している人も多いはずです。例えば、支払額は1,620円ですが、お財布には1,000円札×3枚、100円玉×4枚、10円玉×3枚、1円玉×2枚あるとします。

おつりの小銭を最も少なくなるようにするには、2,120円を出して500円玉1枚のおつりをもらうのが正解ですね。この時、頭の中で計算したことこそがアルゴリズムなのです。

ソート

クラス替えをすると、必ずクラスメイトと背比べをし、身長の低い順から高い順へと整列しますね。どうやって小さい順を決定していくのか、その手順がアルゴリズムであり、バラバラにあるものをある基準に従って整列させる「ソート」と呼ばれるものになります。

みなさんもご存知のとおり、パソコンにも「ソート機能」がありますね。それを使えば、簡単にデータを昇順・降順に並び替えることができます。

2分探索法

さらに、「2分探索法」というアルゴリズムでは、ソートされた配列の中から目的とする要素を探索することが可能です。

例えば、「まだ40歳にはなってないよ」という相手の年齢を当てる場合の手順はこうです。まず、どう若く見ても20歳として、その中央値を基準に「あなたは30歳未満ですか? 30歳以上ですか?」と質問します。

「30歳以上です」と言われたら、相手は30歳~39歳になります。続けて、その中央値を基準に「あなたは35歳未満ですか? 35歳以上ですか?」と質問します。これを繰り返すことで、相手の年齢を絞り込むことができます。

アルゴリズム取り引き

証券取り引きの分野では、コンピューターシステムがマーケットの動向から判断して、自動的に株式売買の注文を繰り返す取り引きのことを「アルゴリズム取り引き」といいます。証券会社独自のノウハウがプログラミングされており、より有利な価格で約定できるようになっています。

「流れ図」と「プログラム」

アルゴリズムを図で表したものを「流れ図(フローチャート)」と呼びます。アルゴリズムには、繰り返したり、条件に従って分岐したりと複雑な機能が多く、それを文章で表すのは難しい作業になります。そこで、アルゴリズムを流れ図で表現することで、情報の流れをより見やすく、より分かりやすくするのです。

流れ図については、どの機能にどの記号を用いるかはJIS規格で定められています。その一部をご紹介しましょう。
・長方形(処理)「任意の種類の処理機能を表す」
・楕円系(端子)「流れ図の入り口(始め)と出口(終わり)を表す」
・菱形(判断)「条件に従っていくつかの処理に分岐する」
・円(結合子)「同じ流れ図の他の部分への出口、他の部分からの入り口を表す」

アルゴリズムは、これらの流れ図を組み合わせて表現され、その流れ図をプログラミング言語により記述化したものを「プログラム」と呼びます。プログラムに書き換えられることで、アルゴリズムはコンピューターによって実行することが可能になります。


算数の問題に必ず答えがあるように、どんな問題や課題にも、それを解くための手順があるはずです。アルゴリズムを最終的に実行するのはコンピューターかもしれませんが、そのヒントは、常にみなさんの頭の中にあるといえるでしょう。

自分の行動をアルゴリズムという視点で見つめ直してみると、意外なヒントが見つかるかもしれませんね。