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

2023-12-19 12:38

本文主要是介绍集合A(|A|=n)上可以定义多少种不同的等价关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

离散笔记

  • 集合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是不一样的。

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

这篇关于集合A(|A|=n)上可以定义多少种不同的等价关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/512189

相关文章

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明