京都大学 情報学研究科 知能情報学専攻 2022年8月実施 情報学基礎 F2-1
Author
Isidore , 祭音Myyura
Description
設問1
自然数 n n n の関数 f ( n ) f(n) f ( n ) に対するビッグオー記法 f ( n ) = O ( g ( n ) ) f(n)=O(g(n)) f ( n ) = O ( g ( n )) を考える。
ここで、g ( n ) g(n) g ( n ) は自然数 n n n の関数である。以下に示す各 f ( n ) f(n) f ( n ) について、最も簡潔な形を持つ g ( n ) g(n) g ( n ) を答えよ。
(1) f ( n ) = 5 log n + 2 ( log n ) 3 + 3 n 3 f(n) = 5 \log n + 2(\log n)^3 + 3n^3 f ( n ) = 5 log n + 2 ( log n ) 3 + 3 n 3
(2) f ( n ) = n log n + 10 n 2 + 100 n f(n) = n\log n + 10n^2 + 100n f ( n ) = n log n + 10 n 2 + 100 n
(3) f ( n ) = 4 n ! + 2 n n + 8 n log n f(n) = 4n! + 2n^n + 8n \log n f ( n ) = 4 n ! + 2 n n + 8 n log n
設問2
スタックマシンを用いて計算式 ( ( 5 − 3 ) ∗ 2 ) + ( ( 7 − 4 ) / ( 2 + 1 ) ) ((5-3)*2) + ((7-4)/(2+1)) (( 5 − 3 ) ∗ 2 ) + (( 7 − 4 ) / ( 2 + 1 )) の値を求めることを考える。
ここで、「+」は加算、「-」は減算、「*」は乗算、「/」は除算を表す。
このとき、以下の問いに答えよ。
(1) 上記の計算式に対応する構文木を図示せよ。
(2) 上記の計算式に対応する逆ポーランド記法を示せ。
(3) 構文木を走査することで逆ポーランド記法出力する疑似コードを示せ。但し、再起呼び出しを用いるとこ。
(4) 上記の計算式の値を得るまでのスタックの変化を図示せよ。
設問3
互いに異なる n n n 個の正の整数の集合 A = { a 1 , a 2 , … , a n } A = \{a_1, a_2, \ldots, a_n\} A = { a 1 , a 2 , … , a n } と非負の整数 s s s を考える。
正の整数 i ( ≤ n ) i \ (\leq n) i ( ≤ n ) および非負の整数 j ( ≤ s ) j \ (\leq s) j ( ≤ s ) について、d ( i , j ) d(i,j) d ( i , j ) は、A i = { a 1 , a 2 , … , a i } A_i = \{a_1, a_2, \ldots, a_i\} A i = { a 1 , a 2 , … , a i } の部分集合 A i ′ A'_i A i ′ であって、∑ a ∈ A i ′ a = j \sum_{a \in A'_i} a = j ∑ a ∈ A i ′ a = j を満たすものの数を表すものとする。
(1) A = { 10 , 3 , 6 , 13 , 11 , 4 } A = \{10, 3, 6, 13, 11, 4\} A = { 10 , 3 , 6 , 13 , 11 , 4 } とする。d ( 4 , 16 ) d(4,16) d ( 4 , 16 ) と d ( 6 , 20 ) d(6,20) d ( 6 , 20 ) 、また、それぞれに対して等式を満たす部分集合を全て求めよ。
(2) d ( i , j ) d(i,j) d ( i , j ) を、{ d ( i − 1 , k ) } 0 ≤ k ≤ j \{d(i-1,k)\}_{0 \leq k \leq j} { d ( i − 1 , k ) } 0 ≤ k ≤ j のうちのいくつかを用いて表せ。但し、便宜上 d ( 0 , 0 ) = 1 d(0, 0)=1 d ( 0 , 0 ) = 1 , d ( 0 , 1 ) = 0 d(0,1)=0 d ( 0 , 1 ) = 0 , d ( 0 , 2 ) = 0 d(0,2)=0 d ( 0 , 2 ) = 0 , … \ldots … , d ( 0 , j ) = 0 d(0,j)=0 d ( 0 , j ) = 0 とする。
Kai
設問1
(1) g ( n ) = n 3 g(n) = n^3 g ( n ) = n 3
(2) g ( n ) = n 2 g(n) = n^2 g ( n ) = n 2
(3) g ( n ) = n n g(n) = n^n g ( n ) = n n
設問2
(1)
(2)
5 3 − 2 ∗ 7 4 − 2 1 + / + 5\;3-2*7\;4-2\;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 A 4 ′ A'_4 A 4 ′ of A 4 = { 10 , 3 , 6 , 13 } A_4=\{10, 3, 6, 13\} A 4 = { 10 , 3 , 6 , 13 } that satisfy ∑ a ∈ A 4 ′ a = 16 \sum_{a \in A'_4} a = 16 ∑ a ∈ A 4 ′ a = 16 .
Therefore, the answer is
d ( 4 , 16 ) = 2 , A 4 ′ = { 10 , 6 } , { 3 , 13 } d(4,16) = 2, A'_4=\{10, 6\}, \{3, 13\} d ( 4 , 16 ) = 2 , A 4 ′ = { 10 , 6 } , { 3 , 13 }
Similarly, we have
d ( 6 , 20 ) = 3 , A 6 ′ = { 10 , 6 , 4 } , { 3 , 13 , 4 } , { 3 , 6 , 11 } d(6, 20) = 3, A'_6=\{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 ( i − 1 , j ) + d ( i − 1 , j − a i ) ( a i ≤ j ) d ( i − 1 , j ) ( a i > 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} d ( i , j ) = { d ( i − 1 , j ) + d ( i − 1 , j − a i ) d ( i − 1 , j ) ( a i ≤ j ) ( a i > j )