しかし,ルールの数がunsigned short変数で表せられる限界の2^(2^4)=65536もあるので,分類するには,ちょっと多すぎて収拾が付かない.そこで,等価なルールは何かを考えてみた.特にセルが左右で周期境界条件であったり,壁面から十分離れていて,境界の影響が現れない場合で,入力がランダムな場合について考えてみる.
ランダムな入力なら,入力の0と1が逆のものに同じ出力をする2つのルールは2ステップで周期的になるだけだから同じものだ.同じ入力に対して出力の01が反転している場合も同じとみなしていい.左右逆の入力に同じ出力をする場合も,基本的には同じものだ.そうすると考慮すべきルールは65536/(2*2*2)=8192にまで最大減らせる.
ところで,ウルフラムコードって16進数とかの方が便利かもしれない.ただ,今さら変更するのも邪魔臭いのでそのままにする.
さて,ウルフラムコードを入力するとそれと等価なコードを最大7つ返すプログラムを作った.
シェルで整理するときに便利だと思う.
追記:
どうもどこか間違ってるっぽい.理由はちょっと納得できていないが,入出力ともに01を反転させたコードが等価のようだ.等価なコードは最大4つだな.そうすると,考慮すべきルールは16634個になる.多いな.
equiv_4ca.cpp
0 件のコメント:
コメントを投稿