哲学・思想・科学意識・クオリア・自由意志研究方法・科学全般

新しい種類の科学 スティーブン・ウルフラム
A new kind of science - Stephen Wolfram

サイトのご利用には利用規約への同意が必要です

強調オフ  文字サイズ

A new kind of science

* 1

20年余り前、私のコンピュータの実験が思いもよらないことを発見した。しかし、調べれば調べるほど、私が見たものは、既存の科学の根底にある亀裂の始まりであり、まったく新しい種類の科学に向けた最初の手がかりであることがわかったのである。

このフックは、その新しい種類の科学を開発するために私が行ってきた20年近い仕事の集大成である。このフックは、そのような新しい種類の科学を開発するために私が行った20年近い研究の集大成である。しかし、私は自分が想像していたよりもはるかに多くのことを発見し、実際、私が行ったことは既存の科学のほとんどすべての分野、そしてそれ以外にもかなり多くのことに触れている。

前書き

初期のころは、それまでと同じように科学者として、現在進行中の研究内容を科学文献に発表していた。しかし、私の書いたものは非常に評判が良かったようであるが、次第に、あらゆる分野の雑誌に散らばる技術論文では、私が構築し始めたと思われる大きな新しい知的構造をうまく伝えることはできないと思うようになった。

そこで私は、完成して、すべてを一つのまとまった形で発表できるようになるまで、ただ黙々と作業を続けることを決意した。15年後、この本がその成果である。この本によって、私が行ってきたことを、科学者にも非科学者にも、できる限り幅広く伝えたいと願っている。

現代において、真に新しい科学が、科学者でない人々にも読める本で初めて紹介されることは、ほとんど前代未聞であった。科学の進歩は、そのほとんどが、それまでの専門的な技術知識に頼らなければ合理的に説明できないような小さな止まり木で行われる傾向があるからだ。

しかし、本書で述べるような新しい種類の科学を開発するためには、一度にいくつかの大きなステップを踏むしかなかった。

ある意味では、これまでやってきたことを新しい技術的な形式主義で表現する方が簡単だったかもしれない。しかし、私はその代わりに、普通の言葉と絵だけで十分に説明できるほど、物事を明確にすることに労力を費やすことを選んだ。

しかし、残念なことに、このことは、特に既存の科学分野の人たちの中には、この本に書かれていることは、すでに自分の持っている専門的な知識でカバーされているに違いないと、最初に思い込んでしまう人がいることを意味する。そして、その時点で立ち止まってしまい、それ以上学ばないことを選択する人も少なからずいるのではないかと私は危惧している。しかし、多くの人は、少なくとも、この本に書かれていることに驚き始めるのに十分な時間、この本に目を向けてくれることを私は願っている。

最初はおそらく、この本の一部が正しいわけがないと思うだろう。なぜなら、既存の科学とあまりにも食い違っているように見えるからだ。そして、もし私自身が過去20年間この本の内容について考えることなく、今日この本を手に取ったとしたら、この本に書かれていることの多くを信じないに違いないと思うのである。

しかし、この本の科学が最終的に基づいているコンピュータ実験は、現代のどんなコンピュータでも簡単にチェックすることができる。また、この本に書かれているほとんどすべての議論は、概念的には単純ではないことが多いものの、専門的な科学的知識などを必要としないものばかりである。

しかし、私が到達した結論と折り合いをつけるのに、何年もかかったことは確かである。そして、私がこのフックの中で表現するために費やした努力のすべてが、他の人々にとってより容易なものになることを願ってはいるが、それがすぐに終わるとは思っていない。この本で語られていることを本当の意味で吸収するためには、直感と思考のかなり大きな転換が必要なのである。

でも、一番大事なのは、この本の内容を理解することだと思う。というのも、さまざまなつながりがあるとはいえ、この本は何よりもまず、根本的に新しい知的構造について書かれたものであり、それ自体で理解する必要があり、既存のいかなる枠組みにも合理的に当てはめることはできないからである。

過去20年間に発見したことを、扱いやすい大きさの本にまとめることは、私にとって大きな挑戦であった。そのために、私はしばしば1ページや1段落に、1章や1冊の本が書けるようなエッセンスを凝縮してしまうことがあった。

25万語ほどの本文では、私の考えや発見の核心を伝えることに重点を置き、また、それに至った経緯も少し示した。この本の最後の300ページほどは、それ自体も25万語ほどあるが、多くの歴史的、技術的な注釈で本文を補足し、さらに発見を要約している。849ページからの注は、この本を読む上でのいくつかの具体的な問題を扱っている。

本書を通じて私が最も関心を寄せているのは、基礎科学と基本的な問題である。しかし、この本の基礎の上に、概念的なものから実用的なものまで、膨大な数のアプリケーションを開発することができるのである。

もちろん、すぐに実現するものもあるだろう。しかし、ほとんどの場合、出現するまでに数十年かかるだろう。しかし、やがて本書の考え方が、科学技術だけでなく、一般的な思考の多くの分野に浸透していくことを私は期待している。そうなれば、その方法はやがて、今日の数学と同じように、教育の標準となることだろう。そして最終的には、この本の中で今は驚きと注目に値すると思われることのほとんどが、身近で当たり前のことに思えるようになるのである。

しかし、私にとって常に最も重要なのは、実際の発見の過程である。新しい基本的な真理を初めて垣間見ることほど、深い興奮を覚えることはないからだ。そして今、私は本書で説明する知的構造を構築し終えた。この言葉を読んでくださる方々にも、私が経験した発見の興奮を分かち合っていただければと願っている。

スティーブン・ウルフラム 2002年1月15日

基本的な考え方の概要

新しい科学の基礎となるもの

3世紀前、科学は、自然界を記述するのに数学的方程式に基づいたルールを用いることができるという劇的な新発想によって一変した。本書の目的は、このような変革に再び着手し、単純なコンピュータ・プログラムに具現化できる、より一般的なタイプのルールに基づく新しい種類の科学を導入することだ。

必要な知的構造を構築するのに20年の大半を費やしたが、その結果には驚いている。というのも、私が開発した新しい種類の科学では、これまで既存のどの科学でもうまく対処できなかった驚くべき広範囲の基本的問題に対して、突然進歩することが可能になったからである。

理論科学が可能であるならば、あるレベルでは、研究対象であるシステムは明確なルールに従わなければならない。しかし、これまでの厳密科学では、そのルールは伝統的な数学に基づいたものでなければならないと考えられてきた。しかし、私が本書で紹介する新しい種類の科学を開発するに至った決定的な理由は、自然界に見られるようなシステムが、実は伝統的な数学的ルールだけに従うべきだと考える理由はない、ということだ。

歴史が浅いうちは、より一般的なルールがどのようなものであるかを想像するのは難しかったかもしれない。しかし、今日、我々はコンピュータに囲まれ、そのプログラムは事実上、多種多様なルールを実装している。我々が実際に使っているプログラムも、そのほとんどが特定の作業を行うために特別に設計された非常に複雑なルールに基づいている。しかし、プログラムは基本的にどんな明確なルールにも従うことができる。本書で述べる新しい種類の科学の核心は、可能な限り最も単純なルールを持つプログラムについての発見である。

もしプログラムのルールが単純なら、その動作もそれに比例して単純に違いない、と考える人がいるかもしれないし、私も最初はそう考えた。というのも、我々の日常的なモノ作りの経験から、複雑なものを作るのは何かと難しく、それ自体が複雑なルールや計画が必要だと直感しがちだからである。しかし、18年ほど前に私が行った重要な発見は、プログラムの世界ではそのような直感は全くと言っていいほど正しくないということだ。

私は、ある意味で、想像し得る限り最も初歩的なコンピューター実験を行った。簡単なプログラムをいくつか用意し、それらを体系的に実行することで、その挙動を確認したのである。その結果、驚いたことに、ルールが単純であるにもかかわらず、プログラムの動作は単純とはほど遠いことがよくある。実際、私が見た最も単純なプログラムの中にも、私が今まで見たこともないような複雑な動作をするものがあった。

この結果を受け入れ、その結果がいかに根本的で広範囲なものであるかを理解するまでに、私は10年以上を要した。今にして思えば、この結果は何世紀も前に見つからなかったはずはないのだが、私は次第に、理論科学の全歴史の中で最も重要な一つの発見であると考えるようになった。というのも、この発見によって、新しい領域が大きく開かれただけでなく、自然界やその他の場所でのプロセスがどのように機能しているのか、根本的に見直されることになったのである。

おそらく最も劇的なのは、長い間、自然界の最大の謎とされてきたことに解答を与えることだ。つまり、自然が一見簡単に、我々には非常に複雑に見えるものを作り出すことができるのは、どんな秘密があるのかということだ。

自然界では、四角や円など、我々が単純だと思う形がほとんどかもしれない。しかし、実際には、自然界の最も顕著な特徴の一つは、物理的、生物学的、その他のシステムの広い範囲にわたって、我々は常に、非常に複雑と思われるものに直面しているということだ。そして実際、歴史の大半を通じて、このような複雑さは、人間の作品よりもはるかに大きいため、超自然的な存在によるものでしかないと、ほとんど当然のように考えられてきた。

しかし、多くの非常に単純なプログラムが非常に複雑なものを生み出すという私の発見は、むしろ別の説明を即座に示唆している。なぜなら、自然界のシステムが典型的なプログラムのように動作しているというだけで、その動作はしばしば複雑なものになるからだ。そして、人間の人工物には通常そのような複雑さが見られないのは、それらを構築する際に、我々が望む目的を達成することができるほど単純な動作だけを与えるように特別に選ばれたプログラムを事実上使用する傾向があるからにほかならない。

過去数世紀にわたる成功により、既存の科学はとっくの昔に複雑性の問題に対処していると考えていたかもしれない。しかし、実際にはそうではない。そして実際、ほとんどの場合、複雑性との直接的な接触を避けるために、その範囲を明確に定義してきたのである。というのも、彼らの基本的な考え方である数式で動作を記述するという方法は、惑星の運動のように動作がかなり単純な場合にはうまく機能するが、動作がより複雑になるとほぼ必然的に失敗してしまうからである。また、生物学における自然淘汰のような考え方に基づく記述も、多かれ少なかれ同じことが言える。しかし、この本で私が開発した新しい種類の科学は、プログラムという観点から考えることで、初めて非常に複雑な振る舞いについても意味のある記述を行うことができるようになったのである。

既存の科学では、過去100年ほどの間、システムを分解してその根底にある部分を見つけ出し、その部分をできるだけ詳細に分析しようとすることに重点が置かれてきた。特に物理学の分野では、このアプローチが成功し、日常的なシステムの基本的な構成要素は、今や完全に知られている。しかし、これらの構成要素がどのように作用して、我々が目にする全体的な振る舞いの最も明白な特徴を生み出しているのか、これまではほとんど完全に謎のままであった。しかし、本書で私が展開する新しい種類の科学の枠組みの中で、このような問いに取り組むことがようやく可能になったのである。

既存の科学の伝統から、その答えはあらゆる種類の細部に依存し、物理学、生物学、その他のシステムの種類によって全く異なるだろうと予想されるかもしれない。しかし、私は、単純なプログラムの世界では、基本的な詳細にはほとんど関係なく、同じ基本的な動作形態が何度も何度も繰り返されることを発見してきた。そして、このことは、全体の振る舞いを決定する極めて普遍的な原理が存在することを示唆しており、それは単純なプログラムだけでなく、自然界やその他のシステムにも適用されると予想される。

既存の科学では、複雑と思われる現象に遭遇すると、その現象は、それ自体が複雑である何らかの基礎的なメカニズムの結果に違いないと、ほとんど当然のように考えられてきた。しかし、単純なプログラムが非常に複雑なものを生み出すことができるという私の発見は、実はこれが正しくないということを明らかにした。そして実際、本書の後半では、従来は複雑すぎて簡単には説明できないと思われていた、あらゆる重要な現象の原因となる本質的なメカニズムを、極めて単純なプログラムでさえも捉えているようであることを紹介する。

科学の歴史では、新しい考え方によって長年の問題にようやく対処できるようになることは、珍しいことではない。しかし、私は、単純なプログラムで考えるという発想で、既存の科学の根幹に関わる問題を解決できたことに驚いている。例えば、物理学では、熱力学的な振る舞いがどのように生じるのかについて、1世紀以上にわたって混乱が続いている。しかし、私は単純なプログラムに関する発見から、非常に分かりやすい説明を導き出した。生物学の分野では、私の発見によって、多くの生物がこれほどまでに複雑な振る舞いをするのはなぜなのかを、初めて明確に理解することができるようになった。実際、私は、単純なプログラムという観点から考えることで、真の意味での物理学の基礎理論をひとつ構築することが可能になるという証拠を得つつある。

数学が科学に導入されたとき、それは初めて、物理的現実に直接言及することなく科学的結論を導き出すことのできる抽象的な枠組みを提供したのである。しかし、過去数千年にわたる数学の発展にもかかわらず、数学そのものは、算術や幾何学に由来する特定の種類の抽象的な体系にのみ集中し続けてきた。しかし、私が本書で述べる新しい種類の科学は、ある意味でもっと一般的な抽象システムを導入するもので、基本的にあらゆるタイプのルールに基づいている。

このようなシステムは、あまりに多様であるため、意味のある一般的な記述はできないと思われるかもしれない。しかし、私が本書で述べる新しい種類の科学のための統一的なフレームワークを構築することを可能にした重要な考え方は、あらゆるシステムのルールがプログラムに対応すると見なすことができるのと同様に、その振る舞いもまた計算に対応すると見なすことができるということだ。

従来の直観では、より高度な計算を行うには、常により高度な基本的なルールが必要だと思われるかもしれない。しかし、コンピュータ革命のきっかけとなったのは、一定の基本ルールを持つ普遍的なシステムを構築することで、事実上、あらゆる計算を実行できるという驚くべき事実であった。

しかし、一般に、このような普遍性の閾値は高く、典型的な電子計算機のような精巧で特殊なシステムによってのみ達成されると考えられてきた。しかし、本書の驚くべき発見の一つは、実は、たった一文で説明できるほど単純なルールでありながら、普遍性を持つシステムが存在することだ。このことは、普遍性という現象が、抽象的なシステムにおいても自然界においても、これまで想像されていたよりもはるかに一般的で重要であることを直ちに示唆している。

それは、どんなシステムであっても、明らかに単純ではない振る舞いが見られる場合には、それと同等の高度な計算に対応していると考えることができる、というものである。この非常に基本的な原理は、科学や科学的思考に対して、前例のないほど多くの示唆を与えてくれる。

まず、単純なプログラムがなぜ複雑と思われるような振る舞いをするのか、その根本的な説明が即座に得られる。なぜなら、他のプロセスと同様に、我々自身の知覚と分析のプロセスも計算と考えることができるからである。しかし、そのような計算は常に単純なプログラムが行うものよりはるかに高度なものであると想像していたかもしれないが、「計算等価性原理」はそうではないことを暗示している。そして、観察者である我々と観察しているシステムとの間のこの等価性が、そのようなシステムの振る舞いを我々に複雑に見せているのである。

s

あるシステムがどのように振る舞うかは、実験をして様子を見れば、原理的にはいつでもわかる。しかし、理論科学の歴史的な大成功は、その代わりに、結果を直接予測することができる数式を見つけることに集中してきた。しかし、これは実質的に、システム自身が行っている計算作業を省略できることに依存している。

しかし、「計算等価性原理」によれば、計算等価性原理は、通常、単純な動作をする特殊なシステムに対してのみ可能であることが示唆されている。それ以外のシステムでは、我々が数学やコンピュータを駆使して行うのと同じくらい高度な計算を行う傾向があるからだ。つまり、そのようなシステムは計算不可能であり、その振る舞いを見つけるには、事実上、システム自身と同じくらいの計算量を費やして、そのステップの一つ一つをトレースするしかない。

このことは、ある意味で理論科学に根本的な限界があることを意味している。しかし、それは同時に、時間の経過によって達成される何か還元できないものがあることも示している。そしてそれは、我々人間が、たとえその根底にある一定のルールに従っていても、意味のある形で自由意志を示すことができるという説明にもつながる。

