忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

時間が繰り返すパターンの計算法の比較:確率と波

私が知っている限り、時間が繰り返すパターンをシミュレートするときには2つの方法があり、それはベイズ確率を使う方法と波を使う方法です。この投稿ではその2つの計算法を比較します。


時間が繰り返すパターン

「時間が繰り返す」と言う言葉で私が表現したいのは、時間が途中で逆再生動画のように逆転し、宇宙の始まりまで戻ったらまた時間が未来へ進むようになる奇妙な現象です。そんなSFじみた事を考えたくないのなら、何らかの復元力を持った現象を考えても構いません。たとえばバネの振動は同じパターンを何度も繰り返します。もっとも私はSF風の表現のほうが好きですが。

ベイズ確率

このようなパターンをシミュレートする計算方法は私が知る限り2つあります。一つは確率を使う方法です。イカ墨が水に溶けるときのような粒子の動きをモデル化するランダムウォークについて考えてみましょう。次の2つの図のように、確率をうまく調整すると、ランダムウォークの状態がもとに戻ってあたかも時間が逆転しているかのように見えます:

前者が普通のランダムウォーク、後者が時間が逆転するランダムウォークです。後者ではイカ墨が魔法のように集まり一点に集中しているのです。後者のランダムウォークは矢印の確率が歪んでいることに注意してください。前者で1/2となっている確率が、1や0になっています。どうしてこのような確率の歪みが生じるのでしょうか?それは、単純なケースに分解してみるとかんたんに理解できます。

普通のランダムウォークは次のような単純で具体的なケースに分解できます:(クリックで拡大)

ランダムウォークの具体的な軌跡には4つのパターンがあり、そのうち2つだけが元の位置に戻ります。そこで、そのパターンだけ残して残りを抹殺します!生き残りから再構成すると、時間の逆転したランダムウォークが作れます:

今や0や1というゆがんだ確率がある理由は明らかです。不適切なパターンが消えてしまったので0になり、生き残りが1に見えているのです。

同様のテクニックは決定論的なものに対しても適用できます。以前述べたように、曲線をもとに戻るパターンに無理やり変形させることが出来ます。たとえば次のような指数関数は無限の波に分解できます(再掲):

元の状態に戻る波のみを生き残らせると、繰り返すパターンが作れるのです:

指数関数的曲線を無理やり繰り返しのパターンに捻じ曲げました!

ここでは1次元空間+1次元時間が描く単純な曲線ですが、もっと高い次元についても同じテクニックが使えます。

ベイズ確率と波の共通点

この2つの方法には共通点があります。どちらも、「普通の現象を単純なパターンに分解し、時間が逆転しないパターンは抹消し、組み立て直す」のです。一つ一つのパターンは最初の状態に戻るので、それらを足したものも元の状態に戻るわけです。

これはとても単純な原理なので、他の何かに対しても応用できそうです。でもまあ、確率と波があれば大抵のものは表せるので、ここで満足しても問題はないかもしれません。

まとめ

ある現象が、時間が繰り返すSF的宇宙でどうなるかを知りたければ、「その現象を単純なパターンに分解し、時間が逆転しないパターンは抹殺し、組み立て直す」とよいでしょう。そうすれば、部分として元の状態に戻るのですから全体としても元の状態に戻ります。

拍手[0回]

PR