大家好,又见面了,我是你们的朋友全栈君。
1、什么是映射?
我们考虑这样的关系:对于集合X中的每一个元素,都有唯一的属于集合Y中的元素被其所指向,我们就称这样的关系叫映射(英:mapping,日:写像(しゃぞう))。这是用很通俗的语言解释定义的映射,而相信大家也都在高中数学必修1里面学过,对映射这个概念想必也都不陌生吧!
从这个定义中,你能get到什么信息呢?
①“X集合中的每一个元素”:如果有集合X的元素不对应集合Y的某个元素的,则不是映射。
②“都有唯一的Y与之对应”:如果有集合X的元素同时指向了集合Y中的两个以上个元素的,则不是映射。
因此,要进入到对今天的主题——单射、满射与双射的区分,首先你得判断,是不是集合X中的所有元素都指向,且只指向了集合Y当中的一个元素呢?只有if(判定的结果==true)时,我们才可以进行下一步的区分判断;else,它连映射都不是,还判断个什么呢?
这就好比,如果说你是一个高三的学生,你连高一年级都不属于,还要去问你是不是高一(7)班的吗?
小结:如果两个集合各自的元素之间的指向关系满足以下两个条件,它就是一个映射关系。此时方可进一步判断,它具体是哪一种映射了。
(1)集合X中的所有元素均有指向集合Y中的某元素,而没有谁不指向的;
(2)集合X中的所有元素均只指向了集合Y中的一个元素,而没有谁指向两个或更多的。
2、映射的分类
2.1 单射
所有被X里的元素指向的Y里的元素,都是只被一个X的元素所指向的,而没有被两个或更多X的元素所指向,那么这种映射关系就叫单射(英:injection,日:単射(たんしゃ))。
单射不考虑是否Y当中的所有元素都无一遗漏地被X的元素所指向了。也可以有Y的元素不被任何X的元素所指向,不影响它是单射。
举个例子。
就比如说看电影吧。有“观众”(X)和“座位”(Y)两个集合。现在我们知道,每一个观众必然会坐在一个座位上,并且他只坐在一个座位上,所以这个对应关系首先是个映射。
又因为每张座位只可被一个观众所对应,不可能一张座上坐两个人,且不是所有座位都一定有观众与之对应的,也可能会有空座位,所以这个对应关系是一种单射关系。
观众与电影院座位(单射):
①要么没人坐;
②要么只有一个人坐。
(要么不被任何观众所指向,要么只被一个观众所指向)
2.2 满射
Y集合里的所有元素均被X里的元素所指向,集合Y中没有任何一个元素不被集合X的元素所指向的,那么这种映射关系就叫满射(英:surjection,日:全射(ぜんしゃ))。
满射不考虑指向同一个Y的有多少个X。只要所有的Y都被指向到了,就是满射。
再举个例子。
比如说班上分小组吧。每个组至少有一个人,否则就不构成一个组(它就不存在)。那么,每个学生都属于且只属于一个组,这首先是映射。又因为每个组必然包含至少一个学生,也可能有多个学生,所以,“学生”集合(X)与“小组”集合(Y)之间的关系,就是一种满射关系。
学生与分组(满射):
①要么分组不存在;
②只要存在这个分组,它就一定被一个或多个学生所指向。
2.3 双射
既是单射,又是满射的映射,就叫做双射(英:bijection,日:全単射(ぜんたんしゃ))。
“所有Y中的元素均被X中的元素所指向,且只被X的一个元素所指向。没有不被指向的,也没有被两个或更多X的元素所指向的。”
举个例子。
最典型的,“学生”(X)与其“学生证号码”(Y)。每个学生都必然有且只有一个学生证号,所以这首先是映射。又因为,每个学生证号码都必然被且只被一个学生所指向,没有不被任何学生指向的学生证号码(它是满射),也没有同时被多个学生指向的学生证号码(它也是单射),所以,这个映射关系是一种双射关系。
学生与学生证号码(双射):
一一对应,互为在彼此的集合里有且只有对方一个与自己相对应的元素。
2.4 既非单射也非满射,但为映射
还有一种映射关系,既不是单射也不是满射。Y中有元素没被X的元素所指向,而被指向的Y的元素,也不是所有都只被一个X元素所指向(存在被多个X元素指向的)。
举个例子。
比如围棋比赛吧。有“棋手”(X)和“棋盘”(Y)两个集合。一个棋手在且只在一个棋盘上下棋,一个棋盘上却有两个棋手。但是,并不是所有的棋盘都会有棋手的。比如,有3个棋盘,却只有4位棋手,那么,必然有一个棋盘是空的,不被任何棋手所指向。
每一个棋手指向且仅指向一个棋盘,这是映射。但是,既不是每个棋盘都必被棋手所指向,也不是每个被指向的棋盘都无一例外只被一个棋手所指向的,所以这种映射关系,既不是满射,也不是单射。
3、你掌握了吗?
你学废了吗?来,来,来,拿出你的小本本和笔,做两道题来练一下吧!
一共有六道题。写出两个集合之间是否存在映射关系,如果存在,写出是哪一种映射关系。
要求:从“单射而非满射”、“满射而非单射”、“双射”、“不是单射也不是满射”、“不是映射”中选词作答。
答案将会在评论区公布。
4、心得
我又听见了那句上学时经常听到的问题:“我知道这个有什么用?我买菜需要用到它吗?”
嗯,你买菜当然不会用到它,你不会跟摊主说,你这菜和你人之间有什么映射关系。
但是,比如说,你在设计数据库的时候,就可以和同一个组的小伙伴讨论道,“这个字段应该是主键。因为它值的集合与这个表中记录的集合呈双射关系。”
而不会是这样的:
“emmm……啊??主键,我觉得大概可能是这个属性啊。为什么呢?因为……我也说不上来,大概,就是因为那个,它是唯一的。啊不,它可以唯一确定一个人……emmm,一个人只拥有一个这种属性,这种属性也只对应一个人……emmmm,大概也许就是这样吧,我也不是太清楚,我也不太确定,你自己再考虑考虑吧!”
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132776.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...