跳到主要内容

東北大学 工学研究科 電気・情報系 2015年8月実施 専門科目 問題5 計算機2

Author​

祭音Myyura (co-authored with GPT 5.6 SOL)

Description​

日本語版​

Fig. 5(a) および Fig. 5(b) で定義した,非負整数 nn に対する再帰関数 f(n)f(n) と g(n)g(n) について以下の問に答えよ。ただし,式 “if e1=e2e_1=e_2 then e3e_3 else e4e_4” の値は,e1e_1 の値が e2e_2 の値と等しければ,e3e_3 の値に,そうでなければ e4e_4 の値に等しい。演算子 +,−,∗+,-,* はそれぞれ整数加算,整数減算,行列乗算を表す。以下において,AnA^n は正方行列 AA の nn 乗を表す。ただし,A0A^0 は AA と同じサイズの単位行列と定義する。

(1) f(2),f(3),g(1),g(2)f(2),f(3),g(1),g(2) を計算せよ。計算の過程も示すこと。

(2) 任意の非負整数 nn について g(n)=(1110)n∗(11)g(n)=\begin{pmatrix}1&1\\1&0\end{pmatrix}^n*\binom11 となることを帰納法を用いて証明せよ。

(3) 任意の非負整数 nn について g(n)=(f(n+1)f(n))g(n)=\binom{f(n+1)}{f(n)} となることを帰納法を用いて証明せよ。

(4) Fig. 5(c) に示す構文に従い,任意の非負整数 nn について以下の性質を満たす再帰関数 h(n)h(n) の定義を書け。

  • g(n)g(n) の値と h(n)∗(11)h(n)*\binom11 の値が等しい。
  • h(n)h(n) の値の計算に必要な再帰呼び出し回数が O(log⁡n)O(\log n)。

ただし,整数 nn と mm に対し,nn を mm で割ったときの商を求める関数 div⁡(n,m)\operatorname{div}(n,m) とその剰余を求める関数 mod⁡(n,m)\operatorname{mod}(n,m) を用いてよい。また,任意の正方行列 AA と非負整数 nn に対し A2n+1=A(An)2A^{2n+1}=A(A^n)^2 および A2n=(An)2A^{2n}=(A^n)^2 となることと,A2A^2 を求める関数 square⁡(A)\operatorname{square}(A) も用いてよい。

Fig. 5(a), Fig. 5(b)

f(x)={1x=01x=1f(x−1)+f(x−2)otherwise,g(x)={(11)x=0(1110)∗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}

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)

xx:変数,nn:整数定数,AA:行列定数。

题目描述​

对非负整数 nn,定义

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),
g(0)=(11),g(n)=Ag(n−1) (n≥1),A=(1110).g(0)=\binom11,\qquad g(n)=Ag(n-1)\ (n\ge1),\qquad A=\begin{pmatrix}1&1\\1&0\end{pmatrix}.
  1. 计算 f(2),f(3),g(1),g(2)f(2),f(3),g(1),g(2),给出过程。
  2. 归纳证明 g(n)=An(11)g(n)=A^n\binom11。
  3. 归纳证明 g(n)=(f(n+1)f(n))g(n)=\binom{f(n+1)}{f(n)}。
  4. 用下述语言写递归函数 h(n)h(n),满足 g(n)=h(n)(11)g(n)=h(n)\binom11,且计算 h(n)h(n) 所需递归调用次数为 O(log⁡n)O(\log n)。允许变量、整数和矩阵常量、加减、div⁡\operatorname{div}(整数商)、mod⁡\operatorname{mod}(余数)、矩阵乘法、square⁡(A)=A2\operatorname{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,
g(1)=A(11)=(21),g(2)=A(21)=(32).g(1)=A\binom11=\binom21,\qquad g(2)=A\binom21=\binom32.

(2)​

n=0n=0 时 g(0)=I(11)g(0)=I\binom11。若 g(n)=An(11)g(n)=A^n\binom11,则

g(n+1)=Ag(n)=An+1(11),g(n+1)=Ag(n)=A^{n+1}\binom11,

归纳成立。

(3)​

n=0n=0 时两边均为 (11)\binom11。若结论对 nn 成立,则

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)},

所以对所有 n≥0n\ge0 成立。

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

由 A2k=(Ak)2A^{2k}=(A^k)^2、A2k+1=A(Ak)2A^{2k+1}=A(A^k)^2,归纳可得 h(n)=Anh(n)=A^n。每层仅调用一次 h(⌊n/2⌋)h(\lfloor n/2\rfloor),故递归调用次数为 O(log⁡n)O(\log n)。