院試hub

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

全11問の分野は電磁気学・回路2問、微分方程式1問です。計算量理論、伝達関数、MOSFETが出ています。解説・解答・最終答まで、このページですべて公開しています。問題本文は含みません。

最終更新:

第1問 — 線形微分方程式

虚数根から実数解を作る理由

実係数の線形微分方程式では、複素解の実部と虚部を取っても解になる。ここで一次独立性まで確認しないと「基本解」とまでは言えないため、Wronski 行列式 ne2mxne^{2mx} を明示するのが安全である。

極大点の検算

f(x)=2e−2xsin⁡(23x+π/3)f(x)=2e^{-2x}\sin(2\sqrt{3}x+\pi/3) とまとめると、極値条件が tan⁡θ=3\tan\theta=\sqrt{3} になり計算が短くなる。kk が偶数なら f(x)>0f(x)>0、奇数なら f(x)<0f(x)<0 なので、正の極大点は k=2,4,6,…k=2,4,6,\ldots に対応する。

非同次方程式の確認

右辺が e2xe^{2x} と sin⁡x\sin x の和なので、重ね合わせで別々の特殊解を足せばよい。e2xe^{2x} は同次解と重ならず、sin⁡x,cos⁡x\sin x,\cos x も同次解と重ならないため、xx を掛ける補正は不要である。

解答

  1. 特性方程式の根を m±nim\pm ni とする。係数は実数なので、複素解 e(m+ni)x=emx(cos⁡nx+isin⁡nx) e^{(m+ni)x}=e^{mx}(\cos nx+i\sin nx) の実部と虚部も元の微分方程式の解である。したがって f1(x)=emxcos⁡nx,f2(x)=emxsin⁡nx f_1(x)=e^{mx}\cos nx,\qquad f_2(x)=e^{mx}\sin nx はともに解である。

    さらに f1′(x)=emx(mcos⁡nx−nsin⁡nx),f2′(x)=emx(msin⁡nx+ncos⁡nx) \begin{aligned} f_1'(x)&=e^{mx}(m\cos nx-n\sin nx),\\ f_2'(x)&=e^{mx}(m\sin nx+n\cos nx) \end{aligned} より、Wronski 行列式は W(x)=f1f2′−f1′f2=ne2mx W(x)=f_1f_2'-f_1'f_2=ne^{2mx} である。n≠0n\ne0 だから W(x)≠0W(x)\ne0 であり、2 つの解は一次独立である。二階線形同次方程式の解空間は 2 次元なので、これらは 1 組の基本解である。

  2. 特性方程式は λ2+4λ+16=0 \lambda^2+4\lambda+16=0 で、根は λ=−2±23 i \lambda=-2\pm 2\sqrt{3}\,i である。よって f(x)=e−2x{Acos⁡(23x)+Bsin⁡(23x)} f(x)=e^{-2x}\{A\cos(2\sqrt{3}x)+B\sin(2\sqrt{3}x)\} とおける。初期条件 f(0)=3f(0)=\sqrt{3} から A=3A=\sqrt{3} である。また f′(0)=−2A+23 B=0 f'(0)=-2A+2\sqrt{3}\,B=0 より B=1B=1 である。したがって f(x)=e−2x{3cos⁡(23x)+sin⁡(23x)}. f(x)=e^{-2x}\{\sqrt{3}\cos(2\sqrt{3}x)+\sin(2\sqrt{3}x)\}. これは f(x)=2e−2xsin⁡(23x+π3) f(x)=2e^{-2x}\sin\left(2\sqrt{3}x+\frac{\pi}{3}\right) と書ける。

    極値条件は f′(x)=2e−2x{23cos⁡θ−2sin⁡θ}=0,θ=23x+π3 f'(x)=2e^{-2x}\left\{2\sqrt{3}\cos\theta-2\sin\theta\right\}=0, \qquad \theta=2\sqrt{3}x+\frac{\pi}{3} である。したがって tan⁡θ=3\tan\theta=\sqrt{3}、すなわち θ=π3+kπ(k∈Z) \theta=\frac{\pi}{3}+k\pi\quad(k\in\mathbb{Z}) となるので x=kπ23 x=\frac{k\pi}{2\sqrt{3}} である。この点で f(x)=3(−1)ke−2x f(x)=\sqrt{3}(-1)^k e^{-2x} だから、極大は kk が偶数のときである。x>0x>0 なので x=jπ3(j=1,2,…) x=\frac{j\pi}{\sqrt{3}}\qquad(j=1,2,\ldots) が極大点である。

  3. 同次方程式の特性根は λ=−1±3 i \lambda=-1\pm \sqrt{3}\,i であるから、同次解は fh(x)=e−x{C1cos⁡(3x)+C2sin⁡(3x)} f_h(x)=e^{-x}\{C_1\cos(\sqrt{3}x)+C_2\sin(\sqrt{3}x)\} である。

    右辺の e2xe^{2x} に対して Ae2xAe^{2x} を代入すると (4A+4A+4A)e2x=12Ae2x (4A+4A+4A)e^{2x}=12Ae^{2x} なので A=1/12A=1/12 である。右辺の sin⁡x\sin x に対して p(x)=αsin⁡x+βcos⁡x p(x)=\alpha\sin x+\beta\cos x とおくと p′′+2p′+4p=(3α−2β)sin⁡x+(2α+3β)cos⁡x. p''+2p'+4p=(3\alpha-2\beta)\sin x+(2\alpha+3\beta)\cos x. よって 3α−2β=1,2α+3β=0 3\alpha-2\beta=1,\qquad 2\alpha+3\beta=0 から α=313,β=−213. \alpha=\frac{3}{13},\qquad \beta=-\frac{2}{13}. 以上より一般解は f(x)=e−x{C1cos⁡(3x)+C2sin⁡(3x)}+112e2x+3sin⁡x−2cos⁡x13. f(x)=e^{-x}\{C_1\cos(\sqrt{3}x)+C_2\sin(\sqrt{3}x)\} +\frac{1}{12}e^{2x}+\frac{3\sin x-2\cos x}{13}.

