伯乐论坛网

搜索
查看: 133|回复: 0

组合数学1-排列组合

[复制链接]

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-3-2 22:13:23 | 显示全部楼层 |阅读模式
  摘要: 组合数学的基本模型,以及排列组合的相关公式
【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:算法题刷刷
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings
<hr/>组合数学的核心内容是深入离散对象的计数方法,而计算机的核心内容是使用算法处理离散数据,因此随着计算机的发展,组合数学也成为了很重要的一个知识点,在力扣上,我们可以找到小几十道相关的题目。以前也拆解过组合数学相关的编程难题:【组合数学】马拦过河卒
组合数学知识还是有一定的连贯性的,因此想先分几个大部分把组合数学的核心知识点串一遍,然后再慢慢连载一些难题或者趣题。这几个大部分如下:

  • 排列组合
  • 母函数
  • 递推关系
  • 特殊计数序列
  • 指数型母函数
  • 容斥原理
  • 鸽巢原理
  • 群论
  • Polya定理
可以看到内容还是非常的多,但是只要不陷入到证明细节里,就会发现这些都还是属于比较有趣的内容,并且在计算机科学中的应用还是很广泛的。
本文是组合数学系列的第一篇文章,梳理一下组合数学的基本模型,以及排列组合的相关公式,非常基础,建议一定要掌握。主要内容如下:

  • 几个例子

    • 幻方,世界杯淘汰赛,14桥板,七桥问题

  • 基本模型:

    • 计数原则
    • 加法法则,乘法法则
    • 放球模型: 排列的递推。分步递推;分类递推
    • 格路模型: 杨辉三角,二项式定理

  • 排列组合

    • 无重排列: 线排列 -> 圆排列 -> 项链排列
    • 多重排列: 捆绑法(相邻约束);隔板法(分区域)
    • 无重组合
    • 可重组合: 构造;不定方程非负整数解;隔板法
    • 不相邻组合
    • 全排列生成算法: 递归法;字典序法;SJT算法

<hr/>在最开始首先介绍一些组合数学的资料,其中前三本是比较全面的理论性教程,最后一本是不太研究理论而注重应用的。

  • 《组合数学》第四版 卢开澄
  • 《组合数学》Richard A. Brualdi
  • 《组合数学》冯荣权
  • 《应用组合数学》[美] 罗伯茨 2007
这几本书也是参考了别人写的博客,书评,以及自己简要翻了翻,自己并没有详细看过,仅供参考,不过后面有时间的话我想楼一眼偏应用的那一本,要是看到什么有趣话题的话就写一写。
<hr/>组合数学发展史



如图,回顾数学的发展历程,有几个关键节点:
首先数学最早起源于计数,由计数引申出三个数学方向:算术、处等代数、几何学。对着发展的深入,到 16 世纪,发展出了初等数学理论体系。
初等数学产生之后,到 17 世纪,出现了变量的概念,进而产生了高等数学、线性代数、概率论,并且随着发展的深入,产生了分析数学的理论体系。
分析数学产生之后,随着计算机的发展,产生了组合数学这一分支。
组合数学是一门研究离散对象的科学。主要研究满足一定条件的离散对象的存在、计数、构造、优化等方面的问题。
组合数学三大问题:

  • 存在性
  • 计数性
  • 优化性
<hr/>一些例子

幻方
阿基米德手稿;14 桥板问题
组合数学名词起源 -- Leibniz, 1666 研究概率时
世界杯淘汰赛有多少场
七桥问题
<hr/>基本模型

计数原则: 无重复,无遗漏
加法法则、乘法法则
(1) 放球模型


  • 排列:P(n, r) n 个球取 r 个,放在 r 个不同的盒子
  • 组合:C(n, r) (也可以用\binom{n}{r}这个符号) n 个球取 r 个,放在 1 个盒子
P(n, r) = \frac{n!}{(n - r)!} \\  C(n, r) = \frac{P(n, r)}{r!} = \frac{n!}{(n - r)!r!} \\
排列的递推


  • 分步递推
P(n, r) = nP(n - 1, r - 1) \\

  • 分类递推
P(n, r) = P(n - 1, r) + rP(n - 1, r - 1) \\
很多组合恒等式可以用放球模型解释

C(n, r) = C(n, n - r)  \\  C(n, l)C(l, r) = C(n, r)C(n - r, l - r) \\
(2) 格路模型

杨辉三角



二项式定理

(a + b)^{n} = C(n, 0)a^{n} + C(n, 1)a^{n-1}b + \cdots + C(n, n)b^{n} \\ 2^{n} = C(n, 0) + C(n, 1) + \cdots + C(n, n) \\ 0^{n} = C(n, 0) - C(n, 1) + \cdots \pm C(n, n) \\
格路模型证明组合恒等式

动态规划求组合数的公式:
C(n, r) = C(n - 1, r) - C(n - 1, r - 1) \\
Chu-Vandermonde 恒等式:
\binom{m + n}{r} = \binom{m}{0}\binom{n}{r} + \binom{m}{1}\binom{n}{r - 1} + \cdots + \binom{m}{r}\binom{n}{0} \\
<hr/>排列和组合

线排列 -> 圆排列 -> 项链排列(圆排列基础上再考虑翻转)


  • 线排列: P(n, r)
  • 圆排列: P(n, r)/r
  • 项链排列: P(n, r)/2r
多重排列

P(n; r_{1}, r_{2}, \cdots, r_{t}) = \frac{n!}{(r_{1}!r_{2}!\cdots r_{t}!)} \\(a + b)^{n} = \sum_{0 \lt k \lt n}C(n, k)a^{k}b^{n-k} \\(a_{1}+a_{2}+\cdots+a_{t})^{n} = \sum\frac{n!}{r_{1}!r_{2}!\cdots r_{t}!}a_{1}^{r_{1}}\cdots a_{t}^{r_{t}} \\
隔板法:分区域问题
捆绑法: 相邻约束问题
可重组合


  • 无重组合: C(n, r):
用放球模型,相当于 n 个球有区别,r 个盒子无区别,每盒一个球。

  • 可重组合:C(n + r + 1, r):
用放球模型,相当于 r 个球无区别,n 个盒子有区别,盒子中球的个数不限。
可重组合计算

(1) 构造相关的无重组合


(2) 不定方程的非负整数解,以下不定方程的非负整数解个数为 C(n + b - 1, b)
x_{1} + \cdots + x_{n} = b \\
(3) 隔板法
不相邻组合

A = \{1, 2, \cdots, n\} 中取 r 个但是相邻元素不能同时取出: C(n - r + 1, r)。
全排列生成算法

(1) 递归法
(2) 字典序法
(3) SJT算法

  • 可移动数
  • Steinhaus-Johnson-Trotter 算法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2013 Comsenz Inc.Powered by Discuz!X3.4
快速回复 返回顶部 返回列表