院試hub

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

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

全4問。情報1問。テーマタグは1件(正規表現・形式言語)。

最終更新:

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

東大 専門科目(コンピュータ科学) 2023年度 院試 過去問の出題内容(全4問)

この4問の分野は情報1問です。

大問分野主題解説の小見出し最終答
第1問—半分接頭辞と言語クラス前半だけを見る操作 / DFAでの構成あり
第2問情報集合分割の近似アルゴリズム平均下界と最大要素下界を組み合わせる / ループ回数の証明で見るべき不変量あり
第3問—ページ置換LRUと最適置換の違いあり
第4問—キャッシュとCPIリトルエンディアン / CPI式の作り方あり

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

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

テーマこの年度全体の出題実績他大学の直近出題
正規表現・形式言語第1問10大学・30問

第1問 — 半分接頭辞と言語クラス

前半だけを見る操作

Γ(L)\Gamma(L) は,LL の語を同じ長さの前半・後半に分けたときの前半集合である。 接頭辞全体ではなく「ちょうど半分」である点が重要である。

DFAでの構成

後半 ww は存在すればよく,具体的に入力として読む必要はない。 残り長さが tt のときに受理状態へ到達できる状態集合を逆向きに更新すれば, 有限個の状態で管理できる。

解答

  1. L2=(ab)n (n≥0)L_2=(ab)^n\ (n\ge0) の語の長さは 2n2n であり,Γ(L2)\Gamma(L_2) は その前半,すなわち (ab)n(ab)^n の長さ nn の接頭辞全体である。 偶数長なら (ab)m(ab)^m,奇数長なら (ab)ma(ab)^m a になるので Γ(L2)=(ab)∗(ε+a) \boxed{\Gamma(L_2)=(ab)^*(\varepsilon+a)} である。
  2. anbnambma^n b^n a^m b^m の全長は 2(n+m)2(n+m) であるから,前半の長さは n+mn+m である。 m≤nm\le n のとき,前半は anbm a^n b^m であり,m≥nm\ge n のとき,前半は anbnam−n a^n b^n a^{m-n} である。したがって Γ(L3)={anbm∣n≥m≥0}∪{anbnar∣n,r≥0}. \Gamma(L_3) =\{a^n b^m\mid n\ge m\ge0\} \cup \{a^n b^n a^r\mid n,r\ge0\}. これを生成する文脈自由文法の一例は次である。 S→S1∣S2,S1→aS1b∣aS1∣ε,S2→CR,C→aCb∣ε,R→aR∣ε. \begin{array}{rcl} S&\to&S_1\mid S_2,\\ S_1&\to&aS_1b\mid aS_1\mid \varepsilon,\\ S_2&\to&CR,\\ C&\to&aCb\mid \varepsilon,\\ R&\to&aR\mid \varepsilon. \end{array}
  3. DFA M=(Q,Σ,δ,q0,F)M=(Q,\Sigma,\delta,q_0,F) に対して,Γ(LM)\Gamma(L_M) を受理するDFAを作る。 入力として読んだ部分を vv とする。必要なのは δ(q0,v)∈Pre∣v∣(F) \delta(q_0,v)\in \mathrm{Pre}_{|v|}(F) である。ここで Pret(F)={q∈Q∣∃w∈Σt, δ(q,w)∈F} \mathrm{Pre}_t(F)=\{q\in Q\mid \exists w\in\Sigma^t,\ \delta(q,w)\in F\} とする。 状態を Q×2Q Q\times 2^Q とする。第1成分 pp は δ(q0,v)\delta(q_0,v),第2成分 AA は Pre∣v∣(F)\mathrm{Pre}_{|v|}(F) を表す。初期状態は (q0,F) (q_0,F) である。文字 cc を読むと p↦δ(p,c),A↦{q∈Q∣∃x∈Σ, δ(q,x)∈A} p\mapsto \delta(p,c),\qquad A\mapsto \{q\in Q\mid \exists x\in\Sigma,\ \delta(q,x)\in A\} と更新する。受理状態は {(p,A)∣p∈A} \{(p,A)\mid p\in A\} である。これにより,読んだ語 vv と同じ長さの後半 ww を付けて vw∈LMvw\in L_M とできるかを判定できる。
  4. 命題は真である。LL を受理するプッシュダウンオートマトン PP を用いる。 入力 vv を読む間,PP にはそのまま vv を読ませ,同時に長さを数えるための マーカーをスタックに1個ずつ積む。 入力を読み終えたら,今度は入力を消費せずに,後半 ww を非決定的に生成する。 1文字生成するたびに長さマーカーを1個取り除き,その文字を PP に読ませる。 マーカーがすべてなくなった時点で PP が受理状態に入れるなら受理する。 このPDAは,ある ww が存在して ∣w∣=∣v∣|w|=|v| かつ vw∈Lvw\in L である場合に ちょうど受理する。したがって Γ(L)\Gamma(L) は文脈自由言語である。

