Iは、次のリストを持っているを見つける:リスト内の要素の2^nは-2組み合わせ
list1 = ['g1','g2','g3','g4']
私はn
、リスト内の項目の総数である2^n-2
組み合わせを検索します。 n = 4
の場合、結果は2^4 -2 = 14
、つまり14の組み合わせになります。
の組み合わせは以下のとおりです。
[[['g1'],['g2','g3','g4']],[['g2'],['g1','g3','g4']], [['g3'],['g1','g2','g4']],['g4'],['g1','g2','g3']],[['g1','g2'],['g3','g4']],[['g1','g3'],['g2','g4']],[['g1','g4'],['g3','g4']],[['g2','g3'],['g1','g4']],
[['g2','g4'],['g1','g3']],[['g3','g4'],['g1','g2']],[['g1','g2','g3'],['g4']],[['g2','g3','g4'],['g1']],[['g3','g4','g1'],['g2']],[['g4','g1','g2'],['g3']]]
は、私は1つのアプローチを知っている:最初の繰り返しで は、単一の要素を取り、リストと第二のリスト内の他の要素にそれを置く:2回目の反復で['g1'],['g2','g3','g4']
は中2つの要素を取りますリストと他の要素を2番目のリストに追加します。 ['g1','g2'],['g1','g4']
他のアプローチはありますか? 私はこのプログラムをPythonで書いています。 私のアプローチはコストがかかります。これをすばやく行うライブラリメソッドはありますか?
高価ではどういう意味ですか?組み合わせを生成するアルゴリズムの複雑さは、実装に関係なく指数関数になります。 – hyades
要件をよりよく反映するように自分の答えを更新しました。 –