ユニバースサブセットのセットファミリーが与えられます。ましょうし、答えがあると私たちが望む。
私はこれに素早く答えることができるデータ構造を探しています。私のアプリケーションはグラフ理論からのもので、頂点とその近傍を削除すると孤立した頂点が残るかどうかを確認し、各頂点についてはそれが残すすべての孤立した頂点をリストします。
完全なポセットを作成するか、最終的にテーブルを作成して、どのセットが互いのサブセットであるかを正確に伝えます。
ましょ、および、と仮定する
我々が生成することができるに封じ込めマトリックス(二部グラフ)時間、次いで、全てのテーブルを作成することができにおける比較各セットのために、時間をすべての他のセットのすべての要素を介して、ループのないサブセットとしてセットをマークそれらは要素がでない場合。合計時間。
何かもっと速くできますか?特に、時間は可能ですか?
関連記事をいくつか見つけました。
アルゴリズム を与えるサブセット部分順序(1995)を計算するための単純なサブ2次アルゴリズム。
サブセット半順序:コンピューティングと組み合わせ論はやや上記だけでなく、上記の紙がで問題を解決することを主張向上時間、共通の要素を共有するセットの最大数であるが、私はこの結果を理解することができませんでしたが。
Betweenとの記事で、著者は、行列乗算を使用して頂点の閉じた近傍を削除した後、接続されたコンポーネントをグラフで見つける方法を示しています。これを使用して、ランタイムがであるシングルトンであるすべてのコンポーネントを見つけることで、セットの包含ポーズを計算できます。
また、このフォーラムのディスカッションは関連しています: セットの包含をチェックする最も速い方法は何ですか? これは下限を意味します。