院試hub

東大 学際情報学府 学際情報学専攻 先端表現情報学コース 専門科目 2011年度 院試 過去問 解答例・解説(全7問)

全7問の分野は情報1問、制御工学1問、線形代数1問です。固有値・固有ベクトル、伝達関数、フーリエ変換などが出ています。2010年度と共通するテーマは伝達関数です。解説・解答・最終答まで、このページですべて公開しています。問題本文は含みません。

最終更新:

第1問 — 固有値と漸化式

固有値の確認

行列のトレースは 1.51.5、行列式は 0.50.5 である。求めた固有値 11 と 1/21/2 は和が 1.51.5、積が 0.50.5 になっており、計算の検算になる。

極限の意味

λ2=1/2\lambda_2=1/2 の成分は kk が大きくなると消える。一方、λ1=1\lambda_1=1 の成分は残るので、状態は固有ベクトル (3,2)T(3,2)^T の方向へ近づく。実際、この行列では yk+zky_k+z_k が保存されるため、保存量 y0+z0y_0+z_0 を 3:23:2 に分けた値が極限になる。

採点上の注意

固有ベクトルは定数倍しても同じ固有空間を表すので、SS は一意ではない。ただし、SS の列の順序は固有値の並びと対応させる必要がある。列を入れ替えた場合は対角行列の固有値の順序も入れ替わる。

解答

行列を A=(0.80.30.20.7)=(4/53/101/57/10) A=\begin{pmatrix}0.8&0.3\\0.2&0.7\end{pmatrix} = \begin{pmatrix}4/5&3/10\\1/5&7/10\end{pmatrix} とおく。固有値は det⁡(A−λI)=∣0.8−λ0.30.20.7−λ∣=λ2−1.5λ+0.5 \det(A-\lambda I) = \begin{vmatrix} 0.8-\lambda&0.3\\ 0.2&0.7-\lambda \end{vmatrix} = \lambda^2-1.5\lambda+0.5 の解である。したがって λ1=1,λ2=12 \lambda_1=1,\qquad \lambda_2=\frac{1}{2} である。

λ1=1\lambda_1=1 に対しては (A−I)s1=0 (A-I)\boldsymbol{s}_1=0 より −0.2s1y+0.3s1z=0-0.2s_{1y}+0.3s_{1z}=0 なので、例えば s1=(32) \boldsymbol{s}_1=\begin{pmatrix}3\\2\end{pmatrix} を取れる。λ2=1/2\lambda_2=1/2 に対しては (A−12I)s2=0 \left(A-\frac12 I\right)\boldsymbol{s}_2=0 より s2y+s2z=0s_{2y}+s_{2z}=0 なので、例えば s2=(1−1) \boldsymbol{s}_2=\begin{pmatrix}1\\-1\end{pmatrix} を取れる。よって固有ベクトル行列を S=(312−1) S=\begin{pmatrix}3&1\\2&-1\end{pmatrix} とすればよい。

このとき AS=(As1As2)=(λ1s1λ2s2)=S(λ100λ2). AS = \begin{pmatrix} A\boldsymbol{s}_1&A\boldsymbol{s}_2 \end{pmatrix} = \begin{pmatrix} \lambda_1\boldsymbol{s}_1&\lambda_2\boldsymbol{s}_2 \end{pmatrix} = S \begin{pmatrix} \lambda_1&0\\0&\lambda_2 \end{pmatrix}. SS は正則なので、左から S−1S^{-1} を掛ければ S−1AS=(λ100λ2) S^{-1}AS= \begin{pmatrix} \lambda_1&0\\0&\lambda_2 \end{pmatrix} が示される。

