Log of ROYGB

はてなダイアリーが廃止されるので、引っ越しました。

無限にシミュレート

http://d.hatena.ne.jp/michiaki/20091108/1257686030の「たまにはレス」と、その前のエントリーでhttp://d.hatena.ne.jp/michiaki/20091106/1257517780の「この世界が仮想現実ではないことの証明」での無限に続くシミュレートに関連する話。


シミュレートすることによる速度の低下は、その世界の中では関係ないとしても、外部から見た場合に違いがあることが、今どの世界にいるのかに関わってきます。時間の流れの違う2つの世界があって、自分がどちらに存在するかの確率は時間の流れの速度にかかわってくると思います。
時間の流れというか、存在する人の数によって確率が変わるとした方がわかりやすいでしょうか。
・Aの世界に10人
・Bの世界に100人
の人が存在した場合に、自分がどの人になるかというのがランダムであるとすれば、世界Bにいる可能性の方が大きいというのはわりと単純な確率の問題です。
主観時間あたりに存在する人の数が同じだとすれば、時間の流れの速度の差が人の数の差になるので、時間の流れの差によってどの世界に存在するかの確率が変わるということです。


ここで、シミュレートした世界では時間の流れが2分の1になると仮定してみます。
オリジナルの世界の速度が1なら、
シミュレート世界の速度が1/2、
再シミュレート世界の速度が1/4、
再々シミュレート世界の速度が1/8、
と1/2になっていきます。
この場合に、どの世界に存在するかが時間当たりにランダムであるとするならば、オリジナルの世界に存在する確率と、無限にシミュレートされたどれかの世界に存在する確率は同じになります。
これは、
1=1/2+1/4+1/8+1/16+・・・
という計算を考えてもらうと分かりやすいと思います。


シミュレートの速度を上げる方法は無いのでしょうか。コンピュータの速度を上げればいいというわけにはいきません。どれほど高速のコンピュータが存在したとして、自分自身をシミュレートした場合の速度はオリジナルよりも遅くなります。もしほんの僅かでも早くなるとしたら、シミュレートを繰り返すことで、無限に速度が向上することになってしまうからです。

他の方法としては、シミュレートする対象を単純化するというのがあります。惑星の動きを計算するのに、ニュートンの法則を使うようなものです。これでも日食や月食といった天文現象の起きる時期などをかなり正確に予測することができます。
現実に行われているシミュレートも、たいていはかなりの単純化がされています。空気の流れをシミュレートするのに、分子ひとつひとつの運動を計算したりはせずに、方程式に従う流体として計算するわけです。
そういった簡略化を駆使したシミュレートなら、オリジナルからの速度の低下が抑えられるかもしれません。もっとうまくいけば、オリジナル以上の速度で計算することも可能かも。

簡略化の方法として、誰かが見ている部分は精密にするが、だれも見ていない部分はおおざっぱにするということも思いつきます。だれも見ていないのに、細かく計算する必要はないからです。
具体的には量子力学の波動の収束のように、観測がされない場合は粒子の位置や速度が確定しない状態にしておいて、観測された場合にだけ、観測された値のみが得られるようにします。
つまりこの宇宙の法則は、シミュレートするのに楽になるように決められているわけです。