Python中对称约束下的大型数组的有效排列

时间:2018-04-03 05:33:11

标签: python performance combinatorics

我有一个数组[1, 1, 2, 3, 3, 3, 0, 0, 0, 0, 0]。我想在对称/重复的考虑下生成所有排列(例如,对于一个较小的示例:[1, 1]只有一个排列,而不是两个用于交换1的排列。)使用itertools枚举所有排列(请参阅代码以下)效率不高,特别是因为我想要更大的套装。

from itertools import permutations

p = permutations([1, 1, 2, 3, 3, 3, 0, 0, 0, 0, 0])
j = 0
for i in list(p):
    print(i)
    j += 1
# reduce all permutations e.g. with set().

是否有一种优雅的方式来枚举所有组合?如何以有效的方式实现它(可能最大的情况是数组中有大约100个元素)?谢谢你的帮助。

0 个答案:

没有答案