14933 words
75 minutes
Page views--Visits--
Osaka University IST Graduate Entrance Exam (2016)

大阪大学 情報科学研究科 情報工学 2015年8月実施 アルゴリズムとプログラミング#

Author#

KardeniaPoyu

Description#

図に示す ANSI-C 準拠である C 言語のプログラム (program) は、配列 (array) values の要素 (element) に格納された非負整数 (non negative integer) のデータ (data) を、rr 進数 (rr-base number) (2r2562 \le r \le 256) とみなして整列 (sort) し、出力 (output) するプログラムである。以下の各問に答えよ。

(1) プログラムの 10~26 行目の for 文の処理において 1 巡目 (d=1d=1 のとき) および 2 巡目 (d=2d=2 のとき) の終了時における配列 buckets の内容を答えよ。なお、配列の各要素は 0 で初期化される。配列の各要素 buckets[x][y] において、xx は 3 以上の値、yy は 5 以上の値を取りうるが、これらの内容については答えなくてよい。

(2) プログラムで実現されている整列アルゴリズム (sorting algorithm) に関する以下の各小問に答えよ。

  • (2-1) この整列アルゴリズムは、一般に何と呼ばれているか名称を答えよ。
  • (2-2) 整列対象のすべてのデータを rr 進数で表現したときの最大の桁数を kk 、データの数を nn としたとき、時間計算量のオーダー表記を理由とともに答えよ。
  • (2-3) このアルゴリズムでは、どのような工夫によってデータ同士の比較を伴わない整列を可能にしているか答えよ。
  • (2-4) 比較を伴う整列アルゴリズムと比較して、本アルゴリズムの特徴を時間計算量および空間計算量の観点から答えよ。

(3) 配列 values の要素に格納されたデータを降順 (descending order) に整列するようにプログラムを変更したい。そのために下線(ア)および下線(イ)をどのように記述すればよいか、適切な式を答えよ。

#include <stdio.h>
#define MAXR 256
#define MAXN 1000
void sort(int values[], int numvalues, int r, int maxdigit){
int rd, d, b, i, n, j;
int buckets[MAXR][MAXN];
int numbucket[MAXR];
rd = 1;
for (d = 1; d <= maxdigit; d++){
for (b = 0; b < r; b++){
numbucket[b] = 0;
}
for (i = 0; i < numvalues; i++){
n = (values[i] / rd) % r;
buckets[n][numbucket[n]++] = values[i];
}
i = 0;
for (b = 0;
/* 下線(ア) */
b < r; b++){
for (j = 0; j < numbucket[b]; j++){
/* 下線(イ) */
values[i++] = buckets[b][j];
}
}
rd *= r;
}
}
int main(){
int i;
int values[5] = {12, 21, 1, 11, 2};
sort(values, 5, 10, 2);
for(i = 0; i < 5; i++){
printf("%d\n", values[i]);
}
return 0;
}
図 プログラム

Kai#

(1)#

1 巡目 (d=1d=1) 終了時: 下位 1 桁目(1の位)に基づき buckets[n][y] に格納される。対象データは {12, 21, 1, 11, 2}

  • x=0: なし
  • x=1: buckets[1][0]=21, buckets[1][1]=1, buckets[1][2]=11
  • x=2: buckets[2][0]=12, buckets[2][1]=2

2 巡目 (d=2d=2) 終了時: 1 巡目終了後の values{21, 1, 11, 12, 2} となる。これを 2 桁目(10の位)に基づき格納する。

  • x=0: buckets[0][0]=1, buckets[0][1]=2
  • x=1: buckets[1][0]=11, buckets[1][1]=12
  • x=2: buckets[2][0]=21

(2)#

  • (2-1) 基数整列 (Radix Sort)

  • (2-2) O(k(n+r))O(k(n+r))。各桁において nn 個のデータをバケツに入れ、その後 rr 個のバケツを走査してデータを回収する操作を、kk 回繰り返すため。 English: For each of the kk digits, the algorithm distributes the nn elements into their corresponding buckets and subsequently scans the rr buckets to collect the elements. This single pass takes O(n+r)O(n+r) time, and the process is repeated kk times.

  • (2-3) データの数値を基数に基づいた添字(インデックス)として利用し、バケツ(配列)の該当箇所に直接配置することで、値の大小比較を行わずに順序を決定している。 English: It determines the sorting order without performing direct value comparisons between elements. Instead, it utilizes the numerical values of the data at a specific radix as array indices to directly place the elements into their corresponding buckets

  • (2-4)

    • 时间计算量:比较ソートの下限 O(nlogn)O(n \log n) に関わらず、桁数 kk が小さければ O(n)O(n) に近い線形時間で動作する。 English: Unlike comparison-based sorting algorithms, which are bounded by a lower limit of O(nlogn)O(n \log n), Radix Sort can operate in near-linear time O(n)O(n) provided that the number of digits kk is small or treated as a constant.
    • 空间计算量:バケツを保持するための大きなメモリ領域(このプログラムでは MAXR * MAXN)を必要とするため、比较ソートよりも効率が悪い。 English: It is less space-efficient than typical comparison-based sorts because it requires a substantially large auxiliary memory space to maintain the buckets (in this program, an array of size MAXR * MAXN).

(3)#

降顺にするためには、バケツからデータを取り出す際にインデックスの大きい方から走査する。

  • (ア) b = r - 1; b >= 0; b--
  • (イ) values[i++] = buckets[b][j](変更なし)

Summary#

参考视频

Radix Sort

大阪大学 情報科学研究科 情報工学 2015年8月実施 計算機システムとシステムプログラム#

Author#

KardeniaPoyu

Description#

(1) 計算機 (computer), 特に, 中央処理装置 (CPU: central processing unit) に関する以下の各小問に答えよ. 解答は全て解答用紙の太線内に書くこと.

(1-1) 以下の文章の空欄 (a)~(e) に当てはまる最も適切な語句を, 下記の選択肢から選び, 記号で答えよ.

計算機の構成方式のことを [ (a) ] と呼ぶ. 現在, 実用的に利用されている大部分の計算機は, 線形アドレス空間 (linear address space) を有するメインメモリ (main memory) 上にプログラム (program) 及びデータ (data) を置き, プログラムを逐次実行する, 等の [ (a) ] を採用している. このような計算機は, [ (b) ] 計算機と呼ばれる.

[ (b) ] 計算機では, [ (c) ] が示すメインメモリアドレスから, プログラムの構成要素である機械語命令を読み出し, これをデコード (decode) して実行する. 機械語命令は, その種類を示す [ (d) ] 部と, 演算対象のデータである [ (e) ] の格納場所を示すアドレス部から成る.

【選択肢】#

(ア) データフロー型 (dataflow architecture)(イ) オペコード (operation code, opcode)(ウ) プログラムカウンタ (program counter)
(エ) アーキテクチャ (architecture)(オ) VLIW (very long instruction word)(カ) オペランド (operand)
(キ) 命令レジスタ (instruction register)(ク) メモリデータレジスタ (memory data register)(ケ) スーパースカラ (superscalar)
(コ) ノイマン型 (von Neumann architecture)

(1-2) 一つの機械語命令 (以下, 命令と略す) の処理を nn 段のステージ (stage) に分け, 1 ステージを 1 クロックサイクル (clock cycle) で実行する同期型 CPU を考える. クロック周波数を ff [Hz] とする. 以下の (1-2-1)~(1-2-4) に答えよ.

  • (1-2-1) mm 個の命令をパイプライン (pipeline) 処理を用いずに逐次的に実行する場合の実行時間 [s] を示せ.
  • (1-2-2) mm 個の命令をパイプライン処理を用いて実行する場合の実行時間 [s] を示せ. 但し, パイプラインストール (pipeline stall) は無いものとする.
  • (1-2-3) mm 個の命令をパイプライン処理を用いて実行する場合の単位時間あたりの命令実行数 [instructions/s] について, mm \to \infty における極限を示せ. 但し, パイプラインストールは無いものとする.
  • (1-2-4) パイプライン処理を用いた CPU の性能 (単位時間あたりの命令実行数) を高める手法の一つとして, ステージ数 nn を増やす方法がある. この方法により CPU の性能を高めることが可能である理由を説明せよ.

