院試hub

大阪大学 院試 過去問 解答例

阪大 情報科学研究科 専門科目(情報工学) 2024年度 院試 過去問 解答例・解説(全7問)

全7問。情報2問・数学1問・電磁気学・回路1問。テーマタグは5件(留数定理・伝達関数・計算量理論)。

最終更新:

このページで公開
解説7問と大問1問の途中式・最終答(全7問)
解答PDFに収録
途中式と最終答(最終答つき6問)
問題本文
非収録

阪大 専門科目(情報工学) 2024年度 院試 過去問の出題内容(全7問)

この7問の分野は情報2問・数学1問・電磁気学・回路1問です。

大問分野主題解説の小見出し最終答
第1問情報アルゴリズムとプログラミング(挿入ソート)挿入ソートで見るべき場所 / 二分探索の終了位置あり
第2問情報計算機システムとシステムプログラム(メモリ管理)オーバーレイは最大同時使用量を見る / Beladyの異常の判定あり
第3問—離散構造同型判定では不変量で候補を減らす / ラベル付きと非同型代表元の違いあり
第4問—計算理論Chomsky標準形へ直すときの注意 / CYK表の読み方あり
第5問—ネットワークCSMA の要点 / CSMA/CD と無線の違いあり
第6問電磁気学・回路電子回路と論理設計二端子対回路の符号規約 / 平均電力式の見通しあり
第7問数学数学解析と信号処理正則関数の線積分 / コーシーの積分定理と留数定理の使い分け—

2024年度の出題テーマと、同じテーマを出した他大学・他年度

この年度は2問に5テーマが出ています。

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

大問数
2023年度 7問 → 2024年度 7問
2023年度のページを見る

第1問 — アルゴリズムとプログラミング(挿入ソート)

挿入ソートで見るべき場所

本問では, 探索方法を線形探索から二分探索に変えても, 配列で挿入ソートを実装している限り要素移動のコストが残る点が重要である. 探索だけを見ると O(nlog⁡n)O(n\log n) に見えやすいが, 代入によるシフトの総数は逆順入力で Θ(n2)\Theta(n^2) になる.

二分探索の終了位置

プログラム2は「同じ値があれば後ろに入れる」形の上側挿入位置を返す. 本問では整列対象がすべて異なる場合を考えるので, leftleft は単に keykey より小さい要素の個数と一致する. ループ終了後に rightright ではなく leftleft を使う理由は, leftleft が未確定区間の左端として挿入位置を表すからである.

解答

(1-1) 3回目の挿入直後の配列

プログラム1は, 先頭から順に未整列要素を1個取り出し, すでに昇順になっている区間へ線形探索で挿入する挿入ソートである. 与えられた入力では, 整列対象は 8, 4, 5, 1, 2 8,\ 4,\ 5,\ 1,\ 2 である.

  1. key=4key=4 を 88 の前に挿入するので, 配列は (4,8,5,1,2)(4,8,5,1,2).
  2. key=5key=5 を 44 と 88 の間に挿入するので, 配列は (4,5,8,1,2)(4,5,8,1,2).
  3. key=1key=1 を先頭に挿入するので, 8,5,48,5,4 を1つずつ右へずらしたあと, 配列は (1,4,5,8,2)(1,4,5,8,2).

したがって, 20行目が3回目に実行された直後の値は array[0]=1,array[1]=4,array[2]=5,array[3]=8,array[4]=2. array[0]=1,\quad array[1]=4,\quad array[2]=5,\quad array[3]=8,\quad array[4]=2.

(1-2) 18行目の実行回数を最大にする入力

18行目は, 挿入位置より右にある既整列要素を1つ右へずらす代入である. 各回でこの回数を最大にするには, 取り出した keykey がその時点の既整列区間の全要素より小さくなればよい. つまり, 入力全体を降順にすれば, ii 回目の挿入で ii 回ずつシフトが発生する.

