データ構造とアルゴリズム

GPUのような並列処理の装置で並べ替えを行うときに、バイトニックソートのような、比較・交換の手順が決まったソート(ソーティングネットワーク)が使われることがある。その理由として正しいものはどれか。

  1. A比較の回数が O(n) で、比較によるソートの下限 O(n log n) より少ないから
  2. B安定なソートで、同じキーの要素の順番が保たれるから
  3. Cどの要素の組を比較・交換するかがデータの値によらず前もって決まっているので、多数のスレッドが同じ手順で同時に処理でき、処理の分岐もそろうから
答えと解説を見る

正解:C. どの要素の組を比較・交換するかがデータの値によらず前もって決まっているので、多数のスレッドが同じ手順で同時に処理でき、処理の分岐もそろうから

バイトニックソートでは、各段で比べる要素の組が添字だけで決まり、1つの段の中の比較・交換はすべて同時に行えます。n = 2ᵏ 個のデータは k(k+1)/2 段で並び、16個なら10段で合計80回、1,024個なら55段で合計28,160回の比較を行います。比較の総数は O(n log² n) とクイックソートなどより多いものの、データによって手順が変わらないので、GPUのように多数のスレッドが同じ命令を実行する装置では分岐の食い違いが起きず、効率よく動きます。比較だけで並べ替える方法は O(n log n) より少ない比較では済まず、バイトニックソートは一般に安定でもありません。

  • A. 比較によるソートは O(n log n) より少ない比較では済まず、バイトニックソートの比較の総数は O(n log² n) です。
  • B. バイトニックソートは離れた要素も交換するので、一般に安定ではありません。
  • C. 正しい。手順がデータによらないので、多数のスレッドで同時に、分岐をそろえて処理できます。
この分野を解く 分野ページへ

関連する計算ツール

データ構造とアルゴリズムの参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

データ構造とアルゴリズムのほかの問題

  1. 要素数 n の配列で、異なる2つの要素の組をすべて1回ずつ比べる処理(i 番目の要素を、それより後ろにあるすべての要素と比べることを、i を1つずつ進めて繰り返す二重ループ)の計算量はどれか。
  2. 計算量が O(n²) のプログラムで、データ数が1,000のときに処理時間が0.5秒だった。データ数を4,000にすると、処理時間はおよそ何秒になるか。
  3. 異なる100個の値が入った配列から、先頭から順に1つずつ比べる線形探索で目的の値を探す。目的の値は必ず配列の中にあり、どの位置にある確率も等しいとき、比較の回数の平均はいくらか。
  4. 配列と比べたときの連結リスト(各要素が次の要素の位置を指すポインタを持つリスト)の特徴として正しいものはどれか。
  5. 空のスタックに対して、push 1、push 2、pop、push 3、push 4、pop、pop の順に操作した。pop で取り出された値を順に並べたものはどれか。