对所谓“至少满足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))那一坨