1、包含排除原理与发生函数方法对于组合性质的事物,常常遇到计算个数的问题,即计算问题。我们通过举一些例子说明如何应用包含排除原理与发生函数方法去进行计数。一 包含排除原理定理引出让我们从一个简单的例子谈起:数学系三年级甲班共有学生 30 名。在学完英语的基础上,本学期又开了日、德、法三门外语以供选修。班上选修日语的有 15 人,选修德、法语的各 14 人,同时选修日、德语的有 7 人,同时选修日、法语和法、德语的各有 6 人,三门全选的仅有 3 人。问此班中本学期选外语的学生有几人?分析 将此班中每个学生看作一个点,用 分别表示选修日、德、123E、 、法各种外语的学生集合。以 表示集合 中所包含
2、的点的个数,于是按题设()nE即有: 123121323123(),()4,()7,()()6,().n nnEE为了求出未选外语的学生人数,我们只需求出选了外语(即至少选一门外语)的学生人数。为此我们先将选各门外语的人数统统加起来,即: 123()()1543.nn但这样凡是同时选修任何两门外语的人数均被计算了两次。这样自然就想到了要“排除” ,即减去:121323()()()7619.nnEE到此为止,我们可以知道三门外语全选的 3 人在第一次包含中各被计算了3 次,在第一次排除中各被减掉了一次,因此,要得到所求人数,就必须把他们再“包含”进来,这样我们得到:431927.这个 27 就是
3、我们要求的选了外语的学生总数。于是,30-27=3(人) ,就是说,班上只有 3 人未选外语。正是这种“包含” ,包含多了再“排除” ,排除多了再“包含” ,用“包含”和“排除”反复交替来达到求得准确答案的计数方法,大约早在三个世纪之前,就已经被人们发现,并将其总结为一般的原理,即为包含排除原理。下面我们看看什么是包含排除原理。定理 1(包含排除原理 Principle of inclusion and exclusion)设有 N 个事物,其中有些事物具有性质 中的某些性质。令 表示具有 性质的12,.,spi ip事物个数, 表示兼有 及 性质的事物个数,此处 由此ijNij (1,).j
4、s定义, 及 应代表同一数值,并且凡兼具 , 性质的事物也认为具ijji ipj有性质 或 。一般地,设ij具有性质 的事物个数。那么,N 中不具有任何性12.k12,.kiip质的事物的个数即等于: 1212.40 . 12.1 .()()kkk siijijk SijjNii N定理直观分析在给出定理证明之前,让我们先来对公式的结构作些直观的分析。为了求出 N 个事物中不具任何性质的事物个数,当然只要从 N 中减去至少具有一个性质的事物的个数就可以了。而至少具有一个性质的事物的个数 S 就是:1212. 1. 2.1 .()()kkk siijijk SijjS iiN 这是因为在第一个和
5、式 中确实把具有任何一种性质事物都计算过了,ii但却把具有两种或两种以上性质的事物各多算了若干次。例如,对同时兼具性质 的事物,在 中都各被计数一次,所以就出现了重复计数现象,12,p12,第二项 用意在于把重复计数的对象个数再排除出去。但这样一来,又ijijN会出现排除过多的现象,虽然在和式 中恰好具有一种或两种性iijijN质的事物都正确的计数了一次,但对于譬如具有 性质的一个事物,它在12,p中被计数了三次,多算了两次,而在 中又被排除了 3 次,结果ii ij是一次也没有保留,所以又须靠 中的一项中补还它一次,仿此类推,ijk可见 S 等式的右端 的各和式正好起着盈亏相抵的作.iiji
6、j用。定理的严格证明假设 N 个事物中的任一特定事物 T 刚好只具有 k 个性质则此事物在 中都被计数一次,所以在和12,.,().ksp12,.,N式 中显然一共被计数了 次。同理,在和式 中它显然被计数iik ijij了 次。依此类推,可见它在下列总和1()2k中一共被计数的次数是12()siij SijSN1.()(1)(12kkk次 ,这表明具有性质的每一个事物在 S 中都被计算一次,可见 S 即等于具有任何性质的事物的总数。因此 便是不具有任何性质的事物的总数。定0N,理证毕。包含排除原理的应用例 1 试确定不定方程 满足要求12340,x126,07,x的整数解的组数。344826
7、x和分析 首先注意,方程 (r 为非负整数)的非负整数解1234x的组数就是 n 种相异事物中允许重复(重复次数不限)取 r 个的组合方法数,为 。令1r则问题化为求方程1234,2.xxzz的满足条件34071的整数解组数。123405,z将此方程的所有非负整数解看作集合 ,则由以上的提示知416()503Nn(记号 表示 中所含元素的个数) 。对任何一组非负整数解以性质 表示 表示 表示 以及 表示1234(,)z1p126,z28,z3p35z4p。则按定理 1,所求解组数就是45作替换 易见40 12341 ,iijijkijjNN16,就是方程1.()!.kni的非负整数解组数。因而
8、 ,234167z17320余皆类似,不难求得其它的2341342343456,5;0,NNN及所有的 和 统统为 0.代入得ij ijk240(16)(1)96.例 2 假定有 n 对夫妇参加某舞会。约定每一男人必须邀请除自己妻子以外的某一女人伴舞。问所有可能的舞伴方法数共多少种?分析 考虑由 1,2, n 这 n 个数作成的排列,对于这排列中的第 k 个位置,.称为是数 k 的自身位置;使得每个数都不在其自身位置的排列称为错排序列。显然,所求的舞伴方法数就是长度为 n 的错排序列的总数。将这总数记作 ,nD则 即是此例的答案。令 表示由 1,2, n 所作成的 个不同的全排列的nD.!集合
9、,以 表示在排列中数 i 在其自身位置上的性质,则ip以及对任何的 均有 。于(1)!,.)i nN1.ki1.()!.kniN是 0 1!(1)!.()!.()!(.().2!kn nn n关于乱序排列的这一公式,早在 1713 年就曾被 Montmort 找到。值得注意的是,对很大的 n 要想用此公式去计算 的精确数值却十分不易,但是由于当 n 充nD分大时 11.(),!2!ne所以我们有非常简单的近似公式 ,n!/e随之而来的是,在考虑随机排列时,得到的是错排序列(譬如说,某人写了应该发往 n 个不同地址的 n 封信,封好后竟然乱填地址,其结果没有一个地址填对)的概率即为 ,而近似为/
10、!D1/.e例 3 设 是一组两两互质的正整数,即 又设 n12,.sa(,)1().ijija是一个给定的正整数。问在从 1 到 n 这 n 个正整数中不能被任何一个整除的正整数 k 有多少个?(,.)is分析 用包含排除原理来解决本题几乎是易如反掌,因为定理 1 中所需的诸性质已经昭然若揭了。将从 1 到 n 的所有正整数视作 ,即=(1 ,2,n ).对任何 及 若 则说 k 具有性质 。于是k,isiaip即 中能被 整除的整数的个数,而 1,2,n 中能被 整除的整数显然iNiai只有 共 个。从而 由于诸 彼此互质,因此,.,2iiinaia.iinNai也有 由包含排除原理,即得
11、 中不能被任何 整除的数11. ./kkiiNi的个数为 0 12.().siijiij snnaa二 发生函数方法发生函数方法介绍发生函数方法是一套非常有用的方法,它的应用很广。这套方法的系统叙述,最早见于 Laplace 在 1812 年出版的名著概率解析理论中。这方法的思想十分简单,就是把离散数列和幂级数一一对应起来,把离散数列间的相互结合关系对应成幂级数间的运算关系,最后由幂级数形式来确定离散数列的构造。扼要说来,发生函数方法就是把一个有限或无限的数列和如下形式的幂级数012,k kaa联系起来,构成对应关系 这个() .kAttt().kAta就称为 的发生函数, 叫做 的生成序列。
12、kk()At当涉及有关排列的问题时,常使用如下形式的幂级数作为发生函数这叫做 的指数型发生函数。201(),!kEtttaak发生函数方法的应用例 4 (Vandermonde 卷积定理)设 为非零实数,则有下列恒等式:,0 .nkkn分析 注意当 n=0,1,2,时,恒等式左端给出的数列正好是数列的卷积(Cauchy 乘积)数列,故根据二项式定理,立即可n与得 0 (1)(1).nkGGtttGkn n 例 5 满足下列线性递归方程 的(2)()(0,2.)ffnf数列 称之为递归数列,其中 为任意给定常数, 为()fn,1)(fa给定的初始条件。只要数值 , 为已知,则反复利用递推关系即可
13、逐步确0a1定 所谓求解方程,就是要求找出 的普遍表达式。事实上,(),23,4.f ()fn只有找到了普遍表达式之后,才算完全确定了数列 的结构。分析 为求解上述递归方程,不妨简记 ,此处 与 为已知数()nf0a1值。于是方程可改写为 这等价于下列方程组:210,1.nna其中 而 之值可以规定12(,3.)kkac(2)kc时 , 01,c为这样一来,即可将方程组理解为一种特殊的卷积表达式。010,.c自然便想到应引进发生函数 有20(),()1.kAttBta0100()(),kAtBttc 既然 中的常数项异于 0,故乘法逆元存在。于是上式得出t显然只须将此初等函数展成 t 的幂级数
14、,201()()/(),tta即可定出 来。令 则 由此k212(),tr1212,r解得 2 21 2(4),(4),r将此式右端展成 t 的幂级数,12101012) ,At ttaarr易见 的系数为 这就是方程的nt 1122100() ,nnnfrraa一般解。例 6 假设要从 n 种相异事物中任意选取 r 个事物,并假定每种事物允许重复选取(即并不要求 r 个事物彼此相异) ,则一切方法数显然即等于展开式中 的系数。2(1.)(1)nnttrt分析 因为 所以任取 r 个的一切组合001(),!nrrnttt方法数即等于 。1r例 7 在上面的例子中假定 ,并设每种事物至少取一个,
15、则组合枚举发rn生函数显然是 。23(.)t分析 由于2 0111(.)(1)nnrrrnntttttt因此所求的组合方法数即等于 。1下面我们专门来讨论有关排列问题的枚举发生函数。这里将看出指数型发生函数的引入是完全必要的。先从最简单的例子说起,对于 n 个相异事物而言,已知有枚举发生函数这表明从 n 个中任取 r 个作排列的方法数 恰好是0(1),!rnttrn项的系数。由此启发,可以想象当一个事物能被选取 0 次,1 次,2 次,/!rt,k 次(或者同一种事物包含 k 个时) ,则关于它的(作为排列的)枚举子应取如下形式: 特别,如果重复次数不受限制时,则枚举子应取指21.,!tt数函数 0/.tke例 8 设有 n 种事物,诸事物可重复选取,则任取 r 个的排列方法数为多少?分析 任取 r 个的排列方法数有如下的发生函数这表明在允许重复任取一物的情形下,2 0(1),! !k rntrttte任取 r 个排列数为 。r