只遍历序列一半排列的最快方法

  • 本文关键字:方法 排列 一半 遍历 python
  • 更新时间 :
  • 英文 :


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

基本上,我试图得到这套:

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

以最理智的方式。

因为后半部分的排列是反转的,所以只能将第一个成员最低的成员添加到集合中:

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)

相关内容

最新更新