热门标签 | 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] )中,介绍了一个著名的关于二项式系数的公式:

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

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

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

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

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



推荐阅读
  • 本文探讨了Java编程中MVC模式的优势与局限,以及如何利用Java开发一款基于鸟瞰视角的赛车游戏。 ... [详细]
  • 尽管PHP是一种强大且灵活的Web开发语言,但开发者在使用过程中常会陷入一些典型的陷阱。本文旨在列出PHP开发中最为常见的10种错误,并提供相应的预防建议。 ... [详细]
  • 版权所有声明:本文为原创内容,作者为谷哥的小弟,博客地址:http://blog.csdn.net/lfdfhl。文章讲述了作者与一位学生WLY的故事,以及如何帮助他提高英语水平,最终成功进入软件开发领域。 ... [详细]
  • 本文探讨了STL迭代器的最佳实践,包括iterator与const_iterator、reverse_iterator及其const版本之间的关系,以及如何高效地转换和使用这些迭代器类型。 ... [详细]
  • 收割机|篇幅_国内最牛逼的笔记,不接受反驳!!
    收割机|篇幅_国内最牛逼的笔记,不接受反驳!! ... [详细]
  • 本文详细介绍如何在 macOS 上编译 FFmpeg 3.1.1,并将其集成到 iOS 项目中,包括必要的环境配置和代码示例。 ... [详细]
  • 本文详细介绍了如何使用递归方法对栈中的所有元素进行排序,确保从栈顶到底部的元素按升序排列。通过具体的代码示例,帮助读者理解栈排序的核心思想及实现步骤。 ... [详细]
  • HTML与Android TextView中的文本样式调整方法及实践
    本文详细介绍了如何在HTML中调整下划线的粗细,并在Android的TextView中应用HTML样式,如设置下划线和加粗效果。通过具体的代码示例,展示了如何在不同版本的Android系统中正确使用Html.fromHtml方法来实现这些效果。 ... [详细]
  • 本文探讨了a.out和ELF文件格式中魔数的历史背景及其在现代操作系统中的应用。参考资料包括《程序员的自我修养》第3.4章节以及多个在线资源。 ... [详细]
  • 2020年末最后机会!加入CSDN官方插件内测赢取丰厚奖励
    CSDN官方推出的全新插件已上线,为程序员提供更高效的工作体验。如果你还不了解这款插件,那么你可能已经错过了一部分精彩。现在,加入我们的内测活动,不仅可以提升你的工作效率,还有机会赢取丰厚奖励。 ... [详细]
  • Windows 10 小故障,微软发布修复更新
    近期发现Windows 10存在一个小问题,微软已迅速响应并发布了相应的补丁更新。详情请见下文。 ... [详细]
  • 技术总监的角色定位与代码实践
    关于技术总监是否应当参与代码编写,这一议题始终伴随着技术行业的成长而引发广泛的讨论。本文旨在从多个角度探讨技术总监参与代码编写的必要性和影响因素,包括公司背景、发展阶段及团队规模等。 ... [详细]
  • 探讨30至35岁程序员如何规划职业生涯,通过案例分析和专业建议,帮助程序员优雅地应对职业发展的关键期。 ... [详细]
  • 深入理解Java NIO:基础概念与原理
    本文介绍了Java NIO(New Input/Output)的基本概念,包括同步与异步、阻塞与非阻塞等核心理念,以及NIO相对于传统IO的优势和应用场景。通过详细解析这些概念,帮助读者更好地理解和掌握NIO的使用。 ... [详细]
  • 本文探讨了即使实现了财务自由,为何仍有许多人选择继续职场拼搏的原因,以及这种选择背后的深层心理与职业动力。阅读大约需要4分钟。 ... [详细]
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社区 版权所有