如何获得给定排列的不相交循环列表?(python)

时间:2014-06-03 10:03:22

标签: python

我有一本字典,例如:{1:3, 2:2, 3:,1}。我需要得到这个排列的不相交周期列表:[[1,3], [2]]

我知道如何获得所有排列,但我不知道如何删除已有的排列。 我的例子是[[1,3], [2], [3,1]]

1 个答案:

答案 0 :(得分:0)

显而易见的解决方案是从循环的最小元素开始规范化循环表示:

min_index = cycle.index(min(cycle))
canonical = cycle[min_index:] + cycle[:min_index]

根据您检索周期的方式,仅生成规范表示可能更有效。