k個の最小・最大要素の選択とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > k個の最小・最大要素の選択の意味・解説 

k個の最小・最大要素の選択

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

選択アルゴリズム」の記事における「k個の最小・最大要素の選択」の解説

別の基本的な選択問題として、k 個の最大要素(または最小要素)を選択する問題がある。例えば、売り上げトップ100のようなリスト得たい場合相当する単純だ効率的でない手法はいくつ存在する上述選択アルゴリズムで1個ずつ要素選択していけば O(kn) の時間で k 個の要素選択できる。これは、k 番目までの選択ソート実施するのと同じである。もし log n が k よりずっと小さいなら、リスト全体ソートしてしまう方が効率的である。 別の単純な方法は、ヒープ平衡2分探索木のような順序維持できるデータ構造データ格納することである。データ構造に k 個以上の要素があるなら、いらない要素削除する小さい方の要素群が必要なら最大要素削除する)。これには O(log k) の時間がかかる要素挿入にも同じ時間がかかり、全体として O(nlog k) の時間要する。 これらよりも効率的な手法として、マージソートクイックソート基づいた部分ソートアルゴリズムがある。クイックソート方式の方が簡単で、選択したい k 個の要素群(の一部)を含まないパーティションソートしない。ピボット値が k 番目かそれ以降なら、左側パーティションだけに再帰施せばよい。 function quicksortFirstK(a, left, right, k) if right > left select a pivot value a[pivotIndex] pivotNewIndex := partition(a, left, right, pivotIndex) quicksortFirstK(a, left, pivotNewIndex-1, k) if pivotNewIndex < k quicksortFirstK(a, pivotNewIndex+1, right, k) このアルゴリズムにかかる時間は O(n + klogk) であり、実際非常に効率が良い。特に、n に比較して k が十分小さいなら、選択ソートを使うようにすれば効率が向上する。 選択する k 個の要素がソートされている必要がないなら、もっと効率化することができる。その場合、k 番目の要素を含むパーティションだけに再帰を施せばよく、その前後はソートする必要がない。 function findFirstK(a, left, right, k) if right> left select a pivot value a[pivotIndex] pivotNewIndex := partition(a, left, right, pivotIndex) if pivotNewIndex > k // new condition findFirstK(a, left, pivotNewIndex-1, k) if pivotNewIndex < k findFirstK(a, pivotNewIndex+1, right, k) このアルゴリズム掛かる時間は O(n) であり、アルゴリズムとしては最善部類になる。 別の方法はトーナメントアルゴリズムである。まず、隣接するペア試合比較)を行い勝者次の試合進めていき、最終的に優勝決定する。このときトーナメント木を生成する。この時点2位要素優勝者直接負けた要素であるはずなので、木構造辿っていけば O(log n) の時間探すことができる。このとき新たなトーナメント木を生成する3位要素2位要素直接負けた要素のはずなので、2つトーナメント木からそれを探し出すこのようにして k 個の要素探し出すまで処理を行う。このアルゴリズムは O(n + k log n) の時間がかかる。 k = 2 の場合、O(n + log n) の時間選択ができる。

※この「k個の最小・最大要素の選択」の解説は、「選択アルゴリズム」の解説の一部です。
「k個の最小・最大要素の選択」を含む「選択アルゴリズム」の記事については、「選択アルゴリズム」の概要を参照ください。

ウィキペディア小見出し辞書の「k個の最小・最大要素の選択」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



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

辞書ショートカット

すべての辞書の索引

「k個の最小・最大要素の選択」の関連用語

k個の最小・最大要素の選択のお隣キーワード
検索ランキング

   

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



k個の最小・最大要素の選択のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2024 GRAS Group, Inc.RSS