院試hub

東京大学 院試 過去問 解答例

東大 情報理工学系研究科 コンピュータ科学専攻 専門科目(コンピュータ科学) 2025年度 院試 解答例・解説

東京大学 情報理工学系研究科 コンピュータ科学専攻 専門科目(コンピュータ科学) 2025年度の院試 過去問について、設問ごとの解法方針と確認点を解説。全4問収録の解答・解説PDFと併用できます。問題本文は含みません。

最終更新:

設問ごとの解法方針と確認点を公開しています。

続きの途中式・最終答は解答・解説PDFに収録しています。問題本文は含まれません。

1 — 形式言語とオートマトン

平方根言語の見方

H(L)H(L) は「同じ語を2回続けたものが LL に入るか」を見る操作である。 したがって,単に正規表現を半分に切るのではなく,wwww の前半と後半に同じ構造が 現れることを使う。(1)では2個の cc の位置が強い制約になっている。

正規言語で閉じる理由

正規言語では,語そのものを覚える必要はない。語 ww がDFAの状態集合上に作る 有限個の状態変換だけを覚えればよい。有限集合 QQ に対する写像は高々 QQ|Q|^{|Q|} 個なので,これを状態にしたDFAが作れる。

文脈自由言語で同じ議論が使えない理由

プッシュダウンオートマトンでは,ww を1回読んだあとに同じ ww をもう一度 同じ順序で読むことを有限制御だけでは表せない。スタックに ww を積むと取り出しは 逆順になるため,正規言語のように「変換だけを持つ」という処理ができない。 このため,文脈自由言語では反例が存在する。

続きの解答(途中式・最終答)はPDFに収録

2 — パイプラインとキャッシュ

CPIの分解

この問題では,総サイクル数を 命令実行の基本サイクル+ロードユースストール+キャッシュミスストール+分岐ミスペナルティ \text{命令実行の基本サイクル} +\text{ロードユースストール} +\text{キャッシュミスストール} +\text{分岐ミスペナルティ} に分けると見通しがよい。パイプラインの立ち上がり・終了コストは問題文で無視してよい 扱いなので,基本サイクルは命令数そのものとして数える。

ラインサイズの決まり方

配列を4バイト刻みで順に読む場合,キャッシュラインサイズが BB バイトなら, 1本のラインに B/4B/4 個のアクセスが入る。初期状態が空なので,各ラインの最初の ロードだけがミスになる。ここでは合計1024バイトを走査してミスが32回なので, 1ラインは 1024/32=321024/32=32 バイトである。

命令フォーマットの比較

レジスタ番号の位置をそろえる設計は,レジスタファイルの読み出しポートに渡す信号を 単純にできる。一方で,即値を分割すると,命令種別に応じた連結・並べ替え・符号拡張の 回路が必要になる。実際の命令セットでも,この2つはしばしばトレードオフになる。

続きの解答(途中式・最終答)はPDFに収録

3 — スケジューリングとセマフォ

待ち時間の数え方

待ち時間には実行可能キューで待つ時間だけでなく,セマフォの待ちキューで待つ時間も 含まれる。全プロセスが終了する場合は 待ち時間=終了時刻到着時刻実行時間 \text{待ち時間}=\text{終了時刻}-\text{到着時刻}-\text{実行時間} でまとめて計算できるので,途中でどのキューにいたかを細かく足し上げるより安全である。

SRTFとセマフォの相互作用

セマフォがないSRTFでは,時刻20に到着した短い P5P_5P1P_1 を中断する。 しかし(3)では P5P_5S1S_1 を取得できないため待ちに入り,P1P_1 がそのまま 終了まで進む。このように,優先度が高いプロセスでも資源を取れなければ実行できない。

デッドロックの確認

(4)のRRでは,P2P_2P3P_3 が逆順に S1,S2S_1,S_2 を要求する。 片方が S1S_1 を持って S2S_2 を待ち,もう片方が S2S_2 を持って S1S_1 を待つと, どちらも進めない。時刻80でこの循環待ちが完成する。

続きの解答(途中式・最終答)はPDFに収録

4 — グラフの連結度とサイクル

サイクルと2本のパス

2点 a,ba,b を含むサイクルは,サイクル上で aa から bb へ進む2通りの向きの パスに分解できる。この2本は端点以外の頂点を共有しない。逆に,内点素な2本の aa-bb パスを合わせればサイクルになる。この対応が(1)の中心である。

新しい頂点を足す補題

(2)は,あとで「指定された点集合」を「新しい1点の近傍」として扱うための準備である。 uu を消さない場合でも,AA には kk 点あり,削除できるのは高々 k1k-1 点なので, uu とつながる頂点が必ず1つ残る。この数え上げが証明の要点である。

一般化の構造

高連結性は,ある頂点から既存のサイクルへ多数の互いに独立な接続路を保証する。 接続点が指定点の数より1つ多くあるため,指定点を含まない弧を避けてサイクルを 作り直せる。これが「kk 連結なら任意の kk 点が同一サイクルに乗る」理由である。

続きの解答(途中式・最終答)はPDFに収録

東京大学 専門科目(コンピュータ科学) — 他の年度