一對一、映成與雙射函數(injective, surjective, bijective functions)
函數是一條規則,把每個輸入送到恰好一個輸出——就像一台自動販賣機,按下一個按鈕總是給出一件特定的商品。有三個形容詞描述函數如何把輸入與輸出對應起來。單射(「一對一」)表示沒有兩個不同的輸入共用同一個輸出;滿射(「映成」)表示每個可能的輸出都確實被用到;雙射則是兩者兼具——完美的配對,沒有重複、也沒有剩餘。
先補一些詞彙:從 A 到 B 的函數 f(寫作 f : A → B)有定義域 A(允許的輸入)、對應域 B(輸出可以落腳的地方)、與值域(實際出現的輸出)。那麼:若 f(x) = f(y) 必使 x = y(不同輸入給不同輸出),f 是單射;若對 B 中每個 b 都存在某個 a 使 f(a) = b(值域填滿整個對應域),f 是滿射;若兩者皆是,f 是雙射,意味著它把 A 與 B 完美配對,並且可以反向運行成反函數。把一個數加倍,x 送到 2x,是單射(不同輸入、不同加倍)但映到整數上不是滿射(沒有整數加倍得到 3)。把人分成「是否大於 18 歲」對 {是, 否} 是滿射,卻嚴重不是單射。
雙射是計數與比較集合大小的支柱,連無限集合也適用:兩個集合大小相同,恰好當它們之間存在一個雙射。把這個單一想法推到無限集合,正是後面區分可數與不可數的依據,也是 Cantor 對角線論證的動力。單射也直接重要:把機器合理地編碼成字串時,必須是單射,這樣才不會有兩台不同的機器拿到相同的編碼,解碼也才不會含糊。
整數上的 f(n) = n + 1 是雙射:每個整數都被打到(滿射),且沒有兩個輸入相撞(單射),所以它有反函數「減 1」。但整數上的 g(n) = n^2 兩者都不是——g(2) = g(−2) = 4 破壞了單射,而 3 永遠不是輸出,破壞了滿射。
加 1 是雙射(且可逆);在整數上平方既非單射也非滿射。
滿射與否取決於所選的對應域:加倍 x 送到 2x,映到偶數上是滿射,映到全體整數上則不是。在說某函數「映成」之前,務必先講清楚對應域。