歴史上、科学における最も重要な進歩の多くは、我々人間が特別ではないことを示す新たな方法を示していることが特徴である。そして、「計算等価性原理」も、あるレベルではこれを実現している。なぜなら、計算、つまり知性に関して言えば、人間は結局のところ、あらゆる種類の単純なプログラムや自然界のあらゆる種類のシステムよりも洗練されていないことを暗示しているからである。

なぜなら、単純なプログラムから脳、そして我々の宇宙全体に至るまで、膨大な種類のシステム全体にわたって、同じ基本的な現象が起こり、同じ基本的な科学的アイデアや方法が使用できるような基本的同等性が、この原理によって暗示されるからである。そして、このことが、本書で述べる新しい種類の科学の大きな力を最終的に担っているのである。

他分野との関係

数学 通常、数学は任意に一般化された抽象的なシステムの研究に関係していると考えられている。しかし、本書は、従来の数学が全く考慮しなかった、単純なプログラムに基づく膨大な種類の抽象システムが実際に存在することを示す。そして、これらの系は、多くの点で従来の数学のほとんどの系よりも単純な構造であるため、適切な方法を用いることで、実質的にさらに踏み込んだ研究が可能である。

その結果、現代数学ですでに知られている現象の、前例のないほど明確な例を発見することもある。しかし、いくつかの劇的な新現象も発見される。最もすぐにわかるのは、基礎となるルールが標準的な数学の教科書に載っているほとんどのシステムよりもはるかに単純である多くのシステムの動作が、非常に高度に複雑であることだ。

そして、この複雑さがもたらす結果のひとつは、伝統的な数学の中心であった証明の考え方に根本的な制限をもたらすことだ。1930年代にはすでに、ゲーデルの定理がそのような限界の兆候を示していた。しかし、これまでは、実際に行われている数学の大部分とは無関係に思われてきた。

しかし、本書の発見は、このことが、現在数学と考えられているものの範囲がいかに狭いかを反映しているにすぎないことを示すものである。そして実際、本書の核心は、新しいアイデアと方法、そして探索すべき広大な新領域を備えた、数学の大規模な一般化を紹介するものと見なすことができる。

また、私が本書で展開する枠組みは、数学を行うプロセスを基本的に計算論的な観点から見ることで、既存の数学の基礎に関する重要な問題に取り組むことが可能になることを示すものである。

物理学

科学に対する伝統的な数学的アプローチは、歴史的に物理学において大きな成功を収めてきた。そして現在では、本格的な物理理論はすべて数学的方程式に基づいていなければならないということが、ほとんど一般的になっている。しかし、このアプローチでは、物理学がほとんど語ることのできない多くの物理現象が存在する。しかし、本書で紹介する簡単なプログラムで考えるというアプローチで、ようやく劇的な進歩が可能になったようだ。そして実際、この本の中で、いくつかの極めて単純なプログラムが、これまで全く謎に思われていた非常に多くの物理現象の本質的なメカニズムを捉えることができるようであることがわかるだろう。

理論物理学における既存の方法は、連続数や微積分、あるいは確率の考え方を中心に展開される傾向がある。しかし、本書に登場するシステムのほとんどは、単純な離散的要素と明確なルールによって成り立っている。しかし、本書に登場するシステムのほとんどは、単純な離散的要素からなる明確な法則を持つものであり、この単純さが、多くの新しい現象の発見を可能にしている。

通常の物理システムのモデルは、ある特徴を捉えた理想化であり、他の特徴を無視したものである。かつては、ある単純な数値関係、たとえば滑らかな曲線で表現することが一般的だった。しかし、本書で紹介する簡単なプログラムに基づく新しいモデルでは、明示的な動作イメージでしか見ることのできない、より複雑な特徴を捉えることが可能になる。

物理学の未来において、最大の勝利は間違いなく、我々の全宇宙に対する真に基本的な理論を見出すことであろう。しかし、時折楽観論が聞かれるものの、従来のアプローチでは、これが間近に迫っているとは思えない。しかし、私が本書で展開する方法と直観によって、そのような理論が実際に発見される深刻な可能性がようやく出てきたと私は信じている。

生物学

現在、生物体の詳細については膨大な量が知られているが、一般的な理論というものはこれまでほとんど出てきていない。生物学の古典的な分野では、自然淘汰による進化を基礎として扱う傾向があり、生物系に関する一般的な観察は、抽象的な理論ではなく、進化の歴史に基づいて分析されるべきであるという考え方がある。その理由のひとつは、伝統的な数学モデルが、生物学で見られるような複雑さをうまく表現できなかったからである。しかし、本書の発見は、単純なプログラムが高度な複雑性を生み出すことができることを示している。そして実際、このようなプログラムは、生物体の多くの特徴を再現できることが判明した。例えば、遺伝プログラムが、我々が目にする実際の生物形態を生み出すのに役立っている本質的なメカニズムのいくつかを捉えているように思われる。つまり、生物システムの新しいモデルを幅広く作成することが可能になり、例えば医療目的でその動作の本質をエミュレートする方法を見出すことができる可能性がある。また、単純なプログラムに対する一般原理がある限り、その原理は生物にも当てはまるはずで、生物学における新しい種類の一般抽象理論の構築を想像することが可能になるのである。

社会科学

経済学から心理学に至るまで、物議を醸すかもしれないが、物理科学の成功から、確かな理論は常に数字や方程式、伝統的な数学の観点から定式化されなければならないという思い込みが広く存在してきた。しかし、私は、この本で私が開発した簡単なプログラムに基づく新しい種類の科学を用いれば、社会科学における現象の基本的なメカニズムをとらえることができる可能性が高くなると考えている。私の考えを社会科学に応用することについては、すぐにさまざまな主張がなされるに違いない。そして実際、この本から生まれる新しい直観は、これまで非常に不可解に思われていた現象を、ほとんど即座に説明することができるかもしれない。しかし、フックの結果そのものが、科学的手法の適用には根本的な限界があることを必然的に示している。新たな疑問は生まれるだろうが、どのような場合に一般的な理論が可能で、どのような場合に具体的な事例の判断に頼らざるを得ないかが明らかになるには、時間がかかるだろう。

コンピュータ・サイエンス

コンピュータ・サイエンスは、その長い歴史の中で、特定のタスクを実行するために設定された特定の計算システムの研究にほぼ独占的に焦点を合わせてきた。しかし、本書の核となる考え方の1つは、任意の計算システムが何をするのかという、より一般的な科学的問題を考えることだ。そして、私が発見したことの多くは、既存のコンピュータ科学に基づいて期待されるものとは大きく異なるものであった。というのも、伝統的にコンピュータサイエンスで研究されてきたシステムは、その構造がかなり複雑であるにもかかわらず、ある特定の目的を果たすと認識できる、かなり単純な振る舞いをする傾向があるからだ。しかし、本書で私が示したのは、極めて単純な構造を持つシステムであっても、非常に複雑な振る舞いをすることがあるということだ。そして、これを計算論的に考えることで、計算の本質に関する新しい直観を得ることができるのである。

その結果、計算論的な考え方が適用できる領域が劇的に広がり、特に自然や数学に関するあらゆる種類の基本的な疑問が含まれるようになるのである。もう一つの結果は、コンピュータサイエンスにおける既存の問題、特に、一般的なタイプの計算タスクを実行するためにどのような究極のリソースが必要であるかに関連する問題に対する新しい視点である。

哲学

歴史のどの時代にも、宇宙とその中での我々の役割について、哲学の一般的な議論にしかアクセスできないと思われる問題が存在する。しかし、科学の進歩は、最終的にはより明確な文脈を提供することが多い。そして、本書で紹介する新しい種類の科学は、古代から基本的な問題と考えられてきた様々な問題に対して、これを実現すると私は信じている。その中には、知識の究極的な限界、自由意志、人間の条件の独自性、数学の必然性などに関する問題が含まれている。これらの一つ一つについて、哲学の歴史の中で多くのことが語られてきた。しかし、必然的にそれは、物事がどのように作用するのかについて、現在の直観に基づ いてのみ語られてきたのである。しかし、本書における私の発見は、根本的に新しい直観につながるものである。そして、この直観によって、多くの長年の問題に対する解決策を初めて見出すこと ができるようになった。

芸術

自然が偉大な美を生み出すことは、とても簡単なことのように思われる。しかし、これまでの芸術は、そのような形を模倣することで満足しなければならなかった。しかし、自然界に存在する様々な複雑な振る舞いの本質的なメカニズムを、簡単なプログラムで捉えることができるようになった今、そのようなプログラムをサンプリングするだけで、自然界に見られる形の一般化について探求することができるようになった。従来の科学的直感や初期のコンピュータ・アートを見ると、単純なプログラムでは単純で硬質な絵しか描けず、芸術的な面白みはないと思われるかもしれない。しかし、本書を読むと、極めて単純なルールのプログラムであっても、時には自然を思わせるような、しかし時にはこれまでに見たこともないような、印象的な美的特性を持つ絵を生み出すことができることが明らかになる。

テクノロジー

しかし、自然界には、テクノロジーが生み出したものよりも複雑で高度なことが数多く存在する。しかし、本書の発見は、単純なプログラムに具現化されたルールの種類を使うことで、自然の本質的なメカニズムの多くを捉えることができることを示している。そして、そこから、自然と同じような高度な技術を実現する、まったく新しい種類の技術を想像することができるようになる。従来の工学の経験から、高度なタスクを実行するには、それに応じて複雑な基本ルールを持つシステムを構築する必要があると一般に考えられてきた。しかし、本書の発見は、そうではなく、実際には極めて単純な基本ルール(例えば、原子のレベルで直接実装できる可能性がある)が必要であることを示すものである。私は本書で、主に基礎科学の問題に焦点を当てている。しかし、数十年のうちに、私が行ってきたことが技術の基礎に劇的な変化をもたらし、宇宙が与えてくれるものを人間の目的のために応用する我々の基本的能力に変化をもたらすことは、ほとんど疑いのないことなのである。

過去の取り組み

このフックにおける私の目標は、十分に幅広く、基本的なものであるため、少なくともその一部を達成しようとする試みは、必然的に過去に行われてきた。しかし、この本のアイデアや方法がなければ、最終的には、試みられたすべての主要なアプローチに対して、ほとんど乗り越えられない障壁を呈することになる基本的な問題があった。

人工知能

電子計算機が初めて発明されたとき、人間のように考えることができるようになるのもそう遠くないだろうと広く信じられていた。そして1960年代には、人間の思考プロセスを理解し、それをコンピュータに実装することを目的とした人工知能の分野が発展してきた。しかし、その実現は予想以上に難しく、いくつかのスピンオフがあったものの、根本的な進歩はほとんど見られなかった。しかし、あるレベルでは、脳の中の一見単純な構成要素が、いかにして複雑な思考を引き起こすかを理解することが、常に基本的な問題であったのである。しかし今、ようやく本書で開発されたフレームワークによって、これを実現するための有意義な基盤を手に入れたといえるだろう。そして実際、本書の理論と実践の両方のアイデアを基に、人間のような思考が可能な技術的システムを作る上で、最終的に劇的な進歩が可能になると私は考えている。

人工生命

機械が存在して以来、人々は機械がどの程度まで生命システムを模倣することができるかを研究してきた。1980年代半ばから1990年代半ばにかけて最も活発だった人工生命の分野では、主にコンピュータ・プログラムによって生物システムのさまざまな特徴をエミュレートできることを示すことに取り組んできた。しかし、通常、必要なプログラムはかなり複雑でなければならないと考えられていた。しかし、本書の発見は、実際には非常に単純なプログラムで十分であることを示すものである。そして、そのようなプログラムによって、行動の基本的なメカニズムが明らかになり、おそらく実際の生物システムで起こっていることに、より近くなるのである。

カタストロフィー理論

伝統的な数学モデルは、通常、連続的に変化する量に基づいている。しかし、自然界ではしばしば不連続な変化が見られる。1970年代に流行したカタストロフィー理論は、伝統的な数学モデルにおいても、ある種の単純な離散的変化が起こりうることを示すことに関心があった。本書では、連続性の仮定から出発していない。また、私が研究する振る舞いの種類は、カタストロフィー理論のそれよりもはるかに複雑なものになる傾向がある。

カオス理論

カオス理論の分野は、ある種の数学的系がその初期条件の詳細に恣意的に依存するような振る舞いをするという観察に基づいている。1800年代末に初めて注目され、1960年代から1970年代にかけてのコンピュータシミュレーションを経て脚光を浴びるようになった。その最大の意義は、「初期条件の細部が不確実であれば、やがて系の振る舞いを予測することは不可能になる」ということを暗示していることだ。しかし、一般的な説明ではそのように言われているが、この事実だけでは、その振る舞いが必ずしも複雑であることを意味するものではない。むしろ、初期条件の細部に複雑性があれば、その複雑性はやがてシステムの大規模な振る舞いに現れるということを示しているに過ぎない。しかし、もし初期条件が単純であれば、それに応じて振る舞いが単純にならない理由はない。しかし、本書で示すのは、初期条件が非常に単純であっても、非常に複雑な振る舞いをする系が数多く存在するということだ。そして、この現象こそが、例えば、自然界に見られる明らかな複雑性の大部分を担っているのだと主張する。

複雑性の理論

1980年代初頭の私の発見から、私は複雑性を独立した基本現象として研究することが可能であるという考えに至った。そして、次第にこれはかなり一般的になっていきた。しかし、そこで行われた科学的研究のほとんどは、私の初期の発見に基づいたものであり、既存の科学の枠組みの中で行われたため、一般的かつ基本的な問題についてはほとんど進展がなかった。本書で述べる新しい種類の科学の特徴は、複雑性という一般的な現象とその起源に関する基本的な理解を深めることがついに可能になったということだ。

計算複雑さの理論

1970年代に開発された計算複雑性理論は、特定の計算タスクの実行がいかに困難であるかを特徴づけようとするものである。その具体的な成果は、複雑な構造でありながら動作が単純な、かなり特殊なプログラムに基づいている傾向がある。しかし、本書で紹介する新しい種類の科学は、より一般的なプログラムのクラスを探求し、そうすることで計算複雑性理論の長年の疑問に新しい光を当て始めているのである。

サイバネティクス

1940年代には、電気機械とのアナロジーに基づいて生物システムを理解することができるかもしれないと考えられていた。しかし、基本的には伝統的な数学の解析方法しか利用できなかったため、典型的な生物システムの複雑な挙動を捉えることはほとんどできなかった。

動的システム理論

およそ1世紀前に始まった数学の一分野である力学系理論は、ある種の数学的方程式に従って時間的に進化するシステムを研究し、従来の幾何学的手法やその他の数学的手法を使って、そうしたシステムが生み出しうる振る舞いの特徴を明らかにすることに取り組んできた。しかし、本書で私が主張するのは、多くのシステムの挙動は、基本的に複雑すぎて、そのような方法ではうまく捉えられないということだ。

進化論

自然淘汰による進化というダーウィン理論は、生物システムに見られる複雑さを説明するものと思われがちだが、実際、近年、この理論は生物学以外の分野にもますます適用されてきている。しかし、なぜこの理論が複雑性の発生を暗示するのか、その理由はこれまで全く明らかにされてこなかった。実際、私はこの本の中で、多くの点でこの理論が複雑性に反対する傾向があることを主張する。しかし、この本の中で発見された、新しい、全く異なるメカニズムが示唆されており、私は、生物学で見られる非常に複雑な例のほとんどに、実際に責任があると信じている。

実験数学

計算から得られたデータを見ることによって数学的体系を探究するという考え方は長い歴史を持っており、コンピュータと Mathematica の出現によって徐々に広まってきた。しかし、ほとんど例外なく、過去に他の数学的手段ですでに研究された系や問題に対してのみ適用されており、それは通常の数学の伝統の中にあるものであった。しかし、この本で私が試みているのは、もっと一般的なシステム、つまり、従来の数学では考えられなかったような、また、既存の数学的手段では到底アクセスできないようなシステムを探求するための基本的な方法として、コンピュータ実験を用いることだ。