与えられた5個の値を降順に並べると, 最大回数を与える入力は次の通りである. 585421 \begin{array}{c} 5\\ 8\\ 5\\ 4\\ 2\\ 1 \end{array}

(1-3) プログラム1の最悪時間計算量

最悪の場合, ii 回目の挿入で探索にもシフトにも ii に比例する回数が必要になる. 全体では ∑i=1n−1i=n(n−1)2 \sum_{i=1}^{n-1} i = \frac{n(n-1)}{2} に比例する処理が発生する. よって最悪時間計算量は O(n2)O(n^2) である.

(2-1) 二分探索を用いるプログラム2の空欄

プログラム2は, 既整列区間 array[0],…,array[i−1]array[0],\ldots,array[i-1] に対して, keykey を挿入すべき最初の位置を二分探索で求める. 条件 array[mid]>keyarray[mid] > key が真なら, 挿入位置は midmid 以下にあるので右端を mid−1mid-1 に移す. 偽なら, array[mid]≤keyarray[mid]\le key なので左端を mid+1mid+1 に移す. ループ終了時には leftleft が挿入位置を指す. (A)=mid−1,(B)=mid+1,(C)=left. (A)=mid-1,\qquad (B)=mid+1,\qquad (C)=left.

(2-2) プログラム2の最悪時間計算量

挿入位置の探索は二分探索により各回 O(log⁡i)O(\log i) になる. しかし, 挿入位置を見つけたあとに要素を右へずらす処理は残っており, 最悪の場合は各回 ii 個の要素を移動する. したがって支配的なのはシフト処理であり, ∑i=1n−1i=O(n2) \sum_{i=1}^{n-1} i = O(n^2) となる.

(2-3) 10行目の実行回数を最小にする並び順の要件

10行目は二分探索の各反復で1回実行される. ii 回目の挿入では, 長さ ii の既整列区間に対する二分探索を行うため, 挿入位置によって反復回数が変わる. 回数を最小にするには, 各 ii について, 二分探索木で最も浅い外部節点に対応する挿入位置へ keykey が入るように並べればよい.

具体的には, 毎回の新しい要素が, その時点の既整列列のほぼ中央の隙間へ挿入されるような順序であればよい. 昇順や降順のように端へ挿入し続ける順序は, 一般には最小にならない.

(2-4) 最小値

長さ ii の既整列区間に対する二分探索では, 挿入位置は i+1i+1 個の隙間のいずれかである. このプログラムの中央値選択では, 最短の外部節点の深さは ⌊log⁡2(i+1)⌋ \left\lfloor \log_2(i+1) \right\rfloor である. したがって, i=1,2,…,n−1i=1,2,\ldots,n-1 の全挿入にわたる10行目の実行回数の最小値は cmin⁡=∑i=1n−1⌊log⁡2(i+1)⌋=∑m=2n⌊log⁡2m⌋. c_{\min} = \sum_{i=1}^{n-1}\left\lfloor \log_2(i+1) \right\rfloor = \sum_{m=2}^{n}\left\lfloor \log_2 m \right\rfloor . 閉じた形で書くなら, L=⌊log⁡2n⌋L=\lfloor\log_2 n\rfloor とおくと cmin⁡=∑k=1L−1k 2k+L (n−2L+1). c_{\min} = \sum_{k=1}^{L-1} k\,2^k + L\,(n-2^L+1). これは, 2k≤m≤2k+1−12^k\le m\le 2^{k+1}-1 の範囲で ⌊log⁡2m⌋=k\lfloor\log_2 m\rfloor=k となることから得られる.

最終答

array[0],array[1],array[2],array[3],array[4]=(1,4,5,8,2)array[0],array[1],array[2],array[3],array[4]=(1,4,5,8,2)

整列対象を 8,5,4,2,18,5,4,2,1 の順にする.

O(n2)O(n^2)

(A)=mid−1, (B)=mid+1, (C)=left(A)=mid-1,\ (B)=mid+1,\ (C)=left

O(n2)O(n^2)

各挿入で, 二分探索が最短で終了する中央付近の挿入位置に新要素が入る順序.

