ary配列のO(1)時間範囲クエリのビット複雑度


8

次の問題を検討してください。

してみましょうk一定です。我々は、与えられた進アレイのとのが。ましょ。A d 1 × × d k 0 1 N = k i = 1 d ikAd1××dk01N=i=1kdi

次のタイプのクエリ操作を実行するためにを前処理ことにより、データ構造を作成したいとします。A

  1. aryボックスの座標を考えると、ボックスにはがありますか? D 1kD1
  2. aryボックスの座標を指定して、ボックス内のの位置を返します(存在する場合)。D 1kD1

操作は一定時間で実行する必要がありますO(1)。時間の複雑さは、RAMマシンで測定されます。データ構造の前処理の時間とスペースは、私たちにとって重要ではありません。

問題は、上記の操作を可能にするデータ構造を格納するために必要なスペース(ビットの複雑さ)の量です。

これらのクエリに対して配列を再構築できるため、自明な下限はNビットです(したがって、データ構造には少なくとも同じ量の情報が含まれている必要があります)。

自明な上限は、すべてのクエリに対する回答を格納することです。これには、ビットが必要です。ただし、これははるかに効率的に実行できると思われます。i=1k(di2)=Θ(N2)

たとえば、である特殊なケースを考えます。この場合、最初の問題を解決するために簡潔なRMQデータ構造を使用できます。データ構造の格納にはビットかかります。k=12N+o(N)

このタスクの効率的なデータ構造は何ですか?
スペースの複雑さ(ビット数)は、これらの操作(または最初の操作のみ)をサポートするためにどれだけ低くできますか?

アップデート(1/15): 特殊なケースでは使用して、ビットは、実際によりよい(十分であるここで、数であるの)は、問題を先行問題に削減し、先行問題から完全に索引付け可能な辞書(FID)への削減を使用することによって。Grossi、Orlandi、Raman、およびRao(2009)による「より速く、より少ない無駄:完全に索引付け可能な辞書の冗長性を下げる」を参照してください。k=1N+o(N)log(Nt)+O(t)t1A

更新(6/27): 問題をRMQに減らします。YuanとAtallahによる次元のRMQ を使用して、が固定されている場合に必要なスペース量の上限を取得し。kO(nlogn)k


1
質問は明確ではありません:これはデータ構造の質問ですか?もしそうなら、このkD配列の他の操作は何ですか?他の操作がない場合、その上に1はありません。問題は、kD配列が与えられ、それにいくつかの前処理を行って、メモリをほとんど使用せずにこのチェック操作を最悪の場合に実行できるように格納することである場合、それを明確にします。また、下限が必要な場合の計算モデルについても説明します。O(1)
Kaveh


IIUC、紙は1Dの答えは本当にビットであり、アイデアはすべての小さなボックスと長さ2のパワーを持つすべてのボックスを格納することであり、他のボックスはlen pow-2ボックスから定数で取得できると述べています時間()であり、同じことがここで機能し、ビットで十分であるように思えます。O(nlgn)O(2k)O(nklgkn)
Kaveh

おかげで、私はいくつかの説明を追加しました。論文は、彼らの主な貢献が前処理とストレージの両方でビットを使用することだと言っていませんでしたか?2+o
Chao Xu

申し訳ありませんが、私が説明したのは前作のものです。ただし、それらの結果は概念的には類似しているようです。つまり、配列をブロックに分割し、それらに対する回答を事前計算し、それらの定数を使用して任意の回答を計算します。kDで、任意のブロックに対する答えを計算するために必要な基本ブロックの数が定数である場合、同様のアルゴリズムがここで機能し、おそらく(私は持っていません tこれが事実であることを確認してください)。O(nk)=O(N)
Kaveh

回答:


1

対数時間の複雑さを許可するだけで、メモリを大幅に節約できます。N * 2 ^ kビットのメモリを必要とするkDセグメントツリーを実装でき、両方のサブタスクで対数時間の複雑さで実行し、ツリーを構築するための線形時間の複雑さで実行します。

厳密にO(1)が必要な場合は、すべてを事前計算してください。


2
対数時間でツリーがどのように構築されるかを概説できますか?
ラファエル

申し訳ありませんが、その組み込みの線形時間
Bojan Serafimov 2013年

2
@BojanSerafimov答えを更新してください:)コメントが削除される可能性があります。
Juho

1
これを正解に編集した場合、これは良い答えになると思います。おそらく、これらの木がどのように見えるか、そしてどのようにしてそれらを構築するかについて、もう少し詳しく説明します。
ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.