先月購入した一番高い単価の商品を調べる
スーパーで買い物をすればレシートを貰います。このレシートにはあなたが購入した商品について商品ごとに商品の名前と単価・個数そしてその商品の合計金額が記録されています。
またレシートごとに1回の買い物で支払った合計金額も記録されています。
あなたはこのレシートを捨てずにためておいたとしましょう。
今あるスーパーの先月分のレシートが束ねられています。
さあ、ここで質問です。
あなたはこの質問にどうやって答えますか?
おそらくこういう手順で調査を進めるのではないですか?
<手順>
- 1枚目のレシートについて商品を順番に見ていき商品単価が一番高いものを候補にして単価を覚えておく。
- 2枚目以降の同様に順番に確認してその時点の候補より単価が高いものが有ったらその商品を候補にして単価を覚えておく。
- レシートがなくなった時点で最後に残った候補の商品が先月購入した商品で一番単価の高い商品になる。
なおこの手順の沿うことでレシートさえまとまっていれば「先月購入した品物で一番単価が高い商品」を求めるという目的を、いつでも達成することが出来ます。
アルゴリズムとは
上の例の様に「ある目的を達成するために、手順を明確に定義した処理の流れ」をアルゴリズムと言います。
なので最低限「目的を達成」出来る必要があります。
そしてITでは「明確に定義した処理」と言う部分でコンピューターが曖昧なく実行できる形で記述されていることが重要になります。
例えば、上で述べた例を使うとコンピュータはレシートの商品や単価金額をそのままでは読み込めないのでコンピュータで扱える様にするための前準備が必要になります。また、「商品を順番に見ていき商品単価が一番高いものを候補に」するのは曖昧なく出来る様に思われますがコンピュータはどうやって「順番にみていく」のか、「商品が一番高いもの」をどうやって見つけるのかもう少し具体的に指示してあげなければいけません。
このサイトではITで扱う(コンピュータが理解しやすい)アルゴリズムを考えていきます。
アルゴリズムの構成要素
このサイトではコンピュータが処理する前提でアルゴリズムについてまとめています。
この場合アルゴリズムの要素は大きく3つに分けられます。
それは、
- 順次処理
- 分岐処理
- 繰り返し処理
です。
この3種類の処理を組み合わせることで、「与えられた目的を解決するためのアルゴリズム」を構築していきます。
以下にこれら3つを簡単に説明します。
順次処理

順次処理は図の様に上から下に向かって処理を順番に進めていくものです。
処理として具体的にどんなことが出来るのかは、別途解説しますので、ここでは「順番に処理を進める」ということを覚えておいてください。
現在実用化されているコンピュータは基本的に一つの処理を順番に実行していくのが基本です。
分岐処理

上記の図の様に条件を評価してその条件が成立している場合に処理Aを実施して、不成立の場合に処理Bを実施すると言う様に条件に従って実施する処理を選択することを分岐処理と呼んでいます。
繰り返し処理
問題を解決するためには処理を繰り返すことが必要になります。
ただやみくもにずっと繰り返すのではなく、目的が達成されたら繰り返すことを止める様な処理を考えます。

例えば上記の図の様にある条件が成立している間処理を繰り返し、条件が不成立になったら繰り返しを止めるという風に考えます。
また、次の図の様に、

条件が成立するまで繰り返すという風に考えた方が考えやすい場合もあります。
まとめ
-
- 「ある目的を達成するために、手順を明確に定義した処理の流れ」をアルゴリズムと言います。
- アルゴリズムは大きく次の3つの処理を組み合わせて考えていきます。
- 順次処理
- 分岐処理
- 繰り返し処理
コメント