集合A(|A|=n)上可以定义多少种不同的等价关系

集合A(|A|=n)上可以定义多少种不同的等价关系?

一个包含n元素的集合A,有 2 n 2^{n} 2n个子集, A × A A \times A A×A笛卡尔积集合中有 n 2 n^2 n2个元素,对应的不同的二元关系(子集)有 2 n × n 2^{n \times n} 2n×n个,那其中有多少个为等价关系呢?

看个栗子

例: 求出A={1,2,3}上所有的等价关系
求解思路:先求出A的所有划分, 然后根据划分写出对应的等价关系。

划分和等价关系为一一对应关系
划分里的元素即为等价关系得到的等价类
也就是说,划分即为商集

在这里插入图片描述
可见对应有五个等价关系。
让我们看看有什么规律:

每个划分块里面的元素范围为:[1,n]
每个划分块非空
每个划分块不交
所有划分块的并集为集合A本身

再看一个例子

n=1时,只有一个划分;
n=2时,一个划分块的情形有1个,2个划分块的有1个,共2种划分;
n=3时,一个划分块的情形有1个,2个划分块的有3个,3个划分块的有1个,共5种划分;
。。。

嗯!思考一下,我们可以归纳嘛!

找规律!!

n=11
n=22
n=35
n=415
n=n?

能看出规律吗?
不等差也不等比!
-------------------------------------------------------------------(这是一条无情的分割线)
看来没那么容易找规律?

一个直观的递归想法

f ( n ) = 操 作 ∗ f ( n − 1 ) + C f(n)=操作*f(n-1)+C f(n)=f(n1)+C
是不是适用呢?

代入递归思想

一般地,非空集合A上的等价关系与A上的划分一一对应。设n元集合上的划分有 B n B_n Bn种。
  
例2:设A={1,2,3,4},则A上的划分有如下四种情况:

  1. 元素4被单独分为一类,剩余3个元素随便划分,这样的划分总共有 B 3 B_3 B3种;
  2. 元素4与另3个元素中的某一个一起被分为一类,剩余2个元素随便划分,这样的划分总共有 B 2 B_2 B2种;
  3. 元素4与另3个元素中的某2个一起被分为一类,剩余1个元素随便划分,这样的划分总共有 B 1 B_1 B1种;
  4. 元素4与另3个元素一起被分为一类,剩余0个元素随便划分,这样的划分总共有 B 0 B_0 B0种;

哦哦哦出来了,出来了!!,
B 0 = 0 B_0=0 B0=0 B 1 = 1 B_1=1 B1=1呀,
(于是我们得到了结论)
并且其中

元素4和抽取的其他某个元素分为一类,满足组合形式即为 C 3 1 C_3^1 C31
元素4和抽取的其他两个元素分为一类,满足组合形式即为 C 3 2 C_3^2 C32
元素4和抽取的其他三个元素分为一类,满足组合形式即为 C 3 3 C_3^3 C33
同理
元素4和抽取的其他0个元素分为一类,满足组合形式即为 C 3 0 C_3^0 C30

因此,我们有
B 4 = C 3 0 B 3 + C 3 1 B 2 + C 3 2 B 1 + C 3 3 B 0 B_4=C_3^0B_3+C_3^1B_2+C_3^2B_1+C_3^3B_0 B4=C30B3+C31B2+C32B1+C33B0

一般规律

集合 A ( ∣ A ∣ = n ) = { a 1 , a 2 , . . . , a n } A(|A|=n)=\{ a_1,a_2,...,a_n\} A(A=n)={a1,a2,...,an}上可以定义多少种不同的等价关系?

元素 a n a_n an被单独分为一类,剩余n-1个元素随便划分,这样的划分总共有 C n − 1 0 B n − 1 C_{n-1}^0B_{n-1} Cn10Bn1种;
元素 a n a_n an和剩余n-1个中抽取的某个元素分为一类,剩余n-2个元素随便划分,划分总共有 C n − 1 1 B n − 2 C_{n-1}^1B_{n-2} Cn11Bn2种;
元素 a n a_n an和剩余n-1个中抽取的某两个元素分为一类,剩余n-3个元素随便划分,划分总共有 C n − 1 2 B n − 3 C_{n-1}^2B_{n-3} Cn12Bn3种;
元素 a n a_n an和剩余n-1个中抽取的某三个元素分为一类,剩余n-4个元素随便划分,划分总共有 C n − 1 3 B n − 4 C_{n-1}^3B_{n-4} Cn13Bn4种;
… …
元素 a n a_n an和剩余n-1个中抽取的n-1个元素分为一类,剩余0个元素随便划分,划分总共有 C n − 1 n − 1 B 0 C_{n-1}^{n-1}B_{0} Cn1n1B0种;

因此,我们有
B n = C n − 1 0 B n − 1 + C n − 1 1 B n − 2 + C n − 1 2 B n − 3 + C n − 1 3 B n − 4 + . . . . . . + C n − 1 n − 1 B 0 B_n= C_{n-1}^0B_{n-1}+ C_{n-1}^1B_{n-2}+ C_{n-1}^2B_{n-3}+ C_{n-1}^3B_{n-4}+......+ C_{n-1}^{n-1}B_{0} Bn=Cn10Bn1+Cn11Bn2+Cn12Bn3+Cn13Bn4+......+Cn1n1B0