(1-3) 一つの機械語命令 (以下, 命令と略す) の処理を, 命令フェッチ (IF: instruction fetch), デコード (D: decode), オペランドフェッチ (OF: operand fetch), 実行 (EX: execution), 結果の格納 (S: store) の 5 つのステージに分け, 1 ステージ 1 クロックサイクルのパイプライン処理を用いた同期型 CPU において, 以下の (1-3-1) および (1-3-2) に示す命令 1~3 を実行することを考える. 解答欄の命令 1 の例を参考に, 実行されるステージ名 “IF”, “D”, “OF”, “EX”, “S” を解答欄に記入せよ. パイプラインストールにより完了までに複数クロックサイクルが必要なステージは, 完了するクロックサイクルにステージ名を, それ以外のクロックサイクルに ”-” を記入すること. なお, 以下の点を仮定する.

  • パイプラインストールの原因としては, 構造ハザード (structural hazard) およびデータハザード (data hazard) を考える.
  • 構造ハザードはメモリアクセス (memory access) の競合 (conflict) のみ考える.
  • プログラムとデータは同じメインメモリ上にある.
  • ある命令でレジスタに書き込まれた値を以降の命令で参照する場合, 前者の命令の格納 (S) が完了した後, 後者の命令のオペランドフェッチ (OF) が可能となる.

(1-3-1)

  • 命令 1 : MOV R1, (A) ; メインメモリアドレス A の内容をレジスタ R1 に転送
  • 命令 2 : MOV R2, (B) ; メインメモリアドレス B の内容をレジスタ R2 に転送
  • 命令 3 : ADD R1, R2 ; R1 + R2 の結果を R1 に代入

(1-3-2)

  • 命令 1 : MOV R1, (A) ; メインメモリアドレス A の内容をレジスタ R1 に転送
  • 命令 2 : INC R1 ; R1 + 1 の結果を R1 に代入
  • 命令 3 : MOV (B), R1 ; レジスタ R1 の内容をメインメモリアドレス B に転送

(2) キャッシュメモリ (cache memory) 及びメインメモリ (main memory) で階層を形成しているメモリシステムを持つ計算機を考える. 以下の各小問に答えよ. 解答は全て解答用紙の太線内に書くこと.

  • (2-1) キャッシュメモリに存在する命令あるいはデータを読み出す際のアクセス時間 (access time) が 2 [ns] であり, キャッシュメモリに存在しない命令あるいはデータをメインメモリから読み出す際の, キャッシュメモリ及びメインメモリへのアクセス時間の和が 50 [ns] であるとする. また, メインメモリの容量はプログラムに対して十分大きく, プログラムの命令及びデータは全てメインメモリに格納されているものとする. 以下の (2-1-1) 及び (2-1-2) に答えよ.
    • (2-1-1) プログラムを実行した結果, プログラムの命令あるいはデータを読み出す際の平均のキャッシュヒット率 (cache hit ratio, cache hit rate) が 80% であった. この時の, プログラムの命令あるいはデータを読み出す際の平均アクセス時間を求めよ. 導出根拠も示せ.
    • (2-1-2) キャッシュメモリを, 命令あるいはデータを読み出す際のアクセス時間が 2 [ns] のものから 4 [ns] のものに変更する. ただし, キャッシュメモリに存在しない命令あるいはデータをメインメモリから読み出す際の, キャッシュメモリ及びメインメモリへのアクセス時間の和は 50 [ns] のままであるとする. この時, (2-1-1) で得られた平均アクセス時間を維持するために必要となるキャッシュヒット率を求めよ. 導出根拠も示せ.
  • (2-2) 一般に, プログラムを実行するためにアクセスされる命令及びデータには, 参照局所性 (locality of reference) がある. 次の 2 種類の参照局所性のそれぞれについて説明せよ.
    • (2-2-1) 空間的参照局所性 (spatial locality of reference)
    • (2-2-2) 時間的参照局所性 (temporal locality of reference)
  • (2-3) キャッシュメモリとメインメモリで階層を形成することの利点をその理由と共に述べよ.

Kai#

(1-1)#

  • (a) (エ) アーキテクチャ (architecture)
  • (b) (コ) ノイマン型 (von Neumann architecture)
  • (c) (ウ) プログラムカウンタ (program counter)
  • (d) (イ) オペコード (operation code, opcode)
  • (e) (カ) オペランド (operand)

(1-2)#

  • (1-2-1) T=mnfT = \frac{mn}{f} [s]

  • (1-2-2) T=n+m1fT = \frac{n + m - 1}{f} [s]

  • (1-2-3) limmm(n+m1)/f=f\lim_{m \to \infty} \frac{m}{(n+m-1)/f} = f [instructions/s]

  • (1-2-4) 理由:ステージ数を増やすことで、1ステージあたりの論理回路が短くなり、各ステージの処理遅延が減少する。これにより、CPU をより高いクロック周波数 ff で動作させることが可能になり、结果として全体的な命令スループット(単位時間あたりの命令実行数)が向上するため。

    English: Increasing the number of pipeline stages (nn) reduces the logic gate delay per stage. This reduction allows the CPU to operate at a higher clock frequency (ff), which consequently increases the overall instruction throughput.

(1-3)#

パイプラインの動作ルール:

  • 構造ハザード:プログラムとデータは同一のメインメモリにあるため、IF, OF, S が同一クロックサイクルで同時に発生するとメモリアクセス競合が起きる。
  • データハザード:RAW (Read After Write)。ある命令の S ステージが完了した後のクロックサイクルでなければ、その値を参照する後続命令の OF ステージを開始できない。

(1-3-1)

クロックサイクル01234567891011
命令1: MOV R1, (A)IFDOFEXS
命令2: MOV R2, (B)IFDOFEXS
命令3: ADD R1, R2--IFDOFEXS

(注:クロック2では命令3の IF が命令1の OF と競合してストール。続くクロック3でも命令3の IF が命令2の OF と競合してストールし、クロック4でようやく IF が実行可能となる。)

(1-3-2)

クロックサイクル01234567891011
命令1: MOV R1, (A)IFDOFEXS
命令2: INC R1IFD--OFEXS
命令3: MOV (B), R1-IFD---OFEXS

(注:前記「ある命令でレジスタに書き込まれた値を以降の命令で参照する場合, 前者の命令の格納 (S) が完了した後, 後者の命令のオペランドフェッチ (OF) が可能となる」という条件に注意してほしい。)

(2-1)#

  • (2-1-1) 平均アクセス時間 = (ヒット率 ×\times キャッシュアクセス時間) + (1 - ヒット率) ×\times ミス時のアクセス時間の和
    • Tavg=0.8×2+0.2×50=1.6+10=11.6T_{avg} = 0.8 \times 2 + 0.2 \times 50 = 1.6 + 10 = 11.6 [ns]
  • (2-1-2) 求めるキャッシュヒット率を hh とすると:
    • 11.6=h×4+(1h)×5011.6 = h \times 4 + (1 - h) \times 50
    • 11.6=4h+5050h11.6 = 4h + 50 - 50h
    • 46h=38.4    h=38.446=1922300.83546h = 38.4 \implies h = \frac{38.4}{46} = \frac{192}{230} \approx 0.835
    • 答:約 83.5%

(2-2)#

  • (2-2-1) 空間的参照局所性:あるメモリアドレスが参照されたとき、その近傍のメモリアドレスが近い将来に参照される可能性が高い性質。(例:配列要素の順次アクセスや、命令の逐次実行など)

    English: When a memory address is accessed, there is a high probability that nearby memory addresses will be accessed in the near future. Examples: sequential access of array elements, or the sequential execution of instructions.

  • (2-2-2) 時間的参照局所性:あるメモリアドレスが参照されたとき、同じアドレスが近い将来に再び参照される可能性が高い性質。(例:ループ内の変数や命令など)

    English: When a memory address is accessed, there is a high probability that the same address will be accessed again in the near future. Examples: variables and instructions within a loop.

