リストから同じサイズまたはリストより小さいすべての順列を見つけようとしています。
例えば:
>>>allPermutations([a,b])
[[a,b], [b,a], [a], [b]]
これは、現在 Python で使用している反復コードです。現時点でどれだけ効率的かはわかりません。
import itertools
def getAllPossibleSubSchedules( seq ):
fullSet = set()
curSet = set()
curSet.add(tuple(seq))
for i in reversed(range(1, len(seq) + 1)):
permutations = set()
for curTuple in curSet:
permutationsList = list(itertools.permutations(curTuple, i))
for permutation in permutationsList:
permutations.add(permutation)
curSet = set()
for permutation in permutations:
curSet.add(permutation)
fullSet.add(permutation)
return fullSet
アルゴリズムがnの合計を生成すると確信しています! 1 -> n 個の順列から、かなり急速に成長します。これまでのところ、多くの繰り返し操作を行うため、信じられないほど遅い再帰的な方法を作成しました。私は繰り返してそれをやろうとしていますが、繰り返し操作を制限する方法がわかりません。私はpythonを使用していますが、疑似コードも大いに役立ちます。どんな助けでも大歓迎です。前もって感謝します!