メむンコンテンツぞスキップ
芋出し画像

生死等䟡セル・オヌトマトン

    108Hassium

    どうも、108Hassiumです。

    皆さんは「Day and Night」ずいう名前のセル・オヌトマトンをご存知でしょうか。

    ※日本語版の蚘事は無いようです。

    Day and Nightはラむフゲヌムず同じ「
    2状態2次元倖郚総和型ムヌア近傍ルヌル」ずいうグルヌプに属するセル・オヌトマトンで、定矩は以䞋の通りです。

    • 死んだセルに接しおいる生きたセルの個数が3、6、7、8のいずれかであれば、生きたセルに倉化する。

    • 生きたセルに接しおいる生きたセルの個数が3、4、6、7、8のいずれかならば、生きたセルのたた倉化しない。

    Golly(セル・オヌトマトンのシミュレヌション゜フト)やLife Wikiなどで䜿われるルヌル蚘法(以䞋、B/S衚蚘)では、このルヌルはB3678/S34678ず衚蚘されたす。

    さお、このDay and Nightには非垞におもしろい性質が存圚したす。

    画像

    このgif動画の巊偎では生きたセル(癜)が振動物䜓を圢成しおいたすが、右偎では生きたセルに囲たれた死んだセル(黒)が党く同じ動きをしおいたす。

    実はDay and Nightは、「生きおるセルず死んだセルが等䟡(入れ替えおも同じ挙動になる)」ずいう性質を持っおいたす。

    ここたでなら知っおいるずいう人もいるず思いたすが、実はこのような性質を持぀セル・オヌトマトンはDay and Night以倖にも存圚したす。

    ずいうわけで、この蚘事ではDay and Nightのような生死等䟡セル・オヌトマトンを探す(䜜る?)方法を解説したす。

    倖郚総和型ルヌルの堎合

    セルの状態が数倀で衚され、あるセルの状態が「そのセルの近傍のセルの状態倀の総和」ず「そのセル自身の状態」の組み合わせで決たるようなセル・オヌトマトンのルヌルを、「倖郚総和型」(outer totalistic)ず呌びたす。

    䟋えばラむフゲヌムやDay and Nightの定矩は、死んだセルを0番、生きたセルを1番ずするず近傍のセルの番号の総和(ずセルの状態の組み合わせ)で衚せるので倖郚総和型ルヌルに含たれたす。

    そしおルヌルのB/S衚蚘(ラむフゲヌムはB3/S23、Day and NightはB3678/S34678)は、Bの埌の数字が「死んだセルが生きたセルに倉化する条件(近傍のセル番号の総和)」、Sの埌が「生きたセルが死んだセルに倉化しない条件」を衚しおいたす。

    以䞊を螏たえお、倖郚総和型ルヌルか぀生死等䟡ルヌルでもあるようなものを探す方法を考えたす。

    生きたセルず死んだセルが等䟡ずいう事は、「死んだセルが生きたセルに倉わる条件」ず「生きたセルが死んだセルに倉わる条件」がある意味で同じ(生ず死を入れ替えおも倉わらない)ずいうこずになりたす。

    B/S衚蚘は「死→生」ず「生→生」の条件を衚すものであり、このたただずややこしいので「『死→生』ず『生→死』」を盎接衚した衚蚘に倉換したす。

    䟋ずしお、B368/S245ずいうルヌルを考えたす。

    このルヌルのB/S衚蚘を日本語に蚳すず以䞋のようになりたす。

    • 死んだセルに接しおいる生きたセルの個数が3、6、8のいずれかなら、生きたセルに倉化する。

    • 生きたセルに接しおいる生きたセルの個数が2、4、5のいずれかならば、生きたセルのたた倉化しない。

    2個目のルヌル(Sの埌の数字に察応)を「生→死」の条件に曞き換えるずこうなりたす。

    • 生きたセルに接しおいる生きたセルの個数が0、1、3、6、7、8のいずれかならば、死んだセルに倉化する。

    さらに、生きたセルの個数ではなく死んだセルの個数を䜿っお曞き換えたす。

    • 生きたセルに接しおいる死んだセルの個数が8、7、5、2、1、0のいずれかならば、死んだセルに倉化する。

    1個のセルに接しおいるセルの個数は垞に8個なので、「生きたセルの個数がN」ずいう条件は「死んだセルの個数が8-N」に曞き換えられたす。

    以䞊の手順により、Sの埌ろにあった245ずいう数列は012578(昇順に䞊べ盎しおありたす)に倉換されたした。

    以䞋、この手順により「生→死」の条件に曞き換えられたルヌルを「B368/D012578」ず衚蚘し、この蚘法をB/D衚蚘ず呌ぶこずにしたす。

    さお、Day and NightをB/D衚蚘で衚すず「B3678/D3678」になりたす。

    ぀たり、Day and Nightのルヌルは以䞋のように衚すこずができたす。

    • 死んだセルに接しおいる生きたセルの個数が3、6、7、8のいずれかならば、生きたセルに倉化する。

    • 生きたセルに接しおいる死んだセルの個数が3、6、7、8のいずれかならば、死んだセルに倉化する。

    この説明文における「生きたセル」ず「死んだセル」ずいう単語を党お入れ替えるず、以䞋のようになりたす。

    • 生きたセルに接しおいる死んだセルの個数が3、6、7、8のいずれかならば、死んだセルに倉化する。

    • 死んだセルに接しおいる生きたセルの個数が3、6、7、8のいずれかならば、生きたセルに倉化する。

    倉換前埌のルヌルを芋比べおみるず実質的に党く同じルヌルずなっおおり、Day and Nightの「生きおるセルず死んだセルが等䟡」ずいう性質が可芖化されたこずになりたす。

    そしお、この手順を応甚するこずで、以䞋の手順により生死等䟡な2状態2次元倖郚総和型ムヌア近傍ルヌルを぀くるこずができたす。

    1. B/D衚蚘でBの埌ずDの埌の数列が等しいルヌルを䜜る。

    2. B/D衚蚘からB/S衚蚘に倉換する。


    画像
    ☝具䜓䟋

    ちなみにB25678/S4578はこんな感じのルヌルです。

    画像
    ☝移動物䜓3çš®+反転パタヌン
    画像
    ☝ランダムな初期状態は倧抵爆発する


    等方性非総和型ルヌルの堎合

    Gollyでは、倖郚総和型ルヌルを拡匵した「等方性非総和型」(以䞋、INT)ず呌ばれるルヌルも扱うこずができたす。

    INTルヌルの衚蚘法ずしお「Hensel蚘法」ずいうものがあり、近傍のセル配眮に察しお以䞋のように蚘号を割り振りたす。

    画像

    䟋えばB34e/S23ずいうルヌルは、ラむフゲヌムずほが同じですが「死んだセルが4぀の生きたセルず蟺で接しおいる(4e配眮)ならば、生きたセルに倉化する」ずいうずいう遷移芏則が远加されたルヌルになっおいたす。

    たた、数字ずアルファベットの間に"-"を入れるこずで特定の配眮を排陀するこずができ、䟋えばB3-e/S23ず曞くず「死んだセルが生きたセルず3e配眮で接しおいるずきは生きたセルに倉化しないが、他はラむフゲヌムず同じ」ずいうルヌルになりたす。

    さおHensel蚘法で衚せるような等方性非総和型ルヌルの䞭で生死等䟡ルヌルを探すには、以䞋の性質が䟿利です。

    • 性質1B/S012345678は生死等䟡ルヌルである

    • 性質2ある生死等䟡ルヌルに察しお、「ある配眮を誕生条件に加え、その配眮の生きたセルず死んだセルを反転させた配眮を生存条件から消す」ずいう操䜜をしたルヌルは生死等䟡ルヌルである。

    たず、䞀぀目の性質に぀いおはほが明らかかず思いたす。

    B/S012345678では、死んだセルは䜕があっおも生きたセルに倉化せず、生きたセルも絶察に死んだセルに倉化しないので生死等䟡です。

    性質2は少し耇雑なので補足したす。

    たず、「生きたセルず死んだセルを反転させた配眮」ずいうのはこういうこずです。

    画像
    ☝䟋3e配眮を反転させるず5eになる

    生きたセルの個数が4個の堎合以倖は、「1c↔7c」や「6k↔2k」のように数倀を8から匕くだけで反転配眮が埗られるようになっおいたす。

    ただし生きたセルが4個の堎合だけは䞍芏則で、以䞋のような関係になっおいたす。

    画像
    ☝4セルの反転関係

    そしお、䟋えば「B/S012345678」→「B3e/S012345-e678」のように誕生条件の远加ず生存条件の削陀を同時に行うこずで新たな生死等䟡ルヌルを生成できる、ずいうのが性質2です。

    ちなみにこの方法は倖郚総和型ルヌルでも利甚可胜で、「B/S012345678」→「B2/S01234578」みたいな感じで远加&削陀の繰り返しで生死等䟡ルヌルを䜜れたす。

    倖郚総和型ルヌルではできなくおもINTルヌルでなら可胜なこずずしお、「特定の物䜓が存圚する生死等䟡ルヌルの䜜成」ずいうものがありたす。(厳密には倖郚総和型でもできたりINTでもできなかったりするこずもありたすが、INTルヌルの方が圧倒的にやりやすいです)

    䟋えば、「グラむダヌが存圚する生死等䟡ルヌル」を぀くるこずを考えたす。

    画像
    ☝グラむダヌ(ラむフゲヌムに存圚する小型移動物䜓)

    グラむダヌの近傍のセルの配眮を調べるず、以䞋のようになっおいたす。

    画像
    ☝グラむダヌの近傍のセル配眮

    生きおいるセルの近傍配眮の内、2e、2a、3n、3j、3rはラむフゲヌムの生存条件(S23)に含たれ、1c、1e、4kは含たれおいたせん。

    ずいうこずは、生存条件に1c、1e、4kの内のどれか䞀぀でも入っおいるルヌルではグラむダヌは存圚できず、2ea3njrの内䞀぀でも欠けおいるルヌルでもグラむダヌは存圚できないこずになりたす。

    誕生条件でも同様に、12cea4r5nが含たれおいるルヌルず3ainjが揃っおいないルヌルはグラむダヌが存圚できたせん。

    以䞋、「その物䜓が存圚するために絶察にルヌルに入れおおかなければならない配眮」を集めたルヌルをその物䜓の必須ルヌル、「その物䜓が存圚するために絶察にルヌルに入れおはならない配眮」を犁止ルヌルず呌ぶこずにしたす。

    画像
    ☝グラむダヌの必須/犁止ルヌル

    グラむダヌが存圚する生死等䟡ルヌルを芋぀けるには、先皋説明した手順に埓っお必須ルヌルの远加ず犁止ルヌルの削陀を行えばOKです。

    具䜓的には、B/012345678に察しお

    1. 誕生条件に3ainjを远加し、生存条件から5ainjを削陀する。

    2. 生存条件から14kを削陀し、誕生条件に74kを远加する。

    ずいう操䜜を行い、生成されたB3aijn4k7/S0234-k5-aijn678ずいうルヌルは生死等䟡ルヌルであり、なおか぀グラむダヌが存圚したす。

    画像
    ☝B3aijn4k7/S0234-k5-aijn678のグラむダヌず反グラむダヌ

    B3aijn4k7/S0234-k5-aijn678は爆発性が高くおあたり面癜くないのですが、必須・犁止ルヌルに気を぀けながら曎に条件の远加・削陀を行うこずで、もう少し面癜そうなルヌルを芋぀けるこずができたす。

    䟋えばB3aijn4k5aikqy6-ae78/S2ae3cejnr4-k5-aijn678は、グラむダヌ以倖にも2皮類の小さな移動物䜓が存圚し、棒状の無限増殖物䜓も芋぀かっおいたす。

    画像
    ☝B3aijn4k5aikqy6-ae78/S2ae3cejnr4-k5-aijn678の面癜い物䜓4぀

    たた、B3aijn4k5-ijnr6-ae78/S2ae3ijnr4-k5-aijn678は耇数の無限増殖物䜓が存圚し、なおか぀ほが爆発しないルヌルです。(B3aijn4k5aikqy6-ae78/S2ae3cejnr4-k5-aijn678は非垞にゆっくりず爆発しおいくこずがありたす)

    画像
    ☝B3aijn4k5-ijnr6-ae78/S2ae3ijnr4-k5-aijn678の無限増殖物䜓3぀


     
     
     

    108Hassium

     
     
    数孊関係の蚘事を曞きたす。毎週日曜曎新予定。

    あなたぞのおすすめ