名古屋大学 情報学研究科 情報システム学専攻 2021年8月実施 専門 問3
Author
祭音Myyura
Description
自然数の有限列のうち、含まれている要素が重複しないものを考える。
そのような列
(1)
-
(a) このような
に対して図 1 の手順の 1. から 5. を順に実行したときに求められる手順の中の列 、自然数 、列 を示せ。なお、列 の要素の並び順についてはアルゴリズムでは言及していないので、解答では並び順を問わない。 -
(b) このような
に対して select( , ) を実行したときの出力を答えよ。
(2)
(3)
(4) 以下の整列アルゴリズムを考える。
(a) バブルソート (b) マージソート (c) ヒープソート
(d) クイックソート (e) 挿入ソート (f) バケットソート
(a)〜(f) のうち、入力として与えられる列の要素数を
- 最大時間計算量が
である。 - 図 1 のアルゴリズムを利用することで最大時間計算量を
に改善できる。
再帰的アルゴリズム select
入力 重複する要素を持たない自然数の有限列
出力 列
手順
を とする。 - 列
を先頭から順に要素5つずつの列 に分ける。つまり、列 から列 を順に連結すると列 に一致する。さらに、列 それぞれに含まれる要素数は5であり、 が の倍数ではないときに列 の要素数は5に満たない。 を列 それぞれの中央値からなる列とする。なお、列 の要素の並び順は先頭から順に列 の中央値が並んでいるとする。 を列 の中央値、すなわち、select( , ) の返り値とする。 - 列
を以下を満たす列とする。
のときは を返して終了し、そうでないときは次に進む。 のときは select( , ) の返り値を返して終了し、そうでないときは次に進む。 - select(
, ) の返り値を返して終了する。
図 1: 番目に小さい要素を求めるアルゴリズム
Kai
図1の再帰的アルゴリズム select は「中央値の中央値 (median of medians)」と呼ばれ、クイックセレクトに基づく選択アルゴリズムである。
(1)
(a)
S = [11, 12, 16, 33, 2, 18, 39, 15, 21, 7, 37, 29, 40, 6, 25, 27, 14, 4, 35, 28, 22, 20, 17, 3, 1]
M = [12, 18, 29, 27, 17]
x = 18
A = [11, 12, 16, 2, 15, 7, 6, 14, 4, 17, 3, 1]
(b)
15
(2)
また、各小配列の中には、必ず各中央値以下である要素が
同様に、もう半数の小配列には、
従って、列
(3)
(
select(
であり、
であるので、
(4)
(d) クイックソート