基本介紹
簡介,定義,舉例,套用,性質,區別,雙射與勢,
簡介
設f是從集合A到集合B的映射,若f(A)=B,即B中任一元素b都是A中某元素的像,則稱f為A到B上的滿射;
若對A中任意兩個不同元素a(1)不等於a(2),它們的像f<a(1)>不等於f<a(2)>,則稱f為A到B的單射;
若映射f既是單射,又是滿射,則稱映射f為A到B的“雙射”(或“一一映射”)。 函式為雙射若且唯若每個可能的像有且僅有一個變數與之對應。
函式f: A → B為雙射若且唯若對任意b∈B存在唯一a∈A滿足f(a) = b。
同一集合上的雙射構成一個對稱群。
定義
在集合論中,一個由集合X至集合Y的映射稱為雙射的,若對集合Y內的任意元素y,存在唯一一個集合X內的元素x,使得 y = f(x)。
換句話說,f為雙射的若其為兩集合間的一對一對應,亦即同時單射且滿射。
例如,由整數集合至的函式succ,其將每一個整數x連結至整數succ(x)=x+1,及另一函式sumdif,其將每一對實數(x,y)連結至sumdif(x,y) = (x + y, x − y)。
一雙射函式亦稱為置換。後者一般較常使用在X=Y時。以由X至Y的所有雙射組成的集合標記為XY.
舉例
假設存在關於x的函式:y=2x+3,對於任何x∈R及y∈R,由於y是x的線性函式,因此對於任何x都有唯一確定的y與其對應。又通過整理可以得到x=(y-3)/2,因此對於任何y,也有唯一確定的x與其對應。這樣,在y=2x+3在x∈R、y∈R的域中就是一個雙射函式。
而對於函式y=x2+2,對於x∈R、y∈R的取值範圍內,對於任何x,都有唯一確定的y與其對應。但對於
y≠2,任何y都對應2個不同的x。這樣y=x^+2在x∈R、y∈R的取值範圍內,不是雙射函式。但對於x∈[0,+∞)、y∈[2,+∞)。對於任何x,都有唯一確定的y與之對應,而對於任何y,都有x=(y-2)^0.5,即唯一確定的x與之對應。因此它是一個雙射函式。
套用
雙射的原理是一組關係,在判別某一種想法在套用能否雙向的找到某一唯一對應的事物,理論上通常要判斷這種想法是否滿足雙射的關係。因為具體的實施這一想法的途徑我們是並不知道的,所以需要抽象出他們的關係,找到這個雙射,如果找不到,並且驗證這個雙射不存在,那么想法是不可能實現的。
性質
(1)一由實數R至R的函式f是雙射的若且唯若其圖像和任一水平線相交且只相交於一點。
(2)設X為一集合,則由X至其本身的雙射函式,加上其複合函式(0)的運算,會形成一個群,一個X的對稱群,其標記為S(X)、SX或X!。
(4)若X和Y為具相同勢的有限集合,且f: X → Y,則下列三種說法是等價的:
f 為一雙射函式;
f 為一滿射函式;
f 為一單射函式。
區別
IoC的優點和缺點
IoC最大的好處是因為把對象生成放在了XML里定義,所以當我們需要換一個實現子類將會變成很簡單(一般這樣的對象都是實現於某種接口的),只要修改XML就可以了,這樣我們甚至可以實現對象的熱插撥(有點象USB接口和SCIS硬碟了)。
IoC最大的缺點是:(1)生成一個對象的步驟變複雜了(其實上操作上還是挺簡單的),對於不習慣這種方式的人,會覺得有些彆扭和不直觀。
(2)對象生成因為是使用反射編程,在效率上有些損耗。但相對於IoC提高的維護性和靈活性來說,這點損耗是微不足道的,除非某對象的生成對效率要求特別高。
(3)缺少IDE重構操作的支持,如果在Eclipse要對類改名,那么還需要去XML檔案里手工修改,這似乎是所有XML方式的缺憾所在。
雙射(bijection,即 bidirectional injection的簡稱):當注出(outject)屬性數據時,視圖可以通過名稱找到它。在 postback 或者組件初始化時,數據被注入(inject)到一個組件中。雙射與傳統 IOC 的主要不同點在於,雙射使長期作用域中的組件可以引用短期作用域中的組件。可以進行這種連線是因為雙射在調用組件時(而不是啟動容器時)解析依賴項。雙射是有狀態組件開發的基礎。