淺談組合數相關性質
本篇隨筆簡單講解一下數學中組合數的相關性質。並且,因為博主是一名\(OIer\)(否則為啥要在高一學組合數),所以在本篇隨筆中還會側重組合數在信息學奧林匹克競賽中的應用。綜上所述,本篇隨筆乃是學數學的,學\(OI\)的,學玄學的,學哲學的同志們的學習佳選。(不要個臉)
組合數的概念
這個板塊是為對組合數毫無概念的同學留的。因為名字叫做組合數,所以肯定是和組合有關系的。
我們定義:\(C_n^m\)為在\(n\)個元素中選擇\(m\)個元素的不同組合數量,即組合數。
啥叫組合呢?
簡單來講,對於一個集合來講,從中隨便拿出任意個元素所構成的一個子集就是組合。需要注意的是,組合和排列不一樣,排列的數量還取決於取出的順序,但是組合的數量只取決於這個組合中有什么元素。
比如,\((1,2,3)\)與\((3,2,1)\)是同一個組合。
附錄:
如果還不是很明白的小伙伴,可以參考蒟蒻的這篇博客:
組合數公式:
組合數的基本性質
規定
硬性規定,沒有為什么。就像規定\(0!=1\)一樣,不講道理。
\(C_n^0=1\),\(C_n^n=1\),\(C_0^0=1\)。
互補性
這個性質口胡起來就是,在含有\(n\)個元素的集合中選中\(m\)個元素的組合數等於在這個集合中選中\(n-m\)個元素的組合數。
這個性質很好理解和想象。我們每一次搞出一個還沒有選過並合法的組合時,總會對應着一個這個組合的補集,而這些補集湊在一起就是\(C_n^{n-m}\)。
這個性質很重要!
組合恆等式
除了互補性,還有一個前導公式:
對於這個公式的理解,可以抽象一下:我們可以把\(C_{n+1}^m\)看成原本的\(n\)個元素中加入了一個新元素,那么根據分類計數原理,我們之前已經求出的組合數\(C_n^m\)中顯然少了含有這種新元素的情況。那么就把它加上就好。因為選中這個新元素必定要把一種老元素剔除掉,所以應該加上\(C_n^{m-1}\)。
組合數的求解
光知道這些數學知識,在\(OI\)中可是沒什么用。所以我們還要了解組合數的求法,在考場上熟練求解組合數,用它解決更大的問題。
首先,組合數可以用公式求(廢話)。我們暴力套用公式,可以求出不爆\(Longlong\)的組合數。但是這種方法在多次求解組合數的時候顯得比較雞肋。因為多次求解組合數,如果再套公式就會大大增加時間復雜度。這個時候我們可以考慮弄出一份階乘表,快速調用階乘答案,來降低時間復雜度。
然后,我就要介紹信競中最常用的組合數求法——
組合數遞推法
組合數是可以遞推求的。就是說,所有的組合數都可以由前面的組合數推導而來。
為什么呢?
就是因為上面證明過的那個公式:
我們令\(n=n-1\),那么就得出新公式:
那么,組合數\(C_n^m\)就可以通過遞推來求解了。
初值是組合數硬性規定:
\(C_0^0=0\),\(C_0^i=C_0^1=C_1^1=1\)。
然后就可以開始遞推了。
遞推公式是:
我們發現,這個遞推公式和另一個遞推公式差不多——
楊輝三角。
關於楊輝三角,如有蒙圈的小可愛請觀摩我的這篇博客:
總結:
掌握組合數的概念,知道組合互補性質和組合恆等式的推導過程和結論。掌握組合數求解的通項公式法和遞推公式法。
對於組合數求解,有很多題目還卡遞推求解,這個時候要再學習一些優化和卡常技巧。希望同學們能夠在之后的題目中多多體會和掌握理解。