多重集排列
前面的排列都假设 个元素互不相同。如果源本身是一个多重集(multiset),里面有相同的元素,例如 ,那么两个 互换后看起来完全一样,朴素的 会把这些等价排法重复计数。修正办法是除掉每组相同元素内部互换的次数。
1 · 除掉同组内部的互换
设源里有 种不同的值,第 种出现 次,且 。先当它们全不同,有 种;但第 种的 个相同元素之间有 种互换、结果都一样。按乘法原理这些互换相乘,故可区分的排列数是
这个量称为多项式系数(multinomial coefficient)。
组合数是它的一个特例。「从 个里选 个」可以看成排列一个两类多重集: 个「选中」标记加 个「没选」标记,排成一列的不同方式对应哪些位置被选中。于是排法数 正是组合数。组合页里「除以 」那一步,在本页是「除以 」的两组版本。
2 · 参考文献
- Permutations of multisets. Wikipedia. 多重集排列 的推导。https://en.wikipedia.org/wiki/Permutation#Permutations_of_multisets
- Multinomial coefficient. Wikipedia. 多项式系数,以及它与二项式系数的关系。https://en.wikipedia.org/wiki/Multinomial_theorem#Multinomial_coefficients