q=(1/2)kq=(1/2)^k とおく。S−1S^{-1} は S−1=(1/51/52/5−3/5) S^{-1}= \begin{pmatrix} 1/5&1/5\\ 2/5&-3/5 \end{pmatrix} であるから、 Ak=S(100q)S−1=(3+2q53−3q52−2q52+3q5). \begin{aligned} A^k &=S \begin{pmatrix} 1&0\\0&q \end{pmatrix} S^{-1}\\ &= \begin{pmatrix} \frac{3+2q}{5}&\frac{3-3q}{5}\\ \frac{2-2q}{5}&\frac{2+3q}{5} \end{pmatrix}. \end{aligned} 初期値を u0=(y0z0) \boldsymbol{u}_0=\begin{pmatrix}y_0\\z_0\end{pmatrix} とすると (ykzk)=Aku0 \begin{pmatrix}y_k\\z_k\end{pmatrix}=A^k\boldsymbol{u}_0 である。k→∞k\to\infty では q→0q\to0 なので、 yk→35(y0+z0),zk→25(y0+z0). y_k\to \frac35(y_0+z_0),\qquad z_k\to \frac25(y_0+z_0).

最終答

λ1=1, λ2=1/2\lambda_1=1,\ \lambda_2=1/2、一例として S=(312−1)S=\begin{pmatrix}3&1\\2&-1\end{pmatrix}。Ak=((3+2⋅2−k)/5(3−3⋅2−k)/5(2−2⋅2−k)/5(2+3⋅2−k)/5)\displaystyle A^k=\begin{pmatrix}(3+2\cdot2^{-k})/5&(3-3\cdot2^{-k})/5\\(2-2\cdot2^{-k})/5&(2+3\cdot2^{-k})/5\end{pmatrix}。極限は y∞=3(y0+z0)/5, z∞=2(y0+z0)/5y_\infty=3(y_0+z_0)/5,\ z_\infty=2(y_0+z_0)/5。

第2問 — 命題論理

恒真と充足可能の違い

「偽になる場合がある」だけでは恒偽とはいえない。恒偽はすべての解釈で偽であることを要求する。この問題の(1)では恒偽の式はない。

論理的帰結の読み替え

「RR が SS の論理的帰結」は、日常語では「SS ならば RR」である。したがって S→RS\to R、すなわち ¬S∨R\neg S\lor R が恒真になる。(2)(b) と (2)(c) はこの読み替えを使うと短く判定できる。

反例の作り方

普遍的な主張を否定するには反例を1つ示せばよい。(2)(a) では R=S=PR=S=P が最も短い反例であり、PP が偽の解釈で R∨SR\lor S が偽になる。

解答

含意 A→BA\to B は、AA が真で BB が偽のときだけ偽であり、それ以外では真である。この規則で各式を分類する。

式分類理由¬(¬P)→P恒真¬¬P≡P なので P→PP→(P∧Q)どちらでもないP=T,Q=F で偽、他では真の場合があるP→(P∨Q)恒真P が真なら P∨Q も真¬P→(P∧Q)どちらでもないP=F で偽、P=T で真(P→Q)→(Q→P)どちらでもないP=F,Q=T で偽、他では真の場合があるP→¬PどちらでもないP=T で偽、P=F で真¬P→PどちらでもないP=F で偽、P=T で真 \begin{array}{c|c|l} \text{式} & \text{分類} & \text{理由}\\ \hline \neg(\neg P)\to P & \text{恒真} & \neg\neg P\equiv P\text{ なので }P\to P\\ P\to(P\land Q) & \text{どちらでもない} & P=\mathrm{T},Q=\mathrm{F}\text{ で偽、他では真の場合がある}\\ P\to(P\lor Q) & \text{恒真} & P\text{ が真なら }P\lor Q\text{ も真}\\ \neg P\to(P\land Q) & \text{どちらでもない} & P=\mathrm{F}\text{ で偽、}P=\mathrm{T}\text{ で真}\\ (P\to Q)\to(Q\to P) & \text{どちらでもない} & P=\mathrm{F},Q=\mathrm{T}\text{ で偽、他では真の場合がある}\\ P\to\neg P & \text{どちらでもない} & P=\mathrm{T}\text{ で偽、}P=\mathrm{F}\text{ で真}\\ \neg P\to P & \text{どちらでもない} & P=\mathrm{F}\text{ で偽、}P=\mathrm{T}\text{ で真} \end{array}

