数论-Catalan数、Bernoulli数

2019-04-14 08:18发布

在某公司的笔试中碰到了一道题,隐约感觉以前学过但是记不得。后来一查原来是Catalan数..... 例题:给一个凸n边形,用n-3条不相交的对角线把它分成n-2个三角形,求不同的方法数目。例如,n=5时,有5种剖分方法。 设答案为f(n),按照某种顺序给凸多边形的各个顶点编号为V1,V2,。。。Vn,既然分成的是三角形,边V1Vn在最终的剖分中一定恰好属于某个三角形V1VnVk,所以可以根据k进行分类。不难看出,三角形V1VnVk的左边是一个k边形,右边是一个n-k+1边形。 根据乘法原理,包含三角形V1VnVk的方案数为f(k)f(n-k+1):根据加法原理有: f(n)=f(2)f(n-1)+f(3)f(n-2)+...+f(n-1)f(2) 边界是f(2) = f(3) = 1.不难算出从f(3) 开始的前几项f值依次为:1,2,5,14,42,132,429,1430,4862,16796. 在建立递推式时,经常会用到乘法原理,其核心是分步计数。如果可以把计数分成独立的两个步骤,则总数量等于两步计数之乘积。 另一种思路是考虑V1连出的对角线。对角线V1Vk把凸n边形分成两部分,一部分是k边形,另一部分是n-k+2边形。根据乘法原理,包含对角线V1Vk的凸多边形有f(k)(n-k+2)个,根据对称性,考虑从V2、V3、....出发的对角线也会有同样的结果,因此一共有 n(f(3)f(n-1) + f(4)f(n-2) + ... +f(n-1)f(3))个部分。 但这并不是正确答案,因为同一个剖分被重复计算了多次!不过这次不必取消除重复了,因为这些重复很有规律,每个方案恰好被计算了2n-6次-有n-3条对角线,而考虑每条对角线的每个端点时均计算了一次,这样,得到了f(n)的第2个递推式: f(n)=(f(3)f(n-1) +f(4)(n-2) + ... + f(n-3)(3)) * n/ (2n-6) 它和第一个递推式有几分相似,但又不同。把n+1代入第i个递推式得到: f(n+1) = f(2)f(n) + f(3)f(n-1) + f(4)f(n-2) + ... + f(n-1)f(3) + f(n)(2) 黑 {MOD}部分是相同的!根据第2个递推式,它等于f(n) * (2n-6)/n,把它和f(2)=1一起代入上式得: f(n+1) = f(n) + f(n) * (2n-6)/n + f(n) = frac{4n-6}{n}f(n) 这个递推式和前两个相比就简单多了,这个数列称为Catalan数,也是常见的计数数列。 伯努利数是18世纪瑞士数学家伯努利引入的一个数,在数学上,伯努利数是一个有理数序列,在许多领域都有很大的应用。伯努利数在数论中很有用,伯努利数还可用于费马大定理的论证中。 B(0) = 1 B(n) = frac{1}{n+1} * (C_{n+1}^{0} * B(0) + C_{n+1}^{1} * B(1) + ... C_{n+1}^{n-1} * B(n-1)) 重要应用:求前n项和S_{k}^{n} = 1^{k} + 2^{k} + ... + n^{k} 用伯努利数进行求解。 S_{k}^{n} = frac{1}{k+1} * (C_{k+1}^{k}*B(k)*(n+1)^{1} + C_{k+1}^{k-1}*B(k-1)*(n+1)^{2} +... + C_{k+1}^{0}*B(0)*(n+1)^{k+1})