• 容斥原理与多重集合


    问题一:多重集合的组合问题

    问题描述:给定3个a,4个b,5个c,现在要选10个元素,求一共有多少种组合?

    分析:本问题就是相当于求S={3·a,4·b,5·c}的10组合数。

    首先,多重集合的组合有一个定理,定理描述如下:

    设S是有k种类型对象的多重集合,每种元素均具有无限的重复数,那么S的r组合的个数等于:

    那么既然这样,我们令S∞={∞·a, ∞·b,∞·c},那么S的10-组合数为

    设集合A是S∞的10-组合全体,则|A|=66,现在要求在10-组合中的a的个数小于等于3,b的个数小于等于4,c的个数小于等

    于5的组合数.

    定义性质集合P={P1,P2,P3},其中: 

    P1:10组合中a的个数大于等于4;
    P2:10组合中b的个数大于等于5;
    P3:10组合中c的个数大于等于6;


    将满足性质Pi的10-组合全体记为Ai(1≤i≤3).

    那么,A1中的元素可以看作是由S∞的10-4=6组合再拼上4个a构成的,所以

    同理有:

     

    所以根据容斥原理,原问题的解为:


     

    问题二:方程解的个数问题

    (1)问题描述:已知非负整数不大于7,求方程整数解的个数。

     

    分析:其实用容斥,跟上题一样,先求出总数,因为不可能出现两个或两个以上的数大于等于8,所以这里就简单很多了。

    首先,S的10-组合数为:,由于只会出现中的一个大于等于8的情况,所以四种情况一样的,

    其结果都是,所以问题的解就是286-4*10=246

     

    (2)问题描述:求方程整数解的个数,其中

     

    分析:对于这个问题需要先转化一下就跟上题一样了。

    令:,然后就有,此类问题不再赘述。答案为21


     

     

    问题三:集合划分问题

    问题描述:将一个n元集合划分为r个非空子集,并给每个子集标上号1,2,3,...r,求划分方案数。

    分析:设S为将n元集划分成有序r部分的全部划分方案集,注意这里每一部分可以为空,那么我们用总数减去为空的情况就可

    以了,那么进一步有一个不为空,两个不为空,三个不为空,...等等。这样我们就可以容斥。

    我们知道 , , 

    所以最后得到方案数为:

  • 相关阅读:
    swift网络数据请求方法
    使用jQuery在javascript中自定义事件
    javascript循环事件只响应最后一次的问题处理
    关于PHP 时区错误的问题
    安装MySql出现Error Nr.1045的解决办法
    view的阴影效果shadowColor
    关于Swift中的泛函数find的问题
    [BZOJ3196][Tyvj1730]二逼平衡树
    [BZOJ4671]异或图
    [BZOJ4621]Tc605
  • 原文地址:https://www.cnblogs.com/james1207/p/3253795.html
Copyright © 2020-2023  润新知