“斐波那契数列的生成函数变成什么样? 我听说过”。
请参阅。 请参阅。 请参阅。 所以这个还是写一发吧
有什么用? 无济于事。 请参阅。 请参阅。
1 .齐次线性递推数列
定义:给定常数k、a1、a2、ak、h0、h1、HK1,构造下一个数列。
HN={ HNA1HN 1a2HN2. akhnknknk
称为齐次线性递推数列。
多项式
f(x )=h0 h1x h2x2 .
称为此数列的一般生成函数。
说起齐次线性递推数列,最典型的是斐波那契数列。
不用给出定义吧……
斐波那契数列的生成函数是这样的:
f(x )=1 x 2x2 3x3 5x4 8x5 .
如何用几个有限项多项式表示这个级数?
创建了这样的函数:
a(x )=1xx2
易于验证:
f(x ) a ) x )=1
也就是说:
f(x )=11xx2
为什么会这样呢?
理由很简单,相对于n2,
[n](f(x ) a (x ) ) ) n ) f ) x ) ) N2 ) f ) x )=0
这里,[n]f(x )表示f ) x )的n次项系数
该结论有几个有趣的结果,例如代入x=0.01。 有以下内容。
10.9899=1.010203050813213455 .
另外,如果这样写斐波那契数列
1
11
112
1113
11115
111118
1111113
11111121
……
然后将各位从上到下相加,就会出现长度为89的循环节。 10.89是有理数,所以……
我们可以把它推广成一种常见的形式:
对于递推公式
HN=a1hn 1a2HN2. AK hnk
的生成函数
f(x )=h0 h1x h2x2 .
构造函数:
h(x )=h0 h1x h2x2 . hk1xk1
a(x )=1a1xa2x2.akxk
如果是:
f(x ) a ) x )=h ) x ) a ) x ) modxk
f(x )=h ) x ) a ) x ) modxkA(x ) ) ) ) ) ) f )=h ) x ) x ) x ) modxkA(x ) x ) ) ) ) ) ) f ) x ) x ) x ) x ) x ) x ) x ) x )
我知道这个形状很优雅,但我不知道这个优雅的形状和数列的本质有什么联系……
这有什么用?
给出求第n项、n、k105的k次线性递推方程
o(NK )暴力,平方k3logk,全部剪掉了……
ft可以是o(nlogn )。
请叫我恶性肿瘤。
2 .非齐次线性递推数列
定义:给定常数k、a1、a2、ak、h0、h1、HK1,构造下一个数列。
HN={HNA1HN1a2HN2.AKHNKg(n ) nknk
称为非齐次线性递推数列。
这里,g(n )是关于n的函数,也可以是泛函
需要用几个有限项多项式表示级数。
f(x )=h0 h1x h2x2 .
像以前一样,结构多项式:
h(x )=h0 h1x h2x2 . hk1xk1
a(x )=1a1xa2x2.akxk
g(x )=g )0) g )1) xg )2) x2 .
如果是:
f(x ) a ) x )=h ) x ) a ) x ) modxk ) g ) x ) modxk ) ) ) ) f ) x ) modxk ) )
f(x )=[ h (x ) x ) a ) x ) g ) x ) ]modxk G(x ) x ) a ) x ) ) ) ) ) )
所以如果g(x )能用有限项多项式表示就完成了。 请参阅。 请参阅。
如果g(n )=1,则g ) x )=1 x x2 .=11x
当g(n )=n时,g ) x )=x2x23x3.=x ) 1x ) 2
g(n )=n2时,g ) x )=x4x29x3.=x ) x1 ) 1x ) 3
这样,如果g函数是多项式,则可以表示
3 .卡特兰数列
定义:
HN={ 1h0hn1h1hn2. hn1h0n=0n1
求f(x )=h0 h1x h2x2 .
因为很容易看出这个递归公式本身是卷积的,所以让我们直接平方这个多项式吧
F2(x )=H1H2XH3X2.=F ) x ) 1X
融化了
f(x )=114x2x
也就是说,是卡特兰数列的生成函数。
4。 请参阅。 请参阅。 我不知道这个数列的名字,先叫广义的卡特兰数列吧。 请参阅。 请参阅。
已知伯特兰数列的第n项表示n个元素的堆栈序列数,即从原点到(n,n )不跨越y=x的方案数
那么,定义广义的卡顿数列hk(n ),表示的是n k个要素进入堆栈后剩下的k个要素的堆栈排列数,即从原点到(n k,n )没有跨越y=x的方案数
求生成函数:
fk(x )=hk )0) hk )1) xhk )2) x2 .
考虑堆栈中剩下的这k个要素,放入第I个要素后就不动了,然后进入几个堆栈,填入第i 1个要素
换句话说,可以将第I个元素视为堆栈的底部,对堆栈执行堆栈操作,使堆栈变为空,填充第i 1个元素……
设中途走过的要素数量为s,那么方案的数量是多少?
h0(s ),即卡特兰数列第s项
于是问题很简单。 将n个要素的数组分为k 1段,1段中有s个要素时,用h0(s )求出方案数
看这里就知道会生成函数了吧。
构造函数h(x )=h0 )0) h0(1) xh0 )2) .=114x2x
fk(x )=hk 1 )=) 114x2x ) k1