组合数学学习笔记
前言:
学校网挂掉了,无聊至极,跑来学组合数了。
来自《组合数学》第四版
章节是原书的,以下内容 Ariel 认为还是比较 noip 的
不 noip 的也干不动啊= =
目录:
第一章 组合数学
组合数学涉及将一个集合的物体排列成满足一些指定规则的格式。
如下两类一般性问题反复出现
- 组合的存在性
- 排列的计数和分类
与上述问题同时出现的另外两种组合数学问题是:
- 研究一个已知的排列
- 构造一个最优的排列
1.1 棋盘的完美覆盖
问题描述
考虑一张 (8 imes 8) 的棋盘。设有形状一样的多米诺骨牌,每张牌恰好覆盖棋盘上相邻的两个方格。是否能够把 (32) 张多米诺牌放在棋盘上,使得任意两张多米多骨牌均不重叠,每张多米诺牌覆盖两个方格,并且棋盘上所有的方格都被覆盖住。
分析
存在性
当 (m) 和 (n) 至少一个是偶数时,(m imes n) 存在完美覆盖。
方案数
(m imes n) 棋盘的不同完美覆盖数,这个问题等价于分子物理学中的二聚物问题;
Fischer 已经得出涉及三角函数的用来计算 (m imes n) 棋盘不同完美覆盖数的一般公式
特殊的,当 (n = 2) 的时候,可以用递推求解,递推公式就是斐波那契数列。
裁剪后的存在性
考虑 (8 imes 8) 的国际棋盘用一把剪刀剪掉对角线上的两个格子,总共剩 (62) 个方格,问此时是否能够排列 (31) 张多米诺骨牌得出完美覆盖?
它不存在完美覆盖。
证明:将 (8 imes 8) 的棋盘上交替地将放个涂成黑色和白色,其中 (32) 个方格是白色,而另外 (32) 个方格是黑色的,如果剪掉棋盘一副对角线上的两个方格,那么我们就剪掉了同样颜色的两个格子,比如两个白色的方格。这样就变成了(32) 个黑方格和 (30) 个白方格,但是每个多米诺骨牌需要一个黑格子和一个白格子,所以没有完美覆盖。
切过的棋盘怎么才会存在完美覆盖 ?
一个必要条件就是黑格子等于白格子。
充分条件是二分图的匹配问题。
扩展
设 (b) 是一个正整数,用 (b) 个 (1 imes 1) 的方格并排成 (1 imes b) 的方格条来代替多米诺牌,我们称这些方格条是 (b) 牌。
(m imes n) 的棋盘被 (b) 的一个完美覆盖 ?
充分条件是 (b) 是 (m) 的一个因子或 (b) 是 (n) 的一个因子。这个应该很显然。
同时它也是一个必要条件。
证明要对 (b) 是否为素数分类讨论。
素数由素数基本性质就能得出来,不是素数的证明有点麻烦。
所以就了结论:
一张 m 行 n 列棋盘有一个 b-牌的完美覆盖,当且仅当b是 m的一个因子或者 b 是 n 的一个因子
同时如果完美覆盖中所有的 b-牌都是水平摆放或者所有的 b-牌都是垂直摆放,则称其为平凡的,如果一个完美覆盖是可能的,那么一个平凡覆盖也是可能的。
1.2 Nim 取子游戏
问题描述
有 (k) 堆石子,每堆石子都有 (n_i) 石子,每一轮一个人可以任意选取一堆石子,然后取走任意数量的石子,最后不能取的那个人为败者。
分析
先考虑两堆石子的情况:
如果两堆石子数量相同,先手取一定数量的棋子,后手也在另一堆棋子中取走相同数量的棋子,后手一直采取这个策略,那么它是必胜的。
如果两堆石子不同,先手一定会采取策略使得两堆棋子数量相同,这时先手必胜。
这么就有了,若两堆石子初始相等那么后手必胜,否则先手必胜。
推广到 (k) 堆的情况下
现在考虑的大堆的个数为 (N_1, N_2, N_k) 的取石子游戏,N_i 表示二进制数。
(N_1 = a_sdots a_1 a_0)
(N_2 = b_s dots b_1b_0)
(N_k = m_sdots m_1m_0)
如果每种大小的子堆的个数都是偶数,那么就称 Nim 取子游戏是平衡的,而对应位相加为偶数的成为平衡位,否则为非平衡位,(Nim) 取子游戏是平衡的当且仅当
(a_s + b_sdots m_s) 是偶数。
(dots)
(a_0 + b_0 + dots m_0) 是偶数。
先手能够在非平衡的游戏中取胜,后手能在平衡的游戏中取胜。
对应的就是所有的数异或起来为 (0) 就是平衡状态,否则为非平衡状态。
第二章 鸽巢原理
简单形式
2.1.1:如果 n + 1 个物体被放到 n 个盒子,那么至少有一个盒子包含两个或更多的物体
证明:无证明。
还有两种形式,也很简单:
- 如果将 (n) 个物体放入 (n) 个盒子并且没有一个盒子是空的,那么每个盒子恰好包含一个物体
- 如果将 (n) 个物体放入 (n) 个盒子并且没有盒子放入对于一个物体,那么每个盒子里有一个物体。
鸽巢定理进阶
2.2.1 令 (q_1, q_2, q_3, q_n)为正整数。如果将
个物体放入 n 个盒子内,那么,或者第一个盒子至少含有(q_1) 个物体,或者第二个盒子至少含有 (q_2) 个物体,或者第 n 个盒子至少含有 (q_n) 个物体。
证明: 设将 (q_1 + q_2 + dots q_n - n + 1) 个物品放到 (n) 个盒子中。如果对于每个 (i = 1, 2, dots n) ,第 (i) 个盒子含有少于 (q_i) 个物品,那么所有盒子中的物品的总数不超过
因为发的物品少 1, 因此我们断言,对于某一个 (i = 1, 2, dots n), 第 (i) 个盒子至少包含 (q_i) 个物品。
所以当将 (q_1 + q_2 + q_n - n) 个物品用上面的方法分到 (n) 个盒子中,所有的盒子都不能含有 (q_i) 个或更多的物品。而上上面的那个简单定理就是这个 (q_i = 2) 的一种特殊形式。
平均原理
如果 (n) 个非负整数 (m_1, m_2dots m_n) 的平均数大于(r - 1)
那么至少有一个整数大于或等于 (r)。
如果 (n) 个非负整数 (m_1, m_2, dots m_n) 的平均数小于 (r + 1) 即
那么其中至少有一个整数小于 (r + 1)
如果 (n) 个非负整 (m_1, m_2, dots m_n) 的平均数至少等于 (r), 那么这 (n) 个整数 (m_1, m_2, dots m_n) 至少有一个满足 (m_i geq r)
Ramsey 定理
一个完全图(顶点数至少为 (6) ),将每条边染成红色或者蓝色,一定会找出一个全蓝或者全红的三角形。
第三章 排列与组合
3.1 四个基本的计数原理
加法原理,乘法原理,减法原理,除法原理。
3.2 集合的排列
(A_n^m = frac{n!}{(n - m)!})
(A_n^n = n!)
(n) 个元素的集合的循环 (r) 的排列的个数为
可以这么理解:
一个环从每个点切开,就会对应这 (r) 个不同的排列。
3.3 集合的组合
定理 3.3.1
对于 (0leq m leq n)
(A_n^m = m! imes {nchoose m}) 得到 ({n choose m} = frac{n!}{m!(n - m)!})
定理 3.3.2
对于 (0 leq m leq n)
(C_n^m = C_n^{n - m})
3.4 多重集的排列
如果 (S) 是一个多重集,那么 (S) 的一个 (r-) 排列的一个有序排放。如果 (S) 的元素总个数是 (n) (包括计算重复元素),那么 (S) 的 (n-)排列也将成为 (S) 的排列。
定理 3.4.1
(S) 是一个多重集,它有 (k) 个不同类型的元素,每个元素都有无限重复次数。那么,(S) 的 (r-)排列的个数为 (k^r)
证明:乘法原理就好了。
定理 3.4.2
令 (S) 是一个多重集合,有 (k) 个不同类型的元素,各元素的重数分别为 (n_1, n_2, dots n_k) 。设 (S) 的大小为 (n = n_1 + n_2 + dots +n_k)。则 (S) 的排列数等于
证明:
考虑先把 (n_1) 个 (a_1) 填进去,很显然有 (C_n^{n_1}) 种方案,然后再填 (a_2) ,有 (C_{n - n_1}^{n_2}) 种方案,一直下去,排列的总数就是
然后化简就得到上面那个式子了。
定理 3.4.3
令 (n) 是一个正整数,并令 (n_1, n_2, dots n_k) 是正整数,且 (n = n_1 + n_2 + dots + n_k)。将 (n) 个元素的集合划分成 (k) 个被做标签的盒子 (B_1, B_2, dots B_k) 的方案数为:
其中盒 (1) 含有 (n_1) 个元素,盒 (2) 含有 (n_2) 个元素,(dots) 盒 (k) 有 (n_k) 个元素。如果这些盒子不被做标签,那么划分的个数为
证明:先选 (n_1) 个元素放入第一个盒子,然后从 (n - n_1) 个元素中取 (n_2) 个元素放入第 2 个盒子 (dots)
然后就有
同 3.4.2 的化简得到
现在对这些盒子不做标签。因为对于把元素放入 (k) 个无标签盒子的每一种方法,现在存在 (k!) 种方法将标签 (1, 2, dots, k) 贴在盒子上。
因此划分的个数为
3.5 多重集的组合
定理 3.5.1
令 (S) 为具有 (k) 种类型元素的一个多重集,每种元素均具有无限的重复,则 (S) 的 r-组合的个数等于
证明:
令 (S) 的 (k) 种类型的元素为 (a_1, a_2, dots , a_k)
(S = {infty a_1, infty a_2, infty a_3 dots infty a_k})
任意一个 r-组合均呈 ({x_1 a_1 + x_2 a_2dots x_k a_k})
那么 r-组合的个数等于方程 (x_1 + x_2 + dots +x_k = r) 的解的个数。
我们证明这些解的个数等于两种不同类型的元素的解的个数等于两种不同类型元素的多重集
(T = {r imes 1 + (k - 1) imes *})
的排列的个数。给定 (T) 的一个排列,(k - 1) 个 * 把 (r) 个 (1) 分成 (k) 组。设第一个 * 左边有 (x_1) 个 1,第二个 * 和第三个 * 之间有 (x_2) 个 (1),(dots) 最后一个 * 的右边有 (x_k) 个 1。
这样很显然 (x_1 + x_2 + dots x_k = r)。
于是多重集合 (S) 的 r-组合个数等于多重集合 (T) 的排列个数。
第六章 容斥原理
6.1 容斥原理
定理 6.1.1 集 (S) 的不具有性质 (P_1, P_2, dots P_m) 的物体的个数由下式给出。
定理 6.1.2
至少具性质 (P_1, P_2 dots P_m) 之一的集合 (S) 的物体的个数为
6.2 具有重复的组合
6.3 错位排列
咕咕
6.4 带有禁止位置的排列
咕咕
6.5 另外的禁排位置问题
咕咕