zoukankan      html  css  js  c++  java
  • 广义容斥-二项式反演-容斥系数

    对所谓“至少满足i个条件的Q(i)”及其与P(j)关系的真正理解

    下面的内容是很久以前写的,过了这么久看前面容斥系数(二项式反演)的复习的时候突然对一些二项式系数意义不明白了,于是特地来写个博客搞一搞。

    众所周知我们容斥的时候往往会预先从(n)个元素中钦点(i)个,然后剩下的元素状态任意,来计算所谓“满足至少(i)个元素的方案数(即(Q(i)))”

    我们尝试理解(Q(i)(ileq j))对某个恰好满足(j)个条件的方案数(P(j))的影响

    (Q(i))已经钦点了(i)个元素,这其中也包括了(P(j))所满足(j)个条件中的(i)个,还需要在剩下的(n-i)个元素中钦点(j-i)个,于是就有(inom{n}{i}inom{n-i}{j-i}),但是这样是有重复计数的,我们来尝试化简式子,使他尽量满足携带(inom{n}{j})

    [inom{n}{i}inom{n-i}{j-i}\ egin{aligned} &=frac{n^{underline i}}{i!}frac{{(n-i+1)}^{underline {j-i}}}{(j-i)!}\ &=frac{n^{underline i}}{i!}frac{{(n-i+1)}^{underline {j-i}}}{(j-i)!}frac{j^{underline i}}{j^{underline i}}\ &=frac{n^{underline j}}{j!}frac{j^{underline i}}{i!}\ &=inom{n}{j}inom{j}{i} end{aligned} ]

    所以对于每个(P(j))(Q(i))中被计算了(inom{j}{i})

    还有另外一种解释,考虑一种具体的包括(j)种方案的状态(S),一开始在(n)个限制中钦点(i)个,会包含这(S)(j)个中(i)个的方案数明显是(inom{j}{i}),但事实上我们对于一种确定由哪些限制组成的方案(S)只需要钦点一次

    而后面(n-i)个限制都处于任意的状态,于是一定有对应的满足情况,所以一个准确的包含了(j)个限制的状态(S)也就被计算了(inom{j}{i})次,这也代表着一个(P(j))(Q(i))中被计算了(inom{j}{i})

    容斥系数的构造

    接着来看二项式反演

    目的是求恰好满足(k)个要求的方案数(P(k))

    考虑还是用满足至少(i)个条件的(Q(i)),不过要为原来的式子构造容斥系数(alpha(j))

    [sum_{i=0}^{n}inom{n}{i}alpha(i)Q(i) ]

    可以考虑(P(i)​)被算了几次。

    [sum_{i=0}^{n}inom{n}{i}alpha(i)Q(i)=sum_{i=0}^n{P(i)sum_{j=0}^ninom{i}{j}alpha(j)} ]

    目的是强制使得(P(k)=sum_{i=0}^n{P(i)sum_{j=0}^ninom{i}{j}alpha(j)})成立。

    所以容斥系数的效果实际上就是

    [sum_{j=0}^ninom{i}{j}alpha(j)=[i==k] ]

    发现(j>i)时其实没用,变成(sum_{j=0}^iinom{i}{j}alpha(j)=[i==k])

    (alpha(i))单独丢出来,发现可以(n^2)搞出每个容斥系数,即

    [alpha(i)=[i==k]-sum_{j=0}^{i-1}inom{i}{j}alpha(j) ]

    恰好满足(k)个要求的方案数对应的(alpha(i))对应的可以取(alpha(j)=inom{j}{k}(-1)^{j-k})

    (i<k)时式子始终为(0),当(igeq k)时有

    [egin{aligned} & sum_{j=0}^iinom{i}j{}alpha(j)\ = & sum_{j=0}^i{inom{i}{j}inom{j}{k}(-1)^{j-k}}\ = & sum_{j=k}^{i}inom{i}{j}inom{j}{k}(-1)^{j-k}\ = & sum_{j=0}^{i-k}{inom{i}{j+k}inom{j+k}{k}(-1)^j}\ = & sum_{j=0}^{i-k}frac{i^{underline{j+k}}(j+k)^{underline{k}}}{(j+k)!k!}(-1)^j\ = & sum_{j=0}^{i-k}frac{i^{underline{k}}(i-k)^{underline{j}}(j+k)^{underline{k}}}{k!(j+k)^{underline{k}}j!}(-1)^j\ = & inom{i}{k}sum_{j=0}^{i-k}frac{(i-k)^{underline{j}}}{j!}(-1)^j\ = & inom{i}{k}sum_{j=0}^{i-k}inom{i-k}{j}(-1)^j\ = & [i-k==0]\ = & [i==k] end{aligned} ]

    二项式反演

    其实上面讲的是二项式反演的另一种形式(雾

    [f(n) = sum_{i = 0}^{n}{g(i)inom{n}{i}} Longleftrightarrow g(n) = sum_{i = 0}^n{(-1)^{n-i}inom{n}{i}f(i)} ]

    证明

    [egin{aligned} g(n) =& sum_{i = 0}^n{(-1)^{n-i}inom{n}{i} sum_{j = 0}^{i}{g(j) inom{i}{j}}}\ =& sum_{j = 0}^n{g(j) sum_{i = j}^{n}{(-1)^{n - i} inom{n}{i}inom{i}{j} }}\ =& sum_{j = 0}^n{g(j)sum_{i = j}^{n}{(-1)^{n - i}inom{n}{j} inom{n - j}{i - j}}}\ =& sum_{j = 0}^n{g(j)inom{n}{j}sum_{i = j}^{n}{(-1)^{n - i}inom{n - j}{i - j}}}\ =& sum_{j = 0}^n{g(j)inom{n}{j}(-1+1)^{n-j}}\ =& inom{n}{n}g(n) \ =&g(n)\ end{aligned} ]

    所以这个是正确的。

    意义:(先证明再说意义还行

    (f(n))一般情况下代表至多满足(n)个条件的方案数,对应地,(g(n))表示恰好满足(n)个条件的方案数。

    当然有时候其实是反过来的,定义(f(i))是至少满足(i)个约束的方案数,(g(n))是恰满

    (n)个约束的方案数,那么:

    [g(k)=sum_{i=k}^n{(-1)^{i-k}inom{i}{k}inom{n}{i}f(i)} ]

    证明就是一开始提到的构造容斥系数(alpha(j))那一坨

  • 相关阅读:
    jMeter 里 CSV Data Set Config Sharing Mode 的含义详解
    如何使用 jMeter Parallel Controller
    使用 Chrome 开发者工具 coverage 功能分析 web 应用的渲染阻止资源的执行分布情况
    使用 Chrome 开发者工具的 lighthouse 功能分析 web 应用的性能问题
    关于 SAP 电商云首页加载时触发的 OCC API 请求
    SAP UI5 确保控件 id 全局唯一的实现方法
    SAP 电商云 Accelerator 和 Spartacus UI 的工作机制差异
    介绍一个好用的能让网页变成黑色背景的护眼 Chrome 扩展应用
    Chrome 开发者工具 performance 标签页的用法
    Client Side Cache 和 Server Side Cache 的区别
  • 原文地址:https://www.cnblogs.com/cjc030205/p/11638086.html
Copyright © 2011-2022 走看看