【集合论】容斥原理 ( 包含排斥原理 | 示例 )

简介: 【集合论】容斥原理 ( 包含排斥原理 | 示例 )

文章目录

一、 容斥原理

二、 容斥原理 示例





一、 容斥原理


A 1 , A 2 , ⋯   , A n A_1 , A_2 , \cdots , A_nA

1


,A

2


,⋯,A

n


 是 n nn 个集合 ; 则 这 n nn 个集合 并集的元素个数 是 :


∣ ⋃ i = 1 n A i ∣ = ∑ i = 1 n ∣ A i ∣ − ∑ i < j ∣ A i ∩ A j ∣ + ∑ i < j < k ∣ A i ∩ A j ∩ A k ∣ − ⋯ + ( − 1 ) n − 1 ∣ A 1 ∩ A 2 ∩ ⋯ ∩ A n ∣ | \bigcup_{i=1}^{n} A_i | = \sum_{i = 1}^n | A_i | - \sum_{i < j} | A_i \cap A_j | + \sum_{i < j < k} | A_i \cap A_j \cap A_k | - \cdots + ( -1 )^{n - 1} | A_1 \cap A_2 \cap \cdots \cap An |

i=1

n


A

i


∣=

i=1

n


∣A

i


∣−

i<j


∣A

i


∩A

j


∣+

i<j<k


∣A

i


∩A

j


∩A

k


∣−⋯+(−1)

n−1

∣A

1


∩A

2


∩⋯∩An∣




解析 :


n nn 个集合进行并运算后 , 元素个数 , 通常使用 容斥原理 进行计算 ;


∑ i = 1 n ∣ A i ∣ \sum_{i = 1}^n | A_i |∑

i=1

n


∣A

i


∣ : 将每个集合中的 元素个数 相加 , 该值大于 总元素数 , 需要进行修正 ; ( 系数值 ( − 1 ) 0 (-1)^0(−1)

0

 )


∑ i < j ∣ A i ∩ A j ∣ \sum_{i < j} | A_i \cap A_j |∑

i<j


∣A

i


∩A

j


∣ : 减去两两相交的元素个数 , 该值又小于 总元素数 , 继续进行修正 ; ( 系数值 ( − 1 ) 1 (-1)^1(−1)

1

 )


∑ i < j < k ∣ A i ∩ A j ∩ A k ∣ \sum_{i < j < k} | A_i \cap A_j \cap A_k |∑

i<j<k


∣A

i


∩A

j


∩A

k


∣ : 加上三个集合相交的元素个数 , 该值大于 总元素数 , 继续进行修正 ; ( 系数值 ( − 1 ) 2 (-1)^2(−1)

2

 )


减去四个集合相交的元素个数 , 该值小于 总元素数 , 继续进行修正 ; ( 系数值 ( − 1 ) 3 (-1)^3(−1)

3

 )


⋮ \vdots⋮


( − 1 ) n − 1 ∣ A 1 ∩ A 2 ∩ ⋯ ∩ A n ∣ ( -1 )^{n - 1} | A_1 \cap A_2 \cap \cdots \cap An |(−1)

n−1

∣A

1


∩A

2


∩⋯∩An∣ : 加上 ( − 1 ) n − 1 ( -1 )^{n - 1}(−1)

n−1

 乘以 n − 1 n-1n−1 个集合相交的元素个数 ; ( 系数值 ( − 1 ) n − 1 (-1)^{n-1}(−1)

n−1

 )



上述 奇数个集合 交集元素个数 前系数是 正数 , 偶数个集合 交集元素个数 前系数是 负数 ;






二、 容斥原理 示例


1 11 ~ 10000 1000010000 之间 , 既不是某个整数的平方 , 又不是某个整数的立方 , 的数个数 ?




全集 : E EE 集合是全集 , 是 1 11 到 10000 1000010000 的自然数 , E EE 集合的个数 ∣ E ∣ = 10000 |E| = 10000∣E∣=10000



平方对应的数集合 A AA : A AA 集合是 某个数 的平方 对应的 某个数 集合 , A = { x ∈ E ∣ x = k 2 ∧ k ∈ Z } A = \{ x \in E | x = k^2 \land k \in Z \}A={x∈E∣x=k

2

∧k∈Z} , A AA 集合元素个数是 ∣ 100 ∣ |100|∣100∣ ;


10 0 2 = 10000 100^2 = 10000100

2

=10000 , 因此 A AA 集合的元素是 { 0 , 1 , 2 , ⋯   , 100 } \{0, 1, 2 , \cdots , 100 \}{0,1,2,⋯,100} , 元素个数有 100 100100 个 ; 1 2 , 2 2 , 3 3 , ⋯   , 10 0 2 1^2 , 2^2 , 3^3, \cdots ,100^21

2

,2

2

,3

3

,⋯,100

2

 都在 1 11 到 10000 1000010000 之间 , 10 1 2 = 10201 101^2 = 10201101

2

=10201 就超过 10000 1000010000 了 ;



立方对应的数集合 B BB : B BB 集合是 某个数 的立方 对应的 某个数 集合 , B = { x ∈ E ∣ x = k 3 ∧ k ∈ Z } B = \{ x \in E | x = k^3 \land k \in Z \}B={x∈E∣x=k

3

∧k∈Z} , A AA 集合元素个数是 ∣ 21 ∣ |21|∣21∣ ;


2 1 3 = 9261 21^3 = 926121

3

