強力なアルゴリズムの発見が、形式論理的な難問の解決を可能にする


アルゴリズムの心地よさは、その繰り返しが与えるリズム感として、感覚的な心地よさがある。この心地よさにはまってしまった人は、この感覚を味わうことに快感を感じ、繰り返し同じことをすることに飽きることは無いのだろう。これは、好みのスポーツで楽しむ感覚によく似ている。走ることが好きになった人は、その単調な動きにもかかわらず、それを飽きるというよりも、繰り返しのリズムの快感を味わいたくて何度も走りたくなってしまうのだろう。

アルゴリズムの場合は、この感覚的な快感に加えて、自分の思考が進歩し深まっているという感じがつかめると、さらに繰り返し同じ事をすることに快感を感じるようになる。これは、スポーツの場合で言えば、その単調な動作の繰り返しによる運動が、確実に自分のスポーツの能力を高めているという感じがつかめると、単純な繰り返しであるのに、それをすることの快感が高まるという相互作用的な発展の契機をもたらすのと同じではないかと思う。

宮台真司氏が、空手の訓練における型の重要性を語っていたときがあった。型というのは、空手の上達にとっては非常に重要で有効なものであるが、これがそれだけ大事なものだということは、上達した後に初めて分かるというのだ。型を訓練しているうちは、その重要性がわからないという。それはまだ上達していない発展途上の状態だからだ。ということは、型の訓練が必ず上達につながるのだという理解(信念のようなものだろうか)があるかどうかで、型の訓練の真剣さが決まるのではないかと思う。

アルゴリズムの場合も、それを完全に身につけると、複雑怪奇な難問に対しても、まったく手がつけられないお手上げという状態を生まないですむ。アルゴリズムは、手順が決まっているものなので、解答の方向はまだ分からないけれど、まずこのことをやってみようかという取り掛かり(契機)を持つことが出来る。アルゴリズムは、試行錯誤のための出発点になりうるもので、このように、まず何でもいいからやってみるということが、ある種の上達法に通じるようなところがあるのを感じる。

アルゴリズムは、思考の進歩・発展に関して必要不可欠のものであるが、それは思考が深まって、難問の解決の糸口がつかめるようになるという、いわば思考の上級者になってみないとその威力が本当には分からない。思考の訓練において、初心者を一段抜けて上級者の段階に至ったとき、アルゴリズムで解決できる部分に関してはほとんど思考のリソースを使うことなく、難問が難問である所以の、その問題の構造の複雑さそのものに思考のリソースを集中することが出来る。そうなったときに初めてアルゴリズムの強力な威力というのを感じるようになるだろう。空手において上級者になって初めて型の重要性を理解することと通じるものがここにはある。

方程式の解法というアルゴリズムを習得すると、そのアルゴリズムをつかっていわゆる応用問題というものを解くことが出来るようになる。この応用問題というものが、数学においてはすこぶる評判が悪い。アルゴリズムの練習においては、それが解けることにある種の快感を感じることが出来るし、理解したような気分になるが、それを応用問題で使おうとするとさっぱり出来なくなり、アルゴリズムの快感を知ることが出来なくなる。

これは、教育的には非常に難しい問題が含まれているように僕は感じる。アルゴリズムというのは、本来その威力を十分に理解するためには、アルゴリズムなしで解くには苦労する問題に対して、アルゴリズムを使えばそれが見事に簡単に解けるという経験が必要ではないかと感じる。しかし、たいていの数学の応用問題では、アルゴリズムの適用そのものが難しく感じられたり、むしろアルゴリズムを使わないほうが問題が簡単に解けたりするようなったりするので、その「型」の重要性を実感することが難しくなる。アルゴリズムが、認識の進歩・発展をもたらす教育効果を持つには、その効果にふさわしい問題が必要なのだが、それを考案することが教育においてはいかに難しいかを感じる。

教育、ことに数学教育においては、それをこなすことによって進歩・発展がもたらされるという、よい問題の配列が決定的に重要だ。遠山啓先生の水道方式の体系は、そのことに成功した数少ない数学教育の成果なのではないかと思う。また、僕が義務教育を終えたころあたりから出てきたように記憶している公文式の数学の問題配列なども、良い問題さえ与えれば、教えるという行為がなくても技術は向上するということの証明になっているのではないかと思う。

強力なアルゴリズムの発見が認識の発展をもたらすという関心で、最近はナンバープレイすというパズルにはまっているのだが、これも、初歩的な問題と難問と呼ばれるような問題では、そこに使われるアルゴリズムがまったく違っているのを感じる。初歩的な問題では、ことさらアルゴリズムを意識しなくても、すぐにどこに何の数字が入るかが予想できて、しかもひとつの数字が決定するとそれに連れて他の数字もどんどん決定していくようになる。

ところが、難問と呼ばれるような上級の問題になると、最初に決定される数字がなかなか決まらない。この数字が決まれば、初歩的な問題と同じように、次々と他の数字が決定されるという連鎖が出てくるのだが、最初の数字の決定に非常に苦労するのが難問の特徴だ。この数字の決定は、ほとんど形式論理のみで考えていくのだが、これを日常言語的な使い方による形式論理で行うと、絶望的に問題の解決の方向が見えてこない。まったくお手上げの状態になってしまう。

そこで強力なアルゴリズムの発見を考えるのだが、難問になればなるほど、それにふさわしい強力なアルゴリズムが無ければ、問題の解決の方向はまったく見えなくなる。文章で説明するのは難しいのだが、僕がナンバープレイスで使うアルゴリズムは、そのマスに入る可能性のある数字をすべて書き出すという手法によるアルゴリズムだ。

ナンバープレイスでは、縦・横・3×3の正方形の中に、1から9までの数字が一つずつ入らなければならないというルールがある。このルールに従えば、あるマスの中にどの数字が入るかという可能性は、最大で9個になる。これは有限個の可能性なので、すべて書き出すというアルゴリズムは簡単に出来る。9個の数字の可能性があるということは、どの数字が入ってもいいということで、この可能性が一つしかなければ、そのマスに入る数字は決定される。アルゴリズムとしては単純だ。

この単純なアルゴリズムですぐに解決できる問題は初歩的な問題だ。複雑な難問では、どのマスにも複数の可能性が残り、数字を一つに決定することが難しくなる。強力なアルゴリズムは、この複数の可能性を一つずつつぶしていって、どこかのマスの可能性を一つに絞り、その数字を決定することで、他のマスの複数の可能性が一つずつ消えていくというものになる。

僕が発見したアルゴリズムは、この可能性の数が2つにまで絞れるマスを見つけることだ。9×9の81個のマスの中で、2つの数字の可能性を見つけるのは、かなりの注意深さがないとならないが、これが見つかるようなら、そこを契機として解答への道が見つかる場合が多い。

そのマスに二つの可能性があるということは、それはどちらかの数字が必ず入るということで、これが同じ数字になるような二つのマスを見つけたときが、解答へのきっかけとなる。そのマスが、縦あるいは横に並んでいたり、3×3の正方形の中に入っていたりすれば、その並びの中で、この二つの数字はマスの中の可能性から消去することが出来る。つまり、単純に縦・横・3×3の正方形を見ているだけでは可能性を消去できなかった数字が、このアルゴリズムを使えば、いくつか消去できるようになる。

ナンバープレイスにおいては、ここにはこの数字しか入らないという可能性が二つに絞れることがアルゴリズムとしては重要で、それは難問を解くための強力なアルゴリズムになる。空手の型のように、ナンバープレイス上級者になるための型を提供するものになるだろう。

アルゴリズムは、同じ手順を繰り返すもので、板倉さんの表現では「バカの一つ覚えのすばらしさ」というものに通じるものではないかと思う。これは、ある種の法則性に絶対的な信頼を置くことができれば、いつでもその法則の適用を考えて思考を進めるということが、「バカの一つ覚え」という言葉で表現されている。これは、板倉さんは、褒め言葉として使っているのだが、この言葉は軽蔑の表現としても使われる。

アルゴリズムも、そのすばらしさは、空手の型を理解した上級者のように、思考の進め方の上級者にとってはよく分かるすばらしさだが、そこまでに至らない時は、つまらない軽蔑的なものになる可能性もある。似たような構造をもっているだろう。板倉さんは、科学の法則のすばらしさを「バカの一つ覚え」という表現をしたが、これは、仮説実験授業を通じて、直感では正解を出すことが難しいと思われる、いわば難問に当たる問題を、「バカの一つ覚え」の科学法則を使えば100%正しく解答出来るという経験をつむことによって、そのすばらしさを知るようになる。

アルゴリズムを十分習得すれば、これはこのようになるだろうというようなものが直感として働くようになる。常識的な単純な直感ではなく、強力なアルゴリズムによる新たな直感が働くようになってくる。これは、アルゴリズムの使い方が、一つの技術にまで高められたということになるのだろう。教育における目標の一つなのではないかと思う。

宮台真司氏の文章を読むと、現代社会に対する認識の深さ・鋭さをいつも感じる。これは、宮台氏が、社会学という科学におけるアルゴリズムを深く身につけた人間だからなのではないかと感じる。社会というのは、誰もがそこで生きているので、素朴に感覚的にそれを受け止めて判断することは誰にでも出来る。しかし、そのような単純な理解は、おそらく単純な問題への対処しか出来ないものになり、複雑で解決が難しい問題に対しては、お手上げになるか、「誰が悪いのか」という犯人探しのようなアルゴリズムの発想をしてしまうのではないだろうか。

それに対して宮台氏は、これまでの社会学の成果を蓄積したアルゴリズムによって、社会のこの存在はこのようなメカニズムを持って動いているのだから、このような現象的な現れ方をするはずだということが、アルゴリズムとして見えているのではないかと感じる。そして、そのアルゴリズムに従って記述された文章は、問題のもっと深い構造をよりはっきりと見出すことに成功し、素朴にはまったく理解できなかった複雑な問題を解き明かすことに成功しているのではないかと思う。

アルゴリズムという発想は、思考を深めるために非常に重要なものに感じる。複雑な問題の構造を目に見えるような形にするためのアルゴリズムを発見したいものだと思う。新居先生の言葉でいうと、「ノーミソの目を鍛える」ということになるだろうか。普通の目では、表面に現れたものを見るという、単純素朴な感覚しか受け止められないが、ノーミソの目は、そこに隠れたものさえ見ることが出来る。それは、ある種のアルゴリズムを利用することによって鍛えられるのではないだろうか。

社会をアルゴリズムで眺めると、社会というのはそのような単純なものではないという批判も聞こえてきそうだが、複雑なものを複雑なままで眺めても、それは少しも分かるようにならない。それは、結果的に「よく分からない」という理解にしかならない。複雑なものを単純化するためのアルゴリズムこそが、複雑なものを正しく理解するためのカギになる。そのアルゴリズムは、複雑な構造を保存したものでなければならない。複雑さをただ捨てるだけで単純化したアルゴリズムは、対象とは似ても似つかないものを理解してしまうことになるだろう。複雑な構造を保存しつつも、なおかつアルゴリズムとして単純化されるものを求めるのが、本当に強力なアルゴリズムとなるだろう。