京都大学 情報学研究科 知能情報学専攻 2021年8月実施 情報学基礎 F2-1
Author
Isidore , 祭音Myyura
Description
設問1
整数の集合 A A A の要素の小さい方から k k k 番目 ( k ≥ 1 ) (k \ge 1) ( k ≥ 1 ) の要素の値を返す関数 SelectKth ( A , k ) \text{SelectKth}(A,k) SelectKth ( A , k ) を考える。例えば、A = { 5 , 1 , 7 } A = \{5,1,7\} A = { 5 , 1 , 7 } および k = 2 k = 2 k = 2 の場合、SelectKth ( A , k ) \text{SelectKth}(A,k) SelectKth ( A , k ) は 5 5 5 出力する。
今、p : = PivotSelect ( A ) p:= \text{PivotSelect}(A) p := PivotSelect ( A ) は A A A に含まれる要素のうち一つをランダムに返す関数とし、( L , R ) : = Partition ( A , p ) (L,R):= \text{Partition}(A,p) ( L , R ) := Partition ( A , p ) は集合 A A A を p p p 以下の値で構成される集合 L L L と p p p より大きい値で構成される集合 R R R に分割する関数とする。
例えば、A = { 5 , 1 , 7 } A = \{5,1,7\} A = { 5 , 1 , 7 } および p = 5 p = 5 p = 5 の場合、( L , R ) : = Partition ( A , p ) (L,R):= \text{Partition}(A,p) ( L , R ) := Partition ( A , p ) の L L L および R R R はそれぞれ、L = { 5 , 1 } L = \{5,1\} L = { 5 , 1 } 、R = { 7 } R = \{7\} R = { 7 } となる。また、Remove ( A , p ) \text{Remove}(A,p) Remove ( A , p ) は集合 A A A から要素 p p p を削除する関数とする。
例えば、A = { 5 , 1 , 7 } A = \{5,1,7\} A = { 5 , 1 , 7 } および p = 7 p = 7 p = 7 場合、Remove ( A , p ) \text{Remove}(A,p) Remove ( A , p ) は A A A を { 5 , 1 } \{5,1\} { 5 , 1 } にする。
∣ X ∣ |X| ∣ X ∣ は集合 X X X の要素数とし、A A A のすべての要素は異なるとする。
(1) Algorithm. 1 1 1 は SelectKth 関数の疑似コードである。Algorithm .1 1 1 の (a)-(e) を埋めよ。
(2) ∣ A ∣ = n |A| = n ∣ A ∣ = n の場合の Partition ( A , p ) \text{Partition}(A,p) Partition ( A , p ) 、Remove ( L , p ) \text{Remove}(L,p) Remove ( L , p ) 、PivotSelect ( A ) \text{PivotSelect}(A) PivotSelect ( A ) の要素の比較回数をそれぞれ O ( n ) O(n) O ( n ) 、O ( n ) O(n) O ( n ) 、および O ( 1 ) O(1) O ( 1 ) とする。Algorithm. 1 1 1 の平均比較回数をオーダー表記で答えよ。
設問2
4 4 4 つのリストを用いた外部ハッシュ法について以下の問いに答えよ。キーは 0 , 1 , 2 0,1,2 0 , 1 , 2 のいずれかの整数が 4 4 4 つ並んだパターン s 4 s 3 s 2 s 1 , s i ∈ { 0 , 1 , 2 } s_4s_3s_2s_1,s_i \in \{0,1,2\} s 4 s 3 s 2 s 1 , s i ∈ { 0 , 1 , 2 } で与えられる。また以下において、 mod \text{ mod } mod は割り算の余りを出力する演算子を示す。
(1) 表 1 1 1 は、ハッシュ関数 ( ∑ i = 1 4 3 i − 1 s i ) mod 4 \big(\sum_{i = 1}^4 3^{i - 1}s_i\big) \text{ mod } 4 ( ∑ i = 1 4 3 i − 1 s i ) mod 4 を用して、キー 0100 , 1211 0100,1211 0100 , 1211 を順に挿入した後のデータ構造を模式的に表している。この状態に追加で 0010 , 2101 , 1222 , 1111 0010,2101,1222,1111 0010 , 2101 , 1222 , 1111 を順に挿入した後のデータ構造を表 1 1 1 に倣って図示せよ。
(2) k k k 個の要素で構成されるリストに、新たに要素を 1 1 1 つ追加するのに要するコストを c k ( c は正の実定数 ) ck(c\text{は正の実定数}) c k ( c は正の実定数 ) とする。表 2 2 2 に示す確率分布に従って独立に生起する複数個のキーをハッシュ法を用して順に挿入していくとき、挿入コストの期待値が最小となるキーとハッシュ値の対応付けをその理由とともに示せ。対応付けは表 2 2 2 における (a),(b),(c),(d) を埋める形で解答せよ。
(3) (2) で求めた対応付けを ( ∑ i = 1 4 a i s i + a 5 s 1 s 2 + a 6 s 3 s 4 ) mod 4 \big(\sum{i = 1}^4 a_is_i + a_5s_1s_2 + a_6s_3s_4\big)\text{ mod } 4 ( ∑ i = 1 4 a i s i + a 5 s 1 s 2 + a 6 s 3 s 4 ) mod 4 なるハッシュ関数で実現するときの a 1 , a 2 , a 3 , a 4 , a 5 , a 6 a_1,a_2,a_3,a_4,a_5,a_6 a 1 , a 2 , a 3 , a 4 , a 5 , a 6 を導出せよ。
インデックス リスト 0 1 0100 → \rightarrow → 1211 2 3
キー 生起確率 ハッシュ値 0100 0.10 (a) 0210 0.20 (b) 1010 0.15 0 1101 0.15 1 1111 0.25 (c) 2101 0.15 (d)
Kai
設問1
(1)
a. ∣ L ∣ = k |L| = k ∣ L ∣ = k
b. ∣ L ∣ > k |L| > k ∣ L ∣ > k
c. k k k
d. ∣ L ∣ < k |L| < k ∣ L ∣ < k
e. k − ∣ L ∣ k - |L| k − ∣ L ∣
(2)
Note that Algorithm 1 is so called "Quick Select" algorithm.
Let T ( n ) T(n) T ( n ) denote the expected time complexity of Quick-Select, we have
T ( n ) = O ( n ) + T ( n 2 ) = O ( n ) + O ( n 2 ) + T ( n 4 ) = O ( n ) + O ( n 2 ) + O ( n 4 ) + ⋯ + O ( 1 ) ∼ n ( 1 + 1 2 + 1 4 + ⋯ + ( 1 2 ) log n ) = n ⋅ 1 1 − 1 2 = 2 n \begin{aligned}
T(n) &= O(n) + T(\frac{n}{2}) \\
&= O(n) + O(\frac{n}{2}) + T(\frac{n}{4}) \\
&= O(n) + O(\frac{n}{2}) + O(\frac{n}{4}) + \cdots + O(1) \\
&\sim n (1 + \frac{1}{2} + \frac{1}{4} + \cdots + \left(\frac{1}{2} \right)^{\log n}) \\
&= n \cdot \frac{1}{1-\frac{1}{2}} = 2n
\end{aligned} T ( n ) = O ( n ) + T ( 2 n ) = O ( n ) + O ( 2 n ) + T ( 4 n ) = O ( n ) + O ( 2 n ) + O ( 4 n ) + ⋯ + O ( 1 ) ∼ n ( 1 + 2 1 + 4 1 + ⋯ + ( 2 1 ) l o g n ) = n ⋅ 1 − 2 1 1 = 2 n
Therefore, T ( n ) = O ( n ) T(n) = O(n) T ( n ) = O ( n )
設問2
(1)
index list 0 2101 -> 1111 1 0100 -> 1211 -> 1222 2 3 0010
(2)
(a): 0
(b): 2
(c c c ): 3
(d): 1
Reason: to minimize the cost is to equalize the probability to insert each list
(3)
Construct a system of six linear equations in six variables from the table given in (2), and we have
a 1 = 1 a 2 = 2 a 3 = 0 a 4 = − 2 a 5 = 0 a 6 = 2 \begin{aligned}
a_1 &= 1 \\
a_2 &= 2 \\
a_3 &= 0 \\
a_4 &= -2 \\
a_5 &= 0 \\
a_6 &= 2 \\
\end{aligned} a 1 a 2 a 3 a 4 a 5 a 6 = 1 = 2 = 0 = − 2 = 0 = 2