zoukankan      html  css  js  c++  java
  • 2017.3.24组合数学学习——容斥原理

    容斥原理

    定理:
    设P1、P2、…、Pm是S的对象所涉及的m个性质,
    并设Ai={x:x属于S且x具有性质Pi} (1<=i<=m)是S的具有性质Pi的对象构成的子集
    那么不具有性质P1,P2,…Pm的对象个数=
    |S|-Σ|Ai|+Σ|Ai∩Aj|-Σ|Ai∩Aj∩Ak|+…+(-1)^m|A1∩A2∩…∩Am|
    一般情况下,此式的项数为
    C(m,0)+C(m,1)+C(m,2)+…+C(m,m)=2^m

    推论:
    集合S中至少具有性质P1、P2、…、Pm之一的对象个数为
    Σ|Ai|-Σ|Ai∩Aj|+Σ|Ai∩Aj∩Ak|-……+(-1)……(m+1)|A1∩A2∩…∩Am|
    证明:
    集合S中至少具有性质P1、P2、…、Pm之一的对象个数
    = 集合S-集合S中不具有性质P1,P2,…Pm的对象个数
    = |S|-(|S|-Σ|Ai|+Σ|Ai∩Aj|-Σ|Ai∩Aj∩Ak|+…+(-1)^m|A1∩A2∩…∩Am|)
    = Σ|Ai|-Σ|Ai∩Aj|+Σ|Ai∩Aj∩Ak|-……+(-1)……(m+1)|A1∩A2∩…∩Am|

    例1:求M,A,T,H,I,S,F,U,N的排列中有多少排列使得单词 MATH,IS,FUN 都不作为连续字母出现在排列中
    解:
    1、|S|=9!
    2、把MATH看成一个符号,集合S有6个元素,MATH,I,S,F,U,N 6!
    同理,把IS,FUN看为一个符号 分别为 8!, 7!
    3、A1∩A2 :MATH,IS,F,U,N 5个元素 5!
    同理,A1∩A3,A2∩A3 分别为 4! 6!
    4、A1∩A2∩A3:MATH,IS,FUN 3个元素 3!
    ∴ans=9!-6!-8!-7!+5!+4!+6!-3!
    错解:
    A1∩A2指的是集合MATH,IS,F,U,N ,不是集合 MATHIS,F,U,N

    容斥原理的特殊情况:
    假设在容斥原理中出现的集合A1∩A2∩A3∩…∩Ak的大小仅依赖k,而不依赖在交集中使用了哪k个集合
    那么存在常数a0,a1,a2,…,am使得
    a0=|S|
    a1=|A1|=|A2|=…=|Am|
    a2=|A1∩A2|=……=|Am-1∩Am|
    a3=|A1∩A2∩A3=……Am-2∩Am-1∩Am|
    ……
    am=|A1∩A2∩A3∩……∩Am|
    在这种情况下,容斥原理可以化简为
    a0-C(m,1)*a1 + C(m,2)*a2 - C(m,3)*a3 +…+(-1)^m *C(m,m)am

    注:例1不符合这种情况,因为与所选集合的字母数量有关,即依赖于在交集中使用了哪k个集合

    由k种不同对象且每种对象具有无限重复数的多重集合的r组合个数=C(r+k-1,r)
    那么如果是有限重复数呢?

    例:确定多重集合T={3*a,4*b,5*c}的10组合数目
    设集合S为集合W={∞*a,∞*b,∞*c}的10组合
    设性质P1为W的10组合中,a出现>3次,P2为W的10组合中,b出现>4次,P3为W的10组合中,c出现>5次
    那么ans=不具有性质P1P2P3的10组合的集合大小
    |S|=C(10+3-1,10)
    集合A1为W的10组合中,a至少出现4次的组合组成的。集合A1可以看做,集合W的6组合加入4的a,
    所以|A1|=W的6组合数目=C(6+3-1,6)
    同理,|A2|=C(5+3-1,5),|A2|=C(4+3-1,4)
    集合A1∩A2是W的10组合中,a至少出现4次,b至少出现5次的集合组成的。可以看做集合W的1组合+4个a+5个b
    所以|A1∩A2|=C(1+3-1,1)
    同理,|A1∩A3|=C(0+3-1,0) |A2∩A3|=0
    |A1∩A2∩A3|=0
    把这些结果放到容斥原理中即可得出答案

  • 相关阅读:
    springboot项目引入通用mapper(tk.mybatis.mapper)的时候一些可能会踩的坑
    Zookeeper和Dubbo基本配置和调用
    Zookeeper和Dubbo介绍
    Git的基础命令大全,拉取推送,分支,合并,冲突
    Maven内置tomcat
    Maven高级,依赖传递和解决冲突,版本锁定,提取统一版本号
    SpringMvc的自定义异常,交给SpringMvc管理
    IDEA创建MavenWeb项目慢,问题根除
    Docker安装指南
    Docker容器入门
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/6613120.html
Copyright © 2011-2022 走看看