单射、满射和双射
"单射、满射和双射" 描述函数的行为。
函数 是把一个集 "A" 的元素与另一个集 "B" 的元素配对的方法:
一般函数从 "A" 的每个元素指向 "B" 的一个函数
它不会有一个 "A" 的元素指向多于一个 "B" 的元素,所以一对多在函数是不允许的("f(x) = 7 或 9" 是不允许的)
但多于一个 "A" 的元素可以指向同一个 "B" 的元素(多对一是允许的)
单射的意思是 "A" 的每个元素都有 它独有的在 "B" 的相对元素
因为它还是个函数所以一对多是不允许的
也不可以有两个 "A" 的元素指向同一个 "B" 的元素,所以多对一是不允许的。
但可以有些 "B" 的元素没有相对的 "A" 的元素。
单射函数可以被还原!
如果只有一个 "A" 的元素指向一个 "B" 的元素,那么这个 "B" 的元素可以反过来指向这个 "A" 的元素。但如果像在一个 "一般函数" 中,可以有多于一个 "A" 的元素指向同一个 "B" 的元素,这个 "B" 的元素就不能反过来指向一个 "A" 的元素了。
去阅读反函数了解更多。
单射也称为 "一对一"
满射的意思是每个(所有) "B" 的元素都有至少一个相对的 "A" 的元素(可能多于一个)。
没有一个 "B" 的元素是没有相对的 "A" 的元素的。
双射的意思是单射和双射都成立。
所以两个集合的每个元素之间都有一个完美的"一对一"关系。
(但这不只是单射的 "一对一"关系)。
图示
我们来看 "一般函数" 的图和 "单射函数" 的图:
一般函数 | "单射"(一对一) |
我们可以做个 "水平线测试":
任何水平线不会与单射函数的曲线有多于一个交叉点。
(注意:严格递增(和严格递减)函数是单射,你可以去页面了解更多)
正式定义
以下是更详细的说明:
单射
函数f 是单射当且仅当若f(x) = f(y) 则 x = y。
例子: f(x) = x+5 从实数集 到 是个单射函数。
这个函数很容易被还原:
- f(3) = 8
已知 8 可以返回 3
例子: f(x) = x2 从实数集 到 不是个单射函数,因为:
- f(2) = 4 并且
- f(-2) = 4
这不满足定义:若f(x) = f(y) 则 x = y,因为 f(2) = f(-2) 但 2 ≠ -2
换句话说,有两个 "A" 的元素指向一个 "B" 的元素,这个函数不能被还原(已知函数的输出是 "4" …… 输入是多少?有两个可能!)
但是,如果我们在自然数集定义这个函数 到 ,函数便是单射,因为:
- f(2) = 4
- 现在没有 f(-2),因为 -2 不是自然数
满射(也叫 "映成")
函数 f(从集 A 到集 B)是满射当且仅当在 B 中的每个 y 存在至少一个在 A 中的 x 满足 f(x) = y, 就是说, f 是满射当且仅当 f(A) = B。
值域里的每个元素都至少有一个定义域元素与之对应。
例子:函数 f(x) = 2x 从自然数集 到非负偶数是个满射函数。
但 f(x) = 2x 从自然数集 到 不是满射,因为没有一个自然数 可以被这个函数映射到 3。
双射
函数 f(从 A 集到 B 集)是双射,若每个 B 中的 y 都有唯一的一个(而没有另外一个) A 集中的 x 满足 f(x) = y
或者,f 是双射,若两个集之间有一对一关系,换句话说,单射和满射都成立。
例子: 函数 f(x) = x2 从正实数到正实数是单射,也是满射,所以它是双射。
但从实数集就不是,因为
- f(2)=4,并且
- f(-2)=4