关于构造函数解题(母函数入门)
闲话:
博主今天人狠话不多。于是直接上例题开讲,不闲扯了。
例题:
试用构造函数法证明下列的三个结论:
(1) Σk C(n, k)2 == C(2n, n);
(2) Σk C(n, k) * C(m, t-k) == C(m+n, t);
(3) Σk (-1)k * C(2n, k)2 == (-1)n * C(2n, n);
(这里博主特意空许多行留给读者思考空间。如需看解答,自行向下翻即可)
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
解答 :
(1) 构造函数 (1+x)2n,显然有 (1+x)n * (1+x)n == (1+x)2n ;
对比等式左右xn的系数,发现
等式左边的xn的系数是 Σk C(n, k) * C(n, n-k);
等式右边的xn的系数是 C(2n, n);
因为等式左右的函数是等价的,所以等式左右两边对应系数相等。
由此可得出 Σk C(n, k) * C(n, n-k) == C(2n, n);
又注意到 C(n, k) == C(n, n-k);
代入之即可导出所要证明的。
证毕。
补充说明:
突然想到还有一些初学者,
博主决定把上面的内容再讲详细一点。
(各位神仙巨佬们大可自行跳过本段 以及本篇辣鸡的随笔)
先讲一下幂函数。
在证明关于排列组合的恒等式的时候,
一种最基本的操作就是构造形如(1+x)n 一类的伪幂函数
为什么呢?因为显然把它展开来就有组合数了呀!…
在这里,显然用到二项式定理,(如果你这都不知道,那我也很无奈,可以自行度娘了解一下)
有(1+x)n == C(n, 0) * x0 + C(n,1) * x1 + C(n, 2) * x2 + … + C(n, n-1) * xn-1 + C(n, n) * xn;
写成西格玛的形式就是 (1+x)n == Σi C(n, i) * xi 这个样子的。
这样的话,显然xk的系数就是C(n, k)呀!这样的话,等式右边的系数是不就显然是C(2n, n)了吗?
(要是你还是不理解,那我真的很无奈。。。)
那么真正需要理解那么一点的就应该是等式左边了。
我们知道,等式左边的函数长这样—— (1+x)n *(1+x)n
要求出这样一个函数xn项的系数,我们就要考虑它是怎么来的。
(你别告诉我你要合并它,那你算两次一样的有什么意义呢?)
所以,它是怎么来的呢?
显然,这个函数是由(1+x)n与(1+x)n相乘形成的
那么对于展开(1+x)n的每一项来说,它们显然是系数相乘,指数相加。
(意思就是说(p*xa)*(q*xb)==(p*q)*xa+b)
现在我们再考虑原问题中的xn的系数。
这个n显然是由a+b加出来的。
可是是不是只有一种分发呢?显然不是?
可是有多少种这样的加法呢?我们就需要注意考虑,最后加到一起。
考虑令其中一个(1+x)n提供xk的系数,这个系数显然是C(n, k);
(上面刚刚讲完为啥——二项式定理呗!)
要考虑为总次数为n的项产生贡献,
显然要与合并能产生(1+x)n的项合并才有意义。
那么和谁合并才能产生(1+x)n项呢?
刚刚讲了,是相加的原则。
所以要和(1+x)n-k合并才能对(1+x)n产生贡献。
讲过了,它们的系数是相乘的。
所以对于每一种k不同分法都有C(n, k) * C(n, n-k)的贡献。
考虑所以k的合法取值,所以总的(1+x)n的系数就会套上一个西格玛,
即为—— Σk C(n, k) * C(n, n-k)。
然后左右两式的函数其实是等价的。(这个你不知道就不用学数学了)
所以无论你是什么算法,算出来对应次数的系数都应该是相等的,xn的系数当然也不例外。
然而我们左右两式其实都是在算这个函数xn的系数,当然也是相等的。
这就得到了 C(2n, n) == Σk C(n, k) * C(n, n-k)。
注意到 C(n, n-k) 是会恒等于 C(n, k) 的。(别告诉我你这个也不知道)
代入,就是原问题了!(所以就证完了啊!)
(突然感觉自己扯了一通显然的废话…下次还是不讲的这么啰嗦了)
关于这一题的小小的点评:
这一题还是非常不错组合数学入坑题入门题。
对于刚刚接触的人来说,这种颇富巧思的做法其实不那么容易想到。
然而我们又不得不清楚地认识到这只是组合数学证明恒等式中最基本的手段之一。
所以我们有必要很熟练地掌握这个知识。这当然需要做些题目并且多多回味。
从入门到精通当然是需要过程的。但只要勤加练习,多多思考,你就可以成为组合数学大师!
看完第一个结论的证明,是否觉得思路大开呢?
不妨去用这种思路挑战一下另外两个结论!题解同样放在下面。
/
/
/
/
/
/
/
/
/
/
/
/
(2) 构造函数(1+x)m+n == (1+x)n * (1+x)m
后面的与第一题完全相同,不加以赘述。
(是不是现在感觉变得特别简单了!)
(3) 构造函数(1-x)2n * (1+x)2n,显然会有 (1-x)2n * (1+x)2n == [(1-x) * (1+x)]2n;
整理一下,就是(1-x2)2n == (1-x)2n * (1+x)2n;
对比左右两式x2n项的系数,便有
(-1)n * C(2n, n) == Σk [(-1)k * C(2n, k)] * C(2n, 2n-k);
展开来,同时注意到C(n, k) == C(n, n-k),
代入,即可导出所要证明的。
证毕。
关于这一题小小的点评:
碰到带(-1)n一类的式子几乎都要构造一些负量。
很常规但是同时也很有趣的操作。值得回味!
结语:
构造函数是数学竞赛中解组合问题最常见也是最基本的手段。
作为一名优秀的选手,这应该是必须掌握的内容。
如果OIer能够有一些构造函数的能力,
在推一些数论题的结论以及一些比较抽象的DP题目的时候也会有所帮助。
本随笔考虑到作为入门,只介绍三道水题。
下一章节将会真正介绍一个非常有力的解题手段,母函数。
博主将会尽量详细的介绍母函数的原理并实战推一波Fib以及Stirling的通项
大概于11. 2日左右更母函数第二弹,敬请期待!
(衷心感谢您的阅读,希望本随笔能对您有所帮助。觉得好就赏个赞呗!)