把六个苹果放进5个抽屉,有多少种放法?
据说这是小学四年级的奥数题。小时候参加过不同级别的奥数竞赛,现在仍然能感觉到那些题目及解答的巧思妙想。但是随着学习的深入,就会慢慢发现当初是靠“奇思”解决的问题,逐渐在数学体系面前成为普通的推理,例如利用光行最速原理解决韩信信号兵问题,学了微积分,就知道不过是简单的单约束条件的优化问题。同样这放苹果的问题,就属于数学的一个分支:这就是组合数学。英文叫做:Combinatorics。组合数学可以看作一门相对独立的学科,也可以看作离散数学(计算机科学的基础)的分支,因为它是研究离散对象的,研究一定条件的组态(集合)的构造,计数分类等相关问题。
下面我们把这个放苹果问题进行泛化(古典组合数学)。如果苹果是可以区别的,我们可以把他们想象成写着A,B,C,D,E的卡片,然后面对从左到右的5个抽屉,有多少种排列方法?组合数学的第一个思想就是元素分析,即对任何一个卡片进行分析。
对于A这个卡片,它有多少种放法?显然有5种。同样对于任何一个卡片都有5种方法,并且前一个卡片的放法不影响后面的(用概率来说就是独立的事件)。所以,有5的6次方中放法。于是我们有,对于任意的可区分的M个苹果,面对N个抽屉,都有N^M种方法。
现在如果苹果部可区分,比如是乒乓球,这时候要注意,任何相同数量的乒乓球放到同一个抽屉,都是相同效果的,或者用组合数学的语言就是,它们的排列的结构的都是相同的,这个时候就是组合。排列的标准计算是P(M,N),是对M个元素拿N个出来进行排列有多少种排列法;组合的标准计算是C(M,N),是从M个元素拿出N个来有多少种可能。实际应用时候根据情况来使用。
仔细想一下就会知道,这种情况下放苹果,其实不同放法之间的区别就是抽屉里面苹果数量的变化,而和到底哪些苹果放进去没有关系。所以我们用一个更一般的模型代替:
X1+X2+X3+X4+X5=6
这里X1,...X5都是大于等于0小于等于6的整数。于是我们就是要找到上述模型的整数解有多少组(这是组合数学的标准模型)。
古典组合数学的另外一个思想就是整体分割的思想,构造一个等价于原问题的整体集合,然后进行等价分割获得结果。
于是,我们构造这样一个模型,用10个元素(5+6-1)构造出一个原始集合,然后再此集合中取四个(使10-4=6),换句话说这就把10个元素分成了5个部分,然后每个部分所含元素的数量就是X1,X2,X3,X4,X5的知。显然这时候可能组数为C(10,4)。
任意取四个满足限制条件X1...X5都在0,6之间,同时我们模型的任意划分显然是X1+...+X5=6的解。而任意X1+...+X5=6的解,也显然对应我们的一个划分,于是此解是所求。
一般的,对于不可分的M个物体,放到N个抽屉,其解为C(M+N-1,N-1)。