计数问题研究的都是有限集合, 本文介绍基本的计数方法, 并应用它们解决常见的排列与组合问题。
首先, 回顾下几个基本的概念及计数的两个重要法则。
概念1: 集合元素的 m 元排列
集合A 有n个元素, 从这n个元素中取一个元素,不放回; 连续取 m 次, 得到序列 a1, a2, ..., am, 则称 该序列为这n个元素的一个
m 元排列, 这种排列共有 P(n, m) 个。
P(n, m) = n(n-1)(n-2)...(n-m+1)
概念2: 集合元素的 m 元组合
集合A 有n个元素, 从这n个元素中取一个元素,不放回; 连续取 m 次, 得到一组 a1, a2, ..., am, 不考虑各数的顺序,则称该组元素为这n个元素的一个
m 元组合, 这种组合共有 C(n, m) 个。
C(n, m) = P(n, m) / m!
计数理论中有两个最基本的法则: 和法则、积法则。
和法则: 若有限集 A 与 B 不相交, 则 A n B 为空集, |A U B| = |A| + |B|
积法则: 设集合 A = {a1, a2, ... , am}, B = {b1, b2, ... , bn}, 记 A X B = {(ai, bj) : ai∈A,
bj∈B}, 则 |AXB| = |A||B| =mn
基本计数法则应用举例:
例1:
有6张一角的纸币, 4张一元的纸币, 3 张五元的纸币, 使用这些纸币功能组成多少币值?
很显然这是一个组合问题, 因为选取的纸币序列组成的币值与顺序无关。 假设对前述的纸币分别取出 a, b, c张,
那么 |(a, b, c)| = (6+1)(4+1)(3+1) = 140, 由于这里包含了 三种币纸都取 0 张这种情况, 这种是没有实际意义的,
需要从中减掉, 因此可以组成 139 种币值。
扩展: 本例的结论是否正确是依赖于各纸币的张数和面值的, 例如如果有5张一元的纸币, 因为币值5元, 可以用5张一元的或一张5元的纸币组成, 此时问题较复杂, 视具体情况而定。
例2:
从6个数字0,1,2,3,4,5 中选取四个不同数字构成四位数的整数, 如果将所能构成的四位整数由小到大排列, 问第73个整数是什么?
由于0不能做最高位, 而且整数是排序的, 因此我们可以从小到大分别计数:
1 开头的个数: P(5, 3) = 60
2 开头的个数: P(5, 3) = 60
...
很显然, 第73个数必然以2开头; 而20**的个数是 P(4, 2) = 12 个, 因此第73个为 2103