跳到主要内容

京都大学 情報学研究科 知能情報学専攻 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)

题目描述

  1. SelectKth(A,k) 返回元素互异的整数集合 AA 中第 kk 小值。PivotSelect(A)AA 随机选一个枢轴 ppPartition(A,p)AA 分成由不大于 pp 的元素组成的 LL 与大于 pp 的元素组成的 RRRemove(A,p) 删除 ppX|X| 表示集合大小。

    SelectKth 伪代码
    1. 填写图中 Algorithm 1 的空栏 (a)–(e)。
    2. A=n|A|=n,假设 PartitionRemovePivotSelect 的比较次数分别为 O(n),O(n),O(1)O(n),O(n),O(1),用大 OO 给出 Algorithm 1 的平均比较次数。
  2. 采用 4 条链的分离链接哈希,键为 s4s3s2s1s_4s_3s_2s_1,其中每个 si{0,1,2}s_i\in\{0,1,2\}

    1. 哈希函数为 (i=143i1si)mod4\left(\sum_{i=1}^4 3^{i-1}s_i\right)\bmod4。初态如下,继续依次插入 0010,2101,1222,1111,画出最终结构。

      索引链表
      0
      10100 → 1211
      2
      3
    2. 向已有 kk 个元素的链表追加一个元素代价为 ckckc>0c>0)。按下表概率独立产生并持续插入键,填写 (a)–(d) 的哈希值,使期望插入代价最小,并说明理由。

      概率哈希值
      01000.10(a)
      02100.20(b)
      10100.150
      11010.151
      11110.25(c)
      21010.15(d)
    3. (i=14aisi+a5s1s2+a6s3s4)mod4\left(\sum_{i=1}^4a_is_i+a_5s_1s_2+a_6s_3s_4\right)\bmod4

      实现第 2 小问映射,求 a1,,a6a_1,\ldots,a_6

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 TnT_n be the maximum expected number of comparisons over all target ranks for an input of size nn, and let cncn bound the comparisons outside the recursive call. If the uniformly random pivot has rank jj, the recursive subproblem has size

s(j)={nj,j<k,0,j=k,j1,j>k.s(j)= \begin{cases} n-j,&jk. \end{cases}

For every kk,

1nj=1ns(j)3n4.\frac1n\sum_{j=1}^n s(j)\leq\frac{3n}{4}.

Thus, by induction with C4cC\geq4c,

Tncn+1nj=1nTs(j)cn+C3n4Cn.T_n\leq cn+\frac1n\sum_{j=1}^n T_{s(j)} \leq cn+C\frac{3n}{4}\leq Cn.

Therefore, Tn=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

Let qhq_h be the probability that a generated key is assigned to list hh. After tt insertions, the expected cost of the next insertion is cth=03qh2ct\sum_{h=0}^3q_h^2. The above assignment gives

(q0,q1,q2,q3)=(0.25,0.30,0.20,0.25),h=03qh2=0.255,(q_0,q_1,q_2,q_3)=(0.25,0.30,0.20,0.25), \qquad \sum_{h=0}^3q_h^2=0.255,

which is the minimum over the possible assignments of (a)--(d).

(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}