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

容斥原理的证明_容斥原理三集合公式解释容斥原理的证明原链接地址容斥原理(翻译)-vici-C++博客       我们要证明下面的等式:                其中B代表全部Ai的集合         我们需要证明在Ai集合中的任意元素,都由右边的算式被正好加上了一次(注意如果是不在Ai集合中的元素,是不会出现在右边的算式中的)。         假设有一任意元素在k个A

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

容斥原理的证明

原链接地址

容斥原理(翻译) – 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被加的总次数),所以容斥原理的证明_容斥原理三集合公式解释,证明完毕。

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

(自己画的图示理解)


      题目

    能满足一定数目匹配的字符串的个数问题

       给出n个匹配串,它们长度相同,其中有一些’?’表示待匹配的字母。然后给出一个整数k,求能正好匹配k个匹配串的字符串的个数。更进一步,求至少匹配k个匹配串的字符串的个数。

         首先我们会发现,我们很容易找到能匹配所有匹配串的字符串。只需要对比所有匹配串,去在每一列中找出现的字母(或者这一列全是’?’,或者这一列出现了唯一的字母,否则这样的字符串就存在),最后所有字母组成的单词即为所求。

         现在我们来学习如何解决第一个问题:能正好匹配k个匹配串的字符串。

         我们在n个匹配串中选出k个,作为集合X,统计满足集合X中匹配的字符串数。求解这个问题时应用容斥原理,对X的所有超集进行运算,得到每个X集合的结果:

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

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

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

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

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

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

         这个算法可以作一些改进,因为在求解ans(X)时有些Y集合是重复的。

         回到利用容斥原理公式可以发现,当选定一个Y时,所有 容斥原理的证明_容斥原理三集合公式解释X的结果都是相同的,其符号都为容斥原理的证明_容斥原理三集合公式解释。所以可以用如下公式求解:

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

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

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

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

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

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

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

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

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

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

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

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


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/215448.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 搭建自己的Android浏览器(一)[通俗易懂]

    搭建自己的Android浏览器(一)[通俗易懂]搭建自己的Android浏览器(一)最近尝试Android端开发,想开发一个自己的Android浏览器,根据自己的想法个性化定制,开博客用于记录和分享。Android开发环境搭建浏览器设想

  • pycharm报错:Process finished with exit code -1073741819 (0xC0000005)

    pycharm报错:Process finished with exit code -1073741819 (0xC0000005)这个错误是真的奇怪,网上说法居然各个都不一样,而我解决的方法也都和大家不一样。所以如果你遇到了这个问题,可以从以下几个方面找找原因,希望能帮到你。我觉得最有可能的是第六种,可以直接看第六种方法。。第一种:读取csv文件如果你读取了csv文件,请参考这个,否则直接跳过原地址:https://stackoverflow.com/questions/28447567/python-termi…

  • c++ string头文件详解[通俗易懂]

    标准c++中string类函数介绍注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用=进行赋值操作,==进行比较,+做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。…

  • 代码注册广播需要调用registerReceiver()方法_怎么把程序注册成服务

    代码注册广播需要调用registerReceiver()方法_怎么把程序注册成服务分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!                &

  • siamfc++代码_c语言代码怎么理解

    siamfc++代码_c语言代码怎么理解文章目录前言一、论文翻译二、论文代码1.backbone网络前言记录自己阅读复现SiamFC的全过程,包括论文翻译,代码理解等一、论文翻译论文原文:链接:https://pan.baidu.com/s/1wvXra0Ji6L9IMVZikaUs9Q提取码:s7t3本文是Siam系列跟踪论文的开篇之作,兼容了速度与精度,引起跟踪社区极大的关注。论文中对一些细节描述分非常充分,适合精读本文。二、论文代码代码参考;https://github.com/HonglinChu/SiamTra.

  • DOS下第一个Java程序–HelloWorld[通俗易懂]

    DOS下第一个Java程序–HelloWorld[通俗易懂]DOS下第一个Java程序–HelloWorld1.Java开发环境的搭建1.1安装JDK首先,需要安装JDK(JavaDevelopmentKit,即Java开发工具包),现在用的最多的是1.7和1.8版本。JDK包含了JRE(JavaRuntimeEnvironment,即Java运行环境),JRE包含了JVM(JavaVirtualMachine,即Java虚拟机)。所…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号