周りの誰よりも頭がよかったらこの人生なにかと楽しいだろうなー、と思うのは、私のような凡人が憧れる浅はかな考えであるということくらいは、やっと理解できる歳になった。といいながらも、産まれついての頭脳の性能はいかんともしがたいとしても、頭がよくなる方法でもあればこっそり教えてほしいと思うのは、まだまだ人生というものがわかっていない証であろうか。
ところで、木にもいろいろあるが、みごとに美しい姿形のものがある(左下写真)。夏場の緑の葉を身にまとった形も美しいが、冬のこの季節の幹と枝だけの姿は、木というものの基本形を提示しているようで感動的ですらある。
このような一見複雑な図形が、簡単なプログラムで描けるのは、木の構造がフラクタル(自己相似)形だからである。すなわち、全体として1つの木の形をしているが、幹から分かれて出ている1つ1つの枝が、また全体の木と同じ形をしている。したがって、1つの木を描くプログラムを作っておけば、それを大きさと位置を規則的に変えて何回も描かせれば、あっというまに複雑なみごとな木ができあがる。 自然が、このように美しい姿形をどのようにして造り上げるのかは知らないが、なにか単純なプログラムがどこかに組み込まれているのだろう。 プログラム言語の勉強のために、パソコンでオセロゲームを作ってみることにした。パソコンが相手をしてくれるものである。 → REVERSI よかとき 8×8盤 (HTML版) (Java版) → REVERSI よかとき 6×6盤 (HTML版) (Java版) ゲームの目的は、最後の状態で自分の石が相手の石より多くすることである。途中で自分の石が多くても、最後でひっくり返されたらなんにもならない、というところがおもしろいのである。したがって、目先にとらわれないで先の先を読むことが大切である。 実際に石を置かないで、頭の中だけで先の先を読む。これはなかなか難しい。そうとう "頭がよく" なくてはできない。普通の人間の頭では次の一手を見つけることがせいぜいである。それでも、パソコンがただ石を置けるところに置いていくだけでは、相手としてあまりに弱くておもしろくない。パソコンも少しは考えて打ってほしい。 パソコンに先の先まで考えることをさせたい。といっても、何百行にもなるようなプログラムでは、それを作る私の凡庸な頭脳が耐えられない。できるだけ簡単なプログラムで先の先まで読むものを作りたいのである。 まず一手目は、石が置けるところのうちどこに置いたら自分の石がもっとも多くなるかを探して打つとする。それに対して相手が2手目を石を置ける位置に打ってきたとしたとき、それぞれの場合について、石が置けるところのうちどこに置いたら自分の石がもっとも多くなるかを探して3手目を打つとする。以下同様にすればよさそうだ。 つまり、”石が置けるところのうちどこに置いたら自分の石がもっとも多くなるかを探して打つ” というプログラムを作って、これを何段階も繰り返せばいいのである。そして、何段階か後に自分の石が最も多くなる位置を見つける。これは、先の木を描かせたときの手法である。いってみれば、フラクタル的思考法である。これなら、簡単なプログラムでよさそうである。 実際には、2手目、3手目で石の置ける位置がたちまち膨大なものになるので、パソコンといえども時間がかかって使いものにはならない。例えば、隅に置けるときは隅に置くというような工夫をほどこす必要があって、未だとても ”強い” といえるものではないが、なんとかできた。 原理的には、簡単なプログラムでパソコンが高度な思考を行っているようにみえる。いわゆる頭がいいやつにできるのである。 簡単なことの組み合わせで複雑なことができる。ただ、簡単なことでも、異なるものを数多くマスターし、それらを組み合わせることは、凡庸な頭脳にはなかなかできないことである。 他方、フラクタル的思考法は1つの簡単な思考の再帰的な繰り返しである。1つの簡単なことなら凡庸な頭脳でもなんとかなるから、この法をマスターしたら、一見頭がよさそうに見えないかなー。 (2004. 2.12)
|