致敬百度百科qwq
本文摘自百度百科,只是對於信競範圍內的知識做一個小總結qwq,持續更新ing···
滿射:
如果每個可能的像至少有一個變量映射其上(即像集合B中的每個元素在A中都有一個或一個以上的原像),或者說值域任何元素都有至少有一個變量與之對應,那這個映射就叫做滿射。
滿射或蓋射(英語:surjection、onto),或稱滿射函數或映成函數,一個函數 爲滿射,則對於任意的陪域Y中的元素 y,在函數的定義域X中存在一點 x使得f(x)=y。換句話說, f是滿射時,它的值域f(X)與陪域Y相等,或者,等價地,如果每一個陪域中的元素 其原像不等於空集合。
單射:
設f是由集合A到集合B的映射,如果所有x,y∈A,且x≠y,都有f(x)≠f(y),則稱f爲由A到B的單射。在數學裏,單射函數爲一函數,其將不同的引數連接至不同的值上。更精確地說,函數f被稱爲是單射時,對每一值域內的y,存在至多一個定義域內的x使得f(x) = y。另一種說法爲,f爲單射,當f(a) = f(b),則a = b(若a≠b,則f(a)≠f(b)),其中a、b屬於定義域。單射在某些書中也叫入射,可理解成“原不同則像不同”。
雙射:
雙射(Bijection)的原理是一組關係,在判別某一種想法在應用能否雙向的找到某一唯一對應的事物,理論上通常要判斷這種想法是否滿足雙射的關係。因爲具體的實施這一想法的途徑我們是並不知道的,所以需要抽象出他們的關係,找到這個雙射,如果找不到,並且驗證這個雙射不存在,那麼想法是不可能實現的。
康託展開:
康託展開是一個全排列到一個自然數的雙射,常用於構建哈希表時的空間壓縮。 康託展開的實質是計算當前排列在所有由小到大全排列中的順序,因此是可逆的。
康託展開運算:
其中, 爲整數,並且
表示原數的第i位在當前未出現的元素中是排在第幾個
既然康託展開是一個雙射,那麼一定可以通過康託展開值求出原排列,即可以求出n的全排列中第x大排列。
如n=5,x=96時:
首先用96-1得到95,說明x之前有95個排列.(將此數本身減去1)用95去除4! 得到3餘23,說明有3個數比第1位小,所以第一位是4.用23去除3! 得到3餘5,說明有3個數比第2位小,所以是4,但是4已出現過,因此是5.用5去除2!得到2餘1,類似地,這一位是3.用1去除1!得到1餘0,這一位是2.最後一位只能是1.所以這個數是45321。
按以上方法可以得出通用的算法。
莫比烏斯反演: