1. 程式人生 > >組合數學專項練習筆記

組合數學專項練習筆記

集合的劃分

設S是一個具有n個元素的集合, S a

1 a 2 a n
,現將S劃分成k個滿足下列條件的子集合$S_1,S_2,……,S_k} ,且滿足:

  • S i
  • 所有的劃分的交集為空:
∩Sj=⊘|,1≤i,j≤k,i≠j" role="presentation"> | S i S j = | , 1 i , j k , i j
  • 並集為該集合本身: S 1 S 2 . . . S k = S
  • 則稱 S 1 S 2 S k 是集合S的一個劃分。

    排列與組合

    【例】馬路上有編號1,2,3…10的十盞路燈,為節約用電而又不影響照明,可以把其中3盞燈關掉,但不可以同時關掉相鄰的兩盞,在兩端的燈都不能關掉的情況下,有()種不同的關燈方法。

    • 採用插隔板法,即8燈關3,餘5燈亮,5燈之間6個空,插入3盞不亮燈
    • 答案:C(6,3)

    【例】村長帶著 4 對父子參加爸爸去哪兒第三季第二站某村莊的拍攝。村裡為了保護小孩不被拐走有個前年的規矩,那就是吃飯的時候小孩左右只能是其他小孩或者自己的父母。那麼 4 對父子在圓桌上共有_種坐法。 (旋轉一下,每個人面對的方向變更後算是一種新的坐法)

    • 思路:先選座位,在進行排列;
    • 四個孩子一起坐:選4個連起來的座位,共有8種,孩子的排列是A(4,4),只有兩個父親(且是確定的)可以隨便坐A(2,2),故8*A(4,4)*A(2,2)
    • 兩個孩子一起坐:選四個座位,且是相對的,共有4種,孩子的全排列A(4,4),父親的座位確定,故4*A(4,4)
    • 一共有8*A(4,4)*A(2,2)+4*A(4,4)=480

    【例】從數字集合{1,2,3,4,… ,20}中選出3個數字的子集,如果不允許兩個相連的數字出現在同一集合中,那麼能夠形成多少個這種子集?

    • “不鄰問題”插空法,即在解決對於某幾個元素要求不相鄰的問題時,先將其它元素排好,再將指定的不相鄰的元素插入已排好元素的間隙或兩端位置,從而將問題解決的策略。
    • C(18,1)=816

    錯排公式

    【例】五個球從盒子裡拿出來,打亂順序放回去,均不在原位的排列數是多少()

    • D(n) = (n-1) * ( D(n-1) + D(n-2) ),n>=3,D(1) = 0 , D(2) = 1
    • A的位置有4種選擇(除了A之外的4個字母)
    • (1)B的位置被A佔了:CDE三個位置因為要避免重複,所以只能有2種排列方式
    • (2)B的位置沒有被A佔:則B的位置有3種選擇,C的位置有3種選擇(因為A在這3個裡面,A無論在CDE的哪個位置上,都沒有問題,只要A的位置定了,另外兩個的位置肯定也定了,因為它們只能交換位置),所以是 3*3種
    • 最後總共是 4*( 2 + 3*3)

    卡特蘭數

    【定理】n個“1”和n個“0”組成的2n位的二進位制數,要求從左到右掃描,“1”的累計數不小於“0”的累計數,這樣的二進位制數的個數為著名的Calatan數 C ( 2 n , n ) n + 1 ,(n>=0)
    【證明】令An為n個“1”和n個“0”組成的符合二進位制數的個數,n個“1”和n個“0”組成的二進位制數可以看作是一種型別(1型)為n個元素和另一種型別(0型)的n個元素的兩種不同元素的排列,這樣的排列個數位C(2n,n) = (2n)!/(n!n!),從C(2n,n)中減去不符合要求的個數即為所求的An,
    考慮n個”1”和n個”0”組成的不符合要求的二進位制數,不符合要求的數應為:從左到右掃描時,必然存在一個最小的k使得在這k位上首先出現”0”的累計數多於”1”的累計數,特別得,k是一個奇數,而在k之前的k-1位數中,有相等個數的”0”和”1”,而且這第k位上是”0”,現在把這前k位中每一位上的數進行交換,”1”換成”0”,”0”換成”1”,並且保持剩下的數不變,結果這樣的二進位制數是一個有n+1個”1”和n-1個”0”的二進位制數,即一個不合要求的二進位制數對應一個由n+1個”1”和n-1個”0”組成的一個排列,這個過程是可逆的:任何一個由n+1個”1”和n-1個”0”組成的2n位數,由於”1”的個數比”0”的個數多2個,2n是偶數,因此必在某個奇位數上出現”1”的累計數超過”0”的累計數,同樣對他們進行交換,並使其餘的不動,使之成為由n個”1”和n個”0”組成的2n位數,這時”0”的累計個數多於”1”的累計個數,是一個不符合要求的二進位制數,從而不符合要求的二進位制數與n+1個”1”和n-1”0”組成的排列一一對應,這樣的排列個數為C(2n,n+1) = (2n)!/((n+1)!(n-1)!) 因此有An = C(2n,n)-C(2n,n+1)

    楊氏矩陣

    楊氏矩陣又叫楊氏圖表,它是這樣一個矩陣,滿足條件:
    (1)如果格子(i,j)沒有元素,則它右邊和上邊的相鄰格子也一定沒有元素。
    (2)如果格子(i,j)有元素 a i j ,則它右邊和上邊的相鄰格子要麼沒有元素,要麼有元素且比 a i j 大。

    1 ~ n所組成楊氏矩陣的個數可以通過下面的遞推式得到:
    F(1)=1;F(2)=2;
    F(n)=F(n-1)+(n-1)F(n-2) ,n>2

    鉤子公式

    對於給定形狀,不同的楊氏矩陣的個數為:n!除以每個格子的鉤子長度加1的積。其中鉤子長度定義為該格子右邊的格子數和它上邊的格子數之和。

    【例】1-16十六個數字分別填入十六格方框內,要求從左至右的數字是從小到大排列,從上至下的數字也是從小到大排列,問:有多少種排列方式。

    • 利用楊氏矩陣的鉤子公式
    • 答案:16! / (4 x 3 x 2 x 1 x 5 x 4 x 3 x 2 x 6 x 5 x 4 x 3 x 7 x 6 x 5 x 4) = 24024