二分法モデルのO(n)で整数の並べ替えは可能ですか?


9

私の知る限り、次の問題を解決する最悪の場合のアルゴリズムは存在しません。O(n)

有限の整数で構成される長さシーケンスを前提として、すべての要素が後続要素以下である順列を見つけます。n

しかし、計算の二分法モデルには、それが存在しないという証拠がありますか?


整数の範囲を制限しないことに注意してください。比較ソートのソリューションも制限しません。


私の知る限り、SATにはO(n)時間アルゴリズムがあるかもしれません。だから答えはノーです。
レンビック2015

5
私の知る限り、これはまだ未解決の問題です。
Juho

2
コンピューターを比較やスワップに限定していないことを考えると、使用している計算のモデルを指定するまで、意味のある答えがあるかどうかわかりません。RAMと2つの数値の比較のみの場合、エントロピーからの引数は、二分法のコンピューターでも、時間制限を与えます。当然のことながら、スワップや比較ではなく、ソートが基本的な操作である場合は、で行うことができます。整数を適切な場所に挿入することが初等演算の場合、。特定の比較外スワップモデルを念頭に置いていましたか?Θ 1 Θ N Ω(nlog(n))Θ(1)Θ(n)
Lieuwe Vinkhuijzen 2015年

2
@LieuweVinkhuijzen私の質問は、計算の変分モデルを指定しています。平易な英語:マシンのワードサイズが問題の整数を保持するのに十分な大きさの計算モデル。したがって、任意の2つの整数の比較はO(1)ですが、それらの加算、乗算なども同様です。この計算モデルでは、エントロピー境界がすでに打ち負かされています。Han、Yijie(2004)、「O(n log log n)時間と線形空間での確定的ソート」を参照してください。
orlp

@orlpなるほど。整数の構造を利用すると、エントロピー境界を打ち破ることができます。整数の並べ替えについては知りませんでした。そのトピックについては必ずお読みください。
Lieuwe Vinkhuijzen 2015年

回答:


4

整数は、O 1 追加スペースを使用して時間で安定してソートできます。O(n)O(1)より正確には、[ 1 n c ]の範囲に整数がある場合、はO(n)時間でソートできます。n[1,nc]

これは数年前に故ミハイ・パトラチュク(彼の作品に詳しい人を驚かせるべきではない)を含むチームによってのみ示された。これは驚くべき結果であり、整数の並べ替えの問題が(理論的には)解決されたことを意味するため、多くの人が知らないことに驚いています。

キーの変更が許可されている場合、実用的なアルゴリズム(上記のペーパーで説明)があります。基本的には、ソートされていない整数よりもソートされた整数を圧縮することができ、得られる追加のスペースは、基数ソートを実行するために必要な追加のメモリと正確に等しくなります。また、読み取り専用キーをサポートする非実用的なアルゴリズムも提供します。


1
要約から理解できることから、これは一般的ではありません。O n でサイズnまでの単語を並べ替えることができ。私の質問は、無制限の整数に明示的に言及しています。lognO(n)
orlp

@orlp論文の3番目のアルゴリズムは、無制限の長さの整数について話します。
仮名

1
おそらく私はそれを誤解しているかもしれませんが、無制限の整数ソートアルゴリズムのメモリ使用量を削減するためのメソッドの説明しか見ることができません。要約からの引用(強調は私のもの):「別の興味深い質問は、任意のの場合です。ここでは、任意のRAM並べ替えアルゴリズムから、O(1)の余分なスペースのみを使用し、同じことを行う並べ替えアルゴリズムへのブラックボックス変換を示します。実行時間。」c
orlp

3
私を許してください、しかし現在の状態ではこの答えは質問にまったく答えません。整数には制限ないことを明示的に述べました。この答えは、まったく異なる問題を解決します。
orlp

1
最後のポイントは小さなフォントではなくなりました:)
orlp

-1

整数の場合は、基数ソートを使用できます。バケットを作成し、で数値のリストを並べ替えます。ここで、bは任意の整数のビット単位のサイズの上限、nは並べ替える要素の数です。O(bn)bn

整数のサイズに上限がない場合、既知の線形時間ソートアルゴリズムはないと思います。


5
ようこそ!あなたの言うことは完全に本当ですが、それが質問に答えるとは思いません。この質問は、必要なアルゴリズムが特定の計算モデルに存在しないことの証明を具体的に求めています。そのようなアルゴリズムは知られていないと言っても、何も存在しないことを証明するものではありません。
David Richerby 2016年

実は、私たちの問題で一定であるB、私はこのアルゴリズムはO(n)の中にあることを検討
RFC 2549

2
質問はが定数であることについては何も言いません。n個の数値があるとだけ言っています。それらの数は、任意に大きくなる可能性があります。(また、おそらくコメントのタイプミスにすぎませんが、O n o n は2つの非常に異なるものであることに注意してください。)bnO(n)o(n)
David Richerby

はい、間違いなくタイプミス;)彼の質問では、長さbの単語に適合する数値を想定すると、定数になります。
RFC 2549

1
それは単語の長さを一定にしていません。。(そうでない場合は、明示的に「単一の単語での操作は、操作ごとに一定の時間がかかること」を前提とする理由はありません
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.