パーティションベースの汎用選択アルゴリズムとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > パーティションベースの汎用選択アルゴリズムの意味・解説 

パーティションベースの汎用選択アルゴリズム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/21 14:22 UTC 版)

選択アルゴリズム」の記事における「パーティションベースの汎用選択アルゴリズム」の解説

k 番目に大きい値を選択するための最悪でも線形時間アルゴリズムは、少なくとも1つ存在している。これは、マヌエル・ブラムロバート・フロイド、Pratt、ロバート・タージャン1973年論文 Time bounds for selection発表したのである。そのアルゴリズムは独自の発明部分とクイックソート使われている技法合わせている。 クイックソートでは、リストをある値より小さい数のリストそれより大きい数のリスト分割するパーティション呼ばれるサブプロシージャがあり、これは線形時間である。a[pivotIndex] という値でパーティションを行う擬似コードを以下に示す。 function partition(a, left, right, pivotIndex) pivotValue := a[pivotIndex] swap a[pivotIndex] and a[right] // ピボット値を最後に置く storeIndex := left for i from left to right-1 if a[i] ≤ pivotValue swap a[storeIndex] and a[i] storeIndex := storeIndex + 1 swap a[right] and a[storeIndex] // ピボット値を最終的な場所に置く return storeIndex クイックソートでは、2つ分けたリストそれぞれ再帰的ソートしていき、最善で Ω(n log n) の時間がかかる。しかし、選択ではどちらのパーティション必要な値があるか分かっている。ピボット値のインデックスと k を比較すればどちらに k 番目の値があるかが分かる。したがって必要な方にだけ再帰的に処理を施せばよい。 function select(a, k, left, right) select a pivot value a[pivotIndex] pivotNewIndex := partition(a, left, right, pivotIndex) if k = pivotNewIndex return a[k] else if k < pivotNewIndex return select(a, k, left, pivotNewIndex-1) else return select(a, k-pivotNewIndex, pivotNewIndex+1, right) クイックソートとの類似注目されたい。前述最小値ベース選択アルゴリズム不完全な選択ソートだったが、これは不完全なクイックソートであり、O(n)パーティションのうち O(log n) の部分だけを処理する。この単純な手続き線形時間性能であることが期待でき、実際クイックソートのようによい性能を示す。これはin-placeアルゴリズムでもあり、一定のメモリ量しか使用しない。そのためには、以下のように末尾再帰ループにすればよい。 function select(a, k, left, right) loop select a pivot value a[pivotIndex] pivotNewIndex := partition(a, left, right, pivotIndex) if k = pivotNewIndex return a[k] else if k < pivotNewIndex right := pivotNewIndex-1 else left := pivotNewIndex+1 クイックソートと同様、このアルゴリズムピボット値の選択によって性能左右されるピボット値として良くない値が一貫して選択され場合、その性能前述最小値ベース選択同等にまで低下する

※この「パーティションベースの汎用選択アルゴリズム」の解説は、「選択アルゴリズム」の解説の一部です。
「パーティションベースの汎用選択アルゴリズム」を含む「選択アルゴリズム」の記事については、「選択アルゴリズム」の概要を参照ください。

ウィキペディア小見出し辞書の「パーティションベースの汎用選択アルゴリズム」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「パーティションベースの汎用選択アルゴリズム」の関連用語

パーティションベースの汎用選択アルゴリズムのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



パーティションベースの汎用選択アルゴリズムのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの選択アルゴリズム (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS