[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
SF小説『順列都市』には、主人公のポールが脳をスキャンして意識を持ったソフトウェアになり、自分自身を逆向きに実行させ時間を遡るシーンがあります。どう考えてもそれは不可能なように思えるのですが、本当にそうでしょうか?ここでは、十分に強力なコンピュータがあればそれは可能であることを示します。
SF小説『順列都市』の主人公ポール・ダラムは自分の脳をスキャンし不死を得ようとします。しかしその前に、意識をソフトウェア化したしたらどういうことがおきるか――あるいは起きないか――を検証するためにいくつか実験を行います。そのうちのひとつが、自分の時間を逆向きにするというものです。まず未来に飛び、そこから時間逆行し、ふたたび元の時間方向に戻るのです。
これはポールの時間を表した図です。ポールの主観的な時間は①→②→③→④と流れていきます。ところがポールを実行しているコンピュータの外の時間はそれとは別の流れになっており、そこではポールが①→③→②→④と変化していくのが見えるでしょう。
これは明らかに不可能に思えます。これをじっさいに行おうと思えば、①のあといきなり③を計算しなくてはいけません。しかし②をすっ飛ばして③を計算するというのは無理な相談に思えます。じっさい、小説の著者もこれは小説の嘘だという趣旨のことを言っています。
しかし本当に不可能なのでしょうか?
不可能という言葉にはいろいろな意味があります。たんにやりたくないという意味だったり、明日までにやるのは無理という意味だったり、現代の技術ではまだできないという意味だったりします。しかし、私は不可能という言葉を「無限に進歩した文明でも絶対にすることができない」という意味で使いたいのです。その意味でなら、ソフトウェア意識に時間を逆行させることは不可能ではありません。メモリの状態を手当たり次第に並べていき、後から選択すれば良いからです。その場合、②と③がこの世界に初めて登場する順番は、③→②でも何ら問題ありません。
もうすこし具体的に見ていきましょう。最初、プログラムの状態は①です。
①
この次に、ランダムに2つの状態を計算します。これは完全にランダムなので、大抵の場合まともな意識のデータとはいえません。ゴミです。しかし、途方もない時間計算し続ければ、ぐうぜん、時間が飛んで逆行したかのようなデータが現れることはあるでしょう。猿のタイプライター方式です。
①
→(②、③)×
→(②、④)×
→(①、③)×
→(①、④)×
→(②、③)×
→(④、④)×
→(③、②)◎
(ゴミデータをたくさん表示したくないので、プログラムの状態は①、②、③、④しかないものとして書いています。しかし現実のソフトウェア意識でも、プログラムの状態が天文学的な数になり正解が出るまでに気の遠くなるような時間がかかるようになるだけで、基本的な理屈は同じです。)
このとき、この世界に登場したのは③のほうが先です。③は②から計算されたのではなく、ランダムな数字を出す計算から出てきたのです。②が出てきたのは③の後です。そして、③が②の次であるかどうかを確認し、②が①の次であるかを確認すれば、わたしたちの時間から見ると、③が最初に登場し、つぎに②が来たようにみえるわけです!
ランダムな数字を組み合わせて自分自身を組み立てるというのがポールの提唱する塵理論の本質です。まさにこの計算は、塵理論を体現しているといえます!
もちろんこのやり方には、明らかな欠点があります。それは猿のタイプライター方式というのは気の遠くなるほどの時間を必要とするという点です。小説にはこんな真似ができるほどの時間はなかったので、明らかに小説中で起きたことの説明にはなりません。しかし現在の私たちには想像できないほどの莫大な資源と時間があれば、可能なのです!