大阪大学 情報科学研究科 情報工学 2015年8月実施 アルゴリズムとプログラミング
Author
Description
図に示す ANSI-C 準拠である C 言語のプログラム (program) は、配列 (array) values の要素 (element) に格納された非負整数 (non negative integer) のデータ (data) を、 進数 (-base number) () とみなして整列 (sort) し、出力 (output) するプログラムである。以下の各問に答えよ。
(1) プログラムの 10~26 行目の for 文の処理において 1 巡目 ( のとき) および 2 巡目 ( のとき) の終了時における配列 buckets の内容を答えよ。なお、配列の各要素は 0 で初期化される。配列の各要素 buckets[x][y] において、 は 3 以上の値、 は 5 以上の値を取りうるが、これらの内容については答えなくてよい。
(2) プログラムで実現されている整列アルゴリズム (sorting algorithm) に関する以下の各小問に答えよ。
- (2-1) この整列アルゴリズムは、一般に何と呼ばれているか名称を答えよ。
- (2-2) 整列対象のすべてのデータを 進数で表現したときの最大の桁数を 、データの数を としたとき、時間計算量のオーダー表記を理由とともに答えよ。
- (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 巡目 () 終了時:
下位 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]=11x=2:buckets[2][0]=12,buckets[2][1]=2
2 巡目 () 終了時:
1 巡目終了後の values は {21, 1, 11, 12, 2} となる。これを 2 桁目(10の位)に基づき格納する。
x=0:buckets[0][0]=1,buckets[0][1]=2x=1:buckets[1][0]=11,buckets[1][1]=12x=2:buckets[2][0]=21
(2)
-
(2-1) 基数整列 (Radix Sort)
-
(2-2) 。各桁において 個のデータをバケツに入れ、その後 個のバケツを走査してデータを回収する操作を、 回繰り返すため。 English: For each of the digits, the algorithm distributes the elements into their corresponding buckets and subsequently scans the buckets to collect the elements. This single pass takes time, and the process is repeated 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)
- 时间计算量:比较ソートの下限 に関わらず、桁数 が小さければ に近い線形時間で動作する。 English: Unlike comparison-based sorting algorithms, which are bounded by a lower limit of , Radix Sort can operate in near-linear time provided that the number of digits 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

大阪大学 情報科学研究科 情報工学 2015年8月実施 計算機システムとシステムプログラム
Author
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) 一つの機械語命令 (以下, 命令と略す) の処理を 段のステージ (stage) に分け, 1 ステージを 1 クロックサイクル (clock cycle) で実行する同期型 CPU を考える. クロック周波数を [Hz] とする. 以下の (1-2-1)~(1-2-4) に答えよ.
- (1-2-1) 個の命令をパイプライン (pipeline) 処理を用いずに逐次的に実行する場合の実行時間 [s] を示せ.
- (1-2-2) 個の命令をパイプライン処理を用いて実行する場合の実行時間 [s] を示せ. 但し, パイプラインストール (pipeline stall) は無いものとする.
- (1-2-3) 個の命令をパイプライン処理を用いて実行する場合の単位時間あたりの命令実行数 [instructions/s] について, における極限を示せ. 但し, パイプラインストールは無いものとする.
- (1-2-4) パイプライン処理を用いた CPU の性能 (単位時間あたりの命令実行数) を高める手法の一つとして, ステージ数 を増やす方法がある. この方法により 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) [s]
-
(1-2-2) [s]
-
(1-2-3) [instructions/s]
-
(1-2-4) 理由:ステージ数を増やすことで、1ステージあたりの論理回路が短くなり、各ステージの処理遅延が減少する。これにより、CPU をより高いクロック周波数 で動作させることが可能になり、结果として全体的な命令スループット(単位時間あたりの命令実行数)が向上するため。
English: Increasing the number of pipeline stages () reduces the logic gate delay per stage. This reduction allows the CPU to operate at a higher clock frequency (), which consequently increases the overall instruction throughput.
(1-3)
パイプラインの動作ルール:
- 構造ハザード:プログラムとデータは同一のメインメモリにあるため、
IF,OF,Sが同一クロックサイクルで同時に発生するとメモリアクセス競合が起きる。 - データハザード:RAW (Read After Write)。ある命令の
Sステージが完了した後のクロックサイクルでなければ、その値を参照する後続命令のOFステージを開始できない。
(1-3-1)
| クロックサイクル | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 命令1: MOV R1, (A) | IF | D | OF | EX | S | |||||||
| 命令2: MOV R2, (B) | IF | D | OF | EX | S | |||||||
| 命令3: ADD R1, R2 | - | - | IF | D | OF | EX | S |
(注:クロック2では命令3の IF が命令1の OF と競合してストール。続くクロック3でも命令3の IF が命令2の OF と競合してストールし、クロック4でようやく IF が実行可能となる。)
(1-3-2)
| クロックサイクル | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 命令1: MOV R1, (A) | IF | D | OF | EX | S | |||||||
| 命令2: INC R1 | IF | D | - | - | OF | EX | S | |||||
| 命令3: MOV (B), R1 | - | IF | D | - | - | - | OF | EX | S |
(注:前記「ある命令でレジスタに書き込まれた値を以降の命令で参照する場合, 前者の命令の格納 (S) が完了した後, 後者の命令のオペランドフェッチ (OF) が可能となる」という条件に注意してほしい。)
(2-1)
- (2-1-1) 平均アクセス時間 = (ヒット率 キャッシュアクセス時間) + (1 - ヒット率) ミス時のアクセス時間の和
- [ns]
- (2-1-2) 求めるキャッシュヒット率を とすると:
- 答:約 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
NOTE为了彻底理清本题中流水线受阻(Stall)的深层原因,我们需要明确 5 个阶段(Stage)的职责以及指令间的依赖关系:
1. 流水线阶段职责定义
- IF (Instruction Fetch / 命令フェッチ):从内存中读取指令。
资源占用:会占用 内存总线(Memory Bus)。如果架构是单总线(指令和数据共用),此时其他阶段绝对不能访问内存。
- D (Decode / 命令デコード):解析指令,确定操作类型。
资源占用:纯 CPU 内部操作,占用 CPU 内部的 指令译码器(Decoder)。互不干扰。
- OF (Operand Fetch / オペランドフェッチ):从寄存器或内存中获取执行所需的数据。
资源占用(分两种情况):
如果是从内存取数(如 MOV R1, (A)),会占用内存总线,此时会和 IF 阶段抢资源。
如果是从寄存器取数(如 ADD R1, R2),只占用 CPU 内部的高速总线,不会占用外部的内存总线,因此不会和 IF 抢资源。
EX (Execute / 実行):执行算术或逻辑运算。资源占用:纯 CPU 内部操作,占用 CPU 内部的 算术逻辑单元(ALU)。互不干扰。
S (Store / 格納):将执行结果写回至寄存器或内存。
资源占用(同样分两种情况):
如果写回内存(如 MOV (B), R1),会占用内存总线。
如果写回寄存器(如 INC R1),只占用内部资源,不占用内存总线。但在写完(S阶段结束)之前,硬件会物理锁死(Stall)后面所有想读取该寄存器的指令,这就是数据冒险的根源。
NOTE2. 指令流依赖分析
命令1: MOV R1, (A)→ 写 R1(加载数据)。它在 OF 阶段 是去内存地址 A 中把数据拿出来。拿出来之后,数据在这个周期并没有立刻进入 R1。数据还要穿过 CPU 的内部总线,直到最后一步的 S(Store / 格納)阶段,CPU 才真正发出写信号,将高低电平打入 R1 的物理电路中。也就是说,直到命令1的 S 阶段结束,R1 里面装的才是新数据。
命令2: INC R1→ 读 R1 + 写 R1(自增)它要在下一阶段(EX 阶段)对数据进行 +1 运算。因此,它必须在 OF 阶段 把 R1 里面的值准确无误地读入 ALU(算术逻辑单元)的输入寄存器中。假设命令2的 OF 不等待,硬是在时钟周期3去读 R1。此时,命令1才刚刚完成内存读取(刚好过了 OF 阶段),数据还在传输总线上,并没有写入 R1。结果就是:命令2在周期3读取到了 R1 里面以前的旧数据(脏数据),然后拿这个错误的数据去加 1。整个程序的计算结果就全盘崩溃了。
命令3: MOV (B), R1→ 读 R1(存入内存)
TIP总之,记住:(A)、(B)、IF 抢的是内存总线;而 R1、R2 是 CPU 内部寄存器。
NOTE核心结论:这三条指令构成了典型的 RAW (Read-After-Write) 数据依赖。在硬件没有实现 Data Forwarding(数据前推)的情况下,
命令2必须严格等待命令1完成 S (Store) 阶段后才能进行自己的 OF 阶段;同理命令3也要等待命令2。这种连续的资源竞争正是导致流水线大幅停顿的原因。在(1-3-1)中我们能看出,周期 4 时,命令1在 S(写回寄存器 R1),命令2在 EX(ALU运算)。此时,内存总线释放,命令3得以顺利执行 IF!
在(1-3-2)中我们能看出,CPU 内部有一个叫冒险检测单元(Hazard Detection Unit)的纯硬件模块。它在周期 2 发现:命令2下一秒就要读 R1,但是命令1还要等到周期 4 结束才能把新数据写进 R1!
于是,这个硬件单元强制切断了命令2向后推进的时钟信号,把命令2物理冻结在流水线上。这就是周期 3、4 里的
-。周期 5,因为命令1在周期 4 结束时,终于完成了 S,把高低电平打入了 R1 的物理电路。警报解除,命令2解除冻结,在周期 5 执行 OF(此时是从 CPU 内部的 R1 读取,不占用外部内存)。
命令3同理,命令3也要用 R1,冒险检测单元再次介入,把它冻结在 D 阶段后面。直到命令2在周期 7 结束 S(把 INC 后的新值写回 R1),命令3才在 周期 8 顺利进入 OF 阶段。
大阪大学 情報科学研究科 情報工学 2015年8月実施 計算理論
Author
Description
(1) 有限オートマトン (finite automaton) は 5 項組 で与えられる。ここで, は,それぞれ,状態 (state) の有限集合,入力記号 (input symbol) の有限集合(アルファベット (alphabet)),状態遷移関数 (state transition function),初期状態 (initial state) (),受理状態 (accepting state) の集合 () である。 また, が受理 (accept) する言語 (language)(認識する言語)を と表す。下の状態遷移図 (state transition diagram) に示す非決定性 (non-deterministic) 有限オートマトン について,以下の各小問に答えよ。なお,,,, である。