フラクタル幾何学

最近まで、科学や数学で広く議論されてきたのは、ルール正しい形や滑らかな形だけであった。しかし、1970年代後半から始まったフラクタル幾何学の分野では、任意に入り組んだ断片を含む入れ子状の形状の重要性が強調され、そのような形状は自然界によく見られると主張された。本書では、そのような入れ子状の形状を作り出すシステムに相当数遭遇することになる。しかし、もっと複雑で、入れ子構造を持たない図形を作り出すシステムも多く見受けられる。

一般システム理論

一般システム理論は、特に1960年代に人気を博した理論で、主に要素の大きなネットワークを研究するもので、しばしば人間の組織を理想化するものであった。しかし、この本で私が使っているような手法が全くなかったため、明確な結論を導き出すことはほとんど不可能であった。

ナノテクノロジー

1990年代初頭から急速に発展してきたナノテクノロジーは、技術システムを原子スケールで実現することを目標としている。しかし、これまでのところ、ナノテクノロジーといえば、ごく身近な機械装置などを縮小することがほとんどであった。しかし、本書の発見は、もっと単純な構造でありながら、非常に高度なタスクを実行できるあらゆる種類のシステムが存在することを示している。そして、これらのシステムのいくつかは、多くの点で原子スケールでの直接実装に適していると思われる。

非線形力学

線形性を持つ数学方程式は、通常、解きやすいので、純粋科学や応用科学で広く使われてきた。非線形力学は、より複雑な方程式を解析する分野である。その最大の成果は、ソリトン方程式と呼ばれる、注意深く操作することで線形性と似た性質を持つ方程式を解析することにある。しかし、本書で取り上げるような系は、一般にもっと複雑な挙動を示し、そのような単純化された性質はない。

is

サイエンティフィック・コンピューティング。科学技術計算の分野では、伝統的な数学モデル(多くの場合、さまざまな種類の流体や固体のモデル)を取り上げ、数値近似スキームを使ってコンピュータ上に実装しようとすることに取り組んできた。一般に、かなり単純な現象以外は、使用した近似の影響から切り離すことは困難であった。本書で紹介するモデルは、計算機上に実装する際に近似を必要としないので、より複雑な現象を容易に認識することができる。

自己組織化

自然界では、無秩序で特徴のない系が、自発的に組織化され、明確な構造を作り出すことはよくあることだ。このような現象を理解しようとするのが、自己組織化という緩やかな分野である。しかし、ほとんどの場合、伝統的な数学的手法が用いられており、その結果、かなり単純な構造の形成についてしか調査することができなかった。しかし、本書の考え方を用いれば、より複雑な構造がどのように形成されるかを理解することが可能になる。

統計力学

統計力学と呼ばれる物理学の一分野は、約100年前に発展して以来、多数の気体分子などの成分からなる系の平均的な振る舞いを理解することを主な研究対象としてきた。このような系は、特定の事象において、複雑な振る舞いをすることが多い。しかし、統計力学は、多くの事象の平均を見ることで、そのような複雑さを回避することができる。しかし、現実の状況に対応するためには、いわゆる熱力学第二法則(エントロピー増大の原理)を利用しなければならないことが多い。しかし、この原理を理解することは、1世紀以上にわたって困難であった。しかし、本書で紹介する考え方によって、これらがようやく解決できる枠組みができたと考えている。

本書に書かれた科学の個人的な物語

本書で取り上げたような科学的な問題に私が本格的に興味を持ち始めたのは、1972年の夏、12歳の時であった。私は右の物理学の教科書を買い、その表紙に描かれているランダム化のプロセスに非常に興味を抱くようになった。しかし、その本に書かれている数学的な説明には到底納得がいかず、コンピュータを使って自分でシミュレーションしてみることにした。

しかし、当時私が持っていたコンピュータは、現代の基準からすると非常に原始的なものであった。そのため、本に書かれているプロセスを非常に単純化したものを勉強するほかはなかった。しかし、このような単純なものでは、私の望むような現象は得られないのではないかと、最初から考えてた。そして、プログラミングの努力の末に、この疑念は正しかったと確信することができた。

しかし、結局のところ、私が見たものは、本書で考察するシステムの主要な種類の一つである「セル・オートマトン」の特殊なケースであった。もし、私のシミュレーションをできるだけ物理的に現実的なものにしたいという私の願望から生じた技術的な問題がなければ、1974年の時点で、私はすでにこの本で説明する主要な現象のいくつかを発見していた可能性が高いのである。

しかし、私はその時、科学の最も基本的な分野であると思われる理論素粒子物理学に力を注ぐことにした。それから数年、私は素粒子物理学と宇宙論のいくつかの分野で大きな進展を遂げることができた。しかし、しばらくして私は、自分が遭遇している最も重要で基本的な問題の多くは、これらの分野の難解な細部とは全く無関係なものなのではないかと思うようになった。

そして実際、日常的な現象についても、関連する多くの疑問がまだ完全に解決されていないことに気がついたのである。たとえば、流体の乱れで見られる複雑な模様は、いったい何から生まれているのだろう?雪の結晶の複雑な模様はどのようにして作られるのか?植物や動物が複雑に成長する基本的なメカニズムは何だろう?

驚いたことに、このような疑問はほとんど研究されていないようであった。最初は、理論物理学で使ってきた高度な数学的手法を応用すれば、何か進展があるのではないかと思ってた。しかし、すぐに、私が研究している現象では、従来の数学的な結果を得ることは不可能ではないにしても、非常に困難であることが明らかになったのである。

では、どうすればいいのか。偶然にも、物理学の研究の成果として、私は1981年に大規模なソフトウェアシステムの開発を終えたところであった。少なくとも知的レベルでは、このプロジェクトで最も困難だったのは、このシステムのベースとなる記号言語を設計することであった。しかし、この言語を開発する中で、私が考え出したほんの数個の原始的な演算が、いかに膨大な数の高度な計算タスクをうまくカバーすることになるのかが、はっきりとわかってきたのである。

そこで、自然科学の分野でも同じようなことができるのではないか、自然現象をうまく捉えられるような適切なプリミティブがあるのではないかと考えたのである。当時の私の考えは、それほど明確ではなかったが、そのようなプリミティブを使って、私が興味を持っているさまざまな自然システムをシミュレートするコンピュータプログラムを構築する、ということを暗黙のうちに想像していたのだと思う。

そのようなシステムの個々の構成要素については、多くの場合、確立された数学的モデルがあった。しかし、それをシミュレーションの基礎として使うには、2つの現実的な問題が立ちはだかった。まず、モデルが非常に複雑で、現実的な計算機資源では、興味深い現象が起こるのに十分な数の構成要素を含めることが非常に困難だったのである。また、たとえ現象が見えたとしても、それが本当にモデルの結果なのか、それともモデルをコンピュータに実装する際の近似の結果なのかを判断することは、ほとんど不可能であった。

しかし、少なくとも私が研究したい現象の多くでは、個々の要素について可能な限り正確なモデルを使うことは重要ではないことに気づかされた。というのも、自然界には、構成要素の詳細があまり重要でないものが多く、例えば、空気でも水でも同じように複雑な流れのパターンが発生していることが分かっていたからである。そこで、現実的なモデルを細かく作るよりも、できるだけシンプルで、コンピュータのプログラムとして作りやすいモデルから作っていこうと考えた。

当初は、それがどのように機能するのか、どの程度複雑なプログラムが必要なのか、わからなかった。実際、いろいろな簡単なプログラムを見てみると、私が研究したいシステムのどれよりもはるかに単純な動作をしているように見えるものばかりであった。

しかし、1981年の夏、私は、ある種のプログラムがどのように振る舞うかを調べるという、かなり単純と思われるコンピューター実験を行った。私はこの実験にあまり大きな期待を寄せていなかった。しかし、実際には、この実験結果は非常に意外で劇的なもので、次第に理解できるようになると、私の科学観全体を変えざるを得なくなり、最終的には、現在この本で説明している新しい種類の科学の知的構造全体を発展させることになったのである。

右の図は、私が最初に行った実験の典型的な出力を再現したものである。グラフィックは原始的なものだが、そこに含まれる精巧なパターンは、これまで見たこともないものであった。最初は、これが正しいとは思えなかった。しかし、しばらくして、これは正しいと確信した。そして、非常に単純なプログラムからさえ、非常に複雑な振る舞いが生まれるという、驚くべき、予想外の現象の兆候を見たのだと気づいた。

しかし、これほど基本的なことが、どうして今まで気づかれなかったのだろう。文献を探し、いろいろな人に話を聞いてみると、私が研究しているものに似たシステムが、30年ほど前に「セルラー・オートマトン」と名づけられたことがわかった。しかし、私が行ったような実験を実際に行った人はいなかった。

しかし、私は、私が見た基本的な現象は、既知の科学的原理の明らかな帰結に違いないと思っていた。しかし、カオス理論やフラクタル幾何学の考え方が、ある特定の特徴を説明するのに役立っていることはわかったが、全体としてこの現象に近いものはこれまで研究されていなかったようである。

セル・オートマトンの挙動に関する私の初期の発見は、科学界にかなりの刺激を与えた。そして1980年代の半ばには、物理学、生物学、コンピュータサイエンス、数学など、さまざまな分野での応用が見られるようになったのである。そして実際、私が発見した現象のいくつかは、私が「複雑系理論」と呼ぶ新しい研究分野の基礎として使われ始めていたのである。

しかし、その間も私は、より基本的な疑問について調べ続け、1985年頃には、それまで私が見てきたものは、もっと劇的で根源的な何かのヒントに過ぎないということに気付き始めてた。しかし、それを理解するのは難しく、直感を大きく変えなければならない。

しかし、この先には知的好奇心を満たす素晴らしい機会が待っていることは確かである。そこで私が最初に考えたのは、学術界を組織して、このチャンスを生かそうということであった。そこで私は、研究センターと学術誌を立ち上げ、取り組むべき問題のリストを発表し、私が定義した方向性の重要性を伝えるべく懸命に努力した。

しかし、特に応用の可能性については、興奮が高まっていたにもかかわらず、従来の手法や直感から脱却することにほとんど成功していないように思えたのである。そしてしばらくして、劇的な進歩を遂げるには、私自身がそれを成し遂げなければならないことに気づいた。そこで私は、できる限りのツールとインフラを整え、自分がやるべきと思う研究をできるだけ効率的に進めることを決意した。

1980年代初頭、私にとっての最大の障害は、利用可能なさまざまな低レベルのツールを使ってコンピューター実験を行うことの現実的な難しさであった。しかし、1986年には、私が持っているいくつかの新しいアイデアを使えば、あらゆる種類の技術計算を行うための1つの一貫したシステムを構築することが可能であることに気づいてた。そして、このようなものは他には存在しそうになかったので、私はそれを構築することにした。

その結果生まれたのが Matheniatica である。

5年間、Matheniatica とその周辺にある会社の構築プロセスに私は没頭していた。しかし1991年になると、もう学者ではなく、成功した会社のCEOとして、この本で扱われているような問題の研究に戻ることができた。

そして Mathemalica を使っていろいろな新しい実験に挑戦し始めた.その結果、数ヶ月の間に、単純なプログラムが何をするのかについて、それまでの10年間をすべて合わせたよりも多くの新しい発見をすることができた。私の以前の研究は、予期しない非常に注目すべき現象の始まりを私に示していた。しかし、今、私は新しい実験から、これらの現象の完全な力と一般性を見ることができるようになった。

私の方法論と直感が向上するにつれて、発見のペースはさらに上がり、わずか2、3年の間に、私の単純なプログラムの世界の探求は、多くの伝統的な科学の分野が羨むほどの事実の量を蓄積するまでになったのである。

その過程で、私はかなり早い時期に、いくつかの一般的な原則を確立し始めていた。そして、研究を進めれば進めるほど、この原則が確認され、それがいかに強力で一般的なものであるかが分かってきた。

1980年代の初めに始めたときは、複雑性という現象を理解することだけが目標であった。しかし、1990年代半ばまでに、私はそれ以上のことを可能にする知的構造を構築し、実際、根本的に新しい種類の科学としか思えないものの基礎を提供することができるようになった。

この時期は、私にとって最もエキサイティングな時期であった。どこを向いても、手つかずの巨大な新分野があり、それを初めて探索することができたからである。それぞれに特徴がある。しかし、私が開発した全体的な枠組みを使えば、私が提起した最も明白な疑問と思われるものには、基本的にすべて答えられるようになった。

最初のうちは、既存の科学のどの分野にも特に中心的な位置を占めていなかった新しい問 題に、ほとんど関心を寄せてた。しかし、次第に、私が構築しようとしている新しい種類の科学は、既存の分野の基本的な問題に取り組むための根本的な新しい方法を提供するものでもあるはずだ、と思うようになったのである。

そこで私は、1994年頃から、従来の科学の主要な分野をそれぞれ体系的に調査し始めた。私は以前から、これらの分野の基本的な問題に関心を持ってた。しかし、普段は、それらの分野についての従来の常識のほとんどを信じる傾向があった。しかし、自分の新しい科学という文脈でこれらの分野を研究し始めると、従来の常識の大部分が正しくないという兆しが見え始めたのである。

典型的な問題は、従来の手法や直感では決して解決できなかった核心的な問題があり、その問題を避けるためにこの分野が発展してきたというものであった。しかし、私は何度も何度も、自分の新しい種類の科学で、突然、何世紀も答えが見つ からなかったような問題でも大きく進展し始めることに興奮を覚えた。

私が構築した全体的な枠組みを考えると、私が発見した事柄の多くは、最終的には驚くほど単純なものに思えた。しかし、そこに至るまでには、しばしば驚くべき量の科学的作業が必要であった。技術的なステップをいくつか踏むだけでは不十分なのである。むしろ、各分野において、真に本質的な特徴を見極めることができるよう、十分に広く深く理解することが必要だったのである。

そのためには、さまざまな分野の科学に触れる必要がある。しかし、私にとって最も重要だったのは、このプロセスが、私がこれまで数え切れないほど行ってきた設計に似ていたことだ。 数学は、精巧な技術的アイデアから出発し、徐々にその本質を捉えて驚くほどシンプルなものにする方法を見出す。そして,私が Mathematica で何度もこれを成功させてきたという事実が,科学のあらゆる分野で同様のことをやってみようという自信を私に与えてくれたのである。

私が最終的に到達した結論がこれまでになかったものであることが,振り返ってみるとほとんど奇異に思えることがよくある。しかし、それぞれの分野の歴史を調べてみると、多くの場合、私が開発した新種の 科学に登場した重要な方法論や直感が欠けていたために、その分野がいかに迷走してい たかがわかる。

1980年代の初めにセル・オートマトンについて最初の発見をしたとき、私は何か重要なこと の始まりを見たのだと思った。しかし、この発見が最終的にどれほど重要なものになるのか、私には想像もつかなかった。そして実際、この20年の間に、私は想像を超える発見をしてきた。そして、私が多大な労力を費やして築き上げた新しい種類の科学は、将来の知的発展にとって、これまで以上に中心的かつ重要な方向性を持っているように思われた。

シンプルなプログラムはどのように振る舞うのか?

重要な実験

科学における新しい方向性は、通常、ある中心的な観察または実験によって開始される。本書で述べるような科学にとって、これらは単純なプログラムの動作に関わるものである。

我々が日常的に使っているコンピュータのプログラムは、通常、非常に明確なタスクを実行するようにセットアップされている。しかし、20年近く前に私が思いついた重要なアイデアは、最終的にこの本で紹介する全く新しい種類の科学につながった。それは、代わりに、特定のタスクを念頭に置かずに作られた、任意に選ばれた単純なプログラムを見てみたらどうなるのか、というものであった。そのようなプログラムは通常どのように振る舞うのだろうか?

