排列組合

排列(n>=r)

對有n個元素的集合S中的其中r個元素進行排列(n >= r)可以用如下幾種方法來理解:

排列描述1

每次從n個元素中取r個元素出來,那麼一共有C(n,r)種取法。每種取法中的r個元素按順序依次排列在r個位置上,這樣第一個位置一共有r種方法,而第二個位置有r-1個方法,第r個位置則只有1種方法了,因此一共有 r * (r-1) * (r-2) * ... * 2 * 1種方法,也就是有r!種方法。每種取法有r!种放置的方法,那麼總共就有 C(n,r) * r!種排列方法,因此:

A(n,r) = C(n,r) * r!

排列描述2

把n個元素放入到r個位置裏面,且每個位置只能放置1個。那麼第一個位置一共有n种放法,第二個位置一共有n-1种放法,因此第r個位置一共有n-r+1种放法,這樣總共就有:n * (n-1) * (n-2) * ... * (n-r+1)种放法(或者說第一個位置一共可以放n個元素中的任意一個,第二個位置則可以放入n-1個元素中的任意一個,依次類推第r個位置就可以放入n-r+1個元素中的任意一個,這樣排列完畢同時也只取了其中的r個元素)因此:

A(n,r) = n * (n-1)*(n-2) *...* (n-r+1)

排列描述3

如果對n個元素都進行排列那麼一共有n!種排列的方法。那麼當取r個元素進行排列時,可以反過來假設將r個元素放入到n個位置中去,這時候必定有n-r個位置是空的,也就是n-r個位置只有1種取值。而在n!種排列中(n-r)個位置一共有(n-r)!種排列,因此去除這(n-r)!種重複的排列,只保留一種那就得到了n個元素的r排列的公式:

A(n,r) = n! / (n-r)!

這種描述還可以將n!的計算描述爲先從n個元素裏面取r個進行排列,再將(n-r)進行排列,一共有(n-r)!種方法,這樣二者相乘得到n!, 因此 A(n,r) * (n-r)! = n!

在實踐中排列的另外一個表述就是把n個元素放入r個位置(n >=r), 並且要求每個位置至只放一個元素的方法數量。同樣可以表述爲將r個元素放入n個位置(n >= r),並且每個位置至多隻放一個元素的方法數量。

排列(n<r)

前面考察的是將n個元素放入r的位置(n >=r)的情況,再來詳細的考察n<r的情況。因爲這種放置會產生空的位置,因此不能用A(n,r)來計算(第一個位置有n+1種方法,這其中包括不放。而第二個位置的方法則要根據第一個位置的放入情況,假如第一個位置沒有放入,那麼第二個位置就有n+1种放法;而假如第一個位置有放入則第二個位置有n種方法,因此這裏不符合乘法規則)。這種情況下可以考慮增加(r-n)個相同的元素來填滿r個位置中,這樣就一共有r!種排列的方法了。又因爲(r-n)個元素都是相同的元素,我們要去除重複的排列,一共有(r-n)!種。這樣我們就得出排列公式:

A(n,r) = r! / (r-n)! (r > n)

而當r <= n 時則有:

A(n,r) = n!/(n-r)! (r<= n)

因此我們可以得出更加通用的排列公式:

A(n,r) = max(n,r)! / |n-r|!

上面可以看出當r > n時 我們計算A(n,r)的排列,其實就是A(r,n)的排列計算公式。

重複排列

n個元素的r重複排列(n >=r),也就是n個元素裏面取r個元素,放置在r個位置上,每個位置至少放入一個,每個位置都可以重複放入相同的元素。這樣第一個位置就可以放入n個元素中的任意一個元素,因此一共有n种放法,而第二個位置也同樣可以放入n個元素中的任意一個元素,這樣第r個位置也可以放入n個元素中的任意一個元素。經過r次放置後這n個元素裏面最少是取了1個元素,而最多則是取了r個不同的元素。因此n的r重複排列的公式:

A(n,r) = n^r

在實踐中的重複排列,我們一般把位置作爲指數,而把元素個數作爲底數。

那n個元素的r位置重複排列在n<r時又是如何計算呢?如果每個位置至少放入1個元素的話那麼,每個位置都有n種方法,因此重複排列的公式也是一樣的爲: n^r。

對於重複排列來說,當考慮某個位置可以爲空的情況時,那麼就可以理解爲我們多增加了一個元素,因此當位置可以放置爲空時的排列公式爲 :

A(n,r ) = (n+1)^r

這裏依然可以用乘法公式的原因是每個位置的可放置的元素個數不依賴於前面的放置結果,每個位置都可以放置n+1種。因此對於重複排列來說元素的個數和位置的數量無論哪個大結果的公式都是一樣的,都是 元素個數^位置個數

對於重複排列來說這種指數關係,也可以表示爲可以放回排列,比如n個元素,放入r個位置。一個位置可以放n箇中的任意一個,一共有n種。而第二個位置則一樣可以放入n箇中的任意一個一共也有n種。因此一共有 n ^ r 種。

舉例來說把3個球放入4個位置,一共有多少種方法? 這裏面表面上看元素是3位置是4,但是因爲球不可重複因此不能用 3^4來描述。而且也不能用乘法因此第二個位置的放法要依賴於第一個位置,這裏只能用不可重複的排列公式來進行計算。

組合

組合其實就是從n個元素裏面取出r個元素(n >=r)的方法數。

組合描述1

因爲只需要取出r個元素,因此不涉及到對r個元素進行排列的情況。同樣組合可以看成是從一個有n個元素的集合S中取出含有r個元素的子集A的數量。我們知道從n個元素裏面取r個元素進行排列的方法一共有A(n,r)種排列,假設我們取到了一個具有r個元素的集合A,那麼在A中則一共有r!種排列方法,既然一個r元素的子集A的排列數量是r!, 而總的r個元素的排列數量是A(n,r). 那麼也就是說有A(n,r)/r!個子集,因此組合的公式:

C(n,r) = A(n,r) / r!

組合描述2

組合還可以從另外一個維度考察,就是假設有n個位置,我們要取出r個位置的取法,因爲每個位置可以是n中的任意一個位置,但總共只有r個位置。你可以把總位置當做元素的總數,r個位置則當做r個不同的元素,因此組合還可以用在位置。也就是說如果把r個相同的元素放入到n個位置裏面的方法就是C(n,r)組合。而把r個不同元素放入到n個位置裏面的方法就是P(n,r)排列。

這裏再引申出重複排列的計算方法,假設有k種元素,每種元素的數量爲ni (1 < i < k), 且 n1 + n2 + .. nk = n。 那麼他的排列方式一共有幾種? 我們知道一共有n個位置。要放置這k種元素。那麼第一種元素a1 有n1個, 因爲a1的每個元素都相同因此不考慮順序問題,這就和上面的組合的另外一個維度的考察是一樣的,因此一共有 C(n, n1)種方法。那麼第二種類型a2則一共有n2個就有C(n-n1, n2)種方法,這裏每一步驟都是獨立的因此可以用乘法最後的結果是:

C(n,n1) * C(n-n1, n2) * C(n-n1-...nk-1, nk) = n! / (n1! * n2! * ...nk!)

而當只有2種元素a,b時那麼就是 : C(n,n1) * (n-n1, n2) = (C,n1) = C(n,n2)*C(n-n2, n1) = C(n,n2) 。這個好理解就是假設只有2種元素時則每當a類型的位置確定後, b類型就只有1種方法了。因此只要確定a的就OK了。

排列和組合的區別

當把r個相同的元素放入到n個位置,每個位置至多隻有一個的方法就是組合C(n,r); 而把r個不同的元素放入到n個位置,每個位置至多隻有一個時的方法則是排列A(n,r)

而當把n個不相同的元素放入r個位置, 每個位置只放置1個的方法就是A(n,r); 而把n個相同的元素放入r個位置,每個位置只放入1個的方法就是1了。 這裏的原因是組合時因爲都是相同的而元素個數小於位置時因爲有空位所有方法有多種,而元素個數大於位置時因爲沒有空位了所以只有一種。從而可以引申出的一個概念就是組合裏面的放置方法其實就是空位數量的放置方法,因此有: C(n,r) = C(n, n-r)成立。

排列組合在實踐中的區別是,排列是把x個元素放入y個位置的計數,而組合則是x個元素中取任意y個元素的計數,因爲位置是有順序的,而取出的數量則不需要考慮順序的情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章