Substitution Matrix

L-system の置換則 $P$ は、線形演算子(置換行列) $M$ として表現できる。この行列を解析することで、文字列の具体的な生成を待たずに、系の成長率や固定点における統計的性質を議論することができる。

定義

扱う文字列の集合を $\{c_1, c_2, \dots, c_n\}$ とし、置換規則$P$で変換するときの各文字の出現個数をベクトル $\mathbf{v}$ とすると、次ステップにおける各文字の個数は次のように記述される。

\[\mathbf{v}_{n+1} = M \mathbf{v}_n\]

ここで、行列成分 $M_{ij}$ は「文字 $j$ を 1 回置換したときに現れる文字 $i$ の個数」に対応し、この$M$がここで定義される Substitution matrix である。

基底の制限レベル (Restrict Level)

LSystems.jl では、解析の目的に応じて 3 段階の基底(行列サイズ)を選択できる。

Level名称構成される基底 (Basis)用途
0FullAxiom, Rules, Accept に含まれる全記号システム全体の完全な遷移の記述
1CoreRules の置換元 (Key) + Accept成長を司る生成子と物理量のダイナミクス
2PhysicalAccept に含まれる記号のみ物理的な観測量(サイト数等)の有効スケーリング

物理的意味:最大固有値とスケーリング

置換行列 $M$ の最大固有値 $\lambda_{max}$ は、系の成長率(Scaling Factor)に対応します。

  • Hilbert Curve: $\lambda_{max} = 4.0$ (2次元空間を埋める再帰ユニットの拡大率)
  • Gosper Curve: $\lambda_{max} = 7.0$ (Gosper 島の面積増大率)
  • Fibonacci Chain: $\lambda_{max} = \phi \approx 1.618$ (黄金比)

API Reference (Auto-generated)

LSystems.substitution_matrixMethod
substitution_matrix(tile::LSystems.AbstractTiles; restrict_level::Bool=false)

L-systemの置換行列を生成する。substitution_matrix_basis で定義されるrestrictlevelに応じた基底を用いて置換行列を出力する。 現在 `restrictlevel=1,2` は実験的な運用のため注意されたし。 (単に部分空間への射影を取っているだけであり、補空間の寄与を取り込めていない。)

res = (matrix, alphabet, lookup) という NamedTupleを返す。 res.lookup[Char] で、Charが表すmatrixの行を調べることができる

source
LSystems.substitution_matrix_basisMethod
substitution_matrix_basis(tile::LSystems.AbstractTiles, restrict_level::Int)

L-system の置換行列を構成する基底の集合を返す

  • restrict_level=0 : 置換に含まれるすべての文字
  • restrict_level=1 : Ruleの根本/Accept に含まれる文字のみ
  • restrict_level=2 : Accept に含まれる文字のみ
source
LSystems.substitution_matrix_fullMethod
substitution_matrix_full(tile::LSystems.AbstractTiles)

substitution_matrix() でいうところの restrict_level=0 の行列を返すオブジェクト

source