cmin⁡=∑m=2n⌊log⁡2m⌋\displaystyle c_{\min}=\sum_{m=2}^{n}\lfloor\log_2 m\rfloor

第2問 — 計算機システムとシステムプログラム(メモリ管理)

オーバーレイは最大同時使用量を見る

オーバーレイでは, 全モジュールを常駐させる必要はない. ただし, 実行のある時点で同時に必要になるモジュール群は同時に主記憶上へ置けなければならない. そのため, 各組合せの合計の最大値が最低必要容量になる.

Beladyの異常の判定

Beladyの異常は「ページ枠を増やしたのにページフォールトが増える」現象である. 本問のFIFOでは, 2枠から3枠で 10→910\to9, 3枠から4枠で 9→99\to9, 4枠から5枠で 9→59\to5 であり, 増加がない. したがって, 選択肢は「確認できなかった」と判断する.

計算機システムとシステムプログラム(メモリ管理)の途中式・最終答をPDFで見る

第3問 — 離散構造

同型判定では不変量で候補を減らす

グラフ同型を調べるときは, いきなり全単射を探すより, 次数列, 辺数, 三角形数, 連結成分, 補グラフなどの同型不変量で候補を絞るのが確実である. 不変量が違えば同型ではない. 一方で, 不変量が同じだけでは同型とは限らないため, 最後に具体的な対応を示す必要がある.

ラベル付きと非同型代表元の違い

Gn\mathcal{G}_n は頂点ラベルを固定したグラフ全体なので, 辺の有無を選ぶだけで 2(n2)2^{\binom{n}{2}} 個になる. これに対して In\mathcal{I}_n は同型なものを1つにまとめた代表元集合である. 同じ形のグラフでもラベルの付け替えによって高々 n!n! 個のラベル付きグラフができる, という見方が(2-4)の下界証明の中心である.

下界の意味

(2-4)の不等式は, 非同型な単純無向グラフの種類数が非常に大きいことを示している. 代表元数を正確に数えるにはBurnsideの補題などが有効だが, 本問では「各同型類の大きさは高々 n!n!」という粗い上界だけで十分な指数的下界が得られる.

離散構造の途中式・最終答をPDFで見る

第4問 — 計算理論

Chomsky標準形へ直すときの注意

本問では, 元の文法に空語生成と無用記号が混ざっている. そのまま機械的に規則を書き換えると, BB のように終端記号列を一切生成できない変数や, ε\varepsilon を経由する規則が残りやすい. 最初に言語の形を読み取り, 空語だけを除いてから, 必要な非空の基底を別規則で用意すると見通しがよい.

CYK表の読み方

Q[i][j]Q[i][j] は「部分列 ai⋯aja_i\cdots a_j を生成できる変数の集合」である. 長さ1は終端規則 X→aiX\to a_i だけで埋まり, 長さ2以上は分割位置 kk をすべて試して, 左半分を作る変数と右半分を作る変数を組み合わせる. そのため, 表を作るときは対角線から右上へ, 短い区間から長い区間へ埋めるのが基本である.

正当性証明の核

CYK法の正当性は, Chomsky標準形の「最初の一手」が必ず X→YZX\to YZ または X→aX\to a であることに依存している. 長さ1なら終端規則を見るだけでよい. 長さ2以上なら, 構文木の根の直下で文字列が左右2つの連続区間に分かれるので, その分割位置を全探索すればよい. これが(2)の同値性の理由であり, (3)の判定条件にも直結する.

節点数は終端葉も数える

(4)で 3n−13n-1 になるのは, 終端記号の葉だけでなく, その直上の変数節点も別に数えるからである. 変数だけを数えると 2n−12n-1 個であり, 終端記号の葉 nn 個を足して 3n−13n-1 個になる. n=1n=1 の場合も, 開始変数と終端葉の2個なので 3⋅1−1=23\cdot1-1=2 と一致する.

計算理論の途中式・最終答をPDFで見る

第5問 — ネットワーク

