绕过序列的一半排列的最快方法是什么?

时间:2014-04-29 20:59:50

标签: python

例如:在计算旅行商问题的蛮力解决方案时,您不需要所有排列,只需要排列集的前半部分。 (下半场都是上半场的逆转)。

基本上,我试图设置这个:

iter_a = itertools.permutations([3, 4, 5, 2, 1, 6])
list_a = list(iter_a)
desired_set = list_a[:len(list_a)//2]

以最可能的方式。

1 个答案:

答案 0 :(得分:0)

由于排列的后半部分是反转,因此您只能将第一个成员中具有最低成员的那些添加到您的集合中:

from itertools import permutations

iter_a = permutations([3, 4, 5, 2, 1, 6])

desired_set = set()

for it in iter_a:
if it[0] < it[-1]:
    desired_set.add (it)