集合S = {s i : {z j : z ∈ N } } が与えられた場合、 Sの部分集合の共通部分の一意の集合を計算するための時間効率の良いアルゴリズムは何ですか?
背景として、私はこの問題のいくつかのバージョンを扱っていますが、いくつかは他よりも大きくなっています。最小のもので | さ| ≈ 1,000、|s i | ≈ 10,000 で、値は郵便番号です。
わかりやすくするための小さな例:
入力: S = {{},{1},{2,3},{3,4,5,6,7,8,9,10}} 出力: {{},{1},{2,3},{3,4,5,6,7,8,9,10},{3}}
| | さ| = 4 であり、 Sのサブセットは 2 4 = 16 あります。ただし、サブセット交差の一意のセットは 5 つしかありません。最初の 4 つはS自身のメンバーです。5 番目は {3} です。空集合は既にSのメンバーです。他の 10 個の部分集合の交差もすべて空集合を生成します。