CSMA の要点

CSMA は「送る前に聞く」方式である. ただし, 聞いているのは自分の位置で観測できる媒体状態であって, ネットワーク全体の真の状態ではない. 有線でも信号の伝搬には時間がかかるので, 伝搬遅延が大きいほど「相手の送信開始がまだ届いていない」時間が長くなる. この時間幅を衝突が起こりやすい脆弱期間として理解すると, (2) の説明を書きやすい.

CSMA/CD と無線の違い

CSMA/CD は Ethernet の古典的な共有媒体で重要な考え方であり, 衝突を検出したら送信を止めて再送へ回る. 一方, 無線では送信しながら同時に弱い受信信号を正確に検出することが難しく, さらに隠れ端末のように送信側では衝突原因を観測できない場合がある. そのため無線 LAN では衝突検出ではなく, 衝突回避(CSMA/CA)や RTS/CTS による予約が重要になる.

隠れ端末問題の答案で落としやすい点

(3-1) では「端末1と端末2が遠い」だけでは不十分である. 採点上は, キャリアセンスでは互いの送信を検出できない ことと, 共通の受信先である端末3ではフレーム衝突が起こる ことを両方書く必要がある. 問題文が指定している二つの語句をただ並べるのではなく, 送信開始から衝突までの因果を一文ずつ追うと答案が安定する.

RTS/CTS の効き方

RTS/CTS は送信者どうしが互いを聞けない状況で, 受信者の応答を周囲に聞かせる仕組みである. この問題の配置では, 端末1と端末2は互いを受信できないが, 中央の端末3には双方が届く. したがって端末3が送る CTS を端末2が聞き, 「いま端末3は端末1との通信を予約している」と判断して送信を控える. この説明まで書けると, 単に用語名を答えるより強い答案になる.

検算的な見方

RTS/CTS が常に性能を上げるわけではない. 制御フレームの交換自体がオーバーヘッドになるため, 短いデータフレームや隠れ端末が少ない環境では不利になることもある. しかし本問では隠れ端末によるデータフレーム衝突を避ける目的なので, 大きなデータフレームの衝突を短い制御フレームの予約で防ぐ, という利点を中心に述べればよい.

ネットワークの途中式・最終答をPDFで見る

第6問 — 電子回路と論理設計

二端子対回路の符号規約

縦続行列では電流の向きの規約で符号が変わることがある. 本問の図では I1,I2I_1,I_2 がどちらも左から右向きに描かれているため, [V1I1]=F[V2I2] \begin{bmatrix}V_1\\ I_1\end{bmatrix} = F \begin{bmatrix}V_2\\ I_2\end{bmatrix} と読むと, 直列素子は [1Z01]\begin{bmatrix}1&Z\\0&1\end{bmatrix}, 並列素子は [10Y1]\begin{bmatrix}1&0\\Y&1\end{bmatrix} になる. 出力ポート電流を「回路へ流れ込む向き」に取る別流儀とは B,CB,C などの符号が変わり得るので, 図の矢印を先に確認するのが安全である.

平均電力式の見通し

(1-2) は全回路の入力インピーダンスを一気に出してもよいが, 右端の抵抗電圧 VV を基準にして左へ戻ると計算が短い. 抵抗の平均電力は P=∣V∣2/RP=|V|^2/R なので, 最終的に E/VE/V の絶対値二乗を求めればよい. 実部が 1−3ω2LC+ω4L2C21-3\omega^2LC+\omega^4L^2C^2, 虚部が (ωL/R)(2−ω2LC)(\omega L/R)(2-\omega^2LC) になるため, 問題の形 E2P=(1+x)2R+ω2L2(2−y)2R \frac{E^2}{P} = (1+x)^2R+\frac{\omega^2L^2(2-y)^2}{R} と係数を比較すれば空欄が決まる.

カルノー図のまとめ方