次に、RR が SS の論理的帰結であるとは、SS を充足するすべての解釈が RR も充足することである。これは論理式 S→RS\to R が恒真であることと同じである。

(a) は誤りである。例えば R=S=PR=S=P とすれば、RR は SS の論理的帰結である。しかし P=FP=\mathrm{F} の解釈では R∨S=PR\lor S=P は偽であり、恒真ではない。

(b) は正しい。¬S∨R\neg S\lor R は S→RS\to R と同値である。RR が SS の論理的帰結なら、SS が真の解釈では RR も真であり、SS が偽の解釈では ¬S\neg S が真である。したがってすべての解釈で ¬S∨R\neg S\lor R は真である。

(c) は正しい。RR が SS の論理的帰結なら、SS が真で RR が偽となる解釈は存在しない。したがって ¬R∧S\neg R\land S を真にする解釈はなく、この式は恒偽である。

最後に、任意の解釈が R∧(R→S)R\land(R\to S) を充足すると仮定する。このとき RR は真であり、同時に R→SR\to S も真である。含意 R→SR\to S が真で、前件 RR が真であるから、後件 SS も真でなければならない。よって、R∧(R→S)R\land(R\to S) を充足するすべての解釈は SS を充足する。定義より、SS は R∧(R→S)R\land(R\to S) の論理的帰結である。

最終答

(1) は (a)(c) が恒真、残り (b)(d)(e)(f)(g) はいずれでもない、恒偽はなし。(2) は (a) 誤、(b) 正、(c) 正。(3) R∧(R→S)R\land(R\to S) が真なら RR と R→SR\to S が真なので SS も真、ゆえに SS はその論理的帰結。

第3問 — 信号解析

偶奇分解の検算

xe(t)x_e(t) は左右対称、xo(t)x_o(t) は原点反対称になっていなければならない。また、各区間で xe(t)+xo(t)x_e(t)+x_o(t) を足すと元の信号値に戻る。例えば 0<t<10<t<1 では −1/2+(−3/2)=−2-1/2+(-3/2)=-2 となり、図の右側の値と一致する。

スペクトルの性質

実偶関数では正弦項が消えるためスペクトルは実数になる。実奇関数では余弦項が消えるためスペクトルは虚数になる。ここで「偶」「奇」は時間領域だけでなく、周波数 ff の符号反転に対する性質としても確認する。

自己相関の形

方形パルス列の自己相関は、信号を τ\tau だけずらしたときにパルス同士が重なる長さに比例する。重なりが最大のときピーク、ずれがパルス幅に達すると0になり、周期信号なので同じ形が TT ごとに繰り返される。

解答

若者にだけ聞こえやすいモスキート音とは、およそ十数 kHz 以上の高周波音である。加齢により高域の聴力が低下するため、若年者には聞こえやすく、中高年には聞こえにくい。店舗前などで若者の滞留を抑える装置や、若者向けの着信音に利用された。

フーリエ変換対を x(t)=∫−∞∞X(f)ej2πft df x(t)=\int_{-\infty}^{\infty}X(f)e^{j2\pi ft}\,df と定めているので、逆に X(f)=∫−∞∞x(t)e−j2πft dt X(f)=\int_{-\infty}^{\infty}x(t)e^{-j2\pi ft}\,dt である。

