这是一种特殊情况:长度为二进制的单词数 ķ 这样就不会连续出现两个 F(k + 3 ),在哪里 F(n ) 是个 ñŤ ^ h 斐波那契数(以 F(1 )= 1 ,F(2 )= 1)。证明是通过Zeckendorf表示。
编辑:我们可以将此初始特殊情况扩展为稍大的特殊情况 一个◊0一个。考虑长度的字符串ķ 超过大小字母 l + 1 这样的信 一个没有连续出现两次。让F(k )是此类字符串的数量(我们将其称为“有效”)。我们声称:
F(k )= l * f(k − 1 )+ l ∗ f(k − 2 )
F(0 )= 1 ,f(1 )= 升+ 1
直觉是我们可以构造一个有效的长度字符串
ķ 通过以下方式之一:a)毗邻任何
升 不是的字母
一个 到有效长度的字符串
k−1或b)在字母旁
a 然后除了其他字母
a 到有效长度的字符串
k−2。
您可以验证以下是上述重复发生的不公开表格:
f(k)=∑i=0k(k+1−ii)lk−i
我们了解的地方
(ni)=0 什么时候
i>n。
编辑2:让我们再敲一个案例-一个 ◊0b,a≠b。我们将通过l-不包含子字符串的元素字母 ab,“有效”并让 Sk 表示一组有效的长度的字符串 k。进一步,让我们定义Tk 成为...的子集 Sk 由以开头的字符串组成 b 和 Uk 成为那些不以...开头的人 b。最后,让f(k)=|Sk|, g(k)=|Tk|, h(k)=|Uk|。
我们观察到 g(0)=0,h(0)=1,f(0)=1 和 g(1)=1,h(1)=l−1,f(1)=l。接下来,我们推断以下重复发生:
g(k+1)h(k+1)==f(k)(l−1)∗h(k)+(l−2)∗g(k)
首先来自以下事实:
b 到任何元素的开头
Sk 产生一个元素
Tk+1。第二个是观察到我们可以构造一个元素
Uk+1 通过添加除
b 在任何元素的前面
Uk 或添加除
a 要么
b 在任何元素的前面
Tk。
接下来,我们重新排列递归方程以获得:
f(k+1)====g(k+1)+h(k+1)f(k)+(l−1)∗h(k)+(l−2)∗g(k)f(k)+(l−1)∗f(k)−g(k)l∗f(k)−f(k−1)
我们可以通过生成函数的东西来弄乱代码,或者,如果我们很懒,直接去Wolfram Alpha,就可以得到一个相当不透明的封闭形式的解决方案。但是,通过在OEIS中进行一些谷歌搜索和查找,我们实际上发现:
f(k)=Uk(l/2)
哪里
Uk 是个
kth 第二种Chebyshev多项式(!)。