アルゴリズムっていうけどさ、わかるように説明しろよ!

皆さんアルゴリズムという言葉一度は聞いたことありますよね。私はよくパソコン詳しそうな人に連呼されている気がします(笑)。

正直アルゴリズムと言われても意味不明ですよね…ということで今日はアルゴリズムとは何なのかを調たので皆さんと一緒に勉強していこうと思います。

みなさんがこれを読んで

ほう、アルゴリズムとはそういうものなのか〜

くらいに思ってもらえるのがこの記事の目標です!それではいきましょう〜

アルゴリズムとは

アルゴリズムというのは本来プログラムに限らず「何かを達成するための手順」のことを指します。

アルゴリズム

例えば、ゆで卵をつくる手順もゆで卵をつくるアルゴリズムと考えることができます。

  1. 鍋に水を入れる
  2. 鍋に卵を入れる
  3. 鍋に火をつける
  4. 数分後に鍋から卵を取り出す
  5. 殻をむく

ではコンピュータの世界ではどうかというと、何かの問題を解決するための手順であることに変わりはありません。その問題というのがデータ処理であったり数値計算やシミュレーションというだけなのです。

例えば「PCからこのファイルを探したい」という問題に対してどんな手順を踏めば問題を解決できるのかを考えるのがアルゴリズムです。

アルゴリズムは効率が大事

アルゴリズムが問題解決の手順であることはわかったけどなぜみんなアルゴリズムを大事にしているように感じるのでしょうか?

それはアルゴリズムはどれだけ速く問題を解決できるかがとても重要だからです。

アルゴリズムの速さ

同じ問題でも有効なアルゴリズムは一つではありません。しかし同じ問題を速く効率的に問題を解決できるならばそれは嬉しいはずです。

速いアルゴリズムが何で嬉しいの?

例えばテストで1 から10までの整数を全部足した和を求めてくださいという問題が出たとしましょう。どのように計算しますか?

Aくんならこう計算するでしょう。

Aくん
Aくん

え〜っと1+2=3で、次に3足すから3+3=6で、次は4を…

でもBさんはこう計算するかもしれません。

Bさん
Bさん

1と10、2と9みたいに端っこどうしは全部和が11になるからそれが5個分できて答えは11X 5=55!

どちらが速く解き終わりそうか明らかですよね。そうです、Bさんの方が効率のいい計算をしています。

もしこのような問題が100問あるようなテストなら確実にBさんのほうが成績がいいはずです。

これはコンピュータでも同じです。コンピュータはどんな計算も一瞬で計算してるように見えるのですが、実は計算方法によって計算時間に差が生じているのです。

現実にコンピュータが行っているのはとてつもなく大きな数でとてつもなく複雑なプロセスの計算です。そのため効率的に処理ができるアルゴリズムというのが非常に大切になんですね。

アルゴリズムは計算量で評価される

では効率のいいアルゴリズムとはなにかというと、ずばりどれだけ計算量が少ないかです。そりゃそうですね。

ではどのようにアルゴリズムの計算を評価しているかというと、計算量のオーダーで評価されます。オーダーという言葉は科学に携わった経験のある方は馴染みのある言葉ではないでしょうか。

計算量のオーダー

オーダーというのは「ざっくりこれくらいの大きさ」という意味です。もう少し具体的に説明しましょう。

例えばn個のデータを計算するとしましょう。このときデータの数が2倍、3倍と増えていくと計算量も2倍、3倍と増えるようなアルゴリズムであるとき、計算量のオーダーはO(n)と表されます。

これはnに入る数が2倍、3倍になれば計算量も2倍、3倍になるということを表しています。

ではO(n^2)はどういう意味でしょうか?(n^2はnの2乗です)

これはnに入る数が2倍、3倍になれば計算量は2^2=4倍、3^2=9倍になるということを表しています。

このようにざっくりとした計算量を評価することでアルゴリズムがどれだけ効率的か見ています。

まとめ

まとめ
  • アルゴリズムとは問題解決のための手順を表す。
  • 問題を速く解決するために効率的なアルゴリズムが日々求められている。
  • アルゴリズムの効率は計算量のオーダーで評価される。

コメント

タイトルとURLをコピーしました