[组合数学]容斥原理的初步总结

来源:互联网 发布:windows闭源 编辑:程序博客网 时间:2024/05/21 14:04

容斥原理

应用于计数集合划分有重叠,无法简单应用加法原理的情况下。主要方法是颠倒计数过程,先计数1组合~~n-1组合数,然后

根据容斥性质从总集合|S|中减去或加上相应计数。

=一般公式===========

---------
计算不具有某几个属性 物体个数:
公式:
  =|S|- ∑R-1 + ∑R-2 - ∑R-3 ... +(-1)^mR-m
  ---------
  一种情况的化简
   情况:各R-i组合个数相同(k个i组合计数相同)

   =a0 - C(m,1)a1 + C(m,2)a2 - C(m,3)a3 + ... + (-1)^k C(m,k)ak + ... + (-1)^m am 


---------
计算至少具有某几个属性之一 的物体个数
公式:
  =∑R-1 - ∑R-2 + ∑R-3 ... +(-1)^(m+1) R-m


=有限多重组合计数问题============
情况:n个不同元素,k种,非无限,没种限制为r1...rk。在n种元素中取r组合。
解决方法:
  按无限多重组合运算共C(n+k-1)种
  按1组合到k组合计算每种组合的补集的无限多重组合计数(1组合|A1|,|A2|,2组合|A1 & A2|...)
    其中|Ai|=C(r-ri-1+k-1,r-ri+i) (备注:r-ri-1为先取ai达到ri+1个后,进行无限多重组合计数的总位数)
公式:
  按容斥原理=[C(n+k-1) - 1组合 + 2组合 + 。。。 + (-1)^k k组合计数]


=错位排列问题===========
情况:每个元素有一个特定位。要求求出元素不在其原始位置的所有排列
解决方法:
  计算元素在特定位置的1组合、2组合...n组合情况下的所有排列数。
  按容斥原理从|S|中剪除或加入这些排列数。
公式:
  Dn = n!-C(n,1)(n-1)!+C(n,2)(n-2)!+...+(-1)^n C(n,n)(n-n)!
  经化简得到下面1式。
  Dn = n!(1-1/1!+1/2!-3/3!+...+(-1)^n 1/n!)
  Dn = nDn-1 + (-1)^n
  

=带禁止位排列==========
情况:典型的是非攻击车在棋盘上有某些位置禁止放置的情况
解决方法:
  首先计算在禁止位放置非攻击车的方案(r1、r2、...、rn个)组合情况下的所有排列数
  按容斥原理从|S|中剪除或加入这些排列数。
公式:
  Dn=n!-r1(n-1)!+r2(n-2)!+...+(-1)^k rk(n-k)!+...+(-1)^n rn

=相对禁止位排列==========
情况:集合{1,2,...,n}不出现12,23,34这种排列
解决方法:
  将12,23,34这种排列作为一个元素放在排列中,分别计算n-1个元素的1组合、2组合...n-1组合情况下的所有排列数
  按容斥原理从|S|中剪除或加入这些排列数。
公式:
  Qn=n! - C(n-1,1)(n-1)!+C(n-1,2)(n-2)!+...+(-1)^n-1 C(n-1,n-1)1!
  与禁止位排列联系后,公式可以转化为
  Qn = Dn + Dn-1 = (n+1)Dn-1 + (-1)^n

原创粉丝点击