特定のセットのサブセットであるセットの有限コレクション内のセットを見つけるための最良のアルゴリズムは何ですか?
たとえば、
A = {1, 2}
B = {2, 3, 4}
C = {3, 5}
D = {6}
および X ={1, 2, 3, 5}
このとき、A と C は X の部分集合です。
線形時間の複雑さでこれを行うことができるアルゴリズムはありますか?
実装に関する注意:セットのメンバーは一般に非常に限られた範囲のものです。そのため、C++ ビットセットを使用してアルゴリズムを実装することをお勧めします。できませんでしたか?
編集:コレクション内のセットの数は、通常、X 内の要素の数 (例) よりも非常に大きくなります。Xの要素数に関してこれを線形にする方法はありますか? おそらくハッシュか何かを使用していますか?