(2-3)#

  • 利点:システムのメモリアクセスにおいて、キャッシュメモリの「高速性」とメインメモリの「大容量・低コスト性」の両立を図ることができる点。

    English: The advantage of forming a hierarchy between cache memory and main memory is the ability to achieve both the high speed of cache memory and the large capacity and low cost of main memory.

  • 理由:プログラムの実行には(2-2)で説明した「参照の局所性」があるため、CPUからの要求の大部分(ヒット時)は小容量で高速なキャッシュメモリで処理できる。一部の要求(ミス時)のみ、大容量で低コストなメインメモリにアクセスすればよいため、システム全体の平均メモリアクセス時間を短縮しつつ、コストを抑えて大容量の記憶空間を提供できる。

    English:

    • Cache Memory: It leverages the principle of locality (temporal and spatial locality). Because the CPU frequently requests recently accessed or adjacent data, most memory accesses result in a cache hit. This significantly reduces the average memory access time compared to fetching data directly from the slower main memory.
    • Main Memory: It provides a significantly larger storage capacity at a lower cost per byte. This allows the overall computer system to achieve a cost-effective balance between the high-speed processing capabilities of the cache and the large capacity requirements of executing programs.

Summary & Insights#


大阪大学 情報科学研究科 情報工学 2015年8月実施 計算理論#

Author#

KardeniaPoyu

Description#

(1) 有限オートマトン (finite automaton) MM は 5 項組 M=(Q,Σ,δ,q0,F)M = (Q, \Sigma, \delta, q_0, F) で与えられる。ここで,Q,Σ,δ,q0,FQ, \Sigma, \delta, q_0, F は,それぞれ,状態 (state) の有限集合,入力記号 (input symbol) の有限集合(アルファベット (alphabet)),状態遷移関数 (state transition function),初期状態 (initial state) (q0Qq_0 \in Q),受理状態 (accepting state) の集合 (FQF \subseteq Q) である。 また,MM が受理 (accept) する言語 (language)(認識する言語)を L(M)L(M) と表す。下の状態遷移図 (state transition diagram) に示す非決定性 (non-deterministic) 有限オートマトン M1M_1 について,以下の各小問に答えよ。なお,Q={a,b,c,d,e,f,g,h,i,j,k}Q = \{a, b, c, d, e, f, g, h, i, j, k\}Σ={0,1}\Sigma = \{0, 1\}q0=aq_0 = aF={k}F = \{k\} である。

NFA M1
  • (1-1) M1M_1 が受理する言語 (language) を正規表現 (regular expression) で示せ。
  • (1-2) M1M_1 が受理する語 (word) を,1 文字目を最上位ビット (most significant bit) とす符号なし 2 進数 (unsigned binary number) とみなす。M1M_1 が受理するすべての語の中で,7 番目に小さな数となる語を示せ。
  • (1-3) M1M_1 の状態 iiε\varepsilon-閉包 (ε\varepsilon-closure) を示せ。
  • (1-4) L(M1)=L(M2)L(M_1) = L(M_2) を満たす,決定性 (deterministic) 有限オートマトン M2M_2 をサブセット構成 (subset construction) 法を用いて求め,状態遷移図で示せ。同値 (equivalent) な状態があっても全て残すこと。状態名は A,B,C,A, B, C, \dots とすること。導出過程と結果を示すこと。
  • (1-5) M2M_2 の状態数を最小化した決定性有限オートマトン M3M_3 を求め,状態遷移図で示せ。状態名は A,B,C,A', B', C', \dots とすること。

(2) 文脈自由文法 (context-free grammar) により生成される文脈自由言語 (context-free language) の閉包性 (closure property) を考える。文脈自由文法 GG は 4 項組 G=(V,T,P,S)G = (V, T, P, S) で表される。ただし,VV は変数 (variable,あるいは非終端記号 non-terminal symbol) の集合,TT は終端記号 (terminal symbol) の集合,PP は生成規則 (production rule) の集合,SS は開始記号 (start symbol) で SVS \in V である。なお,生成規則の集合は ε\varepsilon-規則 (ε\varepsilon-rule) を含んでよいものとし,変数の集合と終端記号の集合は共通の記号を含まないものと仮定する。文法 GG が生成する言語を L(G)L(G) と表記する。 任意の文脈自由文法 G1=(V1,T1,P1,S1)G_1 = (V_1, T_1, P_1, S_1)G2=(V2,T2,P2,S2)G_2 = (V_2, T_2, P_2, S_2) が与えられる(ただし V1V2=V_1 \cap V_2 = \emptyset である)。 文脈自由言語は和 (union) 演算に関して閉じている。なぜなら,文脈自由文法 G3G_3 を以下の通りに構成すると,証明は省略するが,L(G1)L(G_1)L(G2)L(G_2) の和の言語 L3=L(G1)L(G2)L_3 = L(G_1) \cup L(G_2)G3G_3 によって生成される,すなわち L3L_3 は文脈自由言語だからである。

  • G3=(V3,T3,P3,S3)G_3 = (V_3, T_3, P_3, S_3)
  • V3=V1V2{S3}V_3 = V_1 \cup V_2 \cup \{S_3\},ただし S3(V1V2)S_3 \notin (V_1 \cup V_2)
  • T3=T1T2T_3 = T_1 \cup T_2
  • P3={S3S1,S3S2}P1P2P_3 = \{S_3 \to S_1, S_3 \to S_2\} \cup P_1 \cup P_2

文脈自由言語は連結 (concatenation) 演算に関して閉じていることを,文法の構成により示したい。以下の各小問に答えよ。

  • (2-1) L(G1)L(G_1)L(G2)L(G_2) を連結した言語 L4={w1w2w1L(G1),w2L(G2)}L_4 = \{w_1w_2 \mid w_1 \in L(G_1), w_2 \in L(G_2)\} を生成する文脈自由文法 G4=(V4,T4,P4,S4)G_4 = (V_4, T_4, P_4, S_4),すなわち L4=L(G4)L_4 = L(G_4) である G4G_4 を構成せよ。
  • (2-2) 上記 (2-1) で構成した G4G_4 によって生成される任意の語 ww は,上記 (2-1) で定義した L4L_4 に属することを証明せよ。
  • (2-3) 上記 (2-1) で定義した L4L_4 に属する任意の語 ww は,上記 (2-1) で構成した G4G_4 により生成されることを証明せよ。

Kai#

(1) 有限オートマトンに関する問題#

(1-1) 正規表現#

M1M_1 が受理する言語の正規表現は以下の通りである。 1(0011)01(00 \mid 11)^*0

(1-2) 7番目に小さな数となる語#

受理される語を長さ順(および辞書順)に列挙し、2進数としての値を評価する:

  • 長さ2: 10 (値: 2) -> 1番目
  • 長さ4: 1000 (値: 8) -> 2番目, 1110 (値: 14) -> 3番目
  • 長さ6: 100000 (値: 32) -> 4番目, 100110 (値: 38) -> 5番目, 111000 (値: 56) -> 6番目, 111110 (値: 62) -> 7番目 したがって、7番目に小さな語は 111110111110 である。

(1-3) ε\varepsilon-閉包 (ε\varepsilon-closure)#

各状態における ε\varepsilon-閉包は以下の通りである。

  • ε-closure(a)={a}\varepsilon\text{-closure}(a) = \{a\}
  • ε-closure(b)={b,c,f,j}\varepsilon\text{-closure}(b) = \{b, c, f, j\}
  • ε-closure(c)={c}\varepsilon\text{-closure}(c) = \{c\}
  • ε-closure(d)={d}\varepsilon\text{-closure}(d) = \{d\}
  • ε-closure(e)={b,c,e,f,i,j}\varepsilon\text{-closure}(e) = \{b, c, e, f, i, j\}
  • ε-closure(f)={f}\varepsilon\text{-closure}(f) = \{f\}
  • ε-closure(g)={g}\varepsilon\text{-closure}(g) = \{g\}
  • ε-closure(h)={b,c,f,h,i,j}\varepsilon\text{-closure}(h) = \{b, c, f, h, i, j\}
  • ε-closure(i)={b,c,f,i,j}\varepsilon\text{-closure}(i) = \{b, c, f, i, j\}
  • ε-closure(j)={j}\varepsilon\text{-closure}(j) = \{j\}
  • ε-closure(k)={k}\varepsilon\text{-closure}(k) = \{k\}

