TERM GUIDE · PROGRAMMING

アルゴリズム

アルゴリズムの意味

アルゴリズム(algorithm)とは、問題を解決したり、目的を達成したりするための処理手順を、順序立てて明確に表したものです。

例えば、複数の数値から最大値を求める場合、次のような手順が考えられます。

  1. 最初の数値を仮の最大値とします。
  2. 次の数値と仮の最大値を比較し、より大きければ更新します。
  3. すべての数値を調べ終わるまで比較を繰り返します。
  4. 最後に残った最大値を結果とします。

このように、何をどのような順序で行うかを具体的に定めたものがアルゴリズムです。

アルゴリズムはコンピュータに限らず、料理の手順や目的地までの経路の探索など、日常生活のさまざまな場面にも存在します。

同じ問題でも複数のアルゴリズムが考えられ、処理にかかる時間や必要な記憶容量が異なる場合があります。

アルゴリズムとプログラムの違い

アルゴリズムは処理の手順そのものであり、プログラムは、その手順をコンピュータに実行させるために具体的な命令として記述したものです。

アルゴリズムは、日本語などの自然言語、フローチャート(流れ図)、疑似コードなどで表現できます。特定のプログラミング言語に依存しないため、同じアルゴリズムをPythonやJavaScriptなどの異なる言語で実装することもできます。

アルゴリズムの基本構造

アルゴリズムは、基本的に次の三つの制御構造を組み合わせて表現できます。

構造内容例
順次処理決められた順番に処理を実行する数値を入力し、2倍して表示する
分岐処理条件によって実行する処理を変える60点以上なら「合格」と表示する
反復処理同じ処理を繰り返す1から10までの整数を順番に加算する

特に反復処理では、初期値、繰返しを続ける条件、繰返しごとの値の更新を確認することが重要です。

例えば、変数xを0として、「xが10未満である間、xに3を加える」という処理を考えます。

xの値は、

0 → 3 → 6 → 9 → 12

と変化します。12になった時点で「xが10未満」という条件を満たさなくなるため、処理は終了します。

このように、処理を実行する前に条件を判定する方式を前判定の繰返しといいます。終了時の値は、条件に指定された値と一致するとは限りません。

また、終了条件が満たされず、処理が繰り返され続ける状態を無限ループといいます。

入力・処理・出力

アルゴリズムの働きは、入力(Input)・処理(Process)・出力(Output)に分けて整理できます。

例えば、温度センサの測定値から警告を表示するシステムでは、次のようになります。

区分内容
入力温度センサから測定値を取得する
処理直近10件の平均値を計算し、基準値と比較する
出力基準値を超えていれば警告を表示する

何を受け取り、どのような計算や判定を行い、何を結果として示すのかを区別することが、アルゴリズムを考える基本となります。

アルゴリズムと著作権

プログラムは、著作物として著作権法によって保護される場合があります。一方、一般的なアルゴリズムの考え方や処理手順そのものは、著作権の保護対象ではありません。

例えば、数値を小さい順に並べ替えるアルゴリズムそのものを著作権で独占することはできません。しかし、そのアルゴリズムを実装したプログラムの創作的な表現は、保護される場合があります。

このため、同じアルゴリズムを独自にプログラムとして実装することと、他人が作成したプログラムのコードを無断で複製することは区別されます。

なお、アルゴリズムに関連する技術が特許などの対象になる場合もあるため、必ずしも自由に利用できるわけではありません。

EXAMPLE

例題

アルゴリズム · EXAMPLEオリジナル

次のうち、アルゴリズムの説明として最も適切なものを選べ。

  1. 0

    数値や変数に対して、加算や比較などの処理を指示する記号である。

  2. 1

    文字や画像などのデータを、一定の規則に従って別の形式で表すことである。

  3. 2

    問題を解決したり、目的を達成したりするための処理手順を、順序立てて表したものである。

  4. 3

    ネットワークを通じて機器同士が通信するために定められた規則である。

解答・解説を確認

正解2.問題を解決したり、目的を達成したりするための処理手順を、順序立てて表したものである。

解説

アルゴリズムは、問題を解決したり目的を達成したりするための処理手順を、順序立てて明確に表したものです。同じ問題でも複数のアルゴリズムが考えられ、処理時間や必要な記憶容量が異なる場合があります。アルゴリズムは自然言語、フローチャート、疑似コードなどで表現できます。プログラムは、その手順を特定のプログラミング言語でコンピュータが実行できるように記述したものであり、アルゴリズムそのものとは区別されます。

出典
オリジナル

PRACTICE

アルゴリズムの問題に挑戦