2009/02/22

アルゴリズムって何?


 あるアナログ世代の方にアルゴリズムって何だと聞かれた。 こちらもアナログ世代なので答える資格も無く、いろいろな本で調べてみた。 そのなかで一番フィットしたのは;

「問題を解決する手順」

・・というもの。
 
 例として10と15の最大公約数は何かという命題があるとする。 たぶん5だ、と大抵の人は判る。ではなぜそう判るのか。 勘で判ってしまうように思う。 つきつめて考えると10は、5と2で割れる。 15は5と3で割れる。 であれば5だ・・。 となる。 ではなぜ10を5と2で割るのか。 このままだとアルゴリズムにならない。 
 アルゴリズムにするにはコンピューターにも判るような、くどい説明をしてやる必要がある。 例えば、10を9以下の数字でそれぞれ割って、割り切れる解(整数)が出てきたらそれをリストアップしておき、それとは別に15を同様に14以下の数字で割った整数を出し、それを10について算出した整数とあわせて、同じ数字をピックアップし、さらにそれを比較して一番大きな数字を見つける。 ・・・というように、コンピューターに判る手順を作るのがアルゴリズムである。 
 ちなみい良いアルゴリズムとは、計算手順が少なくて済むもの。 上記の例ならば、10を9以下で全部割るよりも、どうせ2分の1より大きな数字で割っても意味がないのだから、10÷2以下の数字で割るようにすれば計算回数が半分で済む。 それが良いアルゴリズムとなる。
これなら簡単で判りやすい。