C1 排列组合

S0 计数原理

1)加法原理: S = S 1 + S 2 + ⋯ + S k , S i ∩ S j = ∅ ⟹ ∣ S ∣ = ∑ i ∣ S i ∣ \mathbb{S = S_1 + S_2 + \dots + S_k, S_i \cap S_j = \varnothing \Longrightarrow |S| = \sum\limits_i |S_i|} S=S1​+S2​+⋯+Sk​,Si​∩Sj​=∅⟹∣S∣=i∑​∣Si​∣

2)减法原理: U = S + A , S ∩ A = ∅ ⟹ ∣ S ∣ = ∣ U ∣ − ∣ A ∣ \mathbb{U = S+A,S\cap A = \varnothing \Longrightarrow |S| = |U| -|A|} U=S+A,S∩A=∅⟹∣S∣=∣U∣−∣A∣

3)乘法原理: ∣ A × B ∣ = ∣ A ∣ × ∣ B ∣ , A 、 B \mathbb{|A\times B | = |A|\times|B|,A、B} ∣A×B∣=∣A∣×∣B∣,A、B 的集合特征不应当有依赖关系

  • 技巧:

    • 约束性强的元素先分层
    • 不相邻问题:隔板法;减法(捆绑使之相邻)

4)除法原理: A \mathbb{A} A 中每 k k k 个元素具备相同特征,则 ∣ S ∣ = ∣ A ∣ / k \mathbb{|S| = |A| / k} ∣S∣=∣A∣/k

S1 排列与组合

1)排列:顺序有关计数

  • n n n 元集 r r r 线性排列个数: P ( n , r ) = A n r = n ! ( n − r ) ! P(n,r)=A_n^r=\frac{n!}{(n-r)!} P(n,r)=Anr​=(n−r)!n!​

    • 循环排列个数: P ( n , r ) / r = n ! r ( n − r ) ! P(n,r)/r = \frac{n!}{r(n-r)!} P(n,r)/r=r(n−r)!n!​

      圆桌 ≠ 项链:顺逆时针前者不同后者相同

    • 递推: A n k = n A n − 1 n − 1 = A n − 1 k + k A n − 1 k − 1 A_n^k = nA_{n-1}^{n-1} = A_{n-1}^k + k A_{n-1}^{k-1} Ank​=nAn−1n−1​=An−1k​+kAn−1k−1​

  • 无限重 k k k 元多重集 r r r 线性排列: k r k^r kr

    循环排列: 1 r ∑ d ∣ r ϕ ( r d ) k d \frac{1}{r}\sum\limits_{d|r}\phi(\frac{r}{d}) k^d r1​d∣r∑​ϕ(dr​)kd

  • 有限 k k k 元多重集,重数为 n 1 , n 2 , ⋯ , n k n_1,n_2,\cdots,n_k n1​,n2​,⋯,nk​,线性排列数: n ! n 1 ! n 2 ! ⋯ n k ! \frac{n!}{n_1!n_2!\cdots n_k!} n1​!n2​!⋯nk​!n!​

    • 证明:

      法一: A n n 1 A n − n 1 n 2 A n − n 1 − n 2 n 3 ⋯ A n − n 1 − ⋯ − n k − 1 n k = n ! / ∏ i n i ! A_{n}^{n_1}A_{n-n_1}^{n_2}A_{n-n_1-n_2}^{n_3}\cdots A_{n-n_1-\cdots - n_{k-1}}^{n_k}= n! /\prod_i n_i! Ann1​​An−n1​n2​​An−n1​−n2​n3​​⋯An−n1​−⋯−nk−1​nk​​=n!/∏i​ni​!

      法二: n n n 个元素指派到 k k k 个不同部分

    • n n n 个不同元素分配到 k k k 个容量为 n 1 , n 2 , ⋯ , n k n_1,n_2,\cdots,n_k n1​,n2​,⋯,nk​ 的盒子,不计盒子顺序:仅当 n 1 = ⋯ = n k n_1 = \cdots=n_k n1​=⋯=nk​ 成立 n ! k ! n 1 ! n 2 ! ⋯ n k ! \frac{n!}{k!n_1!n_2!\cdots n_k!} k!n1​!n2​!⋯nk​!n!​

    • 生成方式: g ( x ) = ( 1 + x 1 + x 1 2 + ⋯ + x 1 n 1 ) ( 1 + x 1 + x 1 2 + ⋯ + x 1 n 2 ) ⋯ g(x) = (1+x_1+x_1^2+\cdots +x_1 ^ {n_1})(1+x_1+x_1^2+\cdots +x_1 ^ {n_2})\cdots g(x)=(1+x1​+x12​+⋯+x1n1​​)(1+x1​+x12​+⋯+x1n2​​)⋯

2)组合:顺序无关计数

  • n n n 元集 r r r 组合个数: C ( n , r ) = C n r = n ! ( n − r ) ! C(n,r)=C_n^r=\frac{n!}{(n-r)!} C(n,r)=Cnr​=(n−r)!n!​

  • 无限 k k k 元多重集 r r r 组合: C r + k − 1 r C_{r+k-1}^r Cr+k−1r​ = C r + k − 1 k − 1 = C_{r+k-1}^{k-1} =Cr+k−1k−1​

    即 ∑ i = 1 k x i = r , x i ≥ 0 \sum\limits_{i=1}^ k x_i = r, x_i\ge 0 i=1∑k​xi​=r,xi​≥0 的解数 a r a_r ar​

     组合意义解法:使用隔板法解决生成函数法:$g(x) = \frac{1}{(1-x)^k}=\sum\limits_{r=0}^\infin a_r x^r$([负二项式系数]())
    
  • 有限 k k k 元多重集,重数为 n 1 , n 2 , ⋯ , n k n_1,n_2,\cdots,n_k n1​,n2​,⋯,nk​, r r r 组合:

    1. 计算无限重情况下的组合数 S \mathbb{S} S
    2. 将无限重换成有限重,计算 x i ≥ n i + 1 x_i\ge n_i + 1 xi​≥ni​+1 , ∑ i = 1 k x i = r \sum\limits_{i=1}^k x_i = r i=1∑k​xi​=r 的组合数 A i \mathbb{A}_i Ai​
    3. 由容斥原理,所求为 ⋂ i = 1 n A i ˉ \bigcap\limits_{i = 1} ^ n \bar{A_i} i=1⋂n​Ai​ˉ​

思路:第一层——有序无序,第二层——是否有重复元素

S2 二项式系数

1)起源:帕斯卡三角形

1
1 1
1 2 1
1 3 3 1
……

2)组合数-格路径意义:从 (0,0) 到 (n,k),限制每次只能到正下或斜右下,路径总数

3)二项式定理: ( x + y ) n = ∑ k = 0 n C n k x k y n − k (x+y)^n = \sum\limits_{k=0}^n C_n^kx^ky^{n-k} (x+y)n=k=0∑n​Cnk​xkyn−k

  • 多项式定理: ( x 1 + x 2 + ⋯ + x k ) n = ∑ ( n n 1 n 2 ⋯ n k ) x 1 n 1 x 2 n 2 ⋯ x k n k (x_1+x_2+\cdots + x_k)^n = \sum {n \choose n_1 \ n_2 \ \cdots \ n_k}x_1^{n_1}x_2^{n_2}\cdots x_k^{n_k} (x1​+x2​+⋯+xk​)n=∑(n1​ n2​ ⋯ nk​n​)x1n1​​x2n2​​⋯xknk​​

    • 多项式系数: ( n n 1 n 2 ⋯ n k ) = n ! n 1 ! n 2 ! ⋯ n k ! {n \choose n_1 \ n_2 \ \cdots \ n_k} = \frac{n!}{n_1!n_2!\cdots n_k!} (n1​ n2​ ⋯ nk​n​)=n1​!n2​!⋯nk​!n!​
    • ( n n 1 n 2 ⋯ n k ) = ( n − 1 n 1 − 1 n 2 ⋯ n k ) + ( n − 1 n 1 n 2 − 1 ⋯ n k ) + ⋯ + ( n − 1 n 1 n 2 ⋯ n k − 1 ) {n \choose n_1 \ n_2 \ \cdots \ n_k} = {n - 1 \choose n_1 - 1\ n_2 \ \cdots \ n_k}+ {n - 1 \choose n_1 \ n_2 - 1 \ \cdots \ n_k}+ \cdots + {n - 1 \choose n_1 \ n_2 \ \cdots \ n_k - 1} (n1​ n2​ ⋯ nk​n​)=(n1​−1 n2​ ⋯ nk​n−1​)+(n1​ n2​−1 ⋯ nk​n−1​)+⋯+(n1​ n2​ ⋯ nk​−1n−1​)
  • 广义二项式系数: C a k = { ∏ i = 0 k − 1 ( a − k ) k ! k ≥ 1 0 k = 0 C_a^k=\begin{cases} \frac{\prod\limits_{i = 0}^{k-1}(a-k)}{k!} & k\ge 1 \\ 0 & k = 0 \end{cases} Cak​=⎩⎪⎨⎪⎧​k!i=0∏k−1​(a−k)​0​k≥1k=0​
    • 牛顿二项式定理: 0 < ∣ x ∣ < ∣ y ∣ , ( x + y ) a = ∑ k = 0 ∞ C a k x k y n − k 0\lt |x|\lt |y|,(x+y)^a=\sum\limits_{k=0}^\infin C_a^kx^ky^{n-k} 0<∣x∣<∣y∣,(x+y)a=k=0∑∞​Cak​xkyn−k
    • 负二项式系数: C − n k = ( − 1 ) k C n + k − 1 k C_{-n}^k = (-1)^kC^k_{n+k-1} C−nk​=(−1)kCn+k−1k​
      • 负二项分布: 1 ( 1 − p x ) n = ∑ k = 0 ∞ C − n k ( − p x ) k = ∑ k = 0 ∞ C n + k − 1 k ( p x ) k \frac{1}{(1-px)^n}=\sum\limits_{k=0}^\infin C_{-n}^k(-px)^k = \sum\limits_{k=0}^\infin C_{n+k-1}^k(px)^k (1−px)n1​=k=0∑∞​C−nk​(−px)k=k=0∑∞​Cn+k−1k​(px)k

        第 n n n 次成功前失败次数的分布

4)组合数恒等式

  • C n r = C n n − r C_n^r = C_n^{n-r} Cnr​=Cnn−r​
  • r n C n r = C n − 1 r − 1 \frac{r}{n} C_n^r = C_{n-1}^{r-1} nr​Cnr​=Cn−1r−1​
  • ∑ k = 0 n C n k = 2 n \sum\limits_{k=0}^nC_n^k = 2^n k=0∑n​Cnk​=2n
    • $$ ∑ k = 0 n k C n k = n 2 n − 1 \sum\limits_{k=0}^nkC_n^k = n2^{n-1} k=0∑n​kCnk​=n2n−1
    • ∑ k = 0 ⌊ n / 2 ⌋ C n 2 k + 1 = ∑ k = 0 ⌊ n / 2 ⌋ C n 2 k = 2 n − 1 \sum\limits_{k=0}^{\lfloor{n/2}\rfloor} C_n^{2k+1} = \sum\limits_{k=0}^{\lfloor{n/2}\rfloor} C_n^{2k} = 2^{n-1} k=0∑⌊n/2⌋​Cn2k+1​=k=0∑⌊n/2⌋​Cn2k​=2n−1
    • ∑ k = 0 n ( C n k ) 2 = C 2 n n \sum\limits_{k=0}^n (C_n^k)^2 = C_{2n}^n k=0∑n​(Cnk​)2=C2nn​
      • ∑ k = 0 n C m 1 k C m 2 n − k = C m 1 + m 2 n \sum\limits_{k=0}^n C_{m_1}^kC_{m_2}^{n-k} = C_{m_1+m_2}^n k=0∑n​Cm1​k​Cm2​n−k​=Cm1​+m2​n​(Vandemonde卷积公式)
  • C n k = C n − 1 k + C n − 1 k − 1 C_n^k = C_{n-1}^k +C_{n-1}^{k-1} Cnk​=Cn−1k​+Cn−1k−1​ (Pascal公式)
    • C n + 1 p + 1 = ∑ k = 0 n C k p = ∑ k = 0 n C k k − p C_{n+1}^{p+1} = \sum\limits_{k=0}^n C_k^p = \sum\limits_{k=0}^nC_k^{k-p} Cn+1p+1​=k=0∑n​Ckp​=k=0∑n​Ckk−p​
    • C r + k + 1 k = ∑ i = 0 k C r + i i , r ∈ R C_{r+k+1}^k = \sum\limits_{i=0}^k C_{r+i}^{i} ,r\in R Cr+k+1k​=i=0∑k​Cr+ii​,r∈R
  • C n m C m k = C n k C n − m m − k C_n^mC_m^k = C_n^kC_{n-m}^{m-k} Cnm​Cmk​=Cnk​Cn−mm−k​

5)单峰性: C n 0 < ⋯ < C n ⌊ n / 2 ⌋ = C n ⌊ ( n + 1 ) / 2 ⌋ > ⋯ > C n n C_n^0\lt \cdots \lt C_n^{\lfloor n/2 \rfloor}=C_n^{\lfloor (n+1)/2 \rfloor}\gt\cdots\gt C_n^n Cn0​<⋯<Cn⌊n/2⌋​=Cn⌊(n+1)/2⌋​>⋯>Cnn​

S3 偏序

1)反链: n n n 元素集 S \mathbb{S} S 幂集的子集 A \mathscr{A} A,元素互不包含;

  • Sperner 定理: n n n 元集的任何反链至多包含 C n ⌊ n / 2 ⌋ C_n^{\lfloor n / 2 \rfloor} Cn⌊n/2⌋​ 个集合;

    记 A k \mathbb{A}_k Ak​ 为含有 k k k 个元素的子集,则最大反链由所有 { A k n = 2 k A k − 1 = A k + 1 n = 2 k − 1 \begin{cases} \mathbb{A}_k & n=2k\\ \mathbb{A}_{k-1} = \mathbb{A}_{k+1} & n=2k-1 \\ \end{cases} {Ak​Ak−1​=Ak+1​​n=2kn=2k−1​ 构成

2): n n n 元素集 S \mathbb{S} S 幂集的子集 A \mathscr{A} A,且构成其上一个全序 < A , ⊆ \mathscr{A} ,\sube A,⊆>

  • 最大链:包含各种大小的集合各一个

    • 若 ∣ K ∣ = k |\mathbb{K}|= k ∣K∣=k 则包含 K \mathbb{K} K 的最大链个数 k ! ( n − k ) ! k!(n-k)! k!(n−k)!

3)命题:反链与链至多只有一个公共元素 由定义易得

4)推广:若 < X , ≤ \mathbb{X},\le X,≤>是有限偏序集:

  • 定义推广:

    • 链与反链: X \mathbb{X} X 的子集,反链中任意元素不可比,链中任意元素可比
  • 性质
    • X \mathbb{X} X 分成反链的个数的上= 是最大链长度

    • X \mathbb{X} X 分成链的个数的上界 = 最大反链大小(Dilworth 定理)

      < P ( X ) , ⊆ \mathscr{P}(\mathbb{X}),\sube P(X),⊆>上的链剖分的归纳生成

        假设 $\mathbb{X}_n = \{1,2,\cdots,n\}$ 显然有 $\mathbb{X}_1$ 的链剖分:$\varnothing \sube \{1\}$     对 $\mathbb{X}_{n-1}$ 的每一条链 $\mathbb{A}_1\sube \mathbb{A}_2 \sube \cdots \sube \mathbb{A}_k$:$\mathbb{X}_n$ 的链剖分由两部分组成:$\mathbb{A}_1\sube \mathbb{A}_2 \sube \cdots \sube \mathbb{A}_k \sube \ \mathbb{A}_k\cup \{n\}$$\mathbb{A}_1 \cup \{n\} \sube \mathbb{A}_2  \cup \{n\}\sube \cdots \sube \mathbb{A}_{k-1} \cup \{n\},k\ge 2$
      

      至此给出了 Sperner 定理的一个构造性证明

组合数学$1排列组合相关推荐

  1. java 穷举 排列组合,JavaScript递归穷举所有排列组合并找出重复值

    null export default { data() { return { resultArr:[] } }, mounted(){ this.sss('aaba','abac'); this.s ...

  2. php 1到9加,php通过排列组合实现1到9数字相加都等于20的方法

    摘要:本文实例讲述了php通过排列组合实现1到9数字相加都等于20的方法.分享给大家供大家参考.具体实现方法如下:<?php set_time_limit(0); /* 函数说明:huoqu_z ...

  3. 论排列组合,持续更新

    今天刚好碰到了一个排列组合问题,因为之前对这方面的学习比较少,所以用的非常蠢的方法做了四位数中取三位的排列,写的程序太有局限性,源码如下 #define _CRT_SECURE_NO_WORNINGS ...

  4. 无重复字符串的排列组合

    无重复字符串的排列组合.编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同. 示例1: 输入:S = "qwe" 输出:["qwe", " ...

  5. 【牛客每日一题】4.16 逆序对 ( 数学 , 排列组合 ,快速幂 , 快速乘 )

    [每日一题]逆序对 链接:https://ac.nowcoder.com/acm/problem/14731 来源:牛客网 题目描述 求所有长度为n的01串中满足如下条件的二元组个数: 设第i位和第j ...

  6. js 排列 组合 的一个简单例子

    最近工作项目需要用到js排列组合,于是就写了一个简单的demo. 前几天在网上找到一个写全排列A(n,n)的code感觉还可以,于是贴出来了, 排列的实现方式: 全排列主要用到的是递归和数组的插入 比 ...

  7. 【数论】排列组合学习笔记

    目录 简介 加原理和乘法原理 加法原理 乘法原理 两原理的区别 例子 排列 例子 简介 排列组合是组合数学中的一种.排列就是指从给定个数的元素中取出指定个数的元素进行排序:组合则是指从给定个数的元素中 ...

  8. .NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)

    阅读目录 1.KwCombinatorics基本介绍 2.足球彩票排列组合应用 3.排列组合生成代码与测试 今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinator ...

  9. 蓝桥杯——说好的进阶之去反复元素的排列组合

    将待排列(组合)的数组,先分别统计出种类和个数,然后进行避免反复的排列(组合). /* 1,1,2,3的排列组合 去反复* (借此复习排列组合)* * 1:2 2个1* 2:1 1个2* 3:1 1个 ...

  10. 【COGS】2287:[HZOI 2015]疯狂的机器人 FFT+卡特兰数+排列组合

    [题意][COGS 2287][HZOI 2015]疯狂的机器人 [算法]FFT+卡特兰数+排列组合 [题解]先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式. 设C(n)表示第 ...

最新文章

  1. “新视野”和“最远点”的约会
  2. 【Socket网络编程】4.tcp和udp的客户端和服务端收发流程
  3. 聊聊 MySql 索引那些事儿
  4. 【Knockout】二、监控属性Observables
  5. 数学之路(2)-数据分析-R基础(3)
  6. Boost:移动容器的测试程序
  7. mysql windows ad_您可以使用PHP获得Windows(AD)用户名吗?
  8. CodeForces - 1497D Genius(dp)
  9. OsharpNS轻量级.net core快速开发框架简明入门教程
  10. 代码智能技术如何应用到日常开发?
  11. 4月第3周业务风控关注 | 文化部再次审查直播和游戏产品,已下架4939款直播应用...
  12. 随想录(OllyDbg和IDA Pro的配合使用)
  13. java两个项目之间通过webservice调用-源码仅供参考
  14. 超火爆的6 个必学持续集成工具,测试人的福音
  15. java 集合工具类_Java集合中Collections工具类总结
  16. 【电力负荷预测】基于matlab粒子群算法优化支持向量机预测电力负荷【含Matlab源码 1225期】
  17. python计算矩阵的散度_Python Sympy计算梯度、散度和旋度的实例
  18. pg8168改mac命令_Realtek 8168网卡改MAC地址教程
  19. 面试题19/leetcode10:正则表达式匹配 C++
  20. 谷歌浏览器取消idm在微信读书PC页面自动下载pdf

热门文章

  1. 欧姆龙plc编程软件CX-Progammer v9.8升级教程
  2. 如何记账,记录家庭收支情况
  3. weui UI库适用范围
  4. 跟我一起写 Makefile
  5. Hall定理(bzoj 1135: [POI2009]Lyz)
  6. 专题二:浅谈社交行业如何有效反欺诈
  7. android webview使用html5input id=input type=file/ 上传相册、拍照照片
  8. maven 报错[WARNING] The artifact aspectj:aspectjrt:jar:1.5.4 has been relocated to org.aspectj:aspectj
  9. 假如工资有段位,你是个啥?
  10. cocos2d-js的(layer)生命周期,ctor,onEnter,onExit的使用