算法_3 : 组合数学:排列组合

来源:互联网 发布:ipad 电容笔 知乎 编辑:程序博客网 时间:2024/06/07 08:30

四个基本计数原理

加法原理

  • 描述_1: 设集合S被划分成两两不相交的部分 S1,S2,...,Sn 则 S的对象数目可以通过确定它的每一个部分对象的数目相加得到
    |S|=|S1|+|S2|+......+|Sn|

  • 描述_2: 如果有p种方法能够从一堆中选出一个物体,又有q种方法从另一堆中选择出一个物体,那么从两堆中选出一个物体有p+q种方法;

乘法原理

  • 描述_1: 令S是对象有序对(a, b) 的集合, 其中第一个对象a来自大小为 p的一个集合, 而对于对象 a的每个选择,对象 b有q种选择。 于是 S的大小是pq
    |S|=pq

  • 描述_2: 如果第一项任务是p个结果, 而不论第一项的结果如何,第二项任务都有q个结果,那么这两项任务连续执行就有pq个结果

减法原理

  • 补集合

除法原理

  • 描述:S 是一个有限集合, 把它划分成 k个部分,使得每一个部分包含的对象数目相同。于是,此划分中的部分数目
    k=|S|

排列

P(n,r)=n(n1)......(nr+1)

  • 线性排列
  • 循环排列(除法原理):n个元素集合的循环 r排列数目是
    P(n,r)r=n!r(nr)!

组合(子集)

  • (nr)=P(n,r)r!=n!r!(nr)!

  • (nr)=(nnr)

  • (nk)=(n1k)+(n1k1)

多重集合的排列

  • 设S是多重集合, 它有 k种不同类型的对象,且每一种类型的有限重复数分别为n1,n2,......,nk, 设 S的大小为 n=n1+......+nk, 则S的排列数是
    n!n1!....nk!

多重集合的组合

  • 设S有k种类型的对象的多重集合,每种元素均具有无限的重复数,那么 S的 r组合的个数等于
    (r+k1r)=(r+k1k1)

鸽巢原理

简单形式

  • 如果要把n+1 个物体放入 n个盒子, 那么至少有一个盒子包含两个或者更多的物体

加强版

  • q1,....,qn 是正整数, 如果将: q1+q2+......+qnn+1
    个物体放入 n个盒子, 那么或者第一个盒子至少含有q1 个物体, 或者第二个盒子至少含有q2 个物体,……, 或者 第n个盒子至少有qn 个物体

Ramsey定理

  • 如果m>=2n>=2 是两个整数,则存在正整数p,使得: Kp>Km,Kn
  • ramsey数 r(m, n) 使 Kp>Km,Kn 成立的最小整数p

生成排列组合

  • n! 2πn(ne)n

二项式系数


容斥原理

  • 集合S中不具有性质 P1,P2,......,Pm 的对象个数由下面的交错表达式给出:
    |A1¯¯¯¯A2¯¯¯¯......Am¯¯¯¯¯|=|S||Ai|+|AiAj||AiAjAk|+......+(1)m|Ai......Am|

  • 推论
    集合S中至少具有性质P1,P2,......,Pm 之一的对象个数由下式给出:
    |A1A2......Am|=|Ai||AiAj|+|AiAjAk|.......+(1)m+1|A1A2....Am|


递推关系和生成函数

生成函数

  • g(x)=h0+h1+......+hmxm

指数生成函数

  • 数列 h0,h1,......,hn,...... 的指数生成函数定义是
    g(e)(x)=n=0hnxnn!=h0+h1x+h2x22!+......+hnxnn!+......

线性其次递推方程

非其次递推方程


特殊的计数序列

catalan数

  • catalan序列是:C0,C1,......,Cn,......
    其中Cn=1n+1(2nn)

  • 由n个 +1 和 n个 -1 构成的 2n项序列
    a1,a2,...,a2n
    其部分和总满足:a1+a2+......+ak>=0
    序列个数等于第n个catanlan数
    Cn=1n+1(2nn)

差分序列和Stirling数

  • 计数差分表第0条对角线
  • S(p,k)=c(p,k)k! ……………(0<=k<=p)…….第二类Stirling数
  • stirling数的递推:s(p,k)=s(p1,k1)+ks(p1,k)
  • 第二类Stirling数是把p个元素集合划分到k个不可区分的盒子且没有空盒子的划分数

  • 第一类stirling数
    s(p,k)=(p1)s(p1,k)

  • 第一类stirling数 s(p,k) 计数是把p个对象排成 k个非空循环排列的方法数。
0 0
原创粉丝点击