アルゴリズムとは?

私の研究は、「アルゴリズム」と「組合せ最適化」です。ここでは、そのうちのアルゴリズムについて解説しましょう。

「アルゴリズム」というのは、コンピューターで計算を行うときの「計算方法」のことなんですが、広く考えれば、何か物事を行うときの「やり方」のことだと言っていいでしょう。その「やり方」を工夫して、より良いやり方を見つけよう、というのが、アルゴリズムの研究です。同じ計算を行うんだったら、いい方法でやればより速く計算できますね、ということです。

例えば、簡単な例。にんじんが星型の輪切りになっているもの、あれを、にんじん一本から30個作る方法を考えましょう。1例目として、まず、

・ 輪切りをたくさん作ってから、それぞれの角を落として星型にする方法

というのが考えられます。これだと、包丁を入れる回数は、輪切りを作るのに31回(端っこを落とすのに2回使ってます)、それぞれを星型にするのに、5回、包丁を入れるので、合計 31+5*30 = 181 回、包丁を入れます。結構大変ですね。でも、ちょっと工夫をすると、

・まず、にんじん本体を星型に切って(断面が星型の棒になります)それから輪切りにする

という方法を考えると、

 

これは、本体を星型にするのに10回、輪切りにするのに31回なので、なんと包丁を入れる回数は 41 回に減ります。にんじん本体を星型に切るのは、輪切りにするほど速くはできないとは思いますが、3倍ぐらいのスピードにはなるでしょう。まあ、あたりまえのアイディアなんですけど、これはすごいですね。181回から 41回ですから。同じ星型の輪切りを作るのに、ちょっとやり方を変えただけでこの違い。やり方かえるだけで作業効率が3倍違うんですから、がんばって修行して包丁さばきのスピードをあげる前に、「やり方」の工夫を考えたほうがよさそうです。