最終答

f(x)=e−2x{3cos⁡(23x)+sin⁡(23x)},極大点は x=jπ3 (j=1,2,…),f(x)=e−x{C1cos⁡(3x)+C2sin⁡(3x)}+112e2x+3sin⁡x−2cos⁡x13. \begin{gathered} f(x)=e^{-2x}\{\sqrt{3}\cos(2\sqrt{3}x)+\sin(2\sqrt{3}x)\},\\ \text{極大点は }x=\frac{j\pi}{\sqrt{3}}\ (j=1,2,\ldots),\\ f(x)=e^{-x}\{C_1\cos(\sqrt{3}x)+C_2\sin(\sqrt{3}x)\} +\frac{1}{12}e^{2x}+\frac{3\sin x-2\cos x}{13}. \end{gathered}

第2問 — 漸化式と高速計算

計算量の見分け方

再帰式をそのまま関数にすると、同じ aka_k を何度も計算するため指数時間になる。行列累乗に直すと「nn 回進める」計算が「指数を半分にする」計算へ変わり、O(log⁡n)O(\log n) まで下がる。

周期性の証明で必要な点

有限個の状態に戻ることだけでは、一般には「途中から周期的」しか言えない。この漸化式の剰余状態遷移は逆向きにも一意に戻せるので、初期状態を含む純粋な周期になる。ここを一言添えると証明が強くなる。

周期 8 の注意

初期値が異なれば、3 を法とする周期は 8 の約数になることがある。ここでは前問の x=1,y=3x=1,y=3 を引き継いだ場合の剰余列を計算している。