最終答

Γ((ab)∗)=(ab)∗(ε+a). \Gamma((ab)^*)=(ab)^*(\varepsilon+a). Γ(L3)\Gamma(L_3) は本文の文法で生成できる。正規言語・文脈自由言語はいずれも Γ\Gamma に関して閉じている。

第2問 — 集合分割の近似アルゴリズム

平均下界と最大要素下界を組み合わせる

この問題の近似比の証明では,最適値 OPT\mathrm{OPT} に対する基本的な下界を2つ使う。 1つは総和を mm 個に分ける以上,最大和は平均値 ∥P∥/m\|P\|/m 以上であるという下界である。 もう1つは,どの要素もどこかの集合に入るため,最大要素そのものも OPT\mathrm{OPT} 以下である という下界である。終了条件は ∥Sj∥≤top(Sj)+∥Sk∥\|S_j\|\le \mathrm{top}(S_j)+\|S_k\| と読み替えられるので, この2つを足すだけで2近似が出る。

ループ回数の証明で見るべき不変量

一見すると,移動した要素が別のスタックからまた戻ってくる可能性がありそうに見える。 ここで効く不変量は「全体の最小和は減少しない」という性質である。 ある要素 xx が移動した時点の移動先の既存部分の和を aa とすると, その後に xx を再び動かすには,現在の最小和が aa より小さくなっている必要がある。 しかし最小和は減少しないため,これは起こらない。 したがって,各要素は高々1回しか移動せず,反復回数は nn で抑えられる。

データ構造の選び方

このアルゴリズムで毎回必要なのは「最大和のスタック」と「最小和のスタック」である。 全スタックを毎回走査すると1回 O(m)O(m) かかり,全体で O(nm)O(nm) になってしまう。 和をキーにしたヒープを使えば,最大・最小の取得と更新を対数時間にできる。 スタック本体とスタック和を分けて管理するのが,実装上の要点である。

集合分割の近似アルゴリズムの途中式・最終答をPDFで見る

第3問 — ページ置換

LRUと最適置換の違い

LRUは過去を見て「最も長く使われていないページ」を捨てる。最適置換は未来を見て 「次に使うのが最も遅いページ」を捨てる。試験では,この2つを混同せず,表を作って 1参照ずつ追うことが重要である。

ページ置換の途中式・最終答をPDFで見る

第4問 — キャッシュとCPI

リトルエンディアン

リトルエンディアンでは,数値の低位バイトが小さいアドレスに置かれる。 整数値をそのまま16進で左から読むのではなく,バイト単位に分解してアドレス順を考える。

CPI式の作り方

キャッシュミスペナルティは「1命令あたり何回そのミス機会があるか」にミス率とペナルティを 掛ける。命令キャッシュは全命令,データキャッシュはロード・ストア命令だけが対象である。

キャッシュとCPIの途中式・最終答をPDFで見る

東大 専門科目(コンピュータ科学) 院試 過去問の収録3年度

  • 2026年度(全4問)

    形式言語とオートマトン / ページングとTLB / パイプラインと論理回路

  • 2025年度(全4問)

    形式言語とオートマトン / パイプラインとキャッシュ / スケジューリングとセマフォ

  • 2023年度(このページ・全4問)

    半分接頭辞と言語クラス / 集合分割の近似アルゴリズム / ページ置換