关于n个相同元素分为k类,最直观的算法。

将n个相同元素分为k类问题,有两种类型。类型之一为可空分配(每个类别至少0个元素),另外一个类型是不空分配(每个类别至少1个元素)。针对这两类问题,最为直观、容易理解的方法是隔板法。同时,因为这个问题可以等价于多维线性方程的解的个数问题,这个方法也可以应用于多维线性方程解的个数的计算。

可空分配等价于求方程x_{1}+x_{2}+...+x_{k-1}+x_{k}=n 的非负整数解(x_{i}\geq 0)个数,而不空分配等价于求方程x_{1}+x_{2}+...+x_{k-1}+x_{k}=n的正整数解(x_{i}> 0)个数。对于这两类问题采用隔板法的直观理解是这样的:

首先,从相对简单的非空分配开始。非空分配等价于将n个相同的小球分成k堆,每一堆都至少有一个元素。分类工作等价于在n各小球之间加入分隔板,分k类即选择k-1个隔板的位置。n个小球有n+1个可插入的空位,但因为有非空要求,故n个小球的首、尾位置不能设置隔板,所以k个隔板有n-1个位置可选,那么因此分类的方法有\binom{k-1}{n-1}种。

其次,可空分配相对比较难以直观理解,但可以设法转化为不空分配。因为可空分配等价于求方程x_{1}+x_{2}+...+x_{k-1}+x_{k}=n的非负整数解(x_{i}\geq 0)个数,若是将x_{i}的定义域做一个等价的变化,则可以这样,即:

\because x_{i}\in Z,x_{i}\geq 0\Leftrightarrow x_{i}+1,x_{i}> 0

\therefore \Leftrightarrow (x_{1}+1)+(x_{2}+1)+...+(x_{k-1}+1)+(x_{k}+1)=n+k,x_{i}> 0

因此,和为n的可空分配等价于和为n+k的非空分配,等价于将n+k个相同的小球分成k堆,每一堆都至少有一个元素。那么因此分类的方法有\binom{k-1}{n+k-1}种。

最后,这个解法还有更加高级的应用,即n个相同元素分为k类且每个类中元素的个数还有要求的情况。这类问题可以先将各类中所要求的个数对号入座,对剩余的元素再采用隔板法进行解决。因为隔板法解决非空配合相当于给每个类中至少一个元素,若是要求各类至少有k_{i}个元素,等价于先将k_{i}-1个元素先排入对应的类,再剩余元素给每个类中至少一个元素。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值