这就是递归定义出来的结果!
我们可以一一验证是正确的。

拓展

B n B_n Bn被称为 Bell Number
详情请见:https://mathworld.wolfram.com/BellNumber.html

思考

还有别的方法吗?
例如:
划分即为序列插空分成若干部分,每部分非空不交,即:
a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an

若分成n部分,即:
a 1 ∣ a 2 ∣ . . . ∣ a n a_1 | a_2| ...|a_n a1a2...an

若分成2部分,即为
a 1 ∣ a 2 , . . . , a n a_1|a_2,...,a_n a1a2,...,an a 1 , a 2 ∣ . . . , a n a_1,a_2 | ...,a_n a1,a2...,an,或 a 1 , a 2 , a 3 , ∣ . . . , a n a_1,a_2,a_3,|...,a_n a1,a2,a3,...,an等。
此外,还需要考虑序列的排序,因为
a 1 ∣ a 2 , . . . , a n a_1|a_2,...,a_n a1a2,...,an a 2 , ∣ a 2 , . . . , a n a_2,|a_2,...,a_n a2,a2,...,an是不一样的。

你能从中得到规律吗?
期待不同的回答。

  • 26
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
这是一个组合数学问题,我们可以使用 Burnside 引理来解决。Burnside 引理是一个计数定理,可以用于计算一个群在一些操作下的不动点个数。 对于这个问题,我们可以使用置换群 $S_n$,它包含 $n!$ 个置换,每个置换都对应着集合 $A$ 上的一个等价关系。我们需要计算的是在这 $n!$ 个置换中有多少个是等价的。 对于一个置换 $\sigma \in S_n$,我们定义它的循环节数为 $\operatorname{lcm}(k_1, k_2, \ldots, k_m)$,其中 $k_1, k_2, \ldots, k_m$ 是 $\sigma$ 的所有循环的长度。例如,对于置换 $(1\ 2\ 3)(4\ 5)$,它的循环节数为 $\operatorname{lcm}(3, 2) = 6$。 根据 Burnside 引理,不同等价关系的个数等于所有置换的循环节数的平均数。也就是说,我们需要计算: $$ \frac{1}{n!} \sum_{\sigma \in S_n} \operatorname{lcm}(k_1, k_2, \ldots, k_m) $$ 其中 $k_1, k_2, \ldots, k_m$ 是 $\sigma$ 的所有循环的长度。这个式子看起来很难计算,但是我们可以使用 Polya 定理来简化它。 Polya 定理是一个计数定理,可以用于计算一个群在一些操作下的循环节数。我们在这里简单介绍一下它的用法。对于一个置换群 $G$,我们可以定义它的一个操作为一个二元组 $(g, x)$,其中 $g \in G$,$x$ 是一个元素。这个操作将 $x$ 变成 $g(x)$。我们需要计算 $G$ 在所有操作下的不动点个数之和。根据 Polya 定理,这个和等于 $$ \frac{1}{|G|} \sum_{g \in G} a(g)^{c(g)} $$ 其中 $a(g)$ 是 $g$ 操作下的不动点个数,$c(g)$ 是 $g$ 的循环节数。 对于这个问题,我们可以使用 $S_n$ 的所有置换作为操作。对于一个置换 $\sigma \in S_n$,我们将它表示成一个 $n$ 元组 $(a_1, a_2, \ldots, a_n)$,其中 $a_i$ 是 $\sigma(i)$。我们定义操作 $(\tau, (a_1, a_2, \ldots, a_n))$ 将元组 $(a_1, a_2, \ldots, a_n)$ 变成 $(\tau(a_1), \tau(a_2), \ldots, \tau(a_n))$。 我们需要计算 $S_n$ 在所有操作下的不动点个数之和。根据 Polya 定理,这个和等于 $$ \frac{1}{n!} \sum_{\sigma \in S_n} 2^{c(\sigma)} $$ 其中 $c(\sigma)$ 是 $\sigma$ 的循环节数。注意到这个式子只和 $\sigma$ 的循环节数有关,不和具体的置换有关。因此,我们可以将它改写成 $$ \frac{1}{n!} \sum_{k=1}^n p(n, k) 2^{k} $$ 其中 $p(n, k)$ 表示将 $n$ 个元素划分成 $k$ 个非空的循环的方案数。它的值可以使用 Bell 数来计算。也就是说, $$ p(n, k) = \sum_{i=0}^k {k \choose i} B_{n-i} $$ 其中 $B_n$ 是第 $n$ 个 Bell 数。它的递推式是 $$ B_{n+1} = \sum_{k=0}^n {n \choose k} B_k $$ 边界条件是 $B_1 = 1$。 综上所述,我们可以使用下面的 Python 代码来解决这个问题:
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小邹子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值