解答

  1. もっとも直接的には、次の再帰関数で ana_n を求められる。

    この実装では同じ部分問題を何度も計算する。実行時間 T(n)T(n) は T(n)=T(n−1)+T(n−2)+O(1) T(n)=T(n-1)+T(n-2)+O(1) を満たすので、時間計算量は O(φn)O(\varphi^n)、再帰の深さは O(n)O(n) である。ただし φ=(1+5)/2\varphi=(1+\sqrt{5})/2 である。配列に値を保存する、または a0,a1a_0,a_1 から順に更新する実装にすれば、時間計算量は O(n)O(n)、追加メモリは O(1)O(1) にできる。

  2. (anan−1)=(1110)(an−1an−2) \begin{pmatrix}a_n\\a_{n-1}\end{pmatrix} = \begin{pmatrix}1&1\\1&0\end{pmatrix} \begin{pmatrix}a_{n-1}\\a_{n-2}\end{pmatrix} なので Q=(1110). Q=\begin{pmatrix}1&1\\1&0\end{pmatrix}. したがって n≥1n\ge1 について (anan−1)=Qn−1(yx) \begin{pmatrix}a_n\\a_{n-1}\end{pmatrix} = Q^{n-1} \begin{pmatrix}y\\x\end{pmatrix} であり、ana_n はこのベクトルの第 1 成分である。

  3. Qn−1Q^{n-1} を逐次に n−1n-1 回掛ける必要はない。二分累乗法を使い、 Qr={(Qr/2)2r が偶数,Q(Q(r−1)/2)2r が奇数 Q^r= \begin{cases} (Q^{r/2})^2 & r\text{ が偶数},\\ Q(Q^{(r-1)/2})^2 & r\text{ が奇数} \end{cases} と再帰的に計算する。2×22\times2 行列の積は定数個の四則演算で済むので、算術演算回数としては O(log⁡n)O(\log n) である。大きな整数を正確に扱う場合には、整数の桁数増加に応じた多倍長整数演算のコストが別に加わる。

  4. F0=0,F1=1F_0=0,F_1=1 を Fibonacci 数とすると an=Fn−1x+Fny(n≥1) a_n=F_{n-1}x+F_ny\qquad(n\ge1) である。x=1,y=3x=1,y=3 のとき a48=F47+3F48. a_{48}=F_{47}+3F_{48}. F47=2971215073, F48=4807526976F_{47}=2971215073,\ F_{48}=4807526976 だから a48=2971215073+3⋅4807526976=17393796001. a_{48}=2971215073+3\cdot4807526976=17393796001.

  5. 剰余の組 (am,n−1,am,n) (a_{m,n-1},a_{m,n}) に注目する。次の組は (u,v)⟼(v,u+v mod m) (u,v)\longmapsto (v,u+v\bmod m) で一意に決まる。可能な組は高々 m2m^2 個しかないので、鳩の巣原理により同じ組が再び現れる。

    さらにこの写像には (u,v)⟼(v−u,u)(modm) (u,v)\longmapsto (v-u,u)\pmod m という逆写像がある。したがって途中からではなく、初期組から周期的に同じ列が繰り返される。

  6. x=1,y=3x=1,y=3 の場合は、3 で割った余りの初期値が a3,0=1,a3,1=0 a_{3,0}=1,\qquad a_{3,1}=0 である。組で追うと (1,0)→(0,1)→(1,1)→(1,2)→(2,0)→(0,2)→(2,2)→(2,1)→(1,0) \begin{aligned} &(1,0)\to(0,1)\to(1,1)\to(1,2)\\ &\to(2,0)\to(0,2)\to(2,2)\to(2,1)\to(1,0) \end{aligned} となる。よって周期は 88 であり、剰余列は 1,0,1,1,2,0,2,2 1,0,1,1,2,0,2,2 を繰り返す。

最終答

Q=(1110),(anan−1)=Qn−1(yx),a48=17393796001,周期 8. Q=\begin{pmatrix}1&1\\1&0\end{pmatrix},\quad \begin{pmatrix}a_n\\a_{n-1}\end{pmatrix}=Q^{n-1}\begin{pmatrix}y\\x\end{pmatrix}, \quad a_{48}=17393796001,\quad \text{周期 }8.

第3問 — z 変換とデジタルフィルタ

符号の確認

フィードバック経路が加算で戻っているため、U=X+az−1U+bz−2UU=X+az^{-1}U+bz^{-2}U と書く。これを左辺へ移すので、伝達関数の分母は 1−az−1−bz−21-az^{-1}-bz^{-2} になる。ここで符号を逆にすると、極も安定性判定も変わってしまう。

安定性の判定

離散時間の因果 IIR フィルタでは、全ての極が単位円内にあればインパルス応答が絶対可 summable になり BIBO 安定である。本問の極 1/2,1/41/2,1/4 は十分に内側なので安定である。

入力による零点の打ち消し

入力 (−1)n(-1)^n の zz 変換は 1/(1+z−1)1/(1+z^{-1}) で、フィルタの分子 1+z−11+z^{-1} と打ち消し合う。したがって出力には交互符号成分が残らず、2 つの減衰指数の和として表れる。

解答

  1. 片側 zz 変換を用いると、信号系列 x(n)x(n) の zz 変換は X(z)=∑n=0∞x(n)z−n X(z)=\sum_{n=0}^{\infty}x(n)z^{-n} で定義される。両側 zz 変換を採る流儀では、和の範囲を n=−∞n=-\infty から ∞\infty までとする。

  2. 図の中間信号を U(z)U(z) とする。出力側では、直接経路と 1 サンプル遅延後の係数 cc の経路が加算されるので Y(z)=U(z)+cz−1U(z)=(1+cz−1)U(z). Y(z)=U(z)+cz^{-1}U(z)=(1+cz^{-1})U(z). 入力側では、入力 X(z)X(z) と、U(z)U(z) を 1 サンプルおよび 2 サンプル遅延して係数 a,ba,b を掛けた信号が加算される。したがって U(z)=X(z)+az−1U(z)+bz−2U(z). U(z)=X(z)+az^{-1}U(z)+bz^{-2}U(z). よって U(z)=X(z)1−az−1−bz−2 U(z)=\frac{X(z)}{1-az^{-1}-bz^{-2}} であり、伝達関数は H(z)=Y(z)X(z)=1+cz−11−az−1−bz−2. H(z)=\frac{Y(z)}{X(z)} =\frac{1+cz^{-1}}{1-az^{-1}-bz^{-2}}.

  3. a=3/4, b=−1/8, c=1a=3/4,\ b=-1/8,\ c=1 のとき H(z)=1+z−11−34z−1+18z−2=1+z−1(1−12z−1)(1−14z−1). H(z)=\frac{1+z^{-1}}{1-\frac{3}{4}z^{-1}+\frac{1}{8}z^{-2}} = \frac{1+z^{-1}}{(1-\frac{1}{2}z^{-1})(1-\frac{1}{4}z^{-1})}. 極は z=12,z=14 z=\frac{1}{2},\quad z=\frac{1}{4} であり、どちらも単位円の内側にある。したがって因果的に実現する場合、このフィルタは BIBO 安定である。

  4. 入力が x(n)=(−1)n (n≥0)x(n)=(-1)^n\ (n\ge0) であるから X(z)=∑n=0∞(−z−1)n=11+z−1. X(z)=\sum_{n=0}^{\infty}(-z^{-1})^n=\frac{1}{1+z^{-1}}. したがって Y(z)=H(z)X(z)=1(1−12z−1)(1−14z−1). Y(z)=H(z)X(z) = \frac{1}{(1-\frac{1}{2}z^{-1})(1-\frac{1}{4}z^{-1})}. 部分分数分解すると Y(z)=21−12z−1−11−14z−1. Y(z)=\frac{2}{1-\frac{1}{2}z^{-1}} -\frac{1}{1-\frac{1}{4}z^{-1}}. よって y(n)=2(12)n−(14)n(n≥0) y(n)=2\left(\frac{1}{2}\right)^n-\left(\frac{1}{4}\right)^n \qquad(n\ge0) である。

    概形は、y(0)=1, y(1)=3/4, y(2)=7/16y(0)=1,\ y(1)=3/4,\ y(2)=7/16 から始まり、正の値を保ったまま 0 に単調に近づく。

最終答

H(z)=1+cz−11−az−1−bz−2,y(n)=2(12)n−(14)n (n≥0). H(z)=\frac{1+cz^{-1}}{1-az^{-1}-bz^{-2}},\qquad y(n)=2\left(\frac12\right)^n-\left(\frac14\right)^n\ (n\ge0).

第4問 — 回路と力センサ

モータ回路の採点観点

単に「スイッチ」と書くだけでなく、制御信号で大電流を切り替えるトランジスタまたは MOSFET であることを示すとよい。誘導性負荷であるモータには逆起電力が出るため、保護ダイオードにも触れると実装理解が伝わる。

Wheatstone ブリッジの式

e/E=Kε/4e/E=K\varepsilon/4 は 1 ゲージ法の小信号近似である。2 ゲージ法や 4 ゲージ法では係数が変わるため、答案では「1 ゲージ法なら」と条件を明示するのが安全である。

力の位置推定の検算

外力が中心に加わるなら左右・上下の反力差は 0 になり、式から x=y=0x=y=0 が出る。また外力が右側に寄るほど F1+F4F_1+F_4 が F2+F3F_2+F_3 より大きくなり、x>0x>0 になるので符号も図と整合する。

解答

  1. LL はインダクタンス、またはその素子であるインダクタを表す。受動符号規約で電圧を EE、電流を II とすると E=LdIdt E=L\frac{dI}{dt} である。

    CC はキャパシタンス、またはその素子であるコンデンサを表す。関係式は I=CdEdt I=C\frac{dE}{dt} であり、同値に E(t)=1C∫I(t) dt+E(0) E(t)=\frac{1}{C}\int I(t)\,dt+E(0) と書ける。

  2. 1.5 kΩ1.5\,\mathrm{k\Omega} の抵抗 1 本と、1.5 kΩ1.5\,\mathrm{k\Omega} を 2 本直列にした 3.0 kΩ3.0\,\mathrm{k\Omega} の枝を並列にする。 Req=1.5×3.01.5+3.0 kΩ=1.0 kΩ. R_{\mathrm{eq}} = \frac{1.5\times3.0}{1.5+3.0}\,\mathrm{k\Omega} = 1.0\,\mathrm{k\Omega}. 概念図で書けば次の接続である。

  3. DC モータをオン・オフする低側スイッチとして、パワートランジスタまたは N チャネル MOSFET を入れる。制御信号はトランジスタのベースまたは MOSFET のゲートに与え、モータ電流を制御する。実回路では、モータの逆起電力からスイッチ素子を守るため、モータに並列にフライバックダイオードを入れる。

  4. 代表的には PWM 制御を用いる。一定周期の矩形波を制御信号として与え、そのデューティ比を変えると、モータに加わる平均電圧が変わる。周期を機械系の応答より十分短くすれば、回転速度はほぼ連続的に変化する。

    1. ひずみゲージの微小な抵抗変化を読む代表的な回路は Wheatstone ブリッジである。4 抵抗の橋形回路に入力電圧 EE を印加し、中央 2 点間の差動電圧 ee を測る。

      ゲージ率を KK とすると ΔRR=Kε \frac{\Delta R}{R}=K\varepsilon である。1 枚のひずみゲージだけが変化する 1 ゲージ法の小信号近似では eE≃14ΔRR=Kε4 \frac{e}{E}\simeq \frac{1}{4}\frac{\Delta R}{R} = \frac{K\varepsilon}{4} なので ε≃4eKE \varepsilon\simeq \frac{4e}{KE} である。符号は、ゲージをブリッジのどの腕に入れ、出力端子をどちら向きに取るかで反転する。

    2. 4 隅の座標を s1=(a,b),s2=(−a,b),s3=(−a,−b),s4=(a,−b) s_1=(a,b),\quad s_2=(-a,b),\quad s_3=(-a,-b),\quad s_4=(a,-b) とする。各支持点の上向き反力を F1,…,F4F_1,\ldots,F_4 と読むと、鉛直方向のつり合いから F1+F2+F3+F4=F+Mg F_1+F_2+F_3+F_4=F+Mg である。したがって外力の大きさは F=F1+F2+F3+F4−Mg. F=F_1+F_2+F_3+F_4-Mg. 重力は板の中心に働くので、中心まわりのモーメントのつり合いから Fx=a(F1+F4−F2−F3), Fx=a(F_1+F_4-F_2-F_3), Fy=b(F1+F2−F3−F4) Fy=b(F_1+F_2-F_3-F_4) である。よって x=a(F1+F4−F2−F3)F1+F2+F3+F4−Mg, x=\frac{a(F_1+F_4-F_2-F_3)}{F_1+F_2+F_3+F_4-Mg}, y=b(F1+F2−F3−F4)F1+F2+F3+F4−Mg. y=\frac{b(F_1+F_2-F_3-F_4)}{F_1+F_2+F_3+F_4-Mg}.

最終答

E=L dI/dt,I=C dE/dt,Req=1.0 kΩ,F=∑i=14Fi−Mg,x=a(F1+F4−F2−F3)∑iFi−Mg,y=b(F1+F2−F3−F4)∑iFi−Mg. \begin{gathered} E=L\,dI/dt,\qquad I=C\,dE/dt,\\ R_{\mathrm{eq}}=1.0\,\mathrm{k\Omega},\qquad F=\sum_{i=1}^4 F_i-Mg,\\ x=\frac{a(F_1+F_4-F_2-F_3)}{\sum_iF_i-Mg},\qquad y=\frac{b(F_1+F_2-F_3-F_4)}{\sum_iF_i-Mg}. \end{gathered}

第5問 — チューリング・テスト

採点されやすい構成

名称、方法の概略、影響、批判を分けて書くと読みやすい。第 3 小問では、指定語をただ並べるのではなく、「自然言語処理を促した」「中国語の部屋が意味理解を批判した」のように役割を結び付ける必要がある。

よくある不足

チューリング・テストを「機械と人間が会話する」とだけ書くと、判定者が相手を見られないこと、会話内容だけで判定すること、内面ではなく振る舞いを基準にすることが抜ける。批判では「合格しても理解を保証しない」という点を明示する。

指定語の使い方

答案では指定語に下線を引くよう求められているため、TeX では |...| を用いた。英語名やカタカナ語は、本文中で自然な役割を持たせて使うのがよい。

解答

  1. この判定方法は、一般にチューリング・テストと呼ばれる。

  2. 概略は次の通りである。判定者は、相手が人間か機械かを直接見ることができない状態で、文字による質疑応答を行う。判定者は会話の内容だけを手がかりに、人間と機械を区別しようとする。十分な時間や質問を与えても判定者が機械を人間と区別できなければ、その機械は知的に振る舞っているとみなす。これは「内面に本当に心があるか」ではなく、観察可能な言語的振る舞いを基準にする方法である。

  3. 答案例を示す。

    チューリング・テストは、知能を内面的な実体ではなく、対話に現れる振る舞いとして評価する点で人工知能研究に大きな影響を与えた。特に、機械が人間らしく応答するためには、文を解析し、文脈に合った返答を生成する必要があるため、自然言語処理 の発展を強く促した。また、文字だけでなく音声対話に拡張すれば、音響認識や発話生成を含む 音声処理 も重要になる。実際、初期の対話システムである Eliza は、単純なパターン変換でも相手が意味を理解しているかのような印象を与えられることを示した。このことは、テストに合格するように見えることと、実際に理解していることが同じではないという批判にもつながる。

    哲学的批判として有名なのが John Searle の 中国語の部屋 である。これは、記号操作の規則に従って正しい中国語応答を返せても、操作者が中国語を理解しているとは限らない、という議論である。つまり、チューリング・テストは構文的な応答能力を測れるが、意味理解や意識の有無を直接測るものではない。また、人間らしい会話には日常的な 常識 が不可欠であり、表面的な会話の模倣だけでは長い対話や状況判断で破綻しやすい。さらに、Loebner Prize のような競技はこのテストを具体化したが、短時間で審査員を欺く戦略が重視され、知能の本質的理解とはずれる場合がある。したがって、チューリング・テストは人工知能の実用的な目標を与えた一方で、知性を「人間らしく見える会話」に狭く限定する危険も持つ。

最終答

名称はチューリング・テスト。文字対話で判定者が人間と機械を区別できるかを見る方法である。

第6問 — 浮動小数点と記憶装置

IEEE 754 の検算

指数部は実指数に 127 を足した値である。0.50.5 だけ実指数が −1-1 なので指数部は 126 になる。1.25=1+1/4=1.0121.25=1+1/4=1.01_2 であり、暗黙の先頭 1 は格納せず、小数部の 01 だけを仮数部に入れる。

RAID の書き分け

RAID 0 は高速化の方式であって、信頼性は上がらない。信頼性を説明する問題では、ミラーリング、パリティ、分散パリティ、二重パリティの違いを短く整理するとよい。

DMA の本質

DMA は「CPU を使わない」のではなく、CPU が転送を設定した後、データ移動の本体を専用機構に任せる方式である。大容量 I/O の高速化だけでなく、CPU が他の処理を進められる点も重要である。

解答

  1. IEEE 754 単精度は、符号 1 ビット、指数 8 ビット、仮数部 23 ビットである。正の数なので符号ビットは全て 00 である。

    値

    2 進正規化表現

    指数部

    16 進表記

    0.50.5

    1.0×2−11.0\times2^{-1}

    126=0x7E126=\texttt{0x7E}

    3F000000

    1.01.0

    1.0×201.0\times2^0

    127=0x7F127=\texttt{0x7F}

    3F800000

    1.251.25

    1.012×201.01_2\times2^0

    127=0x7F127=\texttt{0x7F}

    3FA00000

    1.251.25 では、仮数部の 2 ビット目だけが 1 になり、仮数部は 0x200000 である。

  2. RAID は複数のディスクを組み合わせ、性能や信頼性を高める構成法である。代表的なレベルは次の通りである。

    • RAID 0: データを複数ディスクに分散して書くストライピングである。速度と容量効率は高いが冗長性はない。

    • RAID 1: 同じデータを複数ディスクに書くミラーリングである。片方が故障してもデータを保持できるが、容量効率は下がる。

    • RAID 3/4: データを分散し、専用のパリティディスクを置く方式である。1 台故障まではパリティから復元できるが、パリティディスクがボトルネックになりやすい。

    • RAID 5: ブロック単位でストライピングし、パリティも各ディスクに分散する方式である。1 台故障に耐え、RAID 4 より負荷を分散できる。

    • RAID 6: 2 種類のパリティを持つ方式である。2 台同時故障に耐えられるが、書き込みコストは大きい。

  3. DMA は Direct Memory Access の略で、CPU がデータを 1 語ずつ転送するのではなく、DMA コントローラまたはバスマスタ機能を持つ入出力装置が主記憶へ直接読み書きする方式である。CPU は転送元、転送先、サイズなどを設定し、完了時に割込みで通知を受ける。

    典型例は、ディスクから主記憶へのブロック読み込み、ネットワークインタフェースとメモリ間のパケット転送、音声・動画データの連続転送である。大きな連続データを扱う処理では、CPU のコピー負荷と割込み回数を減らせるため有効である。

最終答

0.5 = 3F000000, 1.0 = 3F800000, 1.25 = 3FA00000. RAID は冗長化・ストライピング、DMA は装置と主記憶の直接転送である。

第7問 — ページ置換

LRU の計算

LRU は「最後に使われた時刻が最も古いページ」を捨てる。最初の 4 参照で 0,1,2,3 が入り、4 を参照した時点では 2 が最も古いので 2 が追い出される。この後 2,3,4 が連続してフォールトするため合計 8 になる。

Belady の異常

FIFO は入った順に追い出すだけなので、ページ枠を増やしても、少ない枠の保持集合が多い枠の保持集合に含まれるとは限らない。そのため 3 枠では残っていたページが、4 枠では先に追い出されることがある。

近似 LRU と実 OS

厳密 LRU には全参照の時刻順管理が必要で、ハードウェア支援なしには重い。現実の OS は参照ビットを周期的に見て「最近使ったらしい」ページを残す。完全な LRU ではなくても、局所性を大きく外さないことが重要である。

解答

  1. 参照列に対して LRU、ページ枠数 4 で追跡すると、ページフォールトは次の位置で起こる。 参照012301401234結果FFFFHHFHHFFF \begin{array}{c|cccccccccccc} \text{参照} &0&1&2&3&0&1&4&0&1&2&3&4\\ \hline \text{結果} &F&F&F&F&H&H&F&H&H&F&F&F \end{array} ここで FF は fault、HH は hit を表す。したがってページフォールト回数は 8 8 である。

  2. FIFO でページ枠数 3 の場合は 参照012301401234結果FFFFFFFHHFFH \begin{array}{c|cccccccccccc} \text{参照} &0&1&2&3&0&1&4&0&1&2&3&4\\ \hline \text{結果} &F&F&F&F&F&F&F&H&H&F&F&H \end{array} となり、ページフォールト回数は 99 である。

    FIFO でページ枠数 4 の場合は 参照012301401234結果FFFFHHFFFFFF \begin{array}{c|cccccccccccc} \text{参照} &0&1&2&3&0&1&4&0&1&2&3&4\\ \hline \text{結果} &F&F&F&F&H&H&F&F&F&F&F&F \end{array} となり、ページフォールト回数は 1010 である。ページ枠数を 3 から 4 に増やしたのに、FIFO ではフォールトが増えている。これは Belady の異常の例である。

  3. LRU では、ページ枠数が kk のとき保持されるページ集合は、ページ枠数が k+1k+1 のとき保持されるページ集合の部分集合になる。これは LRU が「最近使われた順」の上位 kk 個を保持するスタック性を持つためである。したがって、kk 枠でヒットする参照は k+1k+1 枠でも必ずヒットし、ページフォールト回数は増えない。

  4. 実現可能な近似として Clock アルゴリズム、または Second Chance アルゴリズムがある。各ページに参照ビットを持たせ、ページ置換時に環状リストを走査する。参照ビットが 1 のページは 0 に戻して置換を見送り、参照ビットが 0 のページを置換対象にする。これにより、最近参照されたページにもう一度残る機会を与えられる。

  5. 現実の OS では、単純な FIFO だけに頼らず、参照ビットや更新ビットを用いた active/inactive リスト、Clock 系の近似 LRU、ワーキングセット制御などを組み合わせる。頻繁に使われるページは active 側に昇格させ、しばらく参照されないページを inactive 側から回収する。また、I/O 中のページやカーネルが必要とするページはページロックにより置換対象から外す。

最終答

LRU 4 枠のフォールトは 88。FIFO は 3 枠で 99、4 枠で 1010 となり、ページ枠を増やしても悪化する例になっている。

第8問 — C 言語とリスト操作

sort の採点観点

問題は標準ライブラリ関数の呼び出しではなく、関数本体の記述を求めている。昇順・降順のどちらでもよいが、境界条件として n=0,1n=0,1 でも壊れないコードにする必要がある。上の実装はそのまま何もせず終了する。

reverse の不変条件

ループの各時点で、`prev` は反転済み部分リストの先頭、`cur` は未処理部分リストの先頭を指す。`next` を先に保存してから `cur->next` を書き換えないと、未処理部分への参照を失う。

典型的な不足

`reverse` で新しいノードを作る必要はない。引数として渡されたデータ構造を改変してよいので、ポインタの向きだけを変える実装が簡潔で、メモリ確保失敗も起こらない。

解答

  1. 昇順に整列する例として、挿入ソートを用いる。

    挿入ソートは単純で、配列をその場で書き換える。最悪時間計算量は O(n2)O(n^2)、追加記憶量は O(1)O(1) である。

  2. 連結リストをその場で逆順にするには、現在位置、直前のノード、次のノードを持ってポインタを張り替えればよい。

    ループが終わると、`prev` が元の末尾ノード、すなわち反転後の先頭ノードを指している。時間計算量は O(n)O(n)、追加記憶量は O(1)O(1) である。

最終答

挿入ソートで配列をその場で整列でき、連結リストは `next` ポインタを順に反転すればよい。

第9問 — IP ヘッダと NAT

断片化フィールドの関係

Identification だけでは断片の順序は分からない。Flags の MF で続きの有無を示し、Fragment Offset で元データグラム内の位置を示す。3 つを合わせて再構成が可能になる。

不変フィールドの注意

「Source Address と Destination Address は不変」と答えるのは通常のルータ転送では正しい。ただし NAT を通る場合は書き換えられる。第 6 小問では通常の IP 転送、第 7 小問では NAT を別物として説明すると混乱しない。

移行問題の答案

単に「IPv6 にすればよい」では不十分である。導入コスト、互換性、ミドルボックス、NAT による延命、運用ノウハウ不足という障害を挙げ、その上で段階的移行策を書くと説得力が出る。

解答

  1. Version には IP プロトコルの版番号が入る。IPv4 パケットなら 4 である。このフィールドがあることで、受信側やルータはヘッダ形式を識別し、どの規則で解釈すべきかを判断できる。

  2. Identification は、元の IP データグラムを識別する値であり、断片化されたフラグメントを再構成するときに同じデータグラム由来であることを示す。Flags には、断片化禁止を表す DF や後続フラグメントの存在を表す MF などが入る。Fragment Offset は、そのフラグメントが元のデータグラムのどの位置に対応するかを示す値で、8 オクテット単位で表される。

  3. Time to Live は、パケットがネットワーク内を無限に巡回することを防ぐための寿命である。各ルータは転送時に TTL を少なくとも 1 減らし、0 になったパケットを破棄する。これにより経路ループが起きてもパケットが残り続けない。

  4. Protocol は、IP ペイロードをどの上位プロトコルに渡すかを示す番号である。例えば ICMP、TCP、UDP などを識別し、受信ホストで適切な処理へ多重分離するために使われる。

  5. Header Checksum は、IPv4 ヘッダ部分の誤り検出のためにある。TTL などヘッダ値がルータで変わるため、ルータは転送時にチェックサムを更新する。なお、チェック対象は IP ヘッダであり、ペイロード全体ではない。

  6. 通常のルータ転送で不変なものと更新されるものは、概ね次のように分けられる。

    |p0.46 端末間で基本的に不変

    ルータで更新され得る

    Version, IHL, Total Length, Identification, Flags, Fragment Offset, Protocol, Source Address, Destination Address, ペイロード

    TTL, Header Checksum, DSCP/ECN, Options の一部

    TTL はループ防止のため転送ごとに減る。TTL が変わるので Header Checksum も更新される。輻輳通知や管理ポリシーにより DSCP/ECN が変更される場合がある。経路 MTU に合わせて断片化が行われる場合には、Total Length、Flags、Fragment Offset、Header Checksum も変わる。NAT はアドレスやポートも書き換えるが、これは通常の IP ルータ処理に加えられた変換機能である。

  7. NAT では、内部ネットワークのプライベートアドレスを使う端末が外部へ通信するとき、NAT 装置が送信元アドレスをグローバルアドレスに書き換える。NAPT では送信元ポート番号も同時に書き換え、 (内部 IP,内部ポート)↔(外部 IP,変換後ポート) (\text{内部 IP},\text{内部ポート}) \leftrightarrow (\text{外部 IP},\text{変換後ポート}) の対応を変換表に保存する。

    外部サーバからの応答は、宛先アドレスと宛先ポートを見て変換表に照合され、内部端末のアドレスとポートへ戻される。このとき IP ヘッダチェックサム、TCP/UDP チェックサムも再計算される。外部から内部へ新規接続を受けたい場合は、静的 NAT やポートフォワーディングなどの設定が必要になる。

  8. IP の新バージョンへの移行が進みにくい理由は、IPv4 と IPv6 がそのままでは互換でなく、全ての端末、ルータ、ミドルボックス、運用手順、監視システム、アプリケーションを一度に変えることが難しいからである。また NAT により IPv4 アドレス枯渇の痛みが緩和され、利用者に直接見える利益が小さくなったことも移行を遅らせた。

    解決には、双方向互換を完全に待つのではなく、デュアルスタック、NAT64/DNS64、トンネル、IPv6 対応を調達条件にすること、主要サービスを IPv6 で確実に提供することが必要である。特に、運用者にとって IPv6 を入れる方が長期的に安く安全になるよう、アドレス設計、監視、セキュリティ設定の標準化を進めるべきである。

最終答

Version は IP 版番号、TTL と Header Checksum は通常ルータごとに更新される。NAT はアドレス・ポート対応表を使ってパケットを書き換え、IPv4 アドレス不足を緩和する。

第10問 — 組合せ回路と順序回路

加算器の見分け方

全加算器の基本式 Yi=Ai⊕Bi⊕CiY_i=A_i\oplus B_i\oplus C_i と Ci+1=AiBi+(Ai⊕Bi)CiC_{i+1}=A_iB_i+(A_i\oplus B_i)C_i を読めれば、リップルキャリーか先読みかを判定できる。先読み型では Pi,GiP_i,G_i を使い、C1C_1 から C4C_4 を組合せ論理で直接作る。

JK フリップフロップ

J=K=1J=K=1 のとき反転する点が T フリップフロップとしての利用につながる。カウンタの問題では、各段が 2 分周すること、3 段なら 8 状態を持つことを明記すればよい。

温度計コードから 2 進コードへ

比較器出力は 00001,00011,00111,01111,1111100001,00011,00111,01111,11111 のように 1 が連続する。まず隣接差分で one-hot に変換し、それを 2 進数に符号化すると設計ミスが少ない。しきい値ちょうどの入力では比較器の仕様やノイズで不定になるため、実用上はヒステリシスやラッチも考える。

解答

    1. 各桁に全加算器を並べた 4 ビット加算器である。各ビットについて Pi=Ai⊕Bi,Gi=AiBi P_i=A_i\oplus B_i,\qquad G_i=A_iB_i とおくと Yi=Pi⊕Ci,Ci+1=Gi+PiCi Y_i=P_i\oplus C_i,\qquad C_{i+1}=G_i+P_iC_i である。下位桁の桁上がり CiC_i が次の桁へ順に伝わるので、リップルキャリー加算器である。

    2. 同じく 4 ビット加算器だが、桁上がりを先読みする carry lookahead adder である。例えば C1=G0+P0C0,C2=G1+P1G0+P1P0C0,C3=G2+P2G1+P2P1G0+P2P1P0C0,C4=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0. \begin{aligned} C_1&=G_0+P_0C_0,\\ C_2&=G_1+P_1G_0+P_1P_0C_0,\\ C_3&=G_2+P_2G_1+P_2P_1G_0+P_2P_1P_0C_0,\\ C_4&=G_3+P_3G_2+P_3P_2G_1+P_3P_2P_1G_0+P_3P_2P_1P_0C_0. \end{aligned} これにより、桁上がりが下位桁から 1 段ずつ伝搬するのを待たずに、複数の桁上がりを並列に計算できる。利点は加算遅延が小さいことである。

    1. 回路は JK フリップフロップである。次状態 Q+Q^+ の真理値表を Karnaugh 図の形に並べると次のようになる。

      JK=00JK=00

      0101

      1111

      1010

      Q=0Q=0

      0

      0

      1

      1

      Q=1Q=1

      1

      0

      0

      1

      これを簡単化すると Q+=JQ‾+K‾Q Q^+=J\overline{Q}+\overline{K}Q である。したがって J,KJ,K の働きは次の通りである。

      JKJK

      動作

      00

      保持

      01

      リセット

      10

      セット

      11

      反転

    2. 各 JK フリップフロップで J=K=1J=K=1 になっているため、各段は有効クロックのたびに反転する。第 1 段の出力を B0B_0 とすると、B0B_0 は入力クロックの 2 分周になる。第 2 段は第 1 段の反転出力をクロックとして受けるので B1B_1 はさらに 2 分周、第 3 段の B2B_2 はさらに 2 分周になる。

      したがって全体は 3 ビットの非同期リップルカウンタであり、初期値を 000000 とすれば、エッジの取り方に応じて 000,001,010,011,100,101,110,111 000,001,010,011,100,101,110,111 のように 8 状態を周期的に巡回する。

  1. 比較器出力 A0,…,A4A_0,\ldots,A_4 は、入力電圧がしきい値を越えるにつれて下位から 1 になる温度計コードとみなせる。有効な入力を レベルA4A3A2A1A0S2S1S0000001000100011001200111010301111011411111100 \begin{array}{c|ccccc|ccc} \text{レベル} & A_4&A_3&A_2&A_1&A_0&S_2&S_1&S_0\\ \hline 0&0&0&0&0&1&0&0&0\\ 1&0&0&0&1&1&0&0&1\\ 2&0&0&1&1&1&0&1&0\\ 3&0&1&1&1&1&0&1&1\\ 4&1&1&1&1&1&1&0&0 \end{array} とする。

    境界を取り出す信号 T0=A0A1‾,T1=A1A2‾,T2=A2A3‾,T3=A3A4‾,T4=A4 \begin{aligned} T_0&=A_0\overline{A_1},\\ T_1&=A_1\overline{A_2},\\ T_2&=A_2\overline{A_3},\\ T_3&=A_3\overline{A_4},\\ T_4&=A_4 \end{aligned} を作れば、これはレベル 0 から 4 の one-hot 表現である。したがって白い箱の論理は S2=T4, S_2=T_4, S1=T2+T3, S_1=T_2+T_3, S0=T1+T3 S_0=T_1+T_3 とすればよい。すなわち S2=A4,S1=A2A3‾+A3A4‾, S_2=A_4,\qquad S_1=A_2\overline{A_3}+A_3\overline{A_4}, S0=A1A2‾+A3A4‾. S_0=A_1\overline{A_2}+A_3\overline{A_4}.

最終答

図 A5-1 はリップルキャリー 4 ビット加算器、図 A5-2 はキャリールックアヘッド加算器。図 A5-3 は JK フリップフロップ、図 A5-5 は 3 ビット非同期カウンタ。A/D 変換の符号化は S2=A4, S1=A2Aˉ3+A3Aˉ4, S0=A1Aˉ2+A3Aˉ4S_2=A_4,\ S_1=A_2\bar A_3+A_3\bar A_4,\ S_0=A_1\bar A_2+A_3\bar A_4。

第11問 — 空間データと距離減衰

用語説明の粒度

用語問題では、定義だけでなく短い例を添えると評価されやすい。ラスターデータなら衛星画像や標高メッシュ、属性データなら人口や土地利用、混合画素なら都市と植生が同一画素に入る例が分かりやすい。

誤差と不確実性

誤差は真値との差として比較的数値化しやすい。一方、不確実性は分類境界の曖昧さやデータ取得条件の違いも含む。両者を同じ意味で書かないことが大切である。

距離の解釈

距離抵抗は物理距離だけでなく、時間、費用、心理的負担として現れる。空間相互作用モデルでは、どの距離を使うかで結果が大きく変わるため、分析目的に合った距離尺度を選ぶ必要がある。

解答

    1. ラスターデータとは、空間を格子状のセルに分割し、各セルに標高、土地利用、反射強度などの値を持たせるデータである。属性データとは、空間上の対象に付随する性質、例えば人口、用途、名称、面積、所有者などを表すデータである。混合画素問題とは、1 つの画素の中に複数の地物や土地被覆が含まれるため、その画素値が単一対象を正確に表さなくなる問題である。

    2. 空間データとは、位置や形状を持つデータであり、点、線、面、ラスタなどで表される。誤差は、測量値や座標値が真値からずれる量である。不確実性は、真値が一意に確定できないことや、分類、境界、測定時刻、解像度などに起因して解釈に幅が残ることを含む、より広い概念である。

    3. GPS は人工衛星からの電波を用いて地球上の位置を求める測位システムである。緯度・経度は地球上の位置を角度で表す座標で、緯度は赤道から南北方向、経度は基準子午線から東西方向の角度である。世界測地系は、地球全体に整合する測地基準であり、異なる国や地域の地理情報を同じ基準で扱うために重要である。

    1. 距離抵抗または距離減衰とは、二地点間の距離が大きくなるほど、人や物、情報、サービス利用などの相互作用が弱くなる傾向である。例として、店舗への来店頻度は自宅から遠くなるほど下がりやすい。また、通勤・通学、人口移動、医療施設の利用、対面交流も移動時間や費用の増加により距離抵抗を受ける。

    2. 空間相互作用モデルは、地域間の流動量や交流量を、発地・着地の規模と距離抵抗で説明するモデルである。代表例である重力モデルでは、地域 ii と jj の相互作用 TijT_{ij} を Tij=kPiαPjβdijγ T_{ij}=k\frac{P_i^\alpha P_j^\beta}{d_{ij}^{\gamma}} のように表す。ここで Pi,PjP_i,P_j は人口、雇用、商業規模などの吸引力、dijd_{ij} は距離や時間、費用を表す。距離抵抗は dij−γd_{ij}^{-\gamma} や exp⁡(−γdij)\exp(-\gamma d_{ij}) の形で入れられる。実務では、買い物行動、交通需要、通勤流動、都市間人口移動などの推定に使われる。

    3. 物理的距離は地図上の直線距離や道路距離として測れるが、人間が感じる認知距離はそれだけでは決まらない。移動時間、費用、乗換回数、坂道、混雑、治安、土地勘、心理的な境界、行政区分などが認知距離を伸ばしたり縮めたりする。例えば同じ 5 km でも、鉄道で直結していれば近く感じられ、乗換が多い場合や道が分かりにくい場合は遠く感じられる。したがって、人間行動を扱う空間分析では、物理距離だけでなく時間距離、費用距離、ネットワーク距離、心理的障壁を組み込む必要がある。

最終答

空間データは位置を持つデータであり、距離減衰は距離が増すほど相互作用が弱くなる性質である。重力モデルでは規模が相互作用を強め、距離が相互作用を弱める。

年度別の解答例(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 変換とデジタルフィルタ

2010年度の出題内容

全11問

この11問の分野は電磁気学・回路2問・微分方程式1問です。

大問分野主題解説の小見出し最終答
第1問微分方程式線形微分方程式虚数根から実数解を作る理由 / 極大点の検算あり
第2問—漸化式と高速計算計算量の見分け方 / 周期性の証明で必要な点あり
第3問—z 変換とデジタルフィルタ符号の確認 / 安定性の判定あり
第4問電磁気学・回路回路と力センサモータ回路の採点観点 / Wheatstone ブリッジの式あり
第5問—チューリング・テスト採点されやすい構成 / よくある不足あり
第6問—浮動小数点と記憶装置IEEE 754 の検算 / RAID の書き分けあり
第7問—ページ置換LRU の計算 / Belady の異常あり
第8問—C 言語とリスト操作sort の採点観点 / reverse の不変条件あり
第9問—IP ヘッダと NAT断片化フィールドの関係 / 不変フィールドの注意あり
第10問電磁気学・回路組合せ回路と順序回路加算器の見分け方 / JK フリップフロップあり
第11問—空間データと距離減衰用語説明の粒度 / 誤差と不確実性あり

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

3テーマ

東京大学の公式過去問

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