整数セットのリストが2つあるとします。それらをAとBと呼んでください。Aのすべての集合はBの集合の1つに含まれることができます.Aのすべての要素を見つけるアルゴリズムはどれもありません。サブセットであるセットを削除する
5
A
答えて
1
検索スペースを調整したり削除したりするには、検索の一部としていくつかのチェックとフィルタを試すことができます。
1: A: {0,1}, B: {1,2}
2: A: {0} , B: {0,1,2}
3: A: {2} , B: {0}
4: A: {1,2}, B: {0,1}
5: A: {} , B: {2}
6: A: {} , B: {2}
7: A: {2} , B: {}
:セットの相互相関インデックスを指すキーとしてセットでユニークな要素のO(n)を列挙して、コメントで
A = [{1,2},{1,4},{3,4,7}]
B = [{2,3,4},{1,2,4},{1,2,5,6}]
スタートをあなたの例を取るために、彼らはに属しています
Aの3番目のセットなど、Bにはない要素を含むAのセットをすぐに取り除くことができます。
ここで、除外されていないA内の各セットを走査し、Bに少なくとも1セットの対応する完全な交差があるかどうかを調べます。ケース内のセットインデックスの数は、最初にBを全体的に走査するのではなく、Bの検査をセクションのそれぞれに分割して、それぞれk
のセット、例えば1024を設定します。さらに、1024個のセットインデックスを表すために、それぞれ64ビットの16ビットセットに分割しますビット単位でANDしてもよい(&)。
set A[0] => elements 1,2 => set-index-intersection in B: b110 & b111 => match
set A[1] => elements 1,4 => set-index-intersection in B: b110 & b11 => match
全体的に、セクションごとに作業、我々は約10 * 16の操作を見ている:ゼロのAND演算結果があれば、この横断中の任意の時点で
、我々は早期終了の恩恵を受けるAのセットがk
Bセットの現在のセクションのセットの1つに含まれているかどうかを確認してください。言い換えれば、Aの1セット(Bの100万セットあたり)の完全なチェックのために、操作の数を10,000,000から160,000に減らしました。それは62の要素です。
関連する問題
- 1. セットからサブセットを削除する
- 2. セットが別のセットのサブセットであるかどうかをチェックする方法
- 3. リスト内のサブセットを削除
- 4. バッチ内の値セットを削除する
- 5. セットからファイルを削除する
- 6. データファイルの列の各セットの最初のサブセットを削除するにはどうすればよいですか?
- 7. Rのサブセットを逆セットするR
- 8. セットのサブセットを生成する。怠惰?
- 9. Pythonでデータフレームのサブセットを削除するには?
- 10. Pythonで反復処理中にセットからセットを削除する
- 11. セットが別のセットのサブセットであるかどうかを判断する関数
- 12. セットAがセットBのサブセットであるかどうかをチェックするためのアルゴリズム
- 13. setDを使用して値を削除するRのサブセット
- 14. 削除クエリ結果セット
- 15. 距離内にあるセットから位置を削除するアルゴリズム
- 16. Rのサブセットから異常値を削除するには?
- 17. spark RDDのサブセットを効率的に削除する方法
- 18. 類似の名前の変数のサブセットを削除する
- 19. C#List <object> .RemoveAll() - リストのサブセットを削除するには?
- 20. Entity Frameworkコレクションからアイテムのサブセットを削除する方法
- 21. Magento:属性セットから属性をプログラムで削除する
- 22. IDリストでエンティティのセットを削除するには?
- 23. 結果の最後のセットでdivを削除する
- 24. ある配列内の点のセットを別の配列内の別の点のセットから削除する。 Perl
- 25. Django many2manyは別のセットのサブセットです
- 26. 除外された別個の値をサブセット化して削除する
- 27. aerospike:セット内のすべてのレコードを削除する
- 28. 関数デコレータを持つセットから値を削除する
- 29. 列のサブセット(パンダ)のいずれかでヌル値の行を削除する
- 30. セットからノードを削除する方法は?
sのすべての要素がtにあるかどうかを調べるs.issubset(t)を使用します。 – Aristide
確かに、それは| A | * | B |テスト。私は賢明な選別で、より良い達成が可能だと思います。 – Student
リストの相対的なサイズや整数の範囲について知っていますか? – nibot