比較の平均によるソート


10

比較の平均を使用する比較ベースのソートアルゴリズムはありますか?lg(n!)+o(n)

最悪の場合の比較アルゴリズムの存在は未解決の問題ですが、予想されるすべての入力の比較。有意、それがあることであるのみの平均を浪費、最適の比較要素ごとの比較。lg(n!)+o(n)lg(n!)+o(n)lg(n!)+o(n)o(n)o(1)

私はすでにそのようなアルゴリズムを持っているので、(Q / A形式を使用して)回答としてそれを含めていますが、他のアルゴリズムを含めて、そのようなアルゴリズムがすでに知られているかどうか、改善し、最悪のは追加の回答を歓迎しますケース。o(n)lg(n!)+o(n)

以前の作業:
マージソートは比較を使用します(最悪の場合でも)。 マージ挿入ソート(Ford–Johnsonソートとも呼ばれます)も比較を使用しますが、定数ははるかに小さくなります。比較ベースのソートの平均複雑度の向上(岩間和夫と照山純一による)—(1,2)挿入アルゴリズムは、以下の私の回答の一部に似ています。lg(n!)+Θ(n)
lg(n!)+Θ(n)Θ(n)


この質問は最適なランダム比較ソートと重複していますが、異なる強調(ここでは特定の漸近的振る舞い-一般的な知識の状態、すべての入力サイズ、および最悪の場合との違い)を考慮して、新しい質問を使用することにしました。
Dmytro Taranovsky

回答:


4

更新: この回答を、比較を平均lg(n!)+o(n)したペーパーソートに拡張しました。

はい、そのようなアルゴリズムは存在します。私は範囲のみを証明しますが、おそらくランダム化の仮定の下で。および試みについても説明します。l gn + O n 1 - εn 0.5 + o 1 O n 0.5 - εlg(n!)+o(n)lg(n!)+O(n1ε)n0.5+o(1)O(n0.5ε)

必要に応じて注釈を付けることにより、すべての要素が異なると見なすことができます。平均的なケースでは、ランダムな順序で異なる要素を使用します。公正なコインの使用と比較して、各比較のエントロピー損失を追加することで、比較の平均数を計算できます。

開始点は、次の要素をソートされたサブセットに挿入する場所を決定するためのバイナリ検索を伴う挿入ソートです。場合には、挿入は最大で比較を使用します。これは(エントロピーの観点から)加法因子まで最適です(平均ケースの複雑さの場合、も機能します)。今、は2の累乗に近くありません。要素挿入は最適ではありません(平均の場合でも、各クエリのバランスをとる方法に関係なく)。ただし、比較を無駄にすると、をほぼ均一な分布に誘導できます。の間隔で1 - ε2 m個| S | 2 m個 - 1 のm O ε2 m個| S | 1 + ε2 m | S | A o 1 A SS(1ε)2m|S|2m1mO(ε)2m|S|(1+ε)2m|S|Ao(1)AS2の累乗に近い長さのにより、望ましい最適性が得られます。

これを達成するには、要素をバッチで追加し、バッチの要素を互いに効率的に比較して、要素対応するの間隔が準ランダムに減少するようにします(間隔内のの確率分布を使用します)。ほぼ均一)、間隔の長さが2の累乗に十分に近い場合、バイナリ検索を実行してを挿入します。A A ASAAA

一般的な構成

ソートされた要素のサブセットを保持し、ソートされていない各要素について、が配置されていることがわかっている最小間隔を追跡します。 の長さです。は間隔のIDによるものです。A I A S A | I A | I A I A = I BSAIASA|IA|IAIA=IB

ましょうである:比較用いて、次いで(順不同で)比較及び、対応する要素に対してそれらの間隔(または長さ1を有する)ばらばらになるまで。の要素は、が呼び出されたときにが均一に分布すると仮定して、比較の確率を可能な限り1/2に近づけるように(一貫した方法で)選択され。結局はばらばらであるため、は均一性の仮定を維持します。A B A B S S C O M P A R EA B I AI B C O M P A R ECompare(A,B)ABABSSCompare(A,B)IAIBCompare

以下のセクションは、互いに独立して読むことができます。

アルゴリズムlg(n!)+o(n)

与えられたもの: ソートされたリストとソートされていない要素のバッチ。 ; ソートされていない要素はに対してランダムです。M M ω1 O | S |SSmmω(1)o(|S|)S

