对孩子而言,重要的不是掌握解题技巧,而是能够认识到为什么有些做法是错的,如何从错误走向正确。看似相同的问题,可能会有九九八十一变,准确地辨识问题需要孩子练就一双火眼金睛。稍不留神,就会把人和妖搞错。
之前有过一道分鱼食问题,正好以它为例来谈谈这个问题。本质上,它是排列组合中常见的分球入盒问题。
分球问题的变种
(小学生版)
In a fish tank, there are 4 distinct fish. You spread 10 distinct food pellets into the tank. How many different distributions of food pellets among the fish are possible, given that fish can receive 0 pellets?
鱼缸里有4条不同的鱼。你将10个不同的食物颗粒放入鱼缸里。假设允许给鱼分0颗的情况下,把这10个食物颗粒分给这4条鱼,一共有多少种不同的分法?
(中学生版)
In a fish tank, there are 4 distinct fish. You spread 10 identical food pellets into the tank. How many different distributions of food pellets among the fish are possible, given that fish can receive 0 pellets?
鱼缸里有4条不同的鱼。你将10个相同的食物颗粒放入鱼缸里。假设允许给鱼分0颗的情况下,把这10个食物颗粒分给这4条鱼,一共有多少种不同的分法?
这两道题都是经典的排列组合问题,抽象出来就是分球入盒问题,这个例子中就是把10个球放入4个盒子里。这两道题中的食物颗粒对应于球,鱼则对应于盒子。
分球问题有很多变种,一不小心,就会搞混。这些变种主要是由于以下3个约束条件而产生的:
(1) 球可以相同或不同;
(2) 盒子可以相同或不同;
(3) 盒子允许空或不允许空。
组合上面的约束条件,一共产生了8种不同的小球入盒变种问题,如表1所示:
表1
情况1
第一题(小学生版)就对应于表1中的第1种组合方式,这也是这类题目中最简单的。
讲解这一问题,我曾拿出一些棒棒糖,想以此举例,让孩子们更好地理解问题。
问题:把3个不同颜色的棒棒糖分给2个学生,有多少种分法?
一个孩子说有14种。他是这么思考的:
第一个学生分3个,第二个学生分0个;
第一个学生分0个,第二个学生分3个;
然后,他把3个不同颜色的棒棒糖做排列,得到6种排序方法。然后假设第一个学生分1个,第二个学生分2个,每次把排列的第一个棒棒糖分给第一个学生,剩下的两个分给第二个学生。比如,排列为ABC,那么第一个学生分A, 第二个学生分BC; 如果排列为CBA,那么第一个学生分C,第二个学生分BA。所以有6种分法。如果第一个学生分两个,第二个学生分1个,则同上,又有6种方法。因此,他认为总共为2 6*2=14种!
很快有学生意识到这有问题。问题在于:排列ABC或ACB,最后都是第一个学生分A, 第二个学生分BC,属于一种分法,因此不是一一对应的,而是有两个排列方式对应一种分法。
经过这么一点拨,他就知道,其实应该只有2 3 3=8种分法。
但这种方法拓展到更大的数就有困难。其实,我们的任务是把10个不同的食物颗粒分给4条不同的鱼,可以分成10步来完成这个任务,每一步分一粒食物。由于允许鱼可以分0个食物,每一个食物颗粒都有4种不同的分法,因此根据乘法原理,共有4*4*4*…*4(10个4相乘)=4^10种方法。
情况6之原始解法
而上面的第二题(初中生版)则对应了表1中的第5种组合方式。在解决这个问题之前,我们可以先考虑解决表格中第6种组合方式的问题,即10个相同的食物颗粒分给4条不同的鱼,并且每条鱼至少要吃到一粒。
同样,以棒棒糖举例,小朋友就很容易理解,现在哪根棒棒糖分给你已经不重要了,因为都是一样的棒棒糖,重要的是,分到了几根?
最笨的办法,当然可以枚举。比如:10=1 1 1 7, 但谁分7根,有4种分法。具体地,各种拆分和对应的不同分法如表2所示
表2
所以,总共不同的分法有:4 12 12 6 12 24 4 4 6=84种。
情况8
上述过程实际上也解决了表1第8种组合方式的问题,即10个相同的球放入4个相同的盒子,且不允许盒子为空,等价于把10拆分成4个大于0的整数之和,并且整数是无序的,也就是说,1333和3331是相同的拆分。因此,总共有9种分法。
情况6之插板法
再回到上面的问题,当数量变大时,枚举就不再适用了。那么,有没有其他的办法呢?
我们假设第一个盒子放最左边的几个球,第二个盒子放随后的球,最后一个盒子放最右边的球。
例如,我们这样划分一下,那么就对应了第一、第二、第三、第四个盒子分别放了2,3,4,1个球。反过来,每一种放法都对应了上面的一种划分。因此,这两个问题是一一对应的。
从而问题就转换成,在10个球的9个间隔中要选择3个间隔插入分隔符,从而把10个球分成4份。把3块编号为1,2,3的板放到9个间隔中的3个,一共有9*8*7种放法,但是3块板有6种不同的排列,实际上对应的是同一种划分,因此,一共有9*8*7/6=84种不同的放法,和上面的枚举结果是相同的。这就是经典的插板法!
情况5
再回到第5个组合问题,也就是如果允许盒子是空的怎么办?
孩子们第一个想到的是能插分隔符的地方从9个增加为11个,因此,共有11*10*9/6种。但很快,有孩子意识到这是不对的,因为允许空盒后,可以把几个分隔符插在一个位置。
比如,上面这种就表示第一、第二、第三、第四个盒子分别放0,0,3,7个球。
这个问题可以转化为表1中第6种组合方式的问题来做,诀窍就在于怎么去掉允许盒子为空这个限制。如果不允许盒子为空,那么我们可以再拿4个相同的球,每个盒子先放一个球,这样,后面10个球还是按照原来的允许盒子为空来放,最后的结果是没有盒子为空。
比如,最后四个盒子放的球数是3,1,5,5,那么对应的10个球的放法就是2,0,4,4。反之,如果10个球的放法为2,0,4,4,那么14个球的放法是3,1,5,5。两者是一一对应的。这里不得不多说一句,根植于很多计数问题解决方法背后的,是一一对应这一最朴素但却最有用的思想,它将会一直贯穿到函数的学习。
于是,10个相同的球放到4个不同盒子,允许盒子为空,就等价于14个相同的球放到4个不同的盒子,不允许盒子为空。从而,根据问题6的做法,共有13*12*11/6=286种。
其它情况
到此,我们讲了表1中的第1、第5、第6、第8种组合方式的解法,当然,第8种如果数量大,那么也还需要其他的解决方法。实际上,这个问题的其他组合情况的解法可以很复杂,涉及递归等更高级的技巧,这是大学组合数学内容的一部分,在此就不再介绍了。关键是,我们需要具有一双火眼金睛,能够识别出这一问题不同的变种!
(全文完)
作者:昍爸,中科院计算机博士,大学教授,博士生导师,主持国家自然科学基金4项,在国内外高水平期刊和会议发表论文60余篇。曾获初中和高中全国数学奥林匹克联赛一等奖,江苏赛区第一名,高考数学满分。著有畅销书《写给孩子的数学之美》、《给孩子的数学思维课》与《给孩子的数学解题思维课》。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved