私は、Kウェイマージソートのための最大Kと最大値があるかどうかを調べようとしています。 このアルゴリズムの時間複雑度はO(nlogK)です。私は運がない数時間それを探していました。誰かが、私がそれが説明されているいくつかの記事に私をリンクさせることができますか、いくつかの制限があり、それがなぜそうであるか教えてください? また、使用することが推奨されるKの価値があるかどうか、それが最も効率的であるかどうかを知りたいと思います。Kウェイマージのための最大K
答えて
内部(メモリのみ)のソートの場合、データの操作の総数はKに関係なくほぼ同じです。x = n log2(n)とします。 2ウェイマージソートにはxの移動が必要であり、最悪の場合のxは合計x + x =(2)xの演算を比較します。 (技術的には、最悪の場合でもxが比較されるよりも少し小さいが、xはここでその考えを得るのに十分に近い)。 4ウェイマージソートでは、(1/2)x移動と最悪の場合(3/2)xが比較されるため、合計でも(1/2)x +(3/2)x =(2)x操作の合計が必要です。比較が移動より速い場合、4ウェイマージソートは高速です。移動が比較より速い場合、2ウェイマージソートは高速です。また、レジスタやスタックにポインタやインデックスなどの変数が残っているという問題もあります.4ウェイマージでは、64ビットモードでX86などの16個のレジスタが必要です。移動がより速い例として、オブジェクトへのポインタの配列がソートされ、ポインタのみが移動されるが、オブジェクトが比較される(各オブジェクトのポインタ逆参照を含む)場合を考える。
外部のソートの場合、外部デバイス(ディスクドライブ、または旧式のテープドライブ)に作成されたソートされたチャンクへの内部ソートはどのアルゴリズムでもかまいません.Kウェイパートはちょうどチャンクをマージします。外部ソートパスの数とKのマージがI/Oバウンドの代わりにCPUバインドになるように十分な大きさのKの間にはトレードオフがあります。合計時間はI/O時間+ I/O時間を超える任意のCPU時間です。大きなデータファイルのGnuソートでは、K = 16を使用します.Kウェイマージは、K要素の最小ヒープを使用して行われます。各ヒープエントリは、チャンクID、レコードインデックスまたはポインタ、メモリに残っているチャンクのレコード数、チャンクに残っているレコード数)。 Kエントリを持つ最小ヒープを最初に作成した後、ヒープの先頭の要素は、Kエントリの現在の最小要素(昇順のソートを想定)を持つ構造に対応します。その要素が移動されて出力され、次の要素がそのチャンクから読み込まれ、ヒープが更新されて、次の要素がヒープ内の先頭の要素の配置場所を反映します。チャンクの終わりに達すると、マージはK-1マージになり、次にK-2マージが行われ、コピーされるチャンクは1つだけ残されます。
- 1. K最近隣の
- 2. K最近傍
- 3. K-最近隣 -
- 4. K-最近接アルゴリズム(Java)で最短の 'K'距離を取得
- 5. 最初の文字を 'K'で始めるためのString.matches
- 6. サポートベクターマシン対K最近隣の
- 7. テンソルの最小K値?
- 8. x^k + y^k = nの対の量を求めよ。
- 9. wekaのk-meansアルゴリズムで最適な 'k'を決定する
- 10. K-Meansアルゴリズム(Apache Spark)でKの最適値を見つける
- 11. 行列のk個の接続要素の最大合計
- 12. K-means法で最適なkを見つけるには?
- 13. C++の差--k [i]とk [i] -
- 14. ソートproblem-サイズkのN/K間隔各
- 15. K最近傍アルゴリズム疑問
- 16. C++ k最短経路アルゴリズム
- 17. k個の最大要素を抽出する
- 18. 反復要素のベクトルを最大k回繰り返す
- 19. Apacheのスパーク - スカラ - HashMapの(K、HashMapの[文字列、ダブル](V1、V2、...))((K、V1)、(K、V2)、...)
- 20. Xのすべてのx_iをK個のstに分割します。 var(Kのkに対する和(x in k))は最小化されます
- 21. Pythonのパンダ、行によって外積、(N、K)データフレームの(N、K、K)パネル
- 22. マルチスレッドプログラム内の最近隣のk個
- 23. bstのk番目の最小番号
- 24. PythonのK倍
- 25. kの最良値を見つける方法k-NNについては?
- 26. const K&k = K()はこのコンストラクタ関数で何を意味しますか?
- 27. 最小値と最大値を持つk個の部分の分割
- 28. サイズkの最も一般的なサブセット
- 29. チゼルk最近隣のVerilog出力
- 30. Kは、最短経路のpython
なぜkには任意の最大値がありますか? – njzk2
私はそれについて何も発見していないので、おそらくメモリの制限、あまりにも高いKで遅いスピードなど – Ruli
K ** 2がデータセットのサイズを超えると、追加の "方法"逆効果である。 –