回覆列表
  • 1 # spades13

    排列組合的公式是排列的定義及其計算公式:從n個不同元素中,任取m(m≤n,m與n均為自然數,下同)個元素按照一定的順序排成一列,叫做從n個不同元素中取出m個元素的一個排列;從n個不同元素中取出m(m≤n)個元素的所有排列的個數,叫做從n個不同元素中取出m個元素的排列數,用符號 A(n,m)表示。A(n,m)=n(n-1)(n-2)……(n-m+1)= n!/(n-m)! 此外規定0!=1(n!表示n(n-1)(n-2)...1,也就是6!=6x5x4x3x2x1組合的定義及其計算公式:從n個不同元素中,任取m(m≤n)個元素併成一組,叫做從n個不同元素中取出m個元素的一個組合;從n個不同元素中取出m(m≤n)個元素的所有組合的個數,叫做從n個不同元素中取出m個元素的組合數。用符號 C(n,m) 表示。C(n,m)=A(n,m)/m!;C(n,m)=C(n,n-m)。(n≥m)其他排列與組合公式 從n個元素中取出m個元素的迴圈排列數=A(n,m)/m!=n!/m!(n-m)!. n個元素被分成k類,每類的個數分別是n1,n2,

    ...nk

    這n個元素的全排列數為 n!/(n1!×n2!×...×nk!). k類元素,每類的個數無限,從中取出m個元素的組合數為C(m+k-1,m)。

  • 2 # 思考思考的動物

    標準的排列組合

    先看一個例子 (1):

    三個城市 A,B,C,從 A 到 B 有三條路 a₁, a₂, a₃ ,從 B 到 C 有兩條路 b₁, b₂,問 從 A 到 C 有多少種走法?

    解:

    要 從 A 到 C 就 必須選擇一條 A 到 B 的路 a 和 一條 B 到 C 的路 b,然後連成 A 到 C 的路 ab。

    a 可以是 a₁, a₂, a₃ 有3種選法,b 可以是 b₁, b₂ 有3種選法,於是根據日常的經驗,ab 的可能有:

    所有 ab 總共有 3 × 2 = 6 種可能。

    這個例子就是 乘法法則

    若具有性質 a 的事件有 m 個,具有性質 b 的事件有 n 個,則 同時具有 性質 a 和 b 的事件有 m × n 個。

    因為,

    令 a 的 m 個事件為 a₁, a₂, ..., a_m,b 的 n 個事件為 b₁, b₂, ..., b_m,則根據日常的經驗,ab 的可能有:

    乘法法則,還可以從 兩項 擴充套件到 任意有限多項:

    若具有性質 a₁, a₂, a₃, ..., a_n 的事件分別有 m₁, m₂, m₃, ..., m_n 個,則 同時具有 性質 a₁, a₂, a₃, ..., a_n 的事件有 m₁ × m₂ × m₃ × ... × m_n 個。

    因為,

    然後利用 兩項的乘法法則,就得到:

    再看一個例子 (2):

    解:

    挑出兩個排成一列,分兩步,

    先從三個球 中任意 挑出一個球 a 放在序列的第一位;

    再從挑剩下的 二個球 中 中任意 挑出一個球 a 放在序列的第二位;

    這樣就組成了 ab 的序列。構建 ab 序列的過程 和 例子 (1) 組成路線的過程 類似,因此 也 符合乘法法則。因為 a 是 3 選 1 有 3 種可能,b 是 2 選 1 有 2 種可能,所以 構建 ab 序列 有 3 × 2 = 6 種可能,具體如下:

    例子 (2) 就是 從 3 中取出 2 的排列,更一般地定義為:

    從 n 個元素 中取出 m(≤ n) 個元素 排成一列,稱為 從 m 中取出 n 的 排列,排列的方案個數稱為排列數,記為 P(n, m)。

    從 m 中取出 n 的 排列的構建過程如下:

    根據 乘法法則,有:

    P(n, m) = n(n-1)(n-2)...(n-m+1)

    而:

    n! = n(n-1)(n-2)...(n-m+1)(n-m)(n-m-1)...1

    (n-m)! = (n-m)(n-m-1)...1

    故,

    P(n, m) = n!/(n-m)!

    比較特別的是:

    從 n 中取出 n 個 的排列,就是 對 n 個元素進行各種排列,稱為 全排列 ,P(n, n) = n!/(n-n)! = n!/0! = n!;

    從 n 中取出 0 個 的排列,稱為 零排列 ,P(n, 0) = n!/(n-0)! = n!/n! = 1;

    將 例子 (2),改為 (2"):

    總共有三個球,從中挑選出兩個不考慮順序,問有多少種挑選方案?

    解:

    我們前面已經 計算出了序列 ab 的排列數 P(3, 2),所謂不考慮順序,也就是說,兩個元素 a, b 的各種排列:ab, ba 算一種方案。

    兩個元素 a, b 的各種排列,就是 2 的全排列,即,P(2, 2)。於是 只需要 用 P(3, 2) 除以 P(2, 2) 就是 答案了:

    P(3, 2) / P(2, 2) = 3!/((3-1)!2!) = 3

    例子 (2") 就是 從 3 中取出 2 的組合,更一般地定義為:

    從 n 個元素 中取出 m(≤ n) 個元素 不考慮順序,稱為 從 m 中取出 n 的 組合,組合的方案個數稱為組合數,記為 C(n, m)。

    根據例子 (2") 中的分析,有:

    C(n, m) = P(n, m) / P(m, m) = P(n, m) = n!/((n-m)!m!)

    比較特別的:

    從 n 中取出 n 個 的組合,C(n, n) = n!/((n-n)!n!) = n!/(0!n!) = n!/n! = 1;

    從 n 中取出 0 個 的組合,C(n, 0) = n!/((n-0)!0!) = n!/(n!0!) = n!/n! = 1;

    一些特殊的排列組合

    考慮,問題 (3):3 個人去飯店吃飯,圍坐在一張圓桌前,問有多少種坐法?

    圍坐成圈不同於排成一列,這是一種新的排列方式,於是定義:

    從 n 個元素 中取出 m 個元素 排成一圈,稱為 圓周排列,將 圓周排列數 記為 Q(n, m)。

    分析:

    對於標準排列,可得到的序列:

    若將序列排成一圈,

    則顯然,下面的 m 個排列只能算一種:

    故,

    Q(n, m) = P(n, m) / m

    根據上面的分析結果,顯然,問題(4) 的答案是 Q(3, 3) = P(3, 3) / 3 = 2,即,順時針坐 和 逆時針左。

    在排列組合中,預設挑選出來的m個元素是不能重複,但如果允許重複呢?

    將 例子 (2"),改為:

    總共有三個球,從中挑選出兩個不考慮順序,不過每次挑選時會將球的號碼記錄然後將球放回,問有多少種挑選方案? (2""-1)

    有兩個箱子,每個箱子裡裝著完全相同的三個球,從每個箱子裡挑選1個不考慮順序 ,問有多少種挑選方案? (2""-2)

    (2""-1) 和 (2""-2) 本質是相同的,下面以 (2""-1) 為例。

    分析:

    共有 6 種。

    其次,可以將 有重複組合 轉化為 無重複組合,方法如下:

    對於任何一次的有重複組合結果,按照 從小到大的排列:

    a₁ ≤ a₂

    讓 原來三個小球中 號碼比 a₂ 大的小球的號碼 都加 1, 然後 將 小球 a₂ 的號碼 也加 1 並 新增到 三個小球 中。

    這樣以來,就將 從 3 個小球中 有放回的挑選 2 個組合 變為 從 4 個小球 中 無放回的挑選 2個組合。

    具體操作如下(黑底為修改過的球):

    a₁ < a₂

    讓 原來 4 個小球 中 號碼大於 a₂ 的小球的號碼 都減 1,然後 將 a₂ 從 4 個小球 中 去除,並將 a₂ 的號碼也 減 1。

    這樣以來,就將 從 4 個小球中 無放回的挑選 2 個組合 變為 從 3 個小球 中 有放回的挑選 2個組合。

    具體操作如下(黑底為修改過的球):

    上面的事實說明:

    3 取 2 有重複的組合數 ≡ 4 取 2 無重複的組合數,即,C(4, 2) = 6。

    將 3 取 2 的情況 擴充套件到 n 取 m 有:

    將 n 個數 取 m(≤ n) 個 有重複的組合 的結果,按照 從小到大的排列:

    a₁ ≤ a₂ ≤ a₃ ≤ ... ≤ a_m (4)

    對每個 aᵢ(i = 2, 3, ..., m) 重複一下操作:

    讓 被挑選數集 以及 (4) 中 所有比 aᵢ 大的數都加 1, 然後 將 aᵢ 加 1,並將 aᵢ 新增到 被挑選數集 中取;

    這樣以來,就將 n 個數 取 m(≤ n) 個 有重複的組合 變為 n+(m-1) 個數 取 m(≤ n) 個 無重複的組合。

    反過來,對於 n+(m-1) 個數 取 m(≤ n) 個 無重複的組合 的結果,按照 從小到大的排列順序排列:

    a₁ < a₂ < a₃ < ... < a_m (5)

    對每個 aᵢ(i = 2, 3, ..., m) 重複一下操作:

    這樣以來,n+(m-1) 個數 取 m(≤ n) 個 無重複的組合 變為 就將 n 個數 取 m(≤ n) 個 有重複的組合 。

    綜上,就證明了:

    n 個數 取 m(≤ n) 個 有重複的組合 ≡ n+(m-1) 個數 取 m(≤ n) 個 無重複的組合

    最終結果:

    從 n 個元素 中取出 m 個元素,有重複組合 的組合數為:C(n+(m-1), m)。

    題目: 從 A = {1,2, ..., n} 個數 中取 m(≤ [n / 2]) 個,不相鄰組合,即,不存在包括 i 和 i + 1 的組合,問組合數是多了?

    分析:

    這裡使用類似 有重複組合 的思路,將 不相鄰組合 轉化為 等價 的 標準組合。方法如下:

    對於 從 A 個數 中取 m 個 的不相鄰組合 的結果,按照從小到大的順序排列:

    a₁ < a₂ < a₃ < ... < a_m (6)

    對每個 aᵢ(i = 2, 3, ..., m) 重複一下操作:

    這樣以來,就將從 A 中取 m 個 的不相鄰組合 變為 從 A’ = {1, 2, ..., n - (m-1) } 中取 m 個 的標準組合。

    反過來,對於 從 A’ 中取 m 個 的標準組合 的結果,按照從小到大的順序排列:

    a₁ < a₂ < a₃ < ... < a_m (7)

    對每個 aᵢ(i = 2, 3, ..., m) 重複一下操作:

    讓 A" 以及 (7) 中 所有大於 aᵢ 的數都加上 1,並將 aᵢ 也加上1 然後新增到 A" 中。

    這樣以來,就將 從 A’ 中取 m 個 的標準組合 變成 A 中取 m 個 的不相鄰組合 。

    綜上,就證明了:

    從 A = 中取 m 個 的不相鄰組合 ≡ 從 A’ 中取 m 個 的標準組合

    最終結果:

    從 A = {1,2, ..., n} 個數 中取 m(≤ [n / 2]) 個,不相鄰組合 的組合數為:C(n-(m-1), m)。

    最後,除了以上介紹的這些較為基礎的排列組合外,還有大量的排列組合問題存在,例如:

    將 被選擇集合 進行分類,比如:分為男女, 然後 對排列組合結果進行限制,比如:男女相等,男女相鄰;

    總之 排列組合的演算法根據 具體問題不同而異,具體在進行解題時要發揮聰明才智,做到靈活多變,不要強行照搬套路。

    由於篇幅有限,只能回答到這裡了。

  • 中秋節和大豐收的關聯?
  • 在姐妹中扮演扎猜是誰?