プログラミングを行う際、必要であると言われるアルゴリズム。

意外と私たちの日常でも身近な事と言えるものなのです

実際 「アルゴリズム」とは何なのか?なんの意味があって、何の事をいっているのでしょうか?

いや、アルゴリズムが何なのか知らない人が大半ではないでしょうか?

案外雑誌なんかでよく出てくる言葉の割には正確な意味が分かりにくい「アルゴリズム」ですが、その意味を「今更きけない!」という人もおられるのではないでしょうか・・・(汗)

今回はその「 アルゴリズム 」についてプログラミングとの関係や アルゴリズムを学習できるゲームの事なども取り上げて、分かり易く説明していきたいと思います。

アルゴリズムとは?

アルゴリズムとは一言でいってしまうとコンピューターで計算を行う時に効率よく計算を行うために使う「計算方法(手段)」の事です。

別の言い方をすれば、コンピューターのプログラムに適用可能な「計算式や手続き・手段 を表したプログラム」ともいえます。

しかし、その一言で言い切れるものでもありません。

コンピューター が何かしらの目的で使われたとします。

それは、何らかの情報を処理する場合がほとんどでしょうが、その目的を「より効率よく処理するための 計算式や手続き・手段 」 が「アルゴリズム」であり、大抵の場合、「アルゴリズム」はひとつだけではなく、いくつかのものがあって、その中でより効率よくその目的を達成できる「アルゴリズム」が使われるわけです。

アルゴリズムを例えると・・・

アルゴリズムを分かり易く「もの」で例えてみると・・・

ひとたまのキャベツから千切りを作ろうとしたとします。

そのキャベツを半分に切って千切りにのか、ほぐしてから一枚ずつ丁寧に包丁で切っていくのか、 ほぐしてから一枚ずつなったキャベツを5枚重ねて切るのか10枚重ねてきるのか、それぞれのやり方の違いで ひとたまのキャベツ 千切りになるまで千切りの質の時間は変わっていきますよね。

仮にキャベツの千切りに「 きめ細かで大量の千切りを短時間で作りたい」という目的があったとします。

ではその目的を達成するための方法が仮に以下の4通りあったとして・・・

1、一枚ずつ切る

2、10枚重ねて切る

3、半分にして切る

4、包丁とまな板と切る人自体を増やす

その千切りにするために4通りある方法・手段の違いを計算式などで表したものが 「アルゴリズム( 計算式など で表された 処理手段 )」 というわけです。

また、よく「 アルゴリズム 」を表す例として「にんじん」の例があります。

にんじん一本から六角形の輪切りを20個作るとしましょう。

始めに 六角形の輪切りを20個作るためにやった方法は、最初に20個の輪切りを作り、その輪切りを6回きって 六角形 の形にして、それを20回繰り返した。

これを計算式にすると・・・

20+(6×20)=140

トータルでにんじんを140回切って 六角形 の輪切りを作ったという事になります。

次に 六角形 の輪切りを20個作るためにやった方法は 、 最初に 6回にんじんを切って 六角柱の形のにんじんを作りました。

そして 六角柱のにんじんを20回切って、 20個 の六角の輪切りを作りました。

これを計算式にすると・・・

6+20 =26

トータルでにんじんを26回切って 六角形 の輪切りを作った という事になります。

始めにやった方法とは、114回も手間が違うのです。

効率よく 六角形の輪切りを作るなら、確実に2回目にやった方法ですよね。

この2つのやり方が「アルゴリズム」というわけです。

アルゴリズムの必要性

幾つかの 「アルゴリズム( 計算式など で表された 処理手段 )」 がある事によってコンピューターはより確実で目的に効率よく辿り着ける 「アルゴリズム( 計算式など で表された 処理手段 )」 を選ぶという事になります。

その目的としては、「情報処理」といえますが、具体的に言えば「画像処理」であったり、スマホ・カーナビ・パソコン・家電・AI等々・・・要するに情報を処理する為の手段を表したプログラムが「アルゴリズム」であるため、現在私たちが生活する上で身近なものにすら 「アルゴリズム」 は必要性があり活用されているという事になるのです。

アルゴリズムはプログラミングにとって重要

アルゴリズムはプログラミングとは切っても切り離せない関係にあります。
というのもアルゴリズムは「問題を解くための数学的な手段」のひとつといえるので、多くの 情報処理能力を高めたプログラムを構成するためには、 多くのアルゴリズムを 理解して作っていく必要があるのです。
まだアルゴリズムというものは 1種類だけではなく多くの種類のアルゴリズムがあります代表的な アルゴリズムとしては アルゴリズムとしてはバブルソートがあげれますが、 その他にもソートアルゴリズム、検索アルゴリズム、暗号化アルゴリズム、遺伝的アルゴリズム といった多くのアルゴリズムが存在します。
つまり レベルの高いプログラミングスキルを身につけるために 学習するためには、 より多くのアルゴリズムを勉強し、 それを習得する事によって、 プログラミング能力が上がっていくということになります。 

アルゴリズムゲーム

アルゴリズムゲームとは、ゲームをやる事によってアルゴリズムを勉強できるというアプリケーションです。

アルゴリズム体験ゲーム・アルゴロジックというゲームでは、 コマンドブロックで、ロボットに動き方を命令して、各ゲームステージの問題をクリアします。

そのステージの問題とクリア する為にはいくつか考えられるロボットの動き方の中から最も効率の良い動き方を選択してロボットに命令しなければいけません。

その いくつか考えられるロボットの動き方 こそアルゴリズムそのもので、ゲームをクリアして行く内により効率の良いアルゴリズムをプレイヤーは選択している事になるというものです。

まとめ

この「アルゴリズム」がある事によって、新しいものはよりその性能を引き上げ、より便利で使いやすいものが生まれているともいえます。

キャベツの千切りで言えば、より良い「アルゴリズム」を定食屋さんが選ぶから、たくさんの千切りキャベツがおかずについてくるともいえますよ(笑)