集合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

相关文章

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

基于Redis有序集合实现滑动窗口限流的步骤

《基于Redis有序集合实现滑动窗口限流的步骤》滑动窗口算法是一种基于时间窗口的限流算法,通过动态地滑动窗口,可以动态调整限流的速率,Redis有序集合可以用来实现滑动窗口限流,本文介绍基于Redis... 滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(