1

そのため、セットのパワーセットをその要素ごとに一意の番号 (インデックス) にマップし、この番号をマップまたはリスト内の一意でない値に関連付けたいという状況があります。すべてのサブセットを明示的に保存する必要はなく、それらに関連付けられた一意の番号のみを保存するために、これが必要です。サブセットの要素から数値を一意に生成する線形時間 (できれば、必要に応じてより高い次数の多項式を使用できると思います) アルゴリズムが存在する場合、それは素晴らしいことです。直感的には、サブセットの要素に対していくつかの加算関数または畳み込み関数を使用して、そのようなアルゴリズムが存在する可能性があると思います。

U = {1,2,3,...,n}形式的に言えば、すべてのサブセットが必要なユニバースがあります。2^nそのようなサブセットがあります。fサブセットXから数値へyの関数マッピングがありますf(X)=yy一意でない番号です。

Xここで、プログラムで、あるサブセット値から別のサブセットY値に移動できるようにする必要がありY = X - {k}ますk ϵ XYしたがって、その要素からの一意の識別子を計算できるアルゴリズムがあれば、検索が必要な格納されたサブセットのリストを検索する代わりに、kの (残りの) 要素を削除して使用するだけで済みます。 XAND を各サブセットを格納するためのメモリ コストと比較します。

では、そのようなアルゴリズムが存在するかどうかを知っている人はいますか?

4

2 に答える 2

3

定義上、一意の識別子には、セット内の要素と同じ数のビットが必要Uです。したがって、要素Uが固定され、順序付けられている場合、任意のサブセットの要素からビット ベクトルを簡単に計算しY(セット内の要素に対応するビットのみYが設定されます)、それを数値に変換できます。もちろん、 の最大サイズによっては、U無限精度のデータ型が必要になる場合があります。

于 2013-07-04T13:13:10.143 に答える