非常に多数のの行を含み、各行に多数ののフィールドが含まれ、各フィールドに大きな固定ビット数が含まれるデータテーブルがある場合、「インデックス」構造を構築する方法はいくつかあります。次の操作は、テーブルとインデックスに対して時間で実行できます(および基準にして)。k O (k log N )N k
新しい要素をテーブルに挿入します。
テーブルから指定された要素を削除します。
フィールドの値のセットが与えられた場合、テーブルがフィールド1が最初、フィールド2が2のように辞書式順序にソートされたときに、指定されたフィールド値より大きいフィールド値を持つテーブル内の最初のレコードを取得します。
この構造を一般化して、操作3が完了すると、kフィールドの順序を指定して、テーブル内のレコードの順序を決定できます。
明らかに、これはk!インデックス、フィールドの順序ごとに1つ。次に、操作には時間がかかります。
演算が(比べて)はるかに速く、好ましくはO (k log k log N )時間であるアルゴリズムが必要です。
そのようなアルゴリズム/データ構造は存在しますか?もし存在していれば、誰かが今までにそれを公開して実装していたようですが、存在する兆候は見当たりません。逆に、おそらくそのようなアルゴリズムが存在しないことが証明できるでしょう。しかし、そのような証拠が存在するという兆候は見つかりませんでした。