多重集的排列
MISSISSIPPI 這個字的字母有幾種不同的排法?如果 11 個字母全都不同,你會說 11!。但它們並不全異:有 4 個 I、4 個 S、2 個 P、1 個 M。把兩個相同的 I 對調並不會產生新的可見字串,所以 11! 嚴重地多算了。當某些東西重複時計算排法,正是多重集排列公式的工作。
解法用文字說:先當作全部相異算出 n!,再把重複「除掉」。對每一組大小為 k 的相同東西,你其實偷偷乘進了該組 k! 種可互換的排序,所以要除以 k!。設各種相異元素的個數為 n1, n2, ..., nr(總和為 n),則相異排法數為 n! / (n1! 乘 n2! 乘……乘 nr!)。對 MISSISSIPPI 就是 11! / (4! 4! 2! 1!) = 34650。快速檢驗:若沒有重複,每個 ni! 都是 1,公式就退回單純的 n!。
這個數恰好就是多項式係數——同一個物件也用來計算把 n 個東西分成大小 n1, ..., nr 的「有標籤」群組的方法數,也是多項式定理裡的係數。它的日常名稱是「重排字母數」。要小心常見的失誤:要除以重複次數的「階乘」,不是除以次數本身(MISSISSIPPI 用 4! 而非 4),而且只對真正無法區分的東西才除。
BANANA 的字母有幾種排法?個數:3 個 A、2 個 N、1 個 B,共 6 個字母。答案:6! / (3! 2! 1!) = 720 / (6 乘 2) = 60。對照之下,把 NUMBER 六個相異字母排列得到 6! = 720,因為沒有任何重複。
把 n! 除以各重複次數的階乘:n!/(n1! n2! ... nr!)。
要除以重複次數的階乘,絕不是除以次數本身。而且這只適用於真正相同的東西——如果兩個 A 顏色不同就可以區分,那就回到 n!。