5変数のカルノー図は2枚の4変数カルノー図として扱う. ドントケアを使えるため, x1=x0=0x_1=x_0=0 の列を x4x_4 側も含めて大きくまとめられる. これが x1‾x0‾\overline{x_1}\overline{x_0} であり, 本問の簡単化で最も大きなまとまりである. 残る 30,3130,31 の1は x0x_0 だけが違う隣接2マスとしてまとめ, x4x3x2x1x_4x_3x_2x_1 を得る.

NAND 実装での採点ポイント

積和形をそのまま AND/OR/NOT で描くと, 2入力 NAND のみという条件を満たさない. NAND だけで OR を作る基本は A+B=NAND⁡(A‾,B‾) A+B=\operatorname{NAND}(\overline{A},\overline{B}) である. したがって, A=x4x3x2x1A=x_4x_3x_2x_1 については A‾\overline{A} を NAND で作り, B=x1‾x0‾B=\overline{x_1}\overline{x_0} については B‾=x1+x0\overline{B}=x_1+x_0 を NAND で作って, 最後にもう一度 NAND に入れる. 上の構成はゲート数が9個なので, 指定された上限内に収まる.

電子回路と論理設計の途中式・最終答をPDFで見る

第7問 — 数学解析と信号処理

正則関数の線積分

f(z)=z2f(z)=z^2 は原始関数 z3/3z^3/3 を持つ. したがって, 始点と終点が同じなら経路の形に依存しない. (1-1) で直接計算を求められている場合でも, 計算結果が端点だけで決まることを知っていると符号確認が楽になる. 本問では C1C_1 と C2C_2 の向きが逆向きに対応しているので, I1=−I2I_1=-I_2 になる.

コーシーの積分定理と留数定理の使い分け

コーシーの積分定理を使える条件は, 被積分関数が閉曲線の内部と境界で正則であることだ. z2z^2 では問題ないが, 1/(z4+1)1/(z^4+1) では囲まれた領域内に極がある. この場合は積分が0になるのではなく, 内部の極の留数が積分値を決める. 極がどの領域に入るかを図で確認してから定理を選ぶのが重要である.

逆フィルタの安定性

伝送路 SS は2タップ遅延を含む FIR フィルタであり, それ自体は安定である. しかし逆フィルタ T=1/HST=1/H_S は一般に IIR になる. 逆フィルタが安定かどうかは, HSH_S の零点, すなわち HTH_T の極が単位円内にあるかで判定する. 本問では極の半径が 1/21/2 なので, 因果的に実装しても単位円が収束領域に入り, BIBO 安定となる.

振幅特性の読み方

HS(eiω)=1+12e−iω+14e−2iωH_S(e^{\mathrm{i}\omega})=1+\frac12e^{-\mathrm{i}\omega}+\frac14e^{-2\mathrm{i}\omega} は, 近傍サンプルを正の重みで足すので平滑化の性質を持つ. その逆 HTH_T は平滑化で弱められた成分を戻すため, 相対的には高域を持ち上げる. 極の角度 ±2π/3\pm 2\pi/3 は振幅が大きくなる方向を示しており, 用語選択ではここをピーク位置として答えればよい.

数学解析と信号処理の途中式・最終答をPDFで見る

阪大 専門科目(情報工学) 院試 過去問の収録5年度

  • 2025年度(全7問)

    アルゴリズムとプログラミング(二分ヒープ) / 計算機システムとシステムプログラム(パイプライン) / 離散構造(グラフ彩色と削除・縮約)

  • 2024年度(このページ・全7問)

    アルゴリズムとプログラミング(挿入ソート) / 計算機システムとシステムプログラム(メモリ管理) / 離散構造

  • 2023年度(全7問)

    アルゴリズムとプログラミング / 計算機システムとシステムプログラム / 離散構造

  • 2022年度(全7問)

    アルゴリズムとプログラミング / 計算機システムとシステムプログラム / 離散構造

  • 2021年度(全7問)

    アルゴリズムとプログラミング(キュー) / 計算機システムとシステムプログラム(HDD/ファイルシステム) / 離散構造(床関数の漸化式)