Sturmian文字列

初期文字 \(a\) , \(b\) , 指示配列 \(SW\) によるSturmian文字列
a =
b =
SW =
・Sw(n) = dummy
:SWを大きいリスト,要素を大きい数にするとおかしくなります.(入力制限で \(|SW|<30\) としています)
入力欄には1,1,1の様に正の整数を,区切りで入力してください.
アルゴリズムはループの方を使用.

定義

\(n\) 番目の Sturmian文字列 (Sturmian Word) \(Sw_n\) を以下のような定義で生成する.

指示配列 \(SW\) を定義する

\(SW = (SW_0,SW_1,...,SW_n)\)

  • \(Sw_{-1} = b\)
  • \(Sw_0 = a\)
  • \(Sw_n = (Sw_{n-1})^{(SW[n])} + Sw_{n-2}\)

例えば,(4,1,3,2)として生成するとSturmian文字列は次の通りになる.

  • \(Sw_{-1} = b\)
  • \(Sw_0 = a\)
  • \(Sw_1 = aaaab\)
  • \(Sw_2 = aaaaba\)
  • \(Sw_3 = aaaabaaaaabaaaaabaaaaab\)
  • \(Sw_4 = aaaabaaaaabaaaaabaaaaabaaaabaaaaabaaaaabaaaaabaaaaba\)

性質

  • \(SW = [SW_0,SW_1,…,SW_n]\) の要素をすべて1にした場合,フィボナッチ文字列と同じ文字列になる.

アルゴリズム集

\(n\) 番目のStrumian文字列を返す

ループを用いたもの /Scripts/Python/SW.py

参考文献