跳到主要内容

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

Author

Isidore, 祭音Myyura

Description

設問1

自然数 nn の関数 f(n)f(n) に対するビッグオー記法 f(n)=O(g(n))f(n)=O(g(n)) を考える。 ここで、g(n)g(n) は自然数 nn の関数である。以下に示す各 f(n)f(n) について、最も簡潔な形を持つ g(n)g(n) を答えよ。

(1) f(n)=5logn+2(logn)3+3n3f(n) = 5 \log n + 2(\log n)^3 + 3n^3

(2) f(n)=nlogn+10n2+100nf(n) = n\log n + 10n^2 + 100n

(3) f(n)=4n!+2nn+8nlognf(n) = 4n! + 2n^n + 8n \log n

設問2

スタックマシンを用いて計算式 ((53)2)+((74)/(2+1))((5-3)*2) + ((7-4)/(2+1)) の値を求めることを考える。 ここで、「+」は加算、「-」は減算、「*」は乗算、「/」は除算を表す。 このとき、以下の問いに答えよ。

(1) 上記の計算式に対応する構文木を図示せよ。

(2) 上記の計算式に対応する逆ポーランド記法を示せ。

(3) 構文木を走査することで逆ポーランド記法出力する疑似コードを示せ。但し、再起呼び出しを用いるとこ。

(4) 上記の計算式の値を得るまでのスタックの変化を図示せよ。

設問3

互いに異なる nn 個の正の整数の集合 A={a1,a2,,an}A = \{a_1, a_2, \ldots, a_n\} と非負の整数 ss を考える。 正の整数 i (n)i \ (\leq n) および非負の整数 j (s)j \ (\leq s) について、d(i,j)d(i,j) は、Ai={a1,a2,,ai}A_i = \{a_1, a_2, \ldots, a_i\} の部分集合 AiA'_i であって、aAia=j\sum_{a \in A'_i} a = j を満たすものの数を表すものとする。

(1) A={10,3,6,13,11,4}A = \{10, 3, 6, 13, 11, 4\} とする。d(4,16)d(4,16)d(6,20)d(6,20)、また、それぞれに対して等式を満たす部分集合を全て求めよ。

(2) d(i,j)d(i,j) を、{d(i1,k)}0kj\{d(i-1,k)\}_{0 \leq k \leq j} のうちのいくつかを用いて表せ。但し、便宜上 d(0,0)=1d(0, 0)=1, d(0,1)=0d(0,1)=0, d(0,2)=0d(0,2)=0, \ldots, d(0,j)=0d(0,j)=0 とする。

Kai

設問1

  • (1) g(n)=n3g(n) = n^3
  • (2) g(n)=n2g(n) = n^2
  • (3) g(n)=nng(n) = n^n

設問2

(1)

(2)

5  327  42  1+/+5\;3-2*7\;4-2\;1+/+

(3)

The answer is a Postorder Traversal for a binary tree:

outputRPN(node):
if node->left_child is not Null then:
outputRPN(node->left_child)
if node->right_child is not Null then:
outputRPN(node->right_child)
output(node->value)

(4)

5
5 3
2
2 2
4
4 7
4 7 4
4 3
4 3 2
4 3 2 1
4 3 3
4 1
5

設問3

(1)

By definition we need to find subsets A4A'_4 of A4={10,3,6,13}A_4=\{10, 3, 6, 13\} that satisfy aA4a=16\sum_{a \in A'_4} a = 16. Therefore, the answer is

d(4,16)=2,A4={10,6},{3,13}d(4,16) = 2, A'_4=\{10, 6\}, \{3, 13\}

Similarly, we have

d(6,20)=3,A6={10,6,4},{3,13,4},{3,6,11}d(6, 20) = 3, A'_6=\{10, 6, 4\}, \{3, 13, 4\}, \{3, 6, 11\}

(2)

d(i,j)={d(i1,j)+d(i1,jai)(aij)d(i1,j)(ai>j)d(i,j) = \begin{cases} d(i-1,j) + d(i-1,j-a_{i})&(a_{i}\leq j)\\ d(i-1,j)&(a_{i}>j) \end{cases}