これまで理論科学の主流であった数学的手法は、このような問いにはあまり役に立たない。しかし、コンピュータを使えば、それを調べるための実験を簡単に始めることができる。というのも、可能性のある単純なプログラムのシーケンスを設定し、それらを実行して、どのように振る舞うかを見るだけでよいからである。

どんなプログラムも、あるレベルでは、各ステップで何をすべきかを指定するルールの集合から構成されていると考えることができる。このルールを設定する方法はたくさんあり、実際、この本の過程でかなりの数のルールを勉強することになる。セル・オートマトンは、私が1980年代の初めに研究した最初の単純なプログラムの一種である。

セル・オートマトンの重要な特徴は、その振る舞いを容易に視覚的に表現できることだ。下の図は、あるセル・オートマトンが10回のステップを経てどのような動作をするかを示している。

セル・オートマトンは、黒か白に着色されたセルが並んでいる。そして、各ステップで、あるセルの色を、そのセルとその直前のステップの左右の隣りのセルの色から決定する明確なルールがある。

この図のセル・オートマトンでは、下の図のように、あるセルが、前のステップでそのセルか隣のセルのいずれかが黒かった場合には、すべて黒にするというルールが定められている。

そして、ページの一番上にある図は、中央に黒いセルを1つ置くと、このルールに従って、黒で一様に埋め尽くされた単純な成長パターンになることを示している。しかし、このルールを少し変えるだけで、すぐに別のパターンを得ることができる。

最初の例として、前のステップで隣のセルが両方とも白だった場合、そのセルを白にするルールを適用するとどうなるかを、見開きのページの一番上にある絵に示している(たとえそのセル自体が前に黒だったとしても)。すると、黒一色のパターンではなく、市松模様のように黒と白が交互に繰り返されるパターンになる。

しかし、このパターンもまた、かなり単純である。少なくとも我々が考えているようなタイプのセル・オートマトンでは、どのようなルールを選んでも、常に極めて単純なパターンが得られると考えることができるだろう。しかし、ここで最初の驚きがある。

下の図は、先ほどと同じ種類のセル・オートマトンで、少し違うルールを適用した場合のパターンである。

【原文参照】

今度は、「左隣か右隣のどちらか一方が黒く、両方が黒くなければ黒くならない」というルールである。このルールも非常にシンプルであることは間違いない。しかし、この絵は、このルールが作り出すパターンがそれほど単純でないことを示している。

そして、下の図のように、セル・オートマトンのステップを増やしていくと、かなり複雑なパターンが浮かび上がってくる。しかし、このパターンは非常に明確なルール性を持っていることがわかる。複雑といっても、実際には、まったく同じ形をした三角形の断片がたくさん入れ子になっていることがわかるからだ。そして、図が示すように、これらの断片は、本質的にパターン全体の小さなコピーに過ぎず、さらに小さなコピーが非常にルール正しく内部に入れ子になっている。

つまり、これまで見てきた3つのセル・オートマトンから、最終的に得られるパターンはすべて非常にルール的なものである。少なくとも、これまで使ってきたような単純なルールを持つセル・オートマトンでは、この3つの動作形態がすべてだと考えてもよいだろう。

しかし、驚くべきことに、これは間違いであることが判明した。

下の絵はその例である。使用したルール(ルール30と呼ぶ)は、前と全く同じ種類のもので、次のように説明することができる。まず、各セルとその右隣を見る。前のステップで両方とも白だった場合、そのセルの新しい色を、その左隣りの前の色が何であれとする。そうでなければ、新しい色をその反対色とする。

この図は、1つの黒いセルから始めて、このルールを何度も適用するとどうなるかを示している。これは、私がこれまで行った中で最も驚くべき科学的発見である。セル・オートマトンは、我々が期待するような単純なルール正しいパターンを作り出すのではなく、極めて不ルールで複雑なパターンを作り出すのである。

しかし、この複雑さはどこから来るのだろうか?我々は、このシステムを構築する際に、複雑さを直接的に取り入れたわけではない。単純なセル・オートマトンのルールと、黒いセル1個という単純な初期条件からスタートさせただけだからだ。

しかし、この絵は、それにもかかわらず、出現する挙動が非常に複雑であることを示している。そして実際、ここで見たものは、私が本書で展開する新しい種類の科学のまさに核心となる、極めて一般的で基本的な現象の最初の例なのである。あるシステムの基本的なルールが単純で、システムが単純な初期条件から開始されるにもかかわらず、そのシステムが示す振る舞いは非常に複雑になり得るということだ。そして、この基本的な現象が、自然界に見られる複雑性の大部分を最終的に担っているのだと主張する。

次の2つのページでは、前ページの「ルール30」のセル・オートマトンの進化を段階的に示している。おそらく1000ステップも経てば、動作は最終的に単純なものに落ち着くだろうと思われたかもしれない。しかし、次の2ページの絵は、そのようなことは何も起こらないことを示している。

しかし、いくつかのルール性は見られる。例えば、左側には、明らかに斜めの帯がある。また、白い三角形やその他の小さな構造物が点在している。しかし、ルールが単純であれば、もっと多くのルール性があるはずである。そして、次の2ページの写真に何も写っていないのは、人間の視覚システムに何らかの不備があるのだろうと想像する人もいるかもしれない。

しかし、数学的、統計学的に最も洗練された分析手法でさえ、これほどうまくはいかないようだ。例えば、最初の黒いセルの直下にある色の順序を見ることができる。そして、例えばこの配列の最初の100万ステップでは、決して繰り返されることはなく、実際、私がこれまで行ったどのテストでも、完全なランダム性から意味のある逸脱はまったく見られなかった。

しかし、ある意味で、このような完全なランダム性には、ある種の単純さがある。というのも、ある特定のステップでどの色が発生するかを予測することは不可能でも、例えば黒と白が平均して常に同じ頻度で発生することは分かっているからである。

しかし、セル・オートマトンにはもっと複雑な振る舞いをするものがあり、そのような場合、平均値を予測することさえ非常に困難になる。次の数ページの写真は、かなり劇的な例である。ルールの基本形は前と同じである。しかし、今使用されている具体的なルール(ルール110と呼ぶ)は、そのセルとその二つの隣のセルの前の色がすべて同じか、左隣が黒でセルとその右隣が両方とも白の場合を除き、すべての場合にセルの新しい色を黒とするものである。

このルールで得られるパターンは、ルール性と不ルール性が顕著に混在している。多かれ少なかれ全体を通して、小さな白い三角形の配列が7ステップごとに繰り返される、非常にルール的な背景のテクスチャが存在する。そして、左端付近から、ちょうど80ステップの間隔で斜めのストライプが発生している。

しかし、右側では、そのルール性はかなり低くなっている。確かに、最初の数百ステップの間は、基本的にランダムに見える領域がある。しかし、最初のページの終わりには、この領域に残っているのは、かなり単純な繰り返しの構造の3つのコピーだけである。

しかし、次のページでは、左から斜めのストライプが来ることで、再び複雑な動作が始まる。そして、システムが進むにつれて、様々な明確な局所的構造が明らかにされていく。

最初のページの下部のように静止しているものもあれば、右へ左へと一定の速度で移動していくものもある。これらの構造は、それぞれ単体では非常にシンプルに動作する。しかし、写真にあるように、さまざまな相互作用によって、非常に複雑な効果を発揮することができる。

その結果、セル・オートマトンがどのような動きをするのか、おおよそでもよいから予測することが不可能になる。

生成された構造体は、やがて互いに消滅し、非常にルール的なパターンだけが残るのだろうか?それとも、もっともっと多くの構造が現れて、パターン全体がきわめて不ルールになるのだろうか?

このような疑問に答える唯一の確実な方法は、セル・オートマトンを必要なステップ数だけ走らせることだ。

上図のパターンのステップ数 連続する各ページには700のステップ数が表示される パターンはロフト上で永遠に広がり続けるが、各ページに収まる分だけが表示される。長い間、パターンの右側の部分がどのように見えるかは不明であったが、2780回の停止の後、かなり単純な* rcipcttitivxs構造oがマージされる Not© that to gonorato tho p<ctur “s that follow roquircis applying thu und^rtv,n9 collubr automaton rute for individual colls a total o1 about 12 million timos► (このように、パターンには、1つ1つのコルに対応するオートマトンのルートがある。

これを見てほしい。1つの構造が生き残り、その構造が左から来る周期的な縞模様と相互作用して、240ステップごとに繰り返される動作を生み出すのである。

単純なプログラムでは単純な動作しかできないと思っていても、この数ページの絵はその考えを永久に覆すだろう。そして実際、この絵で最も奇妙なのは、この絵を作るのに使われたセル・オートマトンのルールが単純であった痕跡が、最終的にほとんど見られないことだ。

たとえば、セル・オートマトンのすべての細胞がまったく同じルールに従っているということは、最後の数ページのような絵では、すべての細胞が明らかに同じことをしているはずだと考えるかもしれない。しかし、実際にはまったく異なることをしているように見えるのである。例えば、ある細胞は通常の背景の一部であり、他の細胞はある局所的な構造の一部である。このように、個々の細胞が同じルールに従っていても、色の並びが異なる細胞の構成によって、さまざまな種類の振る舞いをすることが可能なのである。

元のセル・オートマトンのルールだけでは、このようなことは現実的には予見できない。しかし、適切なコンピュータ実験を行うことで、実際に何が起こるかを簡単に知ることができる。そして、単純なプログラムに付随する驚くべき現象の新しい世界を探求するプロセスが始まるのである。

新しい直感の必要性

前節の絵は、非常に複雑な動作をさせるためには、非常に単純なルールが必要であることを端的に示している。しかし、最初はこのことを信じるのはほとんど不可能に思えるかもしれない。なぜなら、これは我々の最も基本的な直感に反しているからである。

{前の5ページの動作の一例。合計3200のステップが表示されている これはpc^je 30の絵の2倍以上であることに注意してほしい

というのも、我々は日常の経験から、複雑に見えるものは、複雑な方法で作られたに違いないと思っているからである。例えば、複雑な機械装置を見れば、その装置が作られた図面もそれに見合った複雑なものであるに違いないと考えるのが普通である。

しかし、前節末の結果は、少なくともそのような仮定が完全に間違っている場合があることを示している。というのも、我々が見たパターンは、事実上、非常に単純な計画に基づいて作られているからだ。それは、ただ1つの黒いセルから始めて、単純なセル・オートマトンルールを繰り返し適用するというものである。しかし、この計画から生み出されるものは、非常に複雑なレベルであることがわかる。

では、我々の通常の直感が働かないのはなぜだろうか?最も重要なポイントは、直感のほとんどが、物を作ったり、エンジニアリングをしたりした経験に由来していること、つまり、前節のようなシステムに遭遇しないようにするためであるように思われる。

通常、我々は得たい動作から出発し、それを実現するシステムを設計しようとする。しかし、これを確実に行うには、システムの挙動を容易に理解し、予測できるものに限定しなければならない。システムの挙動を予測できない限り、そのシステムが我々の望むとおりに動くかどうかを確かめることはできないからだ。

しかし、工学とは異なり、自然界にはそのような制約がない。つまり、前節の最後に述べたようなシステムが現れることを妨げるものは何もないのである。そして実際、この本の重要な結論の一つは、そのようなシステムは実は自然界に非常に多く存在するということだ。

しかし、我々が日常的に基本的なルールと全体の振る舞いの両方を意識するのは、物を作ったりエンジニアリングをしたりする場面だけなので、前節の終わりのようなシステムについて直感することは通常ないのである。

では、このようなシステムで起こる現象について、日常的な経験からヒントを得られるようなことはないのだろうか。最も近いのは、実用的なコンピュータの特徴を考えることだろう。

コンピュータは多くの複雑な作業をこなせることが分かっている。しかし、基本的なハードウェアのレベルでは、一般的なコンピュータは数十種類の単純な論理演算命令などを実行することができるに過ぎない。そして、そのような命令を大量に実行することによって、さまざまな複雑な振る舞いができることは、ある程度、セル・オートマトンに見られる現象に似ている。

しかし、重要な違いがある。コンピュータが実行する個々の機械語命令は非常に単純であっても、HYプログラムで定義されるそのような命令のシーケンスは長くて複雑である可能性があるからだ。実際、他の工学分野と同様に、ソフトウェア開発においても、コンピュータに何か複雑なことをさせるには、それに応じて複雑なプログラムを組む必要がある。

セル・オートマトンのようなシステムでは、基本的なルールはコンピュータの機械命令の大まかな類似品と考えることができ、初期条件はプログラムの大まかな類似品と考えることができる。しかし、前節で見たように、セルオートマトンでは、基本的なルールが単純であるばかりでなく、初期条件も例えば黒いセル1個からなる単純なものであっても、生成される動作は非常に複雑なものになり得るのである。

つまり、実用的なコンピュータは、前節で見たことの一部を示唆しているが、現象全体はもっと大きく、強いものなのである。そして、ある意味で最も不可解なのは、無から有を生み出すような現象であることだ。

我々が作ったセル・オートマトンは、どう考えても簡単に記述できるものである。しかし、実際に動かしてみると、単純な記述では説明できないような複雑なパターンが浮かび上がってきた。

このような基本的な現象を理解するために、何らかの直感を働かせることができるのではないかと期待する人もいるかもしれない。しかし、実際には、日常的な経験の中に、必要なものを提供する枝はないようだ。だから、まったく新しい直感を開発するしかないのである。

そのためには、多くの事例に触れることが唯一の合理的な方法である。これまで見てきたのは、セル・オートマトンの例ばかりである。しかし、これからの数章では、セル・オートマトンでも、他のいろいろなシステムでも、もっと多くの例を見ていくことになる。そして、これらの例を吸収することによって、最終的には、私が発見した基本的な現象が、ほとんど自明で必然的なものに思えるような直感を養うことができるのである。

なぜ今まで発見されなかったのか

本章の主要な成果である「単純なルールに基づくプログラムが非常に複雑な振る舞いをすることがある」というのは、あまりにも基本的なことなので、とっくの昔に発見されているに違いないと思われるかもしれない。しかし、そうではなかった。そうならなかった理由のいくつかを理解することは有益である。

科学の歴史を振り返ると、基礎科学の新しい分野を発展させるのは、結局のところ新しい技術であるということがよくある。例えば、望遠鏡の技術が近代天文学を、顕微鏡の技術が近代生物学をもたらした。そして今、同じように、コンピュータ技術が、本書で述べるような新しい種類の科学につながったのである。

実際、この章とそれに続くいくつかの章は、ある意味で、コンピュータを使ってできる最も簡単な実験の説明と見なすことができる。しかし、なぜこのような単純な実験がこれまで行われなかったのだろうか。

その理由の一つは、既存の科学や数学のどの分野でも主流ではなかったからにほかならない。しかし、より重要な理由は、伝統的な科学の標準的な直観では、その結果が興味深いものであると考える理由がなかったからである。

そして実際、もしそのような実験に価値があるとわかっていれば、コンピュータが存在するずっと以前から、多くの実験が実際に行われていたかもしれない。多少面倒ではあるが、セル・オートマトンのようなものの振る舞いを手作業で解明することは可能だからだ。しかも、そのためには、数学などの高度な知識はまったく必要なく、単純なルールを繰り返し適用する方法を理解するだけでよいのだ。

そして、このページの装飾美術の歴史的な例を見ると、多くのセル・オートマトンの動作が、何世紀、あるいは何千年も前に研究されていなかったと考える理由はほとんどないように思われる。そして、いつの日か、27ページのルール30のセル・オートマトンを使って作られたバビロニアの工芸品が発掘されるかもしれない。しかし、私はそうではないだろう。もし、27ページのような絵が古代にあったとしたら、科学は全く違った道を歩んでいただろうと思うからである。

古代の初期にも、単純な抽象的なルールで自然界の仕組みを再現できるかどうかという試みは行われていたと思われる。しかし、試されたのは標準的な幾何学と算術に関連したルールだけであった。天文学で見られるようなルール性を説明するには十分であるが、自然界に見られるような多くの現象を捉えることはできない。

そのためか、自然界の多くの側面は、人間の理解を超えていると考えるのが普通であった。しかし、1600年代後半、微積分をベースにした成功が、この考えをくつがえし始めた。なぜなら、微積分は、人間の思考によって作られた抽象的なルールを用いて、自然界のさまざまな現象を再現することに、ついに成功したからである。

しかし、その法則は、特殊な数式に基づいた、かなり高度なものであった。そして、その精巧さを見て、自然界の振る舞いを再現するのに、もっと単純なルールが役に立つことはほとんどないだろうという暗黙の確信が生まれ始めたのである。

1700年代から1800年代にかけて、数学的方程式に基づくルールを使って物理現象を解析することに、ますます成功するようになった。1900年代初頭の物理学で、数式を使った素晴らしい結果が出た後、自然界のあらゆる現象は、最終的に数式を使って説明できると、ほぼ万人が信じるようになった。

もちろん、そう簡単にはいかない現象もたくさんあったが、必要な計算さえすれば、いずれは数式で説明がつくと考えられていたのである。

1940年代以降、電子計算機が開発され、計算の幅が大きく広がった。しかし、残念なことに、実際に計算してみても、根本的な新発見はほとんど得られなかった。その結果、多くの人が、コンピュータは基礎科学の問題に本当の意味で貢献することはできない、と考えるようになり、場合によっては現在もそう考えている。

しかし、ここで重要なことは、コンピュータは単に数式の結果を導くだけのものではないということだ。そして、この章で見てきたように、ごく簡単なコンピュータ・プログラムの挙動を直接研究するだけでも、基本的な発見があるのだ。

今にして思えば、コンピュータの黎明期に、単純なプログラムを自然界のモデルとして使うという発想が生まれなかったことは、皮肉なことかもしれない。セル・オートマトンのようなシステムは、初期のコンピュータでは、数学の方程式よりもはるかに扱いやすかったはずだからだ。しかし、コンピュータの時間は高価なものであり、確立された数学的モデル以外のものに挑戦するリスクを冒す価値はないと考えられていた。

しかし、1970年代末になると、状況は一変し、大量のコンピュータ時間が簡単に手に入るようになった。そのおかげで、私は1981年にセル・オートマトンの実験を始めることができたのである。

先に述べたように、セル・オートマトンの研究には、コンピュータを使わなければならない原理はない。しかし、現実問題として、現代人がセル・オートマトンの絵を何枚も手描きで作成する根気があるとは考えにくい。27ページの絵を作るのに1時間、29ページの絵を作るのに数週間かかるからだ。

しかし、初期のメインフレームコンピュータでも、これらの絵のデータは、それぞれ数秒、数分のうちに生成することができたはずだ。しかし、重要なのは、1枚や2枚の写真を見ただけでは、この章で取り上げたような基本的な現象を発見することは非常に難しいということだ。実際、私がそれを行うには、相当数の異なるセル・オートマトンについて、かなり大規模なコンピュータ実験が必要であった。

もし、ある現象の基本的な性質がはっきりしているのであれば、かなり具体的な 実験をすることによって、より詳細なことがわかることも多いだろう。しかし、私の経験では、自分の知らない現象を見つけるには、非常に体系的で一般的な実験を行い、その結果をできるだけ先入観を持たずに見るしかないのである。セル・オートマトンの絵を1枚描くだけなら、コンピュータの基本的な技術で可能だが、大規模でシステマティックな実験を行うには、それ以上のものが必要なのである。

実際、私がセル・オートマトンについて発見したことの多くは、徐々に向上するコンピュータ技術を利用した結果、直接もたらされたものである。

例えば、第6章の冒頭で述べたランダムな初期条件を持つセル・オートマトンの分類法 は、高解像度のグラフィックス・ディスプレイで多数の異なるセル・オートマトンを 一緒に見たときに初めて発見したものである。同様に、初期の並列処理コンピュータで大規模なシミュレーションを行う過程で、ルール30(27ページ)のランダム性を発見したのである。さらに近年では,Mathematica で多数のコンピュータ実験を簡単にセットアップすることができるようになった結果,膨大な種類の新しい現象を発見することができた.

であるから、この章で述べたような発見が1980年代以前になされなかった主な理由の1つは,必要とされる種類の探索的な実験を行えるほど強力なコンピュータ技術がまだ存在していなかったからにほかならない.

しかし、このような実験を行うには、実用性だけでなく、そもそもそのような実験を行う価値があるという発想も必要であった。ここでまた、コンピューター技術が重要な役割を果たすことになる。というのも、コンピュータを使った実践的な経験から、必要な直感の多くを養うことができたからである。

たとえば、セルオートマトンのようなシステムは、離散的な細胞から構成されているので、自然界のリアルな形を再現することはできないだろうと想像していたかもしれない。しかし、コンピュータのディスプレイを見れば、そうでないことは明らかである。コンピュータのディスプレイも、セルオートマトンと同じように、ルール正しく並んだセル(画素)でできている。しかし、このようなディスプレイでは、たとえ画素数がかなり少なくても、かなりリアルな画像が得られることが、経験的にわかっている。

さらに重要な例として、セルオートマトンのプログラムは構造が単純であるため、その動作を予見することは容易であると想像されるかもしれない。しかし、実用的なコンピュータの経験から、簡単なプログラムであっても、その動作を予測することは非常に困難であることが分かっている。実際、そのためにプログラムのバグが多発している。もし、プログラムを見て、それが何をするかすぐにわかるのであれば、そのプログラムにバグがないことを確認するのは簡単なことだからだ。

バグを見つけるのが難しいというような概念は、科学の伝統的な考え方とは明白なつながりがないのだ。そのためか、コンピュータが使われるようになって数十年経っても、このような実用的なコンピュータの直感が基礎科学の世界に入り込むことは基本的になかったのである。ところが1981年、私は偶然にも、実用コンピュータと基礎科学の両方に長年深く関わってきたため、実用コンピュータから得たアイデアを基礎科学に応用できる、ほとんど唯一の立場にあったのである。

しかし、それにもかかわらず、セル・オートマトンに関する私の発見には、まだかなりの運が絡んでった。というのも、19ページで述べたように、私が最初に行ったセル・オートマトンの実験では、非常に単純な動作しか示さず、さらに実験を行うことが技術的に非常に簡単だったからこそ、私は粘り強く実験を続けることができたのである。

そして、セル・オートマトンの複雑さの最初の兆候を見た後も、この章で紹介するような例をすべて発見し、セル・オートマトンのような系でいかに簡単に複雑さを生み出すことができるかを理解するまで、さらに数年を要した。

このように時間がかかった理由のひとつは、より高度なコンピュータ技術を使った実験であったからである。しかし、それ以上に重要な理由は、新しい直観を開発する必要があったからである。そして、どの段階でも、伝統的な科学から得た直感は、私を間違った方向へ向かわせることになった。しかし、実用的なコンピュータから得た直感は、より良い結果をもたらすことが分かった。そして、時には誤解を招くこともあったが、最終的には私を正しい道へと導いてくれる、かなり重要なものだったのである。

このように、コンピュータ技術が1980年代に到達するずっと前に、この章の結果を発見することが困難であっただろうという理由は、全く異なる2つの理由がある。第一に、必要なコンピュータ実験が、試される可能性があるほど簡単にはできなかったこと。そして第二に、必要な計算に関する直感は、実用的な計算に広く触れることなしには、容易に身につけることができなかったのである。

しかし、この章の結果が判明した今、過去にさかのぼって、少なくとも多少なりとも発見されそうになった回数を確認することができる。

セル・オートマトンの2次元版は、生物系の理想化モデルとして、1950年代初頭にはすでに検討されていたことがわかった。しかし、私が1980年代に研究を始めるまで、セル・オートマトンに関する実際の研究は、かなり複雑なルールのセットを構築して、特定の種類の極めて単純な挙動を示すことを示すのが主なものだった。

セル・オートマトンでも複雑な振る舞いができるのではないかという疑問も時折出されたが、工学的な直感に基づけば、実質的な複雑さを得るためには、非常に複雑な基本ルールが必要であると一般には考えられてた。その結果、単純なルールのセルオートマトンを研究しようという発想は生まれず、本章で紹介するような実験が行われることはなかった。

しかし、他の分野では、単純なルールを効果的に用いた系がよく研究され、実際、複雑な挙動が見られることもあった。しかし、その意味を理解する枠組みがなければ、そのような振る舞いは全く無視されるか、あるいは特に基本的な意味を持たない一種の珍奇なものとして扱われる傾向があった。

実際、伝統的な数学の歴史のごく初期にさえ、複雑さという基本的な現象の兆候はすでにあったのである。2,000年以上も前から知られている一例は、素数の分布に関するものである(132ページ参照)。素数の生成ルールは単純だが、その分布は多くの点でランダムであるように見える。しかし、素数に関する数学的研究は、ほとんど例外なく、このランダムさではなく、むしろ分布における様々なルール性の存在を証明することに集中してきた。

複雑化現象のもう一つの初期の兆候は、n ^ 5.141592653 …(136ページ参照)のような数の桁行に見ることができたかもしれない。1700年代までに、100桁以上のnが計算され、それらは非常にランダムに見える。しかし、この事実は基本的に珍奇なものとして扱われ、計算*のような単純なルールが複雑な結果を生み出す一般的な現象が存在するかもしれないという考えは生まれなかったようだ。

1900年代初頭、数学のいくつかの分野で、数、列、幾何学的パターンに対して単純なルールが繰り返し適用された様々な明示的な例が構築された。そして、時には入れ子のような、あるいはフラクタルな振る舞いが見られるようになった。また、いくつかのケースでは、実質的にもっと複雑な動作も見られた。しかし、このような複雑な振る舞いは、実際の数学的作業には役立たない、娯楽的な興味しかないことを示すと見なされるのが普通であった。

1940年代に電子計算機が使われ始めると、複雑さの現象が見られる機会が多くなった。そして実際、今にして思えば、多くの科学的な計算において、重要な複雑さが生じていたのであろう。しかし、これらの計算は、ほとんどの場合、伝統的な数学的モデルに基づいており、これらのモデルを過去に分析しても複雑さは明らかにならなかったので、コンピュータの計算に複雑さがあったとしても、それはコンピュータで使われる近似の偽りの結果であると考えられがちであった。

1950年代に、ある種の複雑性が注目されたシステムの1つが、いわゆる反復写像である。しかし、149ページで述べるように、このような系の解析に用いられた従来の数学は、結局、ある特定の特徴のみに集中し、本章で発見された主要な現象は完全に見逃してしまったのである。

実用的な計算では、ランダムに見える数列を作り出すことがしばしば有効である。そして、1940年代から、そのような数列を生成する簡単な方法がいくつか発明された。しかし、これらの手続きは常に極めてアドホックに見えたためか、ランダム性と複雑性に関する一般的な結論はそこから導き出されることはなかった。

これと同じように、本章で取り上げたセル・オートマトンによく似たシステムが、1950年代後半に暗号に用いる乱数列を生成するために研究された。得られた成果はほとんどすべて軍事機密となっているが、本章で述べたような現象が発見されたとは思えない。

また、一般に、科学の本流という文脈の中では、それまで培われてきた標準的な直観によって、この章で取り上げたような非常に単純な種類のコンピュータプログラムの振る舞いを研究する価値があるとは誰も考えられなかった。しかし、主流派科学以外の分野では、このような研究が行われてた。例えば、1960年代に初期のコンピュータ愛好家たちが様々な単純なプログラムを走らせてみたところ、ある場合にはこれらのプログラムが入れ子のパターンを生成することに成功することがわかったのである。

そして1970年代初頭には、「ライフゲーム」と呼ばれる特定の2次元セル・オートマトンが、レクリエーション・コンピュータとして大きな関心を集めるようになった。このセル・オートマトンの挙動は、本章で取り上げるルール110セル・オートマトンに類似しているところがある。その挙動は、本章で取り上げるルール110のセル・オートマトンに似ているところがある。工学的に理想化された部品として使用できるような、十分に単純で予測可能な構造を見つけるために、多大な努力が払われた。そして、複雑な動作は見られるものの、一般的には厄介なものとして扱われ、可能な限り回避されることになった。

本章で取り上げるもっと単純な1次元のセル・オートマトンが研究されることなく、「生命のゲーム」の研究がこれほどまでに行われたことは、ある意味で驚くべきことだ。そして、少なくとも基礎科学とのつながりがなかったことが一因であることは間違いない。

しかし、理由はどうであれ、数世紀にわたって多くのヒントがあったにもかかわらず、本章で述べたような基本的な現象がこれまで発見されなかったという事実は変わらない。

一般的な新しい現象が確認されると、その証拠がすでにずっと以前からあったことがわかるというのは、科学の歴史上、珍しいことではない。しかし、重要なのは、一般的な現象を知ることから得られる枠組みがなければ、そうした証拠が無視されてきたことはほぼ必然であるということだ。

一時は予想外の結果で、多くのヒントを与えても見過ごされていたものが、やがてほとんど自明のことと思えるようになるのも、科学の進歩の皮肉なところである。そして、20年近くこの章の結果とともに生きてきた私にとって、今となっては、これ以外の方法で物事が進むとは到底思えないのである。しかし、この章で述べたような歴史は、他の多くの科学的発見の歴史と同様に、後に自明と思われることを見逃すことがいかに簡単であるかを、痛切に思い知らされることになるのである。

  • 一般的な機能の探索
  • 数学的機能
  • アトラクターという概念
  • 制約条件の充足問題
  • 植物や動物の成長
  • 宇宙の究極のモデル

しかし、日常の経験から、以下のことは明らかである。

【原文参照】

ユニバーサルセルラーオートマトンということは、確かに何世紀も前から知られてた。

想定される使用目的 ユークリッドの定理、117、勾配降下法、985、オズバス回転破壊、994 Stein, Paul R. (USA, 1924-1990)を参照。

一般的な機能の探索

シンプルなプログラムの世界

前章の冒頭で、単純なプログラムは通常何をするのか、という基本的な問いを投げかけた。この疑問に答える第一歩として、我々はセル・オートマトンと呼ばれるクラスのプログラムのいくつかの具体例を見てみた。

我々が見つけた基本的な動作の種類は、次のページの絵に描かれている。これらのうち最初のものは純粋な繰り返しで、非常に単純なパターンが形成されている。2枚目は、細部が複雑に入り組んでいるが、全体としては非常にルール正しい入れ子構造になっている。

しかし、3番目の絵では、もはやそのようなルール性は見られず、多くの点でランダムと思われる振る舞いが見られる。そして4枚目では、さらに複雑な挙動を示すようになり、複雑な方法で相互作用する精巧な局所的構造が生成されるようになった。

当初は、単純なプログラムがこれほど多様で複雑な振る舞いをすることなどあり得ないと思っていた。しかし、このような例を目の当たりにした今、問題は、それらがどの程度典型的な弧を描いているかということになる。このような振る舞いをするのは、非常に特殊な基本ルールを持つセル・オートマトンだけなのだろうか?それとも、実際にはあらゆる種類の単純なプログラムに共通するものなのだろうか?

この章での私の目的は、様々な種類のプログラムを見て、この問いに答えることだ。ある意味で、私のアプローチは博物学者のように、単純なプログラムの世界に存在する様々な形態を探求し研究することだ。

私は、より一般的なセル・オートマトンを考えることから始め、次に、前章のセル・オートマトンの中の黒細胞と白細胞の配列からさらに離れた基本構造を持つ、他の種類のプログラムを次々に考えていく。

そして分かったことは、どのような基本ルールを使っても、出てくる動作は、すでにセル・オートマトンで見た基本的な例と驚くほど似ているということだ。

単純なプログラムの世界では、全体的な動作の種類に大きな普遍性があるようだ。このことは、ある意味で、私が本書で述べるような首尾一貫した新しい科学を構築し、それを用いて、多くの現象を、それが発生するシステムの詳細とは無関係に解明することを可能にしているのである。

セル・オートマトン

下の写真は、見開きのページにある4つのセル・オートマトンで使われているルールである。このルールの全体的な構造はどれも同じで、異なるのは、あるセルとその隣の2つのセルが持つ前の色の組み合わせの可能性に対して、新しい色を具体的に選択することだ。

その結果、合計256通りの選択が可能になった。私のセル・オートマトンの原点に立ち返り、下の絵のように0から255までの番号をつけることができる。

さて、このように様々なルールを持ったセル・オートマトンはどのように振る舞うのだろうか?次のページではいくつかの例を詳しく紹介し、次の2ページでは256通りあるすべてのケースで何が起きるかを紹介する。

最初は、見るものの多様さに少し圧倒される。しかし、よくよく調べてみると、明確なテーマが浮かび上がってくる。

最も単純なケースでは、セル・オートマトンのすべてのセルが、1ステップの後に同じ色になるだけのことだ。例えば、ルール0と128では、すべてのセルが白になり、ルール255では、すべてのセルが黒になる。また、7や127のように、すべてのセルが黒と白に交互に変化するルールもある。

しかし、最後の数ページに示したルールの中で最もよく見られるのは、1つのセルまたは小さなセルのグループからなるパターンが持続する動作である。このパターンは、ルール4や123のように静止していることもある。しかし、ルール2やルール103のように、左右に移動する場合もある。

ここで取り上げたセル・オートマトンの基本構造から、このような運動の最大速度は、1ステップにつき1個のセルでなければならないことがわかった。しかし、3や103のようなルールでは、平均して一歩あたり1セルしか動いていないのである。

最後の数ページに示したセル・オートマトンの約3分の2は、生成されるパターンが一定の大きさのままである。しかし、3分の1ほどは、パターンが永遠に成長し続ける。このような成長するパターンのうち、最も単純なものは、ルール50やルール109に見られるような純粋に繰り返しのパターンである。しかし、繰り返しのパターンが最も多いのはわずかな差で、全体の約14%のセル・オートマトンでは、より複雑なパターンが得られている。

その代表的なものが、次ページに示すような入れ子パターンである。このような入れ子パターンは全部で24ルールあるが、基本的に3つしかないことがわかった。最も単純で、最も一般的なのは、ルール22とルール60に例示されるものである。しかし、次ページの絵が示すように、他の入れ子型も可能である。|ルール225の場合、パターン全体の幅は一定の割合で大きくなるのではなく、平均してステップ数の平方根に比例する)。

4 2つの原子と最近接を持つ256通りのセル・オートマトンの動作 このケースでは、30段階の解が示されている。なお、いくつかのルールは、左と右、または黒の矢印の交換だけで関連している(例:ルール2と16、ルール126と129})。このような遺跡は、88の基本的な法則がある。

