比較ソート
n | ⌈log2(n! )∞{\displaystyle\left\lceil\log_{2}(n!>
{\displaystyle\left\lceil\log_{2}(n!)\右\rceil}
|
最小 |
---|---|---|
1 | 0 | 0 |
2 | 1 | 1 |
3 | 3 | 3 |
4 | 5 | 5 |
5 | 7 | 7 |
6 | 10 | 10 |
7 | 13 | 13 |
8 | 16 | 16 |
9 | 19 | 19 |
10 | 22 | 22 |
11 | 26 | 26 |
12 | 29 | 30 |
13 | 33 | 34 |
14 | 37 | 38 |
15 | 41 | 42 |
16 | 45 | 45 または46 |
17 | 49 | 49 または50 |
18 | 53 | 53 または54 |
19 | 57 | 58 |
20 | 62 | 62 |
21 | 66 | 66 |
22 | 70 | 71 |
n | ⌈log2(n! )∞{\displaystyle\left\lceil\log_{2}(n!>
{\displaystyle\left\lceil\log_{2}(n!)\右\rceil}
|
n log2≤n−n ln≤2{\displaystyle n\log_{2}n-{\frac{n}{\ln}}}{\displaystyle n\log_{2}n-{\frac{n}{\ln}}}}}}}}}}2}}} |
10 | 22 | 19 |
100 | 525 | 521 |
1 000 | 8 530 | 8 524 |
10 000 | 118 459 | 118 451 |
100 000 | 1 516 705 | 1 516 695 |
1 000 000 | 18 488 885 | 18 488 874 |
.
比較ソートアルゴリズムが必要とする比較の数は、n log(n){\displaystyle n\log(n)}に比例して増加する。)}
、ここでn{\displaystyle n}
ソートする要素の数を指定します。 この境界は漸近的にタイトである。
異なる数のリストが与えられた場合(これは最悪の場合の分析であるため、これを仮定することができます)、n個の階乗順列があり、そのうちの1つが ソートアルゴリズムは、正しい順列を識別するために、比較から十分な情報を得る必要があります。 アルゴリズムが常に最大f(n)ステップの後に完了する場合、キーは区別され、各比較には2つの可能な結果しかないため、2f(n)以上のケースを区別するこ したがって、
2f(n)≤n! {\displaystyle2^{f(n)}\geq n!}
最初のn/2{\displaystyle n}を見ることによって/2}
nの因子! =n(n−1)≥1{\displaystyle n!=n(n-1)\cdots1}
、我々はlog2(n! )≥ログ2((2)n2)=n2ログn log2−n2=Θ(n logいました。 {\displaystyle\log_{2}(n!したがって、geq Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{2}=\Frac{1}{}
ログ2(n! )=Ω(n log≤n)である。 {\displaystyle\log_{2}(n!)=\Omega(n\log n)です。}
これは、請求項の下限部分を提供する。 より良い境界はStirlingの近似によって与えることができます。
同じ上限は、heapsortやmergesortのように、最悪の場合にこの限界を達成するアルゴリズムの存在から従います。
上記の引数は、比較の数の漸近的な下限ではなく、絶対値、すなわちlog log2(n! )∞{\displaystyle\left\lceil\log_{2}(n!)\右\rceil}
この下限はかなり良好です(単純なマージソートによって線形許容範囲内でアプローチすることができます)が、不正確であることが知られています。 たとえば、log log2(13! )Ρ=33{\displaystyle\left\lceil\log_{2}(13!)\右\rceil=33}
, しかし、13個の要素をソートするための比較の最小数は34であることが証明されています。
与えられた数のエントリをソートするために必要な比較の正確な数を決定することは、小さなnに対しても計算上困難な問題であり、解の簡単な式は知られていない。 計算されたいくつかの具体的な値のいくつかについては、OEIS:A036604を参照してください。
比較の平均数の下限編集
同様の限界が比較の平均数に適用されます。
- すべてのキーが異なると仮定すると、つまり、すべての比較は>bまたは<bのいずれかを与え、
- 入力はランダムな順列であり、n個の要素のすべての可能な順列の集合から一様に選択されます,
入力がlog2(n!より少ない順序で入力されているかどうかを判断することは不可能です。)平均して比較します。
これは、情報理論の概念を使用して最も簡単に見ることができます。 このようなランダム置換のシャノンエントロピーはlog2(n!)ビット。 比較では2つの結果しか得られないため、提供される情報の最大量は1ビットです。 したがって、k比較の後、それらの比較の結果を考えると、置換の残りのエントロピーは少なくともlog2(n!)-平均してkビット。 ソートを実行するには、完全な情報が必要なので、残りのエントロピーは0でなければなりません。 その結果、kは少なくともlog2(n!)平均して。
情報理論を介して導出された下限は、”情報理論的下限”と表現されます。 情報理論的下限は正しいが、必ずしも最も強い下限ではない。 また、場合によっては、問題の情報理論的下限が真の下限から遠く離れている場合もあります。 例えば、選択の情報理論的下限は√log2√(n)√{\displaystyle\left\lceil\log_{2}(n)\right\rceilである。}
比較は敵対的な議論によって必要とされる。 情報理論的な下限と真の下限との間の相互作用は、整数関数を下限とする実数値関数によく似ています。 しかし、平均的なケースを考慮すると、これは正確には正しくありません。
平均的なケースを分析しながら何が起こるかを解明するためには、”平均”は何を指しているのかということが重要です。 何を平均化する? 情報理論の知識があれば、情報理論的な下限は全体としてすべての順列の集合上で平均化される。 しかし、(現在信じられているものの下で)任意のコンピュータアルゴリズムは、各順列を問題の個々のインスタンスとして扱わなければならない。 したがって、私たちが探している平均下限は、すべての個々のケースにわたって平均化されます。
コンピュータの非達成可能性に関連する下限を検索するために、決定木モデルを採用します。 私たちの目的が何であるかを少し言い換えましょう。 デシジョンツリーモデルでは、表示される下限は、nの根から葉へのパスの平均長さの下限です。 {\displaystyle n!}
-葉の二分木(各葉が順列に対応する)。 バランスの取れた完全な二分木が平均長さの最小値を達成すると言うことは確信しています。 いくつかの慎重な計算では、nを持つバランスの取れた完全な二分木のために! {\displaystyle n!}
葉の場合、根から葉へのパスの平均長さは(2n! -2√log2√n! √+1)√log2√n! √+(2√log2√n! √+1-n! )⋅ ⌊log2n! ⌋n! {\displaystyle{\frac{(2n!-2^{\lfloor\log_{2}n!\rfloor+1})\cdot\lceil\log_{2}n!\rceil+(2^{\lfloor\log_{2}n!\rfloor+1}-n!)\cdot\lfloor\log_{2}n!\rfloor}{n!}}}
たとえば、n=3の場合、平均ケースの情報理論的下限は約2.58であり、決定木モデルを介して導出される平均下限は8/3、約2.67です。
複数の項目が同じキーを持つ可能性がある場合、”平均ケース”という用語には明らかな統計的解釈がないため、キーの分布について具体的な仮定をしないと、上記のような議論を適用することはできません。