選択アルゴリズムのスペースに制限はありますか?


11

整数の配列で番目に大きい要素を見つけるためのよく知られた最悪の場合の選択アルゴリズムがあります。それは中央値中央値アプローチを使用して十分なピボットを見つけ、入力配列を所定の位置に分割し、再帰的に番目に大きい要素の検索を続けます。O(n) kk

入力配列に触れることが許可されなかった場合、時間で番目に大きい要素を見つけるためにどのくらい余分なスペースが必要になりますか?余分なスペースで番目に大きい要素を見つけても、実行時の維持できますか?たとえば、最大または最小の要素を見つけるには、時間とスペースが必要です。 kO(n)kO(1)O(n)O(n)O(1)

直感的に、空間よりも優れているとは思えませんが、その証拠はありますか?O(n)

誰かが参照を指すか、番目の要素が時間でスペースを見つける必要がある理由を議論することができますか?n/2O(n)O(n)


2
私は専門家ではありませんが、おそらくこれらの論文は役に立ちます。選択の比較ベースの時空間の下限時空間のトレードオフ、およびプログラムのモデルにおける一次問題
Vor

回答:


13

入力を変更せずに時間と追加メモリセルを使用して選択できる場合は、未解決の問題です(ここを参照)。しかし、これにかなり近づくことができます。O 1 O(n)O(1)

MunroとRamanは、時間で実行される選択アルゴリズムを提案し、追加ストレージ(セル)のみを使用しました。このアルゴリズムでは、入力は変更されません。小さな選択でき。O 1 / ε ε > 0O(n1+ε)O(1/ε)ε>0

基本的に、マンロとラマンのアルゴリズムは、古典的なアルゴリズムとして機能します。これは、ランクが既知の2つの要素である右の境界(filterと呼ばれます)を維持します。要求された要素は、2つのフィルターの間に含まれます(ランク順)。適切なピボット要素を選択することにより、フィルターとに対してすべての数値をチェックできます。これにより、フィルターを更新し、チェックする要素の数を減らすことができます(ランクごと)。リクエスト要素が見つかるまで繰り返します。p pO(n)pp

従来のアルゴリズムと異なるのは、の選択です。LETアルゴリズムその解く選択すること。アルゴリズム は、配列を同じサイズのブロックに分割し、ランクがフィルターの間にある多くの要素があるブロックを特定します(鳩の巣の原理による存在)。次に、アルゴリズム使用して、このブロックをスキャンし、適切なピボット要素を探します。再帰アンカーは簡単なアルゴリズムです。上記のように、適切なブロックサイズ(および計算)により、実行時間とスペースの要件が得られます。A k ε = 1 / k A k A k 1 A 1 pA(k)ε=1/kA(k)A(k1)A(1)

ところで、お探しのアルゴリズムは最近、定数ワークスペースアルゴリズムと呼ばれていました。

下限については知りません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.