Skip to main content
QUICK REVIEW

[論文レビュー] Partitioning schemes for quicksort and quickselect

Krzysztof C. Kiwiel|ArXiv.org|Dec 23, 2003
Algorithms and Data Compression参考文献 19被引用数 5
ひとこと要約

本稿では、クイックソートおよびクイックセレクトにおける最適化されたパーティショニング方式を提案し、ピボットと等しい要素を効率的に分離するための三重パーティショニングに焦点を当てる。古典的な手法の改良により、比較回数を低く保ちつつスワップ回数を削減し、計算結果では三重パーティショニング方式がわずかなオーバーヘッドしか発生せず、クイックセレクトが最小限の追加コストですべての等しいキーを特定可能であることを示している。

ABSTRACT

We introduce several modifications of the partitioning schemes used in Hoare's quicksort and quickselect algorithms, including ternary schemes which identify keys less or greater than the pivot. We give estimates for the numbers of swaps made by each scheme. Our computational experiments indicate that ternary schemes allow quickselect to identify all keys equal to the selected key at little additional cost.

研究の動機と目的

  • 等しいキーが存在する状況においても、スワップ回数を減らすことでクイックソートおよびクイックセレクトのパーティショニング方式を改善すること。
  • ピボット未満、ピボットと等しい、ピボットを超える要素を分離する効率的な三重パーティショニング方式を開発し、クイックセレクトが選択キーと等しいすべての要素を特定可能にすること。
  • さまざまなピボット選択戦略下での、さまざまなパーティショニング方式の平均的スワップ回数を分析・比較すること。
  • 改良された方式の実用的パフォーマンスを評価すること、特に現代のアーキテクチャにおける内側ループでのポインタテストと無意味なスワップの影響を検討すること。

提案手法

  • 必要に応じて最初と最後の要素を入れ替えることで、人工的なセンティネルを排除する安全化された二重パーティショニング方式を提案する。
  • 等しいキーを最小限の比較とスワップで効率的に処理する修正されたセッジウィック方式を導入し、相異なるキーに対して最適なパフォーマンスを達成する。
  • 正確に $ n-1 $ 回の比較を行い、スワップを最小限に抑える三重パーティショニング方式を設計し、内側ループでポインタテストを回避することで高速化を実現する。
  • 最初の段階で無意味なスワップを排除し、2番目の段階でポインタテストを削除するハイブリッド二段階パーティショニング方式を開発し、繰り返しキーが多数存在する入力に対して効率を向上させる。
  • 平均的パフォーマンスを向上させるために、中央値の $ 2t+1 $ 項およびニンター法によるピボット選択を採用する。
  • ランダム、ソート済み、オルガンパイプなど多様な入力タイプを対象に、比較回数、スワップ回数、実行時間を測定する広範な計算実験を実施する。

実験結果

リサーチクエスチョン

  • RQ1要素が相異なる場合でランダム順序の場合、さまざまなパーティショニング方式の平均的スワップ回数はどのように比較されるか?
  • RQ2特に現代のアーキテクチャにおいて、キーコンパリゼンループにポインタテストを含めることのパフォーマンスへの影響は何か?
  • RQ3三重パーティショニング方式は、二重パーティショニング方式と比較してわずかなパフォーマンスペナルティで済ませながら、ピボットと等しいすべての要素を特定可能にできるほど効率的と言えるか?
  • RQ4繰り返しキーが多数存在する入力に対して、提案された方式は、$ O(n^2) $ 時間に劣化するロムート方式と比較してどのように性能を発揮するか?
  • RQ5ハイブリッド二段階方式は、繰り返しキーが多数存在する入力において、無意味なスワップをどの程度削減し、パフォーマンスを向上させるか?

主な発見

  • 提案された三重パーティショニング方式は、相異なるキーの入力に対してわずかなパフォーマンスペナルティ(二重方式と比較して約10%遅延)しか発生せず、すべての等しいキーを特定できるという利点と見合う妥当なトレードオフである。
  • ロムート方式は、繰り返しキーが多数存在する入力では性能が著しく劣り、すべての要素がピボットと等しい場合に1回のパーティショニングでたった2要素しか削除しないため、実行時間が $ O(n^2) $ に劣化する可能性がある。
  • ハイブリッド二段階方式は、無意味なスワップを排除し、ポインタテストを削減することで、繰り返しキーが多数存在する入力において、ベンティン=マクイリョ方式のような標準的な三重パーティショニング方式よりも著しく高速である。
  • 平均的には、最良の二重パーティショニング方式(例:方式A)は最大で $ n/4 $ 回のスワップを行うが、ロムート方式は最大 $ n-1 $ 回のスワップを行うため、重複が多数存在する大規模な入力では非効率である。
  • 中央値の3項選択を用いた場合、新しい方式は漸近的に $ n/5 $ 回のスワップを行うが、ロムート方式は $ (n-1)/2 $ 回のスワップを行うため、著しい改善が得られている。
  • 計算結果から、現代のマシンではループ内にポインタテストを含めることで実行が著しく遅延しないことが示され、古くは古いコストモデルに基づいた伝統的助言とは矛盾する。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。