跳到主要内容

京都大学 情報学研究科 知能情報学専攻 2021年8月実施 情報学基礎 F2-1

Author

Isidore, 祭音Myyura

Description

設問1

整数の集合 AA の要素の小さい方から kk 番目 (k1)(k \ge 1) の要素の値を返す関数 SelectKth(A,k)\text{SelectKth}(A,k) を考える。例えば、A={5,1,7}A = \{5,1,7\} および k=2k = 2 の場合、SelectKth(A,k)\text{SelectKth}(A,k)55 出力する。 今、p:=PivotSelect(A)p:= \text{PivotSelect}(A)AA に含まれる要素のうち一つをランダムに返す関数とし、(L,R):=Partition(A,p)(L,R):= \text{Partition}(A,p) は集合 AApp 以下の値で構成される集合 LLpp より大きい値で構成される集合 RR に分割する関数とする。 例えば、A={5,1,7}A = \{5,1,7\} および p=5p = 5 の場合、(L,R):=Partition(A,p)(L,R):= \text{Partition}(A,p)LL および RR はそれぞれ、L={5,1}L = \{5,1\}R={7}R = \{7\} となる。また、Remove(A,p)\text{Remove}(A,p) は集合 AA から要素 pp を削除する関数とする。 例えば、A={5,1,7}A = \{5,1,7\} および p=7p = 7 場合、Remove(A,p)\text{Remove}(A,p)AA{5,1}\{5,1\} にする。 X|X| は集合 XX の要素数とし、AA のすべての要素は異なるとする。

(1) Algorithm. 11 は SelectKth 関数の疑似コードである。Algorithm .11 の (a)-(e) を埋めよ。

(2) A=n|A| = n の場合の Partition(A,p)\text{Partition}(A,p)Remove(L,p)\text{Remove}(L,p)PivotSelect(A)\text{PivotSelect}(A) の要素の比較回数をそれぞれ O(n)O(n)O(n)O(n)、および O(1)O(1) とする。Algorithm. 11 の平均比較回数をオーダー表記で答えよ。

設問2

44 つのリストを用いた外部ハッシュ法について以下の問いに答えよ。キーは 0,1,20,1,2 のいずれかの整数が 44 つ並んだパターン s4s3s2s1,si{0,1,2}s_4s_3s_2s_1,s_i \in \{0,1,2\} で与えられる。また以下において、 mod \text{ mod } は割り算の余りを出力する演算子を示す。

(1) 表 11 は、ハッシュ関数 (i=143i1si) mod 4\big(\sum_{i = 1}^4 3^{i - 1}s_i\big) \text{ mod } 4 を用して、キー 0100,12110100,1211 を順に挿入した後のデータ構造を模式的に表している。この状態に追加で 0010,2101,1222,11110010,2101,1222,1111 を順に挿入した後のデータ構造を表 11 に倣って図示せよ。

(2) kk 個の要素で構成されるリストに、新たに要素を 11 つ追加するのに要するコストを ck(cは正の実定数)ck(c\text{は正の実定数}) とする。表 22 に示す確率分布に従って独立に生起する複数個のキーをハッシュ法を用して順に挿入していくとき、挿入コストの期待値が最小となるキーとハッシュ値の対応付けをその理由とともに示せ。対応付けは表 22 における (a),(b),(c),(d) を埋める形で解答せよ。

(3) (2) で求めた対応付けを (i=14aisi+a5s1s2+a6s3s4) mod 4\big(\sum{i = 1}^4 a_is_i + a_5s_1s_2 + a_6s_3s_4\big)\text{ mod } 4 なるハッシュ関数で実現するときの a1,a2,a3,a4,a5,a6a_1,a_2,a_3,a_4,a_5,a_6 を導出せよ。

表1
インデックスリスト
0
10100 \rightarrow 1211
2
3
表2
キー生起確率ハッシュ値
01000.10(a)
02100.20(b)
10100.150
11010.151
11110.25(c)
21010.15(d)

Kai

設問1

(1)

a. L=k|L| = k

b. L>k|L| > k

c. kk

d. L<k|L| < k

e. kLk - |L|

(2)

Note that Algorithm 1 is so called "Quick Select" algorithm. Let T(n)T(n) denote the expected time complexity of Quick-Select, we have

T(n)=O(n)+T(n2)=O(n)+O(n2)+T(n4)=O(n)+O(n2)+O(n4)++O(1)n(1+12+14++(12)logn)=n1112=2n\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}

Therefore, T(n)=O(n)T(n) = O(n)

設問2

(1)

indexlist
02101 -> 1111
10100 -> 1211 -> 1222
2
30010

(2)

  • (a): 0
  • (b): 2
  • (cc): 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

a1=1a2=2a3=0a4=2a5=0a6=2\begin{aligned} a_1 &= 1 \\ a_2 &= 2 \\ a_3 &= 0 \\ a_4 &= -2 \\ a_5 &= 0 \\ a_6 &= 2 \\ \end{aligned}