排容原理

来自testwiki
跳转到导航 跳转到搜索

-{T|zh-hans:容斥原理;zh-hant:排容原理}-

三個集的情況

-{A|zh-hans:容斥原理;zh-hant:排容原理}-(inclusion-exclusion principle)又称-{zh-hans:排容原理;zh-hant:容斥原理}-,在組合數學裏,其說明若A1, ..., An有限集,則 |i=1nAi|=i=1n|Ai|1i<jn|AiAj|+1i<j<kn|AiAjAk|+(1)n1|A1An|.

其中|A|表示A基數。例如在兩個集的情況時,我們可以通過將|A||B|相加,再減去其交集的基數,而得到其并集的基數。

描述

两个集合的容斥原理  

|AB|=|A|+|B||AB|

三个集合的容斥原理

|ABC|=|A|+|B|+|C||AB||AC||BC|+|ABC|

n个集合的容斥原理

      要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,然后减去所有两个集合相交的部分,再加回所有三个集合相交的部分,再减去所有四个集合相交的部分,依此类推,一直计算到所有集合相交的部分。

最终得到公式:

|i=1nAi|=i=1n|Ai|1i<jn|AiAj|+1i<j<kn|AiAjAk|+(1)n1|A1An|.

又可写成

|i=1nAi|=k=1n(1)k+1(1i1<<ikn|Ai1Aik|)

|i=1nAi|=J{1,2,,n}(1)|J|1|jJAj|.

概率论中的容斥原理

概率论中,对于概率空间(Ω,,)中的事件A1,……,An,当n = 2时容斥原理的公式为:

(A1A2)=(A1)+(A2)(A1A2),

n = 3时,公式为:

(A1A2A3)=(A1)+(A2)+(A3)(A1A2)(A1A3)(A2A3)+(A1A2A3)

一般地:

(i=1nAi)=i=1n(Ai)i,j:i<j(AiAj)+i,j,k:i<j<k(AiAjAk)  +(1)n1(i=1nAi),

也可以写成:

(i=1nAi)=k=1n(1)k1I{1,,n}|I|=k(AI),

对于一般的测度空间(S,Σ,μ)和有限测度的可测子集A1,……,An,上面的恒等式也成立,如果把概率测度换为测度μ

特殊情况

如果在容斥原理的概率形式中,交集AI的概率只与I中元素的个数有关,也就是说,对于{1, ..., n}中的每一个k,都存在一个ak,使得:

ak=(AI),对于每一个I{1,,n}(|I|=k),

则以上的公式可以简化为:

(i=1nAi)=k=1n(1)k1(nk)ak

这是由于二项式系数(nk)的组合解释。

类似地,如果对有限集合A1,……,An的并集的元素个数感兴趣,且对于{1, ..., n}中的每一个k,交集

AI:=iIAi

的元素个数都相同,例如ak = |AI|,与{1, ..., n}的k元素子集I无关,则:

|i=1nAi|=k=1n(1)k1(nk)ak.

在一般的测度空间(S,Σ,μ)和有限测度的可测子集A1,……,An的情况中,也可以进行类似的简化。

容斥原理的证明

欲证明容斥原理,我们首先要验证以下的关于指示函数的等式:

1i=1nAi=k=1n(1)k1I{1,,n}|I|=k1AI(*)

至少有两种方法来证明这个等式:

第一种方法 我们只需证明对于A1,……,An的并集中的每一个x,等式都成立。假设x正好属于m个集合(1 ≤ m ≤ n),不妨设它们为A1,……,Am。则x处的等式化为:

1=k=1m(1)k1I{1,,m}|I|=k1.

m元素集合中的k元素子集的个数,是二项式系数(mk) 的组合解释。由于1=(m0) ,我们有:

(m0)=k=1m(1)k1(mk).

把所有的项移到等式的左端,我们便得到(1 – 1)m的二项式展开式,因此可以看出,(*)对x成立。

第二种方法A表示集合A1,……,An的并集。于是:

0=(1A1A1)(1A1A2)(1A1An),

这是因为对于不在A内的x,两边都等于零,而如果x属于其中一个集合,例如Am,则对应的第m个因子为零。把右端的乘积展开来,便可得到等式(*)。

归纳法证明

S1=n(A1)+n(A2)+n(A3)++n(An)

S2=n(A1A2)+n(A1A3)++n(A1An)+n(A2A3)++n(An1An)

S3=n(A1A2A3)++n(An2An1An)

Sn=n(A1A2A3An)

求证 n(A1A2A3An)=S1S2+S3+(1)n1Sn.

证明: 当n=2时, n(A1A2)=n(A1)+n(A2)n(A1A2)=S1S2.

假设当n=k (k2)时,有 n(A1A2Ak)=S1S2+S3+(1)k1Sk.

n=k+1时, n(A1A2AkAk+1)=n((A1A2Ak)Ak+1)=n(A1A2Ak)+n(Ak+1)n((A1A2Ak)Ak+1)=n(A1A2Ak)+n(Ak+1)n((A1Ak+1)(A2Ak+1)(AkAk+1)).

∵ 当 \(n=k\) 时,上式成立, ∴ n(A1A2Ak+1)=S1S2+S3+(1)kSk+1.

综上所述,当n2时, n(A1A2An)=n(A1)+n(A2)++n(An)[n(A1A2)+n(A1A3)++n(An1An)]+[n(A1A2A3)+]+(1)n1n(A1A2An).

其它形式

有时容斥原理用以下的形式来表述:如果

g(A)=S:SAf(S)

那么:

f(A)=S:SA(1)|A||S|g(S)

在这种形式中可以看出,它是A的所有子集的偏序集合指标代数莫比乌斯反演公式

应用

在许多情况下,容斥原理都可以给出精确的公式(特别是用埃拉托斯特尼筛法计算素数的个数时),但是用处不大,这是因为它里面含有的项太多。即使每一个单独的项都可以准确地估计,误差累积起来仍然意味着容斥原理不能直接应用。在数论中,这个困难由维戈·布朗解决。开始时进展很慢,但他的想法逐渐被其他数学家所应用,于是便产生了许多各种各样的筛法。这些方法是尝试找出被“筛选”的集合的上界,而不是一个确切的公式。

错排

容斥原理的一个著名的应用,是计算一个有限集合的所有乱序排列的数目。一个集合A错排,是从AA的没有不动点的双射。通过容斥原理,我们可以证明,如果A含有n个元素,则乱序排列的数目为[n! / e],其中[x]表示最接近x的整数。

这也称为n子阶乘,记为!n。可以推出,如果所有的双射都有相同的概率,则当n增大时,一个随机双射是错排的概率迅速趋近于1/e

交集的计算

容斥原理与德·摩根定理结合起来,也可以用于计算集合的交集中元素的数目。设Ak表示Ak关于全集A补集,使得对于每一个k,都有AkA。于是,我们有:

i=1nAi=i=1nAi

这样便把计算交集的问题化为计算并集的问题。

参见

拓展阅读

参考文献

Template:Reflist

Template:Planetmath