组合数学

发布时间 2023-07-29 13:23:52作者: 星河倒注

入门:

先介绍三个简单的技术

插板法:

直接插板:

看下面的问题:

eg1:

\(x+y+z=20\),其中\(x,y,z\)为正整数,求有多少组解。

我们考虑有\(20\)个球排成一排。我们插入两个板子把这\(20\)个球分成\(3\)个部分,其中第一部分的球的个数是\(x\)的大小,第二部分是\(y\),第三部分是\(z\)

这两个板子怎么插呢不难想到——插在\(19\)个缝里。也就是在\(19\)个缝里选\(2\)个。

答案是$C_{19}^{2} $

先转化,再插板(一一对应):

eg2:

\(x+y+z=17\),其中\(x,y,z\)为自然数,求有多少组解。

这个问题不好直接插板。因为可能有零的出现,多个板子可以插在同一个地方。你考虑这样一件事,就是说下面这个问题的解其实和上面的问题一样:

\((x+1)+(y+1)+(z+1)=20\),其中\(x,y,z\)为正整数,求有多少组解。

是不是豁然开朗。我令:
\(a=x+1,b=y+1,c=z+1\),就是\(a+b+c=20\),\(a,b,c\)为正整数,求解的组数,和最开始的问题毫无区别。而这其实建立里一组一一对应的关系把一组\(a,b,c\)的解对应到了一组\(x,y,z\)的解。

独立完成下面的问题:

eg3:

\(x+y+z=14\),其中\(x>=-1,y>=0,z>=-2\)\(x,y,z\)为整数,求有多少组解。

答案
原问题可以化为:(x+2)+(y+1)+(z+3)=20,其中(x+2),(y+1),(z+3)为正整数,求有多少组解。

捆绑法:

eg1:

有$ABCDEFGH$8个人要做\(3\)个任务,\(EF\)要分同一个任务,有多少种分配方法?

如果没有\(EF\)分同一个任务的限制,就是一个插板法,可既然\(EF\)要分在一起,当成一个人(下文用\(K\)表示)就行了,问题可以转化为:

看下面的问题:有$ABCDKGH$7个人要做\(3\)个任务,有多少种分配方法?

这个问题直接插板就行了。

进阶:

Catalan 数(卡特兰数)

引入:

先看几个问题:

eg1.

\(N\)个数要按顺序放进一个栈里,每次有可能弹出栈顶或放入下一个元素,问有多少种过程。

eg2.

一个人从原点出发,若当前处于\((x,y)\),下一次可以走到\((x+1,y+1)\)\((x+1,y-1)\),走\(2* N\)步,不可以走到第四象限,最终走到\((2* N,0)\)的轨迹数。

eg3.

有一个\(N* N\)的格点图:
image
\(A(0,0)\)走到\(B(N,N)\),不走对角线\(AB\)以下的方案数。

eg4.

\(N+1\)个节点的满二叉树的个数(可以把一个左儿子看成\(+1\),一个右儿子看成\(-1\)

发现了吗,这其实是一个问题,卡特兰数的模型是这样的;

  • 从原点出发,向上走\(N\)步,向下走\(N\)步,其中只停留在正半轴的轨迹个数(可以到\(x\)轴),记作\(C_n\)

计算Catalan 数

先不考虑只在正半轴的条件,方案数就是$C_{2 * n}^{n} $,这时我们只需要把不符合要求的删掉
记得上文插板法一一对应的思想吗?