数论——容斥原理、莫比乌斯函数
1、容斥原理:
- 时间复杂度为 O ( 2 N ) O(2^N) O(2N),下面会有证明。
- 举一个简单的例子:用韦恩图来思考,求 S 1 S1 S1、 S 2 S2 S2、 S 3 S3 S3三个集合的原有元素的并集,那么结果为: S 1 + S 2 + S 3 − S 1 ∩ S 2 − S 1 ∩ S 3 − S 2 ∩ S 3 + S 1 ∩ S 2 ∩ S 3 S1+S2+S3-S1 \cap S2-S1 \cap S3-S2 \cap S3+S1 \cap S2 \cap S3 S1+S2+S3−S1∩S2−S1∩S3−S2∩S3+S1∩S2∩S3。
- 以此类推到 N N N个圆的交集:用容斥原理的方法答案为所有单个集合的元素个数-所有两个集合互相交集的元素个数+所有三个集合互相交集的元素个数…
- 我们知道容斥原理公式一共涉及到的元素个数为: C N 1 + C N 2 + C N 3 + . . . + C N N C_N^1+C_N^2+C_N^3+...+C_N^N CN1+CN2+CN3+...+CNN。因为 C N 0 + C N 1 + C N 2 + C N 3 + . . . + C N N = 2 n C_N^0+C_N^1+C_N^2+C_N^3+...+C_N^N=2^n CN0+CN1+CN2+CN3+...+CNN=2n,因此 C N 1 + C N 2 + C N 3 + . . . + C N N = 2 n − 1 C_N^1+C_N^2+C_N^3+...+C_N^N=2^n-1 CN1+CN2+CN3+...+CNN=2n−1,因此容斥原理公式一共涉及到的元素个数为 2 n − 1 2^n-1 2n−1。关于此公式( C N 0 + C N 1 + C N 2 + C N 3 + . . . + C N N = 2 n C_N^0+C_N^1+C_N^2+C_N^3+...+C_N^N=2^n CN0+CN1+CN2+CN3+...+CNN=2n)的证明,我们可以假设等号左边为对于 N N N个物品所有选法的总个数,等号右边考虑每个物品选与不选两种情况,因此等式成立。
- 因此容斥原理的时间复杂度为 O ( 2 N ) O(2^N) O(2N)。
- 容斥原理的证明:对于容斥原理 ∣ S 1 ∪ S 2 ∪ . . . ∪ S N ∣ = ∑ i = 1 N S i − ∑