这一招在做什么
有限集 A 的元素个数记作 ∣A∣。数得清的直接列举;数不清的,靠下面三招:
- 列举:小的情形全部写出来,看清结构。
- 对应:造一个一一对应,把要数的东西换成好数的东西。子集 ⟷ 0-1 串:第 i 位是 1 表示 i 在子集里。
- 递推:按“含不含最后一个元素 n”把对象分成两类,每一类都变成规模更小的同一个问题。
第 2 招立刻给出最基本的公式:每一位独立地取 0 或 1,所以
{A∣A⊆{1,2,…,n}}=2n.
按元素个数分组,第 k 组有 Cnk 个,于是 Cn0+Cn1+⋯+Cnn=2n——上面操作台按大小分出的那几组,就是杨辉三角的一行。
先猜后证
{1,2,…,8} 的子集中,含 1 但不含 2 的有多少个?
个
先选定答案,才能看到结论。
✓ 猜对了!✗ 和你想的不一样——这正是值得停一下的地方。
对应成 0-1 串:第 1 位必须是 1,第 2 位必须是 0,其余 6 位随便取。共 26=64 个。
n=5 的情形:23=8 个。表格里每多一个元素,个数翻一倍。
跟着做一遍
问题:{1,2,…,n} 有多少个子集不含相邻的两个数? 记这个个数为 an。
-
先数一个小的 n=4:16 个子集里,带 ✗ 的含有相邻两数。数一数没有 ✗ 的,a4=8。
a4=8
-
按含不含 4 分两类
-
不含 4 的一类
-
含 4 的一类
-
递推式
-
一路推下去
什么时候不灵
结论:两边的个数相等 ← 还成立吗?
子集 ↔ 0-1 串:不同的子集给出不同的串,每个串也都能读回一个子集。所以 {1,2,3,4} 的子集和长为 4 的 0-1 串一样多,都是 16 个。
换一个“对应”:每个子集对到它的元素和。和只能是 0,1,…,10,共 11 种。可子集有 16 个——
{1,4} 和 {2,3} 都对到 5,{1,2,4} 和 {3,4} 都对到 7。对应是多对一的,数像的个数不等于数对象的个数。下面挑出“元素和是 3 的倍数”的子集,和是 0,3,6,9 四种,子集却有好几个:
练一练
{1,2,…,10} 的子集中,同时含 3 和 7 的有多少个?
提示 · 方向对应成长为 10 的 0-1 串,哪几位已经定了?
提示 · 方法第 3、第 7 位必须是 1,其余位自由。
{1,2,…,10} 有多少个子集不含相邻的两个数?(空集也算。)
提示 · 方法用 an=an−1+an−2,a1=2,a2=3,一路推到 n=10。
提示 · 第一步2,3,5,8,13,21,34,…
完整解答a7=34,a8=55,a9=89,a10=144。
{1,2,…,6} 有多少个子集含偶数个元素?要求:不要把 C60+C62+… 算出来,而是造一个一一对应。
提示 · 方向偶数个元素的子集和奇数个元素的子集,是不是一样多?
提示 · 方法试试“把元素 1 的状态翻一下”:含 1 就去掉,不含就加上。
提示 · 第一步这个操作把偶子集变成奇子集,再做一次又变回来,所以是偶子集与奇子集之间的一一对应。
完整解答偶子集和奇子集一样多,各占 26 的一半,即 32 个。
{1,2,…,10} 有多少个子集不含三个连续的整数?
提示 · 方向还是按最后几位分类。0-1 串里不许出现 111。
提示 · 方法设个数为 bn。按串的结尾分:⋯0、⋯01、⋯011,三类不重不漏。
提示 · 第一步得 bn=bn−1+bn−2+bn−3。初值 b1=2,b2=4,b3=7。
完整解答依次是 2,4,7,13,24,44,81,149,274,504,所以 b10=504。