トリボナッチ文字列
初期文字 \(a\) , \(b\) , \(c\) による \(n\) 番目のトリボナッチ文字列
・Trib(dummy ) = dummy
注 : \(n\) に大きい値を入れすぎるとおかしくなります.(入力制限で \(n<25\) としています)
定義
以下の漸化式によって定義される \(Trib_n\) を \(n\) 番目の トリボナッチ文字列 (Tribonacci string) という.
\(Trib_0 = \varepsilon\)
\(Trib_1 = a\)
\(Trib_2 = ab\)
\(Trib_3 = abac\)
\(Trib_{n} = Trib_{n-1} \cdot Trib_{n-2} \cdot Trib_{n-3}\) \((n \geq 4)\)
また, この手続きを無限に繰り返してできる無限文字列を 無限トリボナッチ文字列 という.
\(Trib_{\infty} = abacabaabacababacabaabacabacabaab...\)
例
例えば,最初の6個のトリボナッチ文字列は次の通り.
\(Trib_1 = a\)
\(Trib_2 = ab\)
\(Trib_3 = abac\)
\(Trib_4 = abacaba\)
\(Trib_5 = abacabaabacab\)
\(Trib_6 = abacabaabacababacabaabac\)
その長さの系列は 1, 2, 4, 7, 13, 24, 44, …. であり,これはトリボナッチ数列である.
性質
フィボナッチ文字列に項を追加して拡張した文字列
アルゴリズム
\(n\) 番目のトリボナッチ文字列を返す
定義に忠実にしたがって作ったもの(
/Scripts/Python/tribo1.py
)再帰呼び出しを多用しているので大きなnに対しては遅くなる.
再帰ではなくループを使ったもの(
/Scripts/Python/tribo2.py
)