ch09-计數原理
{/* label: chap:ch09 */}
{/* latex-label: fig:lottery-example */} \begin{figure}[htbp]
\end{figure} 圖:彩票抽奖示意圖:從33個红球中選6個,從16個蓝球中選1個
中头奖究竟有多难?
知乎上有這么個有趣的問題:"给你選的话,你想選几百万資产,还是上清华北大?"\footnote{免责声明:给一些没有幽默感的人說句话,如果你不知道的话,這是一個笑话,可能并不好笑,如果你不經常上知乎這個软件平台,自然是不知道的.}我相信每個人的答案不同,但是许多人也為這百万現金有過追求,正如每周開奖的彩票吸引着无數人,每個人都梦想着能選中那组独一无二的幸运号码. 但這种"幸运"究竟有多么渺茫?要精确计算中得头奖的概率,我们必须先回答一個根本問題:從所有可能的号码组合中,到底有多少种不同的组合?
以一种常见的彩票游戏為例:我们需要從33個红色球中選出6個,再從16個蓝色球中選出1個. 這項任务可以分為两步:(1) 挑選红球;(2) 挑選蓝球. 挑選蓝球很簡單,有16种選择. 但真正的挑战在于第一步:
從33個红球中不重複地選出6個,一共有多少种選法?
我们可以尝试去列举吗?(1,2,3,4,5,6), (1,2,3,4,5,7), ... 很快我们就会發現,這是一個不可能完成的任务,其总數将是一個天文數字. 更重要的是,我们只關心選出了哪些号码,而不在乎它们被摇出的先后顺序. 選出 05, 08, 13, 21, 27, 32 和選出 32, 21, 13, 08, 27, 05 是完全一样的结果.
這种"只選不排"的問題,向我们提出了對一种全新數學工具的需求. 我们需要發展出一套强大的理論,能够係统地、精确地计算出在各种限制条件下"有多少种方法",无論是需要考虑顺序的排列問題,还是不需要考虑顺序的组合問題. 這就是本章将要探索的计數原理.
加法原理與乘法原理
{/* label: sec:ch09-s01 */}
要解開彩票组合的谜題,乃至处理更複杂的计數問題,我们必须從两個最基本、最核心的原理出發:加法原理 與 乘法原理. 這两個原理就像是计數世界的公理,它们听起来可能像是小學生都会的样子,但其力量在于它们能够被灵活地组合运用,以解决看似極其複杂的問題.
加法原理
想象一下,你從北京要去上海,可以選择乘坐高铁(有3個不同的车次),也可以選择乘坐飞机(有5個不同的航班). 那么,你一共有多少种選择?
這個問題非常直观. 乘坐高铁和乘坐飞机是两种截然不同的選择,它们是互斥的. 你選择了高铁的某個车次,就不可能再選择任何一個飞机航班. 因此,你的总選择數就是把這两類選择簡單相加. 這就是加法原理的精髓.
如果完成一件事有 類方法, 這些方法是相互独立的, 且任何一類方法中的任何一种方法都能独立地完成任务. 在第一類方法中有 种不同的途径, 在第二類方法中有 种不同的途径, ..., 在第 類方法中有 种不同的途径,那么完成這件事共有
种不同的方法.
加法原理的核心在于**“分類”**. 当一個問題可以被分解為几個互不相干、彼此独立的情况时,总數就是各种情况之和. 在上面的例子中,“乘坐高铁”是一類,“乘坐飞机”是另一類. 总的選择數就是 种.
從集合論的观点看,如果 代表第 類方法的集合, 那么這些集合两两不交, 即 for . 完成任务的总方法數就是這些集合的并集的大小:
現在我们看一些加法原理的有趣應用:
某大學的课程目錄中,數學係開设了5门不同的選修课,计算机係開设了3门不同的選修课.一名學生希望從中選择一门课来學習,他有多少种不同的選择?
這個問題是加法原理最直接的應用.學生的目標是“選择一门课”. 我们可以将所有可選的课程分為两類: 第一類:選择數學係的课程,有 种方法. 第二類:選择计算机係的课程,有 种方法.
由于一個學生不能同时選择數學课和计算机课来满足“選择一门课”這個目標(即這两類選择是互斥的),因此总的選择數是两類方法數之和.
所以,该學生共有8种不同的選择.
使用字母 和數字 ,可以構成多少個长度為1或长度為2的密码?密码中的字符不能重複.
完成“構成一個密码”這件事,可以根据密码的长度分為两种截然不同的情况.
第一類:密码长度為1. 我们可以從5個可用字符 中任選一個. 因此,有 种方法.
第二類:密码长度為2,且字符不重複. 這是一個分步過程: 第一步:為密码的第一個位置選择一個字符,有 种選择. 第二步:為第二個位置選择一個字符,由于不能重複,只剩下 种選择. 根据乘法原理,长度為2的密码共有 個.
因為一個密码的长度不可能既是1又是2,所以這两類情况是互斥的.根据加法原理,总的密码個數是
所以,总共可以構成25個這样的密码.
要登上一個有10级台階的楼梯,如果每次只能上1级或2级,总共有多少种不同的登法?
這是一個經典問題,直接列举所有情况会非常困难.我们不妨用 表示登上 级台階的方法數.我们要求的便是 .
考虑我们是如何踏上第 级台階的.這最后的一步,只有两种可能: 第一類:從第 级台階一步跨上来.要实現這种情况, 我们必须先到达第 级, 這有 种方法. 第二類:從第 级台階两步跨上来.要实現這种情况, 我们必须先到达第 级, 這有 种方法.
這两种情况是互斥的,因為我们最后一步的出發点(是 还是 )是唯一的.因此,根据加法原理,我们得到了一個递推關係:
為了使用這個關係,我们需要初始条件. 對于1级台階,只有一种方法:. 對于2级台階,有两种方法(1-1 或 2):.
現在我们可以依次计算:
所以,总共有89种不同的登法.
這個例子深刻地揭示了加法原理如何成為構建递归思想的基石.我们将一個大問題分解為几個互斥的、结構相同的子問題,并通過相加它们的解来得到原問題的解.序列 是著名的斐波那契數列的一個變體.
在一個平面直角坐標係中,一個質点從原点 出發, 每次只能向上(y坐標+1)或向右(x坐標+1)移动一個單位.問该質点到达点 有多少条不同的路径?
令 表示從 到达点 的路径數.我们要计算的是 .
與上一個例子類似,我们考虑質点是如何到达终点 的.其最后一步移动必然是以下两种互斥情况之一: 第一類:從点 向右移动一步到达.到达 的路径數為 . 第二類:從点 向上移动一步到达.到达 的路径數為 .
根据加法原理,我们得到递推關係:
边界条件是显而易见的:從 到达x轴上的任意点 只有一条路径(一直向右), 即 . 同理, 到达y轴上的任意点 也只有一条路径(一直向上), 即 .
我们可以通過構建一個表格或直接计算来求解: , ,
最后,我们计算目標点:
我们需要先计算 和 . 所以,.
因此,共有10条不同的路径.
正整數 的所有正因數中, 有多少個是 的倍數或者是 的倍數?
首先,對 進行素數分解:. 的任意一個正因數 都可以表示為 , 其中 , , .
這個問題看似應该使用容斥原理,因為一個數可能既是6的倍數也是10的倍數.但是,我们可以通過更精细的分類来利用加法原理.我们将目標因數分為两類:
第一類:是 的倍數. 一個因數是 的倍數, 意味着它的素因子分解中, 2的指數至少為1, 3的指數也至少為1.即 且 . 所以,對于這样的因數 : 的選择有 , 共 种. 的選择有 , 共 种. 的選择有 , 共 种. 根据乘法原理,這類因數共有 個.
第二類:是 的倍數, 但不是 的倍數. 一個因數是 的倍數, 意味着 且 . 同时,它不是 的倍數, 意味着 “ 且 ” 這個条件不成立. 因為我们已經要求 , 所以為了使它不是6的倍數, 必须有 , 即 . 所以,對于這類因數 : 的選择有 , 共 种. 的選择必须是 , 共 种. 的選择必须是 , 共 种. 根据乘法原理,這類因數共有 個.
這两類因數集合的定義是互斥的(一個是6的倍數,另一個不是6的倍數).因此,根据加法原理,满足条件的因數总數為
所以,共有10個這样的因數.
通過精巧地定義分類標准( 和 ),我们将一個潜在的容斥原理問題转化為了纯粹的加法原理問題,這展示了在计數中“如何分類”本身就是一门艺术.
乘法原理
現在考虑一個不同的场景. 假设你正在為一次晚宴搭配服装. 你有3件不同的衬衫和4条不同的裤子. 你有多少种不同的搭配方式?
為了完成“搭配一套服装”這個任务,你必须依次完成两個步骤:第一步,選择一件衬衫;第二步,選择一条裤子. 你在第一步的選择(例如,選择了白色衬衫)并不会影响你在第二步的選择數量(你仍然有4条裤子可選). 對于你選择的每一件衬衫,都有4条裤子與之搭配. 因為你有3件衬衫,所以总的搭配方式就是将每一步的選择數相乘. 這就是乘法原理.
如果完成一件事需要分成 個步骤, 完成第一個步骤有 种不同的方法, 完成第二個步骤有 种不同的方法, ..., 完成第 個步骤有 种不同的方法,那么完成這件事共有
种不同的方法.
從集合論的观点看,乘法原理是笛卡尔積的大小 基數的直接體現.為了严谨地理解這一点,我们首先需要引入有序對和笛卡尔積的概念.
一個有序對 是由两個元素组成的集合, 但與普通集合 不同, 它规定了元素的次序.也就是說, 除非 , 否则 . 這正是“分步”思想的數學抽象:第一步的選择是第一個元素,第二步的選择是第二個元素,其顺序至關重要.
设 和 為两個集合, 它们的笛卡尔積, 记作 (讀作“A cross B”), 是所有可能的有序對 的集合, 其中 且 . 用集合符号表示為:
這個概念可以推廣到任意 個集合. 设 為 個集合, 它们的笛卡尔積是所有可能的有序 -元组 的集合, 其中對任意 , 都有 .
笛卡尔積的大小,即其元素的個數,恰好就是乘法原理给出的结果.如果這些集合都是有限集,那么
這個定義完美地将“分步完成任务”這一直观操作數學化了.每一個步骤對應于從一個集合中進行一次選择,而整個任务的所有可能结果,则構成了一個笛卡尔積.
让我们回到服装搭配的問題.如果衬衫的集合是 , 裤子的集合是 , 那么一套搭配就是一個有序對 , 其中 . 所有可能的搭配構成了集合 ,其大小為
尽管我们并不要求你掌握這個概念,不過相應地,我们可以给出一些有趣的應用,让讀者看看其用处:
一家餐厅的午市套餐允许顾客從2种汤()中選择一种, 并從3种主菜()中選择一种.請問共有多少种不同的套餐组合?并寫出這個组合集合.
每一种套餐组合都可以被视為一個有序對 . 所有可能的套餐组合構成的集合,正是汤的集合 與主菜的集合 的笛卡尔積 .
其大小為:
這個集合的具體内容是:
共有6种不同的套餐组合.
组装一台電脑,CPU有2种選择(), 内存有3种選择(), 硬盘有2种選择(), 并且显卡也有3种選择().一种完整的配置方案由CPU、内存、硬盘、显卡各選一种構成.請問有多少种不同的配置方案?
每一种配置方案都可以被视為一個有序四元组 . 所有可能的配置方案集合是這四個選择集合的笛卡尔積 .
根据笛卡尔積的基數公式,总的方案數是:
所以,共有36种不同的電脑配置方案.
原理的辨析與應用
区分加法原理和乘法原理是解决计數問題的關键第一步. 一個簡單的判断方法是:
- 加法原理關注“分類”:完成任务的各种方式是平行的,選择其中任何一种方式都能完成任务. 關键词是“或者”.
- 乘法原理關注“分步”:完成任务需要經歷所有步骤,一步都不能少. 關键词是“并且”.
\begin{table}[htbp]
\caption{加法原理與乘法原理的比较}
\begin{tabularx}{\textwidth}{>{\raggedright\arraybackslash}p{2.5cm} >{\raggedright\arraybackslash}X >{\raggedright\arraybackslash}X}
**比较維度** & **加法原理** & **乘法原理**
核心思想 & **分類讨論**:完成任务有若干類彼此独立的方法. & **分步完成**:完成任务需要經過若干個连續進行的步骤.
關键词 & “或者”、“任選其一”、“情况一、情况二...”、“分為几類” & “并且”、“依次”、“接着”、“每一個...都...”
任务關係 & 各類方法**相互排斥**.選择任何一類中的一种方法,任务即告完成. & 各個步骤**相互依存**.必须完成所有步骤,任务才算完成.
判断准则 & 完成任务的方式是“**择一即可**”. & 完成任务的步骤是“**缺一不可**”.
集合模型 & **不交并集**:$|A_1 \cup ... \cup A_k| = \sum_{i=1}^{k} |A_i|$, 其中 $A_i \cap A_j = \emptyset$ 對所有 $i \neq j$. & **笛卡尔積**:$|A_1 \times ... \times A_k| = \prod_{i=1}^{k} |A_i|$.
經典比喻 & 從北京到上海,可以坐火车**或**飞机. & 搭配一套服装,需要選上衣**和**裤子.
\end{tabularx} \end{table}
在更複杂的問題中,這两個原理往往需要结合使用. 我们通過一個經典的例子来體会這一点.
求在所有三位正整數中,至少含有一個數字“7”的數有多少個?
直接去计算“至少含有一個7”的數字個數,情况会比较複杂. 我们需要分類讨論:恰好含有一個“7”、恰好含有两個“7”、恰好含有三個“7”. 這是一個可行的思路,但過程繁琐且容易出錯. 让我们換一個角度,這正是组合思維的魅力所在.
我们可以先计算它的反面:一個“7”都没有的三位正整數有多少個.
首先,总的三位正整數的個數是多少? 這是一個分步過程:确定百位、十位、個位. 百位不能為0,所以有 种選择(從1到9). 十位和個位可以是0到9中的任意數字,各有 种選择. 根据乘法原理,总共有
個三位正整數.
現在,我们计算**不含數字“7”**的三位數的個數. 這同样是一個分步過程. 百位不能是0且不能是7,所以有 种選择(1,2,3,4,5,6,8,9). 十位和個位都不能是7,所以各有 种選择(0,1,2,3,4,5,6,8,9). 根据乘法原理,不含數字“7”的三位數共有
個.
我们已經将所有三位數分成了两類:“至少含有一個7”的和“一個7也没有”的. 這两類是互斥的,它们的总和就是全部三位數的個數. 因此,根据加法原理的變形(也称為补集原理或容斥原理的最簡單形式),我们得到
所以,至少含有一個數字“7”的三位正整數共有252個.
通過解决這個問題的“反面”,我们巧妙地避開了複杂的分類讨論,将一個需要同时使用加法和乘法原理的複杂問題,转化為了两次簡單的乘法原理應用和一次减法. 這种“正难则反”的策略是组合數學中一個非常强大和常用的思想.
接着我们来看一些關于乘法原理的有趣應用:
令集合 且 . 從集合 到集合 可以定義多少個不同的函數 ?
定義一個函數 的任务, 是為 中的每一個元素, 在 中指定唯一一個與之對應的元素(称為它的“像”). 我们可以将這個任务分解為三個连續的步骤:
第一步:為元素 選择一個像. 可以是集合 中的任意一個元素, 因此有 种選择.
第二步:為元素 選择一個像. 對 的選择與對 的選择是相互独立的. 同样可以是 中的任意一個元素, 因此也有 种選择.
第三步:為元素 選择一個像. 同理,為 也有 种選择.
根据乘法原理,要完成這全部三個步骤,总的方法數是每一步方法數的乘積.
所以,总共可以定義125個不同的函數.
此例揭示了一個普遍结論:從一個包含 個元素的集合到一個包含 個元素的集合, 可以定義 個不同的函數.
在一场田径比赛的决赛中,共有8名選手.假设没有并列名次,那么总共有多少种可能的最终排名?
确定最终排名的任务,等价于為第1名到第8名這8個位置,分别安排一位選手.這是一個典型的分步過程.
第一步:确定第1名. 有 位選手都可能获得冠军, 因此有 种選择.
第二步:确定第2名. 当第1名确定后,只剩下 位選手可以竞争第2名, 因此有 种選择.
第三步:确定第3名. 剩下 位選手, 有 种選择.
...
第八步:确定第8名. 此时只剩下最后一位選手,别无選择,只有 种選择.
根据乘法原理,所有可能的排名总數為:
這個连乘積在數學中非常重要,我们用一個專门的符号階乘 来表示它,记作 .
将 個不同的物體進行全排列, 其方法數恰好是 . 階乘是乘法原理最直接、最重要的推論之一,也是后續學習排列组合的基石.
求正整數 的所有正因數的個數.
直接去寻找并列举720的每一個因數是繁琐且容易遗漏的.我们可以利用算术基本定理,從其素數分解的结構入手. 首先,對 進行素數分解:
根据算术基本定理,720的任何一個正因數 都必须具有 的形式. 其中,各素數的指數必须满足限制条件:, , .
因此,構造一個720的正因數,就相当于分三步来确定指數 的值. 第一步:選择指數 的值. 可以是 中的任意一個, 共有 种選择.
第二步:選择指數 的值. 可以是 中的任意一個, 共有 种選择.
第三步:選择指數 的值. 可以是 中的任意一個, 共有 种選择.
根据乘法原理,正因數的总個數為:
所以,720共有30個正因數.
這個方法具有普适性.對于任意正整數 , 其正因數的個數為 .這是乘法原理在數論中的一個經典且优美的應用.
有4個排成一排的方格,現在用5种不同的颜色對其進行染色,要求相邻的方格颜色不能相同.問有多少种不同的染色方法?
我们将4個方格從左到右依次編号為1, 2, 3, 4.為它们染色是一個分步决策的過程.
第一步:為第1個方格染色. 没有任何限制,我们可以從5种颜色中任選一种,有 种方法.
第二步:為第2個方格染色. 它的颜色必须與第1個方格不同.无論第1個方格選择了哪种颜色,都只排除了1种可能性,因此第2個方格总是有 种颜色可選.
第三步:為第3個方格染色. 它的颜色只需要與第2個方格不同.同样,无論第2個方格選择了什么颜色,第3個方格总是有 种選择.
第四步:為第4個方格染色. 它的颜色只需要與第3個方格不同,因此也有 种選择.
根据乘法原理,总的染色方法數為:
所以,共有320种不同的染色方法.
這個問題的關键在于,每一步選择的數量是固定的,不受前一步具體選择的影响(例如,无論第1格是红色还是蓝色,第2格都剩下4种選择).如果問題的限制条件更為複杂,例如“首尾方格颜色不同”,则可能需要更精细的分類讨論,即加法與乘法原理的结合.
一個包含 個不同元素的有限集合 , 共有多少個不同的子集?(子集包括空集 和集合 本身)
這個問題有一個非常著名的答案,但其最优雅的證明之一恰恰是基于乘法原理.關键在于转變我们的思考角度.
传统的想法是去“挑選”元素组成子集:挑選0個元素的子集,挑選1個元素的子集,...,然后用加法原理求和.這是一個有效但更複杂的方法,我们将在后面學習组合數时再讨論它.
現在,我们換一個角度:對于集合 中的每一個元素,我们来為它做一個决定. 设 . 為了構造一個子集 , 我们依次對 中的每個元素進行决策:
第一步:决策元素 . 是否属于子集 ?我们有两個選择:“是” 或 “否”.
第二步:决策元素 . 是否属于子集 ?同样, 我们有两個選择:“是” 或 “否”.這個决策與對 的决策无關.
...
第 步:决策元素 . 是否属于子集 ?我们仍然有两個選择:“是” 或 “否”.
当我们完成了對所有 個元素的决策后, 一個确定的子集就被唯一地構造出来了.例如, 如果對所有元素都選择“否”, 我们就得到了空集 ;如果都選择“是”, 就得到了集合 本身.
根据乘法原理,完成這 個独立的、各有2种選择的决策,总的方法數為:
所以,一個包含 個元素的集合, 其子集的個數為 .
這個證明是组合思想的典范.它通過将“從整體中挑選一部分”的观点,转變為“對每個個體進行独立决策”,從而将一個看似複杂的分類求和問題(加法原理)转化為了一個極其簡洁的连續决策問題(乘法原理).這种思維的跃迁是解决许多高级计數問題的關键.
组合與排列
{/* label: sec:ch09-s02 */}
在上一节中,我们建立了计數理論的两块基石:加法原理與乘法原理.現在,我们将运用這些原理来打造两個功能强大的專用工具:组合 與 排列.這两個概念是解决绝大多數计數問題的核心.
让我们回到本章開头提出的彩票問題: 從33個红球中不重複地選出6個,一共有多少种選法? 這個問題的本質在于,我们只關心選出了哪些号码,而根本不在乎它们的先后顺序.選出集合 與選出集合 是完全等价的.這种“只選不排”的問題,正是“组合”所要研究的對象.
组合
從 個不同的元素中, 不计顺序地選取 個元素组成一個子集, 称為一個從 個元素中取出 個元素的组合.所有不同组合的個數, 称為组合數, 记作 或更常用的 (讀作“從中選個”).
组合數在不同的教材和领域中有多种常见的记法,例如 , , 甚至 . 它们都表示同一個數學概念.
在本書中,我们主要采用国际通用的二項式係數 记法:
這個符号讀作““從中選個””,為了确保清晰,請记住它们之間的恒等關係:
\textcolor{red}{本書出于方便錄入手寫數學公式的考虑,将统一使用 這一表达方式,希望讀者能尽快熟悉并掌握它.尽管在考试的时候,我们推荐采用课本上的主流寫法.}
我们如何计算 呢?直接计數非常困难, 但我们可以借助乘法原理, 通過一個巧妙的“思想实验”来推導它.让我们以彩票問題為例, 来计算 .
思想实验:如果我们“假装”顺序是重要的,会發生什么? 想象我们不是從袋子里一次性抓出6個球,而是一個接一個地、按顺序地取出6個球.根据乘法原理,总的“有序”選法有多少种呢?
- 第一個球有 种選择;
- 第二個球有 种選择;
- ...
- 第六個球有 种選择.
所以,有序的選法总數為 .
現在,让我们回到“顺序不重要”的現实.考虑一個具體的组合,例如集合 . 在我们刚才的“有序”计數中,這個單一的组合被我们重複计算了多少次? 它對應于所有這6個數字的全排列:. 這6個數字的全排列數,根据乘法原理,是 (6的階乘).
這正是問題的關键所在:我们计算出的“有序”選法总數,将每一個我们真正想要的“无序”组合,都重複计數了 次.因此,為了得到正确的组合數,我们必须用有序選法总數除以這個重複的倍數.
這個逻辑可以推廣到一般情况.從 個元素中按顺序選出 個, 有 种方法.而這 個被選出的元素自身的全排列數為 . 每一個组合都對應着 個有序的選法.因此,我们得到了组合數的计算公式.
從 個不同元素中取出 個元素的组合數 () 為
其中 表示 的階乘, . 特别地, 我们定義 .
我们采用一种經典的组合論證方法,即“雙重计數”.其思想是:對同一個计數問題,用两种不同的方法進行计算,由于我们计算的是同一個量,因此得到的结果必然相等.通過建立這個等式,我们就能解出未知的量.
我们要计數的對象是:從一個包含 個不同元素的集合 中, 選出 個元素并按一定顺序排列的所有方法的总數, 即排列數 .
法一:直接使用乘法原理计算排列數.
我们可以把構造一個 -排列看作是填充 個有序的位置.
-
為第一個位置選择一個元素,有 种選择.
-
為第二個位置選择一個元素,由于元素不能重複,剩下 种選择.
-
...
-
為第 個位置選择一個元素, 剩下 种選择.
根据乘法原理,总的排列數是這些選择數的乘積:
為了将其表达為更紧凑的階乘形式,我们在分子和分母上同乘以 :
法二:通過组合數間接计算排列數.
我们也可以将構造一個 -排列的任务分解為两個连續的步骤:
- 選择元素 (组合): 首先,從 個元素中不计顺序地選出 個元素.根据定義, 完成這一步的方法數正是我们要计算的组合數 .
- 安排顺序 (全排列): 接着,将這已經選出的 個元素進行全排列.這有 种方法.
根据乘法原理,完成這两個步骤的总方法數是 .
由于两种方法计算的是同一個量 ,因此它们的结果必须相等:
現在,我们两边同除以 (由于 , , 所以可以安全地相除), 即可解出 :
将 的另一种形式代入等式 ,我们可以得到公式的另一种常用形式:
這就完成了證明.特别地,当 时, 我们選出空集, 只有一种方法.公式给出 , 與事实相符, 這也體現了定義 的合理性.
現在,我们可以回答彩票問題了.
挑選红球的方法數超過了一百万种!而這僅僅是中头奖的第一步.
排列
理解了组合之后,排列就變得非常自然.排列不僅關心選出了哪些元素,还關心這些元素被排成的顺序.
從 個不同的元素中, 選取 個元素并按照一定的顺序排成一列, 称為一個從 個元素中取出 個元素的排列.所有不同排列的個數, 称為排列數, 记作 或 或 .
如何计算排列數 呢?我们可以把“完成一次排列”這個任务,看作是應用乘法原理的两個步骤:
- 第一步:選材. 從 個元素中, 先“選出”要參與排列的 個元素.根据我们刚刚學到的知识, 這一步有 种方法.
- 第二步:排序. 将這選出的 個元素進行全排列.根据乘法原理, 這一步有 种方法.
因為必须完成所有步骤,任务才算完成,所以根据乘法原理,我们得到排列數與组合數之間的一個至關重要的關係:
這個關係式深刻地揭示了排列和组合的内在联係:一個排列,本質上就是一個组合再加上對所選元素的排序.
将组合數的公式代入,我们就能得到排列數的计算公式.
從 個不同元素中取出 個元素的排列數 () 為
我们的目標是计算從 個不同元素中, 按顺序取出 個元素的所有方法的总數, 即 . 我们可以将構造這样一個排列的過程视為一個需要分步完成的任务,從而直接應用乘法原理.
想象我们有 個空置的位置, 需要從一個含有 個元素的集合 中選择元素来填充它们,且每個元素最多只能使用一次.
-
第一步: 填充第一個位置. 我们可以從集合 中選择任意一個元素, 因此有 种不同的選择.
-
第二步: 填充第二個位置. 由于已經有一個元素被用于填充第一個位置,集合 中只剩下 個元素可用.因此, 有 种選择.
-
第三步: 填充第三個位置. 已有两個元素被使用,剩下 個元素可用.因此, 有 种選择.
-
...
-
第 步: 填充第 個(也是最后一個)位置. 此时,已有 個元素被使用, 剩下 個元素可用.因此, 有 种選择.
根据乘法原理,完成所有這 個步骤的总方法數是每一步方法數的乘積.因此,
這便證明了公式的第一個等式.
為了得到階乘形式的表达式,我们可以對上式進行一個簡單的代數變換.通過在分子和分母上同时乘以 :
分子的部分現在是一個從 開始到 的完整连乘積, 即 . 分母部分则是 . 所以,
這就證明了公式的第二個等式.
最后,根据我们在上一节推導出的排列與组合的關係 ,我们可以验證其一致性:
這不僅验證了我们的公式,也再次强调了排列與组合之間的联係,也就是說,一個 -排列可以被看作是先進行一次 -组合,再對選出的元素進行一次全排列.
一個班级有10名學生,需要從中選出3人,分别担任班长、學習委员和體育委员.有多少种不同的選举结果?
這個問題是典型的排列問題,因為职位不同,所以人選的顺序是至關重要的. (张三任班长, 李四任學委) 與 (李四任班长, 张三任學委) 是两种截然不同的结果.
法一:直接使用排列數公式. 這相当于從10個人中選出3個人進行排列.
法二:利用“先组合,后排序”的思想. 第一步:從10人中選出3個“幸运儿”.這有 种方法.
第二步:為這3個選出的人分配3個不同的职位.這有 种方法.
根据乘法原理,总的選举结果為
两种方法的结果完全一致,這验證了我们對排列與组合關係的理解.
二項式定理
{/* label: sec:ch09-s03 */}
在上一节中,我们引入了组合數 , 并将其定義為從 個不同元素中選取 個的方案數.這個符号也被称為二項式係數.這個名字本身就暗示了它與“二項式”——即形如 的代數表达式——之間存在着深刻的联係.本节的目標就是揭示這一联係,它集中體現在數學中最重要和最美丽的定理之一:二項式定理.
让我们從簡單的例子開始,观察其展開式的係數规律:
我们發現,這些係數似乎與我们之前计算過的某些组合數值相吻合.例如,在 的展開式中, 係數 恰好就是 的值.這难道僅僅是巧合吗?
對于任意變量 和任意非负整數 ,下述展開式成立:
展開来看,即:
考虑乘積的完全展開形式:
根据乘法分配律,展開后的每一項都是通過從 個 因子中, 各自選择 或 相乘得到的.例如, 要得到 這一項, 我们必须從每一個因子中都選择 .
現在,我们来思考一個更普遍的項,形如 是如何产生的. 為了構成這一項,我们必须從 個 因子中:
-
恰好從 個因子中選择 .
-
從其余的 個因子中選择 .
每一次這样的選择方案,都会贡献一個 項.因此, 展開式中 的係數,就等于構成该項的不同選择方案的总數.
這個“選择方案的总數”是一個我们非常熟悉的問題:它等价于“從 個不同的因子中, 選出 個来提供 的方案數”.
根据组合的定義,這個方案數恰好是 .
因此, 項的係數必然是 .
由于 可以從 (即一個 都不選, 得到 ) 取到 (即全部選 , 得到 ),我们将所有這些項加起来,就得到了二項式定理的完整形式:
這個證明完美地解释了為什么组合數会作為係數出現在二項式的展開式中.
杨辉三角
将二項式係數 排列成一個三角形的陣列,我们就得到了著名的杨辉三角.
\begin{figure}[htbp]
{k} = \binom{n-1}{k-1} + \binom{n-1}{k}\binom{4}{2} = \binom{3}{1} + \binom{3}{2}\binom{n*
杨辉三角最引人注目的性質是:每個數都等于它肩上两個數之和.例如,在 行, 6 是由它上一行()中的 3 和 3 相加得到的.這個性質在數學上被称為帕斯卡恒等式.
對于所有满足 的整數 ,有
虽然這個恒等式可以通過代數方法(将组合數公式代入并通分)来證明,但我们在此给出一個更具启發性的组合學證明.
考虑一個组合問題:從 個人的一個班级中選出一個由 人组成的班委会.我们知道, 总的方法數是 .
但是,我们換一种方式来计數.我们從這個小组中指定一個特殊的人,李华.對于最终選出的委员会,只有两种可能的情况,且這两种情况是互斥的:
情况一:李华在班委中. 如果李华已經被選中,那么我们只需要從剩下 個人中, 再選出 個人来填补班委的剩余名额.完成這件事的方法數是 .
情况二:李华不在班委中. 如果李华没有被選中,那么我们必须從剩下 個人中, 選出全部 個班委成员.完成這件事的方法數是 .
根据加法原理,完成“選班委”這件事的总方法數,等于上述两种互斥情况的方法數之和.因此,我们得到:
從三項式定理到多項式定理*
{/* label: sec:ch09-s04 */}
一旦我们得出了二項式定理,一個更自然的問題是:是否有類似的三項式定理、四項式定理呢? 让我们沿用證明二項式定理时的组合思想来分析 的展開式.
展開后的任意一項必然具有 的形式.由于我们是從 個因子中各取一個變量相乘, 所以這些變量的指數总和必须等于 ,即
現在,關键問題是:項 的係數是多少? 這個係數等于從 個因子中, 選出 個提供 、選出 個提供 、再選出 個提供 的总方案數.我们可以通過分步计數来解决這個問題:
- 第一步:為 選择因子. 從 個可用的因子中, 選出 個.這有 种方法.
- 第二步:為 選择因子. 從剩下的 個因子中, 選出 個.這有 种方法.
- 第三步:為 選择因子. 最后剩下的 個因子, 全部用于提供 .這只有 种方法.
根据乘法原理,总的方案數為:
這個结果引出了三項式係數的定義.
對于满足 的非负整數 ,三項式係數被定義為
三項式係數 有一個非常直观的组合解释:它表示将 個不同的物體分成三组, 各组物體的數量分别為 的方法數.這與我们上面的推導過程(将 個因子分成三组)是完全一致的.它也等价于對包含 個 、 個 和 個 的多重集進行全排列的數目.
多項式定理
有了三項式係數的定義,我们可以将二項式定理正式推廣到三項式.
對于任意變量 和任意非负整數 ,下述展開式成立:
其中求和遍歷所有满足条件的非负整數解 .
在深入證明之前,我们必须首先理解三項式定理中求和符号 的确切含義.
這個记号表示,我们需要對所有满足以下两個条件的有序整數三元组 進行求和:
- 均為非负整數, 即 .
- 它们的和恰好等于 , 即 .
這個過程也被称為“遍歷 的所有整數分拆到三個部分”.
让我们以一個具體的例子 来阐明.我们需要找出所有满足 的非负整數解 . 我们可以係统地列出它们:
- 如果 , 那么 . 得到 .
- 如果 , 那么 . 這有两种可能: 和 .
- 如果 , 那么 . 這有三种可能:.
所以,對于 ,求和符号意味着将對應于以下6個三元组的項全部加起来:
因此, 的展開式实际上是:
這與我们直接用分配律展開得到的结果完全一致.
我们采用组合論證来确定展開式中任意一個通項 的係數, 其中 是满足 的非负整數.
考虑乘積的展開形式:
根据乘法分配律,展開后的每一項都是通過從這 個 因子中的每一個因子里選择一個變量(, 或 )相乘而得到的.
為了構成一個具體的項 ,我们必须:
-
恰好從 個因子中的 個因子里選择變量 .
-
恰好從剩下的 個因子中的 個因子里選择變量 .
-
恰好從最后剩下的 個因子里選择變量 .
因此,項 在最终展開式中出現的次數(即它的係數),等于完成上述三步選择的总方案數.
我们可以使用乘法原理来计算這個方案數:
- 為 選择因子. 我们需要從 個不同的因子中, 選出 個来提供變量 . 這是一個组合問題, 方法數是 .
- 為 選择因子. 在完成了第一步之后,还剩下 個因子.我们需要從這些剩余的因子中, 選出 個来提供變量 . 方法數是 .
- 為 選择因子. 此时,最后剩下 個因子.我们必须從這 個因子中選出 個来提供變量 . 方法數是 .
根据乘法原理,总的方案數是以上三步方法數的乘積:
我们已經證明,對于任意满足 的非负整數组 , 其對應項 的係數恰好是三項式係數 .
将所有這些可能的項加起来,就構成了 的完整展開式.因此,定理得證.
求在 的展開式中, 項的係數.
我们首先将表达式看作 的形式, 其中 . 我们要寻找的項是 . 我们需要确定 各自的指數是多少.
令该項為 的形式, 其中 .
-
為了得到 , 我们需要 产生 , 所以 .
-
為了得到 , 我们需要 产生 , 所以 .
-
為了得到 , 我们需要 产生 , 即 , 所以 .
我们檢查指數和:, 這與 相符.
根据三項式定理,包含 的完整項是:
首先,计算三項式係數:
然后,代入 的具體表达式:
因此, 項的係數是 .
這個思想可以被自然地推廣到任意數量的項,從而得到更一般化的多項式定理.
考虑展開式 . 其通項必然具有 的形式, 其中指數和必须為 , 即 .
该項的係數是什么呢?遵循之前的组合論證,這個係數等于将 個不同的因子分成 组, 并指定第 组提供變量 的方案數, 其中第 组的大小恰好為 . 我们将這個數称為多項式係數.它的核心组合意義是: 将 個不同的物體分成 個有区别的组, 使得第 组恰好有 個物體的总方法數.
二項式係數是多項式係數的一個特例.当我们從 個元素中選出 個时, 這等价于将 個元素分成了两组:一组是“被選中的” 個元素, 另一组是“未被選中的” 個元素.因此,
這個视角统一了這些计數工具,揭示了它们共同的“分组”本質.
有了對這個係數组合意義的理解,我们現在可以正式地陈述多項式定理.该定理不僅给出了展開式的完整形式,也同时给出了计算多項式係數的代數公式.
對于任意非负整數 和 ,有
其中多項式係數定義為
我们将使用一個组合論證,其核心思想是:通過分析代數展開的内在组合结構来确定各項的係數.
首先,我们将 寫作 個相同因子的乘積:
根据乘法分配律,展開后的每一項都是通過從這 個因子中的每一個因子里選择一個變量()然后将它们相乘而得到的.
我们来考虑展開式中一個通項的形式,它必然是 , 其中 是非负整數.由于我们总共從 個因子中進行選择, 所以指數的总和必须等于 ,即
現在,我们的中心任务是计算這個通項的係數.這個係數等于能够产生该項的不同選择方案的总數.換言之,它等于“從 個因子中, 選出 個来提供 , 選出 個来提供 , ..., 并選出 個来提供 ” 的总方法數.
這本質上是一個将 個不同的因子(我们可以想象它们被編号為 )分成 個不同组的問題, 第 组的大小為 . 我们可以使用乘法原理,通過一係列连續的组合選择来计算這個方法數:
-
第一步: 從 個可用的因子中, 為變量 選择 個因子.這有 种方法.
-
第二步: 從剩下的 個因子中, 為變量 選择 個因子.這有 种方法.
-
第三步: 從剩下的 個因子中, 為變量 選择 個因子.這有 种方法.
-
...
-
第 步: 從最后剩下的 個因子中, 為變量 選择 個因子.這有 种方法.
根据乘法原理,总的方案數是以上所有步骤方法數的乘積:
現在,我们将這些二項式係數用階乘形式展開,观察化簡過程:
這正是多項式係數 的定義.
我们已經證明,對于任意满足 的非负整數组 , 其對應項 的係數恰好是多項式係數 .
将所有這些可能的項(遍歷所有满足条件的指數集)加总,便構成了 的完整展開式.至此,定理得證.
排列组合
{/* label: sec:ch09-s05 */}
排列與组合的公式為我们提供了计數的代數工具,然而,面對千變万化的计數問題,僅僅掌握公式是远远不够的.真正的挑战在于如何将一個複杂的問題進行剖析、转化,使其结構清晰地對應到我们所學的基本模型上.
相邻與不相邻問題
在排列問題中,元素之間的相對位置關係是最常出現的约束条件之一.“相邻”與“不相邻”構成了一對典型的對立约束,分别對應着两种經典的处理技巧:捆绑法與 插空法.
相邻問題與捆绑法
当問題要求若干個特定元素必须排列在一起(即“相邻”)时,我们可以采用捆绑法来解决.该策略的核心思想是,将這些必须相邻的元素在逻辑上视為一個不可分割的整體,即一個“複合元素”,然后再與其他元素進行排列.
解决元素相邻的排列問題,通常遵循以下步骤:
- 捆绑:将所有必须相邻的 個元素视為一個單一的、不可分割的“大元素”.
- 外排:将這個“大元素”與其余的 個元素進行全排列.如果共有 個元素(包括“大元素”), 则此步的方案數為 .
- 内排:考虑被捆绑的 個元素内部自身的排列方式.此步的方案數通常為 .
- 相乘:根据乘法原理,将“外排”和“内排”的方案數相乘,得到最终结果.
有5名男生和3名女生站成一排,如果要求3名女生必须站在一起,問有多少种不同的排法?
這是一個典型的相邻問題,我们可以运用捆绑法.
第一步:捆绑. 将3名女生视為一個整體,记作 . 現在,問題转化為對5名男生 和一個女生整體 進行排列.
第二步:外排. 我们現在需要排列的對象是 , 共 個元素. 對這6個元素進行全排列,方法數為
第三步:内排. 在女生構成的整體 内部,3名女生自身也可以有不同的排列顺序. 3名女生的全排列方法數為
第四步:相乘. 根据乘法原理,总的排法數是外排和内排方法數的乘積.
所以,共有4320种不同的排法.
用數字 0, 1, 2, 3, 4, 5 组成没有重複數字的六位數,要求偶數數字必须相邻,奇數數字也必须相邻,問能组成多少個這样的六位數?
首先,我们确定數字的奇偶性. 偶數集合 ,共3個. 奇數集合 ,共3個.
問題要求偶數相邻,奇數也相邻.我们應用两次捆绑法.
第一步:捆绑. 将3個偶數捆绑成一個整體,记作 . 将3個奇數捆绑成一個整體,记作 .
第二步:外排. 現在的問題等价于排列 和 這两個“大元素”. 全排列方法數為 . 但是,组成的數是六位數,首位不能為0.我们需要對 和 的排列進行分類讨論.
情况一:奇數捆绑 在首位. 此时排列為 . 這种情况下,首位必然是奇數(1, 3或5),不可能是0,因此所有排列都有效. 内部的排列數:. 内部的排列數:. 此情况下的总方法數為 .
情况二:偶數捆绑 在首位. 此时排列為 . 這种情况下, 首位必须是 中的一個數字. 為了保證是六位數,首位不能是0. 我们考虑 内部的排列. 它的首位有两個選择(2或4). 剩下的2個偶數(包括0)在 内部的后两個位置進行全排列, 有 种方法. 所以, 内部有效的排列數為 . 内部的排列數依然是 . 此情况下的总方法數為 .
第三步:相加. 根据加法原理,将两种情况的方法數相加.
所以,共能组成60個這样的六位數.
不相邻問題與插空法
当問題要求若干個特定元素必须互不相邻时,我们可以采用插空法.该策略的核心思想是,先排列那些没有位置限制的元素,這些元素会自然地形成一些“空隙”,然后将要求不相邻的元素插入到這些空隙中.
解决元素互不相邻的排列問題,通常遵循以下步骤:
- 排不受限元素:首先排列那些没有“不相邻”限制的元素.假设有 個這样的元素, 它们的排列數為 .
- 造空:這 個元素排好后, 将产生 個可供插入的空隙(包括队伍的最前端和最后端).
- 插入:将 個要求不相邻的元素, 插入到這 個空隙中.由于每個空隙最多只能放一個元素, 這相当于從 個空隙中選出 個進行排列.方案數為 .
- 相乘:根据乘法原理,将上述步骤的方案數相乘,得到最终结果.
将3本不同的小說和4本不同的诗集排成一排,要求3本小說互不相邻,問有多少种不同的排法?
這是一個典型的“互不相邻”問題,應使用插空法. 小說是受限元素,诗集是不受限元素.
第一步:排诗集. 首先排列4本不同的诗集.方法數為
第二步:造空. 4本诗集排好后,形成5個可供插入的空隙.
第三步:插小說. 将3本不同的小說插入到這5個空隙中,每空至多一本. 這相当于從5個空隙中選出3個来放置小說,并且要考虑小說的顺序.這是一個排列問題. 方法數為
第四步:相乘. 根据乘法原理,总的排法數為
所以,共有1440种不同的排法.
在处理计數問題时,必须精确理解约束条件的含義.“互不相邻”與“不全相邻”是两個極易混淆的概念.
-
互不相邻:指任意两個指定的元素都不能相邻.這是插空法的适用范围.
-
不全相邻:指指定的元素不全部连在一起即可,允许其中一部分相邻.
對于“不全相邻”問題,直接计數通常很困难,因為它包含多种複杂情况.此时,更簡洁的策略是使用补集思想(正难则反),即用总的排列數减去其對立面——“全部相邻”的排列數.
有5名男生和3名女生站成一排,回答下列問題:
- 3名女生互不相邻的排法有多少种?
- 3名女生不全相邻的排法有多少种?
這個問題旨在厘清“互不相邻”和“不全相邻”的区别.
(1) 3名女生互不相邻. 這是一個“插空法”問題. 第一步:先排5名男生,有 种方法. 第二步:5名男生形成6個空隙. 第三步:将3名女生插入6個空隙中,有 种方法. 根据乘法原理,总方法數為
(2) 3名女生不全相邻. 這是一個“补集思想”問題.它的對立面是“3名女生全部相邻”. 首先,计算总的排列數.8個人全排列,有 种方法.
接着,计算對立事件(3名女生全部相邻)的排列數. 這正是我们用“捆绑法”计算過的第一個例子. 将3名女生捆绑,與5名男生共6個元素全排列,再乘以女生内部的全排列.
最后,用总數减去對立事件數.
比较两個结果,我们可以看到 . 這是因為“不全相邻”的情况包含了“恰有两名女生相邻”以及“三名女生互不相邻”這两种情况, 而 只是后者.
為何捆绑法與插空法有效?
在上一节中,我们介绍了处理相邻與不相邻問題的两种標准化流程:捆绑法與插空法.這些方法之所以强大,是因為它们并非簡單的技巧,而是将複杂的约束問題巧妙地转化為基本计數原理應用的典范.本节将深入探讨這两种方法背后的數學逻辑,以揭示其有效性的根本原因.
捆绑法
相邻問題的核心约束是“某些元素必须保持相對位置不變”,這破坏了全排列中每個元素独立性的前提.捆绑法的本質,是将一個带有複杂约束的计數問題,通過逻辑上的等价變換,转化為一個无约束的、分步的構造問題.
核心原理
我们将證明,一個满足“個元素相邻”的排列,可以被唯一地通過以下两個独立的步骤構造出来:
- 内部構造:将被指定的 個元素進行全排列,形成一個有序的、不可分割的複合元素.
- 外部構造:将此複合元素與其余 個普通元素進行全排列.
让我们来分析這個構造過程的完備性與唯一性:
- 完備性:任何一個满足条件的最终排列,都能通過這個两步構造法得到吗?答案是肯定的.在任意一個满足条件的排列中,那 個相邻的元素必然以某种顺序排列(對應内部構造),并且這個由它们组成的“元素块”必然在整個序列中占据一個位置(對應外部構造).因此,不存在任何一种合法的排列会被我们的構造過程遗漏.
- 唯一性:是否存在两個不同的構造步骤序列,会产生同一個最终排列?答案是否定的.如果我们改變了内部構造(例如,将捆绑的 顺序從 改為 ),那么最终排列中這部分元素的顺序也必然改變.同样,如果我们改變了外部構造(例如,将複合元素的位置移动),那么最终排列也必然不同.因此,每一個独特的“内部構造+外部構造”组合都唯一地對應一個最终的合法排列.
由于我们建立了一個從“構造步骤”到“合法排列”的一一對應關係,那么“合法排列”的总數就精确地等于“構造步骤”的总數.根据乘法原理,構造步骤的总數是每一步方法數的乘積.
- 内部構造的方法數是對 個元素的全排列, 即 .
- 外部構造的方法數是将 個元素(個普通元素和1個複合元素)進行全排列, 即 .
因此,总方法數為 . 這就從根本上證明了捆绑法计算逻辑的正确性.它将一個静态的“满足约束的排列集合有多大”的問題,动态地转變為“生成一個這样的排列有多少种方法”的問題.
插空法
不相邻問題的核心约束是“某些元素之間必须被其他元素隔開”.直接处理這种“排斥性”约束是困难的.插空法的精妙之处在于,它通過逆向思維,将一個複杂的定位問題,转化為一個有序的填充問題.
插空法同样是一個構造性的過程,其逻辑的严谨性依赖于以下分步構造的唯一性與完備性:
- 構建框架:首先排列那些没有位置限制的 個元素.這一步的目的是创建一個稳定的“骨架”或“框架”.
- 填充框架:将要求不相邻的 個元素,放置到由上述框架产生的空隙中.
让我们来审视這個過程的數學基礎:
- 空隙的定義: 個已經排好的元素 , 会在它们之間以及两端, 严格地定義出 個不同的、可识别的“空隙”位置.
這些空隙是放置“不相邻”元素的理想容器,因為任何被放入不同空隙的两個元素,都必然被至少一個框架元素所分隔,從而天然满足了“不相邻”的约束.
-
填充的本質是排列:当我们将 個不同的受限元素放入 個空隙中,并且每個空隙至多放一個元素时,這個過程本身是一個排列問題.它等价于:
-
從 個空隙中選出 個空隙.
-
将 個不同的元素排入這 個選定的空隙中.
這正是排列 的组合意義.
與捆绑法類似,這個两步構造過程(構建框架 填充框架)與所有满足“互不相邻”条件的最终排列之間,也構成了一個一一對應關係.
- 完備性:任何一個合法的排列,其不受限元素必然構成一個有序子序列(對應框架構建),而受限元素必然分布在由這些不受限元素隔開的位置上(對應填充框架).
- 唯一性:如果框架的排列不同,或者填充空隙的方案不同,最终得到的总排列也必然不同.
因此,满足条件的总排列數,等于構建框架的方法數與填充框架的方法數的乘積.
- 構建框架的方法數是對 個不受限元素的全排列, 即 .
- 填充框架的方法數是從 個空隙中選 個進行排列, 即 .
最终结果為 . 這雄辩地證明了插空法不僅僅是一個便捷的技巧,而是一個逻辑严密、基于乘法原理的構造性證明.
总而言之,捆绑法和插空法是组合思維中“转化與構造”思想的集中體現.捆绑法通過“化零為整”簡化了元素間的關係,而插空法通過“先主后次”确定了元素的相對位置.理解它们深层的構造性原理,是我们将這些方法推廣應用到更複杂计數問題的關键.
一条街道上有 10 盏路灯,将路灯依次排列并編号 1-10. 有關部门要求晚上這 10 盏路灯中相邻的两盏灯不能全開,且這 10 盏路灯中至少打開两盏路灯.则符合要求的開法总數是 \rule{2cm}{0.4pt}.
法一:
此問題的核心约束是“開着的灯互不相邻”,并且這是一個组合問題,因為我们只關心哪些位置的灯是開的,而灯本身是无差别的.
問題的關键在于转換视角.直接去挑選 個不相邻的位置是困难的,但我们可以反過来思考:利用“不開的灯”来為“開的灯”制造空隙.這正是插空思想的精髓.
我们根据打開的灯數 進行分類讨論, 其中 .
假设我们打開 盏灯, 那么就有 盏灯是關着的. 我们可以将這 盏關着的灯(视為相同的元素)先排成一排, 它们自然地形成了 個空隙(包括两端).
為了保證打開的 盏灯彼此不相邻, 我们必须将這 盏灯放入到這 個不同的空隙中,且每個空隙最多只能放一盏灯.
由于灯的状态(開或關)是无差别的,這個過程等价于從 個空隙中選出 個来放置要打開的灯.這是一個纯粹的组合問題,方法數為
現在我们考虑 的取值范围.根据問題要求, . 同时, 空隙的數量必须不少于要插入的灯的數量, 即 . 因此 的所有可能取值為 .
根据加法原理,我们将所有情况的開法數相加:
-
打開2盏灯 (): 有 盏灯關闭, 形成 個空隙. 方法數為 .
-
打開3盏灯 (): 有 盏灯關闭, 形成 個空隙. 方法數為 .
-
打開4盏灯 (): 有 盏灯關闭, 形成 個空隙. 方法數為 .
-
打開5盏灯 (): 有 盏灯關闭, 形成 個空隙. 方法數為 .
将所有可能情况相加,得到总的開法數為
所以,符合要求的開法总數是133. 法二:
此問題包含两個核心约束:(1) “開”的灯不能相邻;(2) “開”的灯的數量至少為2. 問題的本質是從10個位置中,選出若干個互不相邻的位置. 這是一個组合問題,而非排列問題,因為我们只關心哪些灯是開的,而不關心其顺序.
设我们選择打開 盏灯. 這等价于從集合 中選取 個數,且任意两個數均不相邻. 令選出的 個數(即灯的編号)為 . “互不相邻”的约束条件可以數學化為 對于所有 .
為了处理這個不等式约束,我们構造一個雙射. 定義一個新的整數序列 如下:
我们来分析新序列的性質: . . 對于任意 , . 由于 , 我们有 , 這意味着 .
因此,原問題中選择 個互不相邻的數 從 , 等价于從集合 中選择 個不同的數 . 這种選择的方法數即為组合數
現在我们考虑 的取值范围. 根据問題要求, . 同时, 為了能够選出 個數, 必须有 , 即 , 所以 . 因此 的可能取值為 .
根据加法原理,我们将所有可能情况的開法數相加: 当 时, 方法數為 . 当 时, 方法數為 . 当 时, 方法數為 . 当 时, 方法數為 .
总的開法总數為
所以,符合要求的開法总數是133.
某次联欢会要安排3個歌舞類节目、2個小品類节目和1個相声類节目的演出顺序,则同類节目不相邻的排法种數是( ). \begin{multicols}{4}
[label=\Alph*.]
- 72
- 120
- 144
- 168
\end{multicols}
本題涉及對多個元素集合的“不相邻”约束,正面来很複杂,使用容斥原理(正难则反)正好.
首先,我们假定所有6個节目都是独一无二的. 总的排列數(没有任何限制)為
我们需要排除所有不符合“同類节目不相邻”要求的排列. “同類节目不相邻”的對立面是“至少有一類同類节目是相邻的”. 具體来說,就是“2個小品相邻”或者“3個歌舞中有节目相邻”.
设 為所有排列的全集, . 令 為 “2個小品节目相邻” 的排列構成的集合. 令 為 “至少有2個歌舞节目相邻” 的排列構成的集合. 我们要求解的是 . 根据容斥原理, .
将2個小品节目捆绑成一個複合元素.現在我们排列 {歌舞1, 歌舞2, 歌舞3, 相声, (小品块)} 這5個對象,有 种方法. 小品块内部有 种排列.
直接计算“至少有2個歌舞相邻”比较複杂,我们计算其补集,即“3個歌舞节目互不相邻”(记作 ). 為此,我们使用插空法.先排列非歌舞节目{小品1, 小品2, 相声},有 种方法. 這3個节目形成了4個空隙.将3個不同的歌舞节目插入這4個空隙中,有 种方法.
因此,.
這個集合表示“小品相邻” 且 “歌舞至少有2個相邻”. 我们同样可以利用补集思想来计算這個交集的大小,即 . 表示“小品相邻” 且 “歌舞互不相邻”. 我们再次使用插空法. 将被捆绑的小品块和相声节目作為框架.排列 {(小品块), 相声} 有 种方法.小品块内部有 种排列. 故框架的排列數為 . 這個框架形成了3個空隙.将3個不同的歌舞节目插入這3個空隙中,有 种方法.
所以, .
不符合要求的排列总數為
因此,符合要求的排列种數為
故選B.
定序問題與倍缩策略
在排列問題中,除了相邻與不相邻的约束外,另一類常见的限制是定序問題,即要求某几個元素必须保持特定的相對顺序.例如,在排列 A, B, C, D 时,要求 A 必须始终在 B 的左边.
面對這類問題,一個極其强大的思想是倍缩策略,其本質是“先放后缩”.我们首先忽略定序的约束,對所有相關元素進行全排列,得到一個总數.然后,我们分析在這個总數中,我们所關注的、被定了序的元素有多少种排列方式.由于題目只允许其中的一种特定顺序,我们原来的计數就“夸大”或“重複”了,其倍數恰好是被定序元素的全排列數.因此,我们用总排列數除以這個“重複倍數”,即可得到最终答案.
這個思想并非全新.事实上,组合數的公式本身就是倍缩策略最經典的體現.
此公式的组合意義是:要從 個元素中選出 個(不计顺序), 我们可以先選出 個并排列它们(共 种方法), 但由于我们不關心這 個元素的顺序, 而它们自身有 种不同的排列, 所以我们将 除以 来“消除”顺序的影响.
倍缩策略,即用总排列數除以被定序元素的全排列數,是解决定序問題的一种高效方法.然而,這种“除法”操作并非凭空产生的技巧,而是乘法原理的逆向應用,其背后是深刻的集合划分與一一對應思想.為了彻底理解其有效性,我们必须回归计數的本源.
我们的目標是计算一個集合 (含 個元素)的所有排列中, 满足特定 個元素 保持固定相對顺序(例如, 必须在 之前, 必须在 之前, 以此類推)的排列总數.令這個我们想求的、符合条件的排列集合為 , 其大小為 .
直接计算 是困难的, 因此我们引入一個我们熟知的、更大的集合作為參照:令 為 中所有 個元素的全排列集合, 我们知道 .
關键在于建立集合 與集合 之間的數學關係.我们将通過一個構造性的論證, 使用乘法原理来表达 .
考虑如何構造出 中的任意一個排列.我们可以通過一個两步過程来唯一地生成每一個排列:
- 選择一個“骨架”排列. 我们從符合定序条件的集合 中任意選择一個排列. 在這個排列中, 那 個特殊元素的相對顺序是正确的.完成這一步, 我们有 种選择.
- 對特殊元素進行“内部重排”. 在上一步選出的“骨架”排列中,那 個特殊元素占据了 個确定的位置.現在, 我们保持其他 個元素不动, 只将這 個特殊元素在這 個位置上進行任意的全排列.完成這一步, 有 种方法.
根据乘法原理,通過這两個步骤,我们总共可以構造出 個不同的排列.
現在,我们必须證明這個構造過程與集合 是等价的.也就是說, 它不重不漏地生成了 中的所有 個排列.
- 无遗漏): 中的任何一個排列能否被我们的方法構造出来? 答案是肯定的.任取一個 中的排列 , 其中 個特殊元素的位置和内部顺序是任意的.我们可以通過一個“標准化”操作, 将這 個元素按照題目要求的固定顺序重新排列, 從而得到一個唯一對應的“骨架”排列(它必然属于集合 ).這證明了任何排列 都有其構造来源.
- 无重複: 两個不同的構造步骤组合,是否会产生同一個最终排列? 答案是否定的.假设我们通過 和 得到了同一個最终排列 . 一個排列中,所有非特殊元素的位置,以及所有特殊元素所占据的位置集合,都是唯一的.因此, 和 必须具有相同的结構, 即相同的非特殊元素排列和相同的特殊元素占位.又因為在“骨架”排列的定義中, 特殊元素的相對顺序是固定的, 所以 必须等于 . 既然骨架相同,而最终结果 也相同, 那么施加在骨架上的“内部重排”操作也必须相同, 即 等于 . 這證明了每一种構造组合都唯一地對應一個最终排列.
上述論證表明,我们建立了一個從“構造步骤對”到“全排列集合 ” 的一一對應關係.因此,它们的大小必然相等:
我们已知 ,所以
由此解出我们最初的目標 :
這個推導從根本上揭示了倍缩策略的本質:它不是簡單的除法,而是對乘法原理方程 的求解.
從另一個角度看,這個過程等价于将 個全排列進行分组或划分. 我们将所有排列按照“除了 個特殊元素的内部顺序外,其他一切都相同”的规则進行分组. 例如,排列 和 就属于同一组, 因為它们的骨架(非 元素的位置和 元素所占的位置)是相同的. 每一组内有多少個排列?這恰好等于這 個特殊元素自身的全排列數, 即 個. 而題目要求的“定序排列”是什么?它恰好是每一组中那唯一一個满足特定顺序的排列. 因此,符合条件的排列总數 ,就等于這個分组的數量. 根据除法原理,分组的數量為:
這两种视角都严谨地證明了倍缩策略的正确性.它将一個带有複杂“相對顺序”约束的問題,转化為一個结構清晰的、關于等价類的计數問題.
若在一组共 個元素的排列中, 有 個特定元素被要求保持固定的相對顺序,则符合条件的排列數可以通過以下方式计算:
- 计算這 個元素的全排列數, 即 .
- 這 個被定序的元素在上述全排列中, 自身有 种不同的排列方式.
- 由于约束只允许這 种排列中的一种, 我们将总數除以 .
最终的排列數為 . 如果有多组元素被定序,则需除以各组元素内部全排列數的乘積.
體育课上,罗老师让8名身高各不相同的同學排队,要求排成前后两排,每排4人,且每排同學從左到右身高依次递增,则不同排法的种數為( ). \begin{multicols}{4}
[label=\Alph*.]
- 60
- 70
- 80
- 90
\end{multicols}
此問題的核心在于,一旦确定了哪些同學在前排、哪些同學在后排,那么由于“身高依次递增”的严格约束,每一排的站位顺序就唯一确定了.因此,問題的本質從一個排列問題,退化為了一個分组或组合問題.
我们的任务可以簡化為:将8名独一无二的同學分成两组,一组是“前排组”,另一组是“后排组”,每组4人.
我们可以通過确定“前排组”的人選来完成這個任务.從8名同學中選出4名到前排,這是一個组合問題,其方法數為
一旦這4名同學被選定,他们只能以身高從低到高的一种方式站立.
剩下的 名同學自动成為“后排组”,同样,他们的站立方式也只有一种.
根据乘法原理,总的排法數就是分组的方法數,即 .
我们也可以從倍缩策略的角度来理解這個問題,這种视角更能揭示其排列的本質.
首先,我们不考虑任何身高顺序的限制,将8名同學安排到8個具體的位置上(4個前排位置,4個后排位置).這相当于8名同學的全排列,总方法數為 .
現在我们引入约束条件. 對于最终被安排在前排的4名同學,无論他们是谁,在我们的 种总排列中, 他们在這4個前排位置上可以有 种不同的排列方式.然而, 題目要求他们必须按身高递增排列, 這只是 种排列中的一种.因此, 我们對前排的排列多算了 倍.
同理,對于最终被安排在后排的4名同學,他们的顺序也被唯一确定,所以我们對后排的排列也多算了 倍.
根据倍缩策略,我们将总排列數除以這两個重複的倍數,得到符合条件的排法數:
這與我们從组合角度得到的结果完全一致.故選B.
12名同學合影,站成前排4人后排8人,現摄影师要從后排8人中抽2人调整到前排,若其他人的相對顺序不變,则不同调整方式的种數是( ). \begin{multicols}{4}
[label=\Alph*.]
\end{multicols}
此問題可以分解為两個独立且连續的步骤:首先是“選人”,然后是“排位”.
第一步是選人. 摄影师需要從后排的8名同學中選出2人调到前排.這是一個组合問題,因為此时我们只關心選出的是哪两個人,而不涉及他们的顺序. 選人的方法數為
第二步是排位. 调整后,前排将有 名同學.這6名同學由原来的4位和新選出的2位構成. 后排则剩下 名同學.
問題的核心约束是“其他人的相對顺序不變”. 這意味着:
-
原前排4人的相對顺序保持不變.
-
原后排剩下的6人的相對顺序也保持不變.
由于后排6人的位置和相對顺序都已固定,我们只需考虑前排這6人的新排法.
在前排的6個位置上,我们需要安排4名“旧”同學和2名“新”同學.其中,4名“旧”同學的相對顺序是固定的.這是一個典型的定序問題.
我们可以使用插空法的思想来解决排位問題. 前排的6個位置可以看作6個空位.我们需要為新選出的2名同學選择位置. 為第一位新同學選择位置,有6個選择. 為第二位新同學選择位置,有5個選择. 由于這两位新同學是不同的個體,他们的顺序是重要的. 因此,為這两位新同學安排位置的方法數是一個排列問題,共有
一旦這两位新同學的位置确定,剩下的4個位置将由4名“旧”同學按他们原有的相對顺序依次填入,方法只有1种.
或者,我们也可以运用倍缩策略来思考排位問題. 如果不考虑任何顺序限制,将這6名同學(4旧2新)排在前排6個位置上,共有 种方法. 但是,題目要求4名“旧”同學的相對顺序不變.在這 种排列中, 這4名“旧”同學自身有 种排列方式,而我们只接受其中的1种. 因此,符合条件的排法數為
最后,根据乘法原理,将“選人”和“排位”两個步骤的方法數相乘,得到总的调整方式种數:
在題目選項的记法中,即為 .故選C.
计算由單词 \texttt{MISSISSIPPI} 中所有字母構成的不同排列(字符串)的數量.
這個問題引入了一种新的複杂性:元素中存在重複. 單词 \texttt{MISSISSIPPI} 共包含11個字母,但它们并非各不相同. 具體的構成為:1個 M, 4個 I, 4個 S, 2個 P.
直接應用排列公式是行不通的,因為它要求所有元素都是可区分的. 然而,我们可以借助倍缩策略,通過一個思想实验来解决此問題.
首先,我们假想所有的字母都是可区分的. 我们可以给相同的字母加上下標来区分它们,例如:
現在我们拥有11個完全不同的對象,将它们進行全排列,总方法數為 .
接下来,我们考虑去除下標,回到原始問題. 当我们這样做时,会發生什么情况? 考虑任意一個具體的排列,例如 . 現在我们關注其中的4個I (). 在這個排列的特定位置上, 這4個I自身可以有 种不同的排列方式(例如 和 交換位置). 在我们假想的“可区分”世界里, 這些都是不同的排列. 但在現实世界中, 由于所有的I都是一样的, 這 种排列都對應着同一個字符串 \texttt{SIPMISSSIPSI}.
這意味着,我们最初计算的 對每一個最终的、唯一的字符串, 都因為I的存在而重複计數了 倍. 因此, 我们必须用总數除以 来消除這种由I引起的重複.
同理,對于4個S,我们也重複计數了 倍. 對于2個P,我们重複计數了 倍.
根据倍缩策略,我们将总的假想排列數,除以由每种重複元素内部排列所产生的重複倍數.
所以,共有34650個不同的排列.
此例導出了一個普遍的结論:對于包含 個對象的多重集, 其中有 個第一類相同對象, 個第二類相同對象, ..., 個第 類相同對象(其中 ),其不同的排列數為
這正是我们之前遇到的多項式係數. 倍缩策略為其提供了一個至關重要的组合解释.
将 位不同的宾客安排在一個圓形的餐桌旁就座,有多少种不同的就座方式?(如果两种就座方式中,每位宾客的左邻和右邻都完全相同,则认為這两种方式是相同的.)
這個問題是典型的圓排列問題. 其核心在于,圓桌没有“起点”或“终点”的概念,排列的评价標准從绝對位置變為了相對位置.
我们再次运用倍缩策略,從一個更簡單、我们熟知的線性排列開始.
首先,我们暂时忽略圓桌的特性,想象将這 位宾客排成一条直線. 我们可以轻易得到, 总的線性排列數為 .
現在,我们将任意一個線性排列,例如 , “弯曲”成一個圓圈,使其首尾相连. 考虑這個線性排列通過“旋转”可以得到哪些其他的線性排列?
通過 次旋转, 我们得到了 個不同的線性排列. 然而, 当我们将它们都布置到圓桌上时, 它们描述的是同一种就座方式. 為什么?因為在每一种情况中, 的左边总是 、右边总是 ; 的左边总是 、右边总是 ,以此類推. 相對位置關係是完全一样的.
這揭示了一個關键事实:我们最初计算的 种線性排列, 可以将它们 個一组進行划分. 每一组中的 個線性排列,都對應着同一個圓排列. 因此,我们的初始计數 将每一种真正的圓排列都重複计算了 倍.
根据倍缩策略,我们将線性排列总數除以這個重複的倍數 ,即可得到圓排列的數目.
所以,有 种不同的就座方式.
延伸思考:項链問題. 如果不是安排宾客,而是将 颗不同的珠子串成一条項链,有多少种不同的方法?項链不僅可以旋转,还可以從空間中拿起来翻转. 對于 的情况, 每一次翻转都会将一個圓排列變成它的“镜像”排列. 除非一個排列本身是左右對称的(這种情况较為特殊), 否则一個排列和它的镜像排列是不同的圓排列, 但對應的是同一条項链. 因此, 除了極少數對称情况, 我们之前的计數 又将每条項链重複计算了2倍(其自身和其镜像). 對于大多數非對称的項链,其方法數是 .
在一個 的棋盘格上, 一個棋子從左下角 出發, 要到达右上角 . 如果每次只能向上或向右移动一個單位,总共有多少条不同的最短路径?
這是一個經典的格路计數問題,可以通過多种方式来解决,而倍缩策略提供了一种非常直观且深刻的视角.
首先,我们分析路径的構成. 任何一条從 到 的最短路径, 都必须包含 次向右的移动(我们记作 R)和 次向上的移动(我们记作 U). 因此,每一条不同的路径都唯一地對應着一個由 個 R 和 個 U 構成的序列, 该序列的总长度為 .
例如,在 的棋盘上, 從 到 的路径:
-
路径 對應序列 \texttt{RRU}.
-
路径 對應序列 \texttt{RUR}.
-
路径 對應序列 \texttt{URR}.
于是,原問題就转化為:计算由 個 R 和 個 U 構成的不同序列的數量.
這是一個带有重複元素的排列問題,正是倍缩策略的用武之地.
我们想象有 次移动, 它们分别是 和 . 将這 個不同的操作進行全排列, 总方法數為 .
在現实問題中,所有的向右移动 R 是没有区别的,所有的向上移动 U 也是没有区别的. 在我们假想的 种排列中, 那 個不同的向右操作 自身可以有 种不同的排列方式. 但這些都對應着同一個由 個 R 组成的移动模式. 因此, 我们的计數因 R 的存在而重複了 倍.
同理,我们的计數也因 U 的存在而重複了 倍.
我们将总的假想排列數除以由重複元素产生的倍數,得到最终的路径數:
我们立刻认出,這個结果就是组合數 或 . 這為组合數提供了一個全新的、極其重要的组合解释:
另一种组合视角: 我们也可以直接用组合的定義来解决. 一条路径总共需要 步. 我们只需要在這 步中,决定哪几步是向右移动(R),剩下的就自动是向上移动(U). 從 個总步數中, 選出 步来执行向右移动,方法數為
這與倍缩策略得到的结果完全一致,再次印證了倍缩策略與组合定義的内在统一性. 這种将排列問題转化為序列編码,再利用倍缩策略求解的方法,是组合數學中一种非常强大的通用技巧.
城步苗族自治县“六月六山歌节”是湖南省四大节庆品牌之一,至今已举办25届.假设在即将举办的第26届“六月六山歌节”中,组委会要在原定排好的10個“本土歌舞”节目中增加2個“歌王對唱”节目.若保持原来10個节目的相對顺序不變,则不同的排法种數為( ). \begin{multicols}{4}
[label=\Alph*.]
- 110
- 144
- 132
- 156
\end{multicols}
問題的核心约束在于“保持原来10個节目的相對顺序不變”. 這意味着,如果我们把原来的10個节目记為 , 那么在最终的节目單中, 必须出現在 之前, 必须出現在 之前,以此類推. 這是一個典型的定序問題,非常适合使用倍缩策略来解决.
在增加了2個新的“歌王對唱”节目后(我们视這两個新节目為不同的個體 ), 总的节目數量為 個.
法一:倍缩策略
首先,我们忽略“相對顺序不變”的约束,考虑将這12個不同的节目進行全排列. 总的排列方法數為
現在,我们引入约束条件. 在上述 种排列中, 那10個原来的节目自身可以有 种不同的内部排列方式. 然而,題目要求只接受它们“按原有顺序”排列的那一种.
這意味着,對于任何一种满足条件的最终排法,我们最初的 计數都将其重複计算了 次(因為這 次内部重排都被我们算作了不同的情况). 因此,我们必须用总排列數除以這個重複的倍數.
符合条件的排法种數為
法二:選位法 (插空思想的變體)
我们也可以從構造的角度来思考這個問題. 总共有12個节目位置需要安排. 問題的本質可以转化為:先為2個新节目選择位置,剩下的位置自然就由10個旧节目按照它们固有的顺序填充.
第一步:為2個新节目選择位置. 我们需要從12個可用的时間槽中,為2個不同的新节目選定它们的表演位置. 這相当于從12個位置中選出2個進行排列. 方法數為
第二步:安排10個旧节目. 一旦新节目的位置被确定,就只剩下 個空位. 由于這10個旧节目的相對顺序是固定的,它们填充這10個空位的方式是唯一确定的. 方法數為1.
根据乘法原理,总的排法种數為 .
两种方法殊途同归,都得到了相同的结果. 故選C.
沿用上題背景,假设增加的2個“歌王對唱”节目是完全相同的(例如,都是同一首歌的两個不同时段重播),若仍要保持原来10個节目的相對顺序不變,则不同的排法种數為( ). \begin{multicols}{4}
[label=\Alph*.]
- 55
- 66
- 78
- 132
\end{multicols}
這個問題與原題的核心区别在于,新增的2個节目從“可区分”變為了“不可区分”. 這個變化直接影响了我们计數的方式.
法一:選位法 (组合思想)
总共有12個节目位置. 我们的任务是為2個相同的新节目選择位置.
由于新节目是相同的,我们選择 {第3位, 第8位} 和選择 {第8位, 第3位} 最终产生的节目單是完全一样的. 因此,這不再是一個排列問題,而是一個纯粹的组合問題.
我们需要從12個可用的位置中,選出2個位置来安放這两個相同的新节目. 方法數為
一旦新节目的位置被确定,剩下的10個位置将由10個旧节目按照它们固有的顺序唯一地填充. 根据乘法原理,总排法种數為 .
法二:倍缩策略的叠加應用
我们從12個节目全排列出發,总數為 .
首先,應用第一個约束:10個旧节目的相對顺序不變. 這意味着我们将总數除以 来消除這10個节目内部顺序的重複计數.
接着,應用第二個约束:2個新节目是完全相同的. 這意味着在上述结果中,我们仍然将這两個新节目视為可区分的,從而對它们自身的 种排列進行了重複计數. 因此, 我们必须再次應用倍缩策略, 除以 .
最终的排法种數為
這個结果正是组合數 的定義. 這深刻揭示了组合數 的一個本質:它是在 個對象的排列中, 同时對“選出的 個元素”和“未選的 個元素”施加定序(或视其為相同)约束的结果. 故選B.
沿用原題背景,即增加的2個“歌王對唱”节目是不同的. 若不僅要保持原来10個节目的相對顺序不變,还要求這两個新增的“歌王對唱”节目不能相邻,则不同的排法种數為( ). \begin{multicols}{4}
[label=\Alph*.]
- 110
- 120
- 121
- 132
\end{multicols}
這個問題在原題的基礎上,增加了一個“不相邻”的约束. 這种“定序”與“不相邻”的複合约束,是插空法與倍缩思想结合的經典场景.
法一:插空法
处理“不相邻”問題的最直接方法是插空法. 在這里,10個旧节目是“骨架”,2個新节目是等待插入的元素.
第一步:排列骨架. 我们要先安排10個旧节目. 由于它们的相對顺序是固定的,因此排列它们的方法只有一种.
第二步:创造空隙. 這10個排好的节目,形成了11個可供插入的空隙 (包括最前和最后).
第三步:插入元素. 我们需要将2個不同的新节目插入到這11個空隙中,每個空隙至多放一個节目,以保證它们不相邻. 這相当于從11個空隙中選出2個,并将2個不同的节目排列進去. 這是一個排列問題. 方法數為
根据乘法原理,总的排法种數為 .
法二:补集思想 (正难则反)
我们也可以從原問題的总數中,减去不满足“不相邻”约束的情况,即减去“2個新节目必须相邻”的情况.
原問題(只要求旧节目定序)的总排法數,我们已經计算過是 .
現在计算“旧节目定序”且“新节目相邻”的排法數. 我们可以使用捆绑法. 将2個不同的新节目捆绑成一個“大节目块”. 這個“大节目块”内部,2個新节目可以有 种排列方式.
現在的問題转化為:将這個“大节目块”和10個旧节目進行排列,同时保持10個旧节目的相對顺序不變. 這等价于将1個“大节目块”插入到10個旧节目形成的11個空隙(包括首尾)中. 選择插入位置的方法數有 种.
因此,“新节目相邻”的排法數為
最后,用总數减去相邻數:
两种方法再次得到了一致的结果. 故選A.
分组問題
在组合计數中,一類核心問題是将一個包含 個不同元素的集合,划分成若干個互不相交的子集(即“组”). 解决這類問題的關键,在于精确辨析一個核心要素:這些最终形成的“组”,本身是可区分的还是不可区分的?
我们通過一個场景来引入這两种模型的根本差异. 想象有6本完全不同的書,需要将它们分成三份,每份2本.
- 情景一: 将這些書分给甲、乙、丙三個人,每人2本.
- 情景二: 将這些書打包成三份,每份2本,堆在桌子上.
\begin{figure}[htbp]
\end{figure} 圖:有序分组:组是可区分的
\begin{figure}[htbp]
\end{figure} 圖:无序分组:组是不可区分的
有序分组
在情景一中,最终分到書的三個人“甲、乙、丙”是明确可区分的. 甲拿到 和乙拿到 是两种完全不同的分配结果. 因此,這些“组”因為其归属(甲、乙、丙)而被赋予了身份,是可区分的. 我们称之為有序分组或定序分组.
计算這類問題的過程是一個连續的组合决策:
- 首先,從6本書中為甲選出2本,方法數為 .
- 接着,從剩下的4本書中為乙選出2本,方法數為 .
- 最后,剩下的2本書自动归丙所有,方法數為 .
根据乘法原理,总的分配方法數為
我们将這個结果用階乘形式展開,可以观察到其本質:
這正是将6個不同元素分成大小為2, 2, 2的三個有序组的方法數,其形式與多項式係數完全一致.
将 個不同元素分成 個可区分的组(例如, 分配给 個不同的人, 或放入 個有標签的盒子), 各组的元素個數分别為 (其中 ),其总方法數為
我们通過一個構造性的論證来證明此公式的正确性.其核心思想是将“完成一次有序分组”這一任务,分解為一係列连續且独立的组合選择,然后應用乘法原理.
设原始集合為 , 包含 個不同的元素. 我们的目標是将其划分為 個有序的子集 , 使得對任意 , 子集 的大小為 .
我们可以按顺序為這 個可区分的组選择它们的成员:
首先,為第一個组 選择成员. 我们需要從 中的 個元素里, 不计顺序地選出 個. 根据组合數的定義,完成這一步的方法數為
在确定了 的成员后, 集合 中还剩下 個元素可供分配. 接下来, 我们為第二個组 選择成员. 我们需要從這 個剩余元素中, 選出 個. 方法數為
這個過程依次進行. 当我们為第 個组 選择成员时, 已有 個元素被分配. 因此, 我们需要從剩下的 個元素中, 選出 個.
直至最后一個组 , 此时剩下的元素數量為 . 我们需要從這 個元素中選出 個, 方法數為 .
由于整個分组任务必须完成所有這些步骤,根据乘法原理,总的方法數 是每一步方法數的乘積.
這便證明了公式的第一個等式.
為了推導其更為簡洁的階乘形式,我们将每一個组合數用其階乘定義展開.
我们观察到,前一項分母中的階乘項,恰好被后一項的分子所抵消. 這种级联式的约分会一直持續到最后.
最终,所有中間的階乘項都被消去,只剩下最初的分子 和每一項分母中代表各组大小的階乘 .
這與多項式係數的形式完全吻合.
某學校的志愿者社团共有9名成员,需要将他们分配到 A, B, C 三個不同的社区服务中心. A 中心需要2名成员,B 中心需要3名成员,C 中心需要4名成员. 問共有多少种不同的分配方案?
此問題要求将9名不同的成员分配到三個可区分的中心,且每個中心所需的人數已經确定. 這構成了一個有序分组問題. 我们可以将分配過程视為一個连續的决策步骤.
首先,為 A 中心從9名成员中選派2人. 這是一個组合問題,因為成员在此步骤中僅被選中,其顺序无關紧要. 方法數為
接着,需從余下的 名成员中,為 B 中心選派3人. 方法數為
最后,剩下的 名成员将全部被派往 C 中心,這是一种必然的结果. 方法數為
根据乘法原理,完成整個分配任务的总方案數是上述所有步骤方法數的乘積.
此结果亦可直接通過有序分组的通用公式得到. 将 個元素分成大小為 的可区分的三组,其方法數由多項式係數给出. (為何這個公式是适用的?)
两种计算路径的结果是一致的. 故共有1260种不同的分配方案.
将5名新入职的员工分配到三個不同的項目中,其中項目A需要1名员工,項目B需要2名员工,項目C需要2名员工. 問有多少种不同的分配方案?
此任务的核心是将5名可区分的员工,分配到三個可区分的項目(A, B, C)中. 這是一個有序分组問題,即使其中两個項目所需的人數相同(均為2人),項目本身(B與C)的差异性使得分组是有序的. (若項目B和C是无法区分的,结果会如何變化?)
我们可以采用连續组合選择的方式来解决. 首先,為項目A從5名员工中選定1人. 方法數為
接着,為項目B從剩下的4名员工中選定2人. 方法數為
最后,剩下的2名员工自动被分配到項目C. 方法數為
依据乘法原理,总的分配方案數為
作為對比,我们也可以直接應用有序分组的公式. 将 個元素分成大小為 的三组,其方法數為
两种路径再次導向了相同的结果. 故共有30种不同的分配方案.
在一副標准的52张扑克牌(所有牌均不相同)中,将所有牌平均發给东、南、西、北四位玩家,每位玩家获得13张牌. 問总共有多少种不同的發牌结果?
此問題要求将52张不同的牌,分配给四個可区分的玩家. 這是一個将 個不同元素分成四组, 每组大小均為 的有序分组問題.
我们可以模拟發牌的连續過程来構建解决方案. 首先,為“东”這位玩家從52张牌中發出13张. 方法數為
接着,為“南”這位玩家從剩下的 张牌中發出13张. 方法數為
然后,為“西”這位玩家從剩下的 张牌中發出13张. 方法數為
最后,剩下的13张牌全部發给“北”這位玩家. 方法數為
根据乘法原理,总的發牌结果數為
現在,我们利用有序分组的通用公式,從一個更宏观的视角来验證這個结果. 该問題是把 個元素分成大小分别為 的四個可区分的组. 其总方法數由以下公式直接给出:
我们有必要验證這两种表达方式的等价性,這有助于加深對公式本質的理解.
两种方法的结果完全吻合. 最终的结果是一個天文數字,通常无需计算其具體值,以階乘或组合數的形式表示即可.
无序分组
現在,我们转向情景二. 在這里,我们只是将書打包成三份,這些“份”或“堆”之間没有任何身份標签,它们是不可区分的. 例如,分组结果 與 是完全相同的一种分组,因為它们都只是把這六本書分成了同样的三堆.
直接计算无序分组是困难的,但我们可以借助有序分组的结果和倍缩策略. 我们不妨先假装這些组是有区别的,比如给它们贴上A, B, C的標签. 正如我们所计算的,這样做有90种方法.
現在我们来分析,這种“贴標签”的操作導致了多少倍的重複计數. 考虑一個具體的无序分组结果,例如 . 在我们的有序分组计數中,這個單一的结果被我们重複计算了多少次?它對應于将A, B, C三個標签分配给這三個小组的全部分配方式.
- (A: , B: , C: )
- (A: , C: , B: )
- ...
将A, B, C三個標签進行全排列,共有 种方式. 這意味着, 每一個我们真正想要的无序分组, 在有序分组的计算中都被重複计數了 次.
因此,根据倍缩策略,我们必须用有序分组的结果除以這個重複的倍數.
所以,将6本不同的書分成无法区分的三堆,每堆2本,只有15种方法.
這個思想可以推廣. 如果我们将 個元素分组, 其中有 個组的大小完全相同, 那么在计算有序分组后, 需要除以 来消除這些相同大小的组之間的顺序所带来的重複.
将 個不同元素分组.
- 各组大小均不相同: 若各组大小為 且彼此不等, 则无序分组與有序分组的结果相同, 為 . (因為组的大小本身就成為了它们的天然“標签”)
- 部分组大小相同: 若其中有 個组的大小為 , 個组的大小為 , ..., 则总方法數為
簡而言之,先按有序分组计算,然后對每一類“大小相同的组”,除以该類组數的階乘.
将6個颜色互不相同的球全部放入三個完全相同的盒子里,每個盒子里至少放一個球且數目不同,则不同的放球方法有( )种. \begin{multicols}{4}
[label=\Alph*.]
- 10
- 20
- 360
- 60
\end{multicols}
\begin{figure}[htbp]
\end{figure} 圖:分组過程圖解
此問題是将相异物體放入相同容器的无序分组問題,并附加了雙重约束. 問題的解决分為两個逻辑步骤:首先确定满足约束的“分组數量方案”,然后计算對應的“物品分配方案”.
第一步是确定分组的數量構成. 设三個盒子里的球數分别為 . 根据題意,這些數量必须满足以下条件:
-
(球的总數)
-
(每個盒子至少一個球)
-
互不相同 (數目不同)
我们实質上是在寻找将整數6分拆為3個不同的正整數之和的方法. 不妨设 . 若 , 则 . 满足 的唯一整數解是 . 這给出了分组方案 . 若 , 则 的最小可能值為 , 這大于6. 因此,唯一满足条件的分组數量方案是,将6個球分成數量為1, 2, 3的三组.
第二步是计算将6個不同的球按此方案分组的方法數. 我们需要将6個不同的球分成三组,各组大小分别為1, 2, 3. 首先,從6個球中選出1個作為一组,有 种方法. 然后,從剩下的5個球中選出2個作為一组,有 种方法. 最后,剩下的3個球自成一组,有 种方法.
根据乘法原理,形成這三组的方法數為
現在我们必须审视“三個完全相同的盒子”這一条件. 這意味着分组是无序的. 然而,在本題中,三组球的數量分别為1, 2, 3,彼此各不相同. 组的“大小”本身就成為了一個天然的、无法磨灭的標签,使得這三组是客观上可区分的. 因此,我们无需像处理等大分组那样再除以组數的階乘.
所以,不同的放球方法总數就是分组的方法數. 故選D.
将10名实習生分配到三個不同的部门 A, B, C 進行实習,其中A部门3人,B部门3人,C部门4人. 問有多少种分配方案?
這是一個典型的有序分组問題,因為部门 A, B, C 是明确可区分的.
我们可以分步進行選择: 首先為A部门從10人中選出3人,有 种方法. 然后為B部门從剩下的7人中選出3人,有 种方法. 最后剩下的4人全部到C部门,有 种方法.
根据乘法原理,总方案數為
所以,共有4200种不同的分配方案.
将10名实習生分成三组,两组3人,一组4人,再将這三组派往三個不同的城市進行社会调研. 問有多少种派遣方案?
這個問題是一個複合問題,包含“分组”和“分配”两個階段.
法一:分步处理 (先分组,后分配)
第一步:分组. 我们需要将10名实習生分成三组,其中两组3人,一组4人. 注意,此时這些“组”本身是没有身份的,我们只關心组内的成员構成. 這是一個无序分组問題. 两個3人组的大小相同,它们之間是不可区分的.
我们先按有序分组计算,假定两個3人组分别為 . 方法數為 . 但是,将 分给 和将 分给 , 與将 分给 和将 分给 最终形成的无序分组是同一种. 由于两個3人组是不可区分的,我们需要除以 来消除它们的顺序.
分组的方法數為
第二步:分配. 現在我们有了三组确定的人员(两個3人组,一個4人组). 我们需要将這三组分配到三個不同的城市. 這三组因為人數不同(3人 vs 4人)或人员構成不同而一定是可区分的. 将這三组分配给三個城市,是一個全排列問題. 分配的方法數為 .
根据乘法原理,总的派遣方案數為
法二:等价视角 (直接分配)
這個問題也可以等价地看作:将10名实習生直接分配到三個城市的岗位上,其中两個城市各需3人,一個城市需4人.
這需要我们對城市進行分類讨論,因為哪個城市得到4人是不同的情况.
情况一:城市1得到4人,城市2和城市3各得到3人. 方法數為 .
情况二:城市2得到4人,城市1和城市3各得到3人. 方法數同样為 .
情况三:城市3得到4人,城市1和城市2各得到3人. 方法數同样為 .
根据加法原理,总方案數為
两种方法的结果完全一致. 法一“先分后配”的思路在面對更複杂問題时通常更為清晰和係统. 它揭示了一個深刻的联係:
這展示了如何通過不同的计數路径验證结果的正确性.
還沒有留言。