热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

容斥原理的证明_容斥原理三集合公式解释

容斥原理的证明_容斥原理三集合公式解释容斥原理的证明原链接地址容斥原理(翻译)-vici-C++博客       我们要证明下面的等式:                其中B代表全


容斥原理的证明


原链接地址

容斥原理(翻译) – vici – C++博客

       我们要证明下面的等式:

       容斥原理的证明_容斥原理三集合公式解释

         其中B代表全部Ai的集合

         我们需要证明在Ai集合中的任意元素,都由右边的算式被正好加上了一次(注意如果是不在Ai集合中的元素,是不会出现在右边的算式中的)。

         假设有一任意元素在kAi集合中(k>=1),我们来验证这个元素正好被加了一次:

         size(C)=1时,元素x被加了k次。

         size(C)=2时,元素x被减了C(2,k)次,因为在k个集合中选择2个,其中都包含x

         size(C)=3时,元素x被加了C(3,k)次。

         ……

         size(C)=k时,元素x被加/减了C(k,k)次,符号由sign(-1)^(k-1)决定。

         size(C)>k时,元素x不被考虑。

         然后我们来计算所有组合数的和。

         容斥原理的证明_容斥原理三集合公式解释

         由二项式定理,我们可以将它变成

 
    容斥原理的证明_容斥原理三集合公式解释


 

         我们把x取为1,这时容斥原理的证明_容斥原理三集合公式解释表示1-T(其中Tx被加的总次数),所以容斥原理的证明_容斥原理三集合公式解释,证明完毕。

容斥原理的证明_容斥原理三集合公式解释容斥原理的证明_容斥原理三集合公式解释容斥原理的证明_容斥原理三集合公式解释

         此处f(Y)代表满足匹配集合Y的字符串数。

         如果我们将所有的ans(X)相加,就可以得到最终结果:

         容斥原理的证明_容斥原理三集合公式解释

         这样,就得到了一个复杂度容斥原理的证明_容斥原理三集合公式解释的解法。

容斥原理的证明_容斥原理三集合公式解释X的结果都是相同的,其符号都为容斥原理的证明_容斥原理三集合公式解释。所以可以用如下公式求解:

         容斥原理的证明_容斥原理三集合公式解释

         这样就得到了一个复杂度容斥原理的证明_容斥原理三集合公式解释的解法。

         现在我们来求解第二个问题:能满足至少k个匹配的字符串有多少个。

         显然的,我们可以用问题一的方法来计算满足kn的所有结果。问题一的结论依然成立,不同之处在于这个问题中的X不是大小都为k的,而是>=k的所有集合。

         如此进行计算,最后将f(Y)作为另一个因子:将所有的ans做和,有点类似二项式展开:

容斥原理的证明_容斥原理三集合公式解释

在《具体数学》( Graham, Knuth, Patashnik. “Concrete Mathematics” [1998] )中,介绍了一个著名的关于二项式系数的公式:

容斥原理的证明_容斥原理三集合公式解释

根据这个公式,可以将前面的结果进行化简:

容斥原理的证明_容斥原理三集合公式解释

那么,对于这个问题,我们也得到了一个容斥原理的证明_容斥原理三集合公式解释的解法:

容斥原理的证明_容斥原理三集合公式解释



推荐阅读
author-avatar
-林之涵_396
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有