ライフゲーム的ハッシュ関数?圧縮アルゴリズム?

誰もカテゴリ検索は使わない→自分が使うようなモノにすればいい! というわけで思いついたことを書いてみよう。
ライフゲームにおいて、一つ前の状態を推定することは可能だろうか?
なぜこんなことを考えたかというと、以前日記に書いたように、単純な構造のものが時系列とともに複雑さを増すのは「ルール」に複雑化の要因が含まれるからだ、という結論に自分的には至っています。では、逆に複雑な構造のものを単純なルールと単純な構造に分解することはできるのか? できるとするならどの程度可能なのか? という疑問がわいたのだった。
まぁ掛け算と因数分解みたいなもんで、できたところでどうだという訳でもないのだけど。不可逆だしね。
実際に考えてみると、一つ前の状態としては複数の候補が挙がると考えられる。たとえば、

■■
■■

の一つ前の状態は、

■■  ■
■■  ■■

の2つ(およびその回転)が想定できる。
一般にはドット数をnとすれば[0,2^n)個くらいありそう(さすがに2^n全てありうるパターンってのはないと思う)。
この中から適切なパターンを選ぶ。また一つ前のを想定する。選ぶ。一つ前の……と繰り返していくと単純化されたパターンが得られるかもしれない。結果から原因を推定してるわけなので最終的に得られたパターンからライフゲームを始めれば最初のパターンに戻ることは保証される。
つまり単純化されたパターンを適当に(zipやらなんやらで)圧縮し、ヘッダにでもステップ回数を書いておけば一つの圧縮アルゴリズムに!……おそらくそこいらの鍵にアタックかけるよりも時間とメモリ食うでしょうけどw
あとはハッシュ関数として使うとか。「シミュレートは簡単だけど初期パターンを見破るのはまず無理」みたいな。にしてもメモリ食い過ぎだしキャッシュに収まりきらないから激しく遅いがw
まぁ役立たずな与太話でした(´・ω・`)












          あと他にもルール自体を変える事によって更に小さくしたり空間の次元数を増やs(ry