xe(−t)=xe(t)x_e(-t)=x_e(t) を満たす関数を偶関数、xo(−t)=−xo(t)x_o(-t)=-x_o(t) を満たす関数を奇関数という。任意の信号は xe(t)=x(t)+x(−t)2,xo(t)=x(t)−x(−t)2 x_e(t)=\frac{x(t)+x(-t)}{2},\qquad x_o(t)=\frac{x(t)-x(-t)}{2} により偶成分と奇成分へ分けられる。図から読み取れる階段状信号について、端点の値は積分や図示には影響しないので無視すると、 xe(t)={0,∣t∣>2,−1,1<∣t∣<2,−1/2,0<∣t∣<1, x_e(t)= \begin{cases} 0,& |t|>2,\\ -1,& 1<|t|<2,\\ -1/2,& 0<|t|<1, \end{cases} であり、 xo(t)={0,∣t∣>2,1,−2<t<−1,3/2,−1<t<0,−3/2,0<t<1,−1,1<t<2 x_o(t)= \begin{cases} 0,& |t|>2,\\ 1,& -2<t<-1,\\ 3/2,& -1<t<0,\\ -3/2,& 0<t<1,\\ -1,& 1<t<2 \end{cases} である。

xe(t)x_e(t) が実偶関数のとき、オイラーの公式より Xe(f)=∫xe(t)cos⁡(2πft) dt−j∫xe(t)sin⁡(2πft) dt X_e(f)=\int x_e(t)\cos(2\pi ft)\,dt -j\int x_e(t)\sin(2\pi ft)\,dt である。xe(t)sin⁡(2πft)x_e(t)\sin(2\pi ft) は奇関数なので積分が0となり、Xe(f)X_e(f) は実数値の偶関数になる。一方、xo(t)x_o(t) が実奇関数のとき、xo(t)cos⁡(2πft)x_o(t)\cos(2\pi ft) は奇関数なので実部が0となり、Xo(f)X_o(f) は純虚数の奇関数になる。

不規則信号 xr(t)x_r(t) の自己相関関数は、広義定常過程として扱うなら φr(τ)=E[xr(t)xr(t+τ)] \varphi_r(\tau)=E[x_r(t)x_r(t+\tau)] で定義される。時間平均で書く場合は φr(τ)=lim⁡T0→∞12T0∫−T0T0xr(t)xr(t+τ) dt \varphi_r(\tau)= \lim_{T_0\to\infty}\frac{1}{2T_0} \int_{-T_0}^{T_0}x_r(t)x_r(t+\tau)\,dt である。周期 TT の周期信号 xp(t)x_p(t) については φp(τ)=1T∫t0t0+Txp(t)xp(t+τ) dt \varphi_p(\tau)=\frac{1}{T}\int_{t_0}^{t_0+T}x_p(t)x_p(t+\tau)\,dt で定義でき、積分区間の始点 t0t_0 は任意である。

周期 TT、パルス幅 τw\tau_w、振幅 AA の周期方形パルス列では、自己相関は周期 TT を持つ三角形状になる。0<τw<T/20<\tau_w<T/2 とし、 Δ(τ)=min⁡m∈Z∣τ−mT∣ \Delta(\tau)=\min_{m\in\mathbb{Z}}|\tau-mT| とおけば φp(τ)={A2T(τw−Δ(τ)),0≤Δ(τ)≤τw,0,τw<Δ(τ)≤T/2 \varphi_p(\tau)= \begin{cases} \dfrac{A^2}{T}(\tau_w-\Delta(\tau)),&0\le \Delta(\tau)\le \tau_w,\\ 0,&\tau_w<\Delta(\tau)\le T/2 \end{cases} である。ピーク値は φp(0)=A2τw/T\varphi_p(0)=A^2\tau_w/T である。

最終答

モスキート音は若年者に聞こえやすい高周波音。X(f)=∫x(t)e−j2πftdtX(f)=\int x(t)e^{-j2\pi ft}dt。偶成分は (x(t)+x(−t))/2(x(t)+x(-t))/2、奇成分は (x(t)−x(−t))/2(x(t)-x(-t))/2。実偶信号のスペクトルは実偶、実奇信号のスペクトルは純虚奇。自己相関は E[x(t)x(t+τ)]E[x(t)x(t+\tau)] または周期平均で定義し、周期方形パルス列では周期的な三角形状になる。

第4問 — 速度フィードバック制御

符号の扱い

問題では左向きを正と定めているので、相対速度 r−vr-v が正ならBを加速する力が正になる。もし vv が rr より大きいと ff は負になり、Bを減速させる。したがって k>0k>0 のとき負帰還になる。

安定性と追従性

安定性は極の実部で決まる。一方、一定速度への追従性は直流ゲイン G(0)=1G(0)=1 で決まる。両方を分けて説明すると、(3) と (4) の答案が混ざらない。

振動入力の解釈

この制御系は一次遅れ系である。低周波の速度変動にはよく追従するが、高周波の変動はBの慣性により小さくなる。式でも、ω→0\omega\to0 なら b→ab\to a、ω→∞\omega\to\infty なら b→0b\to0 となる。

解答

左向きを正とする。自動車Bに働く力は駆動力 ff であり、摩擦は無視するので、運動方程式は mdvdt=f. m\frac{dv}{dt}=f. フィードバック則 f=k(r−v)f=k(r-v) を代入すると mdvdt=k(r−v) m\frac{dv}{dt}=k(r-v) である。

初期値を0としてラプラス変換すると msV(s)=k{R(s)−V(s)} msV(s)=k\{R(s)-V(s)\} である。したがって (ms+k)V(s)=kR(s) (ms+k)V(s)=kR(s) となり、速度入力 rr から速度出力 vv までの伝達関数は G(s)=V(s)R(s)=kms+k G(s)=\frac{V(s)}{R(s)}=\frac{k}{ms+k} である。

極は s=−km s=-\frac{k}{m} である。質量 m>0m>0 なので、安定条件は k>0 k>0 である。

安定な場合に、自動車Aが静止状態から一定速度 VV で動き始めるとする。入力は r(t)=Vu(t)r(t)=Vu(t) であり、定常値は最終値定理から lim⁡t→∞v(t)=lim⁡s→0skms+kVs=V \lim_{t\to\infty}v(t) = \lim_{s\to0}s\frac{k}{ms+k}\frac{V}{s} =V である。したがって最終的には同じ速度で追従する。時間応答としては v(t)=V(1−e−kt/m) v(t)=V\left(1-e^{-kt/m}\right) である。

次に r(t)=r0+asin⁡ωt r(t)=r_0+a\sin\omega t とする。定常状態では、直流成分 r0r_0 はゲイン1で追従する。振動成分については、周波数応答 G(jω)=kk+jmω G(j\omega)=\frac{k}{k+jm\omega} の大きさを掛ければよい。したがって自動車Bの振動成分の振幅 bb は b=a∣G(jω)∣=akk2+(mω)2 b=a|G(j\omega)| =a\frac{k}{\sqrt{k^2+(m\omega)^2}} である。k>0k>0 なら 0≤b≤a 0\le b\le a であり、ω>0\omega>0 では b<ab<a である。つまりBの速度変動はAの速度変動より小さくなり、位相も遅れる。

最終答

運動方程式は mv˙=k(r−v)m\dot v=k(r-v)。伝達関数は V(s)/R(s)=k/(ms+k)V(s)/R(s)=k/(ms+k)。安定条件は k>0k>0。ステップ速度 VV には最終的に v→Vv\to V。正弦変動の定常振幅は b=ak/k2+(mω)2\displaystyle b=a k/\sqrt{k^2+(m\omega)^2} で、ω>0\omega>0 なら b<ab<a。

第5問 — 曲率

弧長で微分する理由

曲率は「単位長さ進むごとに接線方向がどれだけ変わるか」である。そのため、角度 θ\theta ではなく弧長 SS で接線ベクトルを微分する。θ\theta で微分しただけだと半径 RR の違いが正しく反映されない。

符号の注意

曲率の大きさは常に非負だが、曲面の符号付き主曲率は選んだ法線方向に依存する。外向き法線の球では、曲率ベクトルが内向きなので主曲率は負になる。ただしガウス曲率は積であるため、法線を反転しても変わらない。

円筒と球の違い

円筒は円周方向には曲がっているが、軸方向にはまっすぐである。そのため一方の主曲率が0になり、ガウス曲率も0になる。球は全方向に同じ曲率を持つため、2つの主曲率が等しい。

解答

半径 RR、中心角 θ\theta の円上の点 PP は P(θ)=(Rcos⁡θRsin⁡θ) P(\theta)= \begin{pmatrix} R\cos\theta\\ R\sin\theta \end{pmatrix} で表される。

円弧長を SS とすると S=Rθ,θ=SR S=R\theta,\qquad \theta=\frac{S}{R} であるから、 P(S)=(Rcos⁡(S/R)Rsin⁡(S/R)) P(S)= \begin{pmatrix} R\cos(S/R)\\ R\sin(S/R) \end{pmatrix} である。

弧長 SS による接線ベクトル、すなわち単位接線ベクトルは T(S)=dPdS=(−sin⁡(S/R)cos⁡(S/R))=(−sin⁡θcos⁡θ). \boldsymbol{T}(S)=\frac{dP}{dS} = \begin{pmatrix} -\sin(S/R)\\ \cos(S/R) \end{pmatrix} = \begin{pmatrix} -\sin\theta\\ \cos\theta \end{pmatrix}. 曲率ベクトルは dTdS=−1R(cos⁡θsin⁡θ) \frac{d\boldsymbol{T}}{dS} = -\frac1R \begin{pmatrix} \cos\theta\\ \sin\theta \end{pmatrix} であり、その大きさは κ=∥dTdS∥=1R \kappa=\left\|\frac{d\boldsymbol{T}}{dS}\right\|=\frac1R である。直線では接線ベクトルが変化しないので、曲率は0である。

曲面上の点で、法線を含む平面で曲面を切ったときに得られる法曲率の最大値と最小値を主曲率 κ1,κ2\kappa_1,\kappa_2 という。ガウス曲率と平均曲率は K=κ1κ2,H=κ1+κ22 K=\kappa_1\kappa_2,\qquad H=\frac{\kappa_1+\kappa_2}{2} で定義される。

以下では外向き法線を採用する。円筒側面では、軸方向の法曲率は0であり、円周方向の曲率ベクトルは中心軸方向、つまり外向き法線と逆向きである。したがって κcirc=−1R,κaxis=0. \kappa_{\mathrm{circ}}=-\frac1R,\qquad \kappa_{\mathrm{axis}}=0. よって最大曲率は 00、最小曲率は −1/R-1/R である。

半径 RR の球面では、どの接線方向に切っても半径 RR の大円と同じ曲率をもつ。外向き法線に対し曲率ベクトルは中心方向で逆向きなので κ1=κ2=−1R \kappa_1=\kappa_2=-\frac1R である。したがって K=κ1κ2=1R2,H=κ1+κ22=−1R. K=\kappa_1\kappa_2=\frac1{R^2}, \qquad H=\frac{\kappa_1+\kappa_2}{2}=-\frac1R.

最終答

P=(Rcos⁡θ,Rsin⁡θ)=(Rcos⁡(S/R),Rsin⁡(S/R))P=(R\cos\theta,R\sin\theta)=(R\cos(S/R),R\sin(S/R))。単位接線は (−sin⁡θ,cos⁡θ)(-\sin\theta,\cos\theta)、円の曲率の大きさは 1/R1/R、直線は0。外向き法線では円筒側面の主曲率は −1/R,0-1/R,0、球面では K=1/R2, H=−1/RK=1/R^2,\ H=-1/R。法線を逆に選ぶと主曲率と平均曲率の符号は反転する。

第6問 — 再帰アルゴリズム

最小性

最大円盤を動かすには、その上にある N−1N-1 枚をすべてどかす必要がある。最大円盤は少なくとも1回動かす必要があり、その後に N−1N-1 枚を目的棒へ積み直す必要がある。したがって 2M(N−1)+12M(N-1)+1 は単なるアルゴリズムの回数であるだけでなく、最小回数でもある。

C実装の採点観点

引数に3本の棒を渡しているか、基底条件で止まるか、2回の再帰呼び出しの補助棒が正しく入れ替わっているかが重要である。特に2回目は、退避先だった棒から目的棒へ戻すので、引数の順序が変わる。

末尾再帰の変換

再帰呼び出しの後に計算が残っていないため、呼び出しスタックを積む必要がない。新しい引数を現在の局所変数へ代入してループを続ければ、次の再帰呼び出しと同じ状態を作れる。

解答

3本の棒を、移動元を fromfrom、移動先を toto、補助棒を workwork と書く。NN 枚を fromfrom から toto へ移す再帰的手順は次の通りである。

  1. N=0N=0 なら何もしない。N=1N=1 なら1枚を fromfrom から toto へ移動する手順を出力して終了する。

  2. N>1N>1 なら、上の N−1N-1 枚を fromfrom から workwork へ、toto を補助棒として再帰的に移す。

  3. 残った最大の円盤を fromfrom から toto へ移動する手順を出力する。

  4. workwork に退避した N−1N-1 枚を workwork から toto へ、fromfrom を補助棒として再帰的に移す。

C言語では、例えば次のように書ける。

最小移動回数を M(N)M(N) とする。最大円盤をAからBへ移すには、その上の N−1N-1 枚を一度Cへ退避し、最大円盤を1回動かし、さらに N−1N-1 枚をCからBへ移す必要がある。したがって M(N)=2M(N−1)+1,M(1)=1 M(N)=2M(N-1)+1,\qquad M(1)=1 である。これを解くと M(N)=2N−1 M(N)=2^N-1 となる。よって M(10)=210−1=1023 M(10)=2^{10}-1=1023 である。

最後の再帰関数は、再帰呼び出しの後に追加の処理をせず直ちに戻る末尾再帰である。したがって、再帰呼び出しを「引数を更新して先頭へ戻るループ」に置き換えられる。

ここで、SS の中にある return はそのまま関数 F からの復帰として働く。SS が復帰しなかった場合だけ、次の再帰呼び出しに相当する (a,b)(a,b) を新しい (x,y)(x,y) としてループを続ける。

最終答

ハノイの塔は「N−1N-1 枚を補助棒へ移す、最大円盤を目的棒へ移す、N−1N-1 枚を目的棒へ移す」という再帰で解く。最小回数は M(N)=2M(N−1)+1=2N−1M(N)=2M(N-1)+1=2^N-1、M(10)=1023M(10)=1023。末尾再帰は引数を更新する無限ループに変換できる。

第7問 — 割り込みとパイプライン

割り込みとサブルーチンの違い

どちらも別の処理へ分岐して戻る点は似ている。しかし、サブルーチンはプログラムが予定した制御移動であり、割り込みは外部事象や例外に応じて現在の流れへ割り込む制御移動である。このため割り込みでは、どの命令の間で発生しても再開できることが重要になる。

パイプラインハザードの種類

このコードには分岐がないので制御ハザードは本質的でない。単一メモリを命令フェッチとデータアクセスで共有するCPUなら構造ハザードもあり得るが、図の命令依存関係から最も直接に問われているのはデータハザードである。

命令並べ替えの意図

単に NOP を入れるだけでもハザードは避けられるが、実行時間は伸びる。独立な LOAD を前倒しすれば待ち時間を有効利用できる。ただし、同じレジスタ R2 にEを読み込むとCが失われるため、R4 のような別レジスタを使う必要がある。

解答

割り込み処理とは、実行中のプログラムとは別に発生した事象、またはCPU内部で検出された例外に応じて、現在の実行状態を保存し、あらかじめ定められた割り込み処理ルーチンへ制御を移す処理である。処理後は保存していたプログラムカウンタやレジスタなどを復元し、元の処理へ戻る。

サブルーチンは、プログラム中の命令によって明示的に呼び出される。これに対して割り込みは、入出力完了、タイマ、外部信号、例外などにより非同期または予期しないタイミングで発生する。したがって割り込みでは、実行中の文脈を壊さないように退避・復元、優先順位、マスク、割り込み禁止区間などを考える必要がある。

与えられた命令列では、主にデータハザードが問題になる。例えば、メモリから値をロードした直後に、そのロード先レジスタを加算命令が読むと、ロード結果がまだレジスタに書き戻されていない可能性がある。これはRAWハザードである。同様に、2回目のロードと加算の間にもロード・ユースのRAWハザードがある。また、加算結果を直後のストアが使う場合、ストアデータへのフォワーディングがないパイプラインではここもRAWハザードになる。

典型的な5段パイプラインで「ロード直後の1命令だけを空ければよい」と仮定すると、独立なロードを前に出し、レジスタ名を変えることで次のように修正できる。

2つ目の LOAD と最初の ADD の間に、独立な LOAD R4 S0(16) を挿入しているため、R2 のロード結果が利用可能になる。また、Eを R4 に読み込むことで、Cを保持する R2 を上書きしない。2つ目の加算では、LOAD R4 S0(16) から十分な命令間隔が空いているので、R4 のロード・ユースハザードも避けられる。

もし対象CPUが加算結果から直後のストアへのフォワーディングを持たないなら、加算とストアの間にも NOP を入れるか、独立命令を挟む必要がある。その場合は例えば次のように保守的に書ける。

最終答

割り込みは実行文脈を退避して割り込みルーチンへ移る非同期処理で、明示的に呼ぶサブルーチンと発生契機・退避復元・優先制御が異なる。機械語ではロード直後にそのレジスタを使うRAWハザードなどが起こるため、独立命令の挿入、レジスタリネーミング、必要なら NOP により回避する。

年度別の解答例(11年度)

  • 2020年度(全7問)

    基礎数学 / 画像検索 / 重力走行と振動

  • 2019年度(全7問)

    基礎数学 / オペアンプ回路 / 流体の無次元数

  • 2018年度(全5問)

    二次曲線 / CとRPN / 色空間とDCT

  • 2017年度(全5問)

    回帰と正則化 / Cと正規表現 / 二色性反射

  • 2016年度(全5問)最終答まで公開

    ロジスティックモデル / 動的計画法 / 無線LANとフーリエ変換

  • 2015年度(全5問)最終答まで公開

    ガウス関数のフーリエ変換 / 乱数生成アルゴリズム / レイトレーシング

  • 2014年度(全5問)最終答まで公開

    積分とアステロイド / 水量計測と状態探索 / 画像処理

  • 2013年度(全5問)最終答まで公開

    QR分解と最小二乗 / 集合データ構造 / 信号処理

  • 2012年度(全5問)最終答まで公開

    線形最小二乗 / ソートの計算量 / 線形システムと相互情報量

  • 2011年度(このページ・全7問)最終答まで公開

    固有値と漸化式 / 命題論理 / 信号解析

  • 2010年度(全11問)最終答まで公開

    線形微分方程式 / 漸化式と高速計算 / z 変換とデジタルフィルタ

2011年度の出題内容

全7問

この7問の分野は情報1問・制御工学1問・線形代数1問・微分積分・解析1問です。

大問分野主題解説の小見出し最終答
第1問線形代数固有値と漸化式固有値の確認 / 極限の意味あり
第2問—命題論理恒真と充足可能の違い / 論理的帰結の読み替えあり
第3問微分積分・解析信号解析偶奇分解の検算 / スペクトルの性質あり
第4問制御工学速度フィードバック制御符号の扱い / 安定性と追従性あり
第5問—曲率弧長で微分する理由 / 符号の注意あり
第6問情報再帰アルゴリズム最小性 / C実装の採点観点あり
第7問—割り込みとパイプライン割り込みとサブルーチンの違い / パイプラインハザードの種類あり

2011年度の解説には採点上の注意1件が付いています。

同じテーマを出した他大学・他年度

5テーマ

前年度(2010年度)との違い

大問数
2010年度 11問 → 2011年度 7問
両年度に出たテーマ
伝達関数
2010年度の解答例

東京大学の公式過去問

公開年度範囲
2010〜2020(先端表現情報学コースとして公開されている専門科目)
公式の解答例
非公開(問題冊子のみ)
英語の扱い
TOEFL/TOEIC 等の扱いは募集要項で年度別に確認。公式過去問ページは専門科目PDFを公開。
院試hubの最終確認
2026-07-05
東京大学の公式過去問PDF