(1-4) サブセット構成法による DFA M2M_2 の導出#

サブセット構成法を用いて、NFAの状態集合をDFAの単一状態としてマッピングする。初期状態 A=ε-closure(a)={a}A = \varepsilon\text{-closure}(a) = \{a\} とする。

導出過程:

  • A1ε-closure(b)={b,c,f,j}BA \xrightarrow{1} \varepsilon\text{-closure}(b) = \{b, c, f, j\} \equiv B
  • B0ε-closure(δ({b,c,f,j},0))=ε-closure({d,k})={d,k}CB \xrightarrow{0} \varepsilon\text{-closure}(\delta(\{b,c,f,j\}, 0)) = \varepsilon\text{-closure}(\{d, k\}) = \{d, k\} \equiv C (受理状態)
  • B1ε-closure(δ({b,c,f,j},1))=ε-closure({g})={g}DB \xrightarrow{1} \varepsilon\text{-closure}(\delta(\{b,c,f,j\}, 1)) = \varepsilon\text{-closure}(\{g\}) = \{g\} \equiv D
  • C0ε-closure(δ({d,k},0))=ε-closure(e)={b,c,e,f,i,j}EC \xrightarrow{0} \varepsilon\text{-closure}(\delta(\{d,k\}, 0)) = \varepsilon\text{-closure}(e) = \{b, c, e, f, i, j\} \equiv E
  • D1ε-closure(δ(g,1))=ε-closure(h)={b,c,f,h,i,j}FD \xrightarrow{1} \varepsilon\text{-closure}(\delta(g, 1)) = \varepsilon\text{-closure}(h) = \{b, c, f, h, i, j\} \equiv F
  • E0ε-closure({d,k})={d,k}CE \xrightarrow{0} \varepsilon\text{-closure}(\{d, k\}) = \{d, k\} \equiv C
  • E1ε-closure({g})={g}DE \xrightarrow{1} \varepsilon\text{-closure}(\{g\}) = \{g\} \equiv D
  • F0ε-closure({d,k})={d,k}CF \xrightarrow{0} \varepsilon\text{-closure}(\{d, k\}) = \{d, k\} \equiv C
  • F1ε-closure({g})={g}DF \xrightarrow{1} \varepsilon\text{-closure}(\{g\}) = \{g\} \equiv D

M2M_2 の状態遷移表: (※ \emptyset はデッドステートへの遷移を表す)

状態 (NFA部分集合)入力 0入力 1
\to A {a}\{a\}\emptysetB
B {b,c,f,j}\{b, c, f, j\}CD
*C {d,k}\{d, k\}E\emptyset
D {g}\{g\}\emptysetF
E {b,c,e,f,i,j}\{b, c, e, f, i, j\}CD
F {b,c,f,h,i,j}\{b, c, f, h, i, j\}CD

(1-5) 状態を最小化した DFA M3M_3#

M2M_2 の遷移表に基づき、同値な状態(入力に対して同一の遷移先を持つ状態)をマージする。

