0

70または80以上の文字列要素を持つarrayListからサブセットまたはパワーセットを作成し、それらのサブセット(またはパワーセット)をさらに処理するという問題を経験しています。たとえば、次のような要素として重複しない文字列を持ついくつかのarrayListsがあります(文字列には実際には複数の文字があります):

List<String> list = new ArrayList<>();
list.add("a");
list.add("c");
list.add("g");
list.add("n");
list.add("f");
and so on...

次に、最初の要素を含むサブセット(またはパワーセット)を取得する必要があります。例えば:{a,g}, {a,b}, {a,n,f}, {a,g,n,f}....

最初の要素を除くリスト要素のパワーセットを取得し、それらのサブセットを使用して最初の要素を追加することで、作業を完了しました。しかし、これは 7 や 8 のような少数の要素では機能しますが、リストが大きくなると機能しなくなります。この仕事で私が行っているように、powerSet アルゴリズムを実行する必要がありますか? そうでない場合、どうすれば期待される結果を得ることができますか。そして、メモリリークの問題があったと思います。これらの結果をさらに処理するために保存する必要があるためです。

次のリンクに関するいくつかの提案に従って、仕事をしました:

Java でセットのパワーセットを取得する
一連の数値のすべてのサブセットを計算する
arrayList オブジェクトからすべての可能なパワー セット (またはサブセット) を作成する方法は?

しかし、リストが大きいと何時間もかかり、netbeans IDE がハングアップするため、最終的に結果を得ることができませんでした!

このシナリオに関連する提案またはサンプル コードが必要です。

ありがとう!

4

1 に答える 1

3

パワーセットのカーディナリティは、最初のセットの要素数2^nnあるため、2^70 要素のセットを計算するつもりはないと思います。

私の提案は、パワーセットの要素をオンザフライで構築し、それらを処理しながら処理することです。これにより、それらすべてを保存する必要がなくなります。

于 2012-06-25T11:34:12.913 に答える