k比較を使用したソートの漸近的な複雑さ


8

2要素比較を使用したソートは、漸近的な最悪の場合の複雑さ少なくとも、mergesort、heapsort、バイナリ挿入、ford-によって到達)を持ち、最適です。nlog2⁡(n)

k個の要素をビルディングブロックとしてソートする比較を使用してソートする場合、情報理論的な下限はです。k-ary挿入でに簡単に到達できます。nlogk!⁡(n)nlogk⁡(n)

質問:と間の最適な複雑度はどこにありますか?nlogk⁡(n)nlogk!⁡(n)

適切な参照もいただければ幸いです。

編集:それは明確ではなかったので:

Iはで複雑について興味がで、。それの漸近挙動有すると、およびI精度を高めたい。nk=O(1)αnlog2⁡(n)α∈[1log2⁡(k),1log2⁡(k!)]α

回答:



2

最初に、それらを私が見ている正しい形だと思うものに持っていきましょう。


Θ(n⋅logk⁡(n))=Θ(n⋅log2⁡(n)log2⁡(k))=Θ(n⋅log2⁡(n)log2⁡(k))

そして

Θ(n⋅logk!⁡(n))=Θ(n⋅log2⁡(n)log2⁡(k!))=Θ(n⋅log2⁡(n)k⋅log2⁡(k))



それを観察する k-ary比較で十分です ⌊k2⌋ 同時(バイナリ)比較。

ために 2≤k、 ⌊k2⌋∈Θ(k)。

AKSネットワーク、用2≤k≤O(n)、 O(n⋅log2⁡(n)k) k-ary比較でソートできます。

いつ n≤k、 1k-ソートするには、ary比較で十分です。 1∈O(n⋅log2⁡(n)k)

したがって、 2≤k、 O(n⋅log2⁡(n)k) k-ary比較でソートできます。


5 k-ary比較で十分です (4⋅⌊k2⌋)-ary 比較。

ために 4≤k、 5k-ary比較で十分です (32⋅k)-ary 比較。

ために 2≤k≤n、 log32⁡(nk)=log2⁡(nk)log2⁡(32)。

ために 2≤k≤n、 5⌈log2⁡(nk)log2⁡(32)⌉ k-ary比較でソートできます。

ために 2≤n、 少なくとも一つの kソートするには、-ary比較が必要です。

したがって、 2≤k≤n そして nk∈O(1)、 ソートは正確にかかります Θ(1) k-aryの比較。


私の2つの
結論の2番目を改善し て、下限が達成されたことを示すことができると思います。


私が考えていたものではありませんが、それでもいいです。の複雑さに興味がありますn、 k=O(1)。それは漸近的な振る舞いを持っていますαnlog2(n) と α∈[1log2(k),1log2(k!)]、そして私はもっと正確にしたい α。あなたの視点については、私はあなたがそのように下限に到達するとは思わない、なぜなら5log2⁡(nk)log2⁡(32)=O((nk)log2(5)log2(32))それはそれをしません。
— slan_21 2012年

私がそれを見つけることができる限り、気づく前に私はそれをそのように解釈しようとしていました、 最適な定数は、 k=2。

私は今、あなたのベースの使用が 2 あなたが書く最初の対数で、私の論点に取り組むかもしれません。 バイナリ比較の最適な数を n⋅log2⁡(n) 収束することが知られている 1?

はい、 k=2 最適な比較数を nlog2⁡(n) 1に収束します。多くのアルゴリズムがこれを実現します。おそらく最も簡単なのは、バイナリ挿入( ∑i=2n⌈log2⁡(i)⌉∼nlog2⁡(n)比較)。
— slan_21 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.