ダウンロード

セル・オートマトン

セル・オートマト ン(cellular automaton、略称:CA) とは、
格子状のセルと単純な規則による、離散的計算モデルです。

“セル”は「細胞」「小 部屋」、オートマトンは「自動機械」を意味します。

非常に単純化されたモデ ルですが、生命現象、結晶の成長、
乱流といった複雑な自然現象を模した、
驚くほどに豊かな結果を与えてく れます。

ここでは、各セルは2つ の状態をとることができ、
そのセルの状態は、両側に接しているセルの状態値に依存する
という、1次元のセル・オートマトンを考えて見ます。

メニュー

状態モデル
モデル例
 単一の初期値 複数の初期値

計算式
シート説明
ルールパターン

VBAコード

サンプルファイルのダウンロード
リンクリスト

状態モデル


ルール90セル・オートマトン

現在状態 111 110 101 100 011 010 001 000
中央のセルの新たな状態 0 1
0
1 1 0
1 0

今、隣り合う3つのセル状態値と、その中央のセルの新たな状態値を考えます。

上記の例は、左から順に中央のセルの注目すると
 現在の値が1、左右のセルの値が1であれば、次の状態値は0
 現在の値が1、左のセル値が1、右のセル値が0の場合、次の状態値は1
 現在の値が0、左のセル値が1、右のセル値が1の場合、次の状態値は0
 現在の値が0、左のセル値が1、右のセル値が0の場合、次の状態値は1
 ・・・・・・・・・
となることを意味しています。

色を付けて表すと
遷移イメージ

「ルール90」とは、状態表の「01011010」を2進数と考えた場合に 90(0x128+1x64+0x32+1x16+1x8+0x4+2x1+1x0)になることから命名されています。

あたらな状態値を現在値として次の状態値を考えていくと、初期値の状態によって決定される複雑なパターンが表れてきます。


使用方法


モデル例



下図の最上段を初期値として、ルール90を順に適用していくと
ルール90

このようなパターンが出来上がります。
ここでは判り易いように、状態値が「1」のセルには色を付けてあります。

もう少し範囲を広げると
ルール90

かなり複雑なパターンです。

お気づきのように、これは、同じパターンが小さいサイズから大きいサイズまで繰り返し現れる「フ ラクタル(自己相似)」図形となっています。

これは、「シェ ルビンスキーのギャスケット」とも呼ばれる図形と同じものを生成します。



計算式

左、中央、右のセルの値を2進数3桁に見立てて計算しま す。

下図の「BX4」(印) に注目すると、左、自分、右のセルは
1、空白、空白 となり、空白を「0」と見なすと「100

これを2進数と見立てて、10進数に直すと「」となります。

計算式

この「4」の値をる「RULE」表に当てはめる(INDEX関数)と、表から「」 が得られます。
(「RULE」は、「規則」シートのE3:E10に付けた名前−下図)
計算式

よって、次の状態値(5行目「BX5」)は「」となります。
これをすべてのセルに適用していきます。

なお、上図で着色されているのは以下の条件付書式で、セルの値が「1」の場合に セルの色を「緑」にしています。
条件付書式



シート説明


上段(2行目)のチェックボックスは「RULE」表と連動  
チェックが入っている場合「1」を表します。

最上段の行に直接「1」を入力しても可

ランダム配置」を押すと初期値(4行目)の値をランダムに配置
「A4」の値は、初期値を「1」にするセルの比率を表します。
「1」にすると初期値は全て「1」、「0」にすると「0」、0.2にすると1/5が「1」になります。

初期値が複数あると、とても複雑なフラクタル模様が出来ます。

消す時には「クリア」ボタンを押すか、4行目C列以降右側を選択して「Delete」キーを押下。


シート

補足:数式保護のために「シートの保護」が設定されています。



ルールパターン


単一の初期値


各種ルールパターンの基づいたフラクタル図形


初期値が1この場合、ルール90と同じですが、初期値が異なれば様相が異なります。
複数の初期値」を参照

ルール18

ルール30
    生物界において、セル・オートマントン状の模様の貝がいます。
左図は巻貝の一種、イモガイ


貝殻の辺縁に狭い帯状に色素細胞がある。各色素細胞は活性化されると色素を分泌し、同時に近傍の色素細胞の活性化を阻害するようになっており、天然のセル・オートマトンの規則のように作用する。この色素細胞の帯が貝殻に色の模様を残しつつ、少しずつ貝殻が成長していく。--- ウィキペディアより

ルール54

ルール126

ルール190

ルール254



複数の初期値

複数の初期値

複数の初期値




VBAコード

パターン作成ではVBAは使用していません。
純粋にエクセル標準式のみで作成できます。

ここで使用しているVBAは、初期値の「ランダム配置」においてのみ。
特に必須という機能ではありません。


Private Sub cmdRandom_Click()

    Dim intRatio As Single
    Dim InitArea As Range
    Dim MyCell As Range
    
    Dim i As Integer

    Set InitArea = Range("InitArea")
    InitArea.ClearContents
    
    Application.Calculation = xlCalculationManual
    
    intRatio = Val(Range("Ratio"))
    For Each MyCell In InitArea
        If Rnd <= intRatio Then
            MyCell.Value = 1
        End If
    Next

    Application.Calculation = xlCalculationAutomatic

End Sub


×
PageTop