- 深入淺出AI算法:基礎概覽
- 呂磊
- 636字
- 2021-08-13 20:18:18
2.2 排列組合
大部分讀者應該對排列組合比較熟悉,因為它在高中的數學課上出現過。與解析幾何相比,排列組合的公式簡單,并且理解起來比較容易、直觀。
排列組合包含兩個概念:排列和組合。舉個例子,假設某小組一共有5個人,有以下兩個問題。
① 從該小組中選出3個人站成一排,一共有多少種排法?
② 從該小組中選出3個人打掃衛生,一共有多少種選法?
對比問題①和問題②可以發現,問題①需要考慮順序,問題②不需要考慮順序。這便是排列與組合的區別。問題①要計算排列種類數,排列用字母P(Permutation)或A(Arrangement)表示;問題②要計算組合種類數,組合用字母C(Combination)表示。在計算時,組合種類可以看作排列種類的子集。
可以用形式化的語言描述排列問題,即n個人中計算m個人的排列。繼續思考前面的例子,如果要從5個人中選3個人站成一排,那么應該如何選擇并排列?首先,從5個人中選擇1個人站在位置1上,有5種選法;然后從剩下的4個人中選擇1個人站在位置2上,共有4種選法;最后從剩下的3個人中選出1個人站在位置3上,一共有3種選法;因此共有60(5×4×3)種排列方法。這種計算方法就是階乘。使用字母A表示排列,具體計算公式如下。

由于組合不用考慮選出來的人的排列順序,因此,只需用計算出來的排列方法總數除以選出人數的排列方法總數。所有排列方法叫作全排列,n個人的全排列總數等于n的階乘。對于前面的例子,組合方法總數就是10(60 / 3!)種。使用字母C表示組合,具體計算公式如下。

在AI算法中,排列組合主要用于計算特征組合(交叉)后的特征總數。