等価クラスの判定:

  1. 状態 B,E,FB, E, F は全て非受理状態であり、入力 0CC へ、入力 1DD へ遷移する。したがって、これらは完全に同値である。
  2. 状態 A,DA, D は共に非受理状態であり、入力 0\emptyset へ遷移する。入力 1 に対して、AABB へ、DDFF へ遷移するが、BBFF は既に等価(クラス BB')であることが示されているため、AADD も未来の遷移が完全に一致する同値な状態である。
  3. 受理状態 CC は単独でクラスを形成する。

M3M_3 の状態遷移図を構成する遷移:

  • 状態集合:{A,B,C}\{A', B', C'\}
  • 初期状態:AA'
  • 受理状態:CC'
  • 遷移規則:
    • A1BA' \xrightarrow{1} B'
    • B0CB' \xrightarrow{0} C'
    • B1AB' \xrightarrow{1} A'
    • C0BC' \xrightarrow{0} B'

(注:この3状態DFAは、BB' において 0 を入力すると CC' に行き、さらに 0BB' に戻る(00 のループ)。1 を入力すると AA' に戻され、さらに 1BB' に復帰する(11 のループ)。これにより 1(0011)01(00 \mid 11)^*0 の言語を極めて美しく受理する。)


(2) 文脈自由言語の閉包性#

(2-1) 文法 G4G_4 の構成#

L4=L(G1)L(G2)L_4 = L(G_1)L(G_2) を生成する文脈自由文法 G4=(V4,T4,P4,S4)G_4 = (V_4, T_4, P_4, S_4) は以下のように構成される。

  • V4=V1V2{S4}V_4 = V_1 \cup V_2 \cup \{S_4\} (ただし、S4V1V2S_4 \notin V_1 \cup V_2)
  • T4=T1T2T_4 = T_1 \cup T_2
  • P4=P1P2{S4S1S2}P_4 = P_1 \cup P_2 \cup \{S_4 \rightarrow S_1 S_2\}
  • 開始記号は S4S_4 とする。

English: To construct a Context-Free Grammar (CFG) G4G_4 that generates the concatenation of L(G1)L(G_1) and L(G2)L(G_2), we introduce a new start symbol S4S_4 and a production rule S4S1S2S_4 \to S_1S_2, where S1S_1 and S2S_2 are the start symbols of G1G_1 and G2G_2 respectively.

Formally, G4=(V4,T4,P4,S4)G_4 = (V_4, T_4, P_4, S_4) is defined as: V4=V1V2{S4}V_4 = V_1 \cup V_2 \cup \{S_4\} (where S4V1V2S_4 \notin V_1 \cup V_2) T4=T1T2T_4 = T_1 \cup T_2 P4=P1P2{S4S1S2}P_4 = P_1 \cup P_2 \cup \{S_4 \to S_1S_2\}

(2-2) L(G4)L4L(G_4) \subseteq L_4 の証明#

証明: (Hint:V1V2=V_1 \cap V_2 = \emptyset を用いる)

G4G_4 によって生成される任意の語を wL(G4)w \in L(G_4) とする。G4G_4 の開始記号 S4S_4 に対する生成規則は S4S1S2S_4 \rightarrow S_1 S_2 のみであるため、導出の最初のステップは必ず以下となる。 S4G4S1S2S_4 \Rightarrow_{G_4} S_1 S_2

文脈自由文法の性質上、各変数の導出は互いに独立している。したがって、生成される語 www=w1w2w = w_1 w_2 と分割でき、それぞれ S1G4w1S_1 \Rightarrow_{G_4}^* w_1 および S2G4w2S_2 \Rightarrow_{G_4}^* w_2 が成り立つ。

ここで、V1V2=V_1 \cap V_2 = \emptyset であるため、S1S_1 から始まる導出において適用可能な生成規則は P1P_1 に含まれるものに限定される。よって、この導出は G1G_1 における導出 S1G1w1S_1 \Rightarrow_{G_1}^* w_1 と完全に等価であり、w1L(G1)w_1 \in L(G_1) が成立する。

同様に、S2S_2 からの導出も P2P_2 の規則のみを使用するため、w2L(G2)w_2 \in L(G_2) となる。 以上より、w=w1w2L4w = w_1 w_2 \in L_4 が示され、L(G4)L4L(G_4) \subseteq L_4 が証明された。

English: Let wL(G4)w \in L(G_4). Since the only production rule for S4S_4 is S4S1S2S_4 \to S_1S_2, any derivation must start as S4S1S2S_4 \Rightarrow S_1S_2.

Because V1V_1 and V2V_2 are disjoint, the derivations from S1S_1 and S2S_2 are independent and use rules from P1P_1 and P2P_2 respectively. Thus, ww can be partitioned into w1w_1 and w2w_2 such that w1L(G1)w_1 \in L(G_1) and w2L(G2)w_2 \in L(G_2), meaning wL4w \in L_4.

(2-3) L4L(G4)L_4 \subseteq L(G_4) の証明#

証明: L4L_4 に属する任意の語を ww とする。定義より、w=w1w2w = w_1 w_2 (ただし w1L(G1),w2L(G2)w_1 \in L(G_1), w_2 \in L(G_2))と表現できる。

w1L(G1)w_1 \in L(G_1) および w2L(G2)w_2 \in L(G_2) であるから、それぞれの文法において以下の導出が存在する。

  • S1G1w1S_1 \Rightarrow_{G_1}^* w_1
  • S2G2w2S_2 \Rightarrow_{G_2}^* w_2

G4G_4 の生成規則の集合 P4P_4 は、P1P_1 および P2P_2 のすべての規則を含んでいる (P1P4,P2P4P_1 \subseteq P_4, P_2 \subseteq P_4)。したがって、上記の導出は G4G_4 においてもそのまま有効である。

G4G_4 において、新たな開始規則 S4S1S2S_4 \rightarrow S_1 S_2 を適用した後、上記の導出をそれぞれ S1S_1S2S_2 に適用することで、以下の導出系列を構成できる。 S4G4S1S2G4w1S2G4w1w2=wS_4 \Rightarrow_{G_4} S_1 S_2 \Rightarrow_{G_4}^* w_1 S_2 \Rightarrow_{G_4}^* w_1 w_2 = w

これにより、語 ww は文法 G4G_4 によって生成されることが示され、L4L(G4)L_4 \subseteq L(G_4) が証明された。

English: Let wL4w \in L_4. By definition, w=w1w2w = w_1w_2 where w1L(G1)w_1 \in L(G_1) and w2L(G2)w_2 \in L(G_2).

There exist derivations S1w1S_1 \xrightarrow{*} w_1 in G1G_1 and S2w2S_2 \xrightarrow{*} w_2 in G2G_2. Since P4P_4 contains all rules from P1P_1 and P2P_2 plus S4S1S2S_4 \to S_1S_2, we can construct a derivation in G4G_4 starting from S4S_4 to w1w2w_1w_2. Hence, wL(G4)w \in L(G_4).

Summary#


大阪大学 情報科学研究科 情報工学 2015年8月実施 ネットワーク#

Author#

KardeniaPoyu

Description#

データリンク層 (data link layer) では、端末 (host) がフレーム (frame) を送信する際にプリアンブル (preamble) と呼ばれる特定のビット列を付与している。プリアンブルとフレームの構成は、図1 に示すものとする。以下の各問に答えよ。

プリアンブルとフレーム構成

図1 プリアンブルとフレーム構成

(1) 伝送レート (transmission rate) XX [bps] の伝送媒体 (transmission medium) を用いた場合に、上位層に対して提供できる最大の転送レート (transfer rate) を、XX および図1 中の YY を用いて示せ。なお、インターフレームギャップ (inter-frame gap) は考えなくて良い。

(2) プリアンブルに関する以下の各小問に答えよ。

  • (2-1) プリアンブルをフレームに付与する目的を述べよ。
  • (2-2) プリアンブルのビット列として最も適切なものを、以下の四つの選択肢から一つ選び、記号を答えよ。また、選んだビット列が、最も適切である理由を説明せよ。
    • 選択肢 A:00000111 00000110 00000101 00000100 00000011 00000010 00000001 00000000
    • 選択肢 B:10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011
    • 選択肢 C:11111111 11111111 11111111 11111111 00000000 00000000 00000000 00000000
    • 選択肢 D:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
  • (2-3) プリアンブルと同一のビット列がペイロード (payload) に含まれる場合に生じる問題を述べよ。また、その問題を回避するためにイーサネット (Ethernet) で行われる方策を説明せよ。

(3) 図1 で与えられるフレームには、伝送誤り (transmission error) 検出を行うための FCS (frame check sequence) が含まれている。生成多項式 G(x)G(x) を用いた巡回冗長検査 (cyclic redundancy check) によりフレームの伝送誤りが検出される。すなわち、生成多項式 G(x)G(x) で定義される擬巡回符号 (pseudo-cyclic code) の符号語の冗長記号部分が FCS となり、誤り検出が行われる。以下の各小問に答えよ。ただし、生成多項式 G(x)G(x) は次の多項式とする。

G(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1G(x) = x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11} + x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1

  • (3-1) FCS のサイズ YY [バイト] の値を答えよ。
  • (3-2) 受信フレーム(誤り検出における受信語)の多項式表現を R(x)R(x) とする。巡回冗長検査において誤り無しと判断する条件式を、R(x)R(x)G(x)G(x) を用いて書け。
  • (3-3) 生成多項式 G(x)G(x) を用いて検出できないビット誤り (bit error) の最小個数 rr を考える。フレーム長が 1000 [バイト] である時の rr を求めよ。求めた過程も簡単に書け。必要に応じて、G(x)G(x) を生成多項式とする巡回符号の次数最小の符号語を表す多項式(符号多項式) c(x)c(x) をハミング重みごとにまとめた表1 を用いてよい。
ハミング重みc(x)c(x)
1なし
2なし
31+x41678+x916391 + x^{41678} + x^{91639}
41+x2215+x2866+x30061 + x^{2215} + x^{2866} + x^{3006}
51+x39+x117+x155+x3001 + x^{39} + x^{117} + x^{155} + x^{300}
61+x79+x85+x123+x186+x2031 + x^{79} + x^{85} + x^{123} + x^{186} + x^{203}
71+x45+x53+x74+x80+x120+x1231 + x^{45} + x^{53} + x^{74} + x^{80} + x^{120} + x^{123}

表1 $G(x)$ を生成多項式とする巡回符号の次数最小の符号語を表す多項式 $c(x)$

  • (3-4) 図1 のフレームの最大ペイロード長は 1500 [バイト] である。最大ペイロード長をその 10 倍の 15000 [バイト] に増やすことの利点と欠点を、巡回冗長検査の観点から簡潔に説明せよ。
  • (3-5) 生成多項式 G(x)G(x) を用いたバースト誤り (burst error) 検出に関する以下の文章中で、bb にあてはまる数値と空欄 [ ] にあてはまる多項式を書け。

フレーム内で、図2 に示すような 1 つのバースト誤りが発生したとする。その長さが bb [ビット] 以下であれば、確実にそのバースト誤りを検出できる。しかし、長さが (b+1)(b+1) [ビット] のときは、検出できない場合がある。例えば、送信フレーム(符号語)を表す多項式が 0 と等しく小問 (3-2) の多項式 R(x)R(x) が [ ] と等しいときに、そのバースト誤りを検出できない。

長さ b [ビット] のバースト誤りの例

図2 長さ b [ビット] のバースト誤りの例


Kai#

(1)#

最大転送レート:

Maximum Transfer Rate=X×15001522+Y[bps]\text{Maximum Transfer Rate} = X \times \frac{1500}{1522 + Y} \quad \text{[bps]}

導出: 最大の転送効率を得るには、ペイロードを最大値の 15001500 バイトにする必要がある。図1 より、プリアンブルから FCS までのフレーム全体の合計サイズは以下の通りとなる。 8(Preamble)+6(Dest)+6(Src)+2(Type)+1500(Payload)+Y(FCS)=1522+Y[Bytes]8 \, (\text{Preamble}) + 6 \, (\text{Dest}) + 6 \, (\text{Src}) + 2 \, (\text{Type}) + 1500 \, (\text{Payload}) + Y \, (\text{FCS}) = 1522 + Y \quad \text{[Bytes]} したがって、物理的な伝送レート XX に対して、全ビット長に占める純粋なデータ(ペイロード)の割合を乗じることで、上位層に提供される実効的な最大転送レートが求まる。

English Translation for Derivation: To achieve the maximum transfer rate, the payload must be set to its maximum value of 1500 bytes. Based on Figure 1, the total frame length is 1522+Y1522 + Y bytes. The effective transfer rate is the physical transmission rate XX multiplied by the efficiency ratio of the payload to the total frame size.


(2)#

(2-1)#

解答: 受信側においてビット同期(クロック同期)を確立し、フレームの開始境界(バイト境界)を正確に特定するため。

English Translation: To establish bit synchronization (clock recovery) at the receiver and accurately identify the start boundary of the frame.

(2-2)#

解答:

  • 記号: B
  • 理由: 10 が交互に現れるビット列は、信号の電圧レベルの遷移(エッジ)が最も頻繁に発生し、受信側の PLL(位相同期回路)がクロック信号を抽出・同期するのに最適であるため。また、末尾の 11 (SFD: Start Frame Delimiter) によって、同期直後のデータ本体の開始を明確に識別できるから。

English Translation: Choice B. The alternating pattern of ‘1’s and ‘0’s provides the maximum number of signal transitions, which is ideal for the receiver’s PLL to maintain clock synchronization. The final ‘11’ (SFD) clearly marks the transition from the preamble to the data payload.

(2-3)#

解答:

  • 生じる問題: 誤同期 (False Synchronization)。ペイロード内のデータが偶然プリアンブルと一致した場合、受信側がそれをフレームの開始と誤認し、誤った位置から受信処理を開始してしまう問題。
  • 回避策: フレームとフレームの間に無信号状態の インターフレームギャップ (IFG: Inter-Frame Gap) を設ける。受信側は、通信路がアイドル状態から立ち上がった直後の特定のビットパターンのみをプリアンブルとして処理することで、データ内の疑似パターンによる誤動作を回避している。

English Translation: Problem: False synchronization. The receiver might misinterpret payload data as a preamble.
Solution: Using an Inter-Frame Gap (IFG) ensures that only patterns appearing immediately after an idle state are recognized as valid preambles.


(3)#

(3-1)#

解答: 4 [バイト] (理由:生成多項式 G(x)G(x) の最大次数が 32 であるため、FCS は 32 ビット = 4 バイトとなる。)

(3-2)#

解答:

R(x)0(modG(x))R(x) \equiv 0 \pmod{G(x)} (または、「R(x)R(x)G(x)G(x) で割り切れること」)

(3-3)#

解答:

  • rr の値: 4
  • 求めた過程: フレーム長 1000 [バイト] は 80008000 [ビット] である。表1 より、G(x)G(x) の倍数となる最小次数の多項式(=検出不可能な誤りパターン)を調べると、ハミング重み 3 の最小次数は 9163991639 であり、80008000 ビットのフレーム内では物理的に発生し得ない。一方、ハミング重み 4 の最小次数は 30063006 であり、80008000 ビットの範囲内に収まる。したがって、検出できない最小のビット誤り個数は 4 個である。

English Translation: A 1000-byte frame (8000 bits) is too short to contain a weight-3 undetectable error (minimum degree 91639). However, a weight-4 undetectable error (minimum degree 3006) can fit within this length. Thus, the minimum number of undetectable errors rr is 4.

(3-4)#

解答:

  • 利点: ヘッダや FCS などの固定オーバーヘッドがデータ全体に占める割合が低下し、実効的なデータ伝送効率(スループット)が向上する。
  • 欠点: フレーム長が 1500015000 バイト (120,000120,000 ビット) になると、ハミング重み 3 の最小次数 (9163991639) を上回ってしまう。これにより、従来は確実に検出できていた 3 ビットの誤りパターンがフレーム内に収まるようになり、誤り検出能力(最小ハミング距離)が低下する。

English Translation: Pros: Improved throughput due to lower overhead ratio.
Cons: Exceeding the minimum degree for weight-3 errors (91639) significantly reduces the error detection capability for 3-bit error patterns.

(3-5)#

解答:

  • b=b = 32
  • 空欄 = G(x)G(x)

Summary & Insights#


大阪大学 情報科学研究科 情報工学 2015年8月実施 離散構造#

Author#

KardeniaPoyu

Description#

(1) 情報論理 (mathematical logic) に関する以下の各小問に答えよ. ただし, 論理式 (logic formula) の記述には以下の記号を用いる. ,,,¬\to, \land, \lor, \neg はそれぞれ含意 (implication), 論理積 (conjunction, and), 論理和 (disjunction, or), 否定 (negation, not) を表す論理演算子とする. また, 必要に応じて 1inTi\bigwedge_{1 \le i \le n} T_i (あるいは 1inTi\bigvee_{1 \le i \le n} T_i) の表記を用いる. これは論理式 TiT_iii を 1 から nn (nn は正整数) まで順次変えながら論理積 (あるいは論理和) で結合した式を意味している. なお, 1i<jnTij\bigwedge_{1 \le i < j \le n} T_{ij} は, 1in1(i+1jnTij)\bigwedge_{1 \le i \le n-1} \left(\bigwedge_{i+1 \le j \le n} T_{ij}\right) を意味する.

n2n^2 マス ×\timesn2n^2 マスで構成されるパズル (puzzle) を考える. 本パズルにおける規則は以下の通りである.

  • 空いているマスに 1 から n2n^2 までの整数を入れる.
  • 各列, 各行および, 太線で囲まれた n×nn \times n の各ブロック内に同じ整数を複数用いてはいけない.

図 1 は, n=3n = 3 における本パズルの問題例である. 以降, このパズル問題を解くための制約式を和積形 (CNF: Conjunctive Normal Form) の命題論理式 (propositional formula) で与えることを考える. なお, 和積形とは, 一つ以上の和項の論理積で表される論理式である. また, 和項とは, 一つ以上のリテラル (literal) の論理和で表される論理式である. ここでリテラルとは, 命題変数 (propositional variable) または命題変数の否定を意味する. ii (1in21 \le i \le n^2) 行 jj (1jn21 \le j \le n^2) 列のマスを c(i,j)c(i, j) で表記する (行は上から順に 1,,n21, \dots, n^2 行目, 列は左から順に 1,,n21, \dots, n^2 列目である).

Sudoku n=3

図 1: n=3n = 3 の問題例

マス c(i,j)c(i, j) に整数 kk (1kn21 \le k \le n^2) が入っているとき, かつ, そのときのみ真となる命題変数 xijkx_{ijk} を導入する. 以下の各小問に答えよ.

  • (1-1) 図 1 において命題変数 x115,x214,x841x_{115}, x_{214}, x_{841} の真偽をそれぞれ答えよ.
  • (1-2) 縦 n2n^2 マス ×\timesn2n^2 マスで構成される本パズル問題における命題変数 xijkx_{ijk} の総数はいくつか. nn を用いて示せ.
  • (1-3) 「1 行 1 列目のマスには, 1 以上 9 以下の整数が少なくとも一つ入る」ことを表す論理式を記述せよ.
  • (1-4) CNF 式 A(i,j)A(i, j) を「iijj 列目のマスには, 1 以上 n2n^2 以下の整数が少なくとも一つ入る」ことを表す論理式とする. 論理式 A(i,j)A(i, j) を記述せよ.
  • (1-5) A(i,j)A(i, j) を用いて, 「どのマスについても, 1 以上 n2n^2 以下の整数が少なくとも一つ入る」ことを表す論理式 AA を示せ.
  • (1-6) ¬p¬q\neg p \lor \neg q は, 「p,qp, q がともに真になるということはない」ことを表す論理式である. これを用いて「どの行についても各整数は高々1回しか現れない」ことを表す CNF 式 BB を作りたい. 以下の空欄を埋めることで BB を完成させよ.

B=1in21j<ln21kn2()B = \bigwedge_{1 \le i \le n^2} \bigwedge_{1 \le j < l \le n^2} \bigwedge_{1 \le k \le n^2} (\Box)

  • (1-7) 「どの列についても各整数は高々1回しか現れない」ことを表す CNF 式 CC を示せ.
Sudoku n=2

図 2: n=2n = 2 の問題

  • (1-8) この小問では, n=2n = 2 として, 図 2 の問題に着目する.

図 2 の問題では, 空いたマス (例えば 2 行 4 列目) にどのように整数を埋めても, パズルを解くことができない. ここでは, (命題 P) 「図 2 の問題では, 空いたマスにどのように整数を埋めても, パズルを解くことができない」ことを示したい. この命題 P を示すには, 「太線で囲まれた n×nn \times n のどのブロックについても各整数が高々1回現れる」ことを意味する CNF 式を DD, 図 2 における整数の配置を表す論理式を AssignAssign としたときに, (方針) ABCDAssignA \land B \land C \land D \land Assign の CNF 式が充足不能 (unsatisfiable) であることを示せればよい。 このとき, 以下の (1-8-1)~(1-8-2) に答えよ.

  • (1-8-1) 論理式 AssignAssign を示せ.
  • (1-8-2) 上記の方針に沿って, 命題 P が成り立つことを導出原理 (resolution principle) 用いて具体的に示せ.

(2) 空でない有限集合 (finite set) VV 上の二項関係 (binary relation) EE について, 次のように二項関係 RiR_iSiS_i (i=0,1,2,i = 0, 1, 2, \dots) を定義する. また, VV の各要素を頂点とし, EE の各要素を有向辺とする有向グラフ (directed graph) を GG とする. ただし (u,v)E(u, v) \in E に対しては, uu を有向辺の始点とし, vv を有向辺の終点とする.

R0=S0={(v,v)vV}R_0 = S_0 = \{(v, v) \mid v \in V\} Ri+1={(u,v)(wV)[uRiwwEv]}(i0)R_{i+1} = \{(u, v) \mid (\exists w \in V) [u R_i w \land w E v]\} \quad (i \ge 0) Si+1=SiRi+1(i0)S_{i+1} = S_i \cup R_{i+1} \quad (i \ge 0)

以下の各小問に答えよ.

  • (2-1) 有向グラフ G=(V,E)G = (V, E) が下図の時, R3R_3 を求めよ.
Directed Graph
  • (2-2) ある非負の整数 nn が存在して Sn=Sn+1S_n = S_{n+1} であることを, 背理法 (proof by contradiction) を用いて証明せよ.
  • (2-3) 小問 (2-2) の nn について, SnS_n の逆関係 (inverse relation) を Sn1={(u,v)vSnu}S_n^{-1} = \{(u, v) \mid v S_n u\} とし, S=SnSn1S = S_n \cap S_n^{-1} とする. SS が同値関係 (equivalence relation) であることを証明せよ. ただし, 任意の非負整数 i,ji, j について, ((u,v)Ri)((v,w)Rj)((u, v) \in R_i) \land ((v, w) \in R_j) ならば (u,w)Ri+j(u, w) \in R_{i+j} が成立することは, 証明なしで用いてよい.
  • (2-4) 小問 (2-3) の SS について, vVv \in VSS による同値類 (equivalence class) を [v]S[v]_S とする. [v]S[v]_S が, グラフ GG について何を表すか簡潔に述べよ.

Kai#

(1-1) 命題変数の真偽#

図1の盤面に基づく命題変数 xijkx_{ijk}iijj列のマスに整数kkが入る)の真偽は以下の通りです。

  • x115x_{115}: 偽 (False) (※図1において1行1列目の数字は7であるため)
  • x214x_{214}: 真 (True) (※図1において2行1列目の数字は4であるため)
  • x841x_{841}: 偽 (False) (※図1において8行4列目の数字は6であるため)

(1-2) 命題変数の総数#

n6n^6

解説:行が n2n^2 通り、列が n2n^2 通り、入る整数が n2n^2 通りあり、これらは独立した組み合わせであるため、全体の変数総数は n2×n2×n2=n6n^2 \times n^2 \times n^2 = n^6 となります。

(1-3) 存在制約論理式(n=3n=3、1行1列目のマス)#

「1行1列目のマスには、1以上9以下の整数が少なくとも一つ入る」ことを表す論理式は以下の通りです。

x111x112x113x114x115x116x117x118x119x_{111} \lor x_{112} \lor x_{113} \lor x_{114} \lor x_{115} \lor x_{116} \lor x_{117} \lor x_{118} \lor x_{119}

(1-4) CNF式 A(i,j)A(i,j) (一般化されたマスの存在制約)#

iijj列目のマスには1以上n2n^2以下の整数が少なくとも一つ入る」ことを表す論理式は以下の通りです。

A(i,j)=k=1n2xijkA(i,j) = \bigvee_{k=1}^{n^2} x_{ijk}

(1-5) 論理式 AA (全マスの存在制約)#

「どのマスについても1以上n2n^2以下の整数が少なくとも一つ入る」ことを表す論理式 AA は以下の通りです。

A=i=1n2j=1n2A(i,j)=i=1n2j=1n2(k=1n2xijk)A = \bigwedge_{i=1}^{n^2} \bigwedge_{j=1}^{n^2} A(i,j) = \bigwedge_{i=1}^{n^2} \bigwedge_{j=1}^{n^2} \left( \bigvee_{k=1}^{n^2} x_{ijk} \right)

(1-6) 論理式 BB の空欄(行内の競合制約)#

「どの行についても各整数は高々1回しか現れない」ことを表すための空欄に入る論理式は以下の通りです。

¬xijk¬xilk\neg x_{ijk} \lor \neg x_{ilk}

(1-7) CNF式 CC (列内の競合制約)#

「どの列についても各整数が高々1回しか現れない」ことを表すCNF式 CC は以下の通りです。

C=j=1n21i1<i2n2k=1n2(¬xi1jk¬xi2jk)C = \bigwedge_{j=1}^{n^2} \bigwedge_{1 \le i_1 < i_2 \le n^2} \bigwedge_{k=1}^{n^2} (\neg x_{i_1jk} \lor \neg x_{i_2jk})

(1-8-1) 論理式 AssignAssign#

図2(n=2n=2)で与えられた確定マスに基づく初期配置の論理式は以下の通りです。

Assign=x111x122x212x224x433Assign = x_{111} \land x_{122} \land x_{212} \land x_{224} \land x_{433}

(1-8-2) 導出原理(Resolution Principle)を用いた命題 P の証明#

【日本語解答】 空いたマス c(2,4)c(2,4) に着目する。制約 AA より、このマスには 1 から 4 のいずれかが入るため、以下の和項が存在する。

C0:x241x242x243x244C_0: x_{241} \lor x_{242} \lor x_{243} \lor x_{244}

また、AssignAssign および制約 BB(行), CC(列), DD(ブロック)より、以下の和項が CNF 式に含まれる。

  • C1:¬x122¬x242C_1: \neg x_{122} \lor \neg x_{242} (制約 D:ブロック1内に 2 は複数存在しない)
  • C2:¬x212¬x242C_2: \neg x_{212} \lor \neg x_{242} (制約 B:2行目に 2 は複数存在しない)
  • C3:¬x224¬x244C_3: \neg x_{224} \lor \neg x_{244} (制約 B:2行目に 4 は複数存在しない)

AssignAssign の各要素はすべて真であるため、単一リテラル(Unit Clause)として導出に用いる。

  1. x212x_{212}C2C_2 から導出原理により ¬x242\neg x_{242} を得る。
  2. 同様に、ブロック制約 D と AssignAssign の要素から ¬x241\neg x_{241} を得る。
  3. 同様に、行制約 B と x224x_{224} から ¬x244\neg x_{244} を得る。
  4. 同様に、列制約 C(あるいはブロック制約 D)と AssignAssign の要素から ¬x243\neg x_{243} を得る。

これら 4 つの否定リテラル ¬x241,¬x242,¬x243,¬x244\neg x_{241}, \neg x_{242}, \neg x_{243}, \neg x_{244}C0C_0 に対して順次導出(Unit Resolution)すると、すべてのリテラルが消去され、最終的に 空節(\emptyset、矛盾) が導出される。 したがって、CNF式は充足不能(Unsatisfiable)であり、パズルを解くことはできない。

[English Translation] Focus on the empty cell c(2,4)c(2,4). From constraint AA, this cell must contain an integer from 1 to 4, yielding the following clause: C0:x241x242x243x244C_0: x_{241} \lor x_{242} \lor x_{243} \lor x_{244}

Given AssignAssign and the conflict constraints BB (row), CC (column), and DD (block), the CNF formula includes clauses such as:

  • C2:¬x212¬x242C_2: \neg x_{212} \lor \neg x_{242} (Constraint B: no duplicate ‘2’s in row 2)
  • C3:¬x224¬x244C_3: \neg x_{224} \lor \neg x_{244} (Constraint B: no duplicate ‘4’s in row 2)

Since elements in AssignAssign are all true, they act as unit clauses.

  1. Applying the resolution principle on x212x_{212} and C2C_2 yields ¬x242\neg x_{242}.
  2. Similarly, applying resolution with block constraint D and an element of AssignAssign yields ¬x241\neg x_{241}.
  3. Applying resolution with x224x_{224} and row constraint B yields ¬x244\neg x_{244}.
  4. Applying resolution with column/block constraints and AssignAssign yields ¬x243\neg x_{243}.

By sequentially resolving these four negated literals against the initial clause C0C_0 (Unit Resolution), all literals are eliminated, ultimately deriving the empty clause (\emptyset, contradiction). Therefore, the CNF formula is unsatisfiable, proving that the puzzle cannot be solved.


(2-1) R3R_3 の算出#

【日本語解答】 R3R_3 は、与えられた有向グラフ GG において、任意の頂点 uu から有向辺を正確に「3歩(3エッジ)」辿って到達できる頂点 vv のペア (u,v)(u, v) の集合である。

R3={(u,v)グラフ G 上で u から v への長さ3のパスが存在する}R_3 = \{ (u, v) \mid \text{グラフ } G \text{ 上で } u \text{ から } v \text{ への長さ3のパスが存在する} \}

(2-2) Sn=Sn+1S_n = S_{n+1} となる非負整数 nn の存在証明#

【日本語解答】 背理法を用いて証明する。 頂点集合 VV は有限集合であるため、直積集合 V×VV \times V の要素数も有限である(V=k|V| = k とすると V×V=k2|V \times V| = k^2)。 定義 Si+1=SiRi+1S_{i+1} = S_i \cup R_{i+1} より、S0S1S2V×VS_0 \subseteq S_1 \subseteq S_2 \subseteq \dots \subseteq V \times V が成り立つ。

仮に、任意の非負整数 nn について SnSn+1S_n \neq S_{n+1} であると仮定する。これは、SnS_n が常に Sn+1S_{n+1} の真部分集合 (SnSn+1S_n \subset S_{n+1}) であることを意味する。 すなわち、要素数において S0<S1<S2<|S_0| < |S_1| < |S_2| < \dots が無限に続くことになり、ある段階で要素数が k2k^2 を超過する。 しかし、SnV×VS_n \subseteq V \times V であるため、要素数が k2k^2 を超えることはあり得ない。これは矛盾である。 したがって、ある非負整数 nn が存在して Sn=Sn+1S_n = S_{n+1} となる。

[English Translation] We prove this by contradiction. Since the vertex set VV is a finite set, the Cartesian product V×VV \times V is also finite (if V=k|V| = k, then V×V=k2|V \times V| = k^2). By definition Si+1=SiRi+1S_{i+1} = S_i \cup R_{i+1}, the sequence monotonically increases: S0S1S2V×VS_0 \subseteq S_1 \subseteq S_2 \subseteq \dots \subseteq V \times V.

Assume, for the sake of contradiction, that SnSn+1S_n \neq S_{n+1} for all non-negative integers nn. This implies that SnS_n is a strict subset of Sn+1S_{n+1} (SnSn+1S_n \subset S_{n+1}) universally. Consequently, the cardinality strictly increases infinitely: S0<S1<S2<|S_0| < |S_1| < |S_2| < \dots, which means it will eventually exceed k2k^2. However, since SnV×VS_n \subseteq V \times V, its cardinality can never exceed k2k^2. This is a contradiction. Therefore, there must exist a non-negative integer nn such that Sn=Sn+1S_n = S_{n+1}.

(2-3) S=SnSn1S = S_n \cap S_n^{-1} が同値関係であることの証明#

【日本語解答】 SS が同値関係であることを示すために、以下の3条件を満たすことを証明する。

  1. 反射律 (Reflexivity): 任意の vVv \in V について、定義より (v,v)R0(v,v) \in R_0 であり、R0SnR_0 \subseteq S_n。よって (v,v)Sn(v,v) \in S_n である。逆関係の定義から (v,v)Sn1(v,v) \in S_n^{-1} も成り立つ。したがって、(v,v)SnSn1=S(v,v) \in S_n \cap S_n^{-1} = S

  2. 対称律 (Symmetry): (u,v)S(u,v) \in S とすると、定義より (u,v)Sn(u,v) \in S_n かつ (u,v)Sn1(u,v) \in S_n^{-1} である。 逆関係の定義 (u,v)Sn1    (v,u)Sn(u,v) \in S_n^{-1} \iff (v,u) \in S_n より、(v,u)Sn(v,u) \in S_n かつ (v,u)Sn1(v,u) \in S_n^{-1} となる。したがって、(v,u)SnSn1=S(v,u) \in S_n \cap S_n^{-1} = S

  3. 推移律 (Transitivity): (u,v)S(u,v) \in S かつ (v,w)S(v,w) \in S とする。 (u,v)Sn(u,v) \in S_n かつ (v,w)Sn(v,w) \in S_n であるため、ある i,jni, j \le n が存在して (u,v)Ri,(v,w)Rj(u,v) \in R_i, (v,w) \in R_j となる。問題文の仮定より、(u,w)Ri+j(u,w) \in R_{i+j} である。ここで SnS_n はこれ以上要素が増加しない閉包状態 (Sn=Sn+1S_n = S_{n+1}) であるため、Ri+jSnR_{i+j} \subseteq S_n が成り立ち、(u,w)Sn(u,w) \in S_n。 同様に、逆関係側でも (w,v)Sn(w,v) \in S_n かつ (v,u)Sn(v,u) \in S_n より (w,u)Sn(w,u) \in S_n となり、その逆関係である (u,w)Sn1(u,w) \in S_n^{-1} も成り立つ。 したがって、(u,w)SnSn1=S(u,w) \in S_n \cap S_n^{-1} = S

以上より、SS は同値関係である。

[English Translation] To prove that SS is an equivalence relation, we must show it satisfies the following three properties:

  1. Reflexivity: For any vVv \in V, (v,v)R0(v,v) \in R_0 by definition, and since R0SnR_0 \subseteq S_n, we have (v,v)Sn(v,v) \in S_n. By the definition of the inverse relation, (v,v)Sn1(v,v) \in S_n^{-1}. Thus, (v,v)SnSn1=S(v,v) \in S_n \cap S_n^{-1} = S.

  2. Symmetry: Assume (u,v)S(u,v) \in S. By definition, (u,v)Sn(u,v) \in S_n and (u,v)Sn1(u,v) \in S_n^{-1}. Using the definition of the inverse relation ((u,v)Sn1    (v,u)Sn(u,v) \in S_n^{-1} \iff (v,u) \in S_n), we obtain (v,u)Sn(v,u) \in S_n and (v,u)Sn1(v,u) \in S_n^{-1}. Therefore, (v,u)SnSn1=S(v,u) \in S_n \cap S_n^{-1} = S.

  3. Transitivity: Assume (u,v)S(u,v) \in S and (v,w)S(v,w) \in S. This implies (u,v)Sn(u,v) \in S_n and (v,w)Sn(v,w) \in S_n. Thus, there exist integers i,jni, j \le n such that (u,v)Ri(u,v) \in R_i and (v,w)Rj(v,w) \in R_j. Based on the given assumption, (u,w)Ri+j(u,w) \in R_{i+j}. Since SnS_n is in a closed state where no new elements are added (Sn=Sn+1S_n = S_{n+1}), Ri+jSnR_{i+j} \subseteq S_n, yielding (u,w)Sn(u,w) \in S_n. Through the exact same logic on the inverse relations, (w,v)Sn(w,v) \in S_n and (v,u)Sn(v,u) \in S_n yields (w,u)Sn(w,u) \in S_n, which is equivalent to (u,w)Sn1(u,w) \in S_n^{-1}. Therefore, (u,w)SnSn1=S(u,w) \in S_n \cap S_n^{-1} = S.

Conclusively, SS is an equivalence relation.

(2-4) 同値類 [v]S[v]_S が表すもの#

【日本語解答】 有向グラフ GG における、頂点 vv を含む 強連結成分 (Strongly Connected Component)

[English Translation] The Strongly Connected Component (SCC) containing vertex vv within the directed graph GG.

Osaka University IST Graduate Entrance Exam (2016)
https://blog.apoyu.com/posts/0050/
Author
Apoyu
Published at
2026-04-26

Share Article

Generate a share poster or copy the link to share this article.

Continue reading

Related reading

Based on shared tags and categories

Take another route

A consistent pick from other articles

Comments

Loading comments...

Last updated on , 140 days ago

Some content may be outdated