可能な限り(1)〜(3)を繰り返し
ます。1.をして、バッチから2つの要素とを選択します(どの選択でも機能します)。 2.ます。 3.場合 2の累乗に十分近い(注1)をバッチから削除します(を忘れないで)。も同様です。最後に: すべての要素を挿入し、並べ替えを完了します。B I A = I B C o m p a r eA B | I A | A I A B SABIA=IB
Compare(A,B)
|IA|AIAB
S

注1:「十分に近い」、いずれかに対する(の関数として相対誤差限り動作)要素は、ステップ(4)で除去される(注2によって可能)。予想されるランダム化の仮定の下で、相対エラーを使用すると、要素がキャプチャされ、平均比較ソートアルゴリズム。m m - o m c log log m / log m m 1 - log - Θc m l gn + O n log log n / log n o(1)mmo(m)cloglogm/logmm(1logΘ(c)m)lg(n!)+O(nloglogn/logn)

注2:比較の同じシーケンスは同じ境界間隔をもたらすため、ほとんどすべての要素はステップ(1)回通過し(ステップ4で削除されない限り)。最初にでを選択し場合、を要素と比較し、ステップ(3)を適用するたびにが減少する確率 で回。2の有理数ではないすべての比率に対して、なので、を取得しますA < B A A S [ 1 1 / Ω(logm)A<BAAAO1| IA| 1/1-1/S[(11/2)|S|]AO(1)|IA|A>1ε>0D>0MNN1/(11/2)a>1ONε>0d>0m,nN1ε<amd2n<1+εo(n) バウンド。

ありそうなアルゴリズムlg(n!)+O(n1ε)

ランダム化の仮定を法として、次のように平均比較を実現できます。lg(n!)+O(n1ε)

  • アイテムをランダムにシャッフルし、前半をリストにソートし、後半を未ソートのバッチとして保持します。S

  • バッチが空になるまで繰り返し
    ますランダムに選択します。LET。が空の場合、バッチからを削除し、挿入します。そうでなければ:G = { B バッチ| P A < B 0.5 | < N - 0.51 ε } G A SAbatchG={Bbatch:|P(A<B)0.5|<n0.51ε}GAS

    1. 確率(たとえば≥0.05)を持つがある場合、は内 2のパワーの相対誤差、実行と成功した場合(すなわち、の範囲内である 2のパワーの相対誤差) 、バッチからを削除し、挿入します。Θ1 C O M P A R EA B | I A | N - ε C O M P A R EA B | I A | N - ε A SBGΘ(1)Compare(A,B)|IA|nεCompare(A,B)|IA|nεAS
    2. そのような存在しない場合、ランランダムため。C O M P A R EA B B GBGCompare(A,B)BG

ランダム化の仮定が機能する場合(つまり、間隔の長さと位置の分布が十分にランダムである場合)、プロセス全体を通じて、典型的なは要素の選択(異なる間隔の長さ)。したがって、通常は上記の(1)の比較を選択できます。比較結果に不運な場合でも、可能性が得られるため、(が十分に小さい場合は0.01)を達成でき比較アルゴリズム。いくつかの変更と近似により、全体の計算を準線形にすることができますnはΘ1 nはΘ1 ΘログN ε リットルGN + O N 1 - εA BAnΘ(1)nΘ(1)Θ(logn)εlg(n!)+O(n1ε)A、有望な区間の長さを計算し、適切な近似中心と区間の長さで sを検索します。B

比較を最適化する方法はいくつかありますが、障害となるのは、各比較が不運になる可能性があり、比較の数が限られていることです。最適化後、が平均4回の比較を行い、1/4の確率で「成功」、。ε1 - ε/ 4 / ログ4 / 3 2 0.09Compare(A,B)ε(1ε)/4/log4/320.09

おそらくはるかに優れたアプローチは、間隔が2の累乗に近づくまで待機することです。個々の間隔の長さではなく、長さの分布を制御します。

アルゴリズムの試みlg(n!)+n0.5+o(1)

仮定している、私たちはソートされていないのバッチ与えられたの間隔を持つ要素して、また、与えられたの通常はおよび均一に分布します(ランダムなエラーまでで、条件付けされていても十分な精度で保持され)。次に、比較の平均を無駄にするアイテムを次のように並べ替えることができます: (*)すべての要素を最初のの順序で挿入します。このように、間隔の長さが2の累乗に近いときにすべての要素が挿入されます。n I A | I A | n 1 o 1 | I A ||S|=nnIA|IA|n1o(1) A<S[I]nは0.5+O1| IA||IA|2lg|IA|A<S[i]n0.5+o(1)
|IA|2lg|IA|

並べ替えアルゴリズムは次のようになります。リストをランダムにシャッフルして、前半を並べ替えます。後半を挿入するには、分布を正しくして、上記の(*)を実行します。S

ようにするには分布を正しく、「ランダム」分布を作成し、次に各要素の右端の要素を保留することができます残りをランダム化します(必要に応じて繰り返します)。ただし、これはグローバルに、必要な精度でローカルに制御できるかどうかはわかりません(したがって、上記の「試行」という言葉)。 | IA| /2リットルグラム| IA| | IA||IA|2lg|IA||IA|/2lg|IA||IA|2lg|IA|

「ランダムな」分布を作成するには、でをランダムに使用できますが、初期のすべて同一であるため、対数深度でのランダム化は想定していません(つまり、で十分長い)。しかし、要素への一般化(多分妥当な選択がうまくいくでしょう)を使用して、サブ対数深度でランダム化されると思います:要素を絡ませたままにすると(比較結果を使用して接続)、との比較ごとに約非通勤選択肢が必要です。これによりが許可されP A < B 0.5 I A I A C O M P A R Eの K = ω1 K = ω1 K S O ログk個の n個+ ログ・K のk Θログ・K Compare(A,B)P(A<B)0.5IAIAComparek=ω(1)k=ω(1)kSO(logkn+logk)必要に応じて、ランダム化の深さ(要素をばらばらにするために深さが必要なため、が大きすぎないと想定)。十分に小さなを使用すると、計算を準線形にできると思います。kΘ(logk)k

1/2との比較では、確率はエントロピーを浪費するだけなので、最初のランダム化とその境界区間の要素のわずかな不均一性は、のみを必要とするはずです。エントロピー廃棄物。分布の整形が十分に成功した場合、エントロピーの無駄は主に(*)の間の間隔の長さの不一致から生じます(したがって、)。 O 1 / N N O 1 N 0.5 + O 1 1/2+n0.5O(1/n)no(1)n0.5+o(1)

可能な組み合わせ:lg(n!)+O(n0.5ε)| S | + N 0.5 + ε N 0.5 + ε N 0.5 + ε nは0.5 - ε / 2 + O 1 S N ε I A Θ N ε / 2 N 1 - O 分布整形が十分に機能し、バッチサイズを等しくして、(*)(上記)の要素を選択的に拒否します。エントロピーの無駄があるこれらの要素以外すべてを挿入できますのように続きます。をほぼ等しい間隔に分割し、挿入時にが間隔に落ち着くと、間隔が長すぎる場合は拒否(つまり、挿入をキャンセル)し、これらの間隔の長さのばらつきを減らします|S|+n0.5+εn0.5+εn0.5+εn0.5ε/2+o(1)SnεIAΘ(nε/2)回、これにより、必要に応じて、ランダムな長さ間隔の長さのばらつきが回減少します。ここで、上記のアルゴリズムを使用して、が小さい場合、無駄のある残りの要素を挿入できます。足りる。 N ε / 2 - O 1 のL GN+O N 1 - εO N 0.5 - ε ' εn1o(1)nε/2o(1)lg(n!)+O(n1ε)O(n0.5ε)ε

ソートの最悪の場合の複雑さ: おそらく、最悪のケースの比較を使用したソートアルゴリズムがあります。中央値を見つけるために、平均的なケース(比較)と最悪のケース(少なくとも比較)の間には線形のギャップがあります。ただし、並べ替えについては、比較の配置や新しい並べ替えアルゴリズムを見つけるための十分な自由があります。1.5 n + o n 2 + εn O 1 lg(n!)+o(n)1.5n+o(n)(2+ε)nO(1)


1
これは論文として書いておくべきだと思います。
EmilJeřábek18年

@EmilJeřábek同意する。研究レベルのサイトとして、ここでの質疑応答の多くはミニペーパーですが、ここでは長さと重要性から、正式なペーパーが望ましいです。(dmytro@mit.eduで)論文のどの部分を拡張する必要があるか(この回答は簡潔なバージョンのままにしておいてください)を私に知らせてください。
Dmytro Taranovsky
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.