组合数学笔记(二)
组合数学
第4章 生成排列和组合
4.1 生成排列
递归生成算法
邻位对换算法
定义
如果整数 k 的箭头指向与其相邻但比它小的整数, 则称 k 是可移动(活动)的
算法
生成{1, 2, …, n}的排列算法:
- 初始:% “ … (;
- while 存在活动整数时,do
(1) 求出最大的活动整数 m
(2) 交换 m 和其箭头指向的相邻整数的位置
(3) 改变所有满足p>m的整数 p 的箭头方向。 - 不存在活动整数时,算法结束。
结论:两种算法生成的排列顺序一致
4.2 排序中的逆序
定义
逆序:令 是集合 的一个排列,如果 , 且 , 称数对 是排列的一个逆序。
逆序数:对于 { } 上的一个排列,令 表示第二元是 的逆序的数量,即 是排列中先于整数 并大于 的整数的个数,用于度量 的反序程度。
逆序列:令 表示排列 中数 的逆序数,称 为排列 的逆序列。
奇排列、偶排列:逆序个数为奇数的排列称为奇排列;逆序个数为偶数的排列称为偶排列
性质
性质1:排列 $i1,i_2,…,i_n$ 的逆序列 $a_1,a_2,…,a_n$ 满足: $0\leq a_1\leq n-1,0\leq a_2\leq n-2,…,0 \leq a{n-1}\leq1,a_n=0(1)$
性质2:满足条件(1)的序列 有 个。
定理
令 为满足 的整数序列,那么存在集合{ }的唯一一个排列,满足它的逆序列为
n阶矩阵 , 其行列式为 ,其中, 是 的符号(偶排列为+1,奇排列为-1)
已知排列 的逆序列为 ,且 为逆序数。则可以通过 次交换相邻两个数,转化为 。
4.3 生成组合
算法1:字典序的组合生成
通过特征函数,将n元集合 { }的组合与长度 为 的二进制数一一对应
算法按自然二进制数顺序生成, 称为n元
组字典序。
子集的压缩序:当 j<n-1时,{ }的所有组合都在至少含有{ }中一个元素的组合的前面
算法2:发射Gray码序生成算法
特点
相邻的组合仅相差一个元素(增加一个或者删除一个元素)
定义
n阶Gray码
- n 元组看作是 n 维空间的点的坐标。
- 每两个点的坐标仅有一个位置不同时,有一条连线。
- 算法生成所有的 n 元组:遍历 n 维空间的每个点,使得每个点与其后继只在一个位置不同。
- 产生的路径称为n阶Gray码
循环Gray码
遍历可以再经过一条边从终点返回到起点
n阶Gray反射码
1阶反射Gray码是 0 或 1
设 n>1 且 n-1 阶反射 Gray 码已经构造,如下构建 n 阶反射 Gray 码:
(1) 以 n-1 阶反射 Gray 码所给出的顺序列出 0 和 1 的 n-1 元组,把 0 添到每个 n-1 元组的开头,
(2) 再反序列出 n-1 阶反射 Gray 码的全部 n-1 元组, 并把1加到全部 n-1 元组的开头。
- n 阶反射 Gray 码以 00…0 开始,并以 10…0 结束。
- n 因为 00…0 与 10…0 只相差一位,因此该码是循环码。
递归方法构造反射 Gray 码,生成组合。
算法
逐次法
- 以反射 Gray 码的顺序直接生成 0,1 的n元组
初始:
当 时,进行以下操作:
(1) 计算
(2) 如果 是偶数,则改变
(3) 否则,确定 ,使得 且对于所有$ i< j, a_i =0 $
,然后,改变 。
定理
- 对于每一个正整数 n , 逐次法生成 n 阶反射Gray码
总结
字典序
- 与二进制数顺序一致
反射 Gray 码
相邻两个子集相差一个元素
递归法、逐次法
确定 n 元组在 Gray 码序表的准确位置
给定 Gray 码 . 对于 , 设
此时, 在 Gray码序表的位置和 在字典序表上的位置相同。即 在Gray码序表的位置是 。
4.4 生成 r 子集
定义
r 子集的字典序
令 { } 由前 个正整数组成。
- 给出 S 的元素的一个自然顺序:
设 是 的两个 组合,若 \ 中的最小整数属于A,则称 A先于B
组合表示为子序列
约定 { } 的 子集为如下形式:
性质
设 { }, 是 的一个 子集。
(1) 对任意的 ,
的以 开头的第一个后继一定先于以 开头的第一个后继(如果存在)。
(2) 如果 , 则 的直接后继为
。
定理
4.4.1
(1)
设 是 { } 的 子集。在字典序中, 第一个 子集是 , 最后一个 子集是 。 不是最后一个 子集。
(2)
设 。令 是满足 且使得 不同于 中任一数的最大整数。那么, 在字典序中, 的直接后继是:
直接后继求解算法
当 时 , 求 , 判断 是否属于{ };
找出满足 , 且 不在 { }中的最大的 , 记为 ,那么, 在字典序中, 的直接后继是 :
字典序 r 子集的生成算法
{ }的字典序 子集的生成算法:
从 开始,逐个列出直接后继,直至得到
- 初始: ;
- 当 时,进行以下操作:
(1) 确定最大整数k, 使得 ;
(2) 用 替换 .
定理
4.2.2
{ }的 子集 出现在 { }的 子集中的字典序中的位置号为:
第5章 二项式系数
组合证明
是一种依靠计数原理构建代数事实的证明方法
基本框架:
- 定义一个集合 ;
- 通过一种计数方式得出 ;
- 通过另一种计数方式得出 ;
- 得出结论 。
二项式定理
令 是一个正整数, 那么对于所有的 有:
其中:
5.1 帕斯卡三角形
定理
5.1.1
( Pascal 公式) 对于满足 的所有整数 和 , 有:
5.2 二项式定理
定理
5.2.1
令 是一个正整数, 那么对于所有的 有:
二项式系数的其他等式
方法
证明等式的方法
- 利用已有等式:帕斯卡公式
- 求导法、积分法
- 组合推理法
性质
组合推理路径数
从 点到 点,共有 种路径
组合定义扩展
扩展:
令 可取 , 可取 ,
定义二项式系数 为:
扩展定义 仍使Pascal公式成立
令 可取 , 可取 ,仍有:
5.3 二项式系数的单峰性
定义
单峰性
设序列 , 若存在一个整数 , , 使得:
那么, 称序列是 的。
注意
- 一定是序列中的最大数
- 不一定是唯一的
取整
设 为任意实数, 令 表示大于或等于 的最小整数,称强取整(上取整); 表示小于或等于 的最大整数,称弱取整(下取整).
定理
5.3.1
令 为正整数, 二项式系数序列是 ,其中:
- 若 是偶数:
- 若 是奇数:
5.3.2
二项式系数 的最大者是:
- ( 为偶数时)
- ( 为奇数时)
扩展 1
- 由集合的子集的包含关系定义的链与反链
- 由包含关系推广到一般偏序
定义
反链
令 是 个元素的集合, 上的一条反链是 的子集的一个集合 ,其中 中的子集不相互包含。
链
令 是 个元素的集合, 上的一条链是 的子集的集合 ,其中对于 中的每一对子集,总有一个包含在另一个之中:
对任意 ,且 ,则 或者
最大链
令 是 个元素的集合, 上的最大链 定义为: ,
满足:
(1) , 且
(2)
方法
构造反链
令 为 个元素的集合,一个构造反链的方法:
选择一个整数 ,取 为 所有的 子集的集合。该方法构成的反链最多含有 个子集。
构造最大链
从 中选择一个元素 , 形成 { }.
选择一个元素 , 形成 { }.
选择一个元素 形成 { }.
…
k. 选择一个元素 形成 { }.
…
n. 选择一个元素 形成 { }.
- S上的最大链与 S 的排列一一对应
- 最大链的数目为
链与反链的关系
- 上的一条链最多只能包含 的任意一条反链中的一个子集
- 上的一条反链最多只能包含 的任意一条链中的一个子集
定理
5.3.3
设 为 个元素的集合,则 上的一条反链最多包含 个子集
更强的结果
设 是为 个元素的集合,
- 如果n是偶数,则大小为 的唯一的反链是所有 子集的反链
- 如果n是奇数,则大小为 的反链有两个:
- 所有 子集构成的反链;
- 所有 子集构成的反链。
扩展 2
- 集合的包含关系是偏序关系
- 把链、反链的概念推广到偏序集
令 是一个有限偏序集,
- 链是 的一个子集, 其中任意两个元素都是可比的,
反链是 的一个子集, 其中任意两个元素都不可比.
极小元: 是偏序集的极小元当且仅当 中不存在
满足 的元素- 的所有极小元构成的子集是反链
- 极大元: 中不存在
满足 的元素- 的所有极大元构成的子集也是反链
定理
5.6.1
令 是一个有限偏序集, 并令 是最大链的大小, 则 可以被划分成 个反链,但不能划分为少于 个的反链。
5.6.2
令 是一个有限偏序集, 并令 是最大反链的大小, 则 可以被划分成 个链,但不能划分成少于 个链
定义
对称链划分
设 { }, 如果 的幂集 的一个链划分满足以下两个条件,则称其是一个对称链划分:
(1) 链中每一个子集比它前面的子集的元素个数多 ;
(2) 链中第一个子集与最后一个子集的大小和等于 。
如果这个链只含一个子集,那么这个子集既是第一个子集也是最后一个子集,所以其大小为 (此时, 为偶数)
方法
对称链划分的构造方法
基本思路:将 的所有子集划分为 个对称链。令 { } ,对 进行归纳构造:
对于 时的每一个含多个子集的链 ,可构造 时的两个链:
- 对 增加如下子集:在 的最后一个子集中增加 ,构成一个新子集
- 把 加到 中除最后一个子集之外的所有子集,并删除最后一个子集
注意:
- 对称链划分中的每一个链必须正好含有一个 子集(也正好含有一个 子集)
- 对称链划分中的链的个数等于:
5.4 多项式定理
定义
- 把二项式定理 扩展到
- 多项式系数: , 其中 是非负整数,且
- 表示重数分别为 的 种不同类型物品的多重集的排列数
- 二项式系数: , 可记为
定理
帕斯卡公式
- 二项式系数的帕斯卡公式
- 多项式系数的帕斯卡公式
5.4.1
设 n是正整数。对于所有的 , 有
其中求和是对 的所有非负整数解 $ n_1,
n_2, …, n_t $
进行的。
牛顿二项式定理
定理
5.5.1
令 是一个实数, 对于所有满足 的变量 有
其中,
如果 为整数,则就是二项式定理
等价形式
对满足 的任意 ,有
应用
求解任意精度平方根
令 ,有 ,对于 有:
因此,对 ,有:
(详细证明见ppt)