
生成所有可能的排列,然后丢弃重复的排列,效率极低。存在各种算法以按字典顺序或其他类型的顺序直接生成多集的排列。Takaoka的算法是一个很好的例子,但也许Aaron
Williams的算法更好
http://webhome.csc.uvic.ca/~haron/CoolMulti.pdf
此外,它已在R包“ multicool”中实现。
顺便说一句,如果您只想要不同排列的总数,答案就是多项式系数:例如,如果您有n_a个元素“ a”,n_b个元素“ b”,n_c个元素“
c”,那么不同的排列是(n_a + n_b + n_c)!/(n_a!n_b!n_c!)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)