収集のセットを含まないに設定しているサブセットの他のコレクションに

StackOverflow https://stackoverflow.com/questions/1737076

  •  20-09-2019
  •  | 
  •  

質問

もっと抽象データ構造を表す集合の設定このようなことがないようにセットのコレクションのサブセットも設定するものと期待される。

この挿入時には、以下の条件を満た

A.挿入を要素としては、既にサブセットのもうひとつの要素を返しのです。

B.挿入要素である上位集のその他の要素の結果コレクションの上位集を追加し、サブセットを除去します。

たことを想定して注文の要素を設定し、接頭辞木を表現できるのです。この許可状態を取り扱うすぐに(かなチェックの状態よりも短いと言えるでしょうを挿入するサブセットした会合状態Bに時間がかかります。

私の場合はデータ構造できるBにも迅速です。

役に立ちましたか?

解決

些細なアプローチは、セットのリストを保持し、(着信がサブセットである場合、テスト)すべての受信セットのそれを介して線形探索を実行することであろう。

これは明らかに、着信セットのサイズに対して線形探索およびおそらくO(M)サイズのためにO(n)の時間で実行されます。したがってO(N×m個)合計時間(各セットのサイズ対セットの数)。

最も明白な最適化は、当然のことながら、セットのサイズにインデックスにあります。次に、のみ等しいまたは大きいサイズであるものに対する各入力セットをテストします。 (セットは当たり前、どんな小さなセットのサブセットにすることはできません!)。

心に来る次の最適化は、要素のインデックスに作成することです。このように各着信セットのためにあなたは、各要素を含む各セットの共通部分を見つけるだろう。換言すれば、入ってくる集合{A、Bは、C}、我々はその要素を見つけるために、{A} A、B、及びDは、要素が{B} B、E、及びF、及び{C}に存在するセットに存在する場合A、Bに存在し、そしてZは...着信セットは、B({A、B、D}、{B、E、F}の交差点、及び{A、B、Z})のサブセットです。

ですから、O(M * log(n)の)私には複雑のように聞こえること。 (私たちは、それぞれの着信集合の各要素に対してハッシュされた検索を実行する必要があります)。挿入はまた、(要素のマップのそれぞれに新しいセットのIDを挿入する)と同じオーダーである必要があります。 (ビッグOの分析において2 * O(M ログ(N))もちろん、O(M のログ(N))まで低下させる)。

他のヒント

なアイデアの事業をO(K)ここでKはサイズの要素を追加していきます。

  • いセットをわずかでもできると思い
  • い地図のset_id->set_size
  • い地図のオブジェクト>set_id

両A、B O(K).

あなたのセットA、Bの個々のメンバーは、...明確な(かつ比較的)素数にマッピングされ、各セットと一緒に、あなたはP(A)、P(B)のように、すべてのメンバーの製品を保管している場合等次いでサブセットとスーパーセットは、p(X)はPの因子(Y)またはその逆であるか否かにより求めることができる。

あなたは、私が推測するいくつかの非常に大きな数字で終わる可能性があり、それは理論的に働きます。

[B CはD]場合 - > [2 3 5 7]、P(ABC)は30、P(ABD)= 42、P(BC)= 15、P =(ABCD)= 210

どのような役立たずのサイト!私は今、登録しているので、やがて昨日からのものにコメントすることができるかもしれません。それまでは、しかし...

@Stephen C:私は私の英語が十分であると信じているが、私はexplicatorを取得しているように見える。彼はしかし、ビットを逃した、と次のように彼のコメントを読んでくださいます:

<時間>
  

@Stephen C:の要因を見つけます   任意の数は、実際のNP完全が、ここでは関係ありません。ザ・   問題は、2の小さいかどうかであります   数字は正確に、より大きな、Aを分割します   簡単な剰余演算。例えば、   P(BC)= 15、P(ABCD)= 210の約数であります   セットABDているように、BCは(ABCDのサブセットであります   そしてABC)ます。

     

Nの既存のコレクションに新しい集合Sをセット追加が多数の比較分割はNに関わらずほぼ同じ時間がかかると仮定すると、O(N)である。

     

は、集合の集合内の既存の各エントリEについては、停止した場合、P(S)    P(E)およびP(E)は、正確に、P(S)を分割した場合にEを削除します。あなたがコレクションの末尾に取得する場合はSを追加します。配列   BigNumsの仕事でしょう。

<時間>

@JL:あなたは私のオンサイトストーカーになりたい場合は、1に努めてください)値2を追加)を正確

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top