タグ付けされた質問 「space-complexity」

アルゴリズムの実行に必要なスペースの漸近分析。

1
ary配列のO(1)時間範囲クエリのビット複雑度
次の問題を検討してください。 してみましょうkkk一定です。我々は、与えられた進アレイのとのが。ましょ。A d 1 × … × d k 0 1 N = ∏ k i = 1 d ikkkAd1×…×dkAd1×…×dkA_{d_1\times\ldots\times d_k}000111N=∏ki=1diN=∏i=1kdiN = \prod_{i=1}^k d_i 次のタイプのクエリ操作を実行するためにを前処理ことにより、データ構造を作成したいとします。AAA aryボックスの座標を考えると、ボックスにはがありますか? D 1kkkDDD111 aryボックスの座標を指定して、ボックス内のの位置を返します(存在する場合)。D 1kkkDDD111 操作は一定時間で実行する必要がありますO(1)O(1)O(1)。時間の複雑さは、RAMマシンで測定されます。データ構造の前処理の時間とスペースは、私たちにとって重要ではありません。 問題は、上記の操作を可能にするデータ構造を格納するために必要なスペース(ビットの複雑さ)の量です。 これらのクエリに対して配列を再構築できるため、自明な下限はNNNビットです(したがって、データ構造には少なくとも同じ量の情報が含まれている必要があります)。 自明な上限は、すべてのクエリに対する回答を格納することです。これには、ビットが必要です。ただし、これははるかに効率的に実行できると思われます。∏ki=1(di2)=Θ(N2)∏i=1k(di2)=Θ(N2)\prod_{i=1}^k {d_i \choose 2} = \Theta(N^2) たとえば、である特殊なケースを考えます。この場合、最初の問題を解決するために簡潔なRMQデータ構造を使用できます。データ構造の格納にはビットかかります。k=1k=1k=12N+o(N)2N+o(N)2N+o(N) このタスクの効率的なデータ構造は何ですか? スペースの複雑さ(ビット数)は、これらの操作(または最初の操作のみ)をサポートするためにどれだけ低くできますか? アップデート(1/15): 特殊なケースでは使用して、ビットは、実際によりよい(十分であるここで、数であるの)は、問題を先行問題に削減し、先行問題から完全に索引付け可能な辞書(FID)への削減を使用することによって。Grossi、Orlandi、Raman、およびRao(2009)による「より速く、より少ない無駄:完全に索引付け可能な辞書の冗長性を下げる」を参照してください。k=1k=1k=1N+o(N)N+o(N)N +o(N)log(Nt)+O(t)log⁡(Nt)+O(t)\log {N\choose t}+O(t)ttt111AAA 更新(6/27): 問題をRMQに減らします。YuanとAtallahによる次元のRMQ を使用して、が固定されている場合に必要なスペース量の上限を取得し。kkkO(nlogn)O(nlog⁡n)O(n\log …

1
入力の長さの対数よりも少ないスペースを使用するチューリングマシンを拒否するのはなぜですか?
では、計算の複雑さ:アローラとバラクによって現代的なアプローチ、それがいることを言及しています ただし、 S(n)>lognS(n)>log⁡nS(n)> \log n ワークテープは長さがあるので nnn、そして少なくとも現在読み取っている入力テープのセルのインデックスを記憶できるようにしたいとします。 それはどういう意味ですか?ポイントがわかりません。「入力テープの先頭で現在読み取られているセルのインデックスを記憶する」とはどういう意味ですか?説明はありますか? 入力テープの動きをスペースの考慮事項にカウントしないので、ワークテープのみをカウントすることに注意してください。

2
の完全な問題
私たちは知っています P O LのYLpolyLpolyL-hierarchyは、スペース階層定理と競合するため、完全な問題はありません。しかし、この階層の各レベルに完全な問題がありますか? 正確には:クラスは D SPA CE(ログ(n)k)DSPあCE(ログ⁡(ん)k)DSPACE(\log(n)^k) 下に完全な問題があります LLL-それぞれの削減 k > 0k>0k > 0?

1
FPSPACEは指数関数的に長い出力を提供できますか?
この質問にはコメントできないので、ここで新しい質問として質問します。 リッキー・デマーは最初の答えへのコメントでそこに述べています "[...] FPSPACEは指数関数的に長い出力を提供できるため[...]" どうすればいいの?FSPACEのアルゴリズムはどのようにして指数関数的に長い出力を提供できますか?これは、FSPACEの定義に出力スペースを含めないことを意味しますか(これまで信じてきたこととは異なります)。

2
P対NPと比較して、P対PSPACEでこれ以上の進展はありましたか?
これは少し曖昧な質問であることを理解していますが、オラクルを使用して質問を簡単に解決できないなど、P対NPの結果があります。P対NPについては示されているが、P対PSPACEについては示されていない、このような結果はありますか?したがって、特定の証明手法がP対NPを解決できない場合でも、P対PSPACEを解決できる可能性があります。また、P = PSPACEの場合、P = NPで必ずしも成立しない含意があると言う重要な結果はありますか?または、P!= NPを証明するよりもP!= PSPACEを証明する方が簡単であることを示唆する、文学の中で重要なものは何ですか?

1
する
それはのために知られています f(n)≥lognf(n)≥log⁡nf(n) \geq \log n、 NSPACE(f(n))=coNSPACE(f(n))NSPACE(f(n))=coNSPACE(f(n))\mathsf{NSPACE}(f(n)) = \mathsf{coNSPACE}(f(n))。 仮に f(n)&lt;lognf(n)&lt;log⁡nf(n)<\log n?それらも等しいですか?

1
ログスペースで2つのログスペースプログラムの連結をシミュレートする
私は2つの対数空間プログラムとを持っています。FFFGGG プログラムは配列入力を取得し、出力配列を作成します。FFFA[1..n]A[1..n]A[1..n]B[1..n]B[1..n]B[1..n] プログラムは、によって作成された入力として取得し、そこから出力配列を作成します。GGGBBBFFFC[1..n]C[1..n]C[1..n] 入力配列を取得し、それに対応する配列を作成するログスペースプログラムが存在することの証明を作成する必要があります。しかし、私はそれを書く正しい方法を見つけることができません。これはどのように行われますか?HHHAAACCC ログスペースプログラムは、ビットのメモリを使用するプログラムです。守らなければならないいくつかの条件を次に示します。O(logn)O(log⁡n)O(\log n) 単純な整数型の変数のみを使用する必要があります(intC ++、longintPascalなど)。 整数の許容範囲が定義されていますが入力のサイズである場合、変数に保存できるのは、基づいてポリモニアルサイズの値のみです。nnnnnn 例えば:私たちは、缶がで値を取る変数持つことができます、またはも値「、しかし、我々はできます値を取る変数があります。他のタイプの変数、および配列と反復子は許可されていません。[−n...n][−n...n][-n...n][−3n5...3n5][−3n5...3n5][-3n^5...3n^5][−4...7][−4...7][-4...7][0...2n][0...2n][ 0...2^n] ルールに関する例外は入力と出力です。入力は、プログラムが読み取ることができる特殊変数(主に配列)で使用でき、出力は他の特殊変数にのみ書き込むことができます。したがって、出力から読み取ったり、入力変数の値を増やしたりすることはできません。 プログラムは再帰を使用できません。 Pascalで書かれた対数空間プログラムの例(誰もが理解できるようにするため)で、整数の配列で最大の数を見つける var n: integer; //input variable the number of elements in A A: array [1..n] of integer; //input variable - the array of integers m: integer; // output variable, the position of maximum i, j: integer; //working …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.