=9261 , 因此 B BB 集合的元素是 { 0 , 1 , 2 , ⋯   , 21 } \{0, 1, 2 , \cdots , 21 \}{0,1,2,⋯,21} , 元素个数有 21 2121 个 ; 1 3 , 2 3 , 3 3 , ⋯   , 2 1 3 1^3 , 2^3 , 3^3, \cdots ,21^31

3

,2

3

,3

3

,⋯,21

3

 都在 1 11 到 10000 1000010000 之间 , 2 2 2 = 10648 22^2 = 1064822

2

=10648 就超过 10000 1000010000 了 ;



计算 A ∩ B A \cap BA∩B 集合的交集 C CC : 元素个数 , 既是平方 , 又是立方 , 肯定是六次方的数 , C = { x ∈ E ∣ x = k 6 ∧ k ∈ Z } C= \{ x \in E | x = k^6 \land k \in Z \}C={x∈E∣x=k

6

∧k∈Z} , C CC 集合的元素个数是 4 44 ;


4 6 = 4096 4^6 = 40964

6

=4096 , 因此 C CC 集合的元素是 { 1 , 2 , 3 , 4 } \{1, 2 , 3, 4\}{1,2,3,4} , 元素个数有 4 44 个 ; 1 6 , 2 6 , 3 6 , 4 6 1^6 , 2^6 , 3^6, 4^61

6

,2

6

,3

6

,4

6

 都在 1 11 到 10000 1000010000 之间 , 5 6 = 15 , 625 5^6 = 15,6255

6

=15,625 就超过 10000 1000010000 了 ;




题目可以转化成 : 集合 Z ZZ 中 , 既不属于 A AA 集合 , 有不属于 B BB 集合 的数字 ;


集合 A AA 与 集合 B BB 并集是 A ∪ B A \cup BA∪B


上述并集 的 绝对补集 ∼ ( A ∪ B ) \sim ( A \cup B )∼(A∪B) 元素个数 ∣ ∼ ( A ∪ B ) ∣ |\sim ( A \cup B ) |∣∼(A∪B)∣ , 就是题目中要求的结果 ;



∣ ∼ ( A ∪ B ) ∣ = ∣ E ∣ − ∣ A ∪ B ∣ |\sim ( A \cup B ) | = |E| - |A \cup B|∣∼(A∪B)∣=∣E∣−∣A∪B∣


上述式子中 , ∣ E ∣ = 10000 |E| = 10000∣E∣=10000 , ∣ A ∪ B ∣ |A \cup B|∣A∪B∣ 值可以使用 容斥原理 进行计算 ;


∣ A ∪ B ∣ |A \cup B|∣A∪B∣ 两个集合并集的元素个数 , 可以使用两个集合的元素个数相加 , 然后减去两个集合交集的元素个数 ;


∣ A ∪ B ∣ = ∣ A ∣ + ∣ B ∣ − ∣ A ∪ B ∣ = 100 + 21 − 4 = 117 |A \cup B| = |A| + |B| - |A \cup B| = 100 + 21 - 4 = 117∣A∪B∣=∣A∣+∣B∣−∣A∪B∣=100+21−4=117



代入总的公式 : ∣ ∼ ( A ∪ B ) ∣ = ∣ E ∣ − ∣ A ∪ B ∣ = 10000 − 117 = 9883 |\sim ( A \cup B ) | = |E| - |A \cup B| = 10000 - 117 = 9883∣∼(A∪B)∣=∣E∣−∣A∪B∣=10000−117=9883


目录
相关文章
|
7月前
|
算法 测试技术 C#
【图论 状态压缩 枚举】2959. 关闭分部的可行集合数目
【图论 状态压缩 枚举】2959. 关闭分部的可行集合数目
|
算法
代码随想录算法训练营第二十六天 | LeetCode 39. 组合总和、40. 组合总和 II、131. 分割回文串
代码随想录算法训练营第二十六天 | LeetCode 39. 组合总和、40. 组合总和 II、131. 分割回文串
49 0
代码随想录Day22 LeetCode T39 组合总和 T40 组合总和II T131 分割回文串
代码随想录Day22 LeetCode T39 组合总和 T40 组合总和II T131 分割回文串
33 0
|
算法 Java 网络架构
代码随想录训练营day27| 39. 组合总和 40.组合总和II 131.分割回文串
代码随想录训练营day27| 39. 组合总和 40.组合总和II 131.分割回文串
离散数学_第二章:基本结构:集合、函数、序列、求和和矩阵(1)
离散数学_第二章:基本结构:集合、函数、序列、求和和矩阵(1)
216 0
【每日一题Day68】LC1759 统计同构字符串的数目 | 数学
思路:统计以每个字符为末尾的同构子字符串的最长长度j ,那么根据排列组合原理,以其为末尾的同构子字符串的数目为j个,累加可得最终结果
88 0
|
Scala 开发者
集合化简介绍和案例 | 学习笔记
快速学习集合化简介绍和案例
集合化简介绍和案例 | 学习笔记
|
存储 算法
一文搞懂全排列、组合、子集问题
Hello,大家好,我是bigsai,long time no see!在刷题和面试过程中,我们经常遇到一些排列组合类的问题,而全排列、组合、子集等问题更是非常经典问题。本篇文章就带你彻底搞懂全排列!
187 0
一文搞懂全排列、组合、子集问题
|
机器学习/深度学习
【组合数学】鸽巢原理 ( 鸽巢原理简单形式 | 鸽巢原理简单形式示例 1、2、3 )
【组合数学】鸽巢原理 ( 鸽巢原理简单形式 | 鸽巢原理简单形式示例 1、2、3 )
137 0
【组合数学】鸽巢原理 ( 鸽巢原理简单形式 | 鸽巢原理简单形式示例 1、2、3 )