小配列への分割方法とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 小配列への分割方法の意味・解説 

小配列への分割方法

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

中央値の中央値」の記事における「小配列への分割方法」の解説

先述通り本項説明した中央値の中央値アルゴリズムでは、配列全体を5要素ずつの小配列分割した。5要素ずつに分割した理由については以下のように説明できる奇数個の要素から成る配列分割するのが高速かつ簡便なため。偶数個の要素から成る配列分割するともできるが、その場合、真ん中要素2つになってしまい、中央値はその平均をとらなければならないので、唯一の中央値簡単に選択できる奇数個に比べて遅くなる中央値の中央値アルゴリズムが動くのは1つの小配列には5要素以上が必要なため。もし3要素ずつしかない場合、小配列中央値抽出した配列要素数は 1 3 n {\displaystyle {\frac {1}{3}}n} 個になる。また、各小配列中に存在するピボット値以下・以上の値はそれぞれ2つずつとなるので、次の探索対象配列要素数が最悪でも 1 3 n × 1 2 × 2 = 1 3 n {\displaystyle {\frac {1}{3}}n\times {\frac {1}{2}}\times 2={\frac {1}{3}}n} 個減少するので、残るのは ( 1 − 1 3 n ) = 2 3 n {\displaystyle \left(1-{\frac {1}{3}}n\right)={\frac {2}{3}}n} 個となる。ゆえに、結局前者後者合わせて n {\displaystyle n} 個の要素に対して選択アルゴリズムを必要としてしまうので、要素数が全く減らないことになる。 「5」は、中央値の中央値アルゴリズムが動くもののなかで最小値であるため。もし7個ずつ以上、 2 m + 1 ( m = 3 , 4 , 5... ) {\displaystyle 2m+1(m=3,4,5...)} 個ずつの小配列分割した場合、まず、小配列中央値抽出した配列要素数は 1 2 m + 1 n {\displaystyle {\frac {1}{2m+1}}n} 個になる。また、各小配列中に存在するピボット値以下・以上の値はそれぞれ m + 1 {\displaystyle m+1} 個ずつとなるので、次の探索対象配列要素数が 1 2 m + 1 n × 1 2 × ( m + 1 ) = m + 1 4 m + 2 n {\displaystyle {\frac {1}{2m+1}}n\times {\frac {1}{2}}\times (m+1)={\frac {m+1}{4m+2}}n} 個減少するので、残るのは ( 1 − m + 1 4 m + 2 ) n = 3 m + 1 4 m + 2 n {\displaystyle \left(1-{\frac {m+1}{4m+2}}\right)n={\frac {3m+1}{4m+2}}n} 個になる。ゆえに、結局前者後者合わせて 3 m + 3 4 m + 2 n {\displaystyle {\frac {3m+3}{4m+2}}n} 個の要素に対して選択アルゴリズムを必要とする。つまり、ここでmを大きくして小配列要素数を増やしたとしても、結局次の探索対象要素数は 3 4 n {\displaystyle {\frac {3}{4}}n} 個、つまり元の要素数の75%にしかならない一方で配列の中の要素数が増えていくと、分割理にも小配列の中での中央値探すのにも時間がかかるようになってしまい、元の配列要素数が充分に大きくなる全体的な性能向上には寄与しなくなってしまう。 別の分割方法として、要素数が一定の配列ではなく一定数の小配列分割する、つまり、要素数が5個ずつの小配列ではなく、5個の小配列分割することを考える。しかしその場合は、明らかに要素数は減少させることはできない。なぜなら、要素1 5 n {\displaystyle {\frac {1}{5}}n} 個ずつの小配列5個の中で、それぞれ中央値計算せねばならないが、結局次の探索対象要素数は 7 10 n {\displaystyle {\frac {7}{10}}n} 個にしかならないからである。つまり、3要素ずつに分割する時と同様に個々中央値計算する配列要素数は元の配列より少なくて済むが、結局全体的な長さ短くならず、むしろ長くなってしまう。要素数が n {\displaystyle {\sqrt {n}}} 個の小配列分割しても、小配列の数は n {\displaystyle {\sqrt {n}}} 個になり、同様である。

※この「小配列への分割方法」の解説は、「中央値の中央値」の解説の一部です。
「小配列への分割方法」を含む「中央値の中央値」の記事については、「中央値の中央値」の概要を参照ください。

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



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

辞書ショートカット

すべての辞書の索引

「小配列への分割方法」の関連用語

小配列への分割方法のお隣キーワード
検索ランキング

   

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



小配列への分割方法のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS