ホームページ目次2011-06-05(前)2011-06-08(次)

アルゴリズムを鍛えるにはパズルが最高である

2011年6月7日

プログラムを組む上で極めて重要なことが、アルゴリズムである。 アルゴリズムは、日々変化する目の前の通りすがりの技術ではなく、 何年はもちろん、何十年も活用できるソフトウェア技術の根幹をなす重要な技術である。

しかし、この技術を教えるのがとても大変である。 ハノイの塔とか、8クイーンとか、せいぜいサーチ、ソート、マージあたりで止まってしまうアルゴリズムの本が多い。 サーチ、マージ、ソートは重要で、勉強するのは当然であるが、 もっと多様なアルゴリズムについて習得しておく必要がある。

それなのに、今の大学ではそれほど教えていない。 また、アルゴリズムの書籍も、通り一遍のことを書いたものはあるが、 多様な問題にチャレンジしながらアルゴリズムの腕を磨く本が極端に少ない。 理由は、アルゴリズムを鍛えるのは大変だからである。 多数の落ちこぼれが出る。 特定の研究分野に限られたアルゴリズムをやるところはあるが、 負担が大きい勉強はどんどん嫌われるようになってしまった。

しかし、現実の問題に対処するしかない企業でのソフト開発では、 さまざまな難問が襲ってくる。 それらの問題に対処するプログラムが開発されるのであるが、 アルゴリズムに強いか弱いかで、できるプログラムの差は歴然というか、呆れ果てるほどである。

パズルは、プログラマによって、大変な差が出る分野である。 解いて遊ぶだけでも相等の差がでる。実行速度が10倍など少ない方で、 100倍、1000倍はあたりまえという、プログラマの能力差が顕在化する楽しい世界である。 いや、できない人は永久にプログラムが完成しないので、差は無限倍。

パズルプログラミングは、能力差がはっきり出るので、学習教材として最適である。 パズルは、ルールが非常に簡単で、小学生低学年でも分かるものが多い。 小学生でも解けるが、コンピュータでどうすれば解けるかは、 ちょっと考えないといけないものも多い。

パズルの問題を解くだけなら、大学のプログラミング演習程度と言えるが、 問題の自動生成となるとレベルが格段にアップする。 ルールに合った問題を作るだけなら、大学の卒研、あるいはもうちょっと上くらいにしか過ぎない。 パズル作家が作るような問題、多種多様な手筋が入っているような問題、 その他、間違いやすい問題とか、奇麗な問題とか、面白いと人が感じる問題など、 人間的要素も考えた問題の自動生成をやりだすと、 もう人工知能そのものになってくる。

パズルプログラミングで自動生成の域に達すれば、世の中のプログラムはかなり簡単に感じるはずだ。 もっと日本の大学は、パズルプログラミングで鍛え抜いて、世界と戦えるようになろう。


ホームページ目次2011-06-05(前)2011-06-08(次)