- (1-1) が受理する言語 (language) を正規表現 (regular expression) で示せ。
- (1-2) が受理する語 (word) を,1 文字目を最上位ビット (most significant bit) とす符号なし 2 進数 (unsigned binary number) とみなす。 が受理するすべての語の中で,7 番目に小さな数となる語を示せ。
- (1-3) の状態 の -閉包 (-closure) を示せ。
- (1-4) を満たす,決定性 (deterministic) 有限オートマトン をサブセット構成 (subset construction) 法を用いて求め,状態遷移図で示せ。同値 (equivalent) な状態があっても全て残すこと。状態名は とすること。導出過程と結果を示すこと。
- (1-5) の状態数を最小化した決定性有限オートマトン を求め,状態遷移図で示せ。状態名は とすること。
(2) 文脈自由文法 (context-free grammar) により生成される文脈自由言語 (context-free language) の閉包性 (closure property) を考える。文脈自由文法 は 4 項組 で表される。ただし, は変数 (variable,あるいは非終端記号 non-terminal symbol) の集合, は終端記号 (terminal symbol) の集合, は生成規則 (production rule) の集合, は開始記号 (start symbol) で である。なお,生成規則の集合は -規則 (-rule) を含んでよいものとし,変数の集合と終端記号の集合は共通の記号を含まないものと仮定する。文法 が生成する言語を と表記する。 任意の文脈自由文法 と が与えられる(ただし である)。 文脈自由言語は和 (union) 演算に関して閉じている。なぜなら,文脈自由文法 を以下の通りに構成すると,証明は省略するが, と の和の言語 は によって生成される,すなわち は文脈自由言語だからである。
- ,ただし
文脈自由言語は連結 (concatenation) 演算に関して閉じていることを,文法の構成により示したい。以下の各小問に答えよ。
- (2-1) と を連結した言語 を生成する文脈自由文法 ,すなわち である を構成せよ。
- (2-2) 上記 (2-1) で構成した によって生成される任意の語 は,上記 (2-1) で定義した に属することを証明せよ。
- (2-3) 上記 (2-1) で定義した に属する任意の語 は,上記 (2-1) で構成した により生成されることを証明せよ。
Kai
(1) 有限オートマトンに関する問題
(1-1) 正規表現
が受理する言語の正規表現は以下の通りである。
(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番目に小さな語は である。
(1-3) -閉包 (-closure)
各状態における -閉包は以下の通りである。
(1-4) サブセット構成法による DFA の導出
サブセット構成法を用いて、NFAの状態集合をDFAの単一状態としてマッピングする。初期状態 とする。
導出過程:
- (受理状態)
の状態遷移表: (※ はデッドステートへの遷移を表す)
| 状態 (NFA部分集合) | 入力 0 | 入力 1 |
|---|---|---|
| A | B | |
| B | C | D |
| *C | E | |
| D | F | |
| E | C | D |
| F | C | D |
(1-5) 状態を最小化した DFA
の遷移表に基づき、同値な状態(入力に対して同一の遷移先を持つ状態)をマージする。
等価クラスの判定:
- 状態 は全て非受理状態であり、入力
0で へ、入力1で へ遷移する。したがって、これらは完全に同値である。 - 状態 は共に非受理状態であり、入力
0で へ遷移する。入力1に対して、 は へ、 は へ遷移するが、 と は既に等価(クラス )であることが示されているため、 と も未来の遷移が完全に一致する同値な状態である。 - 受理状態 は単独でクラスを形成する。
の状態遷移図を構成する遷移:
- 状態集合:
- 初期状態:
- 受理状態:
- 遷移規則:
(注:この3状態DFAは、 において 0 を入力すると に行き、さらに 0 で に戻る(00 のループ)。1 を入力すると に戻され、さらに 1 で に復帰する(11 のループ)。これにより の言語を極めて美しく受理する。)
(2) 文脈自由言語の閉包性
(2-1) 文法 の構成
を生成する文脈自由文法 は以下のように構成される。
- (ただし、)
- 開始記号は とする。
English: To construct a Context-Free Grammar (CFG) that generates the concatenation of and , we introduce a new start symbol and a production rule , where and are the start symbols of and respectively.
Formally, is defined as: (where )
(2-2) の証明
証明: (Hint: を用いる)
によって生成される任意の語を とする。 の開始記号 に対する生成規則は のみであるため、導出の最初のステップは必ず以下となる。
文脈自由文法の性質上、各変数の導出は互いに独立している。したがって、生成される語 は と分割でき、それぞれ および が成り立つ。
ここで、 であるため、 から始まる導出において適用可能な生成規則は に含まれるものに限定される。よって、この導出は における導出 と完全に等価であり、 が成立する。
同様に、 からの導出も の規則のみを使用するため、 となる。 以上より、 が示され、 が証明された。
English: Let . Since the only production rule for is , any derivation must start as .
Because and are disjoint, the derivations from and are independent and use rules from and respectively. Thus, can be partitioned into and such that and , meaning .
(2-3) の証明
証明: に属する任意の語を とする。定義より、 (ただし )と表現できる。
および であるから、それぞれの文法において以下の導出が存在する。
の生成規則の集合 は、 および のすべての規則を含んでいる ()。したがって、上記の導出は においてもそのまま有効である。
において、新たな開始規則 を適用した後、上記の導出をそれぞれ と に適用することで、以下の導出系列を構成できる。
これにより、語 は文法 によって生成されることが示され、 が証明された。
English: Let . By definition, where and .
There exist derivations in and in . Since contains all rules from and plus , we can construct a derivation in starting from to . Hence, .
Summary
NOTE(2-3)得分句:
- ()。
- 和
🧱 前置准备:(2-1) 构造
为了生成连接语言 ,我们构造的文法 是这样的: (把两边的变量倒进一个池子,并新增大 Boss ) (把两边的终结符倒进一个池子) (规则池合并,并赋予大 Boss 分裂技能)
🛡️ (2-2) 证明 (健全性 / Soundness)
你的疑问: “从 变出 ,不就是 吗?” 考官的刁难: “你怎么知道在推导 的时候,它不会不小心用到了 里的规则,从而生成出乱七八糟的东西?”
【证明的核心逻辑:变量隔离】 这道题的“免死金牌”就藏在题干里的一句话:(两个文法的变量集合互不相交)。这就是防止“交叉感染”的物理隔离墙!
【考场踩分推导步骤】
- 起点:假设有一个字符串 被 生成,即 。
- 第一步推导:根据 的规则,推导的第一步必须且只能是 。 所以,最终的字符串 必然可以切分为两半:,其中 且 。
- 核心论证(踩分点!): 由于题设中 ,这意味着 中的规则左侧全都是 中的变量, 中的规则左侧全都是 中的变量。 因此,在把 变成 的整个推导过程中,绝对不可能触发任何属于 的规则。同理, 变成 时也绝不会触发 。
- 结论: 推导 完全只依赖于 ,因此 。 推导 完全只依赖于 ,因此 。 所以 。证明完毕。
⚔️ (2-3) 证明 (完全性 / Completeness)
你的疑问: “只要是 ,肯定能用 生成啊,这还要证?” 考官的刁难: “请你用数学符号,把这个生成过程一步步‘走’一遍给我看,证明 的规则池够用。”
这个证明比 (2-2) 简单得多,它就是一个“顺水推舟”的构造过程。
【考场踩分推导步骤】
- 起点:假设有一个字符串 。根据定义,必然存在 和 ,使得 。
- 翻译已知条件: 因为 ,说明在 中存在推导序列:(仅使用 )。 因为 ,说明在 中存在推导序列:(仅使用 )。
- 在 中模拟推导(踩分点): 现在我们在 中开始推导。
- 首先使用新增的规则:。
- 因为 包含了 和 所有的规则(),所以我们在 和 中能做的推导,在 中原封不动全都能做。
- 我们先对 施加魔法,把它变成 :。
- 然后再对 施加魔法,把它变成 :。
- 结论: 我们成功在 中找到了一条合法路径:。 因此 。证明完毕。
总结:为什么需要这两步?
在数学证明中,证明两个集合相等(),必须证明 相互包含( 和 )。
- (2-2) 证明了“没有多造”:证明了 绝不会因为规则混用,生出一个不属于 的怪胎。(靠的是变量不相交的物理隔离)。
- (2-3) 证明了“没有少造”:证明了 里的任何一个合法句子, 都有足够的规则()去把它完美推导出来。
这就是计算理论中的**“形式化证明(Formal Proof)”**。
大阪大学 情報科学研究科 情報工学 2015年8月実施 ネットワーク
Author
Description
データリンク層 (data link layer) では、端末 (host) がフレーム (frame) を送信する際にプリアンブル (preamble) と呼ばれる特定のビット列を付与している。プリアンブルとフレームの構成は、図1 に示すものとする。以下の各問に答えよ。

図1 プリアンブルとフレーム構成
(1) 伝送レート (transmission rate) [bps] の伝送媒体 (transmission medium) を用いた場合に、上位層に対して提供できる最大の転送レート (transfer rate) を、 および図1 中の を用いて示せ。なお、インターフレームギャップ (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) が含まれている。生成多項式 を用いた巡回冗長検査 (cyclic redundancy check) によりフレームの伝送誤りが検出される。すなわち、生成多項式 で定義される擬巡回符号 (pseudo-cyclic code) の符号語の冗長記号部分が FCS となり、誤り検出が行われる。以下の各小問に答えよ。ただし、生成多項式 は次の多項式とする。
- (3-1) FCS のサイズ [バイト] の値を答えよ。
- (3-2) 受信フレーム(誤り検出における受信語)の多項式表現を とする。巡回冗長検査において誤り無しと判断する条件式を、 と を用いて書け。
- (3-3) 生成多項式 を用いて検出できないビット誤り (bit error) の最小個数 を考える。フレーム長が 1000 [バイト] である時の を求めよ。求めた過程も簡単に書け。必要に応じて、 を生成多項式とする巡回符号の次数最小の符号語を表す多項式(符号多項式) をハミング重みごとにまとめた表1 を用いてよい。
| ハミング重み | |
|---|---|
| 1 | なし |
| 2 | なし |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 |
表1 $G(x)$ を生成多項式とする巡回符号の次数最小の符号語を表す多項式 $c(x)$
- (3-4) 図1 のフレームの最大ペイロード長は 1500 [バイト] である。最大ペイロード長をその 10 倍の 15000 [バイト] に増やすことの利点と欠点を、巡回冗長検査の観点から簡潔に説明せよ。
- (3-5) 生成多項式 を用いたバースト誤り (burst error) 検出に関する以下の文章中で、 にあてはまる数値と空欄 [ ] にあてはまる多項式を書け。
フレーム内で、図2 に示すような 1 つのバースト誤りが発生したとする。その長さが [ビット] 以下であれば、確実にそのバースト誤りを検出できる。しかし、長さが [ビット] のときは、検出できない場合がある。例えば、送信フレーム(符号語)を表す多項式が 0 と等しく小問 (3-2) の多項式 が [ ] と等しいときに、そのバースト誤りを検出できない。
![長さ b [ビット] のバースト誤りの例](/_astro/4.gEvdgTO1_Z2icuVs.webp)
図2 長さ b [ビット] のバースト誤りの例
Kai
(1)
最大転送レート:
導出: 最大の転送効率を得るには、ペイロードを最大値の バイトにする必要がある。図1 より、プリアンブルから FCS までのフレーム全体の合計サイズは以下の通りとなる。 したがって、物理的な伝送レート に対して、全ビット長に占める純粋なデータ(ペイロード)の割合を乗じることで、上位層に提供される実効的な最大転送レートが求まる。
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 bytes. The effective transfer rate is the physical transmission rate 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
- 理由:
1と0が交互に現れるビット列は、信号の電圧レベルの遷移(エッジ)が最も頻繁に発生し、受信側の 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 [バイト] (理由:生成多項式 の最大次数が 32 であるため、FCS は 32 ビット = 4 バイトとなる。)
(3-2)
解答:
(または、「 が で割り切れること」)
(3-3)
解答:
- の値: 4
- 求めた過程: フレーム長 1000 [バイト] は [ビット] である。表1 より、 の倍数となる最小次数の多項式(=検出不可能な誤りパターン)を調べると、ハミング重み 3 の最小次数は であり、 ビットのフレーム内では物理的に発生し得ない。一方、ハミング重み 4 の最小次数は であり、 ビットの範囲内に収まる。したがって、検出できない最小のビット誤り個数は 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 is 4.
(3-4)
解答:
- 利点: ヘッダや FCS などの固定オーバーヘッドがデータ全体に占める割合が低下し、実効的なデータ伝送効率(スループット)が向上する。
- 欠点: フレーム長が バイト ( ビット) になると、ハミング重み 3 の最小次数 () を上回ってしまう。これにより、従来は確実に検出できていた 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)
解答:
- 32
- 空欄 =
Summary & Insights
NOTE1. 传输速率 (Transfer Rate)
- 核心公式:
- 物理意义:物理极速 纯货物的有效占比。
- MTU 扩大(巨型帧)的利弊:
- 利:降低开销占比,提升吞吐量(スループット向上)。
- 弊:长帧使得原本装不下的长跨度错误得以潜伏,误り検出能力(最小ハミング距離)低下。
2. 前导码 (Preamble)
- 两大目的:
- 確立クロック同期(建立时钟/比特同步)。
- フレーム開始位置の特定(确定帧起始位置/字节边界)。
- 比特模式 (
1010...11) 的理由:
1010交替提供高频电压跳变(エッジ),最适合 PLL 提取时钟。- 末尾
11(SFD) 明确标识同步结束,数据本体开始。- 误同步 (False Sync) 的回避:
- 依靠物理层的インターフレームギャップ (IFG: 帧间隙)。仅在无信号状态(アイドル)后收到的首个有效跳变才被视为前导码。
3. CRC 校验与多项式 (Cyclic Redundancy Check)
- FCS 长度法则:FCS 比特数 生成多项式 的最高次数 。
- 无错判定条件: (接收多项式能被生成多项式完美整除)。
- 突发错误 (Burst Error) 的检错极限:
- 绝对能检出:长度 的所有突发错误。
- 无法检出的特例(长度 时):当且仅当错误多项式 与 完全相同时(即 )。
🚨 盲区 1:死记数学公式,忽略了“物理空间限制”(最致命弱点)
- 症状: 看到表 1 的 觉得只是个数学符号,不知道怎么和“1000 字节帧长”联系起来。
- 纠正记忆: 多项式的次数 电缆上的物理长度。 如果一个骗子多项式的跨度是 9万多位,而你的车厢(帧)只有 8000 位长,这个骗子就绝对塞不进你的车厢。想通“装不下就不会发生”,表 1 就变成了比大小的送分题。
🚨 盲区 2:在离散边界问题上掉入“植木算(Fencepost Error)”陷阱
- 症状: 疑惑“为什么物理长度 ,最高次幂却是 3?”
- 纠正记忆: 多项式的起点是 ,不是 。 作为一个合法的数字(1),强行占用了物理世界的一个比特位。因此,物理长度永远等于最高次幂 。遇到边界问题,立刻在脑子里画
1 _ _ 1对应 。🚨 盲区 3:把网络协议当成“规定”,而不是“权衡(Trade-off)”
- 症状: 需要专门解释为什么最大转发速率要用 1500 去除以 1522。
- 纠正记忆: 网络工程没有绝对的规定,全是对物理极限的妥协。想要速度快,就得加大 Payload;但 Payload 太大,CRC 检错能力就会退化(3 位的错误就能瞒天过海)。记住这组矛盾:帧越长 效率越高 检错越弱。
大阪大学 情報科学研究科 情報工学 2015年8月実施 離散構造
Author
Description
(1) 情報論理 (mathematical logic) に関する以下の各小問に答えよ. ただし, 論理式 (logic formula) の記述には以下の記号を用いる. はそれぞれ含意 (implication), 論理積 (conjunction, and), 論理和 (disjunction, or), 否定 (negation, not) を表す論理演算子とする. また, 必要に応じて (あるいは ) の表記を用いる. これは論理式 の を 1 から ( は正整数) まで順次変えながら論理積 (あるいは論理和) で結合した式を意味している. なお, は, を意味する.
縦 マス 横 マスで構成されるパズル (puzzle) を考える. 本パズルにおける規則は以下の通りである.
- 空いているマスに 1 から までの整数を入れる.
- 各列, 各行および, 太線で囲まれた の各ブロック内に同じ整数を複数用いてはいけない.
図 1 は, における本パズルの問題例である. 以降, このパズル問題を解くための制約式を和積形 (CNF: Conjunctive Normal Form) の命題論理式 (propositional formula) で与えることを考える. なお, 和積形とは, 一つ以上の和項の論理積で表される論理式である. また, 和項とは, 一つ以上のリテラル (literal) の論理和で表される論理式である. ここでリテラルとは, 命題変数 (propositional variable) または命題変数の否定を意味する. () 行 () 列のマスを で表記する (行は上から順に 行目, 列は左から順に 列目である).

図 1: の問題例
マス に整数 () が入っているとき, かつ, そのときのみ真となる命題変数 を導入する. 以下の各小問に答えよ.
- (1-1) 図 1 において命題変数 の真偽をそれぞれ答えよ.
- (1-2) 縦 マス 横 マスで構成される本パズル問題における命題変数 の総数はいくつか. を用いて示せ.
- (1-3) 「1 行 1 列目のマスには, 1 以上 9 以下の整数が少なくとも一つ入る」ことを表す論理式を記述せよ.
- (1-4) CNF 式 を「 行 列目のマスには, 1 以上 以下の整数が少なくとも一つ入る」ことを表す論理式とする. 論理式 を記述せよ.
- (1-5) を用いて, 「どのマスについても, 1 以上 以下の整数が少なくとも一つ入る」ことを表す論理式 を示せ.
- (1-6) は, 「 がともに真になるということはない」ことを表す論理式である. これを用いて「どの行についても各整数は高々1回しか現れない」ことを表す CNF 式 を作りたい. 以下の空欄を埋めることで を完成させよ.
- (1-7) 「どの列についても各整数は高々1回しか現れない」ことを表す CNF 式 を示せ.

図 2: の問題
- (1-8) この小問では, として, 図 2 の問題に着目する.
図 2 の問題では, 空いたマス (例えば 2 行 4 列目) にどのように整数を埋めても, パズルを解くことができない. ここでは, (命題 P) 「図 2 の問題では, 空いたマスにどのように整数を埋めても, パズルを解くことができない」ことを示したい. この命題 P を示すには, 「太線で囲まれた のどのブロックについても各整数が高々1回現れる」ことを意味する CNF 式を , 図 2 における整数の配置を表す論理式を としたときに, (方針) の CNF 式が充足不能 (unsatisfiable) であることを示せればよい。 このとき, 以下の (1-8-1)~(1-8-2) に答えよ.
- (1-8-1) 論理式 を示せ.
- (1-8-2) 上記の方針に沿って, 命題 P が成り立つことを導出原理 (resolution principle) 用いて具体的に示せ.
(2) 空でない有限集合 (finite set) 上の二項関係 (binary relation) について, 次のように二項関係 と () を定義する. また, の各要素を頂点とし, の各要素を有向辺とする有向グラフ (directed graph) を とする. ただし に対しては, を有向辺の始点とし, を有向辺の終点とする.
以下の各小問に答えよ.
- (2-1) 有向グラフ が下図の時, を求めよ.

