2017-05-27 18 views
-1

これは、アルゴリズム/データ構造に関する一般的な質問です。 特定のプログラミング言語はありません。コレクションのサブセットを反復処理するためのデータ構造

私はブール値の配列を扱っています。 配列のサイズは常に50です。

これらの配列のコレクションが必要です。

私は自分のコレクションを何度も繰り返し処理する必要があります。

パフォーマンスを向上させるために、各繰り返しをコレクションのサブセットに制限したいと思います。コレクション全体ではなく例えば

:私だけがTRUE値を検索する必要はありません4位と13位でFALSE

を持つ配列を反復します。配列の特定の位置にあるFALSE値のみ。

可能なサブセットは、他の要素に含まれていない要素を共有できることに注意してください。

私に役立つデータ構造はありますか?

+0

"第4位と第13位で偽" - 確認が必要な可能性のある位置の固定セットがありますか、ランタイム中に一致する配列を得るために本質的に任意の位置を入力できる必要がありますか?それは問題を大きく変えるでしょう。 – Dukeling

答えて

0

Knuth Volume IIIの「ソートと検索」のセクション6.5には短い説明があります。幾分限られた有効性を持ってそこにいくつかの単純なスキームがあり、多次元空間を探索するというこの難しい問題に魔法の答えがないことを私に示唆している。

50ビットを5つの10ビットチャンクに分割し、それぞれが10ビットチャンクの1つの値をリストにマッピングする5つのハッシュテーブルを作成することです指定された位置にその値を持つすべてのレコードの特定のビット位置の値が指定されている場合は、10ビットのチャンクのうち最もよく知られているビットが含まれているものを選択し、これを使用して、そのチャンクのテーブルの1024リストのうち、1を知っているかそのチャンク内のビット位置のうちの1つ、2つ、または3つを含む。

関連する問題