跳到主要内容

東北大学 工学研究科 電気・情報系 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 は正方行列 AAnn 乗を表す。ただし,A0A^0AA と同じサイズの単位行列と定義する。

(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(logn)O(\log n)

ただし,整数 nnmm に対し,nnmm で割ったときの商を求める関数 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(x1)+f(x2)otherwise,g(x)={(11)x=0(1110)g(x1)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(n1)+f(n2) (n2),f(0)=f(1)=1,\quad f(n)=f(n-1)+f(n-2)\ (n\ge2),
g(0)=(11),g(n)=Ag(n1) (n1),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(logn)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=0g(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)},

所以对所有 n0n\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)^2A2k+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(logn)O(\log n)