- (2-2) ある非負の整数 が存在して であることを, 背理法 (proof by contradiction) を用いて証明せよ.
- (2-3) 小問 (2-2) の について, の逆関係 (inverse relation) を とし, とする. が同値関係 (equivalence relation) であることを証明せよ. ただし, 任意の非負整数 について, ならば が成立することは, 証明なしで用いてよい.
- (2-4) 小問 (2-3) の について, の による同値類 (equivalence class) を とする. が, グラフ について何を表すか簡潔に述べよ.
Kai
(1-1) 命題変数の真偽
図1の盤面に基づく命題変数 (行列のマスに整数が入る)の真偽は以下の通りです。
- : 偽 (False) (※図1において1行1列目の数字は7であるため)
- : 真 (True) (※図1において2行1列目の数字は4であるため)
- : 偽 (False) (※図1において8行4列目の数字は6であるため)
(1-2) 命題変数の総数
解説:行が 通り、列が 通り、入る整数が 通りあり、これらは独立した組み合わせであるため、全体の変数総数は となります。
(1-3) 存在制約論理式(、1行1列目のマス)
「1行1列目のマスには、1以上9以下の整数が少なくとも一つ入る」ことを表す論理式は以下の通りです。
(1-4) CNF式 (一般化されたマスの存在制約)
「行列目のマスには1以上以下の整数が少なくとも一つ入る」ことを表す論理式は以下の通りです。
(1-5) 論理式 (全マスの存在制約)
「どのマスについても1以上以下の整数が少なくとも一つ入る」ことを表す論理式 は以下の通りです。
(1-6) 論理式 の空欄(行内の競合制約)
「どの行についても各整数は高々1回しか現れない」ことを表すための空欄に入る論理式は以下の通りです。
(1-7) CNF式 (列内の競合制約)
「どの列についても各整数が高々1回しか現れない」ことを表すCNF式 は以下の通りです。
(1-8-1) 論理式
図2()で与えられた確定マスに基づく初期配置の論理式は以下の通りです。
(1-8-2) 導出原理(Resolution Principle)を用いた命題 P の証明
【日本語解答】 空いたマス に着目する。制約 より、このマスには 1 から 4 のいずれかが入るため、以下の和項が存在する。
また、 および制約 (行), (列), (ブロック)より、以下の和項が CNF 式に含まれる。
- (制約 D:ブロック1内に 2 は複数存在しない)
- (制約 B:2行目に 2 は複数存在しない)
- (制約 B:2行目に 4 は複数存在しない)
の各要素はすべて真であるため、単一リテラル(Unit Clause)として導出に用いる。
- と から導出原理により を得る。
- 同様に、ブロック制約 D と の要素から を得る。
- 同様に、行制約 B と から を得る。
- 同様に、列制約 C(あるいはブロック制約 D)と の要素から を得る。
これら 4 つの否定リテラル を に対して順次導出(Unit Resolution)すると、すべてのリテラルが消去され、最終的に 空節(、矛盾) が導出される。 したがって、CNF式は充足不能(Unsatisfiable)であり、パズルを解くことはできない。
[English Translation] Focus on the empty cell . From constraint , this cell must contain an integer from 1 to 4, yielding the following clause:
Given and the conflict constraints (row), (column), and (block), the CNF formula includes clauses such as:
- (Constraint B: no duplicate ‘2’s in row 2)
- (Constraint B: no duplicate ‘4’s in row 2)
Since elements in are all true, they act as unit clauses.
- Applying the resolution principle on and yields .
- Similarly, applying resolution with block constraint D and an element of yields .
- Applying resolution with and row constraint B yields .
- Applying resolution with column/block constraints and yields .
By sequentially resolving these four negated literals against the initial clause (Unit Resolution), all literals are eliminated, ultimately deriving the empty clause (, contradiction). Therefore, the CNF formula is unsatisfiable, proving that the puzzle cannot be solved.
(2-1) の算出
【日本語解答】 は、与えられた有向グラフ において、任意の頂点 から有向辺を正確に「3歩(3エッジ)」辿って到達できる頂点 のペア の集合である。
(2-2) となる非負整数 の存在証明
【日本語解答】 背理法を用いて証明する。 頂点集合 は有限集合であるため、直積集合 の要素数も有限である( とすると )。 定義 より、 が成り立つ。
仮に、任意の非負整数 について であると仮定する。これは、 が常に の真部分集合 () であることを意味する。 すなわち、要素数において が無限に続くことになり、ある段階で要素数が を超過する。 しかし、 であるため、要素数が を超えることはあり得ない。これは矛盾である。 したがって、ある非負整数 が存在して となる。
[English Translation] We prove this by contradiction. Since the vertex set is a finite set, the Cartesian product is also finite (if , then ). By definition , the sequence monotonically increases: .
Assume, for the sake of contradiction, that for all non-negative integers . This implies that is a strict subset of () universally. Consequently, the cardinality strictly increases infinitely: , which means it will eventually exceed . However, since , its cardinality can never exceed . This is a contradiction. Therefore, there must exist a non-negative integer such that .
(2-3) が同値関係であることの証明
【日本語解答】 が同値関係であることを示すために、以下の3条件を満たすことを証明する。
-
反射律 (Reflexivity): 任意の について、定義より であり、。よって である。逆関係の定義から も成り立つ。したがって、。
-
対称律 (Symmetry): とすると、定義より かつ である。 逆関係の定義 より、 かつ となる。したがって、。
-
推移律 (Transitivity): かつ とする。 かつ であるため、ある が存在して となる。問題文の仮定より、 である。ここで はこれ以上要素が増加しない閉包状態 () であるため、 が成り立ち、。 同様に、逆関係側でも かつ より となり、その逆関係である も成り立つ。 したがって、。
以上より、 は同値関係である。
[English Translation] To prove that is an equivalence relation, we must show it satisfies the following three properties:
Reflexivity: For any , by definition, and since , we have . By the definition of the inverse relation, . Thus, .
Symmetry: Assume . By definition, and . Using the definition of the inverse relation (), we obtain and . Therefore, .
Transitivity: Assume and . This implies and . Thus, there exist integers such that and . Based on the given assumption, . Since is in a closed state where no new elements are added (), , yielding . Through the exact same logic on the inverse relations, and yields , which is equivalent to . Therefore, .
Conclusively, is an equivalence relation.
(2-4) 同値類 が表すもの
【日本語解答】 有向グラフ における、頂点 を含む 強連結成分 (Strongly Connected Component)。
[English Translation] The Strongly Connected Component (SCC) containing vertex within the directed graph .