アルゴリズムとは簡単にいうと「問題を解くための手順」です。
大抵の人が、自分の生活には関係ないと思われるかもしれませんが、意外と身近なものです。
カーナビで道順を出したり、Google検索したりといろんなことが、アルゴリズムによって支えられています。
そこでアルゴリズムを学ぶとは、意味があるのかという点について解説します。
アルゴリズムとは?
アルゴリズムとは、問題を解決するための明確な手順のセットです。
計算機がその手順に沿って、実行することによって問題を解決することができます。
では、「カレーを作りたい」という問題がある時は、どうすれば良いでしょうか?
作ったことがない人ならば、インターネットで調べてみるでしょう。
そうすると
- 具材を切る
- フライパンで焼く
- …
と書いてあります。
この手順が「カレーを作りたい」という問題に対するアルゴリズムです。
簡単な気がしてきませんか?
アルゴリズムの研究は、コンピュータにおける効率性の向上に非常に関わっています。
とにかく大量のデータがインターネット上にある中で、なぜ私たちが検索して、知りたい情報を出してくれるのでしょうか?
これはGoogleが「知りたい情報をとどける」という問題を解くアルゴリズムを研究しているからです。
良いアルゴリズムとは?
アルゴリズムを評価するポイントには、効率性、正確性、汎用性などあります。
今回は効率性について、解説します。
1から100で好きな数字を友達に選んでもらいました。
彼はYES/NOでしか答えてくれません。
どのように質問すれば効率が良いでしょうか?
何回も質問できる気力があれば、「1?」「2?」「3?」…と聞いていけば良いでしょう。
しかし彼が選んだ数字によっては、最大100回の質問をしなければなりません。
このように愚直に候補を一つずつ調べていく方法を「全探索」と言います。
全探索をすれば、問題を解くことが可能ですが、もっと数字の候補が多かったら大変です。
では効率の良い質問の仕方とは?
最初に、「50以上?」と聞くのです。
YESならば50~100、NOならば1~49となります。
先ほどの「1?」と聞いた時には、候補がまだ99個残っていますが、今回は50個しか残っていません。
同様に、候補を半分に絞るために「25以上?」「75以上?」と聞けば2回の質問で25個に絞ることができます。
半分に絞る質問を繰り返せば、最大でも7回の質問で当てることができるのです。
このように候補を半分に絞っていく方法を「二分探索」と言います。
非常に効率的な方法と言われています。
このように少ない質問で問題を解決できるということは、コンピュータに同じ処理をやらせる際に
- 処理する回数を減らせる
- 計算する時間を減らせる
というメリットがあります。
アルゴリズムを学ぶ意味とは?
アルゴリズムを学ぶことは、問題解決における論理的思考の基礎を学ぶことです。
アルゴリズムを理解することで、プログラムを効率的に設計し、データの処理や分析、問題解決に必要なスキルを身につけることができます。
また、アルゴリズムは、コンピューター科学において最も重要な概念の一つです。
ビジネス、科学、医療など、あらゆる分野で必要とされます。
まとめ
今回は簡単な例でアルゴリズムの違いを紹介しました。
僕は効率性という点に惹かれて、アルゴリズムの勉強に進みました。
プログラミングには興味なくても、様々な場面で「効率性」は求められます。
プログラミング学習が注目されているのも、効率性、問題解決能力のある人材が求められているからなのでしょう。
参考文献はこちら
では次回。
コメント