私はちょうど別のアルゴリズムを試しています。私はこの問題を遭遇しました。そのために、与えられたセットのすべてのサブセットを生成する必要があります。私はビットマスキングを使用してこれを行う方法を知っています。しかし、セットが非常に大きい、すなわちO(2^n)のときには時間がかかりすぎる。私はO(n^2)でこれを解決できる他の時間効率的なアルゴリズムがあるかどうか疑問に思っていましたか?これで私を助けてください。O(n^2)時間に与えられた集合のすべての部分集合を生成するアルゴリズムはありますか?
答えて
たとえば、すべての部分集合を印刷したり、どこに明示的に格納したりする場合は、そのようなアルゴリズムはありません。 n
要素のセットの2^n
サブセットがあり、単純に列挙するにはexponential time
が必要です。
ありがとうございます。それは私の疑いを明らかにした。 – ashwani
n
要素集合のすべての部分集合を生成するための多項式時間の方法は明らかにありませんが、いくつかの方法が他の方法より効率的です。特に、Gray codeを使用する場合は、連続するサブセットから1つの要素を追加または削除することで、1つのサブセットから別のサブセットに移動できます。これは例えばブルートフォースナップザックソリューションは、(例えば、約30またはそれ以下のnに対して)はるかに効率的である。
グレイコードの方法を教えてください。 – ashwani
@userこれは多少関わっていますが、私がリンクしているWikipediaの記事では、それらを生成するアルゴリズムについて説明しています。多くの目的で、グレイコードはベース2の方法で0から2^n-1までの純粋な数よりも優れていますが、フリーランチはなく、1つのサブセットから次のサブセットに行くのは簡単なアルゴリズムではありません。グレイコードを使用すると、余分なプログラミング作業をする価値がある場合、サブセットを使って何をしたいかによって、実際には異なります。 –
- 1. 部分集合生成の複雑さ
- 2. 与えられた値より小さい最大部分集合sum
- 3. 与えられた集合から与えられた数(繰り返しが許される)を合計するすべての方法を見つける
- 4. 与えられた数字の集合に数字を分割する
- 5. 部分集合全体の集合R
- 6. データフレームを部分集合化する代わりにプログラマチックに並べ替え
- 7. データの部分集合を与えられた値のパーセンタイルを得る方法。 Rを使用する
- 8. 与えられた線分の集合の間の交差点の数を数える効率的な方法はありますか?
- 9. マークダウンの部分集合をエスケープする
- 10. 与えられたアルゴリズムからBig-Oを計算する
- 11. 与えられた範囲内の配列の部分集合を計算する?
- 12. アルゴリズム - 合計が指定された範囲にある部分集合の数を求める
- 13. 部分集合と全体集合の場合のケース
- 14. 与えられた区切り文字の集合を使って文字列を分割する
- 15. はここで最小の部分集合の集合
- 16. 与えられた開始時間と終了時間の合計アイドル時間を求めるアルゴリズム
- 17. 与えられた数の集合を動的にグループ化する
- 18. アルゴリズム点の集合
- 19. 集合内の基数Cのすべての可能な部分集合を見つける0-N
- 20. ソートされた実数の有限集合が与えられると、総和<= kの可能なすべての部分集合が生成されます。
- 21. コストが最も低い部分集合を求めるアルゴリズム
- 22. numpyで複数の集合から複数の部分集合を選んで割り当てよう
- 23. リンクデータまたは内部結合タイプの代わりにルックアップからすべてのデータを返すマングース集約
- 24. 照会されたエンティティの集合からフォームを生成
- 25. 空集合の集合と別集合の集合が、なぜPythonで空集合になるのですか?
- 26. 2列にするために4列の部分集合dplyr
- 27. は、その和がゼロに等しい集合から部分集合を見つけるか?
- 28. 最大独立独立集合アルゴリズムの時間複雑度
- 29. 関数のパラメータとして与えられた配列の和集合を作成する
- 30. 最後の一定時間内の合計イベントを収集するアルゴリズム
あなたはn^2ステップで2^nものを生成する方法はありますか?多分魔法で。 –
本当の質問は、あなたが2^nセットでしたいことです。実際に出力する必要がある場合は、明らかに2^n時間未満を費やすことはできません。しかし、それらのいくつかの集約を計算したい場合、つまり特定のプロパティを最大化/最小化するサブセットを見つける場合は、 –
@ NiklasBが可能です。さて、ライブコンテストからの私は、不正行為をしたくないので、私は全体の問題を伝えることはできません。 Btw、あなたの説明に感謝します。 – ashwani