簡(jiǎn)介
設(shè)f是從集合A到集合B的映射,若f(A)=B,即B中任一元素b都是A中某元素的像,則稱f為A到B上的滿射;
若對(duì)A中任意兩個(gè)不同元素a(1)不等于a(2),它們的像f不等于f,則稱f為A到B的單射;
若映射f既是單射,又是滿射,則稱映射f為A到B的“雙射”(或“一一映射”)。 函數(shù)為雙射當(dāng)且僅當(dāng)每個(gè)可能的像有且僅有一個(gè)變量與之對(duì)應(yīng)。
函數(shù)f: A → B為雙射當(dāng)且僅當(dāng)對(duì)任意b∈B存在唯一a∈A滿足f(a) = b。
函數(shù)f : A → B為雙射當(dāng)且僅當(dāng)其可逆,即,存在函數(shù)g: B → A滿足g o f = A上的恒等函數(shù),且f o g為B上的恒等函數(shù)。
兩個(gè)雙射的復(fù)合也是雙射。如g o f為雙射,則僅能得出f為單射且g為滿射。
同一集合上的雙射構(gòu)成一個(gè)對(duì)稱群。
如果X,Y皆為實(shí)數(shù)集R,則雙射函數(shù)f:R→R可以被視覺化為兩根任意的水平直線只相交正好一次。(這是水平線測(cè)試的一個(gè)特例。)
定義在集合論中,一個(gè)由集合X至集合Y的映射稱為雙射的,若對(duì)集合Y內(nèi)的任意元素y,存在唯一一個(gè)集合X內(nèi)的元素x,使得 y = f(x)。2
換句話說(shuō),f為雙射的若其為兩集合間的一對(duì)一對(duì)應(yīng),亦即同時(shí)單射且滿射。
例如,由整數(shù)集合至的函數(shù)succ,其將每一個(gè)整數(shù)x連結(jié)至整數(shù)succ(x)=x+1,及另一函數(shù)sumdif,其將每一對(duì)實(shí)數(shù)(x,y)連結(jié)至sumdif(x,y) = (x + y, x ? y)。
一雙射函數(shù)亦稱為置換。后者一般較常使用在X=Y時(shí)。以由X至Y的所有雙射組成的集合標(biāo)記為XY.
雙射函數(shù)在許多數(shù)學(xué)領(lǐng)域扮演著很基本的角色,如在同構(gòu)(和如同胚和微分同構(gòu)等相關(guān)概念)、置換群、投影映射及許多其他概念的基本上。
舉例假設(shè)存在關(guān)于x的函數(shù):y=2x+3,對(duì)于任何x∈R及y∈R,由于y是x的線性函數(shù),因此對(duì)于任何x都有唯一確定的y與其對(duì)應(yīng)。又通過(guò)整理可以得到x=(y-3)/2,因此對(duì)于任何y,也有唯一確定的x與其對(duì)應(yīng)。這樣,在y=2x+3在x∈R、y∈R的域中就是一個(gè)雙射函數(shù)。
而對(duì)于函數(shù)y=x2+2,對(duì)于x∈R、y∈R的取值范圍內(nèi),對(duì)于任何x,都有唯一確定的y與其對(duì)應(yīng)。但對(duì)于
y≠2,任何y都對(duì)應(yīng)2個(gè)不同的x。這樣y=x^+2在x∈R、y∈R的取值范圍內(nèi),不是雙射函數(shù)。但對(duì)于x∈[0,+∞)、y∈[2,+∞)。對(duì)于任何x,都有唯一確定的y與之對(duì)應(yīng),而對(duì)于任何y,都有x=(y-2)^0.5,即唯一確定的x與之對(duì)應(yīng)。因此它是一個(gè)雙射函數(shù)。
應(yīng)用雙射的原理是一組關(guān)系,在判別某一種想法在應(yīng)用能否雙向的找到某一唯一對(duì)應(yīng)的事物,理論上通常要判斷這種想法是否滿足雙射的關(guān)系。因?yàn)榫唧w的實(shí)施這一想法的途徑我們是并不知道的,所以需要抽象出他們的關(guān)系,找到這個(gè)雙射,如果找不到,并且驗(yàn)證這個(gè)雙射不存在,那么想法是不可能實(shí)現(xiàn)的。
性質(zhì)(1)一由實(shí)數(shù)R至R的函數(shù)f是雙射的當(dāng)且僅當(dāng)其圖像和任一水平線相交且只相交于一點(diǎn)。3
(2)設(shè)X為一集合,則由X至其本身的雙射函數(shù),加上其復(fù)合函數(shù)(0)的運(yùn)算,會(huì)形成一個(gè)群,一個(gè)X的對(duì)稱群,其標(biāo)記為S(X)、SX或X!。
(3)取一定義域的子集A及一陪域的子集B,則|f(A)| = |A| 且 。
(4)若X和Y為具相同勢(shì)的有限集合,且f: X → Y,則下列三種說(shuō)法是等價(jià)的:
f 為一雙射函數(shù);
f 為一滿射函數(shù);
f 為一單射函數(shù)。
區(qū)別IoC的優(yōu)點(diǎn)和缺點(diǎn)
IoC最大的好處是因?yàn)榘褜?duì)象生成放在了XML里定義,所以當(dāng)我們需要換一個(gè)實(shí)現(xiàn)子類將會(huì)變成很簡(jiǎn)單(一般這樣的對(duì)象都是實(shí)現(xiàn)于某種接口的),只要修改XML就可以了,這樣我們甚至可以實(shí)現(xiàn)對(duì)象的熱插撥(有點(diǎn)象USB接口和SCIS硬盤了)。
IoC最大的缺點(diǎn)是:(1)生成一個(gè)對(duì)象的步驟變復(fù)雜了(其實(shí)上操作上還是挺簡(jiǎn)單的),對(duì)于不習(xí)慣這種方式的人,會(huì)覺得有些別扭和不直觀。
(2)對(duì)象生成因?yàn)槭鞘褂梅瓷渚幊蹋谛噬嫌行p耗。但相對(duì)于IoC提高的維護(hù)性和靈活性來(lái)說(shuō),這點(diǎn)損耗是微不足道的,除非某對(duì)象的生成對(duì)效率要求特別高。
(3)缺少IDE重構(gòu)操作的支持,如果在Eclipse要對(duì)類改名,那么還需要去XML文件里手工修改,這似乎是所有XML方式的缺憾所在。
雙射(bijection,即 bidirectional injection的簡(jiǎn)稱):當(dāng)注出(outject)屬性數(shù)據(jù)時(shí),視圖可以通過(guò)名稱找到它。在 postback 或者組件初始化時(shí),數(shù)據(jù)被注入(inject)到一個(gè)組件中。雙射與傳統(tǒng) IOC 的主要不同點(diǎn)在于,雙射使長(zhǎng)期作用域中的組件可以引用短期作用域中的組件??梢赃M(jìn)行這種連接是因?yàn)殡p射在調(diào)用組件時(shí)(而不是啟動(dòng)容器時(shí))解析依賴項(xiàng)。雙射是有狀態(tài)組件開發(fā)的基礎(chǔ)。
雙射與勢(shì)若 X和 Y為有限集合,則其存在一兩集合的雙射函數(shù)當(dāng)且僅當(dāng)兩個(gè)集合有相同的元素個(gè)數(shù)。確實(shí),在公理集合論里,這正是“相同元素個(gè)數(shù)”的定義,且廣義化至無(wú)限集合,并導(dǎo)致了基數(shù)的概念,用以分辨無(wú)限集合的不同大小。