繰り返しと入れ子は、多くのセルオートマトンにおいて広く見られるテーマである。しかし、前章で見たように、セル・オートマトンは多くの点でランダムと思われるパターンを生成することも可能である。ここで取り上げた256個のルールのうち、10個がそのようなランダム性を持つことがわかった。基本的な形は3つあり、見開きのページに図が示されている。

見かけ上ランダムなパターンを作るセル・オートマトンの例。それぞれ1個のマック細胞から始まる100段階の進化が示されている。

【原文参照】

ランダム性だけでなく、前章の最後の例として、ルール正しい部分と不ルールな部分が複雑に混在した挙動になるセル・オートマトン、rule 110を紹介した。このような振る舞いが見られる4つのケースのうち、左と右、あるいは黒と白の役割を入れ替えるだけで、すべてのケースが等価になるのだ。

では、もっと複雑なセル・オートマトンルールはどうだろうか?

これまで述べてきた256個の「初歩的」なルールは、最も単純なルールであり、私が最初に研究したルールでもある。しかし、例えば、2色だけでなく3色を使って、白黒だけでなく灰色にもできるようなルールも考えられる。このようなルールは、全部で7,625,597,484,987個と膨大な数になるが、「総則的」と呼ばれるものだけを考えれば、かなり扱いやすい数になるのである。

総体的なルールとは、各セルの新しい色を、個々のセルの色ではなく、隣接するセルの平均色にのみ依存するとみなすものである。下の絵はその一例である。各セルの色が3色であれば、2187通りの総体的なルールがあり、各ルールは図のようにコード番号で識別できるのが便利である。見開きのページには、そのようなルールの代表的な並びが示されている。

2色ではなく3色にすることで、より複雑な動作が得られると予想されるかもしれない。

しかし、実は前のページで見た動作は、すでに数ページ前に多くの初等的なセル・オートマトンで見たものと変わらない。基本的なルールが複雑になっても、全体の動作がそれほど複雑にはならないようだ。

つまり、少なくともある点を超えると、システムの基本的なルールを複雑にしても、最終的には全体の振る舞いがより複雑になるわけではない、ということだ。例えば、セル・オートマトンの場合、最も複雑な振る舞いを生み出すのに必要な基本的な要素は、すべて初歩的なルールの中にすでに存在しているようなのだ。

より複雑なルールを用いることは、例えば、特定の自然システムの細部を再現したい場合には便利かもしれないが、根本的に新しい機能を追加することにはならないのである。実際、前ページの絵を見ても、セル・オートマトンの基本的な仕組みと全く同じである。下の図のように、ある大きさになると永遠に繰り返すパターン、上の図のように、成長し続けるが繰り返しのパターン、下の図のように、入れ子のパターンやフラクタルパターンを作るパターンなどがある。

細かいことを言えば、初歩的なルールよりも複雑なパターンがあることは間違いない。しかし、全体の動作というレベルでは、根本的な違いはない。また、ネストされたパターンの場合、具体的に見られる構造も、通常、初歩的なルールと同じである。したがって、例えば、コード237と948の構造が最も一般的で、次いでコード1749の構造である。初歩的なルールで見られない新しい構造は、コード420のものだけであるが、これは非常に稀である。

3色全集型セルオートマトンの約85%は、最終的に極めてルール正しい振る舞いをする。しかし、初等的なセル・オートマトンと同じように、いくつかのルールでは、多くの点でランダムと思われる動作が得られることがある。見開きのページに、その例をいくつか挙げている。

かなり均一なランダムな振る舞いの他に、初等的なルール110と同様に、複雑な方法で相互作用する明確な構造が生成されるケースもある。次ページにいくつかの例を示す。最初の例では、約150ステップでパターンが繰り返される。しかし、他の2つのケースでは、最終的に何が起こるかは、あまり明確ではない。次のページでは、これらのパターンを3000ステップ分続ける。しかし、これだけのステップを経ても、最終的にどのような動作になるかは、まったく不明である。

このような絵を見ていると、とても単純なセル・オートマトンのルールに従っただけで生成されたとは、まず思えない。また、そのように考えても、この絵はセル・オートマトンの特別な性質によるものだと思いがちである。

実際、セル・オートマトンには複雑性が広く存在するから、私が最初に研究しようと決めたシステムがセル・オートマトンであったのは幸運なことであった。

しかし、この章の後で見るように、前章で発見した基本的な現象は、決してセル・オートマトンに限ったことではない。セル・オートマトンはその最たる例だが、全く異なる様々な系が、結局は極めて似たような振る舞いをすることが分かってくる。

ルール性と「ルール性」が混在している3ークスのトタテックのルールと、高次のオズルプV&の振る舞いの例。高次のルール性の部分は、32ページのルール110で見たものと同様である。

下の写真は、全体論的なセル・オートマトンの成長パターンが、少なくとも最初は非常に複雑に見えるものである。しかし、わずか100ステップほどで、4つのパターンのうち3つは単純な形に解決してしまうことがわかる。

しかし、残りの1つは、もっと複雑なパターンになっている。次ページに示すように、数千ステップの間、多少不ルールではあるが、単純に成長していく。しかし、その後、その成長は緩やかになっていく。そして、パターンの内部で部品が枯れ始める。しかし、その後も時折、爆発的に成長することがある。しかし、最終的には8282ステップを経て、31個の単純な繰り返し構造に分解される。

しかし、いずれの場合も、最終的な結果がどうなるかは不明である。

モバイルオートマトン

セル・オートマトンの特徴のひとつは、進化するたびに、すべてのセルの色が並行して更新されることだ。

しかし、この特徴は、発生する全体的な振る舞いを決定する上で、どの程度重要なのだろうか?この問いに答えるために、ここでは「モバイルオートマトン」と呼ぶ一群のシステムを考察する。

モバイル・オートマトンはセル・オートマトンに似ているが、すべてのセルを並列に更新するのではなく、各ステップで更新される「アクティブ・セル」を1つだけ持ち、そのアクティブ・セルがあるステップから次のステップへどう移動するかを規定するルールを持っているのが特徴である。

下図はモバイルオートマトンの例である。アクティブセルは黒い点で示されている。ルールは、このアクティブなセルにのみ適用される。このルールは、アクティブなセルとそのすぐ隣のセルの色を見て、アクティブなセルの新しい色を指定し、アクティブなセルが左か右に動くかどうかを指定する。

セル・オートマトンと同じように、この種のルールをすべて列挙すると、65,536通りあることがわかる。次のページの上の図は、このようなルールで得られる典型的な動作である。(a)と(b)の場合、アクティブなセルは小さな領域に留まっており、動作は非常に単純で繰り返しが多い。ケース|c|から《f》は、パターン全体が系統的に右にシフトしていること以外は同様であり、ケース《el》と《f》では縞模様の列が残っている。

しかし、65,536個の可能なルールのうち218個のルールでは、上記の(g)と(h)のように多少異なる挙動を示す。これらの場合、アクティブなセルは厳密に反復して動くのではなく、前後に掃くように動き、毎回徐々に遠くへ行く。

しかし、全体としては非常に単純なパターンが生成される。そして実際、以下の圧縮された形では、純粋に反復的である。

このようなルールを持つ移動オートマトンは、これまで65,536通りあるが、これほど複雑な振る舞いをするものは1つもないことがわかった。では、このような振る舞いはモバイル・オートマトンにはありえないのだろうか?

アクティブなセル自身の色だけでなく、そのすぐ隣のセルの色もステップごとに更新できるようにすれば、考えられるルールを拡張することができる。この拡張により、4,294,967,296通りのルールが考えられるようになる。

これらのルールを無作為に抽出すると、99%以上は単純な繰り返し動作に過ぎないことがわかる。しかし、数千のルールに一度だけ、以下のような、純粋な繰り返しではなく、一種の入れ子構造を持つ動作が見られる。

それでも、全体のパターンは非常にルール的である。しかし、おそらく5万個のルールを探した後、最終的に以下のようなルールに出会う。このルールでは、圧縮されたパターンが、ルール30のようなセル・オートマトンに見られるような、見かけ上のランダム性を非常によく表している。

しかし、上の図でアクティブセルが残した最終的なパターンは多くの点で不ルールに見えるが、アクティブセルの動き自体は極めてルール的である。では、アクティブセルの動きも一見ランダムに見えるようなモバイルオートマトンはあるのだろうか?私は最初、そんなものはないだろうと思っていた。しかし、数百万通りのルールを検索した結果、ようやく表題のような例を見つけることができた。

モバイルオートマトンは、一度に1つのセルしか更新しないにもかかわらず、非常に複雑な振る舞いをする可能性があるのだ。しかし、セル・オートマトンではこのような振る舞いはよく見られるが、モバイル・オートマトンではむしろ稀であることが本節で分かった。

この違いの原因を知るには、普通のモバイル・オートマトンとセル・オートマトンの間をある意味で補間する、一般化モバイル・オートマトンというクラスを研究すればよいのである。

一般化されたモバイルオートマトンの基本的な考え方は、一度に複数のセルが活動できるようにすることだ。そして、ある状況下では、アクティブなセルが2つに分裂したり、完全に消滅したりするような基本的なルールが設定されているのが一般的である。

したがって、例えば下の図では、数ステップごとに新しいアクティブなセルが生成されることになる。

一般化された移動オートマトンをランダムに選ぶと、見開きのページの最初の数枚に示すように、ほとんどのものが単純な振る舞いをするようになる。しかし、全体の数パーセントのケースでは、動作がもっと複雑になる。多くの場合、アクティブなセルの配置はまだ極めてルール的であるが、そうでない場合もある。

しかし、多くの例を見ていると、あるテーマが浮かび上がってくる。複雑な振る舞いは、多数の細胞が同時に活動するとき以外にはほとんど起こらないのだ。実際、全体の活動量と複雑な行動の起こりやすさには、大きな相関関係があるようである。このことが、モバイルオートマトンよりもセルラーオートマトンの方が複雑な振る舞いが多い理由の一つである。

チューリングマシン

計算機の歴史において、初めて広く理解されるようになった理論的なコンピュータプログラムは、現在TUringマシンと呼ばれる一群のシステム上に構築されたものである。

チューリング機械は、「テープ」と呼ばれる一連のセルと、「ヘッド」と呼ばれる1つのアクティブなセルから構成される点で、モバイルオートマトンと類似している。しかし、移動オートマトンとは異なり、チューリング・マシンのヘッドはいくつかの可能な状態を持つことができ、下の図のようにいくつかの可能な矢印の方向で表される。

さらに、チューリング機械のルールは、頭の状態と、頭の位置にあるセルの色に依存することができるが、隣接するセルの色には依存しない。

チューリング機械は、現在でも理論計算機科学で広く使われている。しかし、ほとんどの場合、特定のタスクを実行するために、膨大な数の可能な状態と各セルの可能な色を持つ例を構築することが想像される。

しかし、実際には、各セルに2つの状態と2つの色しかない非自明なチューリング機械が存在する。見開きのページにある写真は、この種の4096台の機械の例である。繰り返しの動作と入れ子の動作の両方が見られるが、これ以上複雑なものは見つかっていない。

しかし、モバイル・オートマトンの経験から、もっと複雑な動作をするチューリング・マシンが存在するはずである。

頭部が3つの状態であれば、約300万通りのチューリング機械が考えられる。しかし、次ページの (a| と |h) のように、細部では少し複雑に見える振る舞いをするものもあるが、最終的にはすべて、少なくともすべてのセルを白で開始した場合には、単なる繰り返しか入れ子のパターンをもたらすことが判明する。

しかし、4つの状態であれば、より複雑な動作がすぐに可能になる。実際、この種のルールの100万分の5程度で、次の2ページの絵のように、多くの点でランダムに見える特徴を持つパターンを得ることができる。

では、頭の状態を4つ以上許すとどうなるのだろうか?その結果、見られる動作にはほとんど変化がないことがわかった。見かけ上のランダム性は若干高くなるが、それ以外は基本的に同じ結果である。

繰り返しになるが、複雑な振る舞いをするための閾値があり、それは少なくとも4つの状態を持つや否や到達するようだ。セル・オートマトンの場合と同じように、基本的なルールをさらに複雑にしたとしても、最終的にそれ以上複雑な動作が得られるわけではない。

置換システム

セルオートマトン、モバイルオートマトン、チューリングマシンに共通する特徴の一つは、最下層が固定されたセルの配列で構成されていることだ。つまり、セルの色はさまざまなルールに従って更新されるが、セルの数と構成は常に同じである。

しかし、置換システムは、要素の数が変化するように設定されている。下図のような場合、黒や白といった色のついた要素の列があり、各ステップごとに新しい要素のブロックに置き換わっていく。

このような単純なケースでは、特定の色の要素は、隣接する要素の色に関係なく、一定の新しい要素のブロックに置き換えられることがルールとして指定されている。

このようなルールでは、要素の総数が非常に多くなり、上のような絵はすぐに扱いにくくなってしまう。しかし、少なくともこの種のルールでは、各ステップを、すべての要素を同じ大きさに描かれた要素の列に置き換えるのではなく、各要素をより小さく描いたいくつかの要素に分割すると考えることで、より明確な絵を描くことができる。

見開きのページでは、まず1つの要素を横長のボックスで表現している。次に、置換システムのルールによって、各ボックスをより短いボックスの連続にどのように細分化すべきかが、連続したステップで指定される。

次のページの上にある絵は、さらにいくつかの例を示している。このように、どのような場合でも、パターンには明らかなルール性があることがわかる。実際、注意深く見ると、どのパターンも、同じものが入れ子になっているだけの集合体であることがわかる。

そして、これは驚くべきことではないのだ。なぜなら、これらの置換システムの基本ルールは、特定の色の要素が現れると、必ず同じように細分化されることを規定しているからである。

要素を箱としてではなく、木の枝として表現すると、入れ子構造はさらに明確になる。この設定では、木の幹から始めて、各ステップで置換システムのルールを使用して、すべての枝がどのように小さな枝に分割されるべきかを決定することだ。

そしてポイントは、ルールは特定の枝の色にのみ依存し、隣接する枝の色には依存しないので、同じ色のすべての枝から生成される部分木は、下の写真のようにまったく同じ構造でなければならないということだ。

したがって、単純な入れ子よりも複雑な動作を得るためには、ルールが単一の要素の色だけでなく、その隣接する少なくとも1つの要素の色にも依存する置換システムを考慮する必要があることになる。下の図は、ある要素を置き換えるルールが、その要素自身の色だけでなく、そのすぐ右側にある要素の色にも依存する例である。

最初の例では、まだ単純な入れ子構造のパターンが得られている。しかし、2番目の例では、動作がより複雑になり、明らかな入れ子構造も見られない。

しかし、どちらの例でも、要素の総数がある段階から次の段階へと減少することがないのが一つの特徴である。これは、使用した基本ルールが、すべての要素を少なくとも1つの新しい要素で置き換えることを指定しているためである。

しかし,単純に要素が消滅するような置換系を考えることも可能である.このような消滅の割合が大きすぎると、ほとんどのパターンがすぐに消滅してしまう。また、消失の割合が少なすぎると、ほとんどのパターンが非常に急速に成長することになる。

しかし、要素の生成と消滅がほぼ完全にバランスしているごく一部のルールが常に存在する。

上の図はその一例である。この例では、要素の数は最終的に増加するが、各ステップで一定の量だけである。そして、このようにゆっくりとした増加であれば、82ページの置換系の最初の絵と同じように、各要素を同じ大きさの箱で表すことができるのである。

しかし、こうして見ると、上の置換系のパターンは、単純な繰り返しであることがわかる。そして、同じようなルールを持つ置換系の中で、成長が遅いものは、すべてこのような単純な繰り返しパターンしか作らないようである。

このことを知ると、置換系では、セル・オートマトンのような複雑な系は作れないと結論づけることができるかもしれない。しかし、モバイル・オートマトンやチューリング・マシンの場合と同じように、我々はまたしても間違っている。実際、見開きのページにある絵が示すように、要素に2色だけでなく3色や4色を持たせることで、より複雑な振る舞いが直ちに可能になるのである。

結局のところ、最初に示した置換システムは、ほとんどセル・オートマトンのように動作する。実際、右側の端から離れると、すべての要素は、あたかもルール的なグリッドに横たわっているかのように効果的に動作し、各要素の色は、そのクレメントとそのすぐ右側の要素の前の色にのみ依存する。

2 番目に示した置換システムにも、ルール的なグリッド構造を示すパッチがある。しかし、これらのパッチの間には、要素が生成されたり破壊されたりする領域がある。また、他の置換系では、全体的に要素の生成と破壊が行われており、単純な格子構造の痕跡は残っていない。つまり、最終的に得られるパターンは、セル・オートマトンのようなシステムで見られるものと同じように、ランダムなものになるのである。

順次置換システム

本章でこれまで述べてきたシステムは、どれも我々が実際に使っているコンピュータ・プログラムのようには見えないかもしれない。しかし、例えば標準的なテキストエディタと本質的に同じように動作する置換システムのバリエーションが存在することが判明した。

この対応を理解するための最初のステップは、置換システムを色のついた要素の列ではなく、要素や文字の文字列に対して操作していると考えることだ。したがって、たとえば、あるステップにおける置換システムの状態は、ABBBABA という文字列で表すことができ、A は白い要素に、B は黒い要素に対応する。

前のセクションで説明した置換システムは、このような文字列の各要素を新しい要素のシーケンスで置き換えることで動作するため、ある意味でこれらのシステムは、各ステップで文字列に存在するすべての要素に対して並行して動作することになる。

この場合、文字列を左から右にスキャンして、特定の要素の並びを探し、最初に見つかったその並びに対して置換を実行するという考え方がある。この設定は、一般的なテキストエディタの検索・置換機能に直接的に類似している。

下の図は逐次置換システムの例で、各ステップで最初に見つかったBAという形式の配列をABAという配列に置き換えるというルールを単純に指定しているものである。

この場合の動作は非常に単純で、各ステップで同じ形式の長い文字列がどんどん生成される。しかし、1つ以上の置き換えが可能なルールを用いると、より複雑な動作が得られる。この場合のアイデアは、各ステップで文字列を繰り返しスキャンし、連続したスキャンで連続した置換を試し、使用できる置換が見つかったらすぐに停止することだ。

次ページの図は、ルール {ABA -* AAB, A -” を持つ逐次置換システムを示している。ABA)の2つの置換候補を含む。最初に与えられた文字列にはABAという配列があるので、最初のステップでは最初の置き換えが使われる。しかし、第2段階で生成される文字列BAABはABAを含まないので、今度は最初の置換を使うことができない。しかし、この文字列には1つの要素Aが含まれているので、2番目の置換はまだ使用できる。

しかし、このように異なる置換が交互に行われるにもかかわらず、最終的に現れるパターンは非常にルール的である。実際、もし2つの置換と2つの要素しか許されないとしたら、それは非常にルール的である。

となると、どのルールも上の図よりずっと複雑な振る舞いをすることはないようだ。

このことから,逐次的な置換システムでは,実質的に複雑な振る舞いは決して生まれないと結論づけられるかもしれない.しかし,他の多くの種類のシステムで複雑さが見られるようになったので,逐次的代入システムでも複雑さが得られるはずだと考えるようになるかもしれない.

そして、もし2つ以上の置換を許容するならば、より複雑な振る舞いを直ちに得ることができることが判明したのである。見開きのページにある写真は、その例である。多くの場合、かなりルール的な繰り返しパターンや入れ子パターンがまだ生成されている。

しかし、ランダムに選択された1万個のルールのうち、1個程度は、かなり異なった挙動が得られている。実際、次のページの絵が示すように、セル・オートマトンや他のシステムで見られるパターンと同じように、多くの点でランダムと思われるパターンが生成されることがある。

このように、非常に基本的なテキストエディタであっても、簡単な操作を行うだけで、非常に複雑な振る舞いをすることが可能であるという、驚くべき結論が導き出された。

タグシステム

この章の目的の一つは、システムの基本的な構造がいかに単純であっても、システム全体としては複雑な振る舞いをすることができるかを見つけ出すことだ。ここでは、特に単純な構造を持つシステムの一例として、タグシステムとして知られるものを取り上げる。

タグシステムとは、白か黒かで色分けされた一連の要素からなるシステムである。このシステムのルールは、各ステップで、一定の数の要素をシーケンスの先頭から削除することを指定する。そして、これらの要素の色に応じて、いくつかの可能なブロックのうちの1つが、シーケンスの最後にタグ付けされる。

下の写真は、各ステップで1つの要素だけが削除されるタグシステムの例である。このようなシステムでは、すでに、やや複雑に見える動作が見られることがある。

しかし、実際には、各ステップで1つの要素だけが削除される場合、タグシステムは常に実質的に、83ページで説明したような近傍独立置換システムのスローバージョンと同じように動作することが判明している。その結果、タグシステムが生成するパターンは、最終的に単純な繰り返しか入れ子になった形にならざるを得ない。

しかし、もし各ステップで2つの要素が取り除かれるなら、これはもはや真実ではない。この場合、次ページの写真が示すように、非常に複雑な動作になることが多い。

サイクリック・タグ・システム

前項で説明したタグシステムの基本的な動作は、極めてシンプルである。しかし、少し設定を変えるだけで、ある意味でもっと単純な動作のシステムを構築できることがわかった。通常のタグシステムでは、各ステップで追加されるブロックが複数の候補の中からどれになるかは、あらかじめわからない。しかし、巡回型タグシステムでは、各ステップで追加されるブロックがどのようなものであるかを、基本的なルールとしてあらかじめ指定しておくことができるのである。

最も単純なケースでは、2つのブロックがあり、ルールはこれらのブロックを連続したステップで交互に追加し、そのステップのシーケンスの最初の要素が黒であるときに、特定のステップでブロックを追加するだけである。下図はその例である。

次のページでは、いくつかの循環タグシステムの例を示す。a!とlb)では、単純な動作が得られている。(c)の場合は、動作が少し複雑になるが、パターンを適切に見れば、83ページに示した3番目の近傍独立置換システムと同じ入れ子形式であることがわかる。

では、(d|)と(e|)の場合はどうだろうか。どちらも、連続したステップで得られる配列は、平均してだんだん長くなっていく。しかし、次ページのプロットのように、この成長の揺らぎに注目すると、この揺らぎは多くの点でランダムであることがわかる。

レジスタマシン

本章でこれまで述べてきた様々な種類のシステムは、いずれも実用的なコンピュータに容易に実装することができる。しかし、基本的なレベルでは、どれも一般的なコンピュータとあまり変わらない動作をする。しかし、レジスターマシンは、現在のコンピュータを非常に単純に理想化したものとして特別に設計されている。

我々が普段使っているコンピュータのハードウェア構造は、何層ものソフトウェアによって隠されていることがほとんどである。しかし、一般的なコンピュータのCPUは、最も低いレベルでは、数字を記憶するレジスタを持っており、我々が書くプログラムは、最終的には、このレジスタに対して行う操作を指定する単純な命令の列に変換される。

実用的なコンピュータのほとんどは、かなりの数のレジスタを持ち、おそらく数十種類の命令をサポートしている。しかし、単純な理想化として、2つのレジスタ(それぞれ任意の大きさの数を格納)と2種類の命令しか持たないレジスタマシンを考えることができる。「インクリメント」と「デクリメントジャンプ」である。このようなレジスタマシンのルールは、実用的なプログラムの理想化であり、順番に実行される固定的な命令列から構成されると考えることができる。

インクリメント命令は、特定のレジスタに格納されている数値を1つ増やすだけの命令として設定されている。一方、デクリメントジャンプ命令は、2つのことを行う。1つは、特定のレジスタに格納されている数値を1つ減らすこと。しかし、そのまま次の命令を実行するのではなく、プログラム中のある特定の場所にジャンプし、そこから再び実行を開始する。

ただし、レジスタの数値は負にならないことが前提なので、すでに0になっているレジスタをデクリメントすることはできない。そこで、デクリメントジャンプ命令は、ゼロを含むレジスタに適用された場合、基本的に何もせず、そのレジスタをそのままにして、プログラムの次の命令を実行するように設定されている。

このデクリメントジャンプ命令の特徴は、細かいことのように思えるかもしれないが、実は非常に重要なことだ。

このような設定により、上の写真は、2つのレジスタを持つレジスタマシンの非常に単純な3つの例である。それぞれのマシンのプログラムは上部に示されており、►はインクリメント命令、” はデクリメントジャンプを表している。各マシンの進化における連続したステップは、ページの下の連続した行に示されている。実行される命令は各ステップで左側の点の位置で示され、2つのレジスタのそれぞれの数値は右側の灰色のブロックで示されている。

すべてのレジスタマシンは、プログラム中の最初の命令を実行することから始まる。そして、ここで使用した特殊なプログラムでは、プログラムの他のすべての命令を順番に実行し、プログラムの最後に到達するたびに、プログラムの最初にジャンプして戻るように設定されているのである。

各マシンのレジスタは両方とも最初は0である。そして、最初の機械では、最初のレジスタは0と1を交互に繰り返し、2番目のレジスタは0のままである。しかし、2番目の機械では、1番目のレジスタは0と1を交互に繰り返すが、2番目のレジスタは次第に大きくなる。そして最後に、3番目の機械では、両方のレジスタが成長する。

しかし、これら3つの例では、全体の動作は基本的に反復的である。そして実際、4命令以下のプログラムを持つ10,552台のレジスタマシンの中で、これほど複雑な動作をするものは1つもないことがわかった。

しかし、5命令になると、下の図のように、少し複雑な動作が可能になる。しかし、この例でも、高度にルール的な入れ子構造になっている。

そして、7命令までは、276,224,376個のプログラムのうち、あまり複雑な動作になるものはないことがわかる。しかし、8命令では、11,019,960,576個のプログラムのうち126個が、より複雑な振る舞いを示すようになるのだ。次ページにその例を示す。

しかし、(a)と書かれた通常の進化だけを見ると、まだ非常に単純でルール正しい振る舞いに見えるかもしれない。しかし、よく観察してみると、不ルールな動作があることがわかる。図の(b)の部分は、2つのレジスタのどちらかがちょうどゼロになったステップだけを含むように圧縮された進化を示す。この図では、実行される命令には明らかに不ルールな変動があることがすぐにわかる。

c)は、どちらかのレジスタがゼロになった最初の400回について、どの命令が実行されたかを示している。そして、d)の部分は、最初のレジスタがゼロになったときに、2番目のレジスタが連続して達成した値の基数2桁を示したものである。この結果は、かなりのランダム性を示しているように見える。

つまり、これまで研究してきた他のシステムほど明白ではないにしても、見開きのページにある単純なレジスタ・マシンは、複雑で一見非常にランダムな動作を生み出すことができるのである。

では、もっと複雑なレジスターマシンではどうだろうか?

明らかな可能性は、2つ以上のレジスタを許容することだ。しかし、通常、この方法によって得られるものはほとんどないことが判明している。例えば、3本のレジスタを使用した場合、8命令ではなく7命令のプログラムで一見ランダムに見える動作が得られる。しかし、実際のプログラムの動作は、すでに見た2本のレジスタの場合とほとんど見分けがつかない。

より複雑なレジスタ・マシンを構成するもう一つの方法は、基本となる命令の種類を増やすことだ。例えば、一度に2つのレジスタを参照し、その内容を加算、減算、比較するような命令を導入することができる。しかし、このような命令の存在が、複雑な動作の形態やその頻度に大きな影響を与えることはほとんどないことが判明した。

しかし、特にこのような拡張命令セットを使用した場合、レジスタマシンは実際のコンピュータの低レベルの演算をかなり正確に理想化することができる。その結果、レジスタマシン用のプログラムは、C、Basic、Java、アセンブラなど、実際の低レベルコンピュータ言語で書かれたプログラムに非常によく似ていることが多い。

典型的な例では、このようなプログラムの各変数は、レジスタ・マシンのレジスタの1つに単純に対応し、配列やポインタは許されない。そして、この対応関係から、レジスタマシンに関する我々の一般的な結果は、実際の低レベルコンピュータ言語で書かれた簡単なプログラムにも適用できると期待される。

しかし、そのようなプログラムに対して系統的な実験を行うことは、現実的にはやや困難である。しかし、私が行った実験では、単純なレジスタマシンと同様に、何百万という短いプログラムを検索すると、複雑で一見ランダムな挙動を示すものが少なくとも数個得られるのが一般的であることを示唆している。

シンボリック・システム

レジスタマシンは、典型的な低レベルのコンピュータ言語を単純に理想化したものである。しかし,数学的なものはどうだろうか. Mathematica が行う記号式の変換の単純な理想化はどのように設定すればよいのだろうか.1920年代のコンビネータの考え方が示唆する1つのアプローチは,fkklkDU’lklのような形を持つ式を考え,「Ix_l[yJ – “x[y]] 」(ここでx_とy_は任意の式を表す)というルールを繰り返し適用してこれらの式の変換を行うというものである.

下図はその例である。変換は各ステップで左から右へ一度スキャンし、重ならないように可能な限りルールを適用する。

見開きのページにあるような式の構造は、開閉括弧の並びだけで決まる。そして、この括弧をそれぞれ濃い四角と薄い四角で表すと、下の図のような全体的な動作パターンが生成される。

前のページでは、開き括弧を暗い四角で表し、閉じ括弧を明るい四角で表していたが、いずれの場合も、絵よりも大きな変化* a-© 右の油を切る 前のポジョからの初期状態に対して、システムは764個の祭壇を停止して256個の開き括弧と256個の閉じ括弧からなる構成に修正した。右下の初期条件では、システムは再び固定された構成に至るが、今度は65.S5Sステップを要し、構成は65,536個の開き括弧と閉じ括弧を含む。 進化のルールはNgWy非局所で、むしろ、例えば、油絵オートマトンにおけるものと類似していることに注意されたい。このシステムは常に焦点の定まった構成に進化するが、大きさnの初期条件では、そのために2のおよそn乗の時間がかかることが判明した。

このような特殊なルールを用いると、最終的には必ず挙動が安定する(天文学的な時間がかかることもあるが)。

しかし、下の図に示すように、このようなことが起こらない記号系を見つけることも十分可能である。このようなシステムで生成される動作は、単純な繰り返しや入れ子構造になっていることがある。しかし、多くの場合、他の多くの種類のシステムと同じように、その振る舞いは複雑で、一見すると非常に不ルールに見える。

いくつかの結論

この章の前に、ある種のセル・オートマトンは、その基本的なルールが極めて単純であるにもかかわらず、非常に複雑な振る舞いをすることがあるという驚くべき事実を発見した。

しかし、最初のうちは、この事実はあまりに意外で、我々の通常の経験からはずれているので、これはセル・オートマトンのまれで特別な特徴の結果であり、他の種類のシステムには起こらないはずだと思いがちである。

確かにセル・オートマトンには多くの特殊な性質がある。例えば、セル・オートマトンの要素は常に厳密な配列で配置され、各ステップで常に並列に更新される。そして、このような特徴は、単純なルールから複雑な振る舞いを生み出すために重要であると考えるかもしれない。

しかし,この章の前の置換システムの研究から,例えば,実際には要素が厳密な配列で配置されている必要はないことが分かっている.また、モバイルオートマトンの研究から、並列に更新することが重要でないことも分かっている。

実際、私は、セル・オートマトンの様々な特殊性をそれぞれ取り去るとどうなるかを見るために、本章の一連のシステムを特に選んだ。そして驚くべき結論は、結局のところ、これらの特徴のどれをとっても、実はあまり重要ではないということだ。この章に登場するすべてのタイプのシステムが、最終的には、セル・オートマトンで見たのとほとんど同じような複雑さを生み出すことができることが証明されたからである。

このことは、複雑性という現象が、実は極めて普遍的なものであり、特定のシステムの詳細とは全く無関係であることを示唆している。

しかし、一般にどのような場合に複雑性が生じるのだろうか?

この章の例から、あるシステムのルールが十分に単純であれば、そのシステムは純粋に反復的な動作しか示さないことがわかる。もしルールがもう少し複雑であれば、ネストもしばしば現れる。しかし、システムの全体的な振る舞いに複雑さを持たせるためには、その基礎となるルールの複雑さにおいて、ある閾値を超えることが必要である。

しかし、我々が行った驚くべき発見は、この閾値が一般的に極めて低いということだ。そして実際、この章の過程で、これまで議論してきた一般的な種類のシステムのすべてにおいて、非常に複雑な振る舞いを生み出すには、最終的に非常に単純なルールしか必要ないことが分かった。

それにもかかわらず、もしルールの複雑さを増すと、それに応じて行動もより複雑になると考えたかもしれない。しかし、見開きのページにある絵が示すように、これは典型的な現象ではない。

それどころか、いったん複雑な振る舞いの閾値に達すると、通常、基礎となるルールに複雑さを加えても、生成される振る舞いの全体的な複雑さはまったく増えないことがわかる。

複雑な振る舞いに必要な重要な要素は、非常に単純なルールのシステムにはすでに存在しているようで、その結果、ルールをより複雑にしても、根本的に新しいことは起こらないのが普通なのである。実際、前ページの図が示すように、ルールの複雑さとそれが生み出す振る舞いの複雑さには、明確な相関関係がないことが多い。これは、例えば、非常に複雑なルールであっても、非常に単純な振る舞いが起こることが多いということだ。

本章の例から得られる一つの観察は、システムの動作が複雑に見えないとき、繰り返しか入れ子に支配されている傾向があるということだ。そして実際、前章で特定のセル・オートマトンにすでに見られた、繰り返し、入れ子、ランダムネス、局所的構造という基本テーマは、実は非常に一般的であり、実に様々なシステムの振る舞いを支配するテーマであるように思われるのである。

あるシステムの基本的なルールの詳細が、そのシステムが生み出す動作の詳細に影響を与えることは確かである。しかし、この章で見たように、全体的なレベルでは、典型的な動作の種類は極めて普遍的であり、基礎となるルールの詳細とはほとんど無関係であることがわかる。

そしてこの事実は、私が本書で述べるような首尾一貫した科学を発展させようと努力する上で、極めて重要なものであった。なぜなら、この事実は、それぞれのシステムの正確な詳細とは無関係に、広範なシステムの振る舞いを支配する一般原理が存在することを意味するからである。

そしてこのことは、たとえ自然界に存在するある特定のシステムの内部の詳細がすべて分からなくても、そのシステム全体の振る舞いについて基本的な発言をすることができる可能性があることを意味する。実際、ほとんどの場合、その振る舞いの重要な特徴は、この章で取り上げた様々な種類の非常に単純なルールで既に見たことがあるものであることが判明しているのである。

この章の発見はどのようにしてなされたか

この章と最後の章では、単純なプログラムの典型的な動作について、私が行った一連の驚くべき発見を説明した。この発見が、本書で述べる新しい種類の科学における、ほとんどすべての基礎的な調査の中心となることを期待している。

従来の数学や既存の理論科学では、研究したい動作から出発し、その動作を示す例を作ろうとする基本的な方法論が提案されてきた。しかし、もし私がこの方法を使っていたら、きっとあまりうまくいかなかっただろう。というのも、私は、すでに存在すると思われる動作の種類だけを探していたのである。例えば、セル・オートマトンの研究であれば、繰り返しや入れ子を探すだけだっただろう。

しかし、それ以上の発見をすることができたのは、コンピュータ実験を基本にした方法論を用いたからなのである。

伝統的な科学実験では、自然界にあるシステムを設定し、それがどのように振る舞うかを観察する。それと同じように、コンピュータにプログラムを組んで、それがどう動くかを見ることができるのである。このような実験的アプローチの大きな利点は、どのような挙動が起こりうるかを事前に正確に知る必要がないことだ。そのため、思いもよらないような新しい現象を発見することができるのである。

しかし、従来の実験科学の経験では、実験というのは基本的に常に不正確なものであると思われるかもしれない。

自然界のシステムを扱う場合、完璧な精度でセットアップや測定を行うことは通常不可能であり、実際、従来の実験を再現可能にすることさえ困難である。

しかし、私がこの本で行っているようなコンピュータ実験では、そのような問題はない。なぜなら、ほとんどすべての場合において、そのルールと初期条件を完璧な精度で指定することができるプログラムを使用しているからである。

このようなコンピュータ実験は、多くの点で、科学に対する理論的アプローチと実験的アプローチの両方の長所を兼ね備えている。その結果は、理論や数学の記述に期待されるような正確さと明瞭さを備えているからである。しかし、これらの結果は、純粋に観察することによっても得られるものである。

しかし、あらゆる種類の実験と同様に、意味のある結果を得るためにコンピュータ実験をどのように設定するかを知るには、かなりの技術と判断力が必要である。実際、この20年ほどの間に、私自身の実験のやり方は格段に良くなっている。

私が何度も何度も学んだ最も重要な原則は、「最良のコンピュータ実験は、可能な限り単純で簡単なものである」ということだ。この原則は、実際に研究するシステムの構造にも、それを研究するための手順にも当てはまる。

可能な限り単純な構造を持つシステムを見るという原則は、あるレベルでは抽象的な美学と見なすことができる。しかし、この原則は、非常に具体的な結果ももたらすことが分かっている。

まず、構造が単純であればあるほど、それが多様な場所に現れる可能性が高くなる。つまり、できるだけ単純な構造のシステムを研究すれば、最も広範で最も基本的な意義をもつ結果が得られる傾向があるのだ。

また、構造が単純なシステムを研究することで、どのような現象が起きても、その原因が何であるかを判断できる可能性が高くなる。なぜなら、システムに組み込まれ、人を迷わせるような機能が少ないからである。

純粋に実用的なレベルでは、より単純な構造を持つシステムを研究することにも利点がある。これらのシステムは通常、コンピュータでの実装が容易であり、したがって、与えられた計算資源でより広範に調査することができるのだ。

しかし、可能な限り単純な構造のシステムを研究すべきであると言うことの明らかな問題点は、そのようなシステムは、人が面白いと思うような、あるいは自然界で実際に起こるような振る舞いを見せることができないかもしれないということだ。

実際、伝統的な科学や数学の直感では、あらゆる種類の複雑さを加えない限り、ほとんどの系があまり意味のない振る舞いを示すことはないとされる傾向がある。しかし、本書のこれまでの成果は、そのような直感が正しいとは言い難く、現実には極めて単純なルールを持つシステムであっても、非常に複雑な振る舞いを生じさせることができることを示している。

この事実がコンピュータ実験に与える影響は非常に深い。なぜなら、このことは、基本的に単純なルールを持つシステムを研究する以上の理由が、直ちに存在しないことを意味しているからである。しかし、この点を吸収することは、簡単なことではない。実際、私の経験では、計算機実験をする際に最もよくある間違いは、必要以上に複雑なシステムを調べてしまうことだ。

典型的な理由は、もっと単純なシステムで面白い振る舞いができるはずだと想像できないからだ。そこで、より複雑なシステム、それも、ある特定の振る舞いをするために特別に挿入された機能を見ようとする。

そして、ずっと後になってから、もう一度、単純なシステムを見直すことがある。なぜなら、そのシステムは実際に面白い振る舞いをするのだが、自分が想像もつかなかったような振る舞いをする、ということがよくあるからである。

そこで私は、「シンプルすぎるシステムから始めてはいけない」という原則を常に守るようにしている。最悪の場合、面白い振る舞いをするために必要な下限値を決めてしまうことになるからだ。しかし、それ以上に、思いもよらないような振る舞いを発見できることが多いのである。

しかし、実験であっても、思いもよらない現象を発見することは、決して簡単なことではないことを強調しておきたい。というのも、実験をする際には、どうしても「どのような振る舞いが起こりうるか」という仮定を置かざるを得ないからだ。そして、たまたまその仮定に合わない振る舞いがあったとしても、実験ではそれに気づかないのが普通である。

しかし、私の経験では、コンピュータ実験で新しい現象を発見する確率を最も高くする方法は、実験の設計をできるだけ単純で直接的なものにすることだ。例えば、多数の可能なケースを無闇に探索することは、少数のケースを注意深く探索することよりもずっと良いことだ。なぜなら、検索対象を絞り込むと、どうしても思い込みが生じ、その思い込みが最も関心のあるケースを見逃してしまうことがあるからである。

これと同じように、私はいつも、ある種の要約から作業をするよりも、システムの実際の挙動を明示的に見る方がずっと良いと考えている。というのも、要約をする際には、必然的に特定の特徴だけをピックアップしなければならず、そうすると最も興味深い効果が取り除かれたり、不明瞭になったりすることがあるのだ。

しかし、非常に直接的な実験の問題点の1つは、しばしば膨大な量の生データを生成してしまうことだ。しかし、このデータを絵にすると、目で見るだけですばやく分析できるようになる。私の経験では、自動化されたデータ解析よりも、はるかに簡単に予想外の現象を発見することができる。

私が最初に調べた単純なプログラムの例が1次元のセル・オートマトンだったのは、ある意味でラッキーであった。というのも、このようなシステムでは、おそらく1万個のセルからなる配列を見るだけで、全体的な動作がよくわかるからである(これは、数平方インチで簡単に表示できる)。

そして、256の基本的なセル・オートマトンのルールのうちのいくつかは、すでに非常に複雑なものを生み出しているので、この章の最初にあるような数ページの絵を勉強するだけで、原理的にはセル・オートマトンの複雑さという基本現象を発見できるはずだったのである。

しかし、実は私はこのような単純な方法でこの発見をしたわけではない。私は、当初、セル・オートマトンの進化の絵を見ることを思いついた。しかし、その絵を作るのは技術的に難しいので、できるだけ数を減らしたいと思ったのである。そこで最初は、左右対称で背景が変わらない32のルールだけを見た。

その中で、繰り返しの例や入れ子の例を見つけた。また、初期条件をランダムにすると、より複雑な挙動が見られるようになった。しかし、単純な初期条件で複雑な振る舞いができるとは思っていなかったので、他のルールを見てそれを探そうとはしなかった。ところが、私が最初に発表したセル・オートマトンの論文(198.3)には、実は非対称なルールの例として、27ページのルール30の絵が掲載されていたのである。しかし、その絵は20段階の進化しか示しておらず、当時の私はそれをよく見ていなかったし、その重要性も理解していなかった。

それから数年間、私はセル・オートマトンのコンピュータ実験をどんどん進めていき、その過程でセル・オートマトンの多くの性質を解明することができた。しかし、技術が進歩し、それがほとんど不可能になったとき、私はもう一度、単純な初期条件から発展する256の基本ルールすべての絵を、わかりやすいページで作成した。そして、その絵を見て、ようやくルール30のようなシステムに起こる驚くべき現象を理解し始めたのである。

それから7年後、ルール30のようなセル・オートマトンを見て基本的な直感を得た私は、他の種類のシステムでも同様の現象が起こるかどうかを調べようと決心した。そして、最初に調べたのが、モバイルオートマトンである。

モバイルオートマトンは、ある意味でセルオートマトンに比べて進化が非常に遅いので、より効率的に絵を描くために、その進化を圧縮して表示する方式を考え出したのである。まず、100個、1000個、1万個のモバイルオートマトンの絵を作った。しかし、どの絵にも、繰り返しや入れ子になっている動作以上のものは見つからなかった。

しかし、もっと複雑な動作があるに違いないと思い、大量のモバイル・オートマトンを自動的に検索するプログラムを作成した。モバイル・オートマトンがどのような振る舞いをするのか、さまざまな条件を設定して検索してみた。そして、すぐに100万個、1,000万個と検索できるようにした。

しかし、それでも何も見つからなかった。

そこで、もう一度、ランダムに選んだルールを大量に持つモバイル・オートマトンを目視で確認し始めた。そしてしばらくして、私が使っている圧縮方式では、検索条件では捨てられてしまうけれども、それでも面白い振る舞いをするモバイル・オートマトンがあることに気づいた。そして、このことを考慮して検索プログラムを修正したところ、1時間以内に74ページに示すような例を見つけることができた。

しかし、それでもまだ、私の検索プログラムには暗黙の了解が多く残っていた。しかし、それでもまだ、私の検索プログラムには多くの思い込みがあり、それを取り除くにはまだ時間がかかる。しかし、その結果、75ページのような例を見つけることができた。

この章で説明した他のほとんどのシステムでも、多少似たようなパターンが繰り返されている。主な課題は、常に思い込みを避け、重要な新現象を見逃さないような単純かつ直接的な実験を設定することであった。

多くの場合、正しい実験を行うには、多くの繰り返しが必要であった。Mathematica を使って新しい実験を簡単にセットアップすることができなかったら,この章で取り上げたシステムのほとんどを調査することはできなかったと思う.しかし,最終的には,100万以上の論理演算に相当するプログラムを数年間実行し,数万ページに相当する画像を作成した後,ようやくこの章とそれに続く章で示されるさまざまな例のすべてを見出すことができたのある。

保護記事

限定公開・管理用

この記事が良かったら管理人に お知らせください。
いいね記事一覧はこちら

備考:機械翻訳に伴う誤訳・文章省略があります。
下線、太字強調、改行、画像の挿入、リンク添付等の編集を行っていることがあります。
使用翻訳ソフト:DeepL /文字起こしソフト:Otter 
Alzhacker.com をフォローする
Alzhacker
error: コンテンツは保護されています !
タイトルとURLをコピーしました