東北大学 工学研究科 電気・情報系 2015年8月実施 専門科目 問題5 計算機2
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
日本語版
Fig. 5(a) および Fig. 5(b) で定義した,非負整数 n n n に対する再帰関数 f ( n ) f(n) f ( n ) と g ( n ) g(n) g ( n ) について以下の問に答えよ。ただし,式 “if e 1 = e 2 e_1=e_2 e 1 = e 2 then e 3 e_3 e 3 else e 4 e_4 e 4 ” の値は,e 1 e_1 e 1 の値が e 2 e_2 e 2 の値と等しければ,e 3 e_3 e 3 の値に,そうでなければ e 4 e_4 e 4 の値に等しい。演算子 + , − , ∗ +,-,* + , − , ∗ はそれぞれ整数加算,整数減算,行列乗算を表す。以下において,A n A^n A n は正方行列 A A A の n n n 乗を表す。ただし,A 0 A^0 A 0 は A A A と同じサイズの単位行列と定義する。
(1) f ( 2 ) , f ( 3 ) , g ( 1 ) , g ( 2 ) f(2),f(3),g(1),g(2) f ( 2 ) , f ( 3 ) , g ( 1 ) , g ( 2 ) を計算せよ。計算の過程も示すこと。
(2) 任意の非負整数 n n n について g ( n ) = ( 1 1 1 0 ) n ∗ ( 1 1 ) g(n)=\begin{pmatrix}1&1\\1&0\end{pmatrix}^n*\binom11 g ( n ) = ( 1 1 1 0 ) n ∗ ( 1 1 ) となることを帰納法を用いて証明せよ。
(3) 任意の非負整数 n n n について g ( n ) = ( f ( n + 1 ) f ( n ) ) g(n)=\binom{f(n+1)}{f(n)} g ( n ) = ( f ( n ) f ( n + 1 ) ) となることを帰納法を用いて証明せよ。
(4) Fig. 5(c) に示す構文に従い,任意の非負整数 n n n について以下の性質を満たす再帰関数 h ( n ) h(n) h ( n ) の定義を書け。
g ( n ) g(n) g ( n ) の値と h ( n ) ∗ ( 1 1 ) h(n)*\binom11 h ( n ) ∗ ( 1 1 ) の値が等しい。
h ( n ) h(n) h ( n ) の値の計算に必要な再帰呼び出し回数が O ( log n ) O(\log n) O ( log n ) 。
ただし,整数 n n n と m m m に対し,n n n を m m m で割ったときの商を求める関数 div ( n , m ) \operatorname{div}(n,m) div ( n , m ) とその剰余を求める関数 mod ( n , m ) \operatorname{mod}(n,m) mod ( n , m ) を用いてよい。また,任意の正方行列 A A A と非負整数 n n n に対し A 2 n + 1 = A ( A n ) 2 A^{2n+1}=A(A^n)^2 A 2 n + 1 = A ( A n ) 2 および A 2 n = ( A n ) 2 A^{2n}=(A^n)^2 A 2 n = ( A n ) 2 となることと,A 2 A^2 A 2 を求める関数 square ( A ) \operatorname{square}(A) square ( A ) も用いてよい。
Fig. 5(a), Fig. 5(b)
f ( x ) = { 1 x = 0 1 x = 1 f ( x − 1 ) + f ( x − 2 ) otherwise , g ( x ) = { ( 1 1 ) x = 0 ( 1 1 1 0 ) ∗ g ( x − 1 ) otherwise . f(x)=\begin{cases}1&x=0\\1&x=1\\f(x-1)+f(x-2)&\text{otherwise},\end{cases}\qquad
g(x)=\begin{cases}\binom11&x=0\\\begin{pmatrix}1&1\\1&0\end{pmatrix}*g(x-1)&\text{otherwise}.
\end{cases} f ( x ) = ⎩ ⎨ ⎧ 1 1 f ( x − 1 ) + f ( x − 2 ) x = 0 x = 1 otherwise , g ( x ) = ⎩ ⎨ ⎧ ( 1 1 ) ( 1 1 1 0 ) ∗ g ( x − 1 ) x = 0 otherwise .
Fig. 5(c)
関数定義 d ::= f(x) = e 式 e ::= x | n | A | e1 + e2 | e1 - e2 | div(e1,e2) | mod(e1,e2) | e1 * e2 | square(e) | if e1 = e2 then e3 else e4 | f(e)
x x x :変数,n n n :整数定数,A A A :行列定数。
题目描述
对非负整数 n n n ,定义
f ( 0 ) = f ( 1 ) = 1 , f ( n ) = f ( n − 1 ) + f ( n − 2 ) ( n ≥ 2 ) , f(0)=f(1)=1,\quad f(n)=f(n-1)+f(n-2)\ (n\ge2), f ( 0 ) = f ( 1 ) = 1 , f ( n ) = f ( n − 1 ) + f ( n − 2 ) ( n ≥ 2 ) ,
g ( 0 ) = ( 1 1 ) , g ( n ) = A g ( n − 1 ) ( n ≥ 1 ) , A = ( 1 1 1 0 ) . g(0)=\binom11,\qquad g(n)=Ag(n-1)\ (n\ge1),\qquad A=\begin{pmatrix}1&1\\1&0\end{pmatrix}. g ( 0 ) = ( 1 1 ) , g ( n ) = A g ( n − 1 ) ( n ≥ 1 ) , A = ( 1 1 1 0 ) .
计算 f ( 2 ) , f ( 3 ) , g ( 1 ) , g ( 2 ) f(2),f(3),g(1),g(2) f ( 2 ) , f ( 3 ) , g ( 1 ) , g ( 2 ) ,给出过程。
归纳证明 g ( n ) = A n ( 1 1 ) g(n)=A^n\binom11 g ( n ) = A n ( 1 1 ) 。
归纳证明 g ( n ) = ( f ( n + 1 ) f ( n ) ) g(n)=\binom{f(n+1)}{f(n)} g ( n ) = ( f ( n ) f ( n + 1 ) ) 。
用下述语言写递归函数 h ( n ) h(n) h ( n ) ,满足 g ( n ) = h ( n ) ( 1 1 ) g(n)=h(n)\binom11 g ( n ) = h ( n ) ( 1 1 ) ,且计算 h ( n ) h(n) h ( n ) 所需递归调用次数为 O ( log n ) O(\log n) O ( log n ) 。允许变量、整数和矩阵常量、加减、div \operatorname{div} div (整数商)、mod \operatorname{mod} mod (余数)、矩阵乘法、square ( A ) = A 2 \operatorname{square}(A)=A^2 square ( A ) = A 2 、条件表达式及函数调用。
Kai
(1)
f ( 2 ) = 1 + 1 = 2 , f ( 3 ) = 2 + 1 = 3 , f(2)=1+1=2,\qquad f(3)=2+1=3, f ( 2 ) = 1 + 1 = 2 , f ( 3 ) = 2 + 1 = 3 ,
g ( 1 ) = A ( 1 1 ) = ( 2 1 ) , g ( 2 ) = A ( 2 1 ) = ( 3 2 ) . g(1)=A\binom11=\binom21,\qquad g(2)=A\binom21=\binom32. g ( 1 ) = A ( 1 1 ) = ( 1 2 ) , g ( 2 ) = A ( 1 2 ) = ( 2 3 ) .
(2)
n = 0 n=0 n = 0 时 g ( 0 ) = I ( 1 1 ) g(0)=I\binom11 g ( 0 ) = I ( 1 1 ) 。若 g ( n ) = A n ( 1 1 ) g(n)=A^n\binom11 g ( n ) = A n ( 1 1 ) ,则
g ( n + 1 ) = A g ( n ) = A n + 1 ( 1 1 ) , g(n+1)=Ag(n)=A^{n+1}\binom11, g ( n + 1 ) = A g ( n ) = A n + 1 ( 1 1 ) ,
归纳成立。
(3)
n = 0 n=0 n = 0 时两边均为 ( 1 1 ) \binom11 ( 1 1 ) 。若结论对 n n n 成立,则
g ( n + 1 ) = A ( f ( n + 1 ) f ( n ) ) = ( f ( n + 1 ) + f ( n ) f ( n + 1 ) ) = ( f ( n + 2 ) f ( n + 1 ) ) , g(n+1)=A\binom{f(n+1)}{f(n)}=\binom{f(n+1)+f(n)}{f(n+1)}=\binom{f(n+2)}{f(n+1)}, g ( n + 1 ) = A ( f ( n ) f ( n + 1 ) ) = ( f ( n + 1 ) f ( n + 1 ) + f ( n ) ) = ( f ( n + 1 ) f ( n + 2 ) ) ,
所以对所有 n ≥ 0 n\ge0 n ≥ 0 成立。
(4)
用二分幂:
h(n) = if n = 0 then I else if mod(n, 2) = 0 then square(h(div(n, 2))) else A * square(h(div(n, 2)))
由 A 2 k = ( A k ) 2 A^{2k}=(A^k)^2 A 2 k = ( A k ) 2 、A 2 k + 1 = A ( A k ) 2 A^{2k+1}=A(A^k)^2 A 2 k + 1 = A ( A k ) 2 ,归纳可得 h ( n ) = A n h(n)=A^n h ( n ) = A n 。每层仅调用一次 h ( ⌊ n / 2 ⌋ ) h(\lfloor n/2\rfloor) h (⌊ n /2 ⌋) ,故递归调用次数为 O ( log n ) O(\log n) O ( log n ) 。