ブラックボックスを使用した並べ替え
私たちは、リストの並べ替えしたいと仮定のの実数を。実数を即座にソートできるブラックボックスが与えられたと仮定します。このブラックボックスを使用してどれだけの利点を得ることができますか?SSSnnnn−−√n\sqrt n たとえば、ブラックボックスへの呼び出しのみで数値を並べ替えることはできますか?私が見つけた最良のアルゴリズムは、ブラックボックスへの呼び出しを使用しています。しかし、私はそれをさらに改善することができませんでした。merge-sortに似たアルゴリズムを次に示します。O (n−−√)O(n)O(\sqrt n)nnn 最初にリストをリスト分割します。サイズは約です。次に、ブラックボックスへの呼び出しを使用して、これらのリストを並べ替えます。最後に、次のようにブラックボックスを使用して、ソートされたリストをマージします。SSSn−−√n\sqrt ns1、s2、。。。、sn√s1,s2,...,sns_1, s_2, ..., s_{\sqrt n}n−−√n\sqrt nn−−√n\sqrt n リストの最小要素を新しいリストに入れ、ブラックボックスを呼び出してソートします。で数(第1の最小要素)で最小の数であろう。出力リストの最初の場所にそれを置くことができます。 要素を想定することから選択された我々は交換、ソートリストの二番目に小さい要素で、再度の二番目に小さい部材計算するためにその上にブラックボックスを実行。 すべての要素がソートされるまで続けます。この部分のブラックボックスコールの総数はLLLL [ 1 ]L[1]L[1]LLLSSSsjsjs_jL [ 1 ]L[1]L[1]sjsjs_jSSSn − n−−√n−nn - \sqrt n。したがって、全体的な呼び出しの総数はます。nnn 一方、次のようにソートに必要な数の比較の下限を使用して下限を取得できるはずです:を使用してブラックボックスを実装できます比較。ブラックボックスへの呼び出しと線形時間のマージで問題を解決できる場合、比較で実数をソートできますが、これは不可能です。n−−√lgn−−√= 12n−−√lgnnlgn=12nlgn\sqrt n \lg \sqrt n = \frac{1}{2} \sqrt n \lg no (n−−√)o(n)o(\sqrt n)nnno (n lgn)o(nlgn)o(n \lg n) ブラックボックスで使用する多くの比較が共有されるため、がブラックボックスへの呼び出し数の下限であることを証明できると思います。Ω (n )Ω(n)\Omega(n) 更新:他の投稿が示唆しているように、も実現可能です。